|
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:
|