Re: [tsvwg] Traffic protection as a hard requirement for NQB

Bob Briscoe <> Tue, 10 September 2019 15:13 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 6130A1208CC for <>; Tue, 10 Sep 2019 08:13:42 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.999
X-Spam-Status: No, score=-1.999 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_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (2048-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id a8wps4cN0Vbg for <>; Tue, 10 Sep 2019 08:13:38 -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 310771201E4 for <>; Tue, 10 Sep 2019 08:13:38 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed;; s=default; h=Content-Transfer-Encoding:Content-Type: In-Reply-To:MIME-Version:Date:Message-ID:From:References:Cc:To:Subject:Sender :Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help: List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=HVQ99P5vS0jDDoi1JszqfGfhNCAT34GEooHMgbEoR8s=; b=hb4K7/WwRhlwHOo8WQAZgVQ/Un ZZl+SsEmFQhlcJAvDzJ69WwYyyNvuUf+COAilUibI91J98tJuSFsXjiHNLsKDHxd5f/wEB5cZtJIo oRwA27+aG23IPLBslifw20k44RQC6hIq1GETTuWiXzkFYpkIe9bVemJJf3UZot6SXNIkpHhWePSoE 0gwGNqITEx4sXEqXZ29BPPLBqXSdXmkaGrEgzwKMZc4c05YCQF6l8vZKEHOCJfjWYKKk+Fzf7PIS6 /RDWMQyT7XR/P/as43TeR9qXZ1f6kmSYQNnYXGIDKY/WFUYDg1K61PZ0hBMVn0Tbho6DUQE4IUekK ZfK+XMYw==;
Received: from [] (port=41848 helo=[]) by with esmtpsa (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128) (Exim 4.92) (envelope-from <>) id 1i7hpo-0004qX-4B; Tue, 10 Sep 2019 16:13:36 +0100
To: Sebastian Moeller <>
Cc: "Black, David" <>, "" <>
References: <> <> <> <> <> <>
From: Bob Briscoe <>
Message-ID: <>
Date: Tue, 10 Sep 2019 16:13:35 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.6.1
MIME-Version: 1.0
In-Reply-To: <>
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 8bit
Content-Language: en-GB
X-AntiAbuse: This header was added to track abuse, please include it with any abuse report
X-AntiAbuse: Primary Hostname -
X-AntiAbuse: Original Domain -
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain -
X-Get-Message-Sender-Via: authenticated_id:
Archived-At: <>
Subject: Re: [tsvwg] Traffic protection as a hard requirement for NQB
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, 10 Sep 2019 15:13:46 -0000


On 07/09/2019 16:48, Sebastian Moeller wrote:
> Dear Bob,
>> On Sep 5, 2019, at 20:23, Bob Briscoe <> wrote:
>> ==Incentive Alignment?==
>> To judge whether there's any tragedy of the commons (incentive alignment), I'll put up a straw-man NQB configuration that complies with the following requirement in the draft:
>>     a useful property of nodes that support separate queues for NQB and QB
>>     flows would be that for NQB flows, the NQB queue provides better
>>     performance (considering latency, loss and throughput) than the QB
>>     queue; and for QB flows, the QB queue provides better performance
>>     (considering latency, loss and throughput) than the NQB queue.
>> Background: NQB has become possible largely because Internet access link rates have typically become fast enough that the serialization delay of a packet can be sub-millisecond, and therefore a queue of a few packets introduces delay that is small relative to other non-optional sources of delay like propagation. In these cases we no longer need priority scheduling for low delay.
>> Config:
>> 	• Scheduler:
>> 		• WRR with weight 0.5 for NQB on a 120Mb/s link. That gives at least 60Mb/s for NQB flows.
>> 		• Scheduler quantum: 1500B.
>> 	• Buffering:
>> 		• The NQB buffer is fairly shallow (30 packets or 3ms at 120Mb/s).
>> 		• The QB buffer is deeper (say 200ms) with an AQM target delay of say 10ms.
>> Traffic: Let's introduce some example NQB traffic:
>> 	• 2 paced flows of VoIP datagrams, each avg 50B payload plus 58B of Eth/IP/UDP/RTP headers at 33pkt/s
>> 		• bit-rate: 29kb/s /flow
>> 		• serialization delay: 7.2us / pkt
>> 	• 2 streams of 1000B game sync datagrams at 30pkt/s =>
>> 		• bit-rate: 240kb/s /flow
>> 		• serialization delay: 67us / pkt
>> 	• plus occasional DNSSec datagrams, worst case 1500B
>> 		• serialization delay: 100us / pkt
>> 	• Perhaps 540kb/s in all, which is about 0.9% of the min NQB capacity.
>> Worst-case NQB queuing delay calculation for the above traffic model:
>> Each NQB flow paces out its own packets, but one might happen to arrive while a packet from any of the other NQB flows is already queued. Worst case n-1 = 4 other NQB packets queued, where n is the number of application flows. And if there's traffic in the QB queue, each NQB packet will have to wait for one quantum (100us) while the other queue is served. Worst-case NQB delay is then:
>> (67us * 2 + 7.2us + 100us) + (100us * 4) = 641us,
>> It's v unlikely that this worst-case would arise, but it gives an indication of where the tail of the delay distribution will lie.
> 	[SM] I just re-thought this section, and believe it to be a strawman argument.
> In my reality the NQB draft states:
> "7.  Relationship to L4S
>     The dual-queue mechanism described in this draft is intended to be compatible with [I-D.ietf-tsvwg-l4s-arch]."
> In turn [I-D.ietf-tsvwg-l4s-arch], drags in I-D.ietf-tsvwg-aqm-dualq-coupled which sizes the shared dualQ buffer to allow for 250ms at the egress bandwidth ("limit = MAX_LINK_RATE * 250 ms               % Dual buffer size"), and not 3 ms.
> In the example above it is ONLY the extremely shallow buffer of 3 ms that "aligns" the incentives such that QB traffic gets unhappy in the NQB queue. So either  -D.ietf-tsvwg-aqm-dualq-coupled needs to change, or your argument above needs adaption to 250ms. And even if we would allow 50% of that for the QB queue, that still leaves 125ms. Since you are heavily involved in the other L4S drafts this is a rather surprising lack of candidness about how the NQB queue is actually supposed to be operated.
> Feel free to demonstrate again how with a 125 ms buffer (that is 0.125/((1500*8)/(120*1000^2)) = 1250 packets or 1250*1500/1000^2 = 1.875 MB, a whole lot of flows are one with their business long before they transmitted 1,8 MB)  there are no incentives for QB flows to mark themselves as NQB unless there is a stringent monitor and enforcement regime operated at the bottleneck NQB queue operating element to weed out misbehaving flows. But please plug in the numbers that the l4S family of drafts actually recommend to use, so it becomes relevant for this draft.
You're right that, when the NQB draft says it is compatible with 
l4s-arch, it means it is compatible with the structure of the 
architecture, not necessarily the specific recommended numbers in one of 
the example implementations in aqm-dualq-coupled. Indeed, in Appendix A 
of aqm-dualq-coupled, note b says that two separate buffers might be 
preferred to a shared 250ms buffer [and the Low Latency buffer would not 
need to be more than a few ms].

That said, here's a strawman (i.e. not tested, but for you to bash) for 
adding NQB support to the DualPI2 example in appendix A of 

* Classify NQB packets as well as L4S ECN into the Low Latency queue
* Don't subject NQB packets to the L4S AQM (unless their ECN field is 
also L4S).
* During overload, subject all packets to the same drop prob (Classic, 
L4S and NQB)
* add a 3ms sojourn limit for packets marked NQB (but not L4S), after 
which they are dropped
* It might be necessary to tune down the L4S scheduling weight to 
bolster the incentive against mismarking, e.g. 3/4 not 15/16.

The alternative specified for DOCSIS is to use a 10ms low latency buffer 
but also to implement per-flow queue protection (which can be disabled 
by the operator).



> Best Regards
> 	Sebastian

Bob Briscoe