Kathie, Van,

In <http://tools.ietf.org/html/draft-nichols-tsvwg-codel-01> (and in the ACM queue paper), you say CoDel's control law was designed around TCP Reno's formula relating packet drop probability to throughput. Quoting:

"  The next
   drop time is decreased in inverse proportion to the square root of
   the number of drops since the dropping state was entered, using the
   well-known relationship of drop rate to throughput to get a linear
   change in throughput. [REDL1998, MACTCP1997]
"
1/ It's questionable whether it's desirable to design an AQM around any particular transport algorithm. However, let's leave this point aside for now...

2/ It's questionable whether it's reasonable to design an AQM around NewReno's square-root law that is known not to scale, which means NewReno is being superceded by algorithms like Cubic that move away from the square root. Specifically if the window W is proportional to 1/p^b, then for:
        NewReno,        b = 0.5
        Cubic,          b = 0.75
        Compound,       b = 0.8
        HSTCP,          b = 0.835
        DCTCP,          b = 1
        Relentless,     b = 1
        Scalable TCP,   b = 1
However, let's leave this point aside too for now...

3/ Back in Apr'13, for myself, I plotted how the CoDel algorithm increases drop probability with time, and it looked pretty linear to me, not a square root law. I've just got round to doing the analysis, and indeed it tends very quickly to a linear law with time. So, Codel's control law will actually cause Reno's throughput to fall with the square root of time, not linearly.

4/ It seems to be a waste of cycles to implement CoDel's control law using a square-root. Given it results in a linear increase in drop frequency with time, it should be possible to design a much simpler algorithm.

5/ My analysis also shows that the rate of increase in drop probablity is inversely proportional to the link rate. I don't believe this is desirable, as it will require tuning for the expected number of flows on the link. However it is probably OK for variable rate links.

6/ The rate of increase of drop probability is also inversely proportional to the square of 'interval'. I suggest a new constant is defined for the control law, rather than relating the control law to interval in this way. Otherwise, when anyone tunes interval, they will get undesirable changes to the control law (e.g. reducing interval 10x [to 10ms] would make the control law 100x more sluggish).

7/ We'll need to debate how the control law should behave in the presence of unresponsive flows, so this analysis should at least support that discussion.


Here's my working (pls check it - I may have made mistakes)
_________________
For brevity, I'll define some briefer variable names:
        interval =      I [s]
        next_drop =     D [s]
        packet-rate =   R [pkt/s]
        count =         n [pkt]

From the CoDel control law code:
        D(n) = I / sqrt(n)
And the instantaneous drop probability is:
        p(n) = 1/( R * D(n) )

Then the slope of the rise in drop probability with time is:
        Delta p / Delta t       = [p(n+1) - p(n)] / D(n)
                                = [1/D(n+1) - 1/D(n)] / [ R * D(n) ]
                                = sqrt(n) * [sqrt(n+1) - sqrt(n)] / [R*I*I]
                                = [ sqrt(n(n+1)) - n ] / R*I^2

At count = 1, the numerator starts at sqrt(2)-1 = 0.414.
Amd as n increases, it rapidly tends to 1/2.

So CoDel's rate of increase of drop probability with time is nearly constant (it is always between 0.414 and 0.5) and it rapidly approaches 0.5 after a few drops, tending towards:
        dp/dt = 1/(2*R*I^2)

This constant increase clearly has very little to do with the square-root law of TCP Reno.

In the above formula, drop probability increases inversely proportional to the packet rate. For instance, with I = 100ms and 1500B packets
at 10Mb/s =>    R = 833 pkt/s =>        dp/dt = 6.0% /s
at 100Mb/s =>   R = 8333 pkt/s =>       dp/dt = 0.6% /s

If CoDel was designed for scalable transports like DCTCP, and it was designed for the same number of flows on any size link, this scaling with link rate would make sense. But there are two reasons for an AQM to have to scale with link rate:

a) Variable rate link
You would probably want to design for about the same number of flows no matter how the link rate varies, so the control law could work for variable rate links (assuming scalable transports, which we are gradually tending towards).

b) Deploying CoDel on links in different parts of a network
At any one time, we tend to design a network assuming there will be more flows on faster links. So, in order to remain as responsive on faster links, CoDel's control law will need to be tuned for the expected number of flows before it is deployed on different size links.


Cheers



Bob


________________________________________________________________
Bob Briscoe, BT
_______________________________________________
aqm mailing list
[email protected]
https://www.ietf.org/mailman/listinfo/aqm

Reply via email to