NS2中如何监测(或打印或记录)链路的队列长度

来源:互联网 发布:linux配置网络yum源 编辑:程序博客网 时间:2024/04/28 11:13

NS2中如何监测(或打印或记录)链路的队列长度

 利用“monitor-queue”可以监视指定链路的队列的实时变化情况,用法如下:

             set qm [$ns monitor-queue $s0 $r0 [open qm.out w] 0.01]
             $qm set size_
解释:

      1.$ns monitor-queue $n0 $n1 [open qm.out w] 0.01
        依次的含义:“$ns”表示ns对象,“monitor-queue”是ns对象的方法(也可以认为是固定的命令)用来创建队列监视的对象,“$n0”和"n1"表示链路的两个网络节点, "[open qm.out w]“表示打开文件,"0.01"表示监视队列的时间间隔。

     2.注意上面的命令返回的是一个对象,所以使用set将其赋值给了变量qm,利用此变量进行后续操作。

    3.$qm set size_              返回当前的队列大小。

   4.上面的还不能满足需求,需要将其放到一个函数中,下面的是一个较完整的例子:

........省略代码

set qf [open myfile.txt w]

proc record {} {

#声明全局变量,qf为记录队列大小随时间变化的文本文件

global   qm  ns qf

set    now   [$ns  now]

puts $qf  "$now    [$qm  set  size_]"

$ns  at  [expr  $now + 0.01]  "record"

}

set qm [$ns monitor-queue $n0 $n1 [open qm.out w] 0.01]

.......省略代码

$ns at 0.0 "record"

.......

$ns run