标准ns |
您所在的位置:网站首页 › ns无线信号边一个l › 标准ns |
时间: 2007-3-27 地点:科技宾馆 实验内容:标准ns-2.28下面无线网络的模拟 实验步骤: 1. 在ns-2.28下面建立一个文件夹wlan,把建立的pw.tcl文件放在此文件夹下面。 2. pw.tcl源文件 1. #纯无线网络模拟pw.tcl 2. # Parameter for wireless nodes 3. set val(prop) Propagation/TwoRayGround ;# radio-propagation model 4. set val(netif) Phy/WirelessPhy ;# network interface type 5. set val(mac) Mac/802_11 ;# MAC type 6. set val(ifq) Queue/DropTail/PriQueue ;# interface queue type 7. set val(ll) LL ;# link layer type 8. set val(ant) Antenna/OmniAntenna ;# antenna model 9. set val(ifqlen) 50 ;# max packet in ifq 10. set val(rp) DSDV 11. 12. 13. # 建立一个simulator实例 14. set ns [new Simulator] 15. 16. #建立topology对象 17. set topo [new Topography] 18. $topo load_flatgrid 700 700 19. 20. #设置trace 21. set f [open pw.tr w] 22. $ns trace-all $f 23. $ns eventtrace-all $f 24. set nf [open pw.nam w] 25. $ns namtrace-all-wireless $nf 700 700 26. 27. #创建god 28. create-god 2 29. 30. #无线节点配置 31. 32. $ns node-config -adhocRouting $val(rp) / 33. -llType $val(ll) / 34. -macType $val(mac) / 35. -ifqType $val(ifq) / 36. -ifqLen $val(ifqlen) / 37. -antType $val(ant) / 38. -propType $val(prop) / 39. -phyType $val(netif) / 40. -channelType Channel/WirelessChannel / 41. -topoInstance $topo / 42. -agentTrace ON / 43. -routerTrace OFF / 44. -macTrace ON / 45. -movementTrace OFF 46. 47. 48. #新建节点 49. set node(0) [$ns node] 50. set node(1) [$ns node] 51. set node(2) [$ns node] 52. 53. #节点标签与初始位置设定 54. $node(0) label "Node 0" 55. $node(0) set X_ 150.0 56. $node(0) set Y_ 150.0 57. $node(0) set Z_ 0.0 58. 59. $node(1) label "Node 1" 60. $node(1) set X_ 300.0 61. $node(1) set Y_ 300.0 62. $node(1) set Z_ 0.0 63. 64. $node(2) label "Node 2" 65. $node(2) set X_ 450.0 66. $node(2) set Y_ 450.0 67. $node(2) set Z_ 0.0 68. 69. #建立FTP业务,基于TCP来承载 70. set tcp1 [new Agent/TCP] 71. set sink1 [new Agent/TCPSink] 72. $ns attach-agent $node(0) $tcp1 73. $ns attach-agent $node(2) $sink1 74. $ns connect $tcp1 $sink1 75. set ftp1 [new Application/FTP] 76. $ftp1 attach-agent $tcp1 77. $ns at 5.0 "$ftp1 start" 78. 79. $ns at 0.0 "$node(0) reset" 80. $ns at 0.0 "$node(1) reset" 81. $ns at 0.0 "$node(2) reset" 82. 83. #节点移动性 84. $ns at 0.6 "$node(0) setdest 150.0 151.0 1.0" 85. $ns at 0.6 "$node(1) setdest 300.0 301.0 1.0" 86. $ns at 0.6 "$node(2) setdest 450.0 451.0 1.0" 87. 88. #事件安排 89. $ns at 50.0 "finish" 90. $ns at 50.1 "puts /"NS EXISTING.../"; $ns halt" 91. 92. 93. proc finish {} { 94. global ns f nf val 95. $ns flush-trace 96. close $f 97. close $nf 98. } 99. puts "Start Simulation..." 100. # run the simulation 101. $ns run运行ns pw.tcl
3.运行ns pw.tcl之后,结果如图:
4.采用nam软件对pw.nam进行观察。其过程如下:
3个节点停留位置设置为(150,151)、(300,301)、(450,451),这样节点0发往节点2的包就必须经过节点1的转发才可以到达。
5.对trace文件的分析和统计结果的绘制 首先运行 gawk ‘ $7==”cbr”||$7==”tcp”{print $0} ’ pw.tr >tcpdatas 对数据进行处理,得到(局部)数据: s 5.000000000 _0_ AGT --- 3 tcp 40 [0 0 0 0] ------- [0:0 2:0 32 0] [0 0] 0 0 s 11.000000000 _0_ AGT --- 4 tcp 40 [0 0 0 0] ------- [0:0 2:0 32 0] [0 0] 0 0 D 12.182997654 _0_ IFQ ARP 3 tcp 80 [0 0 0 800] ------- [0:0 2:0 32 1] [0 0] 0 0 s 12.191495725 _0_ MAC --- 4 tcp 132 [ 13a 1 0 800] ------- [0:0 2:0 32 1] [0 0] 0 0 r 12.192552432 _1_ MAC --- 4 tcp 80 [ 13a 1 0 800] ------- [0:0 2:0 32 1] [0 0] 1 0 s 12.196391675 _1_ MAC --- 4 tcp 132 [ 13a 2 1 800] ------- [0:0 2:0 31 2] [0 0] 1 0 r 12.197448382 _2_ MAC --- 4 tcp 80 [ 13a 2 1 800] ------- [0:0 2:0 31 2] [0 0] 2 0 r 12.197473382 _2_ AGT --- 4 tcp 80 [ 13a 2 1 800] ------- [0:0 2:0 31 2] [0 0] 2 0 s 23.000000000 _0_ AGT --- 13 tcp 40 [0 0 0 0] ------- [0:0 2:0 32 0] [0 0] 0 0 s 23.000972414 _0_ MAC --- 13 tcp 112 [ 13a 1 0 800] ------- [0:0 2:0 32 1] [0 0] 0 0 r 23.001869121 _1_ MAC --- 13 tcp 60 [ 13a 1 0 800] ------- [0:0 2:0 32 1] [0 0] 1 0 s 23.002990536 _1_ MAC --- 13 tcp 112 [ 13a 2 1 800] ------- [0:0 2:0 31 2] [0 0] 1 0 r 23.003887243 _2_ MAC --- 13 tcp 60 [ 13a 2 1 800] ------- [0:0 2:0 31 2] [0 0] 2 0 r 23.003912243 _2_ AGT --- 13 tcp 60 [ 13a 2 1 800] ------- [0:0 2:0 31 2] [0 0] 2 0 然后我们通过脚本pw.awk对tcpdatas文件进行处理。 pw.awk 源代码如下:
BEGIN { largest_seq=0; packet_send=0; packet_rcvd=0; } {
if($1=="s"&&$7=="tcp") { if($6>largest_seq) largest_seq=$6; } if($1=="s"&&$3=="_0_"&&$4=="AGT"&&$7=="tcp") { packet_send++; send_time[$6]=$2; }
if($1=="r"&&$3=="_2_"&&$4=="MAC"&&$7=="tcp") { packet_rcvd++; rcvd_time[$6]=$2; }
}
END { #printf("packet_send %d,packet_rcvd %d/n",pakcket_send,packet_rcvd); for(i=0;i node0_sent 得到node0_sent 4 11.000000 13 23.000000 20 40.265211 21 40.265211 24 40.312358 26 40.338870 27 40.343151 28 40.343151 30 40.367284 32 40.401985 34 40.415960 35 40.415960 40 40.507178 41 40.509297 42 40.511375 43 40.533451 46 40.580200 … 然后运行 gnuplot 进入后,输入命令 plot “node0_sent”with points
plot “node2_rcvd”with line
未解决问题: (1) 如何用gnuplot把两个文件的数据同时放在一起画出图形 (2) 如何分析其它性能,不光是接收数据性能图。
2007-3-28 解决两个数据文件输入在同一个平面画图的问题。 采用的命令是: set title “Wireless simulation” set xlabel “simulation time” set ylabel “packet sequence” plot “node0_sent”using 1:2 title”node0_sent”,”node2_rcvd” using 1:2 title”node2_rcvd” 得到的结果:
gawk里面print $0代表整个一行数据 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |