使用NS,NAM和XGRAPH解释网络拥塞和数据包丢失

时间:2017-03-26 03:06:49

标签: networking packet ns2 nam

我在NS中创建了两个通过4Mbps连接连接的节点,延迟时间为10ms。

Node1是发射器,Node2是接收器。

发送器节点以10ms(0.01s)的速率发送数据包。

数据包传输在模拟中从2s开始。

考虑到上述情况,只要我的数据包是<大小为5000字节,我低于连接的4Mbps限制。

我想要了解的是当我将数据包大小增加到超过5000字节时会发生什么。

因此,如果我将数据包大小增加到8000字节就会发生这种情况,使用NAM进行动画

enter image description here

第一个数据包以2秒发送,第二个数据包以2.016秒发送。请注意,数据包每0.01秒发送一次,因此第二个数据包应该在2.01s发送。另请注意,我们目前在模拟中的时间为2.02秒,因此第三个数据包应该已经离开了Node1。

NAM的文件说明

  

排队的数据包显示为小方块。[...]丢弃的数据包显示为下降的旋转方块,并在屏幕的末尾消失。

所以我没有丢包?

使用XGRAPH进行模拟我们得到此图

enter image description here

现在,我不太了解以下内容:

  • 包箭头长度和连接之间的关系是什么?
  • 在10ms的设定间隔内没有发生数据包传输的事实是什么意思?
  • 我推动传输速率高于4Mbps的事实意味着连接限制为4Mbps?
  • 为什么,在图表中,我看到峰值,为什么它们超过4Mbps?

更新:添加了.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秒。

0 个答案:

没有答案