|
Graphically:
|
|
|
a very nice generalization of the round robin scheduler that can provide fairness when:
|
|
|
Note:
|
|
Graphically:
Deficit counters +-----+ flow 1 | 0 | +-----+ +-----+ flow 2 | 0 | +-----+ +-----+ flow 3 | 0 | +-----+ Quantum = 500 |
Deficit counters +-----+ +------------+ +---------------------------+ flow 1 | 0 | | 200 bytes | | 400 bytes | +-----+ +------------+ +---------------------------+ +-----+ +-----+ +------------+ +-------------------+ flow 2 | 0 | | 100 | | 200 | | 300 bytes | +-----+ +-----+ +------------+ +-------------------+ +-----+ +------------+ +------------+ +------------+ flow 3 | 0 | | 200 bytes | | 200 | | 200 | +-----+ +------------+ +------------- +------------+ Quantum = 500 |
|
Flow 1 does not have enough credits for the next packet and ends its turn
Flow 1 will carry its residual "transmission" credits over to the next service round
|
Flow 2 does not have enough credits for the next packet and ends its turn
Flow 2 will carry its residual "transmission" credits over to the next service round
|
Flow 3 does not have enough credits for the next packet and ends its turn
Flow 3 will carry its residual "transmission" credits over to the next service round
|
The left over transmission rate will be divided among the unsaturated flows
|
|
|
|
Flow Deficit Quantum counter +-----+ +-----+ +------------+ +---------------------------+ flow 1 | 800 | | 0 | | 200 bytes | | 400 bytes | +-----+ +-----+ +------------+ +---------------------------+ +-----+ +-----+ +-----+ +------------+ +-------------------+ flow 2 | 400 | | 0 | | 100 | | 200 | | 300 bytes | +-----+ +-----+ +-----+ +------------+ +-------------------+ +-----+ +-----+ +------------+ +------------+ +------------+ flow 3 | 600 | | 0 | | 200 bytes | | 200 | | 200 | +-----+ +-----+ +------------+ +------------- +------------+ |
|
(Proof is similar to the unweighted DRR)
$ns duplex-link $n1 $n2 0.3Mb 200ms DRR |
|
Queue/DRR set quantum_ 500 $ns duplex-link $n1 $n2 0.3Mb 200ms DRR |
CWND of the TCP flow:
The UDP flow makes TCP use CWND = 1 all the time...
(Look at the NAM visualization and you will know why...)
CWND of the TCP flow:
Note:
|