最新动态

P2P SIP在科能融合应急通信中的应用探讨

时间:2022-07-26 16:17 作者: 世讯电科融合通信系统

P2P技术
一、P2P技术

       传统的各种应用都是基于客户端/服务器的模式(见图5-86),服务器需要管理客户端的请求和各种资源,因此服务器的带宽和处理能力成为该种模型的服务瓶颈。
       对等网络P2P以一种全新的理念影响着现有的互联网及通信技术,颠覆了以客户端/服务器为主的传统的网络服务模式,P2P网络强调的是对等的概念,也就是说,网络中每个节点的地位都是相等的,既可以作为服务器,为网络中的其他节点提供服务,同时,也可以作为客户端,接受来自其他服务节点的服务。如图5-87所示。
       P2P网络是一种分布式网络,其中的节点需要共享自己的部分资源(资源根据网络和应用的需要可以是处理能力、存储能力、信息等),节点在网络中可以与其他节点直接建立连接获取其他节点的资源,同时,其他节点也可以与该节点建立连接,获取该节点上的资源。那么P2P网络中的节点如何知道资源所在呢?P2P网络中主要有3种资源定位方式。
传统的客户端/服务器网络服务模型
图5-86  传统的客户端/服务器网络服务模型
P2P网络服务模型
图5-87    P2P网络服务模型
1.集中索引
       此种机制下,网络中的节点会将自身的资源情况注册到一个或多个负责记录共享资源的索引信息的中央服务器,节点在査找资源时首先要访问中央服务器进行所需资源的定位,然后直接与目标节点直接建立数据连接,数据交互并不通过中央服务器。
       应用此种资源定位方式,网络中需要部署处理资源定位信息中的服务器一台或多台,中央服务器只负责资源的査找定位,并不参与到真正的数据交互流程,数据交互存在于节点和节点之间,避免了传统的客户端/服务器服务模式中由于中央服务器流量及处理能力限制造成的服务能力瓶颈问题,但由于仍需要部署中央服务器,仍存在不可避免的缺陷:容易遭受网络攻击而出现单点故障,可靠性和安全性较低。
2.广播方式
       此种机制下,资源的査询和定位主要依靠节点之间的广播进行,不需要资源定位服务器的参与,节点之间完全是平等的。可以通过TTL(TimeToLive)的减值来控制搜索消息的传输。
       当一个节点进行资源查询和定位的时候,将发送查询请求,该请求被广播到所有本地节点列表中的节点,被查询节点根据查询请求判断自己是否符合查询条件,如果符合将返回响应,否则将继续将请求广播出去,直到TTL(TimetoLive,生存时间)值减少到0。
       应用这种资源定位方式,网络中不需要额外的中央资源定位服务器,网络的扩展性和容错性较好,网络中的任何一个节点的故障、加入、离开,都不会对网络服务带来较大的影响。但广播方式对网络资源消耗较大,效率不高,不适宜在大规模网络中应用。
3.分布式哈希表(Distributed Hash Table,DHT)方式
       DHT是一种分布式资源定位方法。网络在不需要中央服务器的情况下,由每个节点负责维护一个小范围的路由及一部分资源,从而实现整个DHT网络的资源定位和共享。
       DHT的主要思想是:首先,网络中的每个可用资源用一个关键字Key来表示,这个关键字可以是文件名或文件的其他描述信息,取一个哈希函数将关键字转换成哈希值Hash(Key)可以称为Resource-ID,同时为网络中的存储资源的节点分配一个Node-ID,Node-ID可以是根据节点的IP地址或节点的其他描述信息通过哈希计算得出的哈希值,资源索引被表示成(Resource.ID,Node-ID)二元组,所有的资源索引(即二元组)可以形成一张资源索引哈希表,通过输入资源的Resource-ID值,就可以查找到该资源所在的位置Node-IDo这样一张大的索引表将被划分成多个小表,按照一定规则分布的存储在所有P2P网络节点中,每个节点都需要维护一部分索引信息。当一个客户节点需要査找需要的资源信息时,网络根据哈希路由策略将查询请求路由到负责维护该资源索引的节点即可。
       如何将拆分后的小资源索引表分配到各个节点以及如何进行路由查找取决于具体的P2P网络使用的DHT算法。不同的DHT算法决定了P2P网络的逻辑拓扑,比如CAN就是一个N维矢量空间,而CHORD是一个环形拓扑,TAPESTRY则是一个网状的拓扑。
       应用这种资源定位方式,有效地减少了资源查询请求的发送数量,从而增强了P2P网络的扩展性。资源定位和查询的效率取决于哈希算法。

