论文部分内容阅读
摘要:移动自组织网络(MANET)是当今网络通信领域的研究热点,但之前的研究多集中在MANET的物理层、媒体访问控制(MAC)、路由等方面,对在MANET中提供多媒体通信服务的研究较少。为了利用MANET提供高质量的多媒体通信服务,需要将现有通信架构进行改造,使之适合MANET环境。因此需要利用会话发起协议(SIP)在MANET中构建一个应用层对等网络(P2P),实现多媒体通信。文章提出了一个新的基于MANET的P2P组网模型——MAP,并在MAP的基础上,提出了基于MAP的SIP组网架构——MASIP。MASIP可以兼容现有的SIP设施,可以同时提供传统SIP和MASIP的P2P服务,充分考虑了MANET的自身特点,避免了直接采用SIP或其他P2P架构的缺陷,可以提供灵活、随时随地的通信服务。
关键词:移动自组织网络;会话发起协议;对等网
Abstract: Mobile Ad Hoc Network (MANET) is currently a hot topic in the field of network communications. However, the previous MANET research focuses on the physical layer, Media Access Control (MAC) and routing, and concerns little about delivering multimedia communications services. It is necessary to change the existing communications architecture for offering high-quality multimedia communication services by MANET. Therefore, the Session Initiation Protocol (SIP) is used for building an application-layer Peer-to-Peer (P2P) network in MANET to fulfill multimedia communications. This article proposes a new MANET-based P2P networking model MAP, and a MAP-based SIP networking architecture MASIP. MASIP can be compatible with existing SIP facilities, and offer both traditional SIP and MASIP P2P services. Moreover, it takes MANET’s own features into full consideration, and avoids the defects caused by direct use of SIP or other P2P architecture. Therefore, MASIP can provide flexible communications services at any time and anywhere.
Key words: MANET; SIP; P2P
移动自组织网络(MANET)[1-2]是当前网络通信界研究的一个热点,其主要目的是通过一组带有无线收发装置的移动节点组成一个临时性的、无网络基础设施的小型移动网络,该网络具有动态拓扑结构,具有临时性、多跳路由等特征,非常适合于在战场、紧急救援等需要临时组网的情况下建立快速、高效的通信网络。MANET示意图如图1所示。但在以往的MANET相关研究中,主要针对的是MANET本身,至于如何利用MANET提供的弹性架构为用户提供灵活、可扩展、高鲁棒性的通信服务,相关研究较少。而在当前热门的通信协议中,会话发起协议(SIP)[3]是最受关注的一个,因为SIP继承了Internet中的协议,如超文本传输协议(HTTP)、简单邮件传输协议(SMTP),简洁、高效、可扩展等优点,被认为是最有前途的信令协议。因此,考虑利用SIP在MANET中提供高质量的多媒体通信服务,具有较高的研究价值和实际意义。另外,由于MANET与对等网络(P2P)存在着相当多的相似之处,在MANET中利用P2P的研究成果也是一个很好的研究方向。
1 基于MANET的P2P组网模型
本文提出一种新的基于MANET的P2P组网模型——MAP,该模型充分考虑了MANET的特点,路由算法简单,没有路由绕路问题,适合MANET环境下的P2P应用层组网。
1.1 MAP的设计思想
MANET相对于P2P网络具有网络规模小、节点能力(CPU、存储器、电量等)受限、物理拓扑动态性强等特点,因此应用在MANET上的P2P组网模型必须充分考虑MANET的特征,否则将严重限制MANET优势的发挥。
P2P网络有4种不同的拓扑结构:中心化拓扑、半分布式拓扑、全分布式结构化拓扑、全分布式非结构化拓扑。下面来看一下哪种P2P网络拓扑适合布置在MANET环境中。中心化拓扑需要在网络中布置中央索引服务器,而MANET一般用于快速临时组网,基本上不可能布置中央索引服务器,因此中心化拓扑不适合基于MANET的P2P组网架构。半分布式拓扑在基于Internet的IP语音(VoIP)服务中有非常出色的表现,但在MANET环境中,各个节点能力有限,如果某个节点被选为超级节点,必将造成该节点电量的迅速耗尽,同时各个节点由于随机移动,网络拓扑在不断变化,无法保证每个节点与超级节点的连接有效性,因此这种拓扑结构也不是很适合MANET环境中的P2P组网。全分布式结构化拓扑是当今在P2P领域最受关注、研究最多的一种拓扑形式,但这种拓扑结构在大规模组网时才能体现其结构化、可扩展的优势,而MANET是一个临时组建的小规模无线网络,因此这种拓扑结构也不是很适合基于MANET的P2P组网。最后只有全分布式非结构化拓扑,这种拓扑与MANET有着更多的相似性,而且维护代价小、资源发现算法简单,更适合MANET的需求。所以MAP模型采用全分布式非结构化拓扑作为其组网的基本模型。
但以Gnutella系统为代表的全分布式非结构化拓扑由于采用泛洪机制进行资源查询,在MANET中应用有其固有缺陷:一是泛洪机制会占用大量带宽,而MANET基于移动无线网络,带宽本来就非常有限;二是泛洪机制会消耗移动设备的计算能力,因为每个移动设备都被迫处理所有接收到的请求。
针对全分布式非结构化拓扑在资源定位方面的不足,为了减少泛洪机制造成的额外网络开销,MAP采用了一种基于泛洪机制的优化算法:动态N跳索引与基于流言的泛洪机制(DIG)。DIG可以看作是两种机制:动态N跳索引机制(DNI)和基于流言的泛洪机制(GF)的结合。
1.2 动态N 跳索引机制
泛洪算法的机制是当节点需要查询某个资源的时候,通过向全网广播查询信息获得所需资源的路径,为了减少泛洪造成的网络资源的消耗,让每个节点维护一张资源索引表,这样通过本地查询就可以完成部分资源查询工作,大大地减少了泛洪造成的额外开销,但如果网络动态性高、拓扑结构变化迅速,所维护的索引表有可能提供错误的信息,反倒造成更多查询开销。因此,DNI的设计思想就是让P2P网内的每个节点维护一张N跳邻居节点的资源索引表,并允许每个节点根据周围环境的动态性实时调整索引表的半径。当周围环境动态性高,资源位置变化剧烈时,缩小半径,提高本地索引信息的准确性;当周围环境动态性低,资源位置变化不剧烈时,扩大半径,增加每个节点的索引信息。动态N 跳索引与基于流的泛洪机制如图2所示。图中A为示例节点,当网络动态性高时,节点A的索引范围如内圆所示,当网络动态性比较低时,节点A的索引范围如外圆所示。
通过计算,可以得到,当待查询的资源在索引范围内且索引正确时,DNI相对于泛洪算法的性能改善为:
节省查询时间=RTF-RTDNI=L×t-t=(L-1)t
其中,L为被请求的资源距离请求节点的跳数,t为每个节点搜索本地索引表的平均耗费时间,H为泛洪报文的生存时间(TTL)值,T 为网络传输时延,M为每个节点平均拥有的邻居节点个数。
但是,只有当节点保存的资源索引表有效并且请求的资源在索引表范围内,才可以有效的减少泛洪造成的额外开销。那当索引的资源无效或者请求的资源在索引表范围之外,怎么办?对此要采取两种措施,一是动态调整索引半径,二是通过泛洪算法进一步查找所需资源。
先来讨论怎样动态调整索引半径,然后再介绍DIG所使用的优化的泛洪机制GF。
DNI通过计算索引失效率决定是否调整索引半径,现在分析一下具体的调整标准。
当索引信息失效时,由于根据错误的索引信息进行的资源访问是无效的,因此所消耗的时间和发送的报文都浪费了,还是需要重新进行泛洪查询,因此相比泛洪算法来说,额外的性能损失是:
如果此时发起资源查询的节点A的总索引失效率为TIR,要保证查询时间和发送的报文比泛洪从整体上来说更优越的话,就必需满足下面的公式。
正确索引节省的时间≥失效索引损失的时间:
由于在一个实际的通信网络中,网络时延要大大超过每个节点的本地查询时间,因此t可以忽略不计,从而正确索引节省的时间可忽略,错误索引造成的额外时间损失为2×L×T,与资源距离L 和网络传输时延T 成正比。此时,TIR只与3个参数有关:邻居节点数M、资源平均距离L和TTL值H,这3个参数的取值取决于具体网络状况。因此,要保证索引信息对网络性能起到正面作用,我们必须保证:
1.3 基于流言的泛洪机制
从上节的分析可以看出,DNI只有当节点保存的资源索引表有效并且请求的资源在索引表范围内,才可以有效地减少泛洪造成的额外开销,而当索引的资源无效或者请求的资源在索引表范围之外时,我们还是不得不使用泛洪算法进行资源的进一步查找,为此,提出GF算法作为优化泛洪效率的一种机制。
流言机制的理论基础是渗透理论,文献[4-5]对渗透理论有详细的介绍。简单来说,通过流言机制可以使网络中的节点以一定的概论决定是否向它的邻居节点广播当前收到的报文,从而在有效降低网络负载的情况下获得与泛洪机制相似的网络覆盖性。
基本的流言机制很简单,源节点以概率1广播一个消息,当中间节点第一次接收到该消息,以概率p将该消息广播到邻居节点,以概率1-p丢弃该消息,若收到重复的消息则直接丢弃,该协议被称为GOSSIP(p )。文献[6]提出了4种GOSSIP的变种:
(1)GOSSIP1(p,k),即让源节点k跳范围内的节点以概率1传播消息,k跳范围外的节点以概率p传播消息。
(2)GOSSIP2(p 1,k,p 2,n),即让源节点k跳范围内的节点以概率1传播消息,k跳范围外的节点如果邻居节点个数少于n,以概率p 2(p 2>p 1)传播消息,否则以概率p 1传播消息。
(3)GOSSIP3(p,k,m),即让源节点k跳范围内的节点以概率1传播消息,k跳范围外的节点首先以概率p计算是否广播该消息,如果决定广播,则直接广播该消息,否则等待一定的时间,如果在这段时间内收到的相同的消息数少于m个,则仍然广播该消息。该变体的出发点是因为如果消息传播的概率太小,流言有可能过早消失,防止消息消失的办法就是让节点能够感知消息的传播情况。假设节点A有n个邻居节点,当A接收到一个新消息,如果消息不消失,A可以预期所有的邻居将接收到相同的消息,若消息传播概率是p,那么A应该接收到大约m(m≤pn)个来自邻居的相同消息,若A在某个合理的时间间隔内接收到相同消息的数目大大少于m,那么A就可以认为消息正在消失,此时A将广播该消息。
(4)GOSSIP4(p,k,k’),即从源节点k’跳范围之外开始以GOSSIP1(p,k)广播消息。
由于本文的GF机制主要用来解决索引失效或者请求的资源未被索引时的泛洪查询问题,所以我们采用了两种GOSSIP算法来分别解决这两种情况。由于GOSSIP2比GOSSIP1更灵活,并且通过DNI机制,每个节点都知道自己的邻居节点个数,所以当索引失效时,我们采用GOSSIP2(p 1,k,p 2,n)算法进行泛洪查询,文献[6]的仿真结果表明,GOSSIP2(0.6,4,1,6)具有较好的性能,因此我们采用(0.6,4,1,6)作为参数的默认值。而当所请求的资源未被索引时,可以认为该资源在索引半径之外,所以我们采用GOSSIP4(p,k,k’)算法进行泛洪查询,参数k’就是索引半径N,文献[6]的仿真结果表明,当p =0.65,k =4时,具有较好的性能,因此我们采用(0.65,4,N )作为参数的默认值。由于GOSSIP3(p,k,m)需要等待一段时间才能决定到底要不要广播消息,在实时应用中这段延时有可能造成呼叫的失败,因此我们放弃使用GOSSIP3。
由于每个节点是以一定的概率广播信息,因此很明显网络中总的信息发送数量比单纯的泛洪要少很多,文献[6]的仿真结果表明,用GOSSIP算法优化泛洪查询总体上可以节省35%左右的带宽消耗。下面我们从数学上定量地分析一下,根据上节的计算,如果采用泛洪算法,一次查询需要发送的总报文数量为:
即在查询阶段发送的报文总数为个,返回查询结果发送L个消息报文。
如果采用GOSSIP2(p 1,k,p 2,n)算法,我们设网络中出现邻居节点个数少于n 的节点的概率为q,由于前k跳以概率1广播报文,因此前k跳没有节约报文发送数量,从第k+1跳开始,每个节点以概率q成为应该以概率p 2发送消息的节点,以概率1-q 成为应该以概率p 1发送消息的节点,即该节点发送消息的概率为 不发送消息的概率为1-Q,所以从第k+1步起节约的报文数MN save为:
由于0≤p 1<p 2≤1,所以0<Q<1,同时H≥L且H必定大于k,所以MN save必定为正值,即GOSSIP2(p 1,k,p 2,n)算法可以节省MN save个消息报文。参数q可以表示网络的密度,可以认为当网络密度大时,邻居节点个数少于n的节点较少,即q 比较小;当网络密度小时,邻居节点个数少于n 的节点较多,即q比较大。因为0≤p 1<p 2≤1,所以当p 1、p 2一定时,Q 正比于q。当网络密度大时,q 较小,因此Q 较小,
MN save较大,可节省的报文数较多;当网络密度小时,q较大,因此Q 较大,MN save较小,可节省的报文数较少。这和我们的直观感受是一致的。
如果采用GOSSIP4(p,k,k’)算法,从源节点开始的k’跳没有采用泛洪机制,一共发送的报文数为Mk’,从k’到k 跳的节点以概率1广播报文,此时没有节省带宽,从k 跳开始以概率p 广播报文,即以概率1-p不广播报文,所以节省报文数为第1到第k’跳节省的报文数+第k 跳以后节省的报文数,即:
当H一定时,由于k’ 为了具体实现时简单,我们考虑将GOSSIP2(p 1,k,p 2,n)和GOSSIP4(p,k,k’)统一起来,提出GOSSIP5(p 1,k,p 2,n,k’),其中各参数的意义与GOSSIP2和GOSSIP4中的意义相同。GOSSIP5的工作方式为,从距离源节点的k’跳的节点开始广播,k’跳到k跳的节点以概率1广播报文,k跳之外的节点如果邻居个数少于n,则概率p 2广播,否则以概率p 1广播。很明显,当k’=0时,GOSSIP5(p 1,k,p 2,n,k’)就等同于GOSSIP2(p 1,k,p 2,n);当n=1时,GOSSIP5(p 1,k,p 2,n,k’)就等同于GOSSIP4(p 1,k,k’)。因此,在实际的设计中,如果用到GOSSIP2(p 1,k,p 2,n),我们就用GOSSIP5(p 1,k,p 2,n,0),如果用到GOSSIP4(p,k,k’),我们就用GOSSIP5(p 1,k,p 2,1,k’)。
到现在为止,我们已经完成了MAP的核心算法DIG的主要设计工作,并分析了相对于全分布式非结构化P2P拓扑通常采用的泛洪算法的性能改善,接下来我们将对SIP进行适当的扩展使之可以完成MAP方式的P2P组网,从而可以在MANET环境中搭建一个SIP通信网络,完成VoIP、IM等多媒体呼叫服务。
2 基于MAP的SIP架构
本文提出利用SIP实现MANET上的通信应用,为了避免引入新的协议,本文将对SIP进行简单的扩展,从而实现同时利用SIP来承载P2P通信,该架构称为MASIP。MASIP节点模块结构如图3所示。
每个节点模块由两部分组成:SIP用户代理(SIP UA)模块、MASIP模块。SIP UA可以使用现有的SIP客户端软件。MASIP模块的功能包括注册、请求代理、维护索引表。我们提出代理用户代理客户端(AUAC)的概念,当用户需要通过MASIP发起查询请求时,就由AUAC构造符合MASIP规范的请求信令发起相应的请求,AUAC还有一个很重要的功能是发起索引更新请求。MASIP模块里的注册服务器(Registrar)、Proxy和AUAC都按照MASIP协议栈的规范构造SIP信令,MASIP协议栈是一个经过简单扩展的SIP协议栈,处理所有与MASIP信令相关的事宜。SIP UA使用现有的SIP客户端软件是为了保持兼容性和保障现有的投资和使用习惯,如果用户知道通信方的地址,SIP支持直接向对方发起呼叫,而一般情况下用户是不知道对方当前的地址的,所以如果用户要使用MASIP的Registrar和Proxy功能,只要将SIP客户端的服务器设置为本机(127.0.0.1:5060,5060是SIP定义的默认监听端口),并且监听端口设为除5060外的任意端口(防止与MASIP模块冲突),MASIP模块就可以接收到本地UA发出的所有信令,通过对用户信令的处理,就可以为用户提供MASIP服务。SIP UA和MASIP模块是松耦合的,如果只启动SIP UA,则该UA客户端可以以传统SIP流程实现注册、通信等操作,如果只启动MASIP模块则可以作为MASIP逻辑覆盖网中的一个节点,为其他用户提供各种路由服务。
本文在数据库里定义了一张资源索引表——RIT。RIT记录了本地资源索引和N跳资源索引,当有SIP UA启动时,向MASIP发送注册信令(REGISTER),MASIP更新RIT,插入一条跳(Hop)为“0”的资源索引;另外,MASIP会周期性地通过AUAC发送资源更新消息,更新RIT中的N跳资源索引。对于我们这个系统来说,所谓的资源其实主要就是每个UA的统一资源标识符(URI)及其对应的转交地址(CoA),CoA应该以IP: Port对的形式表示,因此我们定义的RIT的结构如图4所示。
图中Hop记录了该URI距离本机的跳数,下一跳(Next hop)记录了要到达该URI的下一跳地址,该地址应该与CoA中的IP相同,端口为SIP默认的5060,Expires为该表项的失效时间,单位为秒。
MASIP的主要工作流程有:初始化、RIT更新、用户查询,我们将SIP UA的退出和失效作同样处理,即如果在一定时间内RIT中的相关表项没有更新,则删除该表项。
我们定义两个新的头域:MASIP_Res(格式为MASIP_Res: res;coa;expires)、Gossip(格式为Gossip: p 1;k;p 2;n ),一个新的选项标签Masip,用于支持MASIP的相关操作。
由于MASIP架构中,每个节点的SIP UA都以本地注册的方式连入网络,如果MASIP模块收到一个非本地REGISTER消息,必定是网络中某个节点的查询消息,因此我们可以将一个MASIP模块收到一个REGISTER消息的处理过程归纳如下:
(1)判断发起请求的URI是否在本地,如果是,则是注册或更新消息,将相应信息插入本地RIT并退出,否则执行步骤(2)。
(2)判断发起请求的节点跳数是否在本机索引范围内,如果是,执行步骤(3),否则执行步骤(4)。
(3)判断被请求的URI是否已被索引,如果是,提取相应消息并更新RIT,否则将相应消息插入RIT,执行步骤(4)。
(4)判断TTL是否大于“0”,如果是,继续广播并执行步骤(5),否则直接执行步骤(5)。
(5)将本地资源信息插入200 OK消息并返回给发起请求的节点然后退出。
一个MASIP Proxy收到一个非REGISTER的报文,要么按照标准SIP的方式将其路由到下一跳地址,要么按照MASIP的方式泛洪查询目的地址,因此我们可以归纳出MASIP Proxy收到一个非REGISTER消息的处理过程如下所示:
(1)判断是否是泛洪消息,如果是,执行步骤(2),否则执行步骤(5)。
(2)判断被请求URI是否被索引,如果被索引,执行步骤(3),否则执行步骤(4)。
(3)将本机代理地址插入Via头域并将消息转发至下一跳节点,启动计时器,如果有响应,则将响应转发给上一跳节点并退出,否则返回信息“408 Request Timeout”并退出。
(4)返回信息“404 Not Found”并退出。
(5)判断被请求URI是否是本地资源,如果是,执行(6),否则执行(7)。
(6)将请求消息转发至相应地址,如果有响应,则将响应转发给上一跳节点并退出,否则执行(7)。
(7)判断发起请求的节点跳数是否小于Gossip头域中的k 参数,如果小于k,则广播该消息,否则执行(8)。
(8)判断本节点的邻居节点个数是否小于Gossip头域中的n 参数,如果小于n,则以Gossip头域中的p 2概率广播该消息并退出,否则以Gossip头域中的p 1概率广播该消息并退出。
3 结束语
MANET是下一代通信网的重要组成部分,能够为用户提供无所不在的通信服务。SIP是3GPP以及3GPP2在3G通信系统中采用的IMS核心协议,在下一代通信中占有非常重要的地位。因此,考虑将SIP和MANET相结合,为用户提供高效的通信服务具有重要意义。本文提出了一个新的基于MANET的P2P组网模型:MAP,在MAP的基础上,本文进一步提出了基于MAP的SIP组网架构:MASIP。MASIP利用对SIP的扩展,使用SIP在应用层构建基于MAP的P2P网络:MASIP,MASIP通过增加两个头域MASIP_Res、Gossip和一个资源标签Masip,实现了对MASIP相关机制的有效支持。MASIP通过与SIP UA的分离实现,可以利用现有SIP UA实现MASIP组网,有效兼容了标准SIP和MASIP。本文的设计可以兼容现有的SIP设施,可以同时提供传统SIP和MASIP的P2P服务,充分考虑了MANET的自身特点,避免了直接采用SIP或其他P2P架构的缺陷,可以提供灵活、随时随地的通信服务。但由于时间关系,本设计还有很多没有考虑到的方面,例如用户认证机制、抵御外部攻击、媒体流的服务质量(QoS)等,这些问题的解决有待于今后更深入的研究。
在MANET环境中提供高质量的多媒体服务必将吸引越来越多研究者的目光,只有将MANET与现有的通信应用结合起来,才能真正为用户提供无所不在的通信服务。由于MANET的全分布式拓扑、无中心控制的特点,使得在MANET中提供安全性变得异常困难,因此在今后的研究工作中,在MANET中提供安全的通信将成为一个有意义的研究方向。另外,MANET的多跳路由机制使得路由发现时间较长,并且由于动态拓扑特征,路径很不稳定,由于多媒体业务对延时较敏感,怎样提高路由发现效率及其稳定性也是一个需要尽快解决的研究课题。运营商如果要介入MANET的运营,则怎样在一个全分布式拓扑的环境中提高网络的可控性、完善收费机制,也是一个需要思考的问题。
总之,MANET是一个很有前途的组网模式,其先天性的P2P特征使得我们看到了有可能在电信行业发生类似于Internet世界中的“草根”革命,也许有一天,“草根”电信会成为我们生活中的一部分,“人人为我,我为人人”的思想将深入人心,每个人都能享受到自由、低价、无所不在的通信。
4 参考文献
[1] FRODIGH M, JOHANSSON P. Wireless Ad hoc networking:the art of networking without a network [J]. Ericsson Review, 2000 (4):248-262.
[2] 王金龙, 王呈贵, 吴启晖, 等. Ad Hoc移动无线网络 [M]. 北京:国防工业出版社, 2004.
[3] ROSENBERG J, SCHULZRINNE H, CAMANILO G. SIP: Session Initiation Protocol [R]. RFC3261. 2002.
[4] GRIMMETT G. Percolation [M]. New York, NY, USA: Springer-Verlag, 1989.
[5] MEESTER R, ROY R. Continuum percolation [M]. Cambridge, UK: Cambridge University Press, 1991.
[6] HAAS Z J, HALPERN J Y, LI L. Gossip-based Ad Hoc routing [C]// Proceedings of IEEE INFOCOM: Vol3, Jun 23-27, 2002, New York, NY,USA. Piscataway, NJ,USA:IEEE, 2003:1707-1716.
收稿日期:2007-04-03
“本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文”。
关键词:移动自组织网络;会话发起协议;对等网
Abstract: Mobile Ad Hoc Network (MANET) is currently a hot topic in the field of network communications. However, the previous MANET research focuses on the physical layer, Media Access Control (MAC) and routing, and concerns little about delivering multimedia communications services. It is necessary to change the existing communications architecture for offering high-quality multimedia communication services by MANET. Therefore, the Session Initiation Protocol (SIP) is used for building an application-layer Peer-to-Peer (P2P) network in MANET to fulfill multimedia communications. This article proposes a new MANET-based P2P networking model MAP, and a MAP-based SIP networking architecture MASIP. MASIP can be compatible with existing SIP facilities, and offer both traditional SIP and MASIP P2P services. Moreover, it takes MANET’s own features into full consideration, and avoids the defects caused by direct use of SIP or other P2P architecture. Therefore, MASIP can provide flexible communications services at any time and anywhere.
Key words: MANET; SIP; P2P
移动自组织网络(MANET)[1-2]是当前网络通信界研究的一个热点,其主要目的是通过一组带有无线收发装置的移动节点组成一个临时性的、无网络基础设施的小型移动网络,该网络具有动态拓扑结构,具有临时性、多跳路由等特征,非常适合于在战场、紧急救援等需要临时组网的情况下建立快速、高效的通信网络。MANET示意图如图1所示。但在以往的MANET相关研究中,主要针对的是MANET本身,至于如何利用MANET提供的弹性架构为用户提供灵活、可扩展、高鲁棒性的通信服务,相关研究较少。而在当前热门的通信协议中,会话发起协议(SIP)[3]是最受关注的一个,因为SIP继承了Internet中的协议,如超文本传输协议(HTTP)、简单邮件传输协议(SMTP),简洁、高效、可扩展等优点,被认为是最有前途的信令协议。因此,考虑利用SIP在MANET中提供高质量的多媒体通信服务,具有较高的研究价值和实际意义。另外,由于MANET与对等网络(P2P)存在着相当多的相似之处,在MANET中利用P2P的研究成果也是一个很好的研究方向。
1 基于MANET的P2P组网模型
本文提出一种新的基于MANET的P2P组网模型——MAP,该模型充分考虑了MANET的特点,路由算法简单,没有路由绕路问题,适合MANET环境下的P2P应用层组网。
1.1 MAP的设计思想
MANET相对于P2P网络具有网络规模小、节点能力(CPU、存储器、电量等)受限、物理拓扑动态性强等特点,因此应用在MANET上的P2P组网模型必须充分考虑MANET的特征,否则将严重限制MANET优势的发挥。
P2P网络有4种不同的拓扑结构:中心化拓扑、半分布式拓扑、全分布式结构化拓扑、全分布式非结构化拓扑。下面来看一下哪种P2P网络拓扑适合布置在MANET环境中。中心化拓扑需要在网络中布置中央索引服务器,而MANET一般用于快速临时组网,基本上不可能布置中央索引服务器,因此中心化拓扑不适合基于MANET的P2P组网架构。半分布式拓扑在基于Internet的IP语音(VoIP)服务中有非常出色的表现,但在MANET环境中,各个节点能力有限,如果某个节点被选为超级节点,必将造成该节点电量的迅速耗尽,同时各个节点由于随机移动,网络拓扑在不断变化,无法保证每个节点与超级节点的连接有效性,因此这种拓扑结构也不是很适合MANET环境中的P2P组网。全分布式结构化拓扑是当今在P2P领域最受关注、研究最多的一种拓扑形式,但这种拓扑结构在大规模组网时才能体现其结构化、可扩展的优势,而MANET是一个临时组建的小规模无线网络,因此这种拓扑结构也不是很适合基于MANET的P2P组网。最后只有全分布式非结构化拓扑,这种拓扑与MANET有着更多的相似性,而且维护代价小、资源发现算法简单,更适合MANET的需求。所以MAP模型采用全分布式非结构化拓扑作为其组网的基本模型。
但以Gnutella系统为代表的全分布式非结构化拓扑由于采用泛洪机制进行资源查询,在MANET中应用有其固有缺陷:一是泛洪机制会占用大量带宽,而MANET基于移动无线网络,带宽本来就非常有限;二是泛洪机制会消耗移动设备的计算能力,因为每个移动设备都被迫处理所有接收到的请求。
针对全分布式非结构化拓扑在资源定位方面的不足,为了减少泛洪机制造成的额外网络开销,MAP采用了一种基于泛洪机制的优化算法:动态N跳索引与基于流言的泛洪机制(DIG)。DIG可以看作是两种机制:动态N跳索引机制(DNI)和基于流言的泛洪机制(GF)的结合。
1.2 动态N 跳索引机制
泛洪算法的机制是当节点需要查询某个资源的时候,通过向全网广播查询信息获得所需资源的路径,为了减少泛洪造成的网络资源的消耗,让每个节点维护一张资源索引表,这样通过本地查询就可以完成部分资源查询工作,大大地减少了泛洪造成的额外开销,但如果网络动态性高、拓扑结构变化迅速,所维护的索引表有可能提供错误的信息,反倒造成更多查询开销。因此,DNI的设计思想就是让P2P网内的每个节点维护一张N跳邻居节点的资源索引表,并允许每个节点根据周围环境的动态性实时调整索引表的半径。当周围环境动态性高,资源位置变化剧烈时,缩小半径,提高本地索引信息的准确性;当周围环境动态性低,资源位置变化不剧烈时,扩大半径,增加每个节点的索引信息。动态N 跳索引与基于流的泛洪机制如图2所示。图中A为示例节点,当网络动态性高时,节点A的索引范围如内圆所示,当网络动态性比较低时,节点A的索引范围如外圆所示。
通过计算,可以得到,当待查询的资源在索引范围内且索引正确时,DNI相对于泛洪算法的性能改善为:
节省查询时间=RTF-RTDNI=L×t-t=(L-1)t
其中,L为被请求的资源距离请求节点的跳数,t为每个节点搜索本地索引表的平均耗费时间,H为泛洪报文的生存时间(TTL)值,T 为网络传输时延,M为每个节点平均拥有的邻居节点个数。
但是,只有当节点保存的资源索引表有效并且请求的资源在索引表范围内,才可以有效的减少泛洪造成的额外开销。那当索引的资源无效或者请求的资源在索引表范围之外,怎么办?对此要采取两种措施,一是动态调整索引半径,二是通过泛洪算法进一步查找所需资源。
先来讨论怎样动态调整索引半径,然后再介绍DIG所使用的优化的泛洪机制GF。
DNI通过计算索引失效率决定是否调整索引半径,现在分析一下具体的调整标准。
当索引信息失效时,由于根据错误的索引信息进行的资源访问是无效的,因此所消耗的时间和发送的报文都浪费了,还是需要重新进行泛洪查询,因此相比泛洪算法来说,额外的性能损失是:
如果此时发起资源查询的节点A的总索引失效率为TIR,要保证查询时间和发送的报文比泛洪从整体上来说更优越的话,就必需满足下面的公式。
正确索引节省的时间≥失效索引损失的时间:
由于在一个实际的通信网络中,网络时延要大大超过每个节点的本地查询时间,因此t可以忽略不计,从而正确索引节省的时间可忽略,错误索引造成的额外时间损失为2×L×T,与资源距离L 和网络传输时延T 成正比。此时,TIR只与3个参数有关:邻居节点数M、资源平均距离L和TTL值H,这3个参数的取值取决于具体网络状况。因此,要保证索引信息对网络性能起到正面作用,我们必须保证:
1.3 基于流言的泛洪机制
从上节的分析可以看出,DNI只有当节点保存的资源索引表有效并且请求的资源在索引表范围内,才可以有效地减少泛洪造成的额外开销,而当索引的资源无效或者请求的资源在索引表范围之外时,我们还是不得不使用泛洪算法进行资源的进一步查找,为此,提出GF算法作为优化泛洪效率的一种机制。
流言机制的理论基础是渗透理论,文献[4-5]对渗透理论有详细的介绍。简单来说,通过流言机制可以使网络中的节点以一定的概论决定是否向它的邻居节点广播当前收到的报文,从而在有效降低网络负载的情况下获得与泛洪机制相似的网络覆盖性。
基本的流言机制很简单,源节点以概率1广播一个消息,当中间节点第一次接收到该消息,以概率p将该消息广播到邻居节点,以概率1-p丢弃该消息,若收到重复的消息则直接丢弃,该协议被称为GOSSIP(p )。文献[6]提出了4种GOSSIP的变种:
(1)GOSSIP1(p,k),即让源节点k跳范围内的节点以概率1传播消息,k跳范围外的节点以概率p传播消息。
(2)GOSSIP2(p 1,k,p 2,n),即让源节点k跳范围内的节点以概率1传播消息,k跳范围外的节点如果邻居节点个数少于n,以概率p 2(p 2>p 1)传播消息,否则以概率p 1传播消息。
(3)GOSSIP3(p,k,m),即让源节点k跳范围内的节点以概率1传播消息,k跳范围外的节点首先以概率p计算是否广播该消息,如果决定广播,则直接广播该消息,否则等待一定的时间,如果在这段时间内收到的相同的消息数少于m个,则仍然广播该消息。该变体的出发点是因为如果消息传播的概率太小,流言有可能过早消失,防止消息消失的办法就是让节点能够感知消息的传播情况。假设节点A有n个邻居节点,当A接收到一个新消息,如果消息不消失,A可以预期所有的邻居将接收到相同的消息,若消息传播概率是p,那么A应该接收到大约m(m≤pn)个来自邻居的相同消息,若A在某个合理的时间间隔内接收到相同消息的数目大大少于m,那么A就可以认为消息正在消失,此时A将广播该消息。
(4)GOSSIP4(p,k,k’),即从源节点k’跳范围之外开始以GOSSIP1(p,k)广播消息。
由于本文的GF机制主要用来解决索引失效或者请求的资源未被索引时的泛洪查询问题,所以我们采用了两种GOSSIP算法来分别解决这两种情况。由于GOSSIP2比GOSSIP1更灵活,并且通过DNI机制,每个节点都知道自己的邻居节点个数,所以当索引失效时,我们采用GOSSIP2(p 1,k,p 2,n)算法进行泛洪查询,文献[6]的仿真结果表明,GOSSIP2(0.6,4,1,6)具有较好的性能,因此我们采用(0.6,4,1,6)作为参数的默认值。而当所请求的资源未被索引时,可以认为该资源在索引半径之外,所以我们采用GOSSIP4(p,k,k’)算法进行泛洪查询,参数k’就是索引半径N,文献[6]的仿真结果表明,当p =0.65,k =4时,具有较好的性能,因此我们采用(0.65,4,N )作为参数的默认值。由于GOSSIP3(p,k,m)需要等待一段时间才能决定到底要不要广播消息,在实时应用中这段延时有可能造成呼叫的失败,因此我们放弃使用GOSSIP3。
由于每个节点是以一定的概率广播信息,因此很明显网络中总的信息发送数量比单纯的泛洪要少很多,文献[6]的仿真结果表明,用GOSSIP算法优化泛洪查询总体上可以节省35%左右的带宽消耗。下面我们从数学上定量地分析一下,根据上节的计算,如果采用泛洪算法,一次查询需要发送的总报文数量为:
即在查询阶段发送的报文总数为个,返回查询结果发送L个消息报文。
如果采用GOSSIP2(p 1,k,p 2,n)算法,我们设网络中出现邻居节点个数少于n 的节点的概率为q,由于前k跳以概率1广播报文,因此前k跳没有节约报文发送数量,从第k+1跳开始,每个节点以概率q成为应该以概率p 2发送消息的节点,以概率1-q 成为应该以概率p 1发送消息的节点,即该节点发送消息的概率为 不发送消息的概率为1-Q,所以从第k+1步起节约的报文数MN save为:
由于0≤p 1<p 2≤1,所以0<Q<1,同时H≥L且H必定大于k,所以MN save必定为正值,即GOSSIP2(p 1,k,p 2,n)算法可以节省MN save个消息报文。参数q可以表示网络的密度,可以认为当网络密度大时,邻居节点个数少于n的节点较少,即q 比较小;当网络密度小时,邻居节点个数少于n 的节点较多,即q比较大。因为0≤p 1<p 2≤1,所以当p 1、p 2一定时,Q 正比于q。当网络密度大时,q 较小,因此Q 较小,
MN save较大,可节省的报文数较多;当网络密度小时,q较大,因此Q 较大,MN save较小,可节省的报文数较少。这和我们的直观感受是一致的。
如果采用GOSSIP4(p,k,k’)算法,从源节点开始的k’跳没有采用泛洪机制,一共发送的报文数为Mk’,从k’到k 跳的节点以概率1广播报文,此时没有节省带宽,从k 跳开始以概率p 广播报文,即以概率1-p不广播报文,所以节省报文数为第1到第k’跳节省的报文数+第k 跳以后节省的报文数,即:
当H一定时,由于k’
到现在为止,我们已经完成了MAP的核心算法DIG的主要设计工作,并分析了相对于全分布式非结构化P2P拓扑通常采用的泛洪算法的性能改善,接下来我们将对SIP进行适当的扩展使之可以完成MAP方式的P2P组网,从而可以在MANET环境中搭建一个SIP通信网络,完成VoIP、IM等多媒体呼叫服务。
2 基于MAP的SIP架构
本文提出利用SIP实现MANET上的通信应用,为了避免引入新的协议,本文将对SIP进行简单的扩展,从而实现同时利用SIP来承载P2P通信,该架构称为MASIP。MASIP节点模块结构如图3所示。
每个节点模块由两部分组成:SIP用户代理(SIP UA)模块、MASIP模块。SIP UA可以使用现有的SIP客户端软件。MASIP模块的功能包括注册、请求代理、维护索引表。我们提出代理用户代理客户端(AUAC)的概念,当用户需要通过MASIP发起查询请求时,就由AUAC构造符合MASIP规范的请求信令发起相应的请求,AUAC还有一个很重要的功能是发起索引更新请求。MASIP模块里的注册服务器(Registrar)、Proxy和AUAC都按照MASIP协议栈的规范构造SIP信令,MASIP协议栈是一个经过简单扩展的SIP协议栈,处理所有与MASIP信令相关的事宜。SIP UA使用现有的SIP客户端软件是为了保持兼容性和保障现有的投资和使用习惯,如果用户知道通信方的地址,SIP支持直接向对方发起呼叫,而一般情况下用户是不知道对方当前的地址的,所以如果用户要使用MASIP的Registrar和Proxy功能,只要将SIP客户端的服务器设置为本机(127.0.0.1:5060,5060是SIP定义的默认监听端口),并且监听端口设为除5060外的任意端口(防止与MASIP模块冲突),MASIP模块就可以接收到本地UA发出的所有信令,通过对用户信令的处理,就可以为用户提供MASIP服务。SIP UA和MASIP模块是松耦合的,如果只启动SIP UA,则该UA客户端可以以传统SIP流程实现注册、通信等操作,如果只启动MASIP模块则可以作为MASIP逻辑覆盖网中的一个节点,为其他用户提供各种路由服务。
本文在数据库里定义了一张资源索引表——RIT。RIT记录了本地资源索引和N跳资源索引,当有SIP UA启动时,向MASIP发送注册信令(REGISTER),MASIP更新RIT,插入一条跳(Hop)为“0”的资源索引;另外,MASIP会周期性地通过AUAC发送资源更新消息,更新RIT中的N跳资源索引。对于我们这个系统来说,所谓的资源其实主要就是每个UA的统一资源标识符(URI)及其对应的转交地址(CoA),CoA应该以IP: Port对的形式表示,因此我们定义的RIT的结构如图4所示。
图中Hop记录了该URI距离本机的跳数,下一跳(Next hop)记录了要到达该URI的下一跳地址,该地址应该与CoA中的IP相同,端口为SIP默认的5060,Expires为该表项的失效时间,单位为秒。
MASIP的主要工作流程有:初始化、RIT更新、用户查询,我们将SIP UA的退出和失效作同样处理,即如果在一定时间内RIT中的相关表项没有更新,则删除该表项。
我们定义两个新的头域:MASIP_Res(格式为MASIP_Res: res;coa;expires)、Gossip(格式为Gossip: p 1;k;p 2;n ),一个新的选项标签Masip,用于支持MASIP的相关操作。
由于MASIP架构中,每个节点的SIP UA都以本地注册的方式连入网络,如果MASIP模块收到一个非本地REGISTER消息,必定是网络中某个节点的查询消息,因此我们可以将一个MASIP模块收到一个REGISTER消息的处理过程归纳如下:
(1)判断发起请求的URI是否在本地,如果是,则是注册或更新消息,将相应信息插入本地RIT并退出,否则执行步骤(2)。
(2)判断发起请求的节点跳数是否在本机索引范围内,如果是,执行步骤(3),否则执行步骤(4)。
(3)判断被请求的URI是否已被索引,如果是,提取相应消息并更新RIT,否则将相应消息插入RIT,执行步骤(4)。
(4)判断TTL是否大于“0”,如果是,继续广播并执行步骤(5),否则直接执行步骤(5)。
(5)将本地资源信息插入200 OK消息并返回给发起请求的节点然后退出。
一个MASIP Proxy收到一个非REGISTER的报文,要么按照标准SIP的方式将其路由到下一跳地址,要么按照MASIP的方式泛洪查询目的地址,因此我们可以归纳出MASIP Proxy收到一个非REGISTER消息的处理过程如下所示:
(1)判断是否是泛洪消息,如果是,执行步骤(2),否则执行步骤(5)。
(2)判断被请求URI是否被索引,如果被索引,执行步骤(3),否则执行步骤(4)。
(3)将本机代理地址插入Via头域并将消息转发至下一跳节点,启动计时器,如果有响应,则将响应转发给上一跳节点并退出,否则返回信息“408 Request Timeout”并退出。
(4)返回信息“404 Not Found”并退出。
(5)判断被请求URI是否是本地资源,如果是,执行(6),否则执行(7)。
(6)将请求消息转发至相应地址,如果有响应,则将响应转发给上一跳节点并退出,否则执行(7)。
(7)判断发起请求的节点跳数是否小于Gossip头域中的k 参数,如果小于k,则广播该消息,否则执行(8)。
(8)判断本节点的邻居节点个数是否小于Gossip头域中的n 参数,如果小于n,则以Gossip头域中的p 2概率广播该消息并退出,否则以Gossip头域中的p 1概率广播该消息并退出。
3 结束语
MANET是下一代通信网的重要组成部分,能够为用户提供无所不在的通信服务。SIP是3GPP以及3GPP2在3G通信系统中采用的IMS核心协议,在下一代通信中占有非常重要的地位。因此,考虑将SIP和MANET相结合,为用户提供高效的通信服务具有重要意义。本文提出了一个新的基于MANET的P2P组网模型:MAP,在MAP的基础上,本文进一步提出了基于MAP的SIP组网架构:MASIP。MASIP利用对SIP的扩展,使用SIP在应用层构建基于MAP的P2P网络:MASIP,MASIP通过增加两个头域MASIP_Res、Gossip和一个资源标签Masip,实现了对MASIP相关机制的有效支持。MASIP通过与SIP UA的分离实现,可以利用现有SIP UA实现MASIP组网,有效兼容了标准SIP和MASIP。本文的设计可以兼容现有的SIP设施,可以同时提供传统SIP和MASIP的P2P服务,充分考虑了MANET的自身特点,避免了直接采用SIP或其他P2P架构的缺陷,可以提供灵活、随时随地的通信服务。但由于时间关系,本设计还有很多没有考虑到的方面,例如用户认证机制、抵御外部攻击、媒体流的服务质量(QoS)等,这些问题的解决有待于今后更深入的研究。
在MANET环境中提供高质量的多媒体服务必将吸引越来越多研究者的目光,只有将MANET与现有的通信应用结合起来,才能真正为用户提供无所不在的通信服务。由于MANET的全分布式拓扑、无中心控制的特点,使得在MANET中提供安全性变得异常困难,因此在今后的研究工作中,在MANET中提供安全的通信将成为一个有意义的研究方向。另外,MANET的多跳路由机制使得路由发现时间较长,并且由于动态拓扑特征,路径很不稳定,由于多媒体业务对延时较敏感,怎样提高路由发现效率及其稳定性也是一个需要尽快解决的研究课题。运营商如果要介入MANET的运营,则怎样在一个全分布式拓扑的环境中提高网络的可控性、完善收费机制,也是一个需要思考的问题。
总之,MANET是一个很有前途的组网模式,其先天性的P2P特征使得我们看到了有可能在电信行业发生类似于Internet世界中的“草根”革命,也许有一天,“草根”电信会成为我们生活中的一部分,“人人为我,我为人人”的思想将深入人心,每个人都能享受到自由、低价、无所不在的通信。
4 参考文献
[1] FRODIGH M, JOHANSSON P. Wireless Ad hoc networking:the art of networking without a network [J]. Ericsson Review, 2000 (4):248-262.
[2] 王金龙, 王呈贵, 吴启晖, 等. Ad Hoc移动无线网络 [M]. 北京:国防工业出版社, 2004.
[3] ROSENBERG J, SCHULZRINNE H, CAMANILO G. SIP: Session Initiation Protocol [R]. RFC3261. 2002.
[4] GRIMMETT G. Percolation [M]. New York, NY, USA: Springer-Verlag, 1989.
[5] MEESTER R, ROY R. Continuum percolation [M]. Cambridge, UK: Cambridge University Press, 1991.
[6] HAAS Z J, HALPERN J Y, LI L. Gossip-based Ad Hoc routing [C]// Proceedings of IEEE INFOCOM: Vol3, Jun 23-27, 2002, New York, NY,USA. Piscataway, NJ,USA:IEEE, 2003:1707-1716.
收稿日期:2007-04-03
“本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文”。