基于DHT全分布式P2P-SIP网络电话稳定性研究与设计
2010-01-29陈玉英
陈玉英
(苏州工业园区工业技术学校 信息中心,江苏 苏州 215123)
全分布式结构化DHT(Distribute Hash Table)作为一种新的P2P(Peer to Peer)网络结构在近几年得到迅速发展,在结点资源搜索效率、可扩张性、可靠性等方面相对其他结构的P2P网络具有优势.同时,也因其彻底摒弃了集中服务器,在网络管理和稳定性方面提出了不同于其他结构P2P网络的要求[1].
SIP(Session Initiation Protocol)是一个应用层的控制协议,可以用来建立、修改和终止多媒体会话(或会议),具有用户注册、用户定位、会话建立、会话管理等功能,已成为网络电话的主要协商协议,并将逐渐取代传统的PSTN电话,成为NGN(Next General Network)中语音信息传输的主要形式.目前网络电话系统结构已从基于C/S结构的SIP网络电话向P2P-SIP网络电话转换.本文分析了DHT全分布式结构化P2P网络的稳定性要求,并综合P2P-SIP网络电话的特点,针对CHORD结点搜索算法提出一种基于DHT分布式P2P-SIP网络电话稳定性的设计思想,既充分发挥DHT结构P2P网络的全分布式优点,又能保证网络电话运行的稳定性[2].
1 DHT与P2P-SIP体系结构的回顾
DHT结构的P2P网络彻底摒弃集中服务器,采用分布式哈希算法解决结构化P2P网络的分布式存储,通过对存储对象的特征(关键字)进行哈希运算得到键值(Hash Key),并根据键值将相应对象分布存储于P2P网络中的不同结点.CHORD算法是DHT结构类型的一种,结点和资源使用相同哈希空间,通过特定算法可高效解决DHT结构的结点搜索问题[3].
CHORD中所有结点根据结点哈希值(NodeID)首尾相连成一个环,每个结点不仅保存其前驱和后继结点信息,还需保存一个查询表(Finger Table)用于提高查询效率,查询表存储CHORD环中m个虚拟结点信息,虚拟结点间距(ID间隔)成2i关系排列(i为查询表中数组下标).
CHORD环中结点提供的共享资源根据资源特征值哈希出资源编号(ResourceID),并将该资源信息保存于第一个NodeID大于或等于(模运算)该ResourceID的结点,供CHORD环中其他结点搜索.图1是一个具有64个结点的CHORD环组成的P2P网络.
P2P-SIP体系结构是将P2P架构引入现有基于SIP协议的网络电话系统,用SIP信令交互实现P2P网络结构中的结点通信,用P2P网络结构实现基于C/S结构SIP网络电话中的注册、代理服务器的功能.在P2P-SIP网络电话中一个结点在一个时段仅对应一个资源(电话用户)[4].
将CHORD算法引入P2P-SIP网络电话,可彻底摒弃SIP网络电话对集中服务器的依赖,高效解决网络电话用户注册、定位等功能.保持基于DHT结构的P2P-SIP网络电话的稳定性,必须解决两个问题:(1) P2P网络中结点的加入和退出不断发生,如何在动态过程中保持CHORD环结构的完整性;(2) 在结点动态加入和退出过程中如何保持用户注册信息稳定,以保证其他用户能正确定位到该用户,特别是结点非正常退出时.
图1 CHORD环P2P网络示意图
2 稳定性研究与设计
2.1 结点信息稳定性
要保证整个CHORD算法的稳定性首先必须保证CHORD环结构的稳定性,查询表主要用于搜索定位,包括资源信息定位和结点信息定位,也必须具有相对的稳定性.其内容来源于CHORD环内结点结构,结点变化直接影响CHORD环内各结点查询表内容.为保持CHORD环结构稳定性,环内各结点定期运行稳定进程.设计双向链表环结构,结点后继指针用于构成CHORD环结构,前驱指针用于维护CHORD环结构的稳定性.
单个结点加入:如图2所示,结点B通过CHORD搜索算法,找到结点C作为它的接入结点(加入后结点B是结点A的直接后继),设置结点B的后继结点为结点C;将结点C的前驱结点A改为结点B.但这并没有改变CHORD环结构,结点B是CHORD环的一个外挂结点,不参与CHORD环内一切运算.当结点A的稳定进程运行时,将向其后继结点C查询结点C的前驱结点,若结点C的前驱结点B小于(模运算)结点A,则将结点B作为它的后继结点,并由结点A通知结点B,结点B设置其前驱结点为结点A,并各自修改结点查询表,至此,结点B才完全加入CHORD环.
多个结点同时加入:如图3所示,在同一时刻可能有多个结点同时通过一个结点注册加入CHORD环,若结点B向结点D注册加入CHORD环,且已经成为一外挂结点,在结点A启动稳定进程以前,结点C也向结点D注册加入CHORD环结构,则在同一个时间段,结点D有两个外挂结点,结点A启动稳定进程时,由于结点D的前驱结点为结点C,则节点C由外挂结点转化为CHORD环内结点,参与环内运算.另一外挂结点B必须再次启动注册进程申请加入CHORD环,再次启动注册进程由该结点的稳定进程驱动,结点启动稳定进程时,若发现其前驱结点为空,则需要再次注册加入CHORD环.
图2 单个结点加入CHORD环示意图
结点离开:若结点正常离开,则在结点离开CHORD环结构前,通知其前驱、后继结点修改各自的前驱后继指针和查询表,并把该结点所保存资源信息转发给直接后继结点;若结点非正常离开,则局部破坏了CHORD环结构,为保持CHORD环结构,每个结点需保存其后m个后继结点信息,在结点稳定性进程启动时,若发现其直接后继结点失败,可通过其他后继结点保持稳定性.每个结点保存的m个后继结点信息来源于其直接后继结点所保存的前m-1个后继结点信息加上直接后继结点组成.通过m个后继结点就可大大降低CHORD环结构局部破坏概率,提高环结构稳定性.
图3 两个结点同时加入CHORD环示意图
2.2 用户信息稳定性
在CHORD环结构中,若结点正常离开,则该结点所保存的用户信息被转存于该结点的直接后继结点;若结点非正常离开,则该结点所保存的用户信息全部丢失.DHT分布式P2P网络中,资源信息稳定性可通过冗余资源信息保持,但冗余资源信息的增加只能相对提高稳定性,不能保证完全稳定,并且冗余资源信息会成倍增加结点存储的资源信息数量,不方便资源信息管理,增加HASH重码概率.
对于P2P-SIP网络电话,用户信息是SIP呼叫的基本参数,若用户信息丢失,其他用户将无法定位该用户,通话无法建立,所以必须保证用户信息的完全稳定.用户信息作为资源信息根据算法保存于某个结点,随着CHORD环结构的变化,保存用户信息的结点也在变化,为使用户信息在这一动态变化过程中保持稳定性,可采用定期查询.具体过程如下:每个结点在存储用户信息后,须向用户所在结点发送本结点相关信息,用于用户所在结点查询.用户所在结点的稳定进程在保持CHORD环结构稳定性的同时,也定期向存储用户信息的结点发送查询信息,判断存储用户的结点是否离开.若结点非正常离开,结点保存的所有用户信息全部丢失,用户所在结点通过稳定进程查询获知存储用户信息的结点非正常离开,重新启动注册用户进程[5].
3 结 论
本文通过对CHORD环结构P2P网络的详细分析,综合P2P-SIP网络电话稳定性要求,提出一种基于DHT全分布式P2P-SIP网络电话稳定性的设计思想,并对该思想进行了详细分析.该思想的实现可提高P2P-SIP网络电话的可靠性和稳定性,并能提高用户搜索效率.
目前P2P-SIP技术还在发展中,但已显示出在公共互联网上以P2P-SIP技术建立多媒体平台的发展趋势.P2P-SIP网络电话稳定性的提高,将更能满足发展互联网新媒体的需求,也更符合互联网运营模式的需求.
[1] ROSENBERG J,SCHULZRINNE H,CAMARILLO G,et al.Session initiation protocol: RFC 3261-SIP[R].Minneapolis:Internet Engineering Task Force,2002:126-135.
[2] BRYAN D,LOWEKAMP B,JENNINGS C.A P2P approach to SIP registration and resource location,draft-bryan-sippingp2p-02[R].San Diego: Internet Engineering Task Force,2006:154-165.
[3] JOHNSTON A,SINNREICH H.SIP,P2P,and internet communications,draft-johnston-sipping-p2p-ipcom-02[R].San Diego: Internet Engineering Task Force,2006:205-221.
[4] ION S,ROBERT M,DAVID K,et al.Chord: a scalable peer-to-peer lookup service for internet applications:ACM SIGCOMM 2001.San Diego,August 27-31,2001[C].San Diego:ACM,c2001.
[5] SINGH K,SCHULZRINNE H.Peer-to-peer internet telephony using SIP,technical report CUCS-044-04[R].New York:Department of Computer Science,Columbia University,2005:223-230.