[Bloat-ietf] [aqm] [FQ_CoDel] "Official" version

Jim Gettys jg at freedesktop.org
Mon Feb 3 10:57:45 EST 2014


On Mon, Feb 3, 2014 at 9:30 AM, Nicolas KUHN <
nicolas.kuhn at telecom-bretagne.eu> wrote:

> Dear all,
>
> We would like to test FQ_CoDel and we wonder which version to evaluate.


fq_codel has been in Linux since about Linux 3.5, IIRC.  For casual
experiments, a current Linux distro will have it available at the
invocation of the "tc" command.  But...

You should generally be testing the latest Linux release (not that I
think there has been much change in fq_codel, as demonstrated in:
https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/log/?id=refs%2Ftags%2Fv3.14-rc1&qt=grep&q=fq_codel

For serious bench marking getting results from an old system can make your
results easily invalid since there has been a large number of improvements
in Linux for bufferbloat everywhere over the last three years, and the
queue discipline is only part of the equation.  For example, many ethernet
drivers in SOC's found in home routers may still lack even BQL support.

You should be testing the fq_codel queue discipline: while Dave Taht has
played with a number of variants on that theme, nothing to date has shown
itself (by testing) with enough better results to be worth merging upstream
into kernel.org.  Pie finally entered kernel.org Linux a month or so ago.

Note that there a large number of "traps" for the unwary in this
benchmarking/testing business, into which multiple groups have come to bad
ends causing questionable results to confuse everyone. For example, the
details of the underlying device driver can matter a lot (actually,
hugely!), and netem has to be used with exquisite care just to name a
couple of the big traps.

Fundamentally, you need to realize that the queue discipline in Linux
(where you can apply aqm) does *not* have control of all of the buffering
in the system; device drivers and even the hardware itself can do
"interesting" things to you.  And a bunch of changes have taken place in
the Linux TCP stack to remove unneeded buffering since around Linux 3.2.
 At one point I think the list was up to a dozen or more significant
improvements  in the Linux networking stack, independent of fq_codel.

We've come to learn that WiFi in particular needs a serious rewrite, and
before venturing far, you'd be wise to get in touch with us further.  ATM,
the ath9k driver is least problematic, but even there, aggregation causes
large amounts of buffering (32 packets!).

Dave Taht and I tried to outline what you should be thinking about when
bench marking in:

http://www.bufferbloat.net/projects/codel/wiki/Best_practices_for_benchmarking_Codel_and_FQ_Codel

Pretty much all of these issues apply to anything you do, not just fq_codel.

I think that page overs most of the problems  though of course, Linux is a
moving target so I'm sure there will be future problems :-(.



> Does anyone know where we could get the "official" version / source code
> of FQ_CoDel ?
> (linux and/or NS2 if possible)
>

www.kernel.org for the source.

You can use git to see the exact revision history of the code.

I forget off hand where to find the simulation code...  There is a link
somewhere in the bufferbloat/codel wiki

http://www.bufferbloat.net/projects/codel/wiki/Wiki

Help from people to get the wiki up to date gratefully appreciated!

Jim



> Thanks a lot,
>
> Kind regards,
>
> Nicolas
>
> _______________________________________________
> aqm mailing list
> aqm at ietf.org
> https://www.ietf.org/mailman/listinfo/aqm
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.bufferbloat.net/pipermail/bloat-ietf/attachments/20140203/765a5af0/attachment-0002.html>


More information about the Bloat-ietf mailing list