我在NS中创建了两个通过4Mbps连接连接的节点,延迟时间为10ms。
Node1是发射器,Node2是接收器。
发送器节点以10ms(0.01s)的速率发送数据包。
数据包传输在模拟中从2s开始。
考虑到上述情况,只要我的数据包是<大小为5000字节,我低于连接的4Mbps限制。
我想要了解的是当我将数据包大小增加到超过5000字节时会发生什么。
因此,如果我将数据包大小增加到8000字节就会发生这种情况,使用NAM进行动画
第一个数据包以2秒发送,第二个数据包以2.016秒发送。请注意,数据包每0.01秒发送一次,因此第二个数据包应该在2.01s发送。另请注意,我们目前在模拟中的时间为2.02秒,因此第三个数据包应该已经离开了Node1。
NAM的文件说明
排队的数据包显示为小方块。[...]丢弃的数据包显示为下降的旋转方块,并在屏幕的末尾消失。
所以我没有丢包?
使用XGRAPH进行模拟我们得到此图
现在,我不太了解以下内容:
更新:添加了.tcl
脚本
set ns [new Simulator]
set nf [open lab1.nam w]
$ns namtrace-all $nf
set xf [open lab1.tr w]
proc record {} {
global sink xf
set ns [Simulator instance]
set time 0.12
set bw [$sink set bytes_]
set now [$ns now]
puts $xf "$now [expr ((($bw/$time)*8)/1000000)]"
$sink set bytes_ 0
$ns at [expr $now+$time] "record"
}
proc finish {} {
global ns nf xf
$ns flush-trace
close $nf
close $xf
exit 0
}
set n0 [$ns node]
set n1 [$ns node]
$ns duplex-link $n0 $n1 4Mb 10ms DropTail
set udp0 [new Agent/UDP]
$udp0 set packetSize_ 1500
$ns attach-agent $n0 $udp0
set traffic0 [new Application/Traffic/CBR]
$traffic0 set packetSize_ 1500
$traffic0 set interval_ 0.01
$traffic0 attach-agent $udp0
set sink [new Agent/LossMonitor]
$ns attach-agent $n1 $sink
$ns connect $udp0 $sink
$ns at 0.0 "record"
$ns at 2.0 "$traffic0 start"
$ns at 10.0 "$traffic0 stop"
$ns at 12.0 "finish"
$ns run
UPDATE2:
经过一段时间后,丢弃的数据包开始在模拟动画中显示,而不是立即显示。因此,例如,我必须在丢弃的数据包开始显示之前运行模拟大约3-4秒。