Discussion of explicit congestion notification's impact on the Internet
 help / color / mirror / Atom feed
From: Jonathan Morton <chromatix99@gmail.com>
To: Bob Briscoe <ietf@bobbriscoe.net>
Cc: "ecn-sane@lists.bufferbloat.net" <ecn-sane@lists.bufferbloat.net>,
	tsvwg IETF list <tsvwg@ietf.org>
Subject: Re: [Ecn-sane] per-flow scheduling
Date: Tue, 23 Jul 2019 18:24:55 -0400	[thread overview]
Message-ID: <FD7FD1ED-6225-4591-B341-9DDA98E9DAB3@gmail.com> (raw)
In-Reply-To: <629a1cef-d49c-b6dc-b495-5dd8087b849f@bobbriscoe.net>

> [BB] The objective measure of famine/plenty that all congestion controls use is a combination of the loss level, ECN level, queue delay, etc. In the paper, I referred to BBRv2's distinction between famine and plenty (which is at 1% loss) and in a footnote I expressed a preference for a more gradual transition.

Coincidentally, 1% loss corresponds to about 1.5Mbps goodput at an Internet-scale 80ms RTT, assuming a Reno transport.  Obviously at different RTTs it corresponds to different goodputs, and you might argue that shorter RTTs are also common.  But now we have a common reference point.

Oh, and under similar conditions, 1% marking corresponds to about 30Mbps with L4S (ie. cwnd=200).  That's a 20:1 ratio versus Reno, which you might want to think about carefully when it comes to fair competition.

> The use of the two words famine and plenty wasn't intended to imply only two states. It's a continuum (like the spectrum between famine and plenty).

Okay.

I still happen to disagree with the argument, but single-queue AQMs are still a valid improvement over single dumb FIFOs.  They improve reliability by reducing losses and timeouts, and help to reduce lag in online games.  That's the practical problem facing most Internet users today, and that's where my solutions are focused.

>> Regardless, my assertion is not that FQ is required for ultra-low latency, but that flows requiring ultra-low latency must be isolated from general traffic…
>> 
>> It is true that SCE doesn't inherently carry a label distinguishing its traffic from the general set, and thus DualQ cannot be directly applied to it.  But there is a straightforward way to perform this labelling if required, right next door in the Diffserv field.  The recently proposed NQB DSCP would likely be suitable.  I don't think that the majority of potential SCE users would need or even want this distinction (the primary benefit of SCE being better link utilisation by eliminating the traditional deep sawtooth), but the mechanism exists, orthogonally to SCE itself.

> To enable SCE and RFC3168 in two queues rather than per-flow queues, if you required SCE packets to be identified by a DSCP, if the DSCP got wiped (which it often does), your SCE traffic would mix with 3168 traffic and starve itself.

Under certain simplifying assumptions, yes.  But those assumptions would include that the 3168 queue was also providing SCE marking in the FQ style, which might not be appropriate for what is effectively a single queue carrying mixed traffic.  It would be as if your DualQ was providing L4S-style signalling in its Classic queue, which I'm sure you would not advocate.

As a de-facto representative of the cable industry, I hope you are aware of the irony that it is chiefly cable ISPs who are bleaching Diffserv information out of consumer traffic?

The starvation problem can be eliminated entirely by providing SCE marking only on the queue intended for SCE traffic (so only CE marks on the 3168 queue).  Mis-marked traffic would then revert to purely 3168 compliant behaviour, which SCE does naturally when given only CE marks.  This option is an important advantage of having a clear distinction between the two signals; there is no ambiguity at the receiver about what type of signal it's receiving and thus which response is demanded.

As a reminder, we *also* have a solution specifically for single-queue AQMs implementing SCE.  It's not a knobs-free solution as the FQ version is, but it exists and it seems to work.  I expect we will need to explore its dynamic characteristics more thoroughly in the near future.

>> I have also drawn up, as a straw-man proposal, CNQ - Cheap Nasty Queuing:
>> 
>> 	https://tools.ietf.org/html/draft-morton-tsvwg-cheap-nasty-queueing-00

