我在 NS2 中工作并尝试使用 MD1 队列类型混合 tcp 和 udp 数据包。我想在每个 udp 和 tcp 数据包之间拆分到达率。我已经设法将 udp 设置为 Poisson 流量并找到了如何控制数据包的生成,但是在 tcp 中我还没有弄清楚如何控制数据包的生成,这意味着如何在 tcp 源流量中设置到达率, (我将使用 ftp 和 cbr 流量)。我尝试了很多方法,但我没有设法解决它。我应该使用 tcp 的 .tcl 文件中的哪个参数来执行此操作?
我的 .tcl 文件:
set ns [new Simulator]
set tf [open output.tr w]
set nf [open nam.nam w]
$ns trace-all $tf
$ns namtrace-all $nf
proc finish {} {
global ns nf tf
$ns flush-trace
close $tf
close $nf
exec nam nam.nam &
exit 0
}
set n0 [$ns node]
set n1 [$ns node]
set n2 [$ns node]
set n3 [$ns node]
$ns duplex-link $n0 $n2 1Mb 10ms DropTail
$ns simplex-link $n1 $n2 1Mb 10ms DropTail
$ns duplex-link $n2 $n3 0.04Mb 10ms DropTail
$ns queue-limit $n0 $n2 100
$ns queue-limit $n1 $n2 100
$ns queue-limit $n2 $n3 100
$ns duplex-link-op $n0 $n2 orient right-down
$ns simplex-link-op $n1 $n2 orient right-up
$ns duplex-link-op $n2 $n3 orient right
$ns duplex-link-op $n0 $n2 queuePos 0.5
$ns simplex-link-op $n1 $n2 queuePos 0.5
$ns duplex-link-op $n2 $n3 queuePos 0.5
set udp [new Agent/UDP]
$ns attach-agent $n1 $udp
set null [new Agent/Null]
$ns attach-agent $n3 $null
$ns connect $udp $null
set exp [new Application/Traffic/Exponential]
$exp attach-agent $udp
$exp set burst_time_ 0
$exp set idle_time_ 400ms
$exp set rate_ 1mb
$exp set packetSize_ 1000
set tcp [new Agent/TCP]
$tcp set class_ 2
$ns attach-agent $n0 $tcp
set sink [new Agent/TCPSink]
$ns attach-agent $n3 $sink
$ns connect $tcp $sink
$tcp set window_ 20
$tcp set packetSize_ 555
set ftp [new Application/FTP]
$ftp attach-agent $tcp
$ftp set type_ FTP
$ns at 0.2 "$exp start"
$ns at 0.3 "$ftp start"
$ns at 30000 "$exp stop"
$ns at 30000 "$ftp stop"
$ns at 30000 "finish"
$ns run