标准ns-2.28下面无线网络的模拟

 

时间: 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.awktcpdatas文件进行处理。

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<largest_seq;i++)

{

       if(send_time[i]!=0&&rcvd_time[i]!=0)

       #printf("%d %f %f/n",i,send_time[i],rcvd_time[i]);

       #printf("%f %d/n", rcvd_time[i], i);

       printf(" %f %d /n",send_time[i],i);

}

}

运行

awk –f pw.awk tcpdatas > 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代表整个一行数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值