除此之外,DSR协议中也加入了一些优化技术来改善系统效率,比如路由缓冲技术(Route Cache)。
这里简单介绍一下DSR路由缓冲技术,由于无线广播信道的特点,节点可以监听到其相邻节点的所有广播报文,包括了路由请求和路由响应等,值得注意的是,这些报文中已经包含了很多网络中的路由信息,节点会缓存这些路由信息,这样节点就可以利用这些缓存的路由信息来选择路由发送信息,避免了过于频繁的启动发现过程,大大的提高了系统的效率。
(2)无线自组网按需平面距离矢量路由协议(AODV)
AODV(Ad hoc on-demand distance vector routing)也是一种源驱动路由协议。DSR由于在每个数据包报文头部加入了路由信息,增加了报文长度,影响了传输效率,尤其是在报文本身长度较短时,这一缺陷尤其明显。而在AODV协议中,每个节点都会动态的维护路由表,所以在数据的报文的头部不需要再像DSR协议一样携带整个路由的信息,协议效率大大提高。
(3)目的序列距离矢量路由协议(DSDV)
DSDV(Destination-Sequenced Distance-vector Routing),即目的序列距离矢量路由协议,此路由协议由Bellman-ford算法改良而来,是基于表驱动的路由协议,解决了更为原始的距离矢量路由协议里的无穷环路问题。
DSDV路由协议里的每个节点都动态的维护一张路由表,路由表包括了目的节点、跳数、下一跳节点和目的节点的序列号。目的节点序列号由目的节点分配,用于判断路由信息是否实时有效,并杜绝了路由环路这种情况。
网络中的每个节点都要和相邻节点交换路由信息,也会依据路由表的改变来进行路由更新,路由表的更新主要有以下两种方式:
(1)全部更新(Full dump):拓扑更新消息中会包含整个路由表,适用于网络拓扑变化较快的时候。文献综述
(2)部分更新(Incremental update):更新的消息里仅仅包括变化的路由,通常适用于网络拓扑变化比较慢的情况。
DSDV中只使用序列号最高的那个路由,当序列号相当时,则选择诸如跳数较少的最优路由。DSDV协议只能在源节点和目的节点之间生产单条路径,协议的主要参数有:更新周期、沉淀时间(settling time)以及路由的失效间隔时长。这些参数本质上是要在网络开销和路由有效性之间达成某种平衡,所以对DSDV来说尤其重要。
1.3.3 研究方法
此次仿真研究,利用基于linux的ubuntu13.10下的NS2 (Network Simulator 2)仿真平台,通过tcl脚本前期预设的Ad-hoc网络节点运动场景,赋予其运动特性和传输任务后,通过程序统计出各个时间段节点的位置、运动、传输情况,得到trace文件,再利用自带的awk工具,编写程序分析trace文件,得出吞吐量、平均端到端时延和丢包率等。具体方法将在下文详细表述。
2 NS2(Network Simulator version 2)及相关工具的简要介绍
本章主要介绍了NS2仿真平台以及使用方法,详细的分析了使用NS2仿真平台的仿真流程。并简要介绍了文本分析处理工具GAWK和其使用原理和方法。
2.1 NS2简要介绍
如果要验证网络协议的性能和正确性,我们就需要一个虚拟环境进行模拟。而NS2(Network Simulator version 2)是目前最为流行和实用的的仿真工具,并且已经被大多数高校用来对网络的各个环节进行分析和教学。该平台支持绝大多数常用协议,并且软件本身包含了大量的测试脚本。
NS2始于20世纪80年代的Real Network Simulator项目, 其源代码是完全公开的,版权上也完全免费,内含模块较多,几乎涵盖绝大多数的网络技术,已经被学术界和企业广泛使用相当长的一段时间,二在近期已经发表学术论文中,使用NS平台模拟的文章最为常见,由此可以认为NS的模拟结果是被学术界企业界认可和接受的。实际上NS是非常难于掌握的,从学习NS到可以熟练使用最少需要几个月的学习和练习。首先,NS是基于linux平台的软件,首先需要对linux相关知识进行学习才可以进一步接触NS。其次NS内容太过丰富,导致使用者不并不能第一时间就上手,需要进行一段时间的学习。最后,使用NS的话也需要网络相关知识以及诸如c++和tcl的编程知识,这会使初学者感到无从入手。有的使用者也可能对网络模拟的过程不甚了解,并且NS软件的仿真机制也较难理解,极大的影响到初学者对NS的掌握。令人遗憾的是目前也还没有一本书能够系统的解答这些问题,来!自~优尔论-文|网www.youerw.com Ad-hoc网络路由协议的仿真研究(3):http://www.youerw.com/tongxin/lunwen_77054.html