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

Greg White <> Wed, 11 September 2019 16:21 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 51DC8120A81 for <>; Wed, 11 Sep 2019 09:21:09 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: 3.001
X-Spam-Level: ***
X-Spam-Status: No, score=3.001 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, GB_SUMOF=5, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=no autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (1024-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id mXXqy8A1JCDo for <>; Wed, 11 Sep 2019 09:21:06 -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 501FD120A84 for <>; Wed, 11 Sep 2019 09:21:06 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901;; cv=none; b=KrtzZ9ojKcru6RBsucHAvPQ8UtVwOyQnGBI8rNBJtONNrpas068ZRQlR3ddHntlb1ZAbiZKBV0QHXoFJol6SnVYrecI6qDUG+yAY/YJy7EEbBdRaQcV/jD7qgkR+0Jy/M8cgHqSeoMHld2f4tcYjgly0yOfpTclN5Snl1FVwfCIDu8/kayzAhVj5WEhTwvY0Xwk+Q3TVTP75cHs7W5vHYX8PzIeGPbNtvxmWv93yEYTffJOjlccUKQPOpTcY6rLRLxBhT3fkccFSTG7KbwTqT2b1OIdvOZsBvILv1k7RzGQZ4k/cky+m1hJoDqcif60FcTg/sQ6ZaMuLfTvae+T4XA==
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=x+WfJsSQh/mjKYlbr2o+HA420S0uEJylutHfkDTfL2M=; b=A9TfUDnK0fBDq/eQSo8ouUKEhoTY3iOH5YeL+RPfAmbHdbg6GSKFTUgYk402BMp2sDXi1H2mJ2Db6gFQ8vZ3PmNbh8m2jkjYMiiL4ycFxJWuVpnK7yAJ4jqEAe1hPkNYhFdZ3RWHz6c9Qy4GgjaezPpGSk/F3Q96Sh2VjB8CdUNB7XQ3FZTkUTmzgKU73eVJ12z15HBd76jjiVraQqomMruCJcJM95XkuacidmdCWndWqSENk3itMtLWEtKiVW3lENWJ8mG+MFDnDzHfqs8so25jyKVpPzxdNZewhT954YmVOkPmBKAt7GjnylOc2SmOpq+7/h/sNzwm+Tlvb38Adg==
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=x+WfJsSQh/mjKYlbr2o+HA420S0uEJylutHfkDTfL2M=; b=u7dxOLRylO8yFUdmdTWPbNKGfxhCUhYyZnX25W2kgzuotSIszNq5nLWk5UWhkdyqDU+6kP8Z20iS8+5LXTPI0zrwfqRLhanaWOq+3tGsF+6zszC6AygEauicrOqGc0R0M7/EUdbfSAoODjKEQQEd4uBzthDcmO+Tgw07GJDJeLA=
Received: from ( by ( with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2241.20; Wed, 11 Sep 2019 16:21:04 +0000
Received: from ([fe80::cc2f:14c9:624d:4e74]) by ([fe80::cc2f:14c9:624d:4e74%6]) with mapi id 15.20.2220.024; Wed, 11 Sep 2019 16:21:04 +0000
From: Greg White <>
To: Steven Blake <>
CC: "" <>
Thread-Topic: [tsvwg] Traffic protection as a hard requirement for NQB
Thread-Index: AQHVZBcbAE9WSYnLSUuE4vuQINlztqce+66A//+xKICAA0UdAIAEWxmA
Date: Wed, 11 Sep 2019 16:21:03 +0000
Message-ID: <>
References: <> <> <> <> <> <> <> <>
In-Reply-To: <>
Accept-Language: en-US
Content-Language: en-US
user-agent: Microsoft-MacOutlook/10.1c.0.190812
authentication-results: spf=none (sender IP is );
x-originating-ip: []
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: b86da9cf-884f-4f39-9c35-08d736d40b20
x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600166)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:SN6PR06MB4367;
x-ms-traffictypediagnostic: SN6PR06MB4367:
x-ms-exchange-purlcount: 2
x-microsoft-antispam-prvs: <>
x-ms-oob-tlc-oobclassifiers: OLM:5516;
x-forefront-prvs: 0157DEB61B
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(376002)(346002)(39850400004)(366004)(396003)(136003)(199004)(189003)(316002)(66574012)(14454004)(6486002)(5660300002)(478600001)(25786009)(64756008)(6436002)(71200400001)(71190400001)(91956017)(256004)(76116006)(76176011)(53936002)(4326008)(6246003)(6306002)(14444005)(6916009)(54896002)(36756003)(99286004)(229853002)(7736002)(6512007)(58126008)(26005)(446003)(86362001)(186003)(102836004)(9326002)(81166006)(2906002)(8936002)(6116002)(3846002)(8676002)(2616005)(11346002)(81156014)(476003)(6506007)(66946007)(33656002)(53546011)(66066001)(66556008)(66446008)(66476007)(486006)(85282002); DIR:OUT; SFP:1102; SCL:1; SRVR:SN6PR06MB4367;; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX:1;
received-spf: None ( does not designate permitted sender hosts)
x-ms-exchange-senderadcheck: 1
x-microsoft-antispam-message-info: fHmaEWqEuLwV3hD2h0vxolfZ1QUfaYB3ZBYqeGhxtRV0RrVRoITXw7OySwLkDG3Gl3OMhxkTwDONNg4BY9+q3GDBrzIajiY5WMSANg2VmGdbHEl0jOhCHOxfoUbd3Jp0xOaWTCVynPo3TmMOXhzO1JYNhfp1Pe1N6fS34aqlT1ZQxHgcIKMnx0Jqv0Fuh72B7DLzRW7rmFvr+khuHo+ZzZrO2E3+oYwp8LUFwCb53aOQOHpXRsMDPCnvmre81aFiBGiFFuG14U4lqoUW9HpqVY1MXx79noZfqqVrqIzD03RRu2iNHw7x7kC+QZBKmmbFMPP1De9+XbDozR6H4c2O7sqhY1utcx9lZXjmgm1oVXwsyoG8wsQEXaj/VD/5NkjBPeY3KFla2VFQVNnWMOdpW7u0bBe2cxTdiIuSfMxH88o=
x-ms-exchange-transport-forked: True
Content-Type: multipart/alternative; boundary="_000_A2B66FE23C68474284EBA5E4853D3DC9cablelabscom_"
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-Network-Message-Id: b86da9cf-884f-4f39-9c35-08d736d40b20
X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Sep 2019 16:21:04.0959 (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-CrossTenant-userprincipalname: RQQp/6Hr+MPQDOj4h3Q0xLCx20MDlPIYX+iUbz1tx0xKs+Lunx2ee0CGQswpVP1F1IqYrT/dwuKpCuwGha2yIA==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR06MB4367
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: Wed, 11 Sep 2019 16:21:09 -0000

Hi Steven,

See my responses (marked [GW2]).


From: Steven Blake <>
Date: Sunday, September 8, 2019 at 9:50 AM
To: Greg White <>
Cc: "" <>
Subject: Re: [tsvwg] Traffic protection as a hard requirement for NQB

On Fri, 2019-09-06 at 19:53 +0000, Greg White wrote:

[GW] comments below


I don't know how to reconcile any of this below with the text of your draft (specifically Secs. 1 & 3), which talks about low-bandwidth applications, specifically those over UDP. Are you contending that the sum of these adds up to a significant fraction of traffic on any link?

[GW2] While it’s not difficult to come up with scenarios where the NQB traffic adds up to a significant percentage of link capacity, yet remains NQB, the point I was trying to make was that there isn’t a need to artificially limit NQB traffic to some small fraction of link capacity, and doing so just makes the problem harder.  Using a work-conserving DRR scheduler with 50/50 weighting between the queues is sufficient.  Like Bob Briscoe indicated in one of his recent posts, throw out your preconceived notions of how QoS has traditionally been implemented in networks.  This is different.

From: tsvwg <> on behalf of Steven Blake <>

The objective as I understand it is to offer low queueing latency to non-admissioned-controlled/non-capacity-seeking traffic (NQB). First, this is only feasible if NQB traffic is naturally self-limiting to a small fraction of total traffic (e.g., < 5%). Second, existence of this NQB service should not noticeably impact the QoS of capacity-seeking (QB) traffic. Third, implementations of this NQB service should try to ensure that capacity-seeking traffic trying to utilize the NQB service gets worse service with very high probability (so that it doesn't even bother to probe).

[GW] If the WRR weight is 0.5 for each queue, then it is feasible for the NQB PHB to provide low queueing latency to NQB traffic up to 50% of the total link capacity (and more than 50% when QB traffic is not filling up the other 50%).

That claim is technically false. You cannot achieve 100% utilization on any link (or link slice) at low queueing delay for uncoordinated, non-admissioned controlled traffic. I'll bet you cannot find a carrier anywhere that allocates 50% (or even 20%) of capacity on their metro or long-haul networks to admissioned-controlled & tarriffed EF traffic. So I don't see them doing so for non-admissioned controlled/non-tarriffed traffic.

[GW2] I think you’re missing my point.  The point was that it isn’t necessary that the aggregate of NQB traffic remains below 5% of link capacity.  Also, as the draft discusses, the intended application of the NQB PHB is on access network links, not long-haul or metro links.  Even so, you can’t compare historical configurations of EF prioritization to NQB.   If you need an analogy, imagine a link that supports an FQ-like qdisc, where flows are hashed into two queues, and there is a work-conserving DRR scheduler with equal weighting between the two queues.  While this hypothetical system wouldn’t give a whole lot benefit, I hope you can see that it wouldn’t be objectionable either.   Maybe you get lucky and the queue your flow gets hashed into is less loaded than the other, but maybe it isn’t.

[GW] On the second point, you are correct, the existence of the NQB service will not noticeably impact the QoS of capacity-seeking QB traffic.  For example, if the NQB traffic did happen to be smooth traffic (CBR) at exactly 50% of link capacity, then with NQB, the QB traffic flows have 50% of link capacity to compete with each other for. Let’s say that competition results in (e.g.) 0.1% packet drop/mark.  On the other hand, without the NQB service, and in the presence of the same CBR flow, the capacity-seeking traffic flows similarly compete for the remaining 50% of link capacity, and settle in to the same 0.1% packet drop/mark rate (yet the CBR flow is unfortunately also subject to high queuing delay as well as 0.1% drop if the link doesn’t support ECN).  Well, being picky, if the link didn’t support ECN then I guess the capacity seeking traffic would compete for 50.1% of link capacity without the NQB PHB, as opposed to 50% with the NQB PHB, but I would argue that isn’t a “noticeable impact”.

If I am writing a capacity seeking application, and I believe that there is a lightly utilized link slice of 20%-50% of capacity where I can grab more than my fair share, I would be highly tempted to setup two connections, one-NQB marked and one not, and let them each grab as much capacity as possible. Which benefits my app until everyone else does the same, and then we are back to square one.

[GW2] You could be setting up two connections today, even without NQB.  Heck, you could set up 200.  Or you could roll your own congestion controller that cuts its congestion window by 5% in response to a congestion signal (under the assumption that all the other suckers will back off first).  It is possible for the internet to be abused. I still find it useful.
[GW2] As a more specific response to this, what would you use for your congestion controller on the NQB queue?  In the case of DOCSIS, you’ll need to (more-or-less blindly) guarantee that you can maintain sub-millisecond queuing delay while seeking the link capacity in order to succeed. Why not just use TCP Prague or BBRv2 and make your life easier?

[GW] On your third point, I agree in concept, and it is an aspect that we’ve discussed privately several times.  At the end of the day, we could not convince ourselves of an appropriate “punishment” for mismarked QB traffic, other than high packet loss in the case where QP is not implemented or potential for out-of-order delivery when QP is implemented.

Given this, using a WFQ-ish scheduler with a high NQB scheduler weight to achieve low latency is the wrong hammer to hit this nail, IMHO. A small queue by itself is insufficient to prevent capacity-seeking traffic from trying to grab that large & isolated share of capacity. If I were implementing this (and only this) I would consider putting NQB traffic in a bounded strict priority queue, feeding it priority credits at say 2-4% of link capacity. I would also put a policer in front of that queue set at a rate of 4-6% link capacity, with a large enough token bucket to let small NQB bursts through. That is a very simple implementation, available in lots of existing hardware, that achieves the stated objectives.

[GW] But priority isn’t necessary, and it results in the need for limitations on NQB bandwidth.  For example, in your implementation, what would happen when the arrival rate at the link is only 20% of link capacity but all of it is NQB?  I guess the policer would unnecessarily discard a large percentage of that traffic.

DoS-ing NQB traffic in this implemention is "easier" than DoS-ing it in your proposed scheduling approach, but a targeted NQB DoS attack will have less impact on capacity-seeking traffic, and DoS-ing residential access links using only best-effort service is already a thing, so I'm not sure it really matters.

How do you estimate how much NQB traffic there might be? How would you tune this? My assumption is that this whole scheme only survives if the amount of NQB traffic is always so small relative to any link's capacity (< 5%) that you just allocation a small fraction of link capacity to NQB and forget about it. In which case, WRR scheduling doesn't give you good latency because your HOL NQB packet might have to wait for >= 20 MTU/link rate to get serviced.

[GW2] The whole idea is that estimating NQB bandwidth and tuning isn’t required.


// Steve