1、NS2仿真无线网络天线的影响陈巧媛1107400040罗琪1107400010姚正康1107400053李志恒1107400006基于NS2的无线网络仿真天线的影响电子信息工程112班 李志恒(1107400006)罗琪(1107400010)李志恒(1107400040)姚正康(1107400053)指导老师:刘外喜摘要 通过使用仿真软件Network Simulator 2 ,组建一个至少包含100个节点的基于Ad-hoc模式的无线网络,利用路由协议AODV,MAC协议802.11a,以及选择一种媒体接入方式(DCF或PCF)。各个节点以某种模式发送数据包,发送速率,发送模式自定,各个节点
2、可以固定可以移动。对于选用不同类型的天线,比较它们对性能的影响,分析原因。关键词 NS2仿真;无线Ad-hoc;路由协议AODV;MAC协议802.11;天线影响;Abstract Through the use of simulation software Network Simulator 2, to set up a wireless network based on Ad-hoc pattern contains at least 100 nodes, using the AODV routing protocol, MAC protocol 802.11a, select a med
3、ia access mode (DCF or PCF). Each node in a certain mode to send data packet sending rate, transmission mode, custom, each node can be fixed to mobile. The use of different types of antennas, comparing their performance impact, cause analysis. Key words NS2 simulation; wireless Ad-hoc; AODV routing
4、protocol; MAC protocol 802.11a; Antenna effect; 目录1、前言2、NS2仿真软件介绍3、具体步骤4、仿真结果分析附录:性能测试代码1、前言 Ad hoc网络,自组织对等式多跳移动通信网络的简称。我们经常提及的移动通信网络一般都是有中心的,要基于预设的网络设施才能运行。例如,蜂窝移动通信系统要有基站的支持;无线局域网一般也工作在有AP接入点和有线骨干网的模式下。但对于有些特殊场合来说,有中心的移动网络并不能胜任。比如,战场上部队快速展开和推进,地震或水灾后的营救等。这些场合的通信不能依赖于任何预设的网络设施,而需要一种能够临时快速自动组网的移动网络。
5、Ad hoc网络可以满足这样的要求。 AODV这个路由器协议允许无线节点很快地获取许多路径到达它所想要到达的目的地,而且并不要求这些无线节点去维护这些到目的端的路径。 在AODV中,当某一个无线节点欲传送封包给另一个目的地节点时,会先去检查它的路径表。若找不到可到达目的地节点的路由入口,此节点便会去广播送出Route Requests(RREQ)封包寻找新路径,收到RREQ的无线节点会先去检查此封包的目的地地址是否为自己,如果不是,则再看看此中继点是否有一条可用的路径可以到达目的地节点,如果美亚,先根据封包内的信息修改路径表后,再把它广播出去。 每一个RREQ都配有一个ID,当某一个无线节点收
6、到一个RREQ,会险去确认之前是否也收到过,假如收到了,就将此封包丢弃,这样可以防止RREQ无限充斥在这个对称式点对点无线网络中,以确保各无线节点中各路由表的路径是无循环的。当中继点收到RREQ的信息后,如果RREQ中所记载的目的地地址是自己,则先根据RREQ中所记载的路径信息去更改路径表。 如下介绍几个性能参数: ( 1) 分组投递率PDF(Packet de livery fraction ),即目的节点收到分组数目与源节点产生分组数目的比值。该指标表明路由协议有效性和适应网络变化能力。反映协议的完整性和正确性。(PDF = 目的节点接收数据分组/ 源节点发送数据分组) ( 2) 端到端平
7、均延时(Average end2to2end delay),含所有延时,如发送缓冲器等待时间、接口队列排队时间、MAC层重传时间。 ( 3) 路由负荷(Normalized routing load),即每个到达目的节点数据分组所需传输的路由分组的总数。路由负荷是比较不同协议性能差别的重要指标。它用于衡量协议的效率、可扩展性、在低带宽或拥塞情况下的性能和能耗效率。(routing load = 路由包的数目/ 目的节点接收数据分组)(Average delay = 目的节点分组接收时间- 源节点分组发送时间) ( 4) 丢包率((Packet drop fraction),丢弃分组占接收到数据
8、分组的比率。该指标是反映网络衡量协议效率、可扩展性、在低带宽或拥塞情况下的性能和能耗效率。(丢包率=所有丢弃的分组/接收端应用层接收数据分组)(5)吞吐量(Throughput),吞吐量是指在没有帧丢失的情况下,设备能够接受的最大速率。2、NS2仿真软件介绍 NS2是指 Network Simulator version 2,NS(Network Simulator) 是一种针对网络技术的源代码公开的、免费的软件模拟平台,研究人员使用它可以很容易的进行网络技术的开发,而且发展到今天,它所包含的模块几乎涉及到了网络技术的所有方面。所以,NS成了目前学术界广泛使用的一种网络模拟软件。此外,NS也可
9、作为一种辅助教学的工具,已被广泛应用在了网络技术的教学方面。因此,目前在学术界和教育界,有大量的人正在使用或试图使用NS。 NS2(Network Simulator, version 2)是一种面向对象的网络仿真器,本质上是一个离散事件模拟器。由UC Berkeley开发而成。它本身有一个虚拟时钟,所有的仿真都由离散事件驱动的。目前NS2可以用于仿真各种不同的IP网,已经实现的一些仿真有:网络传输协议,比如TCP和UDP;业务源流量产生器,比如FTP, Telnet, Web CBR和VBR;路由队列管理机制,比如Droptail , RED和CBQ;路由算法,比如Dijkstra等。NS2
10、也为进行局域网的仿真而实现了多播以及一些MAC 子层协议。 NS2使用C+和Otcl作为开发语言。NS可以说是Otcl的脚本解释器,它包含仿真事件调度器、网络组件对象库以及网络构建模型库等。事件调度器计算仿真时间,并且激活事件队列中的当前事件,执行一些相关的事件,网络组件通过传递分组来相互通信,但这并不耗费仿真时间。所有需要花费仿真时间来处理分组的网络组件都必须要使用事件调度器。它先为这个分组发出一个事件,然后等待这个事件被调度回来之后,才能做下一步的处理工作。事件调度器的另一个用处就是计时。NS是用Otcl和C+编写的。由于效率的原因,NS将数据通道和控制通道的实现相分离。为了减少分组和事件
11、的处理时间,事件调度器和数据通道上的基本网络组件对象都使用C+写出并编译的,这些对象通过映射对Otcl解释器可见。3、具体步骤3.1 仿真代码#Define optionsset val(chan) Channel/WirelessChannel ;# channel typeset val(prop) Propagation/TwoRayGround ;# radio-propagation modelset val(netif) Phy/WirelessPhy ;# network interface typeset val(mac) Mac/802_11 ;# MAC typeset v
12、al(ifq) Queue/DropTail/PriQueue ;# interface queue typeset val(ll) LL ;# link layer typeset val(ant) Antenna/OmniAntenna ;# antenna modelset val(ifqlen) 100 ;# max packet in ifqset val(nn) 3 ;# number of mobilenodesset val(rp) AODV ;# routing protocolset val(x) 600 ;# X dimension of the topography s
13、et val(y) 200 ;# Y dimension of the topographyset val(stop) 10.0# =# Main Program# =# Initialize Global Variables#set ns new Simulatorset tracefd open mflood-3nodes.tr w$ns_ trace-all $tracefdset namtrace open mflood-3nodes.nam w$ns_ namtrace-all-wireless $namtrace $val(x) $val(y)# set up topography
14、 objectset topo new Topography$topo load_flatgrid $val(x) $val(y)# Create God#create-god $val(nn)# Create the specified number of mobilenodes $val(nn) and attach them# to the channel. # Here two nodes are created : node(0) and node(1)# configure node $ns_ node-config -adhocRouting $val(rp) -llType $
15、val(ll) -macType $val(mac) -ifqType $val(ifq) -ifqLen $val(ifqlen) -antType $val(ant) -propType $val(prop) -phyType $val(netif) -channelType $val(chan) -topoInstance $topo -agentTrace ON -routerTrace ON -macTrace ON -movementTrace OFF for set i 0 $i $val(nn) incr i set node_($i) $ns_ node $node_($i)
16、 random-motion 0 ;# disable random motion # Provide initial (X,Y, for now Z=0) co-ordinates for mobilenodes#$node_(0) set X_ 100.0$node_(0) set Y_ 100.0$node_(0) set Z_ 0.0$ns_ initial_node_pos $node_(0) 60$node_(1) set X_ 300.0$node_(1) set Y_ 100.0$node_(1) set Z_ 0.0$ns_ initial_node_pos $node_(1
17、) 60$node_(2) set X_ 500.0$node_(2) set Y_ 100.0$node_(2) set Z_ 0.0$ns_ initial_node_pos $node_(2) 60# Now produce some simple node movements# Node_(1) starts to move towards node_(0)#$ns_ at 5.0 $node_(1) setdest 250.0 150.0 15.0$ns_ at 1.0 $node_(0) setdest 150.0 180.0 10.0# Node_(1) then starts
18、to move away from node_(0)$ns_ at 5.0 $node_(2) setdest 590.0 180.0 15.0 # Setup traffic flow between nodes# TCP connections between node_(0) and node_(1)set tcp new Agent/TCP$tcp set class_ 2set sink new Agent/TCPSink$ns_ attach-agent $node_(0) $tcp$ns_ attach-agent $node_(2) $sink$ns_ connect $tcp
19、 $sinkset ftp new Application/FTP$ftp attach-agent $tcp$ns_ at 0.5 $ftp start $ns_ at 9.5 $ftp stop# Tell nodes when the simulation ends#for set i 0 $i $val(nn) incr i $ns_ at 10.0 $node_($i) reset;$ns_ at $val(stop) stop$ns_ at $val(stop) puts NS EXITING. ;$ns_ haltproc stop global ns_ tracefd namt
20、race $ns_ flush-trace close $tracefd close $namtrace exit 0puts Starting Simulation.$ns_ run4、仿真结果及分析4.1天线性能比较4.1.1吞吐量图4.1.1 吞吐量4.1.2分组丢失数量图4.1.2 分组丢失数量(分组数)4.1.3信号发送数量图4.1.3 信号发送数量(分组数)4.1.4端到端平均延时/抖动图4.1.4端到端平均延时/抖动4.2数据列表Antenna吞吐量分组丢失数量信号发送数量端到端平均延时端到端平均抖动Omni35791.152120.8910.287Directional4187
21、0.021000.2530.0744.3结论分析 基于路由协议为AODV,MAC协议为802.11的无线仿真网络当中,当以DCF媒体接入方式时,由图可以看出定向天线的吞吐量、分组丢失数量、信号发送数量以及端到端平均延时或抖动都较全向天线要优胜。附录:(1)丢包率数据awk处理脚本graph_lostRate.awk#count the packet lost rate of CBR BEGIN dropNum=0; totalNum=0; i=0; event = $1; time = $2; fromNode = $3; toNode = $4; pktType = $5; pktSize
22、= $6; flags = $7; fid = $8; srcAddr = $9; dstAddr = $10; seqNum = $11; pktId = $12; if(fromNode =1 & toNode =2 & event =+) totalNum+; timeArri=time; lossratei=(float)(dropNum/totalNum); i+; if(fid = 2 & event= d) dropNum +; END printf(#number of packet sent:%d,lost:%dn,totalNum,dropNum); printf(#los
23、t rate of packets:%fn,dropNum/totalNum); for(j=0;jhighestPktId) highestPktId=pktId; if(beginTimepktId=0) beginTimepktId=time; if(fid=2 & event!=d) if(event=r) endTimepktId=time; else endTimepktId=-1; END for(pktId=0;pktId=highestPktId;pktId+) begin=beginTimepktId; end=endTimepktId; pktDuration=end-b
24、egin; if(beginend) printf(%ft%fn,begin,pktDuration); (3)吞吐量awk代码throughput.awk#throughput BEGIN flag=0; i=0; event = $1; time = $2; fromNode = $3; toNode = $4; pktType = $5; pktSize = $6; flags = $7; fid = $8; srcAddr = $9; dstAddr = $10; seqNum = $11; pktId = $12; if(event=r & fromNode=2 & toNode=3 & fid=2) pktSumi+1=pktSumi+pktSize; if(flag=0) beginTime=time; flag=1; endTimei=time; i+; END printf(%.6ft%.5fn,endTime0,0); for(j=1;ji;j+) throughput=(float)pktSumj/(endTimej-beginTime)*8/1000; printf(%.6ft%.5fn,endTimej,throughput); printf(%.6ft%.5fn,endTimei-1,0);