NS2仿真:两个移动节点网络连接及协议性能分析 |
您所在的位置:网站首页 › ns数据移动 › NS2仿真:两个移动节点网络连接及协议性能分析 |
NS2仿真实验报告2
实验名称:两个移动节点网络连接及协议性能分析
实验日期:2015年3月9日~2015年3月14日
实验报告日期:2015年3月15日
一、实验环境(网络平台,操作系统,网络拓扑图) 运行平台:虚拟机VMwareWorkstation11.0 操作系统:Linux/CentOS6.5仿真分析工具:NS2.35中的仿真软件ns,图形界面nam,编译工具awk,图表编辑器xgraph 网络拓扑图: 二、 实验目的 使用NS仿真软件模拟简单移动节点的网络传输模型,掌握无线网络传输协议的特性,并分析在模型图中,使用不同的网络传输协议的性能。使用NS2仿真工具xgraph画出吞吐量、丢包率以及延时等三种反映网络性能的指标,并作进一步的分析。 三、 实验内容及步骤(包括主要配置流程,重要部分截图) 在实验1的基础上,通过学习静态网络传输的简单模型,进一步学习无线自组织网络,其中包括一些常见的无线网络传输协议DSDV(Destination Sequenced Distance Vector)目标序列距离路由矢量算法、AODV(Adhocon DemandDistance Vector Routing)Adhoc网络的距离矢量路由算法、DSR(Dynamic Source Routing)等。比较在该模型下,使用不同路由协议时,各网络传输连通的状况。根据图表总结归纳各网络协议的优缺点以及性能分析。 3.1编写一个tcl脚本一般分为以下几个步骤 1) 创建模拟器对象用来定义和控制模拟过程。在这个过程中,首先创建一个simulator 对象。 # 创建新模拟器 set ns [new Simulator] 2) 设置跟踪文件# 跟踪文件和NAM文件创建 set tracefd [open trace2.trw] $ns trace-all $tracefd set namtrace [open sim12.nam w] $ns namtrace-all-wireless$namtrace $val(x) $val(y) # 吞吐量跟踪文件建立(用于最后分析) set f0 [open out02.tr w] set f1 [open out12.tr w] set f2 [open out22.tr w] set f3 [open out32.tr w] set f4 [open out42.tr w] # 丢包率跟踪文件建立(用于最后分析) set f5 [open lost02.tr w] set f6 [open lost12.tr w] set f7 [open lost22.tr w] set f8 [open lost32.tr w] set f9 [open lost42.tr w] # 传输延时跟踪文件建立(用于最后分析) set f10 [open delay02.tr w] set f11 [open delay12.tr w] set f12 [open delay22.tr w] set f13 [open delay32.tr w] set f14 [open delay42.tr w] 3) 创建网络拓扑结构。 set topo [new Topography] # 场景范围设置 $topo load_flatgrid $val(x) $val(y) #定义属性值(无线网络环境的固定模式) set val(chan) Channel/WirelessChannel ;#信道类型 set val(prop) Propagation/TwoRayGround ;#无线传输类型 set val(netif) Phy/WirelessPhy ;#网络接口类型 set val(mac) Mac/802_11 ;# MAC类型 set val(ifq) Queue/DropTail/PriQueue ;#接口队列类型 set val(ll) LL ;#链路层类型 set val(ant) Antenna/OmniAntenna ;#天线模式 set val(ifqlen) 50 ;#包的最大缓存数 set val(nn) 10 ;#移动节点个数 set val(rp) AODV ;# 路由协议(实验2的关键因素,与AODV替换) set val(x) 400 ;# 定义场景中X轴最大值 set val(y) 400 ;# 定义场景中Y轴最大值 Mac/802_11 set RTSThreshold_ 3000 Mac/802_11 set basicRate_ 1Mb Mac/802_11 set dataRate_ 2Mb 4) 配置节点属性# 对本次实验中将出现的无线节点的属性进行详细设置 $ns node-config-adhocRouting $val(rp) \ -llType $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 OFF \ -movementTrace ON
for {set i 0} {$i $holdseq } { puts $f10 "$now [expr ($bw10 -$holdtime)/($bw11 - $holdseq)]" } else { puts $f10 "$now [expr ($bw11 -$holdseq)]" } if { $bw13 >$holdseq1 } { puts $f11 "$now [expr ($bw12 -$holdtime1)/($bw13 - $holdseq1)]" } else { puts $f11 "$now [expr($bw13 - $holdseq1)]" } if { $bw15 >$holdseq2 } { puts $f12 "$now [expr($bw14 - $holdtime2)/($bw15 - $holdseq2)]" } else { puts $f12 "$now [expr ($bw15 -$holdseq2)]" } if { $bw17 >$holdseq3 } { puts $f13 "$now [expr($bw16 - $holdtime3)/($bw17 - $holdseq3)]" } else { puts $f13 "$now [expr($bw17 - $holdseq3)]" } if { $bw19 >$holdseq4 } { puts $f14 "$now [expr($bw18 - $holdtime4)/($bw19 - $holdseq4)]" } else { puts $f14 "$now [expr($bw19 - $holdseq4)]" } 9) 使用模拟器对象的run过程开始模拟proc stop {} { global ns tracefd f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11f12 f13 f14 #关闭trace文件,停止记录 close $f0 close $f1 close $f2 close $f4 close $f5 close $f6 close $f7 close $f8 close $f9 close $f10 close $f11 close $f12 close $f13 close $f14 # 用 xgraph 把吞吐量,丢包率,和延时显示在图像上 exec xgraph out02.tr out12.trout22.tr -geometry 800x400 & exec xgraph lost02.tr lost12.trlost22.tr lost32.tr -geometry 800x400 & exec xgraph delay02.tr delay12.trdelay22.tr delay32.tr -geometry 800x400 & exec nam sim12.nam # 重置Trace文件 $ns flush-trace close $tracefd exit 0 } puts"Starting Simulation..." $ns run 10) 结果分析模拟结束后,将得到保存模拟过程的traced文件,接下来的主要工作就是对于这个结果文件根据需求进行数据分析,同时可以用xgraph等画图工具直观的显示数据分析结果。 四、 实验结果(包括最终实验结果,重要部分截图) 4.1移动模型节点切换分析仿真开始时间为0.0s,此时执行代码$ns at0.0 "$app1 start",节点0和1之间通过中间的8个基站,寻找最佳的传输路径。其中节点0和1配置为sink节点,中间的基站为代理节点。节点0作为发射器,节点1作为接收器。
在第10s时,此时节点0和1通过节点2传输数据。节点0和1开始向着同一个方向前行,节点1的速度是节点0的两倍,也就意味着在节点1跑一圈的时候节点0与节点1相遇。(0->2->9->1)
第14.2s时,由于网络负载或者一些其他的原因导致节点0和1之间数据传输中断,节点0开始丢失数据,此时的数据记录文件开始记录丢失的数据,在切换到其他基站转发节点时,记录延时文件开始记录数据。
第15.8s时,由于节点的运动,出现远离最初连接的基站节点,距离远到数据无法继续传输时,此时节点0发送的信息几乎全部丢失,于是所有节点重新开始匹配新的路由信息。
第16.2s时,节点经过再次的匹配,连接到新的基站节点3和节点4上,数据传输开通。(0->3->4>1)
19s时节点1远离节点4,出现严重的数据丢失后,切换到节点7节点通路为:0->7->1,可以看出,在节点比较少的情况下,AODV协议是的节点之间始终保持在最佳连通状况。
第24.6s时,节点0和1在出现中断后,由于两个节点之间的距离在可以通信的范围之内,节点0和1直接通信,无需其他中转节点。这样的连通将持续保持到节点1超越节点0,并逐渐远离节点0的过程中,直到通信距离过远,不得已断开为止。
第30.4s节点1开始超越节点0,此时节点0和1继续保持通信。
第39.2s时,节点1远离节点0,由于距离过远,发生中断,并重新通过匹配,借助于其他节点保持连接。
正如这样的通信方法将一直保持到50.0s,即在第50s时,节点0和1各自回到原始的位置,通信路线为:0->5->3->1
4.2吞吐量、丢包率以及延时的分析 如下图所示,节点0和节点1之间数据传输,节点1的吞吐量保持相对稳定的增长。 如下图所示,节点0和节点1之间数据传输,节点1的丢包在15s左右出现严重的缺失,这是因为15s时,节点0和1由于通信距离不在两者在范围之内,重新进行切换到新的基站节点中去。
节点0和1在仿真开始时处于未接通状态,所以首先要经过各节点进行协商,设置出转接通信的节点,此时由上述的实验步骤可以看出,首先设置节点2和9为基站节点,负责转发节点0发出的信息。 五、试验中的问题及心得 5.1一些出现最多的问题 问题1Problems foundwith input data. Problems foundwith input data. Problems foundwith input data. 记录实验数据的文件没有设置开始记录的相关命令,应考虑加上如下的代码: # 定时发包开始及结束 $ns at 0.0"record" 问题2ns: puts"NS EXITING..." _o3 halt:wrong # args: should be "puts ?-nonewline? ?channelId? string" while executing "puts"NS EXITING..." _o3 halt" 考虑结束控制命令$ns at 60.0 "puts \"NSEXITING...\" $ns halt",中是否缺少分号”;”,即$ns at 60.0 "puts \"NSEXITING...\" ; $ns halt"。 还要考虑数据传输开始和结束的控制命令,也有可能引起这样的错误。 六、实验思考本次实验主要是通过学习移动节点在实际中是如何,通过不同的协议,比如在本实验中采用的是AODV路由协议,这时,通信节点之间自动的按照协议所规定的方法在仿真场景中进行连接。在上述实验中不宜使用DSDV协议,因为DSDV路由协议所有的节点都必须被告知路由信息,节点将长时间处于寻找路由的过程中,而不是进行通信。因此DSDV协议适用于节点稀疏时,易于实现的模型当中。 而AODV路由协议不同于表驱动路由协议,是一种特殊的按需距离矢量的反应式路由协议,每个节点中记录自己可达的节点,一旦出现某个节点不可达,则自动删除该记录,修复链路的连通性。大多数时间保持在一种可通信的状态。这种协议适用于节点密度比较大的情况,节和节点之间几乎是可实时通信的情况。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |