王 彬, 武穆清, 罗大勇
(①北京邮电大学 信息与通信工程学院,北京 100876;②天津电力公司电力通信分公司,天津 300010)
移动Ad Hoc网络是无线多跳网络,由一组无线移动节点组成,具有无中心,网络拓扑动态变化的特点[1]。移动Ad Hoc网络的路由协议则必须能够适应网络拓扑动态变化的特点,而目前出现的几种反应式路由协议如AODV,DSR等,在链路监测机制上,显得都比较迟钝。由于目前移动Ad Hoc网络中普遍使用802.11作为链路层的协议[2],我们利用链路层的反馈作为监测链路状态的手段,大大加快路由协议对断裂链路的感知。目前,人们虽然已经在研究路由协议和MAC协议之间的交互,但迄今为止作者还没有发现明确将链路层反馈机制作为MANET路由协议的链路监测机制的文献。
DYMO[3](Dynamic MANET On-demand) 协议是最新出现的反应式路由协议,被当作目前MANET 工作组在按需路由研究方面的重要课题。它仅定义了反应式路由所必需的最基本的元素,即路由发现和路由维护。
与AODV相比,DYMO借用了DSR路由发现过程中路由控制包携带更多路由信息的机制。与 DSR相比,DYMO采用了发现断路后AODV的态度,通知全网中使用到该断裂链路的节点,而不是仅仅通知某条路由的从断路开始的上游部分;在路由发现过程中,使用路由控制包携带更多的路由信息。
从这个角度讲,DYMO是AODV和DSR优势互补的结果。
AODV协议中规定了Hello包链路监测机制:每个节点都定期地向周围邻居发送Hello包,以此来告知周围邻居自身的存在,如节点A收到来自节点B的Hello包,A认为B是A的邻居,此时A与B之间的链路正常,并且认为未来N个周期内,A与B的链路是正常的,N值一般取3,也就是说如果未来N个周期的时间内,A又收到一个来自B的Hello包,那么A对于A与B之间链路的信任将会从A收到那个Hello包开始往后顺延N个周期,但如果未来N个周期的时间内,A没有收到来自B的Hello包,那么A将认定A与B之间的链路已经断裂。N越大,这种机制的灵敏度就越低,也就是说断路感知时延越大。
802.11 DCF中,对于单播帧,都会尝试重传多次,但如果尝试次数达到最大重传次数后,仍然没有获得接入信道的机会,或者仍然没有收到目的站点的确认,发送站点将会丢弃该帧。对于这种情况,我们在MAC协议丢弃该帧之前,确认如果帧里承载的上层数据包是IP数据包,则从帧中取出目的站点的MAC地址,进而得到IP包的下一跳IP地址,通知本节点的DYMO路由协议:下一跳节点不可达。这样,就实时地使节点中的路由协议感知到了链路断裂,进而通知全网该链路已断裂。
我们将感知断路的时延定义为,从链路真正断裂到节点中运行的路由协议感知到该链路断裂,并且将发送路由错误分组时的时间。我们通过对以往链路监测机制的研究,发现它对拓扑快速变化的网络中链路的断裂表现得很“迟钝”,大致的感知断路时延为 1~2 s,而如果我们采用链路层反馈机制作为链路监测手段,在不增加任何路由控制包的情况下,便可“实时”地感知到链路的状态,将感知断路的时延降低到最小,进而能及早通知到全网,使网络中数据包的转发不再使用已失效的路由。
我们可以利用 802.11对于单播帧进行确认的机制,来将下一跳不可达的IP地址回送给路由协议。但该机制有一个局限,就是必须上层向下一跳发送单播数据的时候,机制才能发挥作用,否则,上层是感知不到去往下一跳的链路状况的。为了使上层在没有向下一跳发送单播数据的时候也能够感知到去往下一跳的链路状况,我们依然沿用Hello包的发送机制来确认跟邻居的链路状况。此外,链路层反馈机制产生的链路断裂感知时延应该是与上层使用链路层发送单播数据的速率相关的。
仿真采用的软件是OPNET 14.0版本,选用的节点模型为manet_station。
场景介绍:如图1所示,所有节点运行DYMO协议,MAC协议使用802.11 DCF,mobile_node_0在仿真过程中向mobile_node_6发送CBR流,数据包大小为1024比特,每个节点无线信号的覆盖范围是250 m,也即信号的门限距离为250 s,仿真过程中,mobile_node_6沿着白色箭头的方向,从坐标(0,500)开始,以5 m/s的速度匀速移动到坐标(1000,500)处,其余节点均静止,仿真历时200 s。
图1 仿真场景
对于监测链路状态的机制,我们在Hello包机制的基础上分别开启和关闭链路层反馈机制,以评估和分析链路层反馈机制对链路断裂的感知时间以及分组投递率的影响。我们仅研究由于移动使收发节点之间的距离超过门限值后,产生的链路感知时延。
开启链路层反馈的情况下,源节点发包速率为5个/秒时,链路断裂感知时延如表1。
表1 链路断裂感知时延
开启链路层反馈的情况下,源节点发包速率为10个/秒时,链路断裂感知时延如表2。
表2 链路断裂感知时延
关闭链路层反馈的情况下,源节点发包速率为10个/秒时,链路断裂感知时延如表3。
表3 链路断裂感知时延
从表1和表2中的数据显示两者的共同点是,链路层反馈机制感知到的断路数量与Hello包机制相比并不多,但是通过对场景的分析可以发现,由于节点mobile_ node _6的移动而造成的断路也顶多为3至4次,而恰恰链路层反馈机制感知到的断路数量分别为2次和3次,也就是说由于移动造成的断路中,链路层反馈机制平均以0.11 s和0.035 s的时延感知到断裂的链路,而Hello包机制则平均以1.71 s和1.76 s的时延去感知这些断路。Hello包所感知到的次数多达10次,我们认为主要由于Hello包维护的是双向的链路。这一点应该是Hello包机制相对于链路层反馈机制的优点,也即在路由上没有数据包发送的时候还可以维护路由。表1和表2中数据的不同点是:发包速率为10个/秒的场景中链路断裂感知时延明显要小于发包速率为5个/秒的场景,因而链路层反馈机制产生的链路断裂感知时延是跟上层使用链路层发送单播数据的速率相关的,上层使用链路层发送单播数据的速率越快,链路层反馈机制产生的链路断裂感知时延也就越小,反之则越大。
由表3可知,关闭链路层反馈后,对断路的综合感知时延平均值明显变大,路由协议更加迟钝。
发包速率为 10个/秒,打开和关闭链路层反馈的情况下,分组投递情况如表4。
表4中统计的数据指出,在开启链路层反馈机制后,对于本身丢包不是很严重的小流量场景中,丢失的数据包数量从60降低到2,减少了58个,分组投递率由97.0%上升到99.9%,上升了将近 3个百分点,分析原因,我们认为单纯地依靠Hello包机制,由于其机制的原因,必然不能及时地感知到断裂的链路,这样,路由协议还认为路由是正常的,所有的数据包依旧照常转发,但在Hello包机制感知到断路的这段时间里,这条路由所转发的数据包全部会丢失。但是,开启链路层反馈机制后,会极大地降低路由协议对链路断裂的感知时延,从而避免了通过已断路由转发数据包的情况,自然分组投递率会提高。此外,我们认为仿真过程中,由于节点的移动而造成转发数据的路由断裂次数越多,链路层反馈机制表现出来的减少丢包的性能会更好。
表4 分组投递
通过仿真,验证了我们提出的链路层反馈机制确实可以降低链路断裂感知的时延,从而降低了路由协议对已断路由的继续使用的概率,进而降低了由于使用已断路由转发数据包而丢失的数据包的数量,提高了分组投递率。此外,开启这种机制,不需要增加额外的路由控制包的开销。
文章对小流量场景中由于移动性造成链路断裂的感知时延的研究,我们准备下一步针对由于网络拥塞造成的链路断裂的情况下,研究开启链路层反馈机制的表现。
[1] 郭中华,史浩山.Ad Hoc 网络路由协议性能分析[J].通信技术,2008,41(11):111-113.
[2] 宋璐璐,雒江涛.无线移动自组织网络的发展及其技术概述[J].通信技术,2007,40(01):35-39.
[3] Chakeres I, Perkins C G. draft-ietf-manet-dymo-17[EB/OL]. USA:MANET.[2009-3-8].http://tools.ietf.org/html/draft-ietfmanet- dymo-17#page-37.