Discussion of explicit congestion notification's impact on the Internet
 help / color / mirror / Atom feed
From: Bob Briscoe <ietf@bobbriscoe.net>
To: Jonathan Morton <chromatix99@gmail.com>,
	"David P. Reed" <dpreed@deepplum.com>
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: Mon, 22 Jul 2019 09:44:00 -0400	[thread overview]
Message-ID: <d8911b7e-406d-adfd-37a5-1c2c20b353f2@bobbriscoe.net> (raw)
In-Reply-To: <D1595770-9481-46F6-AC50-3A720E28E03D@gmail.com>

[-- Attachment #1: Type: text/plain, Size: 5215 bytes --]

Folks,

As promised, I've pulled together and uploaded the main architectural 
arguments about per-flow scheduling that cause concern:

Per-Flow Scheduling and the End-to-End Argument 
<http://bobbriscoe.net/projects/latency/per-flow_tr.pdf>


It runs to 6 pages of reading. But I tried to make the time readers will 
have to spend worth it.

I have to get on with other stuff for a while. I've caught up with 
/reading/ this thread (after returning from my break), but refrained 
from responding to some individual points, Will try to do that soon.


Finally, I want to emphasize that the purpose is for advocates of 
per-flow scheduling to understand that there is a coherent world view 
that agrees with the arguments in this paper. If you have a different 
set of assumptions and perspectives that leads you to advocate per-flow 
scheduling and disagree with some of these arguments, that's to be 
expected.

The purpose is to explain why some people don't want FQ, and therefore 
why it's important to leave the choice open between FQ and DualQ. That 
has always been the intent of L4S, which supports both.



Bob

On 18/07/2019 06:24, Jonathan Morton wrote:
> Quoting selectively:
>
>> On 18 Jul, 2019, at 1:18 am, David P. Reed<dpreed@deepplum.com>  wrote:
>>
>> This lack of a way to "cooperate" among independent users of a queue cannot be solved by a purely end-to-end solution. (well, I suppose some genius might invent a way, but I have not seen one in my 36 years closely watching the Internet in operation since it went live in 1983.)
>>
>> So, what the end-to-end argument would tend to do here, in my opinion, is to provide the most minimal mechanism in the devices that are capable of building up a queue in order to allow all the ends sharing that queue to do their job - which is to stop filling up the queue!
>> The optimum queueing delay in a steady state would always be one packet or less. Kleinrock has shown this in the last few years. Of course there aren't steady states. But we don't want a mechanism that can't converge to that steady state *quickly*, for all queues in the network.
>> The most obvious notion of fairness is equal shares among source host, dest host pairs. There are drawbacks to that, but the benefit of it is that it affects the IP layer alone, and deals with lots of boundary cases like the case where a single host opens a zillion TCP connections or uses lots of UDP source ports or destinations to somehow "cheat" by appearing to have "lots of flows".
>> I write this to say:
>> 1) some kind of per-flow queueing, during the transient state where a queue is overloaded before packets are dropped would provide much needed information to the ends of every flow sharing a common queue.
>> 2) per-flow queueing, minimized to a very low level, using IP envelope address information (plus maybe UDP and TCP addresses for those protocols in an extended address-based flow definition) is totally compatible with end-to-end arguments, but ONLY if the decisions made are certain to drive queueing delay out of the router to the endpoints.
> These are points that I can agree with quite easily, and which are reflected in my work to date.  Although I don't usually quote Kleinrock by name, the principle of always permitting one MTU per flow in the queue is fairly obvious.
>
> One of the things that per-flow queuing provides to endpoints is differential treatment in AQM.  This is even true of LFQ, although the mechanism may not be obvious to all since there is only one set of AQM state; at minimum, AQM signals are suppressed for sparse flows and thus only provided to saturating flows.  SCE marking would be based on individual packets' sojourn times, which are logically independent from their physical position in the queue.  Careful implementation of a Codel-type AQM would also suppress CE marks (or drops) from well-behaved flows whose sojourn times are below the target, even if unresponsive flows are also present in the same queue, without losing accumulated state about the latter; this is I think already a property of COBALT (as implemented in Cake).  Other AQMs which convert a sojourn time more-or-less directly into a marking rate would also be a good fit.
>
> I would only quibble that providing per-L4-flow fairness *within* a per-host or per-subscriber fairness structure is also feasible, in at least some contexts; Cake implements that, for example.  I hope to be able to amplify the LFQ draft to show how to provide that in a more lightweight manner than Cake manages, on my way to Montreal.
>
> I may also publish CNQ (Cheap Nasty Queuing) as a straw-man draft at the same time, depending on my mood.  It should be good for light relief if nothing else.  It's even lighter-weight than LFQ - but, unlike LFQ, achieves this at the expense of performance.  It maintains only enough state to prioritise sparse flows, with a rather strict definition of "sparse".
>
>   - Jonathan Morton
>
> _______________________________________________
> Ecn-sane mailing list
> Ecn-sane@lists.bufferbloat.net
> https://lists.bufferbloat.net/listinfo/ecn-sane

-- 
________________________________________________________________
Bob Briscoehttp://bobbriscoe.net/


[-- Attachment #2: Type: text/html, Size: 6792 bytes --]

  reply	other threads:[~2019-07-22 13:44 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 [this message]
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
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=d8911b7e-406d-adfd-37a5-1c2c20b353f2@bobbriscoe.net \
    --to=ietf@bobbriscoe.net \
    --cc=chromatix99@gmail.com \
    --cc=dpreed@deepplum.com \
    --cc=ecn-sane@lists.bufferbloat.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