Re: [tsvwg] NQB PHB description and assumptions

<> Wed, 11 September 2019 09:30 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 72AD0120846 for <>; Wed, 11 Sep 2019 02:30:14 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -4.287
X-Spam-Status: No, score=-4.287 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_NONE=0.001, T_KAM_HTML_FONT_INVALID=0.01, 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 QimuoM7QvDT4 for <>; Wed, 11 Sep 2019 02:30:10 -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 ADADA120844 for <>; Wed, 11 Sep 2019 02:30:09 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;;; q=dns/txt; s=dtag1; t=1568194203; x=1599730203; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=huqdvZmiCLCzvwQa5IgJsMYK16eLFfuyRZjVaGkbMQE=; b=WYEvEyOKOdICqfE6Ul6y8QkCmIa6UKoUkegwcKVTqcVdyQeX4iY11woY w4p7v6B+Rv8D9hMYDCD/STNlZQEGlHEwihfH9Ta3Ugysyp5pYOlnxE2jm ZIQLDpWFHx/GKxdx40AEqnTcMeQUcHQBxyUR8GqpJwC5EHDf7hqqVXZdb 7i67g8FFcR3hBaKcGhHZUWxM/p/89/JX/4tzj0ccZ+yOFVTMF4x7V+2q9 3qqxpQgQP+8+Wt84hO0PpgRE/wXpPiNQWLrplKmRl7QY3UcU5Gtx4poF+ o6knpsHxccy7AVpUcqjU+coRSp4XR5Wyj6PV7cWWBCnTkuFZdF85Jlgcd A==;
Received: from ([]) by with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 11 Sep 2019 11:30:00 +0200
X-IronPort-AV: E=Sophos;i="5.64,492,1559512800"; d="scan'208,217";a="360284169"
X-MGA-submission: =?us-ascii?q?MDGrDQKJA9EOBrSQhg948rB822FkfCy/W2ZP+h?= =?us-ascii?q?bhJp6IpbKq8MWoDXEU1Br0/i8igNNN+2YJriFhqelZentrzm0juw2/N/?= =?us-ascii?q?PJvcdfdCSUjawN2CjNGXlM29txzRYCj4ntNlZqbelUB9aBg7zE8HDVsy?= =?us-ascii?q?0j77bsn7GjqGd44vuVOoygIQ=3D=3D?=
Received: from ([]) by with ESMTP/TLS/AES256-SHA; 11 Sep 2019 11:30:02 +0200
Received: from ( by ( with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 11 Sep 2019 11:29:42 +0200
Received: from ( by ( with Microsoft SMTP Server (TLS) id 15.0.1497.2 via Frontend Transport; Wed, 11 Sep 2019 11:29:42 +0200
Received: from ( by ( with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 11 Sep 2019 11:29:39 +0200
Received: from LEJPR01MB1178.DEUPRD01.PROD.OUTLOOK.DE ( by LEJPR01MB0009.DEUPRD01.PROD.OUTLOOK.DE ( with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2241.18; Wed, 11 Sep 2019 09:29:41 +0000
Received: from LEJPR01MB1178.DEUPRD01.PROD.OUTLOOK.DE ([fe80::987d:70fa:4d72:d6da]) by LEJPR01MB1178.DEUPRD01.PROD.OUTLOOK.DE ([fe80::987d:70fa:4d72:d6da%5]) with mapi id 15.20.2241.018; Wed, 11 Sep 2019 09:29:41 +0000
From: <>
To: <>, <>
CC: <>
Thread-Topic: AW: [tsvwg] NQB PHB description and assumptions
Thread-Index: AdVkfBP29FODUeIhSciHo/YcUWQEYgCl/QiAAChMzhAAC7sLgAAmE5ow
Date: Wed, 11 Sep 2019 09:29:41 +0000
In-Reply-To: <>
Accept-Language: de-DE, en-US
Content-Language: de-DE
authentication-results: spf=none (sender IP is );
x-originating-ip: []
x-ms-publictraffictype: Email
x-ms-office365-filtering-correlation-id: aac00e0d-2940-4f9d-b7a2-08d7369a92d0
x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600166)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:LEJPR01MB0009;
x-ms-traffictypediagnostic: LEJPR01MB0009:
x-ms-exchange-purlcount: 1
x-microsoft-antispam-prvs: <LEJPR01MB000977F4A651F7B3EE979C7B9CB10@LEJPR01MB0009.DEUPRD01.PROD.OUTLOOK.DE>
x-ms-oob-tlc-oobclassifiers: OLM:6430;
x-forefront-prvs: 0157DEB61B
x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(366004)(39860400002)(396003)(376002)(346002)(136003)(199004)(189003)(86362001)(85182001)(66946007)(14454004)(606006)(19627235002)(66446008)(64756008)(66556008)(66476007)(6306002)(236005)(81166006)(81156014)(66066001)(55016002)(33656002)(66574012)(54896002)(8936002)(9686003)(5660300002)(7736002)(8676002)(3846002)(6116002)(790700001)(53936002)(966005)(486006)(4326008)(7696005)(76176011)(11346002)(476003)(316002)(446003)(52396003)(53376002)(110136005)(2906002)(478600001)(102836004)(53546011)(26005)(14444005)(256004)(85202003)(186003)(71190400001)(71200400001)(76116006)(777600001); DIR:OUT; SFP:1101; SCL:1; SRVR:LEJPR01MB0009; H:LEJPR01MB1178.DEUPRD01.PROD.OUTLOOK.DE; 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: 5sMT9PPRZkLPkVG46+yRh+NPDISCrp9Y7tA49t/1iTv12urQw8MvwW02S4L2i9aafeQ3d/+qHs9FZN2shc+per7Yl2w7JNh55oQD3gr16AdecW1/4IPmNewjvqufrDi7FWrYxmnijXQC5eDH4ehu17mKBSH7R1MZTT/vcspHkaCo3I9omL4hcmA6Ac7ThXm1g1AZ35pNbUXQhkAP3JEm3+kWc0FWrOe+miKFkwa8fh44U8c9C4SNgRBKblDH6aEZIbeat8chhtthCm6U+jVgINxLk8TVj+BVvwx3lY8gu72xGtjV7RPFBhsHPZ2Pn7//USo1fKeOW8dgjfGix4dXQZlSKepOiUsm17jJ+m1Rqh9s66/qYue5kWit/qfKsSlLHgCK8dQKjv1PrmJ2AC7Zjm6azdwnAK0UB2z6XqIoPgU=
x-ms-exchange-transport-forked: True
Content-Type: multipart/alternative; boundary="_000_LEJPR01MB117865C50F74F93EAED00E9C9CB10LEJPR01MB1178DEUP_"
MIME-Version: 1.0
X-MS-Exchange-CrossTenant-Network-Message-Id: aac00e0d-2940-4f9d-b7a2-08d7369a92d0
X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Sep 2019 09:29:41.1410 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: bde4dffc-4b60-4cf6-8b04-a5eeb25f5c4f
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: ygijqkZMLsuiH0JLJQtYwVTWtQQ6x0LbtrFxpKMlfp1E7nFgptkrFe9imfu++T07ysbjbLzc+gP+e8w5GeRMHbrBqQra8lfYAz1tdqy3Fag=
X-MS-Exchange-Transport-CrossTenantHeadersStamped: LEJPR01MB0009
Archived-At: <>
Subject: Re: [tsvwg] NQB PHB description and assumptions
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 09:30:15 -0000

Bob, Greg

if I got Bob right, the main feature of the NQB queue is a measurement functionality demoting “the least NQB like flow” to another queue (or drop it?) , once a queue build up is detected in the NQB queue.

I think this measurement function to determine “the least NQB like flow” requires some text in the draft. I’m interested in engineering my network. To do so, I need to understand, what goes on in the routers. I’m least interested in last level escalation due to a black box behavior which is under my engineering responsibility.

Other NQB features seem to be a bandwidth-share and a queue depth (be that statically in bytes or in ms with some dynamic behavior like PIE or Codel).

Further, the authors should add a description of the sender behavior (the draft states, they should not be queue building – I’d rather be interested in learning, what a typical traffic behavior of an NQB sender is, than reading, what they should not be doing).

If additional AQM features are recommended, please say so. Demotion to another queue (or drop) may seem a little hard without prior warning. If “the least NQB like flow” can be classified and demoted, further options likely exist.

If I missed an important feature, please let me know.

Regards, Ruediger

Von: Bob Briscoe <>
Gesendet: Dienstag, 10. September 2019 16:29
An: Geib, Rüdiger <>
Betreff: Re: AW: [tsvwg] NQB PHB description and assumptions


I'm not a co-author. But I did work alongside Greg while he and Thomas were developing the idea. So I hope my interventions are helping, but they might be adding confusion.

I will start out by saying that people who think they understand QoS will not understand NQB unless they wipe most of their 'old-school QoS' preconceptions.

Responses inline tagged [BB2]...

On 10/09/2019 11:00,<> wrote:
Hi Bob,

a PHB usually isn’t defined to the detail of implementation. AF and EF allow for a coarse understanding how to implement and configure the required functions. For me, NQB isn’t at that level yet.
[BB2] NQB is primarily a property of a single traffic flow.

I believe the description of an NQB PHB would be pretty much null, which is perhaps why you think it isn't sufficient yet. As I said, the primary property of the PHB is merely isolation, i.e. a separate queue for NQB traffic. The sentence in the draft describing the 'useful property' of an NQB PHB (that you're worse off mismarking) is really the only additional specification it needs.

I asked the authors for examples of how an NQB queue might be scheduled, but they would be examples, not definitions of the PHB.

I remove some of the prior text and reply [RG], marking your statements [BB]


  *   You state that NQB is enabled largely by high bandwidth Internet accesses. The NQB draft doesn’t.
     [BB] I didn't intend hi b/w to be a requirement for NQB.

     [BB] That was merely me saying that, if you have hi bandwidth, NQB could be designed like I proposed in my straw man. There might be other NQB designs for low b/w (obviously more difficult tho).

      [BB] I.e. the more b/w you have, the less you're tied to 'old-school' QoS designs, where low delay depends on bandwidth priority.

[RG] I’d appreciate, if the draft clarifies this point. Is NQB recommended for high bandwidth links? If yes, what’s meant by “high speed”? When is “old-school” QoS recommended and how will NQB work there? Some rough guidance should be given.


On 05/09/2019 19:23, Bob Briscoe wrote:
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.

   [BB] I only said sub-millisecond 'cos it's about an order or magnitude lower than typical propagation delays over the public Internet, and therefore tends towards an insignificant contribution to overall delay.

    [BB] In the context of a data centre with 1ms RTT diameter, that sentence would translate to 'link rates ... fast enough that serialization delay .. can be sub-100us'.

[RG] I’d appreciate text telling a reader, what NQB is about and how it works. In that sense, picking up and mixing your statements, is it something like that:

The bitrate configured for NQB traffic should ensure that a queue of a few MTU sized packets introduces a delay causing only an insignificant contribution to the overall end-to-end delay.
[BB2] Again, I used link rate as a condition for the straw man NQB implementation I described. I do not believe link rate is (or should be) a condition in any general definition of NQB.


  *   Further, your example suggests a 3ms@accessbandwidth buffer depth for the NQB Queue. ..[snip]

I’d like to add another point: if, in the example below, the NQB traffic stays below 50% link utilization also in the case of access link congestion, it shouldn’t see a queue.
    [BB] Er no... Consider bursts of ten back-to-back 1500B packets sent on average every 30 ms from a 1Gb/s NIC into a 100Mb/s link. That's an average of only 4% utilization (4Mb/s), but at the end of each burst the queue is 9 packets.

[RG] Your explanation is correct. Unfortunately, it doesn’t help me. Do you want to say, the example flow is NQB compliant? Then this shouldn’t be an issue (it adds of 2,4 ms delay in the worst case)? Or this is an issue? But what happens then and what’s the impact on the NQB traffic? None? I’m lost. Your example proposed a configuration and I take the available NQB text giving some examples for NQB traffic by the letter. What’s wrong here?

      [BB] Even if each NQB flow perfectly paces its own packets, the size of queue will depend on the number of uncoordinated flows. That's because the number of flows determines how many packets could arrive at about the same time and cause a queue. My calculation gave the worst case queue where a packet from all n flows happens to arrive at the same time. Statistically unlikely, but I explained I was calculating the tail of the delay distribution.

[RG] Yes. That’s why I’d expect the draft to be more specific on the traffic properties expected by NQB compliant traffic. Current text is

        There are many applications that send traffic at relatively low data
        rates and/or in a fairly smooth and consistent manner such that they
        are highly unlikely to exceed the available capacity of the network
        path between source and sink.
        These Non-queue-building (NQB) flows ..typically ….
        send traffic at a lower data rate and don't seek the capacity of the
         link (examples: online games, voice chat, DNS lookups).  Here the
        data rate is essentially limited by the Application itself.

[RG] What’s a “lower data rate”? What are the multiplexing conditions to avoid a queue build up at a link operating NQB (to quote you:… because the number of flows determines how many packets could arrive at about the same time and cause a queue)? How does an application developer and a service provider decide, which traffic is NQB? Which congestion indication is required by NQB and is an AQM expected? If yes, what is the AQM supposed to do an where’s that specified?
[BB2] Wipe your preconceptions. I don't think NQB is as precise as you want it to be. My calculations were precise for the traffic scenario I assumed, but the service cannot be defined precisely, because the behaviour aggregate could contain an arbitrary number of flows (even though there will be a likely number).

It's more like: "NQB is targeted at access links, where flow multiplexing will probably be low enough most of the time that it will be worthwhile isolating the aggregate of all NQB flows from any QB flows, such that queuing delay for all of the NQB flows together, without any additional controls."

The main point is that, even if "old-school" QoS folks are tempted to over-engineer this, the isolation of the NQB behaviour aggregate gives most of the benefit. So let's try to keep it to isolation alone.

[RG] If the sole signaling of congestion is to forward flows identified as causing congestion by a QB PHB, the draft should state it that way. If the bottleneck is congested and the NQB flows consume more than (say) 80% of the bandwidth set aside for the NQB PHB, all flows could be perfectly well behaving and still a queue starts to build up. How does NQB work then and how to avoid these situations or return to desired NQB operational conditions for all NQB marked flows (please note, I don’t assume misuse and per definition admission control is absent)?
[BB2] As above, yes the queue does build up as the amount of NQB traffic increases. But if one assumes all that NQB traffic is necessary, just isolating all the NQB from the QB still gives all the NQB traffic the lowest delay possible, given the link resource available.

The DOCSIS queue protection function keeps queuing delay below a threshold, by reclassifying packets from the least NQB flows to protect the most NQB flows. But you might not want that.







Bob Briscoe