cbr流过低 ns2_NS2学习笔记(一)

NS2有两种运行方式:

1.“脚本方式”,输入命令: ns tclscripl.tcl,其中 tclscripl.tcl 是一个Tcl脚本的文件名;

2“命令行方式”,输入命令:ns,进入NS2的命令行环境,然后直接输入各种命令来交互式地运行NS2。(与Python类似)

运行NS2以后也有两种方法记录结果:

1.trace文件;

2.nam(动画演示程序)

Tcl脚本1:example1.tcl

1 set ns [new Simulator]#建立一个新的模拟对象simulator2

3 set tracef [open example1.tr w]#变量tracef指向example1.tr文件4 #ns trace-all $tacef#记录模拟过程trace数据5 set namtf [open example1.nam w]#变量namtf指向example1.nam文件6 $ns namtrace-all $namtf#记录nam的trace数据7

8 proc finish {} {关闭两个trace文件,在模拟结束后调用nam程序9 global ns tracef namtf10 $ns flush-trace11 close $tracef12 close $namtf13 exec nam example1.nam &

14 exit 0

15 )16

17 set n0 [$ns node]#创建节点n018 set n1 [$ns node]#创建节点n119

20 $ns duplex-link $n0 $n1 1Mb 10ms DropTail#在n0和n1之间建立一条双向的链路,带宽1Mbit/s,时延10ms,队列类型为DropTail。21

22 set udp0 [new Agent/UDP]#创建一个udp0 Agent23 $ns attach-agent $no $udp0#将udp0绑定到n0上24

25 set cbr0 [new Application/Traffic/CBR]#创建一个CBR流量发生器26 $cbr0 set packetSize_ 500#分组大小为500B27 $cbr0 set interval_ 0.005#发送间隔为5ms28 $cbr0 attach-agent $udp0#将CBR绑定到udp0上29

30 set null0 [new Agent/Null]#创建一个Null Agent作为数据接收器31 $ns attach-agent $n1 $null0#绑定到n1上32

33 $ns connect $udp0 $null0#将两个Agent连接起来34

35 $ns at 0.5 "$cbr0 start"#0.5s时启动cbr036 $ns at 4.5 "$cbr0 stop"#4.5s时停止cbr037

38 $ns at 5.0 "finish"#5.0s时调用finish过程39 $ns run#开始模拟

Tcl调用成员方法的格式为:$对象名 方法名

Tcl脚本2(无线模型):wireless.tcl

1 set val(chan) Channel/WirelessChannel #channel type,val(chan)作为变量名是一个整体,下同2 set val(proc) Propagation/TwoRayGround #radio-propagation model3 set val(netif) Phy/WirelessPhy #network interface type4 set val(mac) Mac/802_11 #MAC type5 set val(ifq) Queue/DropTail/PriQueue #interface queue type6 set val(ll) LL #link layer type7 set val(ant) Antenna/OmniAntenna #antenna model8 set val(ifqlen) 50 #max packet inifq9 set val(nn) 2#number of mobilenodes10 set val(rp) AODV #routing protocol11 set val(x) 500#X dimension of the topography12 set val(y) 500#Y dimension of the topography13

14 set ns [new Simulator]15

16 set tracefd [open wireless.tr w]17 $ns trace-all $tracefd18 set namtracefd [new wireless.nam w]19 $ns namtrace-all-wireless $namtracefd $val(x) $val(y)20

21 set topo [new Topography]#建立一个Topography对象,该对象可以保证节点在拓扑边界范围内运动22 $topo load_flatgrid $val(x) $val(y)#设定模拟所用场景的大小23

24 create-god $val(nn) #建立一个God对象,主要用来对路由协议做性能评价;节点的MAC对象会调用God对象,因此即使我们在这里并不适用God对象,仍然需要建立一个God对象25

26 $ns node-config -adhocRouting $val(rp)\ #配置节点参数27 -llType $val(ll)\28 -macType $val(mac)\29 -ifqType $val(ifq)\30 -ifqLen $val(ifqlen)\31 -antType $val(ant)\32 -propType $val(prop)\33 -phyType $val(netif)\34 -channelType $val(chan)\35 -topoInstance $topo\36 -agentTrace ON\37 -routerTrace ON\38 -macTrace OFF\39 -movementTrace OFF40

41 for{set i 0} {$i

45 $node_(0) set X_ 5.0 #设定节点初始坐标X,Y,Z

46 $node_(0) set Y_ 2.0

47 $node_(0) set Z_ 0.0

48

49 $node_(1) set X_ 390.0

50 $node_(1) set Y_ 385.0

51 $node_(1) set Z_ 0.0

52

53 $ns at 5.0 "$node_(1) setdest 25.0 20.0 15.0"#节点1在5s时以15m/s的速度向坐标(25.0,20.0)的点运动54 $ns at 1.0 "$node_(0) setdest 20.0 18.0 1.0"

55

56 $ns at 10 "$node_(1) setdest 490.0 480.0 15.0"

57

58 set tcp [new Agent/TCP]59 $tcp set class_ 2

60 set sink [new Agent/TCPSink]61 $ns attach-agent $node_(0) $tcp62 $ns attach-agent $node_(1) $sink63 $ns connect $tcp $sink64 set ftp [new Appication/FTP]65 $ftp attach-agent $tcp66

67 $ns at 1.0 "$ftp start"

68 for {set i 0} {$i

70 }71 $ns at 15.0 "stop"

72

73 proc stop{} {74 global ns tracefd nametracefd75 $ns flush-trace76 close $tracefd77 close $nametracefd78 exec nam wireless nam &

79 exit 0

80 }81

82 $ns run

在节点很多的情况下,可以通过文件配置这些节点的初始位置和运动方式。

source "path" #读取定义位置和运动方式的文件,path是文件的路径名,文件中的内容包括node的set方法设定初始坐标,和simulator的at方法设定运动方式。与上面直接写入脚本的方法一致。

还可以通过这种引用文件的方式来设定绑定节点的Agent。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值