基于NS2的Ad Hoc网络AODV路由协议性能评估的仿真

基于NS2的Ad Hoc网络AODV路由协议仿真

仿真环境:ubuntu13.04   ns2.35

理论基础:NS2(Network SimulationVersion 2)是一款功能强大的网络模拟仿真,它是用C++和OTCL两种语言完成的。C++语言编写协议执行模块,OTCL语言编写模拟任务。NS2主要针对有线局域网、无线局域网、Ad Hoc网络、卫星通信网、路由选择协议、组播路由协议等进行网络模拟仿真。

AODV路由协议

AODV综合使用了DSDV(Destination-SequencedDistance-Vector)中目标序列号和DSR(Dynamic Source Routing)中按需路由发现技术,提供了一种按需单向距离矢量无环路由。该协议主要分为路由发现和路由维护两部分。

路由发现:当源节点需要与其它节点通信但没有到目的节点的路由时,它就广播路由请求RREQ,当其它节点收到这个RREQ时,首先判断是否收到过具有相同源节点和目的节点的RREQ,如果是重复收到就丢弃,如果没有就利用RREQ中的信息建立反向路由。如果中间节点含有到目的节点的路由,就发送路由应答 RREP给源节点,否则广播该RREQ。当RREQ的目的节点收到RREQ时,同样建立反向路由,然后向RREQ的源节点发送RREP。

路由维护:节点通过MAC层周期性广播hello消息来判断链路状态,如果该节点连续3次未收到Hello响应消息,就认为链路已经断开,并删除包含该链路的路由信息,发起路由错误RERR,通知相邻结点和相应的上游结点删除因链路断开而导致目的结点不可达的路由信息。

NS2 仿真一般步骤

NS2 仿真可以分为构件的扩展阶段, 仿真阶段, 对仿真结果分析阶段。 一般分为以下几个步骤:

( 1 ) 编写所需构件: 即新构件的添加或移植。

( 2) 测试: 测试自己编写的构件是否通过。当 NS 库中的构件满足仿真需要(例如对NS 库已有的AODV、DSDV、 DSR等协议进行仿真) , 则第1步和第 2 步可以省略, 仿真过程直接从第 3 步开始。

( 3) 编写Otcl 脚本实验件: 配置仿真网络的拓扑结构, 确定链路基本特性, 移动节点所使用的路由协议, 节点的数量等, 并进行端设备的协议绑定, 设置仿真使用的场景和传输负载( TCP流或CBR(constant bit rate)流) , 设置仿真的开始和结束时间等。 并在脚本实验件里设置trace对象, trace 文件是记录仿真过程中发生所有事件的文件。 也可以同时设置nam对象,nam是用 于演示网络运行动画的工具。

( 4) 用NS命令执行脚本实验件: 执行后会在与脚本实验件同一目录下生成* . t r 的文件, 记录仿真结果。 如果在脚本实验件中设置了 nam 对象, 则会在同一目录下生成* .nam 的文件。

( 5) 分析trace文件: 由于t race文件比较大,我们需要编写gawk程序进行仿真后期的数据处理( 计算分组投递率、 路由负载、 吞吐量等) , 再用gnuplot绘图。

实验步骤

1.   生成随机场景:

本实验场景创建一个具有50个随机路点模型的移动节点,节点最大移动速度20m/s,场景范围长1000米,宽300米。

在上述路径下键入如下命令:

#ns cbrgen.tcl –type cbr –nn 50 –seed 1 –mc 10 –rate 2.0 >cbr1

该命令创建了一个具有50个移动节点、10对通信连接、每秒钟发送两个分组的以CBR为业务源的通信场景文件cbr1。

setdest -n 50 -p 0 -M 20 -t 300 -x 1000 -y 300 > scene1

该命令创建一个具有50个节点、节点在每个地点停留0秒(即不停留)、最大移动速度20m/s࿰

  • 2
    点赞
  • 53
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值