二、SIP技术

SIP技术
       SIP是由IETF于1999年提出的,是目前被广泛应用的VoIP控制信令协议之一,是承载在IP上的一个应用层的呼叫控制信令协议,用于创建、修改和释放一个或多个参与者的会话。是NGN中语音信息传输的主要形式。
       SIP会话过程中,主要会涉及到4个逻辑功能实体:SIP用户代理、SIP注册服务器、SIP代理服务器和SIP重定向服务器。

(1)SIP用户代理

        用户代理是一个逻辑功能实体,当产生请求时作为UAC(User Agent Client,用户代理客户端),接收请求消息并进行处理产生响应时作为UAS(User Agent Server,用户代理服务器)。
        用户代理的功能一般是在终端用户设备上实现,如,支持SIP会话的电话终端、PC、PDA等,可作为呼叫的发起实体,也可以作为呼叫的响应实体。

(2)SIP注册服务器

       注册服务器是一个逻辑功能实体,会为特定的区域创建绑定信息,即将一个地址记录URI与一个或多个地址相关联。

(3)SIP代理服务器

        中间实体,它本身既作为客户端也作为服务器,为其他客户端提供请求的转发服务。一个代理服务器首先提供的是路由服务,也就是说保证请求被发到更加“靠近”目标用户的地方。

(4)SIP重定向服务器

        重定向服务器用响应消息将某一请求的路由信息返回给客户端,从而起到了帮助选路的功能。当请求的发起者收到重定向响应后,它将基于收到的URI发送新的请求。
1.SIP消息
        SIP是采用UTF-8字符集来进行编码的文本协议。
        SIP消息分请求和响应两类,其中请求消息由客户端(Client)发往服务器(Server),响应消息由服务器发往客户端。
        请求和响应消息格式一般由一个起始行、若干个头字段,以及一个可选的消息体组成。其中消息体为可选项,头字段与消息体之间用空行进行分隔。请求和响应消息格式如下:
SIP消息=起始行
            *消息头部(1个或多个头部)
            CRLF(回车换行符)
             [消息体]
       “*”表示该消息头部可包含一个或多个,“口”表示该参数为可选项。起始行、每一个消息头部以及空行都必须使用回车换行字符(CRLF)亲表示行终结,即使消息中未包含消息体,可选项空行也不能省略。
       SIP是基于一个类似HTTP的请求应答的通信模式。每一个通信都包含对某个功能的请求,并且起码需要一个应答。
(1) 请求(Request)消息
        请求消息的起始行为请求行(Request-Line)。请求行的格式如下所示:Request-Line=Method[ ]Request-URI[ ] SIP-Version CRLF
        方法(Method):SIP中定义了以下方法:INVITE、ACK、CANCEL、OPTIONS、BYE、REGISTER、OPTIONS、PRACK、UPDATE、INFO、REFER等。INVITE、ACK、CANCEL用于建立会话连接,BYE用于终结会话连接,REGISTER消息用于发送注册请求信息,OP¬TIONS用于查询服务器能力,PRACK:用于临时响应消息的确认,UPDATE常用于会话前客户端更新会话参数,例如媒体信息等,INFO发送会话中信息而不改变会话状态等,REFER指示接受方通过使用在请求中提供的联系地址信息联系第三方,用于呼叫转接等,MES-SAGE用于发送即时消息,SUBSCRIBER用来向远端端点预订其状态变化的通知,NOTIFY:该方法发送消息以通知预订者它所预定的状态的变化。
       请求URI(Request-URI):指示被邀请用户的当前地址,Request-URL中不允许出现空格或其他控制字符且不能包含于“符号之内。
       版本号(SIP-Version):用于定义协议的当前版本号。
