Re: [tsvwg] L4S status: #17 Interaction w/ FQ AQMs

Greg White <> Tue, 13 August 2019 00:01 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id E7C4012001B for <>; Mon, 12 Aug 2019 17:01:01 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2
X-Spam-Status: No, score=-2 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (1024-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id PVZ3NRzEp3UO for <>; Mon, 12 Aug 2019 17:00:58 -0700 (PDT)
Received: from ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id ECE2C12000E for <>; Mon, 12 Aug 2019 17:00:57 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901;; cv=none; b=LY0WHzE8j1YsmNeZgS50beT1bRv+9KQb2T7Dms1iSkSG74EF0KzFAvlYRoVP72es0g9dUv8aB91sRB1Rf7QYaV3hH499u4xbHNSt+OicCrW6g5Gq+fVbL2w3jfTaipGJ/9VRNJqLCWvdpUlEFy02/57PlpFAUYglFfS3AzSDHn8fVLs/3MpIr9KPWKEI/U9CbP8jBpuLXHqIqlGxrMZOx8c5AGNNlyT6ywP+dI0pO5eB84Rlt6VYauXYBr+xYJO41bwSItfEQLmeTvTZEy49a+QdEN85eD6Z/eQk+C3vyvaNcjQ/97s/sKZ5+zqOwRyLkI9EAaxmmLC1KfsYZHerqw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed;; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=O1HwSEcNNjd8AhWTBvzcIwVED5hfDPREwjcgYXzxHBE=; b=f0D8BHKE0/1gHdLLIx5CWpYUptCXJE8qjhPLkP6dQS96l1vSUq8NDUGvLjF8ZBhYgX+Ui5J1FiIkS58fVDT7SYPzjKHkF0U37Na3g4Kio2coH7Z/6G8teWgiSfHFuDFcUeNSrZQkA+Dg7oTTPuaz7RTd9Gr74DmNxyk/e8xG2EV9n/FEUAGk7U6Lmpa7t15pxfGUN0W9V9hYauZpE212l4TRWpxGi/PbTfIdMOEbQ+Q/myph7o83ELK/DHNoPgn0Tg08/7FpgMkbo1R9xnRwJENkjARbH04FlZb9nOj8OjeGyL9Svw2PZNYSE0gL0Wg4wqImAFGnUvMUSi532wTHBA==
ARC-Authentication-Results: i=1; 1; spf=pass; dmarc=pass action=none; dkim=pass; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=O1HwSEcNNjd8AhWTBvzcIwVED5hfDPREwjcgYXzxHBE=; b=SWfZ5pVpSof09FxqJVn6x1opf1tXqKAOjmX7sD0UH7ajpYno6qKhX6UuwytgY6a8a/caKKW2AZWGvcNVOyPBABYLf3OqIOlwIxwHPr1nLGngG5yopPwDtTL+aG/ukczTyc8hsBGUm1bIIAeT3SWwiPxXjA70YnvDsXEAX9gtVVg=
Received: from ( by ( with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2157.18; Tue, 13 Aug 2019 00:00:54 +0000
Received: from ([fe80::d33:804d:d298:58b3]) by ([fe80::d33:804d:d298:58b3%3]) with mapi id 15.20.2136.022; Tue, 13 Aug 2019 00:00:54 +0000
From: Greg White <>
To: Jonathan Morton <>, Wesley Eddy <>
CC: "" <>
Thread-Topic: [tsvwg] L4S status: #17 Interaction w/ FQ AQMs
Thread-Index: AQHVUIQ5bdBq+WM6aUOvw+6LfuRJ2ab3zrwA
Date: Tue, 13 Aug 2019 00:00:54 +0000
Message-ID: <>
References: <> <>
In-Reply-To: <>
Accept-Language: en-US
Content-Language: en-US
user-agent: Microsoft-MacOutlook/10.1a.0.190530
authentication-results: spf=none (sender IP is );
x-originating-ip: []
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: 9cf3fc1c-640d-405b-8ea2-08d71f814fe5
x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:SN6PR06MB3919;
x-ms-traffictypediagnostic: SN6PR06MB3919:
x-ms-exchange-purlcount: 1
x-microsoft-antispam-prvs: <>
x-ms-oob-tlc-oobclassifiers: OLM:9508;
x-forefront-prvs: 01283822F8
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(366004)(39850400004)(396003)(346002)(136003)(376002)(189003)(199004)(2616005)(53936002)(2906002)(6116002)(36756003)(7736002)(305945005)(25786009)(256004)(476003)(186003)(446003)(14444005)(3846002)(229853002)(6246003)(76116006)(66946007)(71200400001)(71190400001)(64756008)(66476007)(66556008)(66446008)(6436002)(66066001)(478600001)(53546011)(966005)(33656002)(99286004)(5660300002)(26005)(14454004)(8676002)(76176011)(8936002)(316002)(102836004)(6306002)(81166006)(6486002)(11346002)(486006)(81156014)(91956017)(110136005)(86362001)(58126008)(6512007)(6506007)(4326008)(522954003)(85282002); DIR:OUT; SFP:1102; SCL:1; SRVR:SN6PR06MB3919;; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1;
received-spf: None ( does not designate permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: C1mTLcOdPtr8pt0ExboGxnNnJqQmKrxklkKNxLtZccWQMuwogtgEygcMYbj3ZbmRBrchHmXyQPFt6VrYtaxX3TjdXZwf0tGfY33VoH8PczuEUYgWfFMB0rC37Dpm7yjx0dkNvOyR5Xz9ErjL9np+8NUJTgBNs6KJraAtEYug7wokWNRU/v0TMjHZ7uNPuTbhYuyWQ5u7TPocbt0nEqWEXoiDDLdyjPjnOM3GhfacIYWsJOyL7wzB6K8SdHSOwHhxZzQKnttklO+surUJZGiE8gDYDLu1qOrIUGSCEzJ/uJMLr8tFmkFbW1fLNqTEmZRLeU8xNp3kampSmt4A7QpT0lyPsTZzTXpVtCH5LuM7OG1ebxQvCEG79jvnPddt3IbTRDtqyQMnn2m6JcUqjdkCgaK03YDCz12HfS9KVriIBSs=
x-ms-exchange-transport-forked: True
Content-Type: text/plain; charset="utf-8"
Content-ID: <>
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-Network-Message-Id: 9cf3fc1c-640d-405b-8ea2-08d71f814fe5
X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Aug 2019 00:00:54.6032 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: ce4fbcd1-1d81-4af0-ad0b-2998c441e160
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR06MB3919
Archived-At: <>
Subject: Re: [tsvwg] L4S status: #17 Interaction w/ FQ AQMs
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Transport Area Working Group <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Tue, 13 Aug 2019 00:01:02 -0000

Hi Jonathan,

I believe this is one of the scenarios that was slated for experimentation to observe the behavior.   I don't recall hearing that experiment was conducted.  

But, I'm not sure I fully see what your concern is.  The concern I have in this scenario is that the sluggish response of the RFC3168 AQM (i.e. CoDel) in the fq_codel (or Cake) will cause the L4S sender to experience poor latency and in some cases underutilize the link.   Here is the explanation that I sent Sebastian some time ago.

[Sebastian]     But let's assume I have two flows one L4S one RFC 3168, and my link is already at saturation with each flow getting 50% of the shaper's configured bandwidth (and say 47.5% of the bottleneck's bandwidth) so the next two packets of each flow will be CE marked.

 [Greg] First off, the FQ scheduler will guarantee that both flows get 50% of the shaper capacity as long as neither flow's queue drains completely.   The legacy FQ AQM (i.e. not L4S-aware) will also operate on each queue independently, calculating a marking percentage for each one that aims to keep that queue's latency at the target value.  As long as the AQM does not cause either sender to overreact and cut its congestion window below 50% of BDP, then both will maintain packets in queue.   Since the FQ AQM in this case was designed with RFC3168 senders in mind, its response to queuing delay will be most appropriate for the RFC3168 flow, and that flow will experience packet marks and a latency over time trajectory as expected.  I don't see how the RFC3168 sender would be triggered to reduce its cwnd below 50% of BDP.  The L4S flow, on the other hand will experience a more sluggish increase in marking probability than would be ideal for L4S, and thus queuing delay will grow larger than would be ideal.  Depending on how much buffer space exists, the L4S flow might reach the tail-drop limit (which would trigger a large multiplicative reduction in cwnd, like the traditional Reno response), or the AQM would have ramped up the marking rate sufficiently to bring it under control (albeit more slowly than would be ideal).  It could be possible, due to the sluggish response of the legacy AQM, that the L4S sender cwnd undershoots 50% BDP and thus temporarily yields some capacity to the RFC3168 flow.  It seems as if your concern is that, when the RFC3168 flow cuts its cwnd to drain standing queue, that the L4S sender will shut out the RFC3168 sender on the access network link, and thus force the RFC3168 flow's FQ queue to drain completely. I don't see how this is possible.   Prior to the two CE marks in your example, both senders are (due to ACK clocking) sending at 50% of the shaper rate, plus one segment per RTT (each flow will have its own RTT). When the RFC3168 flow detects the CE mark and cuts its congestion window, it will (assuming no implementation of PRR) pause sending until sufficient outstanding ACKs are received, then it will resume sending at 50% of the shaper rate plus one segment per RTT.  Meanwhile, the L4S flow will not have cut its congestion window, and so will have continued sending at 50% of the shaper rate plus one segment per RTT, due to ACK clocking. There isn't a mechanism for it to steal capacity from the access network link and shut out the RFC3168 flow, unless (as stated previously) the RFC3168 flow's queue drains completely allowing the L4S flow to be dequeued at a higher rate (resulting in a higher ACK clocking rate, and thus a higher sending rate).  Remember that a TCP sender's response to a congestion signal (CE mark) is not to reduce its sending rate, it is to reduce its cwnd.  If the link is not yet at saturation, and a CE mark were to (unexpectedly!) arrive, then this would actually result in a decrease in sending rate.  But once the link is at saturation (the normal case for a CE mark to be generated), ACK clocking limits the sending rate to be just slightly greater than the link rate, and (assuming sufficient buffer exists) a CE mark triggers only a reduction in RTT (cwnd drops to a value that is still greater than BDP), via a pause in sending.  The long term average rate of the flow (assuming queuing delay remains bounded by either AQM or tail-drop) will be exactly equal to the link rate.


´╗┐On 8/11/19, 2:34 PM, "tsvwg on behalf of Jonathan Morton" < on behalf of> wrote:

    > On 11 Aug, 2019, at 5:03 am, Wesley Eddy <> wrote:
    > I created tickets in the TSVWG "trac" tool in order to help keep track of the individual things that look like they should be addressed in progressing L4S document set:
    > I'll try to update these based on the ongoing discussions, updates, etc., but it will make it very easy if you happen to mention the ticket numbers or some key words in threads and messages, when significant.
    Thanks for that; most of the issues seem to be well described and understood.  But there is one exception in the form of #17.
    The issue I was trying to raise is not that L4S has any particular difficulty with FQ, that it would not have with an equivalent non-FQ qdisc.  Rather I was responding to the proposed point on the slide *about* FQ, and identifying a situation where FQ could be defeated by L4S' poor behaviour in an RFC-3168 environment.
    Since this is a relatively subtle point, I'll try to expand upon it here to avoid confusion.  Fundamentally though, this is strongly related to points A, F & G, which is why I raised the four together.
    First, let's define a non-issue.  If the first significant bottleneck that an L4S flow encounters is the true one, and that bottleneck is equipped with FQ, then the worst effect that L4S can have on the network is self-inflicted.  The ability of FQ to isolate badly-behaved flows from other traffic traversing the same link is well-known, and there is nothing special about L4S that would defeat that property, on its own.  This is what I meant when I described FQ as being "pretty robust".
    Where the problems arise is where the true bottleneck, supporting FQ-AQM, is preceded by a dumb FIFO (or, without very much loss of generality, a single-queue RFC-3168 AQM).  This is what I might refer to as "Sebastian's topology", and reflects the current practice of placing bufferbloat mitigation in the CPE downstream of the last-mile link.  Even with current RFC-compliant traffic, managing overall latency in this topology is challenging; in practice it requires a reservation of some percentage of the last-mile link capacity to ensure the latter's dumb queue drains into the CPE's smarter queue.
    For example, the IQrouter automatically measures the last-mile link capacity, using speed tests, and sets its own FQ-AQM shaper to about 95% of that measurement.  But this still means that if a sudden flood of traffic arrives, only a twentieth part of that traffic will immediately collect in the IQrouter's queue, as opposed to the dumb queue at the last-mile link.  The effectiveness of the FQ-AQM thus depends on avoiding large floods of that sort, by quickly and effectively signalling congestion to external senders; only when the dumb FIFO is kept empty do the flow isolation properties of FQ take effect.
    So you can see from this why the 4-second ramp up needed for Codel to effectively control an L4S flow with a relatively short RTT is problematic.  Indeed, as the RTT gets shorter, the time needed to gain control using a Codel ramp gets longer, because the signalling frequency needs to be proportionately higher.  Luckily, there is a practical lower limit to this trend in the form of the Codel 'target' parameter, which sets a floor on the effective RTT that needs to be controlled.
    Conversely, an RFC-3168 compliant flow responds to a single CE mark after 1 RTT with a Multiplicative Decrease, so its response actually gets *faster* with shorter RTTs.  This is a property that Codel relies on to make its performance less sensitive to the precise choice of 'interval' parameter relative to path RTT.
    I can walk you through the maths for the Codel response if you like.  It's reasonably straightforward, but might not be obvious from a cursory reading of the raw RFC.
     - Jonathan Morton