ns2笔记(8)

2019-01-10 15:05

[2] NS2的无线网络的移动节点

无线模块最初是由CMU的Monarch工作组引入到NS中的。此无线模块不仅可以对WLAN或者多跳的Ad Hoc等无线网络进行模拟,还可以模拟有线和无线混合的复杂网络。 移动节点的结构

无线模型的核心是移动节点(Mobile Node),它代表实际无线网络中的站点(Station, STA)。 移动节点是由一系列的网络构建构成的,这些构件包括:LL, ARP, IFq, Mac, NetIF (详见P.91图3.23) 注意:

(1)NS2中实现了WLAN采用的IEEE 802.11的DCF(Distributed Coordination

Function)MAC协议。此外,还实现了无线传感器网络(WSN)所使用的IEEE 802.15标准。 (2)802.11的MAC控制采用的是CSMA/CA (通过物理载波检测和虚拟载波检测[NAV网络分配矢量,表示媒介空闲剩余时间值]策略的结合);而以太网802.3的MAC控制采用是CSMA/CD。 移动节点的创建

创建无线网络的模拟场景最主要的就是创建移动节点。移动节点的创建与有线节点的创建不同。

主要的区别是:在创建移动节点之前,必须对移动节点进行配置。

创建一个移动节点的方法:

步骤一:调用模拟器对象ns的内部过程node-config{}对移动节点进行配置。 步骤二:调用模拟器对象ns的内部过程node{}真正地创建移动节点。 移动节点的运动

NS2中,移动节点可以在一个三维的拓扑中运动,然而实际上第三维(z轴)并没有被使用。这样移动节点就在一个z=0的二维平面中运动。 有两种方法使移动节点运动:

(1)确定节点的起始位置和终止位置,然后通过调用节点对象的内部过程setdest{}使节点从起始位置向终止位置移动。 注意:

通常将设置节点运动的代码存放在一个单独的场景文件中。NS2也提供了setdest工具用来随机生成无线网络所需要的节点的运动场景文件。当节点较多时,使用setdest工具自动产生节点的运动场景给Tcl编程人员带来了极大的方便。

[Attention!] 代码中的setdest是node对象的一个内部过程,而后面的setdest工具是NS2用来自动生成节点运动场景的工具,两者的含义完全不同。一个是内部过程,而另一个是工具。setdest工具的用法见P.94

代码自动生成以后,可以在Tcl脚本中使用source命令引入所生成文件中的代码,即:source scen-filename 但是在使用的时候必须要保证两点:1,source scen-filename这行代码必须

放在创建移动节点之后。2,自动产生的代码中的node数组、模拟器对象、god对象必须已经在Tcl脚本中创建并且名称相同。这样才可以直接使用。

(2)使用start命令使节点随机运动。

$mobilenode是移动节点对象,start命令能使移动节点从随机位置开始随机运动,终止位置和移动速度都是随机产生的。

[总结] 创建一个无线网络模拟场景的步骤

[3] NS2的无线网络的路由(1)创建一个拓扑对象,设定移动节点运动的范围。 (2)配置节点,调用模拟器对象ns的内部过程node-config{}配置节点。 (3)创建一个god对象,动态地保存各移动节点之间的连接关系。 (4)调用模拟器对象ns的node{}内部过程创建移动节点。

(5)调用god对象的set-dist{}过程,设置各节点之间的最短跳数。 (6)使用上面两种方法引发节点运动。

代理

在NS2中实现了4种Ad Hoc无线路由协议: 表驱动路由协议

(1)DSDV——是传统的距离向量算法的改进版本 按需路由协议

(2)DSR——包含路由发现和路由维护 (3)AODV——是DSR和DSDV的结合 (4)TORA

在NS2中,无线节点的Adhoc routing属性有4个可选值(DSDV、DSR、AODV、TORA),可以根据需要在配置节点时选择合适的路由算法。 [4] 无线网络的能量模型和无线传播模型 无线网络能量模型

NS2中实现的能量模型是一个节点的属性,它显示了移动主体的能量水平。在模拟开始时,节点的能量模型有一个初始值initialEnergy_。移动节点在发送数据和接受数据时都有能量消耗。在NS2中,可以通过 txPower_ 和 rxPower_ 这两个属性分别设定节点发送数据和接受数据时的能量消耗。 无线传播模型

NS2支持3种无线传播模型:FreeSpace、TowRayGround和Shadowing模型。 这些传播模型是移动节点用来预测接收到的每个分组的信号能量。 无线传播模型也是节点的一个属性,可以在节点配置时进行设定。

注意:

NS2提供threshold工具用来计算在某种传输模型下,如何设定接收功率阀值来控制无线传

输的范围。(需要用gcc对源文件进行编译,见P.100)

