P2P SIP原理和应用

发布时间:2007-12-20 作者:戚晨,董振江

1 SIP网络
      会话发起协议(SIP)是互联网工程任务组(IETF)制定的多媒体通信应用层控制协议,用于建立、修改和终止多媒体会话。SIP协议借鉴了超文本传输协议(HTTP)、简单邮件传输协议(SMTP)等,采用基于文本协议控制方式,支持代理、重定向、登记定位用户等功能[1]。

      SIP凭借其简单、易于扩展、便于实现等诸多优点而得到了广泛应用。3GPP等标准化组织已经选择SIP作为下一代网络(NGN)和3G多媒体子系统(IMS)中的通信协议,业界已广泛应用了多种基于SIP的多媒体业务[2]。

      SIP网络采用客户端/服务器(C/S)的网络架构,按域划分用户。每个域的SIP服务器管理着本域内的用户,用户在使用SIP业务时,需要注册到SIP服务器。各用户之间的通信需要由SIP服务器来进行路由,因此存在SIP服务器的“单点故障”和“性能瓶颈”等问题。

      目前有多种提升SIP服务器处理能力的方案,如采用高处理能力的服务器、采用多服务器间的N+1或热备份方案,或者采用多服务器负载均衡技术。

2 P2P技术在互联网上的应用
      P2P技术本身并不是新的概念或技术,它的原理是将网络上的通信节点作为平等的通信终端,任意两个通信节点之间既互为“服务器”又互为“客户端”。这一点与互联网的基础协议TCP/IP一致,TCP/IP也没有服务器或客户端的概念,任意两个节点之间是平等通信的。随着互联网应用的扩展,P2P技术得到了广泛的应用。P2P网络采用分布式对象定位机制,使得信息或媒体流在节点之间直接传送,降低了中转开销,从而提高了网络的可扩展性,节省了网络带宽。

      很多基于P2P技术如共享MP3格式音乐文件的Napster服务、SETI@Home计划,尤其是Skype应用的成功,使得P2P技术成为业界关注的焦点。

3 P2P网络架构
      P2P 网络的技术核心是解决分布式节点之间的资源定位,这需要合适的网络架构,发展至今共经历了3代网络架构。

3.1 集中目录式网络架构
      最早出现的P2P应用模式就是集中目录式P2P网络,Napster是该架构模型最典型的代表。用户需要登录到中心目录服务器,通过目录服务器查询存储各个节点的资源信息。这种结构的最大特点是所有的资料都是存贮在各个用户节点中。用户获取资源时,节点根据网络流量和延迟等信息选择合适的节点建立直接连接,而不必经过中央服务器。

3.2 纯P2P网络架构 
      纯P2P网络架构采用的是广播式的P2P模型。在这种架构下,没有集中的中央服务器,每个用户节点随机接入到网络,并与自己相邻的一组节点通过端到端连接构成一个逻辑覆盖的网络。节点之间的内容查询和内容共享都是直接通过相邻节点以广播方式接力传递。为了避免循环搜索现象,每个节点会记录其搜索轨迹。

      Gnutella模型是现在应用最广泛的纯P2P网络架构,采用泛洪式的节点搜索算法,解决了网络结构中心化的问题,扩展性和容错性较好。但是Gnutella网络可用性较差,易被病毒攻击,并且极大地消耗了网络带宽,很容易造成网络拥塞与不稳定。

3.3 混合式P2P网络架构
      混合式P2P网络在纯P2P网络架构基础上加入了超级节点的概念。在这种网络下,将节点按能力 (计算能力、内存大小、连接带宽、网络滞留时间等)不同区分为普通节点和超级节点两类。超级节点与其临近的若干普通节点之间构成一个自治的簇,簇内采用基于集中目录式的P2P模式,而整个P2P网络中各个不同的簇之间再通过纯P2P的模式将超级节点相连。有时甚至也可以在各个超级节点之间再次选取性能最优的节点,或者另外引入一新的性能最优的节点作为索引节点来保存整个网络中可以利用的超级节点信息,并且负责维护整个网络的结构。

      普通节点的文件搜索先在本簇内进行,只有查询结果不充分时再通过超级节点之间进行有限的泛洪。同时,每个簇中的超级节点监控着所有普通节点的行为,从而确保一些恶意的攻击行为能在网络局部得到控制,也在一定程度上提高了整个网络的负载平衡。

      混合式P2P网络架构综合了集中目录式P2P快速查找和纯P2P去中心化的优势,Kazaa模型是P2P混合模型的典型代表。

      然而,由于超级节点本身的脆弱性也可能导致其簇内的节点处于孤立状态,因此这种局部索引的方法仍然存在一定的局限性。这导致了结构化的P2P网络模型的出现。

3.4 结构化P2P网络架构
      结构化P2P架构采用纯分布式的消息传递机制,根据关键字进行节点查找定位。目前结构化网络的主流查询定位方法是采用分布式哈希表(DHT)技术,这也是目前扩展性最好的P2P路由方式之一。
DHT将节点管理的资源或文档作为“关键字”,将节点的IP地址作为“数值”,组成关键字-数值对,并能根据关键字查找数值。DHT技术中的存储和查询是分布在多个节点上进行的,对单一节点的依赖性低,容易实现网络上任一节点的无序加入或退出,对整个网络性能影响较低。

      DHT各节点并不要维护整个网络的信息,只需存储其临近后继节点信息,因此通过较少的路由就可以到达目标节点。DHT又取消了泛洪算法,有效地减少了节点信息的发送操作数量,增强了P2P网络的扩展性。

      在实际应用中,出于冗余度以及延时的考虑,大部分DHT总是在节点的虚拟标识与关键字最接近的节点上备份冗余信息,这样也避免了单一节点失效的问题。

      但是基于DHT的网络拓扑结构的维护和修复也比Gnutella模型和Kazaa模型等无结构的系统要复杂得多,有时甚至出现“绕路”的问题。

      目前基于DHT的研究项目主要还集中在具有相同能力的较小规模的网络中,对于大规模的Internet部署还在研究中。同时大量实际的P2P应用还大都是基于无结构的拓扑和泛洪广播机制,采用DHT方式的P2P系统缺乏在Internet中大规模真实部署的成功实例。

4 P2P SIP网络架构
      P2P网络[3]的优点是没有中心服务器,节点间直接通信、交换资源和文档,并且可以扩展到分布式的负载分担网络。从理论分析看,P2P网络可以降低C/S结构网络中的“单点故障”和“性能瓶颈”问题。作为C/S结构网络一种的SIP网络也可以利用P2P技术来实现,并且具有以下特点:

  • 去中心化,避免中心SIP服务器的单点故障隐患;
  • 增强SIP网络的扩展性,降低网络中的存储、计算、带宽等性能瓶颈;
  • 提高网络的高可用性,采用P2P网络全分布的架构来提高网络的健壮性;
  • 降低成本,充分利用节点闲置的处理能力、存储和带宽资源。

      P2P SIP网络利用SIP协议的扩展和承载来完成P2P层叠加网络节点的加入、定位、查找和路由,降低P2P私有协议带来的扩展性和兼容性问题,实现不同P2P网络的互通。

      P2P SIP网络以SIP协议为基础,无需大规模改动现有设备,并且无需改动VoIP终端设备,只要升级现有SIP服务器的软件,即可实现SIP网络的P2P化,提升网络的处理能力和可用性。

      在P2P SIP网络中,原来管理一个域的单节点SIP服务器变成多台P2P SIP服务器(称为PN节点),PN之间通过P2P机制互联,彼此分担负载,构成一个逻辑上的重叠网络。每个节点将和它相连的下一节点当作下一跳PN可以承担原来服务中压力最大的部分,比如注册、代理和计费。用户连接到任一PN,都可以有效使用服务。部分PN的宕机或故障不会影响到整个P2P SIP网络的正常运行。当需要扩大P2P SIP网络的容量,加入新的PN就可以了[4]。

      P2P SIP网络有两个重要操作:一是对P2P节点的操作,包括节点注册和离开,实现重叠网络的维护[5];另一个是用户层面的操作,包括用户的注册、资源定位、会话建立等。

4.1 P2P SIP节点操作
      P2P节点在地理上散布各处,逻辑上根据选用的P2P机制的不同可以是环形的(Chord协议)、矩阵的(CAN协议)、网状的(Pastry协议和Tapestry协议)。基本的P2P节点至少包括注册和代理两种功能。从运营角度出发,还需要部署全局认证服务器、全局账务服务器和网管服务器等等,用于管理全部用户和所有节点。

      每个节点在网络中都有一个节点ID号,该ID号由节点IP地址和端口号进行哈希运算获得,节点信息被存储在一张DHT表中。每个节点负责存储对应信息,如用户注册信息等。

      当一个节点申请加入网络中时,先定位一个缺省的网络节点,并发送SIP REGISTER消息给该缺省节点,申请加入网络。如果该缺省节点是负责对应区域的节点,则响应200OK消息,并允许新加入节点加入网络。响应消息中包含邻近节点的信息。

      如果缺省节点不是负责对应信息区域的节点,则通过SIP 302响应提供新加入节点前转的网络节点。新加入节点向前转节点发送SIP REGISTER消息,申请加入。前转节点根据自己是否是负责该区域的节点对REGISTER消息进行处理。上述过程一直持续到找到对应的节点为止。

      当新加入节点成功加入网络后,新加入节点存储所需要负责的用户信息如用户注册信息,同时通知网络中其它节点更新自己的信息。

4.2 P2P SIP用户注册操作
      在P2P SIP网络中,每个用户被看成是一个资源,以资源ID标识,资源ID由资源名称经哈希运算获得。

      当用户申请注册时,首先生成对应的资源ID。用户所在的节点通过查找路由表,找到一个资源ID和节点ID最接近的节点,并向该节点发送REGISTER消息。如果该最近节点是负责该资源ID的节点,它会将用户名称和IP地址存储在注册表中,并回送200OK消息给用户节点。

      如果该最近节点不是负责该资源ID的节点,则通过302消息通知用户节点需要注册到下一节点。下一节点按照和上一节点同样的方式进行处理,直至找到对应的处理节点。对应的处理节点发送200OK消息给用户节点,并存储用户的名字和IP地址。

4.3 P2P SIP会话建立操作
      用户注册成功后,可以和其他用户进行会话。在会话前,会议发起方需要确定会话接收方的地址。发起方首先生成接收方的资源ID,并确定一个和资源ID最近的节点。然后发送INVITE消息给该最近节点,直到查找到负责接收方的节点。如果接收方用户没有注册,则负责节点通知发送方停止会话;如果接收方已正常注册,负责节点将接收方用户的IP地址通过302响应通过发送方。

      在获得了接收方的IP地址后,发起方和接收方就可以按照传统SIP协议的方式建立会议。

5 结束语
      利用P2P技术的分布处理和无中心的架构来建设SIP网络是网络发展的一个重要方向。从现在的P2P SIP网络的应用和实践看,这种结合方案还有很多挑战,主要表现在:

  • P2P技术还不成熟,资源动态分布的优化,资源恢复技术还在进一步研究中。现有的P2P应用主要还是集中在非实时的互联网数据应用上,对于实时的通信节点,以及资源的快速分配定位,还有很多需要P2P SIP网络研究的领域。
  • P2P的成功应用目前还只是在互联网领域的非实时应用,对于SIP应用,特别是实时通信要求高的呼叫处理而言,基于P2P的SIP网络还需要进行优化。P2P SIP网络利用在去中心化的节点群集来代替原SIP网络中的服务器,现有的P2P技术发现,在P2P SIP网络中对等通信方的查找时间原大于普通SIP网络的对等通信方查找时间。实验发现,两种网络的查找实验时间比超过4倍。
  • P2P对于带宽和资源的消耗,路由效率低下是P2P技术取得成功应用的难点。现有的成功的P2P应用大都利用“免费”的互联网资源,包括带宽、存储、计算能力等。对于一个可运营可管理的P2P SIP网络而言,需要提高P2P网络技术对资源的使用效率。
  • P2P SIP网络结构复杂,对于运营商的管理带来了很大的困难。如何实现可运营可管理的P2P SIP网络是目前业界的一个重要课题。

6 参考文献
[1] ROSENBERG J, SCHULZRINNE H, CAMANILO G. SIP: Session initiation protocol [S]. RFC3261. 2002.
[2] Campbell b, Rosenberg j, Schulzrinne h, et al. Session initiation protocol (SIP) extension for instant messaging[S]. RFC 3428. 2002.
[3] Willis D. Concepts and terminology for peer to peer SIP [EB/OL].draft-willis-p2psip-concepts-03 (Work in progress), 2006.
[4] Bryan d, Lowekamp b, Jennings c. SOSIMPLE: A serverless, standard based, P2P SIP communication system[C]// Proceedings of International Workshop on Advanced Architectures and Algorithms for Internet Delivery and Applications( AAA-IDEA 2005), Jul 15, 2005, Orlando, FL, USA. 2005.
[5] Bryan d, Lowekamp b, Jennings c. Dsip: A P2P approach to SIP registration and resource location [EB/OL]. http://www.ietf.org/internet-drafts/draft-bryan-p2psip-dsip-00.txt, 2007.

收稿日期:2007-09-20

[摘要] SIP协议是当前VoIP和IM等多媒体协议的呼叫建立协议。P2P技术提供了分布式的网络架构中通信节点之间得对等通信能力,P2P网络架构经历了集中目录式网络架构、纯P2P网络架构、混合式P2P网络架构和结构化P2P网络架构。通过引入P2P技术,SIP网络的能力可以得到增强。P2P SIP网络主要有两个重要的操作:对P2P节点的操作和用户层面的操作。

[关键词] SIP;P2P;P2P SIP 网络

[Abstract] Session Initiation Protocol(SIP) is a fundamental protocol to initiate multi-media conversation such as Instant Messaging(IM) and Voice over IP(VOIP). P2P technologies realize P2P communications to spread in distributed networks. The P2P network architecture undergoes centralized directory network architecture, pure P2P network architecture, mixed P2P network architecture, and structural P2P network architecture. By incorporating P2P technologies, SIP network can be improved. There are two kinds of key operations for P2P SIP network: operations on P2P nodes and operations for users.

[Keywords] SIP; P2P; P2P SIP network