段 薇,李大双,姜永广,景中源
(1.中国电子系统设备工程公司研究所,北京 100141;2.中国电子科技集团公司第三十研究所,四川 成都 610041)
众所周知,链路状态路由一般都采取主动式或先应式的路由信息分布机制,其开销远大于诸如AODV(按需距离矢量)、DSDV(带目的地序号的距离矢量)这样的距离矢量路由机制,因而链路状态路由机制并不适合于链路速率仅几kb/s的低速移动Ad Hoc战术电台网络。但是,与距离矢量路由机制相比,链路状态路由机制建立的全局拓扑信息具有实现无循环路由、能提供网络拓扑态势信息的优势,而且链路状态路由天生具有更好地支持服务质量(QoS)控制的优势。随着链路速率达到几百kb/s甚至几Mb/s的宽频段战术电台、高波段定向波束战术电台(如美军的高波段电台HNR)的出现与部署应用[1],现代高速电台几乎都采用了基于链路状态和多点中继路由机制的OLSRv1路由协议[2]。
OLSRv1规范(RFC3626)出现于2003年,其后,如何对OLSRv1进行进一步改进与优化,一直都是IETF移动Ad Hoc网络(MANET)路由工作组和各国研究者们的研究热点。考虑到OLSRv1的实现机制过于复杂,并且没有设计减小开销的路由消息格式压缩机制,因而IETF MANET论坛对OLSR的工作机制进行了功能分割与剥离,分别拆解为RFC5444[3]即移动 Ad Hoc 网络(MANET)分组与消息的通用格式、RFC5497即移动Ad Hoc网络(MANET)多值时间表示以及RFC6130即移动Ad Hoc网络(MANET)邻居发现协议(NHDP)3个基础性RFC 规范与 OLSRv2 草案[3-5]。目前 OLSRv2 草案已进展到第19个版本,预计很快成为正式的RFC规范。
文中首先介绍了IETF MANET论坛针对OLSR制定的3个基础性的RFC规范以及OLSRv2草案的基本概况,然后叙述了3种进一步减少链路状态路由泛洪开销的机制。
OLSRv2草案是以MANET论坛新制定的RFC5444、RFC5497及RFC6130这3个规范为基础,并且这3个基础性规范互相引用而成为了MANET路由协议的一个支持架构。
RFC5444为2009年2月正式公布的一个互联网标准跟踪协议,该规范叙述了为MANET路由协议使用而设计的一个通用化的分组与消息格式。该规范的设计受到OLSRv1(优化链路状态路由)协议(RFC3626)的启发,并针对OLSR使用的格式进行了扩展。
RFC5444规范叙述了一种具有高效率压缩能力的分组与消息表示格式。其压缩效率由减小分组长度和允许一个分组装载多个不相关的消息来支持。缩短分组长度主要由地址聚合、可选分组头与消息头域以及地址块与TLV中的可选域支持。
RFC5444规范同时提供外在的与内在的可扩展性。外在可扩展性通过增加分组TLV并定义新的消息类型的能力来支持。内在的可扩展性通过在现有消息上增加消息TLV与地址块TLV的能力来支持。各应用协议可以定义新的TLV类型与它们的值域内容和新消息类型。
RFC5444规范提供了丰富的表达能力与灵活性,能够适应不同类别的MANET路由协议(例如先应式的、反应式的以及混合型的路由协议)及其扩展。采用一种共同的分组与消息格式和共同的表达IP地址及其关联属性的方式,允许开发通用性的解析编码,而无需考虑该路由协议使用哪一种算法。
RFC5444规范定义的各种消息用于承载MANET路由器之间的路由协议信令[4]。所包括的若干要素能够支持范围受限的泛洪,并能支持多跳网络内MANET路由协议信令的点对点递送。分组可以为单播的或多播的,并且可以使用任何适合的传输协议或不使用任何传输协议。
RFC5444的分组与消息格式压缩能力主要由地址块压缩机制体现。分组除了包含分组头以外,还可以包含一个或多个消息。一个消息包含有一个消息头、一个消息TLV块(包含有与整个消息关联的零个或更多个的TLV)、零个或更多个的地址块(每个地址块含有一个或多个地址对象)以及一个地址块TLV块(每个地址块后面跟随有零个或更多个TLV,可以将这些地址与这些附加属性关联起来)。
一个地址块能够指示一个或多个地址,其指示的所有地址的字节长度都为address-length,这个值由包含该地址块的消息的<msg-header>域内的<msg-addr-length>值指定。一个地址块也可以指示该地址块内所有地址的多个前缀长度,允许一个地址块指示多个地址或多个地址前缀。一个协议可以指明一个具有最大前缀长度的地址(其长度等于8*address-length个bit)可以是一个地址而不是一个地址前缀,从而允许一个地址块采取包含多个地址与多个地址前缀的一种混合形式。
一个地址由长度为address-length个字节、以Head:Mid:Tail形式表示的一个序列指示。Head、Mid或Tail不与任何语义相关联。这种独特的表示法使地址能够聚合,它通常具有共同的部分(例如,共同的前缀或同一个接口上的多个IP地址)。一个地址块包含了多个地址按顺序排列的一个集合,这些地址共享相同的Head(地址的头部)和相同的Tail(地址的尾部),但各自具有单独的Mid(地址的中间部分)。Head和Tail各自都可以独自为空,使其能够表示不具有共同的Head或共同的Tail的多个地址对象。
RFC5497为2009年3月正式公布的一个互联网标准跟踪协议,该规范规定了一种通用的时间TLV结构,任何一个MANET路由协议都可使用它来表达单时间值或一组时间值[5]。
RFC5497基于RFC5444规定的TLV格式机制,允许将一个“值”与一个分组、一个消息或多个地址关联起来。在这三种情形中实现其关联的数据结构都是一样的。可是,该TLV在一个接收分组内的位置,能够确定那个TLV是否为一个“分组TLV”(出现在任何一个消息之前的分组头中)、一个“消息TLV”(出现在紧跟在一个消息头之后的 TLV块中)、或一个“地址块TLV”(出现在紧跟在一个地址块之后的TLV块中)。
一个时间值不是一个“绝对的时间点”,而是一个间隔或一个时间段。因而一个时间TLV例程能够将一个间隔或一个时间段表示为“10秒”。
RFC5497规定了两个消息TLV类型,采用建议的TLV结构。这些消息TLV类型为INTERVAL_TIME和VALIDITY_TIME,分别规定了在之前应该接收到另一个来自同一个始发节点的同一类型消息的最大时间,以及该消息内的信息在接收到之后一直保持有效的时间宽度。需要注意,如果这两者都存在,则后者通常将大于前者,以允许可能出现的消息丢失。
RFC5497还规定了两个地址块TLV类型,采用所建议的TLV结构。这些地址块TLV类型为INTERVAL_TIME和VALIDITY_TIME,其定义与两个同名的消息TLV相同。
RFC5497规定的时间TLV结构,将作为一个MANET路由协议的一个组成成分来使用,即在所传输的消息内包含一个时间TLV来指定一个特定消息类型在连续两次传输之间的预期间隔。
某些MANET路由协议可能对某些消息使用非常短的间隔,而对其它的消息采用非常长的间隔,或者可能根据观察到的行为来改变消息的传输率。例如,如果一个网络在某个时间点被观察到很高的拓扑动态变化特性,则一个非常短(亚秒级)的消息间隔可能比较适宜,而当该网络被观察到一直很稳定时,则数小时的消息间隔可能比较适宜。不同的MANET路由协议和它们的不同部署,可能具有不同的粒度要求和连续两次传输之间的最短与最长间隔门限要求。
此外,MANET路由协议部署通常采用带宽受限的无线网络接口,因而宁愿以计算复杂度来换取传输比特数的节约。在这种情形中采用的这些时间TLV所规定的消息间隔与信息有效时间不需要高精度的时间值。
RFC5497规定的TLV多值时间表示为RFC5444和OLSRv2所需要的时间值表示提供了基础性的支持。
RFC6130叙述了用于 MANET的1-跳和对称2-跳的邻域发现协议(NHDP),也称为邻居发现协议[6]。RFC6130 将原 OLSRv1(RFC3626)中的HELLO消息格式与消息产生、链路探测、邻居探测、局部信息库、接口信息库部分内容剥离出来,另外还增加了对链路质量表示的叙述。
RFC6130支持在一个MANET中每个路由器使用一个以上的通信信道。特别是在同一对路由器之间,可以存在一个以上的不同通信信道,每个通信信道可以具有不同的性能参数。例如,各个MANET路由器都安装有多个不同的无线接口,每个无线接口工作在不同的频率上,就属于这种情况。因此,RFC6130支持一个MANET路由器同时接入基于不同信道传输的多个无线子网,这个特点特别适合于具有多个重叠无线子网的战术组网应用。
为了方便MANET路由协议的使用,RFC6130支持建立一个MANET路由器的多个邻居的信息,并且支持一个路由器确定与每个邻居之间的每个链路是单向或双向的。
RFC6130规定的邻域发现协议,提供对邻域变化、链路双向性以及远达两跳的局部拓扑信息的持续跟踪。这些能力的组合允许一个MANET路由协议访问叙述链路建立/消失的信息,并且为选择减小的多点中继(MPR)集合和其它目的提供必需的拓扑信息。
RFC6130的主要功能,包括识别本路由器的1-跳邻居和对称的1-跳邻居、发现该路由器的对称2-跳邻居的接口网络地址、在信息库中记录邻居信息、MANET路由器根据信息库产生HELLO消息以及允许其它协议对信息库中的信息进行扩充。
RFC6130也采用了基于HELLO消息格式的局部信令,用于通告一个路由器和它具有的若干接口网络地址的存在,发现来自邻接路由器的那些链路的存在,对所发现的链路进行双向性检查,向它的1-跳邻居们通告所发现的那些链路及其是否对称的属性,进而发现那些对称的2-跳邻居。
OLSRv1在2003年成为了RFC的试验规范,它存在几个缺点。首先是其设计没有考虑任何形式的消息格式长度压缩机制,致使其信道开销较大,这对于带宽资源宝贵的无线网络应用十分不利;其次,OLSRv1的设计受到了传统有线IP路由思想的影响,包含的消息达四种,其中的MID消息(多接口申明)和HNA消息(主机和网络关联)纯属多余,增加了无意义的开销;第三,OLSRv1将所有的功能混杂在一起,使协议十分复杂;第四,OLSRv1没有定义链路代价的表示方法,致使其对QoS的支持能力太弱。
OLSRv2对OLSRv1的改进主要体现在以下几个方面:
1)将其分组与消息格式描述与处理功能部分剥离单出来独形成了RFC5444,将其HELLO消息的产生、转发及处理、链路探测、邻居探测、链路信息库等与链路管理密切相关的功能部分剥离出来单独形成了RFC6130。这样设计使协议功能划分清楚,使得软件的设计与实现更加容易,并且易于扩展。
2)OLSRv2去除了OLSRv1中的关于主地址与多接口的描述、去掉了OLSRv1中的主机和网络关联(HNA)消息,降低了开销。OLSRv2仅保留了HELLO和拓扑控制(TC)两种消息,并且这两种消息都完全采取基于RFC5444规范的消息格式。
3)TC消息具有传递节点附属子网信息的能力,使得OLSRv2已经不是纯粹的主机路由协议,而能支持许多IP子网的广域无线互联。
4)RFC5444提供的地址块压缩机制为OLSRv2提供了极大的压缩HELLO和TC消息开销的可能性。压缩后的TC消息由于分组长度较短,其在无线信道上成功洪泛的概率得到进一步地提高,增加了OLSRv2路由协议的适用范围。
5)OLSRv2将重点放在对邻居信息库、拓扑信息库、拓扑改变时修改信息库的处理以及基于MPR算法对TC消息的产生、转发与处理上。此外,OLSRv2支持采用更好的MPR算法。
6)在RFC6130增设了链路质量表示与使用的机制,增加了对链路代价的表示方法,使其能够较好地为网络的QoS提供支撑。
首先,OLSRv2与OLSRv1所采取的多点中继算法都为十多年前提出的基本算法,其泛洪优化效率并非是最佳的,最近几年研究者们提出了多种更好的MPR算法,包括扩展型多点中继(EMPR)、增强型扩展多点中继(EEMPR)等更优化的算法。这些新提出的改进型 MPR算法[7],能够进一步减少MANET中参与多点中继的MANET路由节点数量。其次,将朦胧视野链路状态(HSLS)路由算法与MPR机制融合,可以进一步减少TC消息的泛洪范围。最后,在存在多个无线子网重叠组网的应用中,可以采取无编号IP机制,不规划和分配无线接口的IP地址,仅为各个MANET路由器节点分配具有相同的IP网段/掩码的节点ID,充分利用RFC5497提供的地址块压缩机制来提高地址块压缩的效率[8]。此外,采取时间序号的机制能够避免重复泛洪[9]。
我们通过仿真实验,验证OSLRv2对OSLRv1协议开销性能的改进。本实验采用Windows XP操作系统的通用PC作为仿真实验平台,选择OPNET14.5仿真软件。
网络仿真环境模型参数如下。网络覆盖面积是1 500 m"1 500 m;节点个数为40个(均匀放置);物理层为802.11 b;节点移动模型为最大速度是50 m/s,最小速度是5 m/s。
路径损失为双径模式,信道损失为理想无衰落信道。MAC层采用IEEE 802.11 WLAN协议。
假设网络各节点采用前三字节相同的ID编码,便于OLSRv2的消息格式压缩机制发挥最大的作用。此外,还采用节点ID-子网映射机制。
在网络仿真过程中,采用不同的TC消息发送间隔,即5 s、10 s、20 s以及30 s。对每个协议分别在相同的连通场景中进行2小时的仿真运算。
图1显示了40个节点的仿真场景,在产生仿真场景时,丢弃了不连通的场景。为了对比有意义,没有统计OLSRv1中使用的MID和HNA这两种消息的开销总量。
图1 OLSRv1&v2对比的仿真场景Fig.1 Simulation scenario of OLSRv1 Vs.OLSRv2
图2显示了两个协议的泛洪总信息量开销的对比情况,OLSRv2的TC消息总开销比OLSRv1的泛洪消息总开销降低了大约60%以上。当OLSRv2结合了HSLS路由机制时,其开销更低,又降低了大约41%以上。可见,由于HSLS在时间和空间两个维度上分别抑制了大量的TC消息数量,能够进一步地降低泛洪开销。在对节点ID进行了合理规划后,能够使地址块压缩机制发挥最大的缩减信息能量的作用,有效地降低了拓扑泛洪的开销。
图2 OLSRv1与OLSRv2泛洪开销对比Fig.2 Flooding overhead of OLSRv1 Vs.OLSRv2
从整体情况来看,OLSRv2路由协议表现出更优越的性能。
文中针对OSLRv2草案的进展及其3个基础性RFC规范进行了叙述。首先介绍了IETF最新发布的从OLSR剥离出来并单独制定的3种基础性RFC规范;然后叙述了OLSRv2草案对OLSRv1在路由机制的设计和消息格式上的改进与提升。此外,还叙述了进一步减少路由消息泛洪开销的3种方法。最后,针对泛洪消息总量进行了仿真验证与对比,仿真结果表明,OLSRv2发送的信息总量要低于OLSRv1发送的信息总量。需要特别指出的是,OLSRv2并未叙述解决移动Ad Hoc网络路由安全的具体方法,在设计基于OLSRv2的战术路由协议时,对其安全性也应该做进一步的一体化考虑[10]。
[1]王莹,王中武,莫娴.定向Ad Hoc网络邻节点发现与跟踪技术[J].通信技术,2013,46(02):82-85.WANG Ying,WANG Zhong-wu,MO Xian.Study on Neighbor Discovery and Tracking in Ad Hoc Network with Directional Antenna[J].Communications Technology,2013,46(02):82-85.
[2]CLAUSEN T,JACQUET P,ADJIH C,et al.Optimized Link State Routing Protocol[EB/OL].(2003-10-05)[2013-12-10].http://www.ietf.org/rfc/rfc3626.txt.
[3]CLAUSEN T,DEARLOVE C,JACQUET P.The Optimized Link State Routing Protocol version 2[EB/OL].(2013-03-27)[2013-12-22].http://www.ietf.org/rfc/draft-ietf-manet-olsrv2-19.txt.
[4]CLAUSEN T ,DEARLOVE C.Representing Multi-Value Time in Mobile Ad Hoc Networks(MANETs)[EB/OL].(2009-03-19)[2013-12-17].http://www.ietf.org/rfc/rfc5497.txt.
[5]CLAUSEN T,DEARLOVE C,DEAN J,et al.Generalized Mobile Ad Hoc Network(MANET)Packet/Message Format[EB/OL].(2009-02-16)[2014-01-20].http://www.ietf.org/rfc/rfc5444.txt.
[6]CLAUSEN T,DEARLOVE C,DEAN J.Mobile Ad Hoc Network Neighborhood Discovery Protocol(NHDP)[EB/OL].(2011-03-27)[2014-01-05].http://www.ietf.org/rfc/rfc6130.txt.
[7]王中武,李大双,胡薇.OSPF向移动Ad Hoc网络扩展的一种新方法[J].通信技术,2013,46(02):35-37.WANG Zhong-wu,LI Da-shuang,HU Wei.A New Method for Extension of OSPF to MANET[J].Communications Technology,2013,46(02):35-37.
[8]姜庆,李大双.OLSR在广义Ad-Hoc网络中的扩展应用研究[J].信息安全与通信保密,2007(02):149-150.JIANG-Qing,LI Da-shuang.Application Research of OLSR in Generalized Ad-Hoc Network[J].Information Security and Communications Privacy,2007(02):149-150.
[9]王俊人,李大双.解决路由消息循环的一种新方法[J].通信技术,2011,45(05):56-57.WANG Jun-ren,LI Da-shuang.A New Method for Solving Looping Problem in Routing Message Distribution[J].Communications Technology,2011,45(05):56-57.
[10]陈尚义.移动互联网安全技术研究[J].信息安全与通信保密,2010(08):34-37.CHEN Shang-yi.Study on Security of Mobile Internet[J].Information Security and Communications Privacy,2010(08):34-37.