复制成功
  • 图案背景
  • 纯色背景
wzs1990112..

上传于:2015-06-17

粉丝量:25

趁现在的双手还能拥抱彼此,趁我们还能呼吸,去见你想见的人,做你想做的事。



Sipear_一种基于p2p架构的语音通信酸系统

下载积分:1250

内容提示: 复旦大学硕士学位论文Sipear:一种基于p2p架构的语音通信系统姓名:邢皖甲申请学位级别:硕士专业:计算机软件与理论指导教师:叶德建20090501 Si pear:一种基于p2p架构的语音通信系统摘要近几年来,以网络为载体的各种应用的研究和开发受到了广泛的关注。其中点对点通信系统作为其中一个重要的应用有着飞速的发展。这类系统涉及到网络组织架构、信道编码、网络传输、安全等多方面的技术。而已存在的点对点通信系统主要分为中心化网络和去中心化网络两大类,去中心化网络优于中心化网络的主要方面在于消除了中央服务器的单点失效的不足,但是其搜索方式通常是耗时较...

文档格式:PDF| 浏览次数:11| 上传日期:2015-06-17 22:29:30| 文档星级:
复旦大学硕士学位论文Sipear:一种基于p2p架构的语音通信系统姓名:邢皖甲申请学位级别:硕士专业:计算机软件与理论指导教师:叶德建20090501 Si pear:一种基于p2p架构的语音通信系统摘要近几年来,以网络为载体的各种应用的研究和开发受到了广泛的关注。其中点对点通信系统作为其中一个重要的应用有着飞速的发展。这类系统涉及到网络组织架构、信道编码、网络传输、安全等多方面的技术。而已存在的点对点通信系统主要分为中心化网络和去中心化网络两大类,去中心化网络优于中心化网络的主要方面在于消除了中央服务器的单点失效的不足,但是其搜索方式通常是耗时较大的“ 泛洪"算法。同时由于现在网络的异构性,网络传输能力在不同的网络上有不同的表现,另外局域网的构建使得局域网内外的连接变的更加困难。现在存在的点对点通信系统比如Q Q ,M SN 等都存在着单点服务器的限制,只有Skype表现良好,但是作为商业项目的Skype的架构是保密的。为此本文提出了一种点对点通信系统的架构,与现有语音通信系统相比,该系统具有以下优点:去中心化的P2P通信架构增强了系统的可扩展性和鲁棒性;改进的搜索指向表更新算法降低了维护P2P节点扰动的开销;加入端口猜测的语音通信协议提高了N AT穿透的成功率;使用最大匹配算法分配数据中转节点提高了数据的传输效率。大量的内部模拟测试和实际公网测试表明,所实现的语音通信系统在用户连接建立时间、用户信息搜索时间及语音数据延迟等方面都具有良好的表现。对于将来扩展在视频媒体及其他娱乐等方面的应用,该语音通信系统也具有一定借鉴意义和参考价值。关键词P2P, 覆盖网络,搜索指向表,N AT穿透 AbstractRecentl y, m oreandm ore attenti ons al e focus on theresearch andappl i cati onsbasedon thenetw orki ng.Am ongw hi ch thep2p appl i cati onsal e devel opm ent qui ckl y.Andthi ski nd ofappl i cati oncontai nsnetw orki ngtransm i t and securi ty.Accordi ngto the theory, the overl ay netw orki ngal ecate}goryto tw om ai n ki nds,the fi rst i s central i zed and decentral i zednetw orki ngw hi l e thethe m odul es ofoverl ay netw orki ng,channelencodi ng,decentral i zed netw orki ngdi sm i ss the defect ofsi ngl e poi ntfai l ure but w i th the searchal gori thmoffl oodi ngsearch.Attransfer ratevaryandal so thedi ffi cul tyof di rectl yconnect betw eenends i ncrease· Andthesuch as Q Qand M SNhave thesi ngl e poi ntthe sam e ti m e,asym m etri c of netw orki ngcause theexi sti ng appl i cati onsdefectw hi l e theappl i cati onofSkypew orks w el l but for i ts busi ness i ssue.In thi spapernetw orki ngbased on P2ECom pari ngtoexi sti ng system ,the systemhas four soundadvantages:hi ghextensi onand robustnessby usi ngdecentral i zed overl ay systembasedonP2P;good stabi l i ty by usi ngm odi fi ed D H T search al gori thm ;hi gha new archi tecturei sproposedw hi chusi ngdecentral i zed overl aySU CCESS rate fori ntroduceport predi cti oni nto N AT traversal ;transm i t effi ci ency by usi ng l ongest prefi xm atch w hi l e di stri butedrel aynode.After thei m pl em entati onand testsi m ul ati onpl atformandi nternet,aconcl usi on that thepropose systemperform sw el lscal abi l i ty, search effi ci encyand voi ce quanti tyi s draw , SOi t Canprovi de practi cal andon both i nneruserresearch val uei n m edi a andanyrel atedappl i cati on.Keyw ord:peer-to—peer, O verl ayN etw orki ng,N ATTraversal2 Si pear:一种基于p2p架构的语音通信系统.第一章引言计算机网络技术不仅连接了各种不同的网络使得网络连通,同时也促使网络上的各种资源得以共享,从而衍生出各种以数据为中心的覆盖网络的研究和发展[ 1] [ 2] [ 25] 。其中voIP作为其中一项重要的应用有着快速的发展,已成为比较成熟的课题。其快速发展的原因主要有两个,其一是减少费用,其二是提高效率和增强可扩展性。针对于前者,voIP技术从传统的集中式发展成为非集中的方式,主要原因在于集中式对服务器性能要求较高:如果要支持大量甚至海量的用户并行,那么要求中央服务器有较高的处理能力,这样需要高性能的服务器硬件配置,提高了系统研发和部署的费用;另外针对音频数据的具有的高带宽,低延迟的需求而言,集中式服务器的方式难以同时处理大量用户的请求。另外由于现在网络的异构性,不同的网络有不同的传输能力,有的网络可以支持兆比特的网络传输,而一些网络例如ADSL只能有几k比特的数据传输,所以对网络传输码率要求相同的数据很难在不同架构的网络上传输。同时各个公司和其他为了保证内部的保密性和高效性都建立了以个体为单位的局域网( N AT) ,使得局域网内的部分机器不再拥有公网地址,从而使得难以在不同局域网内的机器之间建立TCP/U DP的直接连接,使得信息的交换产生了阻碍。基于上述问题的研究上本文提出了一种基于p2p架构的传输系统,该系统充分利用网络中节点能力为整个拓扑服务,用来传输文字、文件、语音等各种不同类型的数据。系统采用去中心化的P2P通信架构增强了系统的可扩展性和鲁棒性;改进的搜索指向表更新算法降低了维护P2P节点扰动的开销;加入端口猜测的语音通信协议提高了N AT穿透的成功率;使用最大匹配算法分配数据中转节点提高了数据的传输效率。大量的内部模拟测试和实际公网测试表明,所实现的语音通信系统在用户连接建立时间、用户信息搜索时间及语音数据延迟等方面都具有良好的表现。对于将来扩展在视频媒体及其他娱乐等方面的应用,该语音通信系统也具有一定借鉴意义和参考价值。下文将详细介绍了系统的总体架构和试验结果。1.1.背景研究1.1.1.覆盖网络概述点对点通信系统作为一个重要的系统,它涉及到网络组织架构、信道编码、网络传输、安全等多方面的技术。现有的网络拓扑结构主要分为两种,一种是有集中式服务器的架构,另外一种是没有集中式服务器的网络拓扑结构。集中式网络架构网络(如N aster),是有一个中央服务器负责客户端的请求接收和处理并且负责一系列数据索引和定位的网络拓扑。而每个客户端主要功能就是向服务器请求数据,服务器负责将客户端请求的数据传送给客户端。非集中式点对点网络不存在一个集中式的服务器,而是通过搜索的方式将请求发送到系统能够连接到的其他客户端 Si pear:一种基于p2p架构的语音通信系统上。其中每个客户端维护多个相邻的节点信息,并通过特定的协议交互信息。非集中式网络主要可以分为两类:结构化和非结构化。结构化的覆盖网络包括Chord[3],CAN [31],Pastry[32]和Tapestry[33]。这类的网络通过关键值进行注册和搜索所需的数据。非结构化网络覆盖网络( BearShare,Li m eW i re,KaZaa) 和结构化网络不同,它不需要对整个网络结构进行一个管理,而是对整个数据进行完整的搜索。这种结构实现简单,因此成为普遍欢迎的一种结构。同时有大量的关于p2p架构的设计和性能的研究[26-30],在这些研究中不仅提出了一些新的设计架构也有针对性能的研究。常用的非结构化网络协议都是基于scorp—fl oodi ng的机制来定位数据,例如Gnutel l a就是使用了这种方式。这种方式通过将查询信息发送到邻近的节点上去,信息转发有一定的最大数目限制或者跳数限制,不然整个网络的信息会充满这些转发搜寻信息;然后收到查询信息的节点会比较本地信息和搜索信息比较,如果找到匹配就回复查询成功信息,否则将搜索信息转发到邻近的邻居节点。但是这种结构没有任何关于数据和节点的联系,节点也没有任何关于其他节点的传输能力的信息。在这种情况下,范围搜索和数据传输是两个主要关键要素。而在本系统中将采用Chord这种能够稳定且高效服务的覆盖网络;另外在大规模的对等系统中,Chord协议为节点的加入和推出提供了高效稳定的机制。1.1.2.Chord协议概述Chord[ 3] 是麻省理工学院( M IT) 提出的一种基于DH T技术的结构化P2P路由协议,具有完全分布式、负载均衡、可用性及可扩展性好、命名方式灵活等特点。可扩展性在于使用了相容哈希的方式,突破了每个节点需要知道其他所有节点信息的限制,从而做到每个节点仅需要知道少量的路由信息便可以构建整个拓扑网络和资源定位;由于这些路由信息的分散性,节点通过与其通信的节点获得整个拓扑结构,那么每个节点仅需要维护0( 109N ) 个路由信息,从而一次查询也只需要0( 109N ) 次查询。另外由于每个节点维护数目大致相同的信息并且为所维护的信息提供搜索的服务,所以每个节点完成的搜索和信息中转的服务相似,从而使得整个拓扑上的每个节点的负载趋于平衡。另外当新的节点加入或者整个网络的时候,仅需要对0( 1) 个对象重新定位,这样的开销是比较小的因而具有很高的稳定性。4 Si pear:一种基于p2p架构的语音通信系统图1.Chord环结构在具体实现过程中将所有的节点映射到一个整数的集合内,同时将所有的信息映射到这个集合内,Chord环上的每一个节点负责存储一部分信息。其映射的方法采用共同的哈希算法,该算法称为分布式哈希表( DH T) 。这个整数集合被看作一个环形的结构,如图1所示。对于每一个存储在该环型结构上的信息,根据它在环上的位置,按照顺时针方向寻找,找到的第一个包含该信息的节点就是负责它的节点,同时为它提供搜索服务。也就是说每个节点负责函数值落在某一个区间内的信息,每个节点的负载在期望的意义下是平衡的。每个节点保留三种信息:前驱节点,后继节点以及一个路由表。设集合空间的大小为N ,则路由表的大小是l ogN 级别的。路由表中只保存这样的信息:从节点j 出发,顺时针,大于等于j +2‘ i (i =O ,1,2,⋯)的第一个节点的信息。下面将根据节点的行为详细描述节点加入和节点推出的时候需要完成的操作。在查找过程中,希望从某一个节点出发查询某一个信息时,首先算出该信息的哈希函数值,然后根据计算出的哈希值计算出需要查找的节点落在该节点的路由表的哪一个区间之内,然后去请求表中该区间的第一个节点返回进一步的查询工作,当负责该信息的节点返回查询值的时候搜索完成,可见每一次操作至少能够使区间减小一半,查询的时间复杂度为0( 109N ) 。假设已有节点的信息都是完备而正确的,此时插入一个节点,那么需要完成的过程主要分为需要有初始化该节点的信息表、更新其他节点的信息表中受影响的部分、将该节点插入后应当负责的信息由其他节点转到该节点三个过程。在初始化该侣侣侣侣孙加” 住¨侣筋鸵,248=拿敬 Si pear:--种基于p2p架构的语音通信系统节点的信息表这一步使用这样一个优化:根据第i 条记录是否已经大于j +2‘ ( i +1)来判断后一条记录是否可以直接更新,这样可以将时间复杂度降到O ( ( 109N ) ‘ 2) 。采用根据邻居节点的路由表信息做参考的优化方法,可以将时间复杂度降到0( 109N ) 。更新其他节点的信息表中受影响的部分:更新前趋后继都很简单,关键是路由表受影响的部分。插入节点n后,一个节点P的第i 项路由表内容需要改变,必然满足两个条件:一是P在n之前至少2‘ ( i -1) 的位置,二是原表项中的节点位于n之后。首先找到n-2‘ ( i 一1) 的直接前趋,再依次检查它后面的若干节点,它们的第i 项都可能改变成n。当发现一个不需改变的,逆时针的查找即停止。已经能够证明[3],这个算法的期望复杂度是0( ( 109N ) ‘ 2) 的。将该节点插入后应当负责的信息由其他节点转到该节点:实际上这些信息在插入前一定是由该节点的后继节点负责的,那么信息的转移就比较简单。当同时有多个节点加入的过程中,首先寻找加入的节点n的后继节点的工作改成交给一个已经加入的节点m 来做。m 通过寻找n位置的后继的函数来更新n的后继。在仅仅完成了这步工作的时候,网络的路由状态,负载状态都可能处于不正确的状态。每个节点周期性地运行一个检查函数,首先每个节点告知自己的后继节点,它的后继节点是对方。每个节点从所有告知信息中挑出自己正确的前趋节点。举个例子,本来有a,b两个节点,a在前b在后。插入一个C节点在它们之间,C将会把自己的后继标为b。在检查周期的时候,a和C都通知b,b发现自己的前趋应该更新为C。在下一个检查周期,b会告知a现在a的后继应当设为c。在下一个检查周期,a通知c,c确认自己的前趋是a。当一个新节点得知自己的前趋已经正确时,它将会开始询问产生自己的路由表。可以证明,在已有N 个节点的情况下,同时加入N 个节点,上述算法的时间复杂度是不超过0( ( 109N ) ‘ 2) 的。值得注意的问题是在上述算法执行过程中,会出现路由信息不正确的现象,此时上层程序将会找不到查找的信息,只需要重新查询,因为执行一次检查周期的时间是很短的。会不会出现一些路由状态,它们的信息是错误的,而且无法通过检查周期更新为正确的?可以证明在上述算法过程中这种状态是不可能存在的,但是网络故障,传输故障等原因有可能导致系统进入这样的状态。因此系统需要定期自检,排除这种故障。最后是节点离线过程。为了解决离线的问题,首先要对前面的协议作一点改进,每个节点要保存最近的r个后继节点,而不是先前的只保存一个后继。每次周期检查时,离线的节点将被发现,相关信息获得更正。可以证明,如果在一次周期检查之前,共有一半的节点发生离线,在高概率之下,系统恢复的时间复杂度是0(109N )。6 Si pear:--种基于p2p架构的语音通信系统1.1.3.N AT类型概述另外在现代的网络中,网络地址转换( N AT) 被广泛应用于各种类型的Internet接入方式和各种类型的网络中。因为N AT不仅完美的解决了IP地址不足的问题,而且能够有效的避免来自网络外部的攻击,隐藏并且保护网络内部的计算级。在N AT的实现上虽然可以借助于代理服务器,但是考虑到运算成本和网络性能,大部分都是在路由器上实现的,同时通过设置防火墙保证内部的信息安全。现在存在的N AT通常有四种主要类型:传统N AT,两次N AT,双向N AT和多宿主N AT。1.传统N AT允许位于内部网络的主机透明的向外部主机发起连接请求,同时有限制的允许外部网络到内部网络的访问,这种访问需要事先映射好内部主机的静态地址。外部网络中主机的IP地址在外部网络以及内部网络是唯一有效的,但是内部网络主机的IP地址只有在网络中才是唯一的,在外部网络中不一定有效。所以N AT不会向外部域通告内部的网络地址,但是有可能向内部网络主机通告外部的网络地址。传统N at主要包括Basi c N AT和N APT两种类型。Basi c N AT是将一个内在的私有IP地址映射到一个公网IP地址,但当数据包穿过N AT时,不更换其端口号。N AT拥有多个公开IP地址,当位于内部网络的主机向外部主机发起会话请求时,把内部地址翻译成全球惟一的公开IP地址。对于从内部网络中外出的IP包,翻译源IP地址以及相关的字段,如IP/TCP/U DP/ICM P头校验和。对于进入内部网络的IP包,翻译目的IP地址以及与上面所罗列的相关字段。如果内部网络中主机的数目不大于N AT所拥有的公开IP地址的数目,则可以保证每个内部地址都可以映射到一个公开的IP地址,否则允许同时连接到外部网络的内部主机的数目会受到N AT公开IP地址数量的限制。可以使用静态映射的方式,把特定内部主机映射为一个特定的全球惟一的地址,保证了外部对内部主机的访问。一个内部主机可以利用相同的地址映射同时发起多个会话。Basi c N at通常是只用在一些具备公共IP地址池的N AT上。N etw ork Address/Port Transl ator( N APT) 是将一个内在的私有IP地址映射到一个公网IP地址,并且检查、修改它的端口号,从而允许多台内网主机同时共享一个单独的公网IP地址。当一个内网的主机经过一个N AT和外部进行连接时,N APT通过建立一个IP/端口绑定来为该连接分配一个公网IP住址和端口,以便来自外部终端响应的数据包能被N APT接收并转发给内网的主机,在绑定期间,N APT将为绑定的端口执行地址翻译。根据不同的绑定方式,N APT又可以分为以下两种Sym m etri c N AT和Cone N AT。前者为每一个新的对话建立新的绑定,即使这个对法的发起者是同一个内网主机;后者会重复使用已经建立的绑定,只要该绑定还有一7 Si pear:--种基于p2p架构的语音通信系统个对话处于活动状态,就会一直处于激活状态。根据接收数据方面的限制,这种类型的N AT可以进一步分为四类:Ful lCone N AT:端口绑定建立后,内网主机可以马上通过这个公共端口从公网上的任何外部端点接收数据通讯。Address- Restri cted Cone N AT:当N AT端口绑定后,内网主机只能接收到那些曾经发送过请求的外部IP地址发送来的数据。Port—Restri cted Cone N AT:端口绑定后内网主机只能接受到曾经发送过请求的外部IP地址和端口发送来的数据。Sym m etri c N AT:N AT会将客户机地址转换成公网地址并绑定连接中地址端口对,同时N AT只接受来自绑定中地址端口对中对方发送过来数据;每次客户机请求一个不同的公网地址和端口,N AT会新分配一个端口号。Port—Restri cted coneN AT和Sym m etri c N AT一样可以保护内部的节点不接受违背请求的数据包,但是会保持一个私有的短空在整个连接过程中不变。2.双向N AT( Bi —di recti onaIN AT,Tw o—W ayN AT) ,当使用双向N AT( Bi -di recti onaIN AT或Tw o-W ayN AT) 时,可以从内部网络向外部网络发起会话请求,也可以从外部网络向内部网络发起会话请求。当在外出或进入任何一个方向上建立连接时,把内部网络地址静态或动态绑定到全局惟一的地址上。这里假设位于内部网络和外部网络之间的名字空间( FQ DN ,Ful l y Q ual i fi ed D om ai n N am es) 是端到端惟一的,因为只有这样才能够使得位于外部编址域的主机利用域名系统( DN S) 访问内部网络的主机。在双向N AT上必须部署DN S-ALG ( DN S应用层网关,DN S-Appl i cati onGatew ay) ,以处理名字到地址的映射。当一个DN S包需要穿越内部和外部编Level址域时,DN S-ALG必须能够将DN S查询和响应消息中的内部地址翻译成外部地址,或把外部地址翻译成内部地址。3.两次N AT(Tw i ce N AT) ,两次N AT是N AT的一个变种,它同时修改源和目的地址。这与前面的传统N AT和双向N AT( Bi di recti onal ) 都不同,前面的两种N AT只翻译源或者目的地址( 端口) 。两次N AT在内部编址域和外部编址域存在冲突时非常有用。典型例子之一是当一个站点( 不恰当地) 使用已分配给其它机构的公开IP地址对其内部主机进行编址时;例子之二是当一个站点从一家运营商换到另外一家运营商,同时希望( 在内部) 保留前一家运营商分配的地址时( 而前一家运营商可能会在一段时间后将这些地址重新分配给其他人使用) 。在这些情况下,非常关键的一点就是外部网络的主机可能会分配得到以前已分配给内部主机的同一地址。如果该地址碰巧出现在某个包中,则应该将它转发给内部主机,而不是通过N AT转发给外部编址 Si pear:一种基于p2p架构的语音通信系统域。两次N AT通过同时翻译IP包的源和目的地址,试图桥接这些编址域,解决了地址冲突的问题。4.多宿主N AT( M ul ti hom ed N AT) 。使用N AT会带来很多问题( RFC2993) 。比如,N AT设备要为经过它的会话维护状态信息,而一个会话的请求和响应必须通过同一N AT设备做路由,因此通常要求允许N AT末梢域边界路由器必须是惟一的,所有的IP包要么发起,要么终结在该域。但这种配置将N AT设备变成了可能的单点故障点。为了让一个内部网络能够在某个N AT链路故障的情况下,也可以保持与外部网络的连通性,通常希望内部网络到相同或不同的ISP具有多条连接( 多宿主的) ,希望经过相同或不同的N AT设备。又如多个N AT设备或多条链路使用同一N AT,共享相同的N AT配置能够为相互之间提供故障备份。在这种情况下,有必要让备份N AT设备交换状态信息,以便当主N AT出现故障时,备份N AT能够担负起透明地保持会话的能力。可以看出N AT属于网络层功能,其操作只涉及IP报头。从内网向外网发送数据报时,N AT修改IP报的源地址;从外网向内网发送数据报时,N AT修改IP报的目的地址。虽然说,看起来N AT做到了对于用户透明的内外地址翻译,用户的应用程序是不需要做任何改动,但在实际通信应用中可能会遇到很多复杂的情况。在媒体应用中,主要可能存在两个方面的问题:其一某些应用的IP包的内容中包含通信方的IP地址或端口号。在这种情形下,尽管N AT己经将IP包头中的地址更改了,但并未修改内容中的地址,于是造成通信失败;其二某些应用的通信过程中同时含有控制和数据两类会话,数据会话的地址包含在控制会话的内容中。而N AT并不清楚两者的关系,在翻译控制会话地址的时候,不可能也不知道如何同步翻译数据会话的地址,因此当数据会话的地址为私有地址时会导致通信失败。由于网络地址转换这种设计使得数据在网络传输的过程中发生了困难,使得在不同N AT内的客户端不能通过TCP和U DP进行直接连接。同时可以发现N AT穿越的关键在于,如何保证在IP报内容中的IP地址和端口是正确的,从而实现通信。在媒体通信系统中需要引入新的设计和功能完成位于不同N AT内的客户端之间完成链路的连接和数据的传输,现在已经有不少研究和解决方案[ 4-16] 已经被应用到解决如何穿透N AT的问题,例如:ALG S( Appl i cati on Layer Gatew ays),M i ddl eBoxControlProtocol ,STU N Si m pl e Traversalof U DP,TU RN ( Traversalusi ng Rel ayN at) ,RSIP( Real m Speci f i c IP) ,Sym m etri c RTP等。这些技术应用于不同的网络9 Si pear:--种基于p2p架构的语音通信系统拓扑时都有着显著的利弊。所以需要一种比较灵活的并且比较高效的方式对N AT进行穿透,而在本系统中将采用STU N 这一技术来实现N AT的穿透。1.1.4.问题提出虽然基于p2p的语音通信系统的研究有了很大的发展,并且已经存在很多的语音通信系统.目前比较典型的即时语音通信系统有M SN 、Q Q 和Skype等,然而现有的这些系统都有不同的特性和优缺点。微软公司发布的M SN 是集中式的典型代表。经过大量的测试可知,M SN 所有消息和文件的传输都需要中央服务器的中转,没有实现P2P的架构。这种机制虽然确保了用户信息的可靠到达,但是是以牺牲传输的及时性和服务器的可扩展性为代价的。对实时性要求较高和用户数目较大的语音通信应用来说,可能会出现连接中断和语音断续的情况,一定程度上影响了通信质量。腾讯公司的Q Q 软件虽然基于P2P的架构,但是其语音质量与传统电话相比还存在较大差距。后来居上的Skype以P2P的方式进行通信,而且在可用性和语音质量方面都比较出色。但是它作为商业项目,目前大部分研究[ 18-23] 都基于猜测和实验模拟,对其主要架构的组网和搜索路由等细节都没有明确的结论。这种保密性使得研究人员无法在其架构上扩展各种应用,从而不能构架一种资源共享的载体。1.2.解决方案.本文提出一种自组织化p2p语音通信系统的架构,该系统由服务器,超级节点和客户端组成。服务器负责完成用户的注册登录功能和分配超级节点的功能,验证注册时保证用户ID的唯一性和用户登录时验证用户身份同时保证同一用户名的用户在线的唯一性;另外为了保证登录信息的一致性和提供语音通信系统的计时服务;服务器和客户端通过一定的协议完成数据上载功能保存用户好友信息列表和用户每一次会话基本信息的记录。所有的超级节点构成Chord环结构,负责搜索功能和数据转发功能,并且在超级节点上启动完成N AT穿越服务器来完成在数据传输中防火墙和N AT的穿越。所有的超级节点构成自动组织整个覆盖网络,该节点上的每个节点作为中继节点为其他用户提供数据查询和数据中转的服务。同时系统中采用动态衡量不同节点间的网络传输能力的方法为不同节点的传输寻求最高效的传输路径。另外为在不同网络中的不同客户端的数据传输使用STU N [ 4] 进行路由的穿透使得直连成为可能。另外提出了客户端架构模型,提出了一个包括用户管理,会话管理,网络传输管理和应用管理的架构,系统模块化提高了客户端的可扩展性,也增加了系统的柔韧性。与现有语音通信系统相比,该系统具有以下优点:去中心化的P2P通信架构增强了系统的可扩展性和鲁棒性;改进的搜索指向表更新算法降低了维护P2P节点10 Si pear:--种基于p2p架构的语音通信系统扰动的开销:加入端口猜测的语音通信协议提高了N AT穿透的成功率;使用最大匹配算法分配数据中转节点提高了数据的传输效率。大量的内部模拟测试和实际公网测试表明,所实现的语音通信系统在用户连接建立时间、用户信息搜索时间及语音数据延迟等方面都具有良好的表现。对于将来扩展在视频媒体及其他娱乐等方面的应用,该语音通信系统也具有一定借鉴意义和参考价值。本文的结构主要如下,第一节为引言部分,第二节介绍系统的性能指标,第三节描述系统的架构并且详细描述系统的内部结构,第四章对系统进行评定和测试,最后一节进行总结和对该系统的展望。 Si pear:--种基于p2p架构的语音通信系统。第二章.性能指标设计前期针对现在关于点对点通信的研究成果以及业界已存在的各种通信模型和业界对点对点通信的评判要求的分析上将系统需要达到的性能指标分为可扩展性,路由选择的柔韧性,路由穿透的高效性,语音质量的标准等方面进行评估,对该系统需要达成的性能指标详细规定如下:可扩展性:系统在实现基本功能的前提下保证可以对已经存在的系统功能进行扩展,同时提供可靠性接口完成新应用的添加;同时需要支持用户自定义多个用户接口。另外在实际的运行过程中,用户的增加不会导致系统的效率和可靠性降低。路由选择:在用户之间的链路可能有多条,并且各自的传输能力不同。所以需要在多个数据链路建立的过程中,需要选择转发的节点保证数据转发的可靠性,同时保证数据转发的路由尽可能少。在通过Chord网络定位到被叫节点后,如果双方的直接路由不能令人满意( 用户满意的标准遵循M O S) ,采用中转节点转发的形式实现应用层( 即在覆盖网层面) 的手动路由。鉴于多跳路由( 即采用多个中间节点接力转发) 的不稳定性,原则上仅使用一跳路由。路由算法的关键是中转节点的选择算法。一般M O S得分在3.6以下视为不能满足用户的通话质量。就网络层对M O S的影响来说主要在Im 时间和丢包率两个方面。参照ITU标准,本系统采用的R1丌上限为150毫秒,以150毫秒作为路由是否满足要求的分界。路由穿透比率:为了保证位于各种不同的局域网路由器构成内网内的客户端之间可以进行直接进行TCP或U DP的连接,需要完成路由器的穿透功能,所以路由器的穿透成功率是整个覆盖网络能够完成点对点通信的一个基础网络层功能。同时直接点对点通信可以减少超级节点的传输压力,使得网路可以支持大量的用户操作。路由器的穿透比率要求能够完成现在市场上存在的各种不同厂商的不用型号的路由器的穿透功能,保证客户端之间的传输尽可能的高效。语音质量:语音质量包括延时,回音,噪音,语音压缩,丢包等因素。其中延时指m 包从网络入口点到达网络出口点所需要的传输时间。如果在一个呼叫中包含不同的通路时间,则存在抖动,抖动越大则语音质量下降的越明显。在E模型中采用固定缓冲区的方法,可以使抖动的影响转化为延时;回音是由语音网络中的电气反射引起的,延时超过16 m s的回声对说话人会有影响。噪声是影响语音质量的一个关键因素,主要分为发送端背景噪声Ps和接收端背景噪声Pr。语音压缩,在语音处理中语音编码有很多种方式,每一种都有不同的特点。低速的编码方式占用较少的带宽,但是低速编码使用有损的压缩算法,削弱了语音质量。丢包是影响语音质量的又一个关键因素。数据包发送端和接收端之间的数据包数目的差值即为网络传12 Si pear:一种基于p2p架构的语音通信系统输丢失包数目。当少量的丢包且是随机地分布时,人耳并不容易感觉到较差的语音质量,当丢包数量变大时,语音质量也就相应的变差。协议安全:由于现在的网络中存在有意识和无意识的攻击者,前者的攻击在于有意识的进行尝试攻击满足个人的利益需求;后者也是信息安全中的受害者,他们被病毒或者其他黑客所控制成为所谓的傀儡机器对其他客户进行攻击。所以要求整个系统中的交互协议具有很高的安全行和柔韧性,保证消息的安全性,保证用户与服务器之间的协议,超级节点之间的协议,客户端与服务其之间的协议以及客户端之间的协议具有安全性,不能因为其中某个交互信息的错误导致系统的紊乱同时当发现有客户端由于收到攻击发生异常从而接受到不合法的消息时,系统要具有很高的恢复能力,保证系统的稳定性。其他评测因素系统建立后要求具有稳定性和可靠性,系统中的服务器要求能够常驻在系统内部,不能因为系统其他部分的原因导致系统异常。 Si pear:--种基于p2p架构的语音通信系统第三章系统架构3.1系统总体架构本系统由服务器、超级节点和客户端三部分组成,如图2所示。服务器对用户进行认证在线唯一性检验后,为客户端分配相应的超级节点;超级节点作为中继节点,为客户端提供用户信息查询和语音数据中转,超级节点中一部分由系统实施时部署,一部分由有能力的客户端充当;客户端集成各种应用,完成文本、语音等各种基本数据的传输。在服务器的设计方面,本文将消耗资源的数据中转任务从服务器转移到超级节点,增强了系统的可扩展性;服务器根据客户端的IP地址,按最长匹配算法为客户端分配其就近的超级节点,减小了语音数据的传输延迟。在超级节点的设计方面,系统使用结构化的Chord[ 3] 环状拓扑,确保了用户信息搜索的准确性和完备性;本文还针对P2P网络的扰动特性改进了Chord环的搜索过程,减小了维护Chord结构的开销。在客户端的设计方面,客户端与超级节点间实现改进的STU N [ 4] N AT穿透方式,使得在不同内网间的用户通信成为可能;模块化的客户端架构模型可方便地进一步扩展为不同类型的应用。超级节点图2.系统架构图服务器负责客户端的初始接入处理,并调度客户端使得客户端连接到相应的超级节点,以及和数据库的交互工作。具体来说服务器完成用户的登陆注册,保证用户工D的唯一性,同时提供给客户端多个可以连接的超级节点,并且提供用户好友的上载以及每一次通话的记录等功能。当用户登陆时,首先根据用户记录的信息查找用户的状态,如果用户信息记录的状态为已经登陆,那么通知上次登陆的用户此账号在其他地方登陆,然后迫使其下线。当用户身份验证完成后,服务器负责为客户14 Si pear:--种基于p2p架构的语音通信系统端选择该节点相应的超级节点,选择超级节点的算法根据用户的IP信息在超级节点的列表中搜索一个IP最为相似的超级节点作为信息中转点。然后客户端向选择的超级节点发送注册信息,完成登陆过程。系统设计中采用2层的P2P拓扑结构,把一些能力强( 处理能力,网络性能,实IP) 的节点选举为超级节点,其他作为普通节点。普通节点绑定到某个超节点形成一个簇,簇的形成以在是否同一个AS为准。超级节点之间的连接按照上面提到的AS层次关系来部署,普通节点通过超级节点来发起加入退出和搜索等各种通讯请求。而实际的内容转发路径参考AS的层次关系来选取最优的路径。在这些限定的基础上系统采用DH T算法来组织P2P网络,DH T是一种结构化的P2P网络,它的资源和资源索引的放置都是有组织的,可以保证在一定跳数内定位到资源。系统中采用的具体DH T算法定为Chord。系统P2P组网和搜索算法以Chord( DH T算法的一种) 为主体,添加超级节点的概念以克服低效节点的瓶颈,提高搜索的效率。虽然通过引入超级节点( SN ) 和改进fi nger tabl e更新策略能在一定程度上克服当前的结构化对等网络普遍存在高延迟低效率的毛病。在进行了相关探索之后系统采用了改进hash表值的延迟扩散的方式进行组网和管理节点,另外下文将给出在实际公网环境下检验效果。客户端的交互分为客户端与服务器的交互,包括用户合法性和在线唯一性确认,获取超级节点和初始交互密钥;客户端与超级节点之间的交互,包括自身超级节点资格的判定,用户信息注册,用户信息的搜索和数据的转发;客户端之间的交互,包括会话建立,会话管理,链路的建立与维护,数据的传输,N AT穿透等。15 Si pear:一种基于p2p架构的语音通信系统是图3.系统通信流程图整个系统在启动过程中,预先部署服务器和一定数目的超级节点,这是系统的初始化部署。当第一个客户端加入整个拓扑网络时,它会向服务器完成上述的注册信息;另外会和系统初始化过程中部署的超级节点进行通信。当以后的节点再次加入这个覆盖网络时,该客户端可能连接到的是其他具有超级节点功能的客户端,从而整个系统提供服务的能力随着节点的加入而扩大。在客户端连接到整个网络的类型主要分为两类:一类是客户端连接到覆盖层网络经过判断成为超级节点的过程;另外一类是客户端连接到整个覆盖网络因为节点能力不足只是作为普通节点连接到整个网络。客户端与服务器及超级节点的交互过程如图3,详细流程如下:1) 系统初始化。服务器和系统部署的超级节点初始化,等待连接请求。在初始化阶段部署一定数目的超级节点的目的主要用来搭建初始的Chord环。16 Si pear:--种基于p2p架构的语音通信系统2) 用户合法性认证。当客户端启动时,向服务器发送认证消息,服务器进行用户合法性判定。如果认证失败,返回错误代码,停止后续的服务;如果认证通过服务器则执行步骤( 3) 。3) 用户在线唯一性确认。服务器判断用户登录信息的状态:如果服务器维护的用户状态为已经登录,那么通知已经登录的用户此账号要在其他地方登录,然后迫使其下线,从而保证用户在线的唯一性;如果用户状态为未登录,则返回用户注册的基本信息,户信息包括:用户名,性别,年龄,电子邮件,住址,头像信息等,同时也返回该用户与其它用户进行通话的初始密钥,该密钥由通信双方的用户信息构成。4) 客户端检测用户列表信息,用户获得基本的信息后,检测用户本地用户列表信息是否是最新的。如果用户在本地是第一次登录,那么请求服务器发送完备的用户好友信息列表;如果用户本地存有列表,比较本地上次更新时间和服务器信息列表更新的时间。如果本地信息的时间较新,说明上次用户没有更新到服务器上,那么使用本地用户列表进行初始化;如果一致,同样使用本地用户列表进行初始化;如果服务器上用户列表比较新,那么请求服务器发送最新的用户列表。5) 服务器提供超级节点列表。服务器根据客户端的口信息,采用最长匹配算法,在所维护的所有超级节点中搜索一定数目的节点,按口相似度递减排列,提供给客户端作中转节点。考虑到已经作为超级节点的客户端可能会突然从网络上断开,导致真实存在的超级节点信息与服务器维护的信息不同步,所以在提供给客户端的超级节点列表中,至少要有一个节点是属于系统部署而非其它客户端充当的,以保证新加入的客户端能够与服务器所提供的超级节点建立可靠连接。6) 客户端选择一个可以建立通信连接的超级节点。客户端收到超级节点列表后,按IP相似度递减的顺序选择其中一个可以建立通信连接的节点,作为自己备用首选的超级节点。已确认无法通信的超级节点在本地删除,其余未验证的超级节点信息仍在客户端本地保存,供备用首选超级节点失效时启用。7) 客户端判定自己能否成为超级节点。客户端通过备用首选的超级节点,与Chord环上其它超级节点交互,判定自身是否具有足够能力成为超级节点,判断细节将在2.2节给出。8) 客户端在所属超级节点上的注册用户基本信息及超级节点信息在服务器上的更新,其中注册信息主要包括用户名,电子邮件,地址,性别,用户登陆的内网地址等,同时超级节点通过客户端的连接获取客户端登陆的公网地址。超级节点同时保存这些信息供其他客户端查询。如果客户端不能成为超级节点,就将备用首选的超级节点作为自己所属的超级节点,并向其注册。如果客户端可以成为超级节点,那么该客户端要完成三件事情:①向自己注册;②更新记录所有超级节点信息的17 Si pear:一种基于p2p架构的语音通信系统Chord环;③向服务器发送消息,表明自己作为超级节点加入系统。此时,该客户端节点与其他超级节点一样成为Chord环中的一个超级节点,拥有相应的用户信息搜索和向其他客户端提供数据转发的能力。9) 客户端成功进行用户注册后,为了确保系统可以接受更多的用户请求,在客户端完成用户好友信息的更新后,服务器就主动中断与客户端的连接。10) 客户端完成好友信息的更新后,开始对好友列表中的每个好友进行搜索。该搜索主要获得好友的基本信息,用户的登陆地址和通信使用的端口,以及用户是否在线的信息。通过获得好友的地址如果用户在线那么尝试U DP直接连接,如果不能建立U DP直接连接,那么使用N AT穿透的方式进行连接,如果N AT穿透失败那么使用超级节点建立中转链路。11) 如果客户端和其它用户有通信请求,则使用已经建立的数据连接。如果是语音通信请求,客户端还需要再次建立与服务器的连接,语音通信结束后再断开与服务器的连接,以记录每次通话的持续时间,为语音通信计费模块提供接口。建立所有数据连接时,如果不能直接建立,就尝试使用N AT穿透的方式,如果仍然失败,就使用超级节点进行数据的中转:数据链路建立完成之后,用户之间开始启动会话,就可以进行文字、文件和语音等多种类型的数据通信。12) 在用户进行文字通信和语音通信的过程中,用户可以主动添加新的用户进入会话,但是只有会话的发起者才能将用户移除会话。13) 客户端退出系统时,也要与服务器建立连接,将用户的状态修改为离线。如果客户端以前是超级节点,还要通知服务器将自己从超级节点的列表中删除,同时将自己维护的信息备份到相邻的超级节点上。另外客户端将本地好友信息的更新以及用户之间的通信信息更新到服务器上,同时将本次连接到的超级节点保存在本地供客户端下次登录使用。18 Si pear:一种基于p2p架构的语音通信系统3.2.服务器端架构服务器端负责客户端的初始接入处理,并调度客户端使得客户端连接到相应的超级节点,以及保存用户信息和好友信息以及完成数据库的交互工作。具体来说服务器完成用户的登陆注册,保证用户ID的唯一性,同时提供给客户端多个可以连接的超级节点,并且提供用户好友的上载以及每一次通话的记录等功能。当用户登陆时,首先根据用户的信息查找用户的状态,如果用户信息在数据库中保存的状态为已经登陆,那么通知上次登陆的用户此账号在其他地方登陆,然后迫使其下线。当用户身份验证完成后,服务器负责为客户端选择该节点相应的超级节点,选择超级节点的算法根据用户的口信息在超级节点的列表中搜索一个IP最为相似的超级节点作为信息中转点。然后客户端向选择的超级节点发送注册信息,完成登陆过程。综上所述服务器端模块具体分为连接处理、消息处理、超级节点调度、用户事务管理、数据库接入五个模块。,r” n77”、用户管理消息各份事务处理—————◆数据操作\/图4.服务器端模块·连接处理。处理来自客户端以及超级节点的连接、断开请求,并且接受来自已建立连接的各种消息,以供消息处理模块处理。· 消息处理。处理来自客户端以及超级节点的消息,并且完成相应的各种处理操作。既是服务器与客户端之间的协议,服务器与超级节点之间的各种协议。· 超级节点管理。完成超级节点列表的维护工作,建立超级节点搜索拓扑图,并且为客户端完成分配超级节点。· 用户事务管理:用户事务管理主要包括用户注册、登录认证、好友信息以及通话信息备份等时候操作,同时保存用户离线消息。· 数据库接入。数据库的接入口,方便其他模块操作数据库。19 Si pear:一种基于p2p架构的语音通信系统3.2.1连接处理连接处理模块完成客户端及超级节点的连接、断开请求,接收消息以供消息处理模块处理。此模块与消息处理模块使用多线程处理用户连接请求和数据处理过程。其中前者使用一个线程用来完成客户端的连接请求,同时将在这一时刻的其他用户连接暂时存放在一个缓冲区内,当一个客户端的连接请求处理完成后,从缓冲区取得其他连接的请求进行相应的建立连接的处理;后者使用另外一个线程处理已连接的用户数据的操作,完成交互协议。3.2.2超级节点管理以及拓扑维护和分配服务器端使用超级节点管理模块维护Chord环上的超级节点信息,当用户认证成功后,服务器在自身维护的超级节点列表中完成分配超级节点的调度过程。该调度过程主要目的是选择分配超级节点的使得客户端和超级节点之间的连接有较好的传输性能。为了保证可以获得很好的分配结果,通过相关的研究[ 24] 系统采用最近分配的方式。首先根据网络的架构构建一颗搜索树,根节点是逻辑上的集合,包括所有的运营商的集合以及他们的IP信息的总汇。下层按照不同的运营商作为第二个等级,第三个层次是不同运营商按照区域分配,下层的节点是按照不同的局域网组合起来。详细的部署是根结点包含所有的Internet的多层自治域( AS) 结构和其IP的分布范围,同时对第一层自治域中的每个AS建立其包含的所有第二层子域的拓扑子树,详细信息包含其所在域内的所有第二层的自治域的信息和其IP的分布范围。同理依次往下分布,建立超级节点的搜索拓扑树结构。在具体的实现过程中系统将所有拓扑信息放到源节点统一处理,将每层AS的信息转化为运营商的部署,在这种结构中按照网络的各个运营商( ISP) 来划分各个节点所属的集合。.显然不同的集合中有多个用户节点。搜索相应的超级节点作为中转节点的算法根据IP相似度进行判定,沿用路由算法的最长匹配原则得到最为相似的节点。该算法可以部分满足局域负责制的好处,使得大部分节点的转发节点位于较近的位置,从而减少路由数,提高了数据传输的效率。 Si pear:--种基于p2p架构的语音通信系统图5.超级节点搜索树结构下面描述服务器为客户端提供若干个超级节点的工作过程。1) 系统初始化,服务器根据Internet的多层自治域( AS) 结构构建一棵搜索树[ 14] 。搜索树的根结点为第0层,其下包含所有第一层自治域的信息及其IP的分布范围,其中每个第一层AS对应着搜索树第一层的一个节点,每个第一层节点又包含其所在域内的所有第二层AS的信息及其IP的分布范围,每个第二层AS也位于搜索树的第二层。如此继续,按照上述方式依次建立与AS结构相对应的搜索树结构。2) 超级节点加入搜索树。将系统部署的超级节点加入到搜索树中,加入位置在所属AS的下一层。当服务器收到客户端的通知,它可以作为超级节点时,也按照上述办法加入搜索树,最终形成的搜索树结构如图5所示。3) 服务器搜索多个超级节点。假设服务器要返回的超级节点数为M 个,其中系统部署的超级节点要至少为N 个( M ≥N ) 。先在搜索树中搜索具有系统部署属性的N 个超级节点,记录...

关注我们

关注微信公众号

您选择了以下内容