This script is written by referring to RFC 2698 "A
Rate Adaptive Shaper for Differentiated Services"
(there are not trRAS in this script)
when I run this script in ns-2.7, the number of "green"
packets is very small.
Why? Help!!!
set ns [new Simulator]
Queue set limit_ 1000
set packetSize 1000
set testTime 100 set ER1 [$ns node] set ER2 [$ns node] for {set i 1} {$i <= 10} { incr i}
{
set c1($i) [$ns node] set c2($i) [$ns node] set u1($i) [$ns node] set u2($i) [$ns node] } proc queue_init {src dest packetSize} {
set ns [Simulator instance] set q [[$ns link $src $dest] queue] $q meanPktSize $packetSize $q set numQueues_ 1 $q setNumPrec 3 $q addPHBEntry 10 0 0 $q addPHBEntry 11 0 1 $q addPHBEntry 12 0 2 $q configQ 0 0 400 800 0.02 $q configQ 0 1 200 400 0.05 $q configQ 0 2 100 200 0.1 } $ns simplex-link $ER1 $ER2 70Mb 1ms dsRED/core
$ns simplex-link $ER2 $ER1 70Mb 1ms dsRED/core queue_init $ER1 $ER2 $packetSize queue_init $ER2 $ER1 $packetSize for {set i 1} {$i <= 10} { incr i}
{
$ns simplex-link $c1($i) $ER1 34Mb 2.5ms dsRED/edge $ns simplex-link $ER1 $c1($i) 34Mb 2.5ms dsRED/core queue_init $c1($i) $ER1 $packetSize queue_init $ER1 $c1($i) $packetSize $ns simplex-link $c2($i) $ER2 34Mb 2.5ms dsRED/edge $ns simplex-link $ER2 $c2($i) 34Mb 2.5ms dsRED/core queue_init $c2($i) $ER2 $packetSize queue_init $ER2 $c2($i) $packetSize $ns duplex-link $u1($i) $c1($i) 10Mb 1ms DropTail $ns duplex-link $u2($i) $c2($i) 10Mb 1ms DropTail } for {set i 1} {$i <= 10} { incr i } { set q1($i) [[$ns link $c1($i) $ER1] queue] set q2($i) [[$ns link $c2($i) $ER2] queue] if {$i <= 5 } { $q1($i) addPolicyEntry [$u1($i) id] [$u2($i) id] trTCM 10 [expr $i*2]Mb 3k [expr $i*4]Mb 6k $q2($i) addPolicyEntry [$u2($i) id] [$u1($i) id] trTCM 10 [expr $i*2]Mb 3k [expr $i*4]Mb 6k $q1($i) addPolicerEntry trTCM 10 11 12 $q2($i) addPolicerEntry trTCM 10 11 12 } else { $q1($i) addPolicyEntry [$u1($i) id] [$u2($i) id] trTCM 10 [expr ($i-5)*2]Mb 30000 [expr ($i-5)*4]Mb 6k $q2($i) addPolicyEntry [$u2($i) id] [$u1($i) id] trTCM 10 [expr ($i-5)*2]Mb 30000 [expr ($i-5)*4]Mb 6k $q1($i) addPolicerEntry trTCM 10 11 12 $q2($i) addPolicerEntry trTCM 10 11 12 } } for {set i 1} {$i <= 10} { incr i } {
set src($i) [new Agent/TCP/Sack1] $src($i) set window_ 60kb set sink($i) [new Agent/TCPSink/Sack1] $ns attach-agent $u1($i) $src($i) $ns attach-agent $u2($i) $sink($i) $ns connect $src($i) $sink($i) set ftp($i) [new Application/FTP]
$ftp($i) attach-agent $src($i) } proc finish {src} {
global ns src exit 0 } for {set i 1} {$i <= 10} { incr i } { $ns at 0.0 "$ftp($i) start" } for {set i 1} {$i <= 10} { incr i } {
$ns at $testTime "$ftp($i) stop" } for {set i 1} {$i <= 10} { incr i } {
$ns at 80 "$q1($i) printStats" } $ns at [expr $testTime + 1.0] "finish"
$ns run
|