[Codel] fq_codel_drop vs a udp flood
Anil.Agarwal at viasat.com
Tue May 3 11:37:12 EDT 2016
This problem is also caused by some weaknesses in the Codel algorithm itself.
With an unresponsive UDP flow, one would expect Codel to naturally drop packets from the rogue queue and maintain a queuing delay close to the target delay value.
But it does not.
If you were to do a simple simulation of a single queue Codel, with say a 10 Mbps link and a UDP flow at 20 Mbps, you will see queue delay oscillate between 5 milliseconds and 10+ seconds, over periods of ~30 seconds.
There are ways to fix this, if there is interest in doing so.
From: Eric Dumazet [mailto:eric.dumazet at gmail.com]
Sent: Tuesday, May 03, 2016 9:36 AM
To: Agarwal, Anil
Cc: Dave Taht; Jonathan Morton; make-wifi-fast at lists.bufferbloat.net; codel at lists.bufferbloat.net; ath10k
Subject: Re: [Codel] fq_codel_drop vs a udp flood
On Tue, 2016-05-03 at 12:50 +0000, Agarwal, Anil wrote:
> I should be more precise about the statement about the inaccuracy of the algorithm.
> Given that we dequeue packets in round robin manner, the maxqidx value
> may, on occasions, point to a queue which is smaller than the largest queue by up to one MTU.
That is not true.
Linux qdiscs (fq_codel being one of them) can carry big packets, up to 64KB in size.
You can not assume GRO/GSO are disabled. We absolutely want them for high performance.
There is no way fq_codel will track in real time the biggest flow 'just in case we have to drop packets at enqueue()'
This is a conscious choice I made years ago.
This patch will fix the performance issue and keep the normal operations fast.
More information about the Codel