From: Dave Taht <dave.taht@gmail.com>
To: Bob Briscoe <ietf@bobbriscoe.net>
Cc: Luca Muscariello <muscariello@ieee.org>,
ECN-Sane <ecn-sane@lists.bufferbloat.net>,
"tsvwg@ietf.org" <tsvwg@ietf.org>
Subject: Re: [Ecn-sane] [tsvwg] Comments on L4S drafts
Date: Tue, 18 Jun 2019 18:33:31 -0700 [thread overview]
Message-ID: <CAA93jw5S1fQ3gghtPdOycP8FxJtBT3YqNdhfx+J8y+1bpWRxvw@mail.gmail.com> (raw)
In-Reply-To: <4aff6353-eb0d-b0b8-942d-9c92753f074e@bobbriscoe.net>
[-- Attachment #1: Type: text/plain, Size: 10166 bytes --]
I simply have one question. Is the code for the modified dctcp and dualpi
in the l4steam repos on github ready for independent testing?
On Tue, Jun 18, 2019, 6:15 PM Bob Briscoe <ietf@bobbriscoe.net> wrote:
> Luca,
>
> I'm still preparing a (long) reply to Jake's earlier (long) response. But
> I'll take time out to quickly clear this point up inline...
>
> On 14/06/2019 21:10, Luca Muscariello wrote:
>
>
> On Fri, Jun 7, 2019 at 8:10 PM Bob Briscoe <ietf@bobbriscoe.net> wrote:
>
>>
>> I'm afraid there are not the same pressures to cause rapid roll-out at
>> all, cos it's flakey now, jam tomorrow. (Actually ECN-DualQ-SCE has a much
>> greater problem - complete starvation of SCE flows - but we'll come on to
>> that in Q4.)
>>
>> I want to say at this point, that I really appreciate all the effort
>> you've been putting in, trying to find common ground.
>>
>> In trying to find a compromise, you've taken the fire that is really
>> aimed at the inadequacy of underlying SCE protocol - for anything other
>> than FQ. If the primary SCE proponents had attempted to articulate a way to
>> use SCE in a single queue or a dual queue, as you have, that would have
>> taken my fire.
>>
>> But regardless, the queue-building from classic ECN-capable endpoints that
>> only get 1 congestion signal per RTT is what I understand as the main
>> downside of the tradeoff if we try to use ECN-capability as the dualq
>> classifier. Does that match your understanding?
>>
>> This is indeed a major concern of mine (not as major as the starvation of
>> SCE explained under Q4, but we'll come to that).
>>
>> Fine-grained (DCTCP-like) and coarse-grained (Cubic-like) congestion
>> controls need to be isolated, but I don't see how, unless their packets are
>> tagged for separate queues. Without a specific fine/coarse identifier,
>> we're left with having to re-use other identifiers:
>>
>> - You've tried to use ECN vs Not-ECN. But that still lumps two large
>> incompatible groups (fine ECN and coarse ECN) together.
>> - The only alternative that would serve this purpose is the flow
>> identifier at layer-4, because it isolates everything from everything else.
>> FQ is where SCE started, and that seems to be as far as it can go.
>>
>> Should we burn the last unicorn for a capability needed on
>> "carrier-scale" boxes, but which requires FQ to work? Perhaps yes if there
>> was no alternative. But there is: L4S.
>>
>>
> I have a problem to understand why all traffic ends up to be classified as
> either Cubic-like or DCTCP-like.
> If we know that this is not true today I fail to understand why this
> should be the case in the future.
> It is also difficult to predict now how applications will change in the
> future in terms of the traffic mix they'll generate.
> I feel like we'd be moving towards more customized transport services with
> less predictable patterns.
>
> I do not see for instance much discussion about the presence of RTC
> traffic and how the dualQ system behaves when the
> input traffic does not respond as expected by the 2-types of sources
> assumed by dualQ.
>
> I'm sorry for using "Cubic-like" and "DCTCP-like", but I was trying
> (obviously unsuccessfully) to be clearer than using 'Classic' and
> 'Scalable'.
>
> "Classic" means traffic driven by congestion controls designed to coexist
> in the same queue with Reno (TCP-friendly), which necessarily makes it
> unscalable, as explained below.
>
> The definition of a scalable congestion control concerns the power b in
> the relationship between window, W and the fraction of congestion signals,
> p (ECN or drop) under stable conditions:
> W = k / p^b
> where k is a constant (or in some cases a function of other parameters
> such as RTT).
> If b >= 1 the CC is scalable.
> If b < 1 it is not (i.e. Classic).
>
> "Scalable" does not exclude RTC traffic. For instance the L4S variant of
> SCReAM that Ingemar just talked about is scalable ("DCTCP-like"), because
> it has b = 1.
>
> I used "Cubic-like" 'cos there's more Cubic than Reno on the current
> Internet. Over Internet paths with typical BDP, Cubic is always in its
> Reno-friendly mode, and therefore also just as unscalable as Reno, with b =
> 1/2 (inversely proportional to the square-root). Even in its proper Cubic
> mode on high BDP paths, Cubic is still unscalable with b = 0.75.
>
> As flow rate scales up, the increase-decrease sawteeth of unscalable CCs
> get very large and very infrequent, so the control becomes extremely slack
> during dynamics. Whereas the sawteeth of scalable CCs stay invariant and
> tiny at any scale, keeping control tight, queuing low and utilization high.
> See the example of Cubic & DCTCP at Slide 5 here:
> https://www.files.netdevconf.org/f/4ebdcdd6f94547ad8b77/?dl=1
>
> Also, there's a useful plot of when Cubic switches to Reno mode on the
> last slide.
>
>
> If my application is using simulcast or multi-stream techniques I can have
> several video streams in the same link, that, as far as I understand,
> will get significant latency in the classic queue.
>
>
> You are talking as if you think that queuing delay is caused by the
> buffer. You haven't said what your RTC congestion control is (gcc
> perhaps?). Whatever, assuming it's TCP-friendly, even in a queue on its
> own, it will need to induce about 1 additional base RTT of queuing delay to
> maintain full utilization.
>
> In the coupled dualQ AQM, the classic queue runs a state-of-the-art
> classic AQM (PI2 in our implementation) with a target delay of 15ms. With
> any less, your classic congestion controlled streams would under-utilize
> the link.
>
> Unless my app starts cheating by marking packets to get into the priority
> queue.
>
> There's two misconceptions here about the DualQ Coupled AQM that I need to
> correct.
>
> 1/ As above, if a classic CC can't build ~1 base RTT of queue in the
> classic buffer, it badly underutiizes. So if you 'cheat' by directing
> traffic from a queue-building CC into the low latency queue with a shallow
> ECN threshold, you'll just massively under-utilize the capacity.
>
> 2/ Even if it were a strict priority scheduler it wouldn't determine the
> scheduling under all normal traffic conditions. The coupling between the
> AQMs dominates the scheduler. I'll explain next...
>
>
> In both cases, i.e. my RTC app is cheating or not, I do not understand how
> the parametrization of the dualQ scheduler
> can cope with traffic that behaves in a different way to what is assumed
> while tuning parameters.
> For instance, in one instantiation of dualQ based on WRR the weights are
> set to 1:16. This has to necessarily
> change when RTC traffic is present. How?
>
>
> The coupling simply applies congestion signals from the C queue across
> into the L queue, as if the C flows were L flows. So, the L flows leave
> sufficient space for however many C flows there are. Then, in all the gaps
> that the L traffic leaves, any work-conserving scheduler can be used to
> serve the C queue.
>
> The WRR scheduler is only there in case of overload or unresponsive L
> traffic; to prevent the Classic queue starving.
>
>
>
> Is the assumption that a trusted marker is used as in typical diffserv
> deployments
> or that a policer identifies and punishes cheating applications?
>
> As explained, if a classic flow cheats, it will get v low throughput. So
> it has no incentive to cheat.
>
> There's still the possibility of bugs/accidents/malice. The need for
> general Internet flows to be responsive to congestion is also vulnerable to
> bugs/accidents/malice, but it hasn't needed policing.
>
> Nonetheless, in Low Latency DOCSIS, we have implemented a queue protection
> function that maintains a queuing score per flow. Then, any packets from
> high-scoring flows that would cause the queue to exceed a threshold delay,
> are redirected to the classic queue instead. For well-behaved flows the
> state that holds the score ages out between packets, so only ill-behaved
> flows hold flow-state long term.
>
> Queue protection might not be needed, but it's as well to have it in case.
> It can be disabled.
>
>
> BTW I'd love to understand how dualQ is supposed to work under more
> general traffic assumptions.
>
> Coexistence with Reno is a general requirement for long-running Internet
> traffic. That's really all we depend on. That also covers RTC flows in the
> C queue that average to similar throughput as Reno but react more smoothly.
>
> The L traffic can be similarly heterogeneous - part of the L4S experiment
> is to see how broad that will stretch to. It can certainly accommodate
> other lighter traffic like VoIP, DNS, flow startups, transactional, etc,
> etc.
>
>
> BBR (v1) is a good example of something different that wasn't designed to
> coexist with Reno. It sort-of avoided too many problems by being primarily
> used for app-limited flows. It does its RTT probing on much longer
> timescales than typical sawtoothing congestion controls, running on a model
> of the link between times, so it doesn't fit the formulae above.
>
> For BBRv2 we're promised that the non-ECN side of it will coexist with
> existing Internet traffic, at least above a certain loss level. Without
> having seen it I can't be sure, but I assume that implies it will fit the
> formulae above in some way.
>
>
> PS. I believe all the above is explained in the three L4S Internet drafts,
> which we've taken a lot of trouble over. I don't really want to have to
> keep explaining it longhand in response to each email. So I'd prefer
> questions to be of the form "In section X of draft Y, I don't understand
> Z". Then I can devote my time to improving the drafts.
>
> Alternatively, there's useful papers of various lengths on the L4S landing
> page at:
> https://riteproject.eu/dctth/#papers
>
>
> Cheers
>
>
>
> Bob
>
>
>
> Luca
>
>
>
>
> --
> ________________________________________________________________
> Bob Briscoe http://bobbriscoe.net/
>
> _______________________________________________
> Ecn-sane mailing list
> Ecn-sane@lists.bufferbloat.net
> https://lists.bufferbloat.net/listinfo/ecn-sane
>
[-- Attachment #2: Type: text/html, Size: 15430 bytes --]
next prev parent reply other threads:[~2019-06-19 1:33 UTC|newest]
Thread overview: 86+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-06-05 0:01 [Ecn-sane] " Holland, Jake
2019-06-07 18:07 ` Bob Briscoe
2019-06-14 17:39 ` Holland, Jake
2019-06-19 14:11 ` Bob Briscoe
2019-07-10 13:55 ` Holland, Jake
2019-06-14 20:10 ` [Ecn-sane] [tsvwg] " Luca Muscariello
2019-06-14 21:44 ` Dave Taht
2019-06-15 20:26 ` [Ecn-sane] [tsvwg] CoIt'smments " David P. Reed
2019-06-19 1:15 ` [Ecn-sane] [tsvwg] Comments " Bob Briscoe
2019-06-19 1:33 ` Dave Taht [this message]
2019-06-19 4:24 ` Holland, Jake
2019-06-19 13:02 ` Luca Muscariello
2019-07-04 11:54 ` Bob Briscoe
2019-07-04 12:24 ` Jonathan Morton
2019-07-04 13:43 ` De Schepper, Koen (Nokia - BE/Antwerp)
2019-07-04 14:03 ` Jonathan Morton
2019-07-04 17:54 ` Bob Briscoe
2019-07-05 8:26 ` Jonathan Morton
2019-07-05 6:46 ` De Schepper, Koen (Nokia - BE/Antwerp)
2019-07-05 8:51 ` Jonathan Morton
2019-07-08 10:26 ` De Schepper, Koen (Nokia - BE/Antwerp)
2019-07-08 20:55 ` Holland, Jake
2019-07-10 0:10 ` Jonathan Morton
2019-07-10 9:00 ` De Schepper, Koen (Nokia - BE/Antwerp)
2019-07-10 13:14 ` Dave Taht
2019-07-10 17:32 ` De Schepper, Koen (Nokia - BE/Antwerp)
2019-07-17 22:40 ` Sebastian Moeller
2019-07-19 9:06 ` De Schepper, Koen (Nokia - BE/Antwerp)
2019-07-19 15:37 ` Dave Taht
2019-07-19 18:33 ` Wesley Eddy
2019-07-19 20:03 ` Dave Taht
2019-07-19 22:09 ` Wesley Eddy
2019-07-19 23:42 ` Dave Taht
2019-07-24 16:21 ` Dave Taht
2019-07-19 20:06 ` Black, David
2019-07-19 20:44 ` Jonathan Morton
2019-07-19 22:03 ` Sebastian Moeller
2019-07-20 21:02 ` Dave Taht
2019-07-21 11:53 ` Bob Briscoe
2019-07-21 15:30 ` [Ecn-sane] Hackathon tests Dave Taht
2019-07-21 15:33 ` [Ecn-sane] [tsvwg] Comments on L4S drafts Sebastian Moeller
2019-07-21 16:00 ` Jonathan Morton
2019-07-21 16:12 ` Sebastian Moeller
2019-07-22 18:15 ` De Schepper, Koen (Nokia - BE/Antwerp)
2019-07-22 18:33 ` Dave Taht
2019-07-22 19:48 ` Pete Heist
2019-07-25 16:14 ` De Schepper, Koen (Nokia - BE/Antwerp)
2019-07-26 13:10 ` Pete Heist
2019-07-26 15:05 ` [Ecn-sane] The state of l4s, bbrv2, sce? Dave Taht
2019-07-26 15:32 ` Dave Taht
2019-07-26 15:37 ` Neal Cardwell
2019-07-26 15:45 ` Dave Taht
2019-07-23 10:33 ` [Ecn-sane] [tsvwg] Comments on L4S drafts Sebastian Moeller
2019-07-21 12:30 ` Bob Briscoe
2019-07-21 16:08 ` Sebastian Moeller
2019-07-21 19:14 ` Bob Briscoe
2019-07-21 20:48 ` Sebastian Moeller
2019-07-25 20:51 ` Bob Briscoe
2019-07-25 21:17 ` Bob Briscoe
2019-07-25 22:00 ` Sebastian Moeller
2019-07-26 10:20 ` [Ecn-sane] [tsvwg] Compatibility with singlw queue RFC3168 AQMs Sebastian Moeller
2019-07-26 14:10 ` Black, David
2019-07-26 16:06 ` Sebastian Moeller
2019-07-26 19:58 ` Black, David
2019-07-26 21:34 ` Sebastian Moeller
2019-07-26 16:15 ` Holland, Jake
2019-07-26 20:07 ` Black, David
2019-07-26 23:40 ` Jonathan Morton
2019-08-07 8:41 ` Mikael Abrahamsson
2019-08-07 10:06 ` Mikael Abrahamsson
2019-08-07 11:57 ` Jeremy Harris
2019-08-07 12:03 ` Mikael Abrahamsson
2019-08-07 12:14 ` Sebastian Moeller
2019-08-07 12:25 ` Mikael Abrahamsson
2019-08-07 12:34 ` Jeremy Harris
2019-08-07 12:49 ` Mikael Abrahamsson
[not found] ` <5D34803D.50501@erg.abdn.ac.uk>
2019-07-21 16:43 ` [Ecn-sane] [tsvwg] Comments on L4S drafts Black, David
2019-07-21 12:30 ` Scharf, Michael
2019-07-19 21:49 ` Sebastian Moeller
2019-07-22 16:28 ` Bless, Roland (TM)
2019-07-19 17:59 ` Sebastian Moeller
2019-07-05 9:48 ` Luca Muscariello
2019-07-04 13:45 ` Bob Briscoe
2019-07-10 17:03 ` Holland, Jake
[not found] <HE1PR07MB4425603844DED8D36AC21B67C2110@HE1PR07MB4425.eurprd07.prod.outlook.com>
2019-06-14 18:27 ` Holland, Jake
[not found] ` <HE1PR07MB4425E0997EE8ADCAE2D4C564C2E80@HE1PR07MB4425.eurprd07.prod.outlook.com>
2019-06-19 12:59 ` Bob Briscoe
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=CAA93jw5S1fQ3gghtPdOycP8FxJtBT3YqNdhfx+J8y+1bpWRxvw@mail.gmail.com \
--to=dave.taht@gmail.com \
--cc=ecn-sane@lists.bufferbloat.net \
--cc=ietf@bobbriscoe.net \
--cc=muscariello@ieee.org \
--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