[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
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库ns2笔记(8)在线全文阅读。
相关推荐: