P2P-SIP:教你轻松实现多媒体会话

作者:未知 | 日期:2006-12-21 | 字体:

  SIP协议凭借其简单、易于扩展、便于实现等诸多优点越来越得到业界的青睐,它正逐步成为NGN(下一代网络)和3G多媒体子系统域中的重要协议,本文针对SIP服务在部署中出现的“单点失效”和“性能瓶颈”等问题给出了详细的解决方案。

  针对SIP服务在部署中出现的“单点失效”和“性能瓶颈”问题,提出了基于P2P技术的SIP服务网络的结构。这种结构利用现有SIP设施,只做部分升级就能提供非常优越的性能。文中给出了实现方案并重点分析了P2P-SIP网络处理注册和呼叫的流程。并介绍了P2P技术、Chord协议和互联网工程任务组IETF在P2P-SIP方面的研究进展。

  SIP服务现状

  SIP (Session Initiation Protocol,会话初始化协议)是在Internet节点间建立多媒体会话的控制信令,由IETF制定。SIP协议简单、可扩展性强,被很多互联网电话业务采用,成为VoIP的两大协议之一。VoIP是下一代互联网(NGN)的重要组成部分,因为可以提供更丰富的业务和更低廉的通话费用,最近几年发展迅猛。据iResearch 整理的资料显示,2004年全球VoIP 服务市场规模已经达到35 亿美元,在未来两年仍将呈现高速增长的趋势,预计2008年市场规模将达到210 亿美元。

  在用户高速增长的同时,现有的SIP服务器也普遍反映出一些不足:“单点失效”和“性能瓶颈”问题。SIP按域划分用户(比如ccw.com.cn就是一个域,而就是该域内提供网页浏览的一台www服务器),每个域有一台SIP服务器,用户连上本域的服务器。如果用户所在域的服务器宕机,用户就不能使用SIP服务。这就是所谓的“单点失效”问题。当某个域内的用户数目庞大时,单台服务器就会性能不足。如果使用多台服务器,为维护服务器之间的一致性又会增加配置的复杂性和增大性能损耗,性能提升十分有限。这就是所谓的“性能瓶颈”问题。

  Skype使用P2P(Point to Point,点对点)机制解决了这两个问题。Skype网络把节点分为超级和普通两种。超级节点通过P2P机制互联,为普通节点提供注册服务。当超级节点失效时,它所管理的普通节点会注册到其他超级节点上,避免了“单点失效”。当网络处理能力不够时,部分普通节点会转换成超级节点以增大网络容量,打破了“性能瓶颈”。靠这种结构,Skype做到了全球注册用户超过1亿,同时在线人数突破700万。可惜Skype使用私有协议,无法接入市场上大量的VoIP设备。

  Skype的成功,使得IETF开始借鉴P2P的机制来提升SIP。威廉玛丽学院的David A. Brayn就提出了扩展SIP的Register请求,将其用做P2P的信令。P2P的优点是没有中心服务器,节点间分担负载。没有中心服务器,就不会“单点失效”;节点间分担负载,增加节点就能迅速增大系统容量。而且在P2P中,增加节点的操作几乎是“零配置”的。

  P2P-SIP网络的结构

  在IETF的设想中,每个SIP节点同时也是P2P节点。节点间地位平等,没有普通节点和超级节点的差别。这种设计要求现有SIP设备做重大改动,而且无法将SIP服务做商业化运营。而本文的设计充分考虑到SIP服务的商业化和电信级运营,不需要改动现有VoIP终端设备,只对现有SIP服务器的软件做改动,而且改动很小。为区别于传统的SIP服务器,本文把P2P化的SIP服务器叫做P2P-SIP Node,简称PN。具体的网络结构如图1所示。

  在P2P-SIP网络中,原来管理一个域的单台服务器变成多台PN,PN之间通过P2P机制互联,彼此分担负载。PN可以承担原来服务中压力最大的部分,比如注册、代理和计费。用户连接到任一PN,都可以有效使用服务。部分PN下线或故障不会影响到P2P-SIP网络的正常运行。要扩大P2P-SIP网络的容量,加入新的PN就可以了。

  PN在地理上散布各处,逻辑上根据选用的P2P机制的不同可以是环形的(Chord协议)、矩阵的(CAN协议)、网状的(Pastry协议和Tapestry协议)。基本的PN至少包括注册和代理两种功能。为进行商业运营,可以部署全局认证服务器、全局账务服务器和网管服务器等等,用于管理全部的用户和所有的PN。

  新的服务比如语音和视频会议、语音邮箱、PSTN落地(即呼叫座机和手机)、自动和人工语音应答可以部署在PN上,也可以作为单台服务器或服务器网络的形式接入P2P-SIP网络。

  P2P-SIP网络的实现

  1. PN的结构

  PN分为两层。上面是SIP层,处理标准的SIP信令;下面是P2P层,使用特定的机制(本文的设计选用Chord协议)互联各个PN的P2P层并维持它们之间的联系。P2P层提供给SIP层的应用程序编程接口(API)只有函数find_responsible_pn(user),该函数返回负责管理该user的PN的IP地址和端口。由于P2P-SIP网络是动态的,所以负责管理某个用户的PN在不同时段可能是不同的。





[1] [2] [3] [4] 下一页   
阅读: 次 | 来源:计算机世界 | 录入:admin

评论 】 【 推荐 】 【 打印
上一篇:用Vista和WCF中P2P通信功能开发软件
下一篇:P2P之NAT类型检测方法
本文点评       全部点评
我要点评


字数

姓名:
 
广告内容
 
下面是广告内容