摘 要 运用ns-2仿真,分析了ad hoc网络几种协议(DSDV、AODV、MFlood)的性能,如吞吐量、丢包、时延。结果表明DSDV、AODV的性能优于MFlood,以及今后的改进方向。 关键词 ad hoc网络;ns-2;路由协议;性能 0 引言 移动自组网(Mobile Ad Hoc Network, ad hoc网络或MANET)是一种移动、多跳、自律式系统,它是一种不依赖固定基础通信设施的无线移动网。在结构上ad hoc网络是一系列可任意移动的节点组成,网络节点动态分布,节点之间通过无线方式互连,每个网络节点同时具有终端和路由器的双重功能。移动ad hoc网络的应用主要有:移动会议;携带包含ad hoc收法器的PDA可以通过无线方式自动从台式机上下载电子邮件等;家庭联网;紧急服务;传感器网络;个人域网络;军事无线通信;其他商业应用。 Ad hoc网络是一组具有无线收发装置的移动节点组成的一个多跳的临时性的自组织系统,具有以下一些主要特征:动态拓扑,即网络中的节点可以任意移动,因此,网络的拓扑结构也可能会变化;链路带宽受限、容量时变,由于拓扑动态变化导致每个节点转发的非自身作为目的地的业务量随时间而变化,因此与有线网络不同,它的链路容量表现出时变特征;动力受限,能量受限,由于网络节点的移动特征,其中大多数节点以电池作为动力,在进行系统设计时节能就成为一个非常重要的指标;物理上安全有限,移动网络比固定网络(有线和无线)更易受到安全威胁,需要克服无线链路的安全弱点及移动拓扑所带来的新的安全隐患,因此,传统的用于固定网络的路由协议不适用于Ad hoc网络。 由于ad hoc网络的特点,广泛一应用于各种场合,对路由协议有了一些新的要求,如何更好地应用这种自组织的网络,满足更多的应用,首先应该掌握现有的一些协议的特点。用ns-2.28这种网络仿真器对ad hoc网络的几种路由协议进行研究,分析比较它们适用的场合,同时也可以指导今后进一步的研究,比如考虑QOS的路由协议改进等等。1 现有的几种协议介绍 由于ad hoc网络的结构分为平面式和分层式,各自有不同的路由策略,在这里主要是针对平面结构的ad hoc网络。在这样的网络中,从路由发现策略的角度,可分为主动路由协议(表驱动路由协议)和按需路由协议(反映式路由协议)两种类型。1.1 DSDV 目的序列距离矢量路由协议(DSDV)[2]是一种表驱动主动路由协议,每个节点都需要维护一个路由表,路由表项的内容包括目的节点、跳数和目的序号,每个节点周期性与邻节点交换路由信息,来更新路由表,路由发现只有通过路由表来进行。主动路由协议采用周期性的路由分组广播来交换路由信息,每个节点维护去往全网所有节点的路由表。主动路由的优点是当节点需要发送一个去往其他节点的数据分组时,只要路由表中存在路径,发送分组的延时就很小,缺点是动态变化的拓扑结构又可能使路由表的内容无意义,只有重新交换路由信息以获得新路由的路径,这样增加了网络的负载,也增加了维护路由表的难度。1.2 AODV 按需路由协议是根据节点的需要来进行路由发现过程,网络拓扑结构和路由表内容也是按需建立的,不需有去往网络内各个节点的路径,因此,不需要周期性的广播路由信息,节省了一定的网络资源;在需要发送数据分组时,因没有去目的节点的路由,要临时启动路由发现机制来寻求路由,有一定时间的延时,路由发现过程通常采用全网洪泛机制进行搜索。IETF的MANET工作组提出的标准草案动态源路由DSR(Dynamic Source Routing)协议和Ad hoc按需距离矢量AODV(Ad hoc On Demand Distance Vector)[3]路由协议都属于按需路由协议。这两种协议DSR采用源路由,每个数据分组都携带从源到终点的完整路径,中间节点不需要维持路由信息,AODV采用逐跳(hop-by-hop)的方式转发分组路由表中记录了到目的节点的下一跳,不需要在报文中携带完整的路由消息,报文有:RREQ、RREP、RERR,HELLO。DSR协议包括路由发现和维护两个过程,主要特点是使用了源路由机制进行分组转发,每个数据分组都携带了路径信息,造成协议开销较大,而且不适应网络较大的自组网,网络可扩展性不强。AODV也包含了路由发现和路由维护,采用了逐跳转发分组方式,每个中间节点隐式保存了路由请求和回答的结果,而DSR将结果显式保存在路由请求和路由回答分组中。在AODV中,HELLO报文获得邻居节点的信息,RREQ报文发起路由请求,RREP进行路由应答,RERR表示链路出现问题,此路不通,不支持单向信道,因为AODV协议基于双向信道的假设工作,路由应答分组直接沿着路由请求的反方向回到源节点。DSR协议和AODV协议比较适合于节点依靠电池供电能量受限和网络节点间的通信任务具有突发特点的网络环境。1.3 MFlood 无线路由通讯协议(wireless routing protocol,MFlood),它是一种泛洪协议,向整个网络广播,每个包只转发一次,维护一张路由表记录以前转发过的包,每一条路由表项针对每个数据源记录了为它转发过的数据包情况。每个节点维护一个序列号SEQ,数据源每发送一个数据包将SEQ增加1,并把该序列号加到数据包的报头信息中,其他节点收到一个数据包后依靠序列号来判断自己是否转发过该包。2 ns-2网络模拟器 ns-2是美国DARPA支持的项目VINT(Virtual InterNet Testbed)开发的通用的多协议网络模拟软件,开发的源代码使研究者更好的进行各种算法的实现和协议的改进。 ns是一个离散事件模拟器,事件规定系统状态的改变,状态的修改仅在事件发生时进行,典型的事件有分组到达、时钟超时等。同时,ns还具有丰富的构件库,对一些通用的实体进行了建模,对象易于组合,扩展。ns的构件库支持的网络类型有:广域网、局域网、移动通信网、卫星通信网等,支持的路由方式有:层次路由、动态路由、多播路由等,ns还提供跟踪和监测对象,可以把网络系统中的状态和事件记录下来以便分析,如:tracefile,生成.tr文件记录了仿真过程的数据信息,从中可以提取有用的数据信息。ns还提供动画模拟整个过程:nam,画出仿真曲线:xgraph,gnuplot等,方便使用者分析得到结果。ns的构件库是用两种面向对象的语言编写的:C++和Otcl。C++是一种程序设计语言,学程序的人多知道,Otcl是MIT开发的ObjectTCL,即Tcl的面向对象的扩展,Tcl的全称是Toolkit command language,它是一种灵活的、交互式脚本语言,Otcl在Tcl中加入类、实例、继承等面向对象的概念。ns的构件通常作为一个C++类来实现,同时有一个Otcl类与之对应。构件的主要功能在C++中实现,Otcl中的类则主要提供C++对象面向用户的接口。用户通过编写Otcl脚本来对这些对象进行配置、组合,模拟过程,最后调用ns完成模拟。 ns模拟的步骤大致如下:编写Otcl脚本,配置网络结构,确定拓扑图,建立协议代理,设置网络事件,要传输的文件,用ns解释执行脚本,分析trace文件,得出有用的数据,用工具画出曲线图,或用Nam工具观看网络模拟运行过程。3 仿真过程和性能分析 在对Ad hoc网络协议:表驱动路由协议DSDV,按需路由协议AODV(按需路由以AODV为代表)和泛洪路由协议MFlood进行模拟,进行性能评估时,主要考虑如下性能参数:①端到端的数据吞吐量②延时③丢包率。 在这个仿真过程中,建立网络模型的相关参数有:50个节点在1000×1000的范围运动,MAC层的协议是802.11,一个包最大分组是50,测试应用层的CBR报文的传输,报文大小为512bytes,CBR的速率为200kbits/sec,总共模拟时间是30sec。节点最大移动速度为2m/s,平均移动速度为1m/s,节点在运动到达目的节点后不停留,节点0在1.4秒开始发送报文,节点1在5秒开始发送,节点2在8秒开始发送,节点3在10秒开始发送。 以0节点为研究对象。 图表1显示了整个网络的吞吐量和时间的关系。由于MFlood是洪泛的路由方式,一开始由于不知网络的结构,向整个网络广播,随着时间的推进,路由表的滞后使得整个网络的吞吐量明显下降了。DSDV刚开始时较低,到一定的时间后,吞吐量增加和AODV的吞吐量比较接近,变化也相似。AODV因为要进行路由发现,发送大量的包使得它的吞吐量一下上去了,直到建立好路由表,其变化也和DSDV接近了。 图表2显示了时间和丢包的关系。MFlood的丢包比其它三个协议的更严重,这是由于它采取了洪泛广播的方式。在这里DSDV在25秒出现的一个高峰,这是由于节点迅速移动的结果,但从总体上说,DSDV和AODV都有路由发现机制,丢包要相对少一些。
图表 1图表 2图表 3 图表3显示了时间和时延的关系。由图可知,DSDV在25秒也就是图表2的丢包高峰时有个对应的高时延,这一个时延的高峰,是发送包的节点增加和运动造成的,它必须再次启动路由发现机制更新路由表。MFlood的综合时延也比DSDV和AODV要高一些,DSR和AODV在这样网络环境的配置下,时延接近,几乎为零。 从图表2和图表3可以看出,当DSDV由于节点移动出现链路断裂,由于靠路由表的信息会出现这种短暂的时延;而AODV它是动态的路由机制,在处理路由端裂,反应比较快,所以对AODV影响不是很大。4 结论和今后发展方向 几种路由协议的性能分析比较:①在按需路由协议中,节点实时地维护网络拓扑信息,分组的发送时延小,而且通过这些拓扑信息,比较容易实现路由的优化及Qos路由。②在表驱动路由协议中,当节点在发送分组时没有到目的节点的路由时,需要启动相应的路由发现机制搜寻路由,这样会产生一定的时延,不利于实时业务的传输。随着网络规模的扩大,节点移动速度的增加,网络拓扑变化变快,要想实时维护拓扑结构需要大量的信息,这些控制信息将会占用大量的无线信道资源,从而影响用户数据报文的发送,降低了系统吞吐量。在网络负荷比较大的情况下,网络性能下降很快。在拓扑变化频繁的ad hoc网络环境中,应采用按需路由协议;在网络拓扑结构相对稳定的环境中,如果业务对实时性要求较高时,应尽量采用表驱动方式的路由协议。③在这里我们把按需和表驱动的路由协议和纯洪泛的协议MFlood做了比较,可以看出,对路由机制的改进会增强协议的性能,更好运用到应用中去。 从上述的结论中我们可以看出,按需路由协议的扩展性要比表驱动的路由协议好,有着很好的改进基础,今后可以改进的方向有:采用路由缓存技术,以加快路由发现过程,减少路由请求消息对信道的占用;通过使用位置信息以减少路由请求信息的洪泛;通过限制路由请求消息传播的距离,来减少路由请求消息的洪泛。通过对现有协议的认识,明白存在的问题有助于我们下一步工作的开展。参考文献 [1]湖北师范学院 陈年生.基于Qos的Ad hoc网络路由协议研究.吉林化工学院学报[J],2004,6(2):59-63 [2]方旭明.移动Ad Hoc网络研究与发展现状.数据通信[J],2003,4:15-18 [3] 北京邮电大学, 陈晋伦,周正.Ad hoc网络技术及研究现状.网络通信[J],2005,6:33-37 [4]http://www.isi.edu/nsnam/ns [5]徐雷鸣,庞博,赵耀.《NS与网络模拟》[M].北京:人民邮电出版社,2003-11