sig-RED仿真脚本详解

2018年4月8日 0 条评论 198 次阅读 0 人点赞

早该写,一直拖。。。

 

风雪依稀秋白发尾

灯火葳蕤 揉皱你眼眉

假如你舍一滴泪 假如老去我能陪

 

 

正文如下:

网络拓扑仿真脚本

simulator.tcl:

 

#Create a simulator object

set ns [new Simulator]

#Define different colors for data flows (for NAM)

$ns color 1 Blue

$ns color 2 Red

#Open the NAM trace file

set nf [open out.nam w]

$ns namtrace-all $nf

set nd [open out.tr w]

$ns trace-all $nd

 

#Define a 'finish' procedure

proc finish {} {

global ns nf nd

$ns flush-trace

close $nf

close $nd

exec nam out.nam &

exit 0

}

 

#Create four nodes

set n0 [$ns node]

set n1 [$ns node]

set n2 [$ns node]

set n3 [$ns node]

#Create links between the nodes

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

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

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

#Set Queue Size of link (n2-n3) to 100

$ns queue-limit $n2 $n3 100

#Give node position (for 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

#Monitor the queue for link (n2-n3). (for NAM)

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

 

#Setup a TCP connection

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

$tcp set fid_ 1

#Setup a FTP over TCP connection

set ftp [new Application/FTP]

$ftp attach-agent $tcp

$ftp set type_ FTP

#Setup a UDP connection

set udp [new Agent/UDP]

$ns attach-agent $n1 $udp

set null [new Agent/Null]

$ns attach-agent $n3 $null

$ns connect $udp $null

$udp set fid_ 2

#Setup a CBR over UDP connection

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

#Schedule events for the CBR and FTP agents

$ns at 0.1 "$cbr start"

$ns at 1.0 "$ftp start"

$ns at 40.0 "$ftp stop"

$ns at 4.5 "$cbr stop"

#Detach tcp and sink agents

$ns at 50 "$ns detach-agent $n0 $tcp  $ns detach-agent $n3 $sink"

$ns at 50.0 "finish"

 

#monitor n2 and n3 queue

set redq [[$ns link $n2 $n3] queue]

set traceq [open redQueue.tr w]

$redq trace curq_

$redq trace ave_

$redq attach $traceq

 

#Run the simulation

$ns run

 

2.运行本仿真实验的Tcl脚本产生的Trace文件的格式说明如下。

(1)event:”+”:表示分组进入链路队列事件;”—“:表示分组离开链路队列事件;”r”:表示目的节点接受分组事件;”d”:表示队列丢弃分组事件。

(2)time:事件发生的时间。

(3)from node:分组发送接点的id

(4)to node:分组传送的目的节点的id。

(5)pkt type:分组类型

(6)pkt size:分组大小。

(7)flags:标志项

(8)fid:流标识符。

(9)src addr:源地址,格式为node.port,其中node代表分组发送节点的id,port表示发送分组的端口号。

(10)dst addr:目的地址,格式为node.port,其中node代表分组发送节点的id,port表示发送分组的端口号。

(11)seq num:分组的序列号。

(12)pkt id:分组的唯一标识符。

 

1.队列长度的数据处理脚本:

$grep “a”redQueue.tr>average.tr

$grep “Q”redQueue.tr > current.tr

(其中redQueue.tr为跟踪n2和n3队列产生的文件)

然后使用gnuplot工具使用average.tr和current.tr绘制队列随时间变化的曲线。

 

2.丢包率数据awk处理脚本graph_lostRate.awk:

3.处理时延的awk代码

4.吞吐量awk代码awk:

 

lyssom

这个人太懒什么东西都没留下

文章评论(0)