摘 要 运用ns-2仿真,分析了ad hoc网络几种协议(DSDV、AODV、MFlood)的性能,如吞吐量、丢包、时延。结果表明DSDV、AODV的性能优于MFlood,以及今后的改进方向。
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)是一种表驱动主动路由协议,每个节点都需要维护一个路由表,路由表项的内容包括目的节点、跳数和目的序号,每个节点周期性与邻节点交换路由信息,来更新路由表,路由发现只有通过路由表来进行。主动路由协议采用周期性的路由分组广播来交换路由信息,每个节点维护去往全网所有节点的路由表。主动路由的优点是当节点需要发送一个去往其他节点的数据分组时,只要路由表中存在路径,发送分组的延时就很小,缺点是动态变化的拓扑结构又可能使路由表的内容无意义,只有重新交换路由信息以获得新路由的路径,这样增加了网络的负载,也增加了维护路由表的难度。
1.2 AODV
按需路由协议是根据节点的需要来进行路由发现过程,网络拓扑结构和路由表内容也是按需建立的,不需有去往网络内各个节点的路径,因此,不需要周期性的广播路由信息,节省了一定的网络资源;在需要发送数据分组时,因没有去目的节点的路由,要临时启动路由发现机制来寻求路由,有一定时间的延时,路由发现过程通常采用全网洪泛机制进行搜索。IETF的MANET工作组提出的标准草案动态源路由DSR(Dynamic Source Routing)协议和Ad hoc按需距离矢量AODV(Ad hoc On Demand Distance Vector)路由协议都属于按需路由协议。这两种协议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