第4章 无线自组网络由协议仿真
使用NS2进行网络模拟的基本操作流程如图3.1所示。整个模拟过程主要有三个部分:一为修改源码,二为编写Tcl模拟脚本,三为分析结果。
(1)源码修改:这一步只有在模拟需要修改源代码时才进行考虑。
(2)Tcl/OTcl模拟代码编写:这是NS2模拟中最重要和必不可少的环节,大部分NS2的模拟工作实际就是编写Tcl脚本代码来描述网络结构、网络构件属性和控制调度网络模拟事件的启停过程。
(3)模拟结果分析:结果分析是真正体现模拟工作成效的重要一环,模拟结果分析主要是对trace文件进行分析。
NS仿真需要C++编译器和通用的操作系统(如各种UNIX、Linux或Windows系列)。进行仿真前,首先要分析涉及仿真的哪一个层次。Ns仿真分两个层次:
一个是基于OTcl编程的配置、构造层次,利用Ns已有的网络仿真元素实现仿真,无需对Ns本身进行任何修改,只要编写OTcl仿真脚本,如图4—2中流程卜2—4;
另一个层次是基于c++和OTcl编程的编译、配置层次,如果Ns中没有所需的仿真元素,Ns提供了用户自我升级或修改协议的技术,即利用OTcl和NS的接口类实现NS的更新,新NS生成流程如图4—2中l~3—5,然后再进行卜2—6流程完成
仿真。NS的仿真工作机制如图4—2所示。
21
电子科技大学成都学院课程设计论文
第4章 无线自组网路由协议仿真
4.1多路径协议介绍
多路路由是指为任意一对节点同时提供多条可用的路径,并允许节点主机[或应用程序)选择如何使用这些路径。多路路由算法为节点间提供多条路径,并确保发往其中一条路径的数据经由该路径到达目的地。多路路由网络是其中的路由器执行多路路由算法的网络。从理论上证明了按需多路径拥有较长的路径存活时间和更可靠路由信息,而且拥有良好的性能,并能减少部分拥塞。因此近年来多路径研究得到广泛关注 4.1.1 AOMDV协议
AOMDV(Ad hoc On-demand Multipath Distance Vector)按需多路径距离矢量路由协议是基于AODV的扩展,在路由发现过程获取多条无环且链路不相交路径。与AODV主要不同有两点:①建立和维护无环路由更新机制;②获取多条独立路径分布式协议的方法。AOMDV充分利用了AODV中已有的路由信息,因此只需要增加少量的额外开销以计算路径。为保证路径无环,仍使用AODV中的目的序列号来表明路由更新情况,并在内部数据结构增加广播跳数和下一跳列表来代替原来的跳数。AOMDV能够发现链路独立或节点独立路径。为发现节点独立路由,每个节点并不马上丢弃重复的RREQ信息,而是将通过相同源节点的不同邻居节点到达的RREQ中的信息保留下来作为节点独立路由。这是因为中间节点不会广播重复的RREQ,那么任意两个经源节点的不同邻居节点到达的RREQ就不会经过相同的节点。为得到多条链路独立路由,目的节点对重复的RREQ做应答而不考虑其第一跳。但为了确保RREP中第一跳的链路独立,目的节点只对来自不同邻居节点的RREQ做应答。经过这第一跳后,RREP沿反向路径回到源节点。每个RREP所经过的路径在中间节点可能会有交叉,但每个都沿着不同反向路径到达源节点以保证链路独立。
AOMDV协议能够在不增加额外的控制开销的基础上,只需对已有分组作微小 的改动,就可获取多条无环独立路径。AOMDV协议的中间节点只转发第一次收到 的RREQ分组,限制了RREQ在全网的泛洪,同时源目节点对间拥有多条可用的完 整的路径,有效的提高了协议性能。但AOMDV仍存在一些局限,如在一次的路由 发现过程中能获取多条无环的节点独立或者链路独立的路径,但每次却只使用一条 路径作为主路径发送数据,同时要等到所有路径都失效后才重新发起新的路由请
22
第4章 无线自组网络由协议仿真
4.1.2 移动节点的创建
(1)移动节点的配置:在NS2中,要创建一个移动节点,就必须在创建节点之前对节点进行配置。所谓点的配置就是在节点创建之前设定节点的各项属性,可以使用模拟器对ns的内部过程node-config{}来配置节点的属性。
移动结点基本配置参数如下:
$ns node-config –adhocRouting #配置adhoc网络的路由类型
-llType #数据链路层类型 -macType #MAC层类型 -ifqType #队列类型 -ifqLen #队列长度 -antType #天线类型
-propType #无线信号传输模型 -phyType #物理层类型 -channelType #信道类型 -topoInstance #拓扑对象
-agentTrace #是否打开应用层Trace -routerTrace #是否打开路由的Trace -macTrace #是否打开应MAC层的Trace
-movementTrace #是否打开节点位置和移动信息的Trace
(2)移动节点的创建:调用模拟器对象ns的内部过程node{}创建移动节点: for {set i 0} {$i < $opt(nn)} {incr i} { set node($i) [$ns node] }
4.1.3多路径计算
在这一节中,我们将提出一个基于路径选择熵的按需多路径路由协议SMDR.该协议由3个阶段组成:路由发现阶段,路由利用阶段以及路由维护阶段.算法采用AODV中的4种报文
21
电子科技大学成都学院课程设计论文
格式.它的开销相比AODV小.我们主要对路由利用阶段进行了扩展.图2显示了Ad Hoc网络多路径路由的结构.
4.2 无线自组网路由模拟的实现
4.2.1 无线自组网路由协议场景的构建
在无线模拟过程中,首先要建立移动场景,即移动节点的范围及其拓扑对象。 (1)移动范围:
set topo [new Topography] #创建拓扑对象,在节点设置时使用它来进行配置 $topo load_flatgrid 1000 1000 #设定一个1000x1000的屏幕
(2)创建God对象,God(General operations director)对象是一个存储关于环境、网络或者节点状态等全局信息的对象:
set god_ [create – god $val(nn)] #$val(nn)仿真节点号 4.2.2 TCP代理的创建和设置
(1)TCP代理创建步骤:
步骤一:创建一个Agent/TCP对象,作为分组的发送器; 步骤二:设置Agent/TCP对象的部分内部变量;
步骤三:创建一个Agent/TCPSink对象,作为分组的接收器; 步骤四:在发送和接收代理之间创建connect连接。 (2)TCP流的随机生成:
cbrgen工具可以用来随机生成TCP流,命令格式如下:
22