> OK. Can you say whether you've tested this exhausitvely? Need to know before we all spend time reading it in too much depth.

To quote Knuth: "I have only proved the above code correct, not tried it."  But we may get time to quickly implement CNQ and/or LFQ, in between preparations for Friday.  (By which I mean implementing it in Linux.)  This stuff is not central to our work on SCE, since we already have Cake for running experiments.

I think Pete Heist wants to try putting CNQ in his offline simulator as well, which already has LFQ.  So that should provide an early sanity check.

 - Jonathan Morton


  reply	other threads:[~2019-07-23 22:24 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-06-19 14:12 Bob Briscoe
2019-06-19 14:20 ` [Ecn-sane] [tsvwg] " Kyle Rose
2019-06-21  6:59 ` [Ecn-sane] " Sebastian Moeller
2019-06-21  9:33   ` Luca Muscariello
2019-06-21 20:37     ` [Ecn-sane] [tsvwg] " Brian E Carpenter
2019-06-22 19:50       ` David P. Reed
2019-06-22 20:47         ` Jonathan Morton
2019-06-22 22:03           ` Luca Muscariello
2019-06-22 22:09           ` David P. Reed
2019-06-22 23:07             ` Jonathan Morton
2019-06-24 18:57               ` David P. Reed
2019-06-24 19:31                 ` Jonathan Morton
2019-06-24 19:50                   ` David P. Reed
2019-06-24 20:14                     ` Jonathan Morton
2019-06-25 21:05                       ` David P. Reed
2019-06-24 21:25                   ` Luca Muscariello
2019-06-26 12:48             ` Sebastian Moeller
2019-06-26 16:31               ` David P. Reed
2019-06-26 16:53                 ` David P. Reed
2019-06-27  7:54                   ` Sebastian Moeller
2019-06-27  7:49                 ` Sebastian Moeller
2019-06-27 20:33                   ` Brian E Carpenter
2019-06-27 21:31                     ` David P. Reed
2019-06-28  7:49                       ` Toke Høiland-Jørgensen
2019-06-27  7:53                 ` Bless, Roland (TM)
2019-06-22 21:10         ` Brian E Carpenter
2019-06-22 22:25           ` David P. Reed
2019-06-22 22:30             ` Luca Muscariello
2019-07-17 21:33 ` [Ecn-sane] " Sebastian Moeller
2019-07-17 22:18   ` David P. Reed
2019-07-17 22:34     ` David P. Reed
2019-07-17 23:23       ` Dave Taht
2019-07-18  0:20         ` Dave Taht
2019-07-18  5:30           ` Jonathan Morton
2019-07-18 15:02         ` David P. Reed
2019-07-18 16:06           ` Dave Taht
2019-07-18  4:31     ` Jonathan Morton
2019-07-18 15:52       ` David P. Reed
2019-07-18 18:12         ` [Ecn-sane] [tsvwg] " Dave Taht
2019-07-18  5:24     ` [Ecn-sane] " Jonathan Morton
2019-07-22 13:44       ` Bob Briscoe
2019-07-23  5:00         ` Jonathan Morton
2019-07-23 11:35           ` [Ecn-sane] CNQ cheap-nasty-queuing (was per-flow queuing) Luca Muscariello
2019-07-23 20:14           ` [Ecn-sane] per-flow scheduling Bob Briscoe
2019-07-23 22:24             ` Jonathan Morton [this message]
2019-07-23 15:12         ` [Ecn-sane] [tsvwg] " Kyle Rose
2019-07-25 19:25           ` Holland, Jake
2019-07-27 15:35             ` Kyle Rose
2019-07-27 19:42               ` Jonathan Morton

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://lists.bufferbloat.net/postorius/lists/ecn-sane.lists.bufferbloat.net/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=FD7FD1ED-6225-4591-B341-9DDA98E9DAB3@gmail.com \
    --to=chromatix99@gmail.com \
    --cc=ecn-sane@lists.bufferbloat.net \
    --cc=ietf@bobbriscoe.net \
    --cc=tsvwg@ietf.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox