In 2012, Eric Dumazet contributed the
fq_codel queueing discipline to the Linux kernel. It is thus available in recent Linux versions (3.5 and later). It combines CoDel with a variant (Deficit Round Robin) of stochastic flow-based fair queueing, and some logic to the effect that new flows get priority over old ones. It also enables ECN by default, has low computational and memory (64 bytes per flow) overhead, and can be used even on 10Gb/s links with contemporary hardware.
For a simple device your_device,
fq_codel can be activated simply by saying (as root):
tc qdisc add dev your_device root fq_codel
Unfortunately some devices are not that simple, e.g. Wifi interfaces have more than one queue, and
fq_codel would have to be attached to each of them. Dave Täht has written a
debloat script that should work for any type of interface. Hopefully, future releases of GNU/Linux distributions will be enhanced to set it up automatically by default for all devices on which it makes sense. (Source: Message by D. Taht to the LWN mailing list, June 2012.)
Toke Høiland-Jørgensen has provided packages of
netperf-wrapper with support for
fq_codel for recent releases of Debian, Ubuntu and Arch GNU/Linux on http://archive.tohojo.dk/.
The following graphs illustrate the effect of
fq_codel compared to conventional FIFO (tail-drop) queueing with large buffers, and also compared to other mechanisms such as PIE.
These two CDF plots are from an IETF-86 presentation by Greg White (CableLabs) of NS-2 simulations of DOCSIS 3.0 cable modems with different queueing mechanisms under different simulated workloads.
CDF of Gaming Traffic Packet Latency, CDF of Web Page Load Time (courtesy Greg White)
Toke Høiland-Jørgensen from the University of Roskilde performed comparative measurements of CoDel,
fq_codel , traditional Linux SFQ and the default FIFO queueing on a dedicated network of workstations connected by Ethernet. Toke implemented a new "RRUL" (Realtime Response Under Load) test, which is implemented as a Python wrapper around the netperf benchmarking tool, and is distributed as part of the netperf-wrapper package. The results were also presented at IETF-86. The summary/spoiler slide again clearly shows the benefits of
fq_codel over previous methods.
The data underlying this presentation is available on http://akira.ruc.dk/~tohojo/bufferbloat/.
netdevmailing list, May 2012
– Main.SimonLeinen - 2013-03-30 - 2016-03-20