[Bloat] ipspace.net: "QUEUING MECHANISMS IN MODERN SWITCHES"

Jonathan Morton chromatix99 at gmail.com
Thu May 29 10:06:21 EDT 2014


> > Which yields you the classic tail-drop FIFO, whose faults are by now
well documented.  If you have the opportunity to do something better than
that, you probably should.  The simplest improvement I can think of is a
*head*-drop FIFO, which gets the congestion signal back to the source
quicker.  It *should* I think be possible to do Codel at 10G (if not 40G)
by now; whether or not it is *easy* probably depends on your transistor
budget.
>
> Caveat: this is probably the best strategy for networks that consist
solely of long lived, non service critical, TCP flows - for the rest of
networking requirements think carefully. There are several, real world,
scenarios where this is not the best strategy and, where you are looking to
make any form of "safety" case (be it fiscal or safety of life) it does
create new performance related attack vectors. We know this, because we've
been asked this and we've done the analysis.

That sounds like you're talking about applications where reliable packet
delivery trumps latency. In which case, go ahead and build big buffers and
use them; build the hardware so that AQM can be switched off. I happen to
believe that AQM has the more common applications, so it should still be
built into hardware whenever practical to do so.

Speaking of which, here are a couple more ideas for hardware-simple AQM
strategies:

RANDOM qdisc, which has no queue head or tail. On dequeue, it delivers a
random packet from the queue. On enqueue to a full buffer, it drops random
packets from the queue until the new packet will fit. Your primary
congestion signal is then packets arriving out of order and with delay
jitter, which increases with the average fill of the queue. As a backup, it
will revert to dropping packets in an approximately fair manner.

HALF MARK qdisc, which is essentially a head-drop FIFO, but when the queue
is half-full it begins marking all ECN capable packets (on dequeue) and
dropping the rest (according to ECN RFC). I know, it's theoretically
inferior to RED, but it's far more deployable. It is also capable of giving
a congestion signal without dropping packets, as long as everything
supports ECN. Easily generalised into HIGH WATER MARK qdisc where the ECN
threshold is not necessarily at half-full.

You may also notice that RANDOM and HALF MARK can be implemented
simultaneously on the same queue. This is generally true of any two AQM
strategies which respectively target packet ordering and packet marking
exclusively. You could thus also have RANDOM+Codel or similar.

- Jonathan Morton
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.bufferbloat.net/pipermail/bloat/attachments/20140529/dc598925/attachment-0002.html>


More information about the Bloat mailing list