[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Question about CBQ
Dear all,
I'd tried to simulate a CBQ scheduler, this is the script:
set cbqalgorithm formal
set stopTime 100
set ns [new Simulator]
set nf [open all.tr w]
$ns trace-all $nf
proc make_topology { } {
global s1 r1 cbqlink ns cbqalgorithm
set s1 [$ns node]
set r1 [$ns node]
$ns simplex-link $s1 $r1 2Mb 5ms CBQ/WRR
$ns simplex-link $r1 $s1 2Mb 5ms DropTail
set cbqlink [$ns link $s1 $r1]
[$cbqlink classifier] resize 2000
[$cbqlink queue] algorithm $cbqalgorithm
}
proc make_queue { dim classe_cbq } {
set q [new Queue/DropTail]
$q set limit_ $dim
$classe_cbq install-queue $q
}
proc make_class_gerarchy { } {
global root_class right_class left_class cbqlink
set codalim 10
set root_class [new CBQClass]
set left_class [new CBQClass]
set right_class [new CBQClass]
$right_class set maxpkt_ 1024
$left_class set maxpkt_ 1024
$root_class set maxpkt_ 1024
$root_class setparams none 0 1.0 0 1 2 0
$left_class setparams $root_class 1 0.04 0.020 0 1 0.023
$right_class setparams $root_class 0 0.96 0.000036 1 1 0.000041
make_queue $codalim $right_class
make_queue $codalim $left_class
$cbqlink insert $root_class
$cbqlink insert $right_class
$cbqlink insert $left_class
$cbqlink bind $right_class 2
$cbqlink bind $left_class 1
}
proc make_source_cbr { } {
global ns s1 r1 cbr_rt
set cbr_rt [$ns create-connection CBR $s1 Null $r1 1]
$cbr_rt set packetSize_ 120
$cbr_rt set interval_ 0.00096
}
proc make_source_cbr1 { } {
global ns s1 r1 cbr_rt1
set cbr_rt1 [$ns create-connection CBR $s1 Null $r1 2]
$cbr_rt1 set packetSize_ 120
$cbr_rt1 set interval_ 0.00048
}
proc run_sim { } {
global s1 r1 cbr_rt cbr_rt1 ns stopTime
$ns at 0.0 "$cbr_rt start"
$ns at $stopTime "$cbr_rt stop"
$ns at 0.0 "$cbr_rt1 start"
$ns at $stopTime "$cbr_rt1 stop"
}
proc finish { } {
global ns nf
$ns flush-trace
close $nf
#exec ns post-el.tcl
exec ns throuput.tcl
#exec xgraph -geometry 750x500 throuput.tr teo.tr
exit 0
}
make_topology
make_class_gerarchy
make_source_cbr
make_source_cbr1
run_sim
$ns at [expr $stopTime+1] "finish"
$ns run
There are two sources:
- cbr_rt1: 1Mbit/s connected to the left class (80 Kbit/s)
- cbr_rt2: 2Mbit/s connected to the right class (1920 Kbit/s)
Why the left class does receive a better throuput than 80Kbit/s?
Thanks Ivan.