awk和gnuplot对ns模拟之后.tr文件的处理实验

 

实验记录

时间: 2007-3-15

地点:主教2607

实验内容:awkgnuplotns模拟之后.tr文件的处理实验

1、实验用网络拓扑图为

这个网络的环境包含了四个网络节点(n0n1n2n3)如下图所示。网络节点n0到节点n2之间,和节点n1到节点n2之间的网络频宽(bandwidth)2Mbps,延迟時间(propagation delay)10ms。网络拓朴中的频宽瓶颈是在节点n2到节点n3之间,频宽为1.7Mbps,延迟的時间为20ms。每个网络节都是采用DropTail queue的方式,且在节点n2到节点n3之间的最大队列长度是10个封包的长度。在节点n0n3之间会有一条FTP的连线,FTP应用程式是架架在TCP之上,所以在写模拟环境的描述语言的時候,必需先建立一条TCP的连线,在來源端n0上使用TCP agent产生”tcp”來发送TCP的封包;在目的地端n3使用TCPsink agent产生”sink”來接受TCP的资料、並产生回覆封包(ACK)回传送端、最后把接收的TCP封包释放。最后要把这两个agent连起來(connect),连线才能建立。若是沒有額外的參数设定,TCP封包的长度为1Kbytes。在这里顺便补充說明一下,对于ns2模拟參数內定值设定是在ns-allinone-2.27/ns-2.27/tcl/lib目錄下的ns-default.tcl,有想要进一步了解的人,可以去查看此档。另外,在节点n1n3之间有一条固定的传输速率的连线(Constant Bit RateCBR)CBR应用程式是架架在UDP之上,因此必需在n1使用UDP agent來产生”udp”用來发送UDP封包,在n3上使用Null agent來产生”sink”以接收由n1传送过來的UDP封包,然后把接收的封包释放。CBR的传送速度为1Mbps,每一个封包大小为1KbytesCBR是在0.1秒开始传送,在4.5秒結束传输;FTP是在1.0秒开始传送,4.0秒結束传输。

2、程序源代码

编辑一个四个结点的网络源文件,保存名为tool.tcl

# 产生一个模拟的物件

set ns [new Simulator]

#針对不同的资料流定义不同的顏色,这是要给NAM用的

 

$ns color 1 Blue

$ns color 2 Red

 

#开启一个NAM trace file

set nf [open out.nam w]

$ns namtrace-all $nf

 

#开启一个trace file,用來记录封包传送的过程

set nd [open out.tr w]

$ns trace-all $nd

 

#定义一个結束的程序

proc finish {} {

 

        global ns nf nd

        $ns flush-trace

        close $nf

 

        close $nd

        #以背景执行的方式去执行NAM

        exec nam out.nam &

        exit 0

 

}

 

#产生四个网络节点

set n0 [$ns node]

set n1 [$ns node]

set n2 [$ns node]

set n3 [$ns node]

 

#把节点连接起來

$ns duplex-link $n0 $n2 2Mb 10ms DropTail

$ns duplex-link $n1 $n2 2Mb 10ms DropTail

$ns duplex-link $n2 $n3 1.7Mb 20ms DropTail

 

#设定ns2n3之间的Queue Size10个封包大小

$ns queue-limit $n2 $n3 10

 

#设定节点的位置,这是要给NAM用的

$ns duplex-link-op $n0 $n2 orient right-down

 

$ns duplex-link-op $n1 $n2 orient right-up

$ns duplex-link-op $n2 $n3 orient right

 

#观测n2n3之间queue的变化,这是要给NAM用的

$ns duplex-link-op $n2 $n3 queuePos 0.5

#建立一条TCP的连线

 

set tcp [new Agent/TCP]

$tcp set class_ 2

$ns attach-agent $n0 $tcp

set sink [new Agent/TCPSink]

$ns attach-agent $n3 $sink

 

$ns connect $tcp $sink

#NAM中,TCP的连线会以蓝色表示

 

$tcp set fid_ 1

 

#TCP连线之上建立FTP应用程式

set ftp [new Application/FTP]

$ftp attach-agent $tcp

$ftp set type_ FTP

 

#建立一条UDP的连线

 

set udp [new Agent/UDP]

$ns attach-agent $n1 $udp

set null [new Agent/Null]

$ns attach-agent $n3 $null

$ns connect $udp $null

#NAM中,UDP的连线会以紅色表示

$udp set fid_ 2

 

#UDP连线之上建立CBR应用程式

 

set cbr [new Application/Traffic/CBR]

$cbr attach-agent $udp

$cbr set type_ CBR

$cbr set packet_size_ 1000

$cbr set rate_ 1mb

$cbr set random_ false

 

#设定FTPCBR资料传送开始和結束時间

 

$ns at 0.1 "$cbr start"

$ns at 1.0 "$ftp start"

$ns at 4.0 "$ftp stop"

$ns at 4.5 "$cbr stop"

 

#結束TCP的连线(不一定需要写下面的程式來实际結束连线)

$ns at 4.5 "$ns detach-agent $n0 $tcp ; $ns detach-agent $n3 $sink"

#在模拟环境中,5秒后去呼叫finish來結束模拟(这样要注意模拟环境中

#5秒並不一定等于实际模拟的時间

$ns at 5.0 "finish"

#执行模拟

$ns run

3、运行

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值