[5] 无线Trace无线Trace的格式有两个版本:老版本 和 修订版 详见P.102

[6] 无线网络模拟实例

模拟的范围区域为1000m*1000m,共有3个移动节点。在节点0和节点2之间建立一条

CBR/UDP的连接。在模拟时间200s时,节点1开始从位置(500,500)移动到(500,900),然后在500s时,再从位置(500,900)移动到(500,100)。全部的模拟时间为1000s。拓扑为: 0 (350,500) 150m 1 (500,500) 150m 2 (650,500)

??? #定义一些变量

??? set var(chan) Channel/WirelessChannel ;#物理信道类型 ??? set var(prop) Propagation/TwoRayGround ;#无线传输模型 ??? set var(netif) Phy/WirelessPhy ;#网络接口类型 ??? set var(mac) Mac/802_11 ;#MAC层类型 ??? set var(ifq) Queue/DropTail/PriQueue ;#接口队列类型 ??? set var(ll) LL ;#逻辑链路层类型 ??? set var(ant) Antenna/OmniAntenna ;#天线模型 ??? set var(x) 1000 ;#拓扑范围 ??? set var(y) 1000 ;#拓扑范围

??? set var(cp) \ ;#节点移动的模型文件 ??? set var(sc) \ ;#

??? set var(ifqlen) 50 ;#网络接口队列大小 ??? set var(nn) 3 ;#移动节点个数 ??? set var(seed) 0.0 ;#

??? set var(stop) 1000 ;#模拟的总时间 ??? set var(tr) exp.tr ;#Trace文件名 ??? set var(rp) DSDV ;#无线路由协议 ??? set AgentTrace ON ??? set RouterTrace ON ??? set MacTrace OFF ??? ???

??? #初始化全局变量

??? set ns [new Simulator] ??? $ns color 1 blue ??? $ns color 2 red ??? ???

??? #打开Trace文件

??? $ns use-newtrace ;#使用新的Trace格式 ??? set namfd [open nam-exp.nam w]

??? $ns namtrace-all-wireless $namfd $var(x) $var(y) ;#初始化Nam跟踪文件,并设置节点移动的横纵坐标最大值

??? set tracefd [open $var(tr) w] ??? $ns trace-all $tracefd ??? ???

??? #建立一个拓扑对象,以记录移动节点在拓扑内移动的情况 ??? set topo [new Topography]

??? $topo load_flatgrid $var(x) $var(y) ;#拓扑的范围为1000m*1000m ??? ???

??? #创建物理信道对象

??? set chan [new $var(chan)] ??? ???

??? #创建God对象

??? set god [create-god $var(nn)] ??? ???

??? #设置移动节点的属性

??? $ns node-config -adhocRouting $var(rp) / ??? -llType $var(ll) / ??? -macType $var(mac) / ??? -ifqType $var(ifq) / ??? -ifqLen $var(ifqlen) / ??? -antType $var(ant) / ??? -propType $var(prop) / ??? -phyType $var(netif) / ??? -channel $chan / ??? -topoInstance $topo / ??? -agentTrace ON / ??? -routerTrace ON / ??? -macTrace OFF / ??? -movementTrace OFF ???

??? for {set i 0} {$i<$var(nn)} {incr i} { ;#调用ns的内部过程node真正地创建移动节点

??? set node($i) [$ns node]

??? $node($i) random-motion 0 ;#节点不随机移动 ??? } ??? ???

??? #设定各移动节点的初始位置(在此粘贴setdest工具生成的代码) ??? ??? #

??? # nodes: 3, pause: 0.00, max speed: 5.00, max x: 500.00, max y: 500.00 ??? #

??? #设定节点的初始位置 ??? $node(0) set X_ 350.0 ??? $node(0) set Y_ 500.0 ??? $node(0) set Z_ 0.0 ??? $node(1) set X_ 500.0 ??? $node(1) set Y_ 500.0 ??? $node(1) set Z_ 0.0 ??? $node(2) set X_ 650.0 ??? $node(2) set Y_ 500.0 ??? $node(2) set Z_ 0.0 ???

??? #使用setdest内部过程引发移动节点运动

??? #$ns at 0.000000000000 \1.158984720490\

??? #$ns at 0.000000000000 \3.103096301305\

??? #$ns at 0.000000000000 \2.415969763538\ ???

??? #设置各节点之间的最短跳数

??? $god set-dist 1 2 1 ;#在节点1和2之间最短的hop数为1 ??? $god set-dist 0 2 2 ??? $god set-dist 0 1 1 ??? #

??? # Destination Unreachables: 2 ??? #

??? # Route Changes: 0 ??? #

??? # Link Changes: 0 ??? #

??? # Node | Route Changes | Link Changes


ns2笔记(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2018部编新人教版小学三年级语文上册 第三组教材 公开课教学设

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: