标准ns

您所在的位置:网站首页 ns无线信号边一个l 标准ns

标准ns

2024-02-27 16:18| 来源: 网络整理| 查看: 265

 

时间: 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