ns2模拟仿真
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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++;