资源描述
毕业论文(设计)翻译
基于SIP协议的P2P网络电话
摘要
p2p系统天生拥有高扩展性、健壮性和高容错性的特点,这些特点得益于系统没有中央服务器并且网络是自己管理的这种结构。本系统实现了在P2P系统中较长的延迟的代价下定位感兴趣的资源。Internet 话可以被看作一个P2P架构的应用,它在一部分和另外一部分定位和通讯时在p2p这种自组网上实现。我们的目的是构建一个基于SIP信令的纯P2P架构的IP电话系统。 我们的P2P-SIP架构支持基本的用户注册和呼叫建立,也提供高级的服务,如:发送离线消息、声音/图像邮件和多方通话。此外我们提供一个可以实际操作的穿越防火墙NAT和安全性的P2P-SIP。
(关键字:点对点 网络电话 SIP)
1 介绍
现有的网络电话的客户-服务器模式都是基于 IETF的SIP或者ITU-T推荐的H.323协议,在他们的工作域里都有使用注册服务器。用户端(或者IP电话)把他们的IP地址注册到注册服务器上使得其他用户可以访问他们。这种一服务器为中心的系统的扩展性和可靠性都是以传统的冗余和失效切换方式实现的,比如,DNS,IP 地址替换,MAC地址替换或应用层的切换。这种系统的主要成本在于系统的维护、配置,特别是需要专业的系统管理人员。这就意味着想要迅速的建立一个在小范围下的系统是不容易的(如 应急通讯或者一个会议)。另外一方面,P2P系统天生就有扩展性和可靠性因为它没有单点故障的弱点。
我们提出一种使用SIP的P2P网络电话结构。P2P-SIP有两个主要的目标:(1)一个增加健壮性完全的分布式模型;(2)不改变现存的控制结构(如DNS)进行配置的能力。 分析 了许多可选的设计,提出使用Chord[3]作为基本的分布式hash表(DHT)的P2P-SIP端点。新的混合结构既允许传统的SIP电话也允许用户在本地域没有SIP服务器时在P2P网络中查找。使用SIP在P2P-SIP中执行各种DHT功能,例如端发现,用户登记,结点故障发现,用户定位以及通过用P2P代替DNS[4]用于SIP中的下一跳查找的呼叫建立。
实现了一个P2P-SIP适配器,SIPPEER[5],允许现有的或者新的SIP用户代理不改变用户代理就可以连接到P2P-SIP网络。例如,SIPPEER在同一台主机上可以作为基于PC的SIP用户代理并充当它的输出代理。SIPPEER也可以作为独立的SIP用户代理商,代理人或有命令行用户界面的注册服务器。模块化的设计允许组件的重用和替换。例如,Chord可以替换为另一种DHT而不 影响 其他部分。开放的结构可以不影响现存的设计安装新的服务。例如,一个新的语音邮件模块可以添加到现存的结点上。
除了P2P的扩展性和可靠性,P2P-SIP还有如下优点:
不需要维护或配置:这个系统是开箱即用的,不需要任何冗余的服务器安装(包括NAT和防火墙的配置)。我们的工作将TETF零配置网络工作组[6]的目标扩展到多媒体通讯和协作系统。
协同工作:不像Skype[7]之类的其他P2P系统,我们使用SIP与其他端点通讯。这可以很容易的与任何现存的SIP-PSTN网关的IP电话结构或象Asterisk的基于服务器的IP PBX一起工作。
这些优点是增加资源查找延迟和安全的威胁来得到的。一个不使用集中的元件的用于认证的可靠结构不在这篇文章的讨论范围内。
我们提供了高级服务如 “遗失呼叫”通告和多方会议在p2p-sip里。我们研究和学习了许多现存的文件共享系统。集中型系统如多方通话需要处理一些稍许不同之处都在本文做了说明。我们在第一部分说明的P2P的工作和SIP的相关工作。第三部分列出了p2p架构的IP电话系统的目标。第四部分提供了一个P2P-SIP系统的概况、用户注册以及呼叫。第五部分描述了P2P-SIP系统的高级特性。第六部分预估了系统的在扩展性、可靠性和呼叫延迟等方面的情况。第七部分分析了各种安全威胁和解决办法。最后,第八部分提出了我们的结论和未来的工作方向。
2 背景和相关工作
Chord:我们用Chord的对等哈希表来实现查询。Chord 有一个环行拓扑结构,在这个结构里每个节点都保存了至少LogN个入口(或状态)在它的查询表里可以找到其他点。查询的算法时间是O(LogN)。它的重复和递归查询直接映射到SIP的重定向和代理特性。研究DHT是我们的一个补充工作,因为我们的架构对底层DHT会有所革新和优化。
Skype :Skype是个免费的基于Kazza的p2p架构的应用,它允许Skype用户通过Internet呼叫任何Skype用户。Skype有一些问题:1、它的协议是私有的不是开放的标准比如 SIP;2、它提供了单一的服务 即 建立呼叫和及时消息,而不是一个针对新服务的架构;3、最重要的,它有一个中央认证节点,这就意味着一旦这个中央节点崩溃那么整个系统就无法工作。在某种程度上说,Skype和典型的SIP电话系统没有区别,此外 网索引服务器分配了一个超级节点给新加入的节点提供服务。超级节点如同SIP注册服务器,代理服务器或者存在服务器,它们维持着几点的存在信息,并且通过这些超级节点去查找其他用户。一个超级节点是那些有足够容量和可靠性的节点扮演的。我们相信它的查询模式是一种变种的发送大量请求的模式,它和kazza类似,而不是基于对等哈希表查询模式。Skype实现了主要的特色功能是实现了和STUN、 TRUN服务器一样的判断节点NAT情况来处理NAT情况,而与SIP直接配置服务器应用不同。
与p2p不同的是SIP电话系统是CS结构的。SIP是实现 internet会议、电话、存在状态、事件通知和及时消息的信令协议。更进一步说,这种协议也可以认为是处理过的p2p系统,这种SIP电话的通过状态设置超级节点(即SIP服务器),他们基于DNS域名解析来发现节点而不是哈希关键字。这样说来,使用一个纯的P2P架构代替现有的SIP服务器状态设置可以提高系统的可靠性允许系统动态适应节点失效的情况。
表 1展示了在p2p系统中IP电话系统和文件共享系统的区别。比如一个用户发起SIP邀请请求给潜在的用户让他们参与会议,它通过建立一对多的关系捆绑这种情况。特别是对
表 1: P2P系统间的区别
内容
文件共享
会议
数据存储
是
否
缓存
是
否
延迟
否
是
可靠性
可靠
不可靠
集中型的internet会议来说数据保存不是问题。一个p2p sip节点可以处理很多种请求它远比文件共享节点处理数据层面的请求多。缓存定义信息不是很有用了,因为比较基于pf分布式的文件访问模式,呼叫访问模式更多是一致性的分布式的。此外,很多住宅用户是通过DHCP方式获得IP,对次来说缓存的定位信息都是无用的。文件共享和目录系统的用户可以忍耐长时间的查询延迟,因为用户不必一直等着文件的下载,而且实际上下载文件的时间远大于查询的延迟。另外一方面,一个Ip电话的呼叫者会一直等着被叫方的震铃。对文件共享应用来说多个文件拷贝存在于不同节点是可以的(如 独立节点上的)。所以节点的可靠性是不太重要的。而对IP电话来说我们是想和一个正确的人通话而不是类似的人通话!
3设计目标
基于前面的对现存的p2p系统的分析如Skype和 Chord,我们准备对我们的p2p-sip
电话架构做如下目标定义:
零配置:系统应该可以自动的配置自己,如检测NAT和防火墙设置,发现邻居节点和执行初始化注册。
分化节点:它可以适应可用资源和区别节点的性能,可用性等指标。如KAzza一样它可以区别普通节点和超级节点。
有效率的查询:基于洪泛的盲目查询是低效率的。系统应该用对等哈希表作为底层查询的方法。我们选择Chord作为底层的查询模式是因为他的处理并发的节点加入和离开情况的健壮和有效性。
高级服务:它必须支持离线声音消息,多方会议,呼叫转移,呼叫转发,高级的internet服务如在线状态和及时消息。
协同工作性:它应该很容易的融入现有的协议和ip电话系统框架下。我们选择SIP作为信令协议就是为了协作性。除了这些明确的目标外,它还有一些p2p系统的特有的好处如可扩展性和可靠性,这些是CS结构所没有的。
4 结构框架
这里有三个运用分布式哈希表(DHT)的设计。一个极端是,这个分布式哈希表可以在服务器中用于服务器的领域同时仍然管理客户/服务器结构。另一个极端,所有的结点成为分布式哈希表的一部分。我们选择如图1所示的一种中间设计,具有高的容量(带宽,CPU,内存)和可用性(正常运行时间,公共IP地址)的一些结点成为超级结点并组成分布式哈希表,而其他的普通结点与一个或更多的超级结点相连而不是成为分布式哈希表的一部分。
图2给出了P2P-SIP结点中不同部件的算法。结点启动和用户用标识符登记时,发现模块被激活用于初始化网络地址翻译和防火墙探测[8],点发现和SIP注册。组播SIP注册、上一引导周期存储的端地址和预配置的自举地址被用来初始化结点集。用户界面模块记录用户的“朋友列表”并调用用户定位 模块定位这些朋友。用户定位模块使用SIP模块,或者,如果这个结点加入了DHT就使用DHT模块。DHT模块维护端信息(例如,Chord指针表)并执行像发现、加入和离开的一些DHT操作。
SIP被用作是定位其他用户或结点、加入DHT、注册用户、呼叫建立和即时消息的基础协议。一旦用户被定位,呼叫建立或即时消息就可以直接经由SIP模块发送到用户的电话。SIP REGISTER更新和OPTIONS消息用于探测结点失败。当一个超级结点关闭或者失败,注册被发送到DHT中的其他适当的超级结点。其他的SIP功能例如第三方呼叫控制和呼叫传输可以用相同的 方法 实现。媒介路径(音频设备,编解码器和传输)独立于P2P-SIP操作。
一些分布式哈希表允许对多端点并行搜索,不像Chord中的顺序搜索。在这种情况下超级结点可以担当背靠背用户代理并向邻居端点传播SIP消息。然而,除非是像美国的911这种紧急呼叫路由的情况,应该避免并行搜索以免网络中发生泛洪。
扩展性:考虑到在P2P-SIP中各节点能实现O(LogN)次登记,假如每个节点每秒能支持300次登记要求,并且每小时能完成一次登记刷新,节点的数量N在P2P-SIP网络中理论上能够达到2300*3600。同样,能支持290*3600个用户的网络每秒能支持90个代理的请求和平均每小时进行一个通话的。在实践中,这些数字将由于其他原因而小得多,譬如频带宽度。
呼叫建立延迟:p2p的优势带来了呼叫建立延迟的代价。例如,在10000个节点的Chord中,那么平均的查询路径的跳数是6,所以这个p2p呼叫需要至少6次超过传统的cs结构的SIP建立时间。在网络情况好的情况下,SIP单独的查询(邀请 反馈)小于200ms。所以这样在一到两秒的情况下在p2psip系统里等待被叫人摘机的情况是可以忍耐的。由于p2p的同步延迟,如刷新节点加入 离开、失效都会延迟用户的更新记录。在这种情况下,可能在最终呼叫建立前会有更多的多播发送。这在将来随着呼叫的增多会增加呼叫延迟。Skype的用户定位耗时3到8秒是比较成功的。
一些混和型系统实现了许多优点和非信任p2p算法减少了延迟和维护的代价。例如最近提出的一跳查询,假设每个节点都有足够大的存储空间。DHT模块用SIP消息去在节点间通讯。
安全性:网络电话的挑战除了基于服务器的认证和授权,在P2P-SIP中我们也需要处理隐私,保密,恶意节点的行为。例如,一个恶意的哈希表点可能不能促进正确的通话请求或为了未来的可能发生的滥用而记录所有通话请求。路由请求的频繁变换和每一个变化的回应能改变其标识符可以用来提供一些保密。现有的P2P安全系统主要集中在文件共享(不是实时),这里集中了所有组件,假定操作节点出现有串接身份的问题,一个电子信用卡或借记卡就可以去阻止“木马”。
5 高级服务
建立基本通话在互联网中并不具备足够的竞争力。这一节将描述一些先进的服务,如离线信息存储和基于P2P-SIP的多方通讯会议。
离线讯息:现有的能够持续的P2P文件存储系统并不够IP电话信息的存储,这是因为IP电话也需要实现消息等待的功能。我们储存给发送者以及中间的DHT节点,以此来提供了一种更加可靠的模式。
多方通讯会议:这里有三种运用P2P-SIP去实现会议的方式。 一种是参与者能成为小规模特别会议的混合成员。另外一种是完全分散的会议,运用SIP来建立一个full-mesh信号和媒体来构建参与人员之间的关系。最后,构建一个多媒体的分布树,在短时间内假设少数发送者可以使用的会议。交流的可靠性程度(依赖单节点的混音)决定了复杂性和带宽的利用,这就需要得到进一步的发展和研究。
6 总结和未来的工作
我们描述了一个纯的p2p 构架的sip电话系统。这个系统提供了继承与p2p系统的可扩展性和可靠性,另外它可以和SIP层面的系统协同工作。这些优势以增加呼叫建立延迟为代价。我们分析了各种可选设计,我们打算使用Chord的DHT最为p2psip的底层,并描述了各种用户定位注册的详细步骤。我们也介绍了各种高级服务如离线消息,会议,NAT防火墙的穿越和安全问题。
我们实现了一个p2p-sip节点做多媒体通讯,它使用我们自己开发的SIP c++库。我们会在我们的实际环境里检测它的扩展性,可靠性来代替模拟器。因为是基于Chord实现的p2p,许多仿真结果没有放入已经存在的仿真结果里。
更多的工作会集中于如大范围的p2p广播会议,分布式的信誉系统,和连接到PSTN网的工作记帐和验证工作。需要有一个合理的激励节点成为超级节点给大家服务的机制。我们正在做让在NAT和防火墙后的节点可以成为超级节点的工作。这会减少公网上超级节点的负载,因为很多用户都会在NAT和防火墙后面。可选的,在这种情况下,域中的私有节点组成一个二级p2p网络,联络公网的DHT,通过有限的连接,这样会减少NAT设备的端口利用。
一些公开的描述的问题和p2psip系统架构是有关的。如一些混和型的系统实现了低延迟和小维护的情况,如最近提出的p2p一跳查询假设大存储空间。这些方向的应用是p2p-sip的下一步研究的内容。
最后,我们认为除非SIP服务器会大量部署,否则我们的基于p2p的ip电话系统工具是可以让每个用户使用的。这个架构还可以扩展到其他协议如H.323。
致谢
Salman Abdul Baset帮助了解有关Skype架构。该研究工作由SIPquest Inc和美国国家科学基金会拨款No.0202063
参考文献
[1] Kazaa: peer-to-peer file sharing software application..
[2] Skype: Free internet telephony that just works..
[3] Zero configuration networking(zeroconf). http://www.ietf.org/html.charters/ zeroconfcharter.html.
[4] E. Adar and B. A. Huberman. Free riding on gnutella.First Monday, 5(10), Oct. 2000.
[5] S. Baset. The skype protocol analysis.Project report, Computer Science Department,Columbia University, New York, NY, May 2004.http://www1.cs. columbia.edu/˜kns10/research/skype.doc.
[6] Z. Ge, D. R. Figueiredo, S. Jaiswal, J. F. Kurose, and D. Towsley. Modeling peer-peer file sharing systems.In Proceedings of the Conference on Computer Communications (IEEE Infocom), Mar. 2003.
[7] A. Gupta, B. Liskov, and R. Rodrigues. One hop lookups for peer-to-peer overlays. In HotOS IX: The 9th workshop on hot topics in operating systems, Lihue,Hawaii, USA, May. USENIX.
[8] J. Lennox. Services for internet telephony. PhD. thesis, Department of Computer Science, Columbia University, New York, New York, Jan. 2004.http://www.cs. columbia.edu/˜lennox/thesis.pdf.
[9] D. Liben-Nowell, H. Balakrishnan, and D. Karger.Analysis of the evolution of peer-to-peer systems. In ACM Conf. on Principles of Distributed Computing (PODC), Monterey, CA, USA, July 2002. ACM.
[10] D. Milojicic, V. Kalogeraki, R. M. Lukose, K. Nagaraja,J. Pruyne, B. Richard, S. Rollins, and Z. Xu. Peer-to-peer computing. technical report HPL-2002-57 20020315, Technical Publications Department, HP Labs Research Library, Mar.2002.
[11] A. Rao. Why skype is no different, Mar. 2004. thevoipdaily/ archives/2004/03/why skype is no different.html.
[12] S. Ratnasamy, S. Shenker, and I. Stoica. Routing algorithms for DHTs: some open questions. In International Workshop on Peer-to-Peer Systems (IPTPS), Cambridge, MA, USA, Mar. 2002. IEEE.
[13] J. Rosenberg. Interactive connectivity establishment (ICE): a methodology for nettwork address translator(NAT) traversal for the session initiation protocol (SIP).Internet draft, Internet Engineering Task Force, July2003. Work in progress.
[14] J. Rosenberg and H. Schulzrinne. Session initiation protocol (SIP): locating SIP servers. RFC 3263, Internet Engineering Task Force, June 2002.
[15] J. Rosenberg, H. Schulzrinne, G. Camarillo, A. R. Johnston, J. Peterson, R. Sparks, M. Handley, and E. Schooler. SIP: session initiation protocol. RFC 3261, Internet Engineering Task Force, June 2002.
[16] H. Schulzrinne and J. Rosenberg. Internet telephony: Architecture and protocols – an IETF perspective.Computer Networks and ISDN Systems, 31(3):237–255, Feb. 1999.
[17] I. Stoica, R. Morris, D. Karger, F. Kaashoek, and H. Balakrishnan. Chord: A scalable peer-to-peer lookup service for internet applications. In SIGCOMM,San Diego, CA, USA, Aug 2001.
[18] J. Toga and J. Ott. ITU-T standardization activitiesfor interactive multimedia communications on packetbased networks: H.323 and related recommendations. Computer Networks and ISDN Systems, 31(3):205–223, Feb. 1999.
10
展开阅读全文