ns2模拟仿真

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验内容

S1到r之间,以及s2到r之间的带宽为2Mbps,传递时延10ms,r到d之间带宽1.7Mbps,传递时延20m

1 在NS2中建立UDP联机,学习如何将模拟过程输出到文件,通过工具进行分析

2 测量以UDP为传输协议的应用程序的吞吐量(Throughput)、封包延迟(Packet Delay)、抖动率(Packet Jitter)和封包丢失率(Packet Loss Rate);

实验目的

1 熟悉ns2的使用

2 会将模拟过程输出到文件

3 会测量以UDP为传输协议的应用程序的吞吐量(Throughput)、封包延迟(Packet Delay)、抖动率(Packet Jitter)和封包丢失率(Packet Loss Rate);

实验步骤:

1 通过.tcl脚本,是模拟过程输出文件

如下tcl文件:

set ns [new Simulator]

$ns color 0 blue

$ns color 1 red

set n0 [$ns node]

set n1 [$ns node]

set n2 [$ns node]

set n3 [$ns node]

set f [open out.tr w]

$ns trace-all $f

set nf [open out.nam w]

$ns namtrace-all $nf

$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

$ns queue-limit $n2 $n3 20

$ns duplex-link-op $n0 $n2 orient right-up $ns duplex-link-op $n1 $n2 orient right-down $ns duplex-link-op $n2 $n3 orient right

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

set udp [new Agent/UDP]

$ns attach-agent $n0 $udp

set null [new Agent/Null]

$ns attach-agent $n3 $null

$ns connect $udp $null

$udp set class_ 0

set cbr [new Application/Traffic/CBR]

$cbr attach-agent $udp

set tcp [new Agent/TCP]

$tcp set class_ 1

set sink [new Agent/TCPSink]

$ns attach-agent $n1 $tcp

$ns attach-agent $n3 $sink

$ns connect $tcp $sink

set ftp [new Application/FTP]

$ftp attach-agent $tcp

$ftp set type_ FTP

$ns at 0.1 "$cbr start"

$ns at 1.0 "$ftp start"

$ns at 4.0 "$ftp stop"

$ns at 4.5 "$cbr stop"

$ns at 4.0 "$ns detach-agent $n1 $tcp ;

$ns detach-agent $n3 $sink"

$ns at 5.0 "finish"

proc finish {} {

global ns f nf

$ns flush-trace

close $f

close $nf

puts "this is test..."

exec nam out.nam &

exit 0

}

$ns run

运行结果:

结果分析

1 测量丢包率:针对out.tr的分析

Out.tr

Out.tr

event 有

{‘r’.+.- ,d}

r 表示收到

+ 排队进入

- 排队离开

d 丢了

还有time,from ,to node,pkt type ,flags,fidsize ,fid ,src addr ,dst addr,seqnum ,pkt id 分别对应着out.tr的每一列数字

Awk文件由于测量吞吐量等

Awk里定义有

event = $1;

time = $2;

fromNode = $3;

toNode = $4;

pktType = $5;

pktSize = $6;

flags = $7;

fid = $8;

srcAddr = $9;

dstAddr = $10;

seqNum = $11;

pktId = $12;

测量丢包率代码为:

BEGIN {

#初始化,设置变量以记录packet 被drop 的数目

fsDrops=0;

numFs

}

{

#将out.tr文件的相应字段赋值给变量

action=$1;

time=$2;

from=$3;

to=$4;

type=$5;

pktsize=$6;

flow_id=$8;

src=$9;

dst=$10;

seq_no=$11;

packet_id=$12;

#统计从n1 送出多少packets

if (from==1 && to==2 && action=="+")

numFs++;

相关文档
最新文档