李阳
摘 要 Ad Hoc 网络(Mobile Ad Hoc Network,MANET)没有任何的固定基础设施,主机通过彼此无线电波通信,在军事通信、野外通信、应急通信等领域有着广泛的应用前景。
本文主要介绍用于Ad Hoc网络的AODV路由协议的原理,利用NS2构建一个网络模拟场景,对AODV协议的性能进行测试、分析。
从仿真来看,在相同的移动速度下,DSR和AODV协议的丢包率明显低于DSDV协议,特别是在网络拓扑较稳定时,DSR和AODV的丢包率相当低(接近0%),而DSDV的丢包率最高。随着移动速度的增加,各路由协议的端到端平均时延都在增加,其中DSR的增加幅度最大;在相同速度下,3个协议中DSDV具有最小的端到端时延,而DSR和AODV的端到端平均延迟较大。由于Ad Hoc网络的移动性使得AODV的性能有所下降,但总体来说,路由协议的总体性能很好,即使在节点的移动的情况下,网络分组传输的丢包率、平均的端对端延时都保持在较好的水平上。事实上,算法的网络性能随着网络参数的设计是不同的,受多方因素的影响,它们之间的关系还有待进一步研究。在具体规划网络结构时,应该对AODV参数作具体的设计,以确保网络性能的最优。
关键词 Ad Hoc 路由协议 仿真 AODV
1 课题背景及开展研究的意义
Ad hoc网络是一种自组织的无线多跳网,它不需要固定的基础设施作支撑。路由协议是Ad hoc网络协议栈的重要组成部分,在无线环境下Ad hoc网络的移动特性对路由协议提出了更高的要求。
(1)网络中所有节点都是移动的,并且都能以任意方式动态地保持与其他节点的联系,网络节点可以随处移动,也可以随时开机和关机,这些都会使网络的拓扑结构随时发生变化。
(2)两个无法直接进行通信的终端用户可以借助其他节点进行分组转发,每个移动节点兼备路由器和主机两种功能。
(3)Ad hoc网络通过分组转发完成数据的交换,需要路由协议进行分组转发决策。无线信道变化的不规则性和节点的移动、加入、退出都会引起网络拓扑结构的动态变化。从而路由协议完成监控网络拓扑结构的变化、路由信息的交换、寻找目的节点、产生、维护并优化路由,保持网络数据传输的畅通。
Ad hoc网络的路由协议大致可以分为先验式(Proactive)路由协议(如:DSDV)、反应式(Reactive)路由协议(如:DSR/ /TORA/ARP)以及混合式路由协议(如:AODV)。
先验式路由协议又称为表驱动路由协议(Table-driven),在这种路由协议中,每个节点维护一张包含到达其它节点的路由信息的路由表。当检测到网络拓扑结构发生变化时,节点在网络中发送更新消息,收到更新消息的节点将更新自己的路由表,以维护一致的、及时的、准确的路由信息,所以路由表可以准确地反映网络的拓扑结构。源节点一旦要发送报文,可以立即获得到达目的节点的路由。因此这种路由协议的时延较小,但是路由协议的开销较大。
反应式路由协议,又称为按需路由协议(On-Demand Routing),是一种当需要发送数据时才查找路由的路由算法。在这种路由协议中,节点不需要维护及时准确的路由信息,当向目的节点发送报文时,源节点才在网络中发起路由查找过程,找到相应的路由。与先验式路由协议相比,反应式路由协议的开销较小,但是数据报传送的时延较大。
在Ad hoc网络中单纯采用先验式或反应式路由协议都不能完全解决路由问题。由此可见,应用结合先验式和反应式路由协议优点的混合式路由协议是一种较好的折衷方案。下面对混合式的路由协议AODV(Ad hoc On demand Distance Vector Routing)进行具体的研究。
总之,AODV协议是一个比较好的路由协议,它能够实现路由的所用基本功能。同时AODV能够应对Ad hoc网络的节点移动的要求,在设定的路由延迟的情况下,表现出良好的性能。但由于未能考虑业务的QoS需求,在对传输质量要求较高的网络中,显得力不从心,尚待进一步完善。
通过对AODV路由协议的证明,我们可以得到衡量网络路由协议的标准。只有在理论分析和网络仿真的基础上对原有协议进行分析,才能改进原有的路由协议,不断提出有利于网络的性能提高的新的策略。
2 研究方法、内容 及预期目的
2.1 研究方法
在硬件条件不具备的情况下进行Ad Hoc网络AODV路由协议的性能分析,要花费巨资去建立实际系统,这是不现实的。因此,我们采用网络模拟(也称网络仿真)软件NS-2进行模拟分析。
NS-2是指 Network Simulator version 2,NS(Network Simulator) 是一种针对网络技术的源代码公开的、免费的软件模拟平台,研究人员使用它可以很容易的进行网络技术的开发,而且发展到今天,它所包含的模块已经非常丰富,几乎涉及到了网络技术的所有方面。所以,NS成了目前学术界广泛使用的一种网络模拟软件。在每年国内外发表的有关网络技术的学术论文中,利用NS给出模拟结果的文章最多,通过这种方法得出的研究结果也是被学术界所普遍认可的,此外,NS也可作为一种辅助教学的工具,已被广泛应用在了网络技术的教学方面。因此,目前在学术界和教育界,有大量的人正在使用或试图使用NS。
学习用于Ad Hoc网络的AODV路由协议的原理,利用NS2构建一个网络模拟场景,对AODV协议的性能进行测试、分析,并用NAM对网络运行情况进行动画演示。
2.2 研究内容
(1)在NS2中用setdest命令随机生成一个无线网络节点的运动场景,在500×500的区域中随机分布30个节点,每个节点随机选择运动方向和速度,最大运动速度为20m/s,到达目的地后停留10s继续运动,模拟时间是100s;
(2)对移动节点中各网络构件的主要类型参数进行设置:无线信号传输模式为TwoRayGround,MAC层协议类型为802.11,接口队列采用DropTail机制,采用全向天线;
(3)用cbrgen命令产生CBR业务,最大连接数是20,速率是每秒2个数据包,每个包的大小为512字节;
(4)用Gawk分析trace文件,并以端到端的延时和丢包率为指标评估AODV协议的性能。
端到端的延时定义为数据包接收过程的总延时与接收的数据包数目之比。
丢包率定义为丢失的数据包与发送的数据包之比。
3 仿真内容及结果分析
3.1 NS2仿真平台的建立
NS2是一种事先驱动的面向对象的网络仿真工具,它为用户提供了扩展、配置和编程的工具。它所用的仿真语言是Tool Command Language(TCL)语言的一个扩展。仿真通过TCL语言进行定义,利用ns命令编写脚本来定义网络拓扑结构、配置网络信息流量的产生和接收以及收集统计数据。NS2软件配有仿真过程动态观察器,可以在仿真运行结束后,动态察看仿真的运行过程,观察跟踪数据。软件还有图形显示器,显示从仿真中得到的结果数据,直观而且清晰。
NS2是一个用C++编写的面向对象仿真器,它的前端是一个OTCL解释器。仿真器内核定义了有层次结构的多种类,称为编译类结构。在OTCL解释器中有相似的类结构,称为解释类结构。从用户的角度来看,两种结构的类之间有一一对应的关系。用户通过解释器创立新的仿真对象之后,解释器对它进行初始化,与编译类结构中相应的对象建立映射。
NS2仿真器封装了许多功能模块,最基本的是节点、链路、代理、数据包格式等等,下面分别来介绍一下各个模块。
(1)事件调度器:目前NS2提供了四种具有不同数据结构的调度器,分别是链表、堆、日历表和实时调度器。
(2)节点(node):是由TclObject对象组成的复合组件,在NS2中可以表示端节点和路由器。
(3)链路(link):由多个组件复合而成,用来连接网络节点。所有的链路都是以队列的形式来管理分组的到达、离开和丢弃。
(4)代理(agent):负责网络层分组的产生和接收,也可以用在各个层次的协议实现中。每个agent连接到一个网络节点上,由该节点给它分配一个端口号。
(5)包(packet):由头部和数据两部分组成。一般情况下,packet只有头部、没有数据部分。
NS2软件是一个软件包,包括Tcl/Tk,OTCL,NS,Tclcl。其中Tcl是一个开放脚本语言;Tk是Tcl的图形界面开发工具;OTCL是基于Tcl/Tk的面向对象扩展,有自己的类层次结构;NS2为本软件包的核心,是面向对象的仿真器,用C++编写,以OTCL解释器作为前端;Tclcl则提供NS2和OTCL的接口,使对象和变量出现在两种语言中。
NS2仿真分两个层次:一个基于OTCL编程,NS2已有的网络仿真元素实现仿真,无需对NS2本身作任何改动,只要编写Tcl脚本便可;另一个层次是基于C++和OTCL的编程,用户可以利用OTCL和NS2的接口,编写C++程序,更新NS2来实现新的功能。
NS2定义了一个.tr格式的文件用于记录仿真的结果,通过脚本配置,可以指定文件名并对仿真过程进行跟踪,通过NS2中xgraph的解释,此记录文件可以以图形的方式显示仿真结果。为了使显示结果更逼真,NS2提供了一个用于产生动画效果的可视化工具:nam(NetworkAnimotar)。nam用于有线和无线网络的可视化,在nam中,执行仿真的人可以控制动画演示的速度,如正向播放、快速前进、快速后退停止运行等,以监视网络的行为(如队列的变化)。
3.2 生成运动场景
我们可以使用setdest来生成运动场景。setdest是CMU大学在NS中提供无线网模拟模块时提供的一个工具,可以用来随机生成无线网所需要的节点运动场景,即一定数量的节点在某个固定大小的矩形区域中随机朝某个目的节点运动,在到达该目的地后做一段时间的停留(也可以不停留)后选择另一个目的地随机选择一个速度继续运动。setdest可以指定场景的节点数,节点运动区域的长度和宽度及模拟场景的持续时间,节点在运动到一个目的地后停留的时间,节点随机运动速度的最大值等。最后还能指定生成场景的输出文件。使用setdest生成的场景文件,可以在NS控制台或者运行脚本中使用source命令调入。
实验中我们生成的场景是构建随机的节点运动场景,场景规模500m×500m,场景包括30个节点,信源采用CBR方式,在30个节点中随机选择20个节点,启动20个cbr数据流,每个流每秒钟产生2个512字节大小的数据包。这里节点运动的最大速率分别选择为0,10 m/s ,20m/s,30m/s,40m/s,50m/s,100m/s,200 m/s,其中速度100m/s,200m/s表示整个场景运动很激烈。
对于在NS2中 用setdest命令随机生成一个无线网络节点的运动场景以及用cbrgen命令产生CBR业务。
3.3 生成传输负载
我们可以使用cbrgen来生成传输负载(traffic overland),可以产生TCP流或者CBR流(Constant Bytes Rate Stream)。该工具能够指定有多少个节点,这些节点间的最大连接数,随机种子数,还可以指定每个连接间的流的负载量。如果产生的是cbr流,则包长固定为512MByte,rate值指定的是每秒发送多少个包。
在我的仿真中,是在30个节点当中选择20对节点启动20个cbr数据流,每个流每秒钟产生2个512M字节大小的数据包(ns cbrgen.tcl -type cbr -nn 30 -seed 1 -mc 20 -rate 2.0 >cbr)。
我们实验中将产生的cbr流文件输入到文件cbr中去。
3.4 编写tcl脚本文件
用于仿真的TCL脚本的编写是仿真中关键的一步。NS2主要通过TCL脚本来实现模拟场景的建立、配置和模拟中运行的程序。只有通过TCL脚本才能创建和管理拓扑结构,进行事件调度等。无线网络的脚本得编写,主要包括以下几个模块:
随着移动速度的增加,路由协议的丢包递率都呈上升趋势。这是因为随着移动速度的增加,网络拓扑结构的变化越来越剧烈,网络中的无线信道势必增加了大量的路由更新报文,特别是表驱动路由协议DSDV。每一次拓扑的变化都需要更新路由表中的内容,而DSR和AODV都是按需路由协议,只有在要发送分组时才需要建立路由。因此,按需路由协议对网络拓扑的变化的敏感度要比表驱动路由协议要低得多。
在相同的最大移动速度下,DSR和AODV协议的丢包率明显低于DSDV协议,特别是在网络拓扑较稳定时,DSR和AODV的丢包率相当低(接近0%),而DSDV的丢包率最高。随着移动速度的增加,各路由协议的端到端平均时延都在增加,其中DSR的增加幅度最大;在相同最大速度下,3个协议中DSDV具有最小的端到端时延,而DSR和AODV的端到端平均延迟较大。这是因为在需要发送数据时,DSDV路由协议通过查找路由表直接获取路由,因而延迟时间较小;而DSR和AODV是按需路由协议,它们在需要发送数据时才启动路由发现过程,查找可用的路由,因此延迟较大。移动速度的增加导致拓扑结构的频繁变化,从而使得各路由协议的端到端平均时延也相应地增加。
时延结果与AODV协议理论上是相符的,AODV协议采用了路由缓存技术,所以它的时延比DSDV协议大很多。在场景运动缓慢的情况下,时延几乎是DSDV协议的10倍。
另外,由于AODV路由协议是DSR和DSDV的综合,因此,在相同条件下AODV的时延较DSR要小得多。
通过对AODV的各个性能的仿真,我们可以看出AODV协议在不同的场景下保持良好的性能,可见这个协议的丢包率很低,时延也维持了一个比较平均的水平。可见AODV协议是一个较为稳定的,适用于各种网络场景的较好的路由协议。