[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.