📄 nslab_ex5_06b.tcl
字号:
#--------------------------------------------------------------------------------
# cbr-tb.tcl
# Author: Jeremy Ethridge.
# Dates: June 29-July 5, 1999.
# Notes: A DS-RED script that uses CBR traffic agents and the Token Bucket policer.
#
# ----
# |s1|-----------
# ---- 10 Mb \
# 5 ms \
# \---- ------ ---- ------
# |e1|-----------|core|----------|e2|-----------|dest|
# /---- 10 Mb ------ 5 Mb ---- 10 Mb ------
# / 5 ms 5 ms 5 ms
# ---- /
# |s2|-----------
# ---- 10 Mb
# 5 ms
#
#--------------------------------------------------------------------------------
set ns [new Simulator]
set f [open out.tr w]
$ns trace-all $f
set nf [open out.nam w]
$ns namtrace-all $nf
set cir0 4000000
set cbs0 5000
set rate1 1000000
set testTime 85.0
set tcppacketSize 1460
set voicepacketSize 100
set queue_limit 30
# Set up the network topology shown at the top of this file:
set s1 [$ns node]
set s2 [$ns node]
set e1 [$ns node]
set core [$ns node]
set e2 [$ns node]
set dest [$ns node]
$ns duplex-link $s1 $e1 20Mb 5ms DropTail
$ns duplex-link $s2 $e1 20Mb 5ms DropTail
$ns simplex-link $e1 $core 20Mb 5ms dsRED/edge
$ns simplex-link $core $e1 20Mb 5ms DropTail
$ns simplex-link $core $e2 3Mb 5ms dsRED/core
$ns simplex-link $e2 $core 3Mb 5ms DropTail
$ns duplex-link $e2 $dest 20Mb 5ms DropTail
$ns duplex-link-op $s1 $e1 orient down-right
$ns duplex-link-op $s2 $e1 orient up-right
$ns duplex-link-op $e1 $core orient right
$ns duplex-link-op $core $e2 orient right
$ns duplex-link-op $e2 $dest orient right
set qE1C [[$ns link $e1 $core] queue]
set qE2C [[$ns link $e2 $core] queue]
set qCE1 [[$ns link $core $e1] queue]
set qCE2 [[$ns link $core $e2] queue]
# Set DS parameters from Edge1 to Core:
$ns queue-limit $e1 $core $queue_limit
$qE1C setSchedularMode PRI
$qE1C addQueueRate 0 1000000
#$qE1C setSchedularMode WRR
#$qE1C addQueueWeights 1 2
$qE1C meanPktSize $tcppacketSize
$qE1C set numQueues_ 2
$qE1C setNumPrec 1
$qE1C setMREDMode DROP
$qE1C addPolicyEntry [$s1 id] [$dest id] Null 10
$qE1C addPolicyEntry [$s2 id] [$dest id] TokenBucket 20 $cir0 $cbs0
$qE1C addPolicerEntry Null 10
$qE1C addPolicerEntry TokenBucket 20 21
$qE1C addPHBEntry 10 0 0
$qE1C addPHBEntry 20 1 0
$qE1C addPHBEntry 21 1 0
$qE1C configQ 0 0 25 29 0.00001
$qE1C configQ 1 0 25 29 0.02
# Set DS parameters from Core to Edge2:
$ns queue-limit $core $e2 $queue_limit
#$qCE2 setSchedularMode WRR
#$qCE2 addQueueWeights 1 2
$qCE2 setSchedularMode PRI
$qCE2 addQueueRate 0 1000000
$qCE2 meanPktSize $tcppacketSize
$qCE2 set numQueues_ 2
$qCE2 setNumPrec 1
$qCE2 setMREDMode DROP
$qCE2 addPHBEntry 10 0 0
$qCE2 addPHBEntry 20 1 0
$qCE2 addPHBEntry 21 1 0
$qCE2 configQ 0 0 29 29 0.00001
$qCE2 configQ 1 0 29 29 0.02
set udp1 [new Agent/UDP]
$ns attach-agent $s1 $udp1
set cbr1 [new Application/Traffic/CBR]
$cbr1 attach-agent $udp1
$cbr1 set packet_size_ $voicepacketSize
$udp1 set packetSize_ $voicepacketSize
$cbr1 set rate_ $rate1
set null1 [new Agent/Null]
$ns attach-agent $dest $null1
$ns connect $udp1 $null1
# Set up two TCP connection between source 1,2 and the destination:
set tcp [new Agent/TCP/Reno]
set tcpsink [new Agent/TCPSink]
$ns attach-agent $s2 $tcp
$ns attach-agent $dest $tcpsink
$tcp set packetSize_ $tcppacketSize
$tcp set max_window_size_ 2000
$ns connect $tcp $tcpsink
# FTP
set ftp [new Application/FTP]
$ftp attach-agent $tcp
$ns at 0.0 "$ftp send 100000000"
set tcp2 [new Agent/TCP/Reno]
set tcpsink2 [new Agent/TCPSink]
$ns attach-agent $s2 $tcp2
$ns attach-agent $dest $tcpsink2
$tcp2 set packetSize_ $tcppacketSize
$tcp2 set max_window_size_ 2000
$ns connect $tcp2 $tcpsink2
# FTP
set ftp2 [new Application/FTP]
$ftp2 attach-agent $tcp2
$ns at 0.0 "$ftp2 send 100000000"
proc finish {} {
global ns f nf
close $f
close $nf
exit 0
}
$qE1C printPolicyTable
$qE1C printPolicerTable
$ns at 0.0 "$cbr1 start"
$ns at 5.0 "$qCE2 printStats"
$ns at 20.0 "$qCE2 printStats"
$ns at 40.0 "$qCE2 printStats"
$ns at 60.0 "$qCE2 printStats"
$ns at 80.0 "$qCE2 printStats"
$ns at $testTime "$cbr1 stop"
$ns at [expr $testTime + 1.0] "finish"
$ns run
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -