Re: [aqm] New Version Notification for draft-baker-aqm-sfq-implementation-00.txt

Dave Taht <dave.taht@gmail.com> Tue, 24 June 2014 20:44 UTC

Return-Path: <dave.taht@gmail.com>
X-Original-To: aqm@ietfa.amsl.com
Delivered-To: aqm@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 518B61B2883 for <aqm@ietfa.amsl.com>; Tue, 24 Jun 2014 13:44:32 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -0.101
X-Spam-Level:
X-Spam-Status: No, score=-0.101 tagged_above=-999 required=5 tests=[BAYES_20=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, SPF_PASS=-0.001] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id p6Si1QYta0Wg for <aqm@ietfa.amsl.com>; Tue, 24 Jun 2014 13:44:30 -0700 (PDT)
Received: from mail-oa0-x22b.google.com (mail-oa0-x22b.google.com [IPv6:2607:f8b0:4003:c02::22b]) (using TLSv1 with cipher ECDHE-RSA-RC4-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 2DD7E1B287F for <aqm@ietf.org>; Tue, 24 Jun 2014 13:44:30 -0700 (PDT)
Received: by mail-oa0-f43.google.com with SMTP id o6so1011487oag.30 for <aqm@ietf.org>; Tue, 24 Jun 2014 13:44:29 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; bh=D8cSQ1fHxWORoUz3/YMRM5ux98It+7WHwyMtuoI6Rxc=; b=dBZEHFOL/Gq+8SqgZQcNeaw3c9aiO7r4pf6nFGellhsAV9YVPhS5OGVMkymm9+m+FD IIYFC9uA22YoBEqqurAWouDEoQtFwalcZzNGtOkQ/YQ7zg2HYFmMaLD06s0OKpqfG3oS WNMQAuLTT755p4hlAphnxdLw8iBNBsrIi0RI/krY7GVbC3wbDpJ5/60ODrgwzipJSAFf fL87V1O+ej8WgTjMp2QJjqToxtc454lLPNUAiQ1LOQt8PoTKNsg7aoNlZaaG2wlVW3/W MoaC3NjaqVdz69zlupYCZ5H7EvBM7vGy3r5Y0gy3+dFp069P/FEBagsoJy6x0KtzuuRt dycw==
MIME-Version: 1.0
X-Received: by 10.182.95.68 with SMTP id di4mr3409893obb.87.1403642669562; Tue, 24 Jun 2014 13:44:29 -0700 (PDT)
Received: by 10.202.48.200 with HTTP; Tue, 24 Jun 2014 13:44:29 -0700 (PDT)
In-Reply-To: <A1DBF044-755D-4382-9AE8-930180358D0A@cisco.com>
References: <1403639157.90844.YahooMailBasic@web141606.mail.bf1.yahoo.com> <A1DBF044-755D-4382-9AE8-930180358D0A@cisco.com>
Date: Tue, 24 Jun 2014 13:44:29 -0700
Message-ID: <CAA93jw4kN50nFF1zWLUOM=_TEqo-kXs3qTJMti81PXuuVKS5DA@mail.gmail.com>
From: Dave Taht <dave.taht@gmail.com>
To: "Fred Baker (fred)" <fred@cisco.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Archived-At: http://mailarchive.ietf.org/arch/msg/aqm/KkvvK9iQv9_FwzD8590RlUOl-5c
Cc: RichardScheffenegger <rs@netapp.com>, "aqm@ietf.org" <aqm@ietf.org>, "dhavey@yahoo.com" <dhavey@yahoo.com>, grenville armitage <garmitage@swin.edu.au>
Subject: Re: [aqm] New Version Notification for draft-baker-aqm-sfq-implementation-00.txt
X-BeenThere: aqm@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: "Discussion list for active queue management and flow isolation." <aqm.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/aqm>, <mailto:aqm-request@ietf.org?subject=unsubscribe>
List-Archive: <http://www.ietf.org/mail-archive/web/aqm/>
List-Post: <mailto:aqm@ietf.org>
List-Help: <mailto:aqm-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/aqm>, <mailto:aqm-request@ietf.org?subject=subscribe>
X-List-Received-Date: Tue, 24 Jun 2014 20:44:32 -0000

On Tue, Jun 24, 2014 at 1:01 PM, Fred Baker (fred) <fred@cisco.com> wrote:
>
> On Jun 24, 2014, at 12:45 PM, Daniel Havey <dhavey@yahoo.com> wrote:
>
>> So IMHO it really doesn't matter except in the weird corner case where a a running flow has already bloated the queue and then we switch on the AQM.

Hmm? In practice, changing the qdisc in Linux, at least, does
completely blow up the existing queue: all packets are discarded, the
various data structures removed, the new data structures created, then
switched.

Don't do that. Do it once, at init time, or before address
acquisition. Simple schemes can be handled now (linux 3.13 and later)
by a single sysctl variable, set either in /etc/sysctl.conf or via

sysctl -w net.core.default_qdisc=fq_codel # or pie, or sfq, or fq

Arguably this needs to allow for arguments, be more flexible and
interface specific. Same goes for enabling ecn or not.
(net.ipv4.tcp_ecn=0)

More complex implementations, like htb, have a "default" direction
things go until things are fully setup. Other linux implementations,
like drr and qfq, do not, and result in packet loss until entirely
setup.

Recently support for a "plug scheduler" was developed in order to
assist vm migration, which might make it more possible to switch out
qdiscs without interrupting service.


> That actually has me a little worried with the 100 ms delay built into codel.

"Initial delay" until it finds a sane delay to drop at.

>Imagine, if you will, that you have a deep buffer at the bottleneck and a relatively short RTT, and are moving a large file. I could imagine codel’s delay allowing a session to build a large backlog and then “suddenly turning on AQM”. on a 10 MS link with O(200) packets queue depth, for example, you could build 100 ms plus of data in the queue, spend the delay mostly emptying it, and then drop the last queued packet because 100 ms had gone by, there was still data in the queue, and the next packet had sat there longer than 5 ms.

Given that pie depends on an estimation window being filled this is
not a problem pie has. However needing that window filled is a big
problem at low bandwidths for pie.

As for codel....

Well there is a specific inhibit in present forms of codel to not drop
the last packet in the queue even if it has sat there too long. Codel
stops dropping at minbytes (called maxpacket in the code), which is a
variable determined from the flow characteristics, and is usually 1MTU
in size, but can be larger if TSO or GRO are in operation on the
device.

The first versions of fq_codel preserved this behavior: it would never
drop the last packet in any fq_codel queue. This (still) seems like
desirable behavior in the case of having nearly one queue per flow,
but it led inevitably to what I had called the horizontal standing
queue problem (where we could end up with 1024 queues all with one
packet and no longer meeting the latency target(s)). So eric made the
backlog maxpacket check global to all queues, and that's what's been
deployed ever since.

Later work, (I think) is showing, that in practice any inhibit at all
hurts on the architectures available, as htb or (bql and the tx-ring)
are already buffering up packets below where codel was dropping from
near-head.

More packets will always be along, later.

This patch disables the maxpacket check entirely, and results in a
space and cpu savings, without much observable negative or positive
effect on latency and utilization on the bandwidths available to me. I
remain a bit concerned about what happens with TSO and/or GRO enabled.

http://snapon.lab.bufferbloat.net/~cero2/0003-codel-eliminate-maxpacket-variable.patch

I'd love it if people tried it.

Of higher concern to me has long been more sanely applying hysteresis
in the drop rate over wildly varying high bandwidths and loads, but
not a lot of work has gone into codel since it's inception, as it was
so good to start with and so dramatically improved by fq_codel as to
be barely worth debating. But certainly better control laws are
welcomed!
> _______________________________________________
> aqm mailing list
> aqm@ietf.org
> https://www.ietf.org/mailman/listinfo/aqm
>



-- 
Dave Täht

NSFW: https://w2.eff.org/Censorship/Internet_censorship_bills/russell_0296_indecent.article