(2) 响应(Response)消息
        响应消息的起始行为状态行(Status-Line),状态行由协议版本、状态码和与状态码相关的文本描述组成,各个部分之间用一个空格字符进行分隔。状态行的格式如下所示:
        Status-Line=SIP-Version[]Status-Code[  ]Reason-Phrase   CRLF
        除状态行的尾部可使用回车换行CRLF字符之外,状态行内不允许出现CRLF字符。
        Status-Code(状态码):为一个3位的十进制整数,用于指示请求消息的执行响应结果。
        Reason-Phrase(原因):用于对Status-Code参数进行简单的文本描述。客户机不必检查或显示Reason-Phrase参数。
       共有6类状态码,其中状态码的第1位数字用于指示响应类型,后两位数字表示具体响应。
       1XX:临时响应,临时性响应即报告性的响应,用来指明所联系的服务器还没有确定性的响应。如果服务器需要200ms以上的时间才能发出最终响应,则它就需要首先发送一个1XX响应。
       2XX:成功响应,表示请求已被成功接收,完全理解并被接受。
       3XX:重定向响应,该响应指定用户新位置信息,或者指定可以满足本次呼叫所需要的其他服务。
       4XX:客户机错误,表示请求消息中包含语法错误信息或服务器无法完成客户机请求。
       5XX:服务器错误,表示当服务器本身故障的时候给出的失败应答。
       6XX:全局故障,表示服务器对于某一特定用户的确定的信息。
2.典型业务流程示例
 本部分将给出一个简单的注册和会话建立释放的示意流程,以展示一般的SIP呼叫过程,如图5-88所示。
 典型SIP业务流程
图5-88   典型SIP业务流程
1)UA1发送Register请求给注册服务器;
2)注册服务器注册用户成功,返回2000K;
3)注册服务器将用户位置等相关信息存储到位置服务器;
4)位置服务器返回存储响应消息;
5)UA2向UA1发起普通呼叫,INVITE消息首先到达代理服务器;
6)代理服务器返回临时响应WOTrying表示消息在接续;
7)代理服务器为了正确路由呼叫,向位置服务器发起对被叫UA1位置的查询请求;
8)位置服务器返回查询响应带有UA1位置信息;
9)代理服务器将INVITE消息转发到UA1;
10)UA1振铃返回180Ring消息;
11)代理服务器将180Ring消息转发给用户UA2;
12)被叫UA1用户摘机返回200OK消息;
13)代理服务器将2000K消息转发给用户UA2;
14)用户UA2返回ACK消息;
15)代理服务器将ACK消息转发给用户UA1;
16)主被叫用户进行媒体会话;
17)被叫UA1先挂机,发送BYE消息;
18)代理服务器将BYE消息转发给用户UA2;
19)UA2返回BYE的响应消息200OK;
20)代理服务器将200OK消息转发给用户UA1;
21)……

三、P2P SIP技术

        P2P   SIP技术顾名思义,就是将P2P技术和SIP技术相结合,有效地提供IP语音会话功能,我们都知道传统的SIP通信系统是基于客户端/服务器模型的,服务器的带宽、处理能力可能成为整个系统瓶颈,同时这种客户端/服务器模型存在一定的脆弱性,服务器的故障将造成系统的瘫痪,使得基于服务器模式下的SIP通信系统的扩展性受极大的限制。
       如图5-89所示,UA1和UA2都是SIP客户端,它们必须先注册到SIP服务器(注册服务器),将自己的联系地址告知网络,并且要周期性地更新注册信息。双方进行呼叫的时候,由网络服务器负责被叫方地址的查询和呼叫转发,客户端受到了服务器的严格控制。
sip网络与P2P网络叠加
图  5-89    sip网络与P2P网络叠加
       随着互联网的迅速发展,互联网应用已经深入社会的各个角落。大范围地提供服务,大规模的用户数量,稳定的系统的运行都对现有的客户端/服务器模型提出了挑战,P2P技术的出现,使人们看到了曙光。P2P技术主要应用在在文件共享、分布计算、分布存储等方面,并取得了巨大的成功。那么应该如何把P2P技术应用到通信领域呢?SIP是VoIP的重要协议,目前得到了广泛应用,因此如何将P2P技术和SIP技术相结合成为研究的热点。
       P2P与SIP的结合有两种方向,一种方向是SIP网络与P2P网络叠加的解决方案;另一种方向是扩展SIP具备P2P网络能力的解决方案。
1.SIP网络与P2P网络叠加
       1)节点UA1加入P2P网络;
       2)节点UA2查询节点UA1的位置相关信息;
       3)P2P网络返回UA1位置相关信息;
       4)节点UA2直接向节点UA1发起SIP呼叫。
       该种解决方案要求节点维护两个协议栈分别为SIP协议栈和P2P协议栈,节点位置信息的维护和査询使用P2P网络协议,节点之间的呼叫建立使用SIP,该种方案将节点的信息维护与节点呼叫建立过程相分离,P2P网络可以看成原有SIP系统中的服务器(重定向服务器/注册服务器)。
2.扩展SIP具备P2P网络能力(见图5-90)
扩展SIP具备P2P网络能力
图5-90   扩展SIP具备P2P网络能力
      1)节点UA1注册进入P2P-SIP网络;
      2)节点UA2发起对UA1的呼叫请求(P2P-SIP网络根据使用的P2P算法能够将呼叫请求有效的转发到UA1)。
       该种解决方案需要对SIP进行扩展,引入P2P算法,使用SIP进行P2P的通信,这种方式不改变SIP的语义,不依赖于其他P2P网络,而是构建一个通过SIP进行通信的P2P网络,SIP保证了底层通信的一致性,可以和现有存在的网络进行互通。终端节点客户端又是服务器端,作为客户端它可以实现现有电话的所有功能,作为服务器以帮助其他节点实现路由搜索转发等功能,该种方案节点只需更新和维护一个SIP协议栈。

四、P2P SIP技术在应急通信中的应用

       应急通信是在紧急情况下为公众和政府提供各种通信手段,随着基于IP数据网的迅速发展,VoIP技术已经成为一种流行的基于IP网的语音通信方式,也可作为一种科能融合应急通信手段,为科能融合应急通信提供基于IP承载网的语音通信。
       通过前面的技术介绍我们知道,SIP是目前较流行的VoIP,但SIP技术是基于客户端/服务器模型,服务器的带宽、处理能力等可能成为SIP网络的瓶颈,同时这类网络的健壮性也受到了服务器的限制,一旦服务器故障,将影响整个网络的正常运行。P2P网络的出现,打破了原有的客户端/服务器模型,以全新的理念影响着网络的发展。P2PSIP技术结合了SIP技术和P2P技术两种技术的特点,具备灵活的网络结构和可靠的呼叫控制,成为SIP技术发展的新方向。P2PSIP网络中,每一个节点既可以作为客户端,发起和接收电话,也可以作为服务器,为其他节点提供路由搜索和转发功能,任何一个节点的故障对网络的影响较小,网络具备较强的健壮性,但是,该种技术的节点查找能力依赖于使用的P2P算法,如果网络规模过大,查找的效率将受到严重的考验,且该网络将控制权都交给了各个节点,大大降低了网络的可控可管能力,因此该技术在应急通信中的应用需要考虑应用场景的适用性。对于需要临时搭建小规模的网络(例如:会议系统/现场指挥调度系统/自组织网络等)或者在灾难中用户公众之间的通信,该技术可作为一个可选技术。
CHORD算法网络拓扑示意图
图5-91   CHORD算法网络拓扑示意图
        图5-91给出了一个利用P2PSIP技术建立的会议系统的网络拓扑,该网络中的节点通过P2P中的CHORD算法来组织和维护。系统中每个会议参与节点的IP地址和端口号使用Hash函数计算出一个Node-ID,Resource-ID可以通过用户名的Hash函数计算得到。
版权所有:统一通信系统集成:http://www.alloll.com 转载请注明出处