<div dir="ltr"><div>I keep trying to stay out of this conversation being yellow about ecn in the first place, in any form. I would like to stress that </div><div>ecn-sane was formed by the group of folk that were concerned about having accidentally masterminded the worlds biggest fq + aqm</div><div>deployment, and the only one with ecn support, which happens </div><div><br></div><div>In the case of wifi, the deployment is now in the 10s of millions, and doing hordes of good - latencies measured in the 10s of ms rather than 10s of seconds.</div><div><br></div><div>I have seen no numbers on how well l4s will make it over to wifi as yet, nor any discussion, and I would rather like more pieces of the l4s solution to land sufficiently integrated for testing using tools like flent, and over far more than just a isochronous mac layer like dsl or docsis. Given the size of a txop in wifi (5.3ms), and how far back we have</div><div>to put the AQM and FQ components today (2 txops), I don't think many of either SCE or L4S concepts will work well on wifi... but in general</div><div>I prefer not to make assertions or assumptions until real-world testing can commence. </div><div><br></div><div>I am presently at the battlemesh conference trying to get a bit of real-world data.</div><div><br></div><div>A big problem wifi and 3g have is too many retransmits at the mac layer, not congestion controlled. Any signalling gets there late, and it's</div><div>better to drop a bunch of packets when you hit a bunch of retransmits, in general. IMHO. </div><div><br></div><div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Jul 10, 2019 at 2:05 AM De Schepper, Koen (Nokia - BE/Antwerp) <<a href="mailto:koen.de_schepper@nokia-bell-labs.com">koen.de_schepper@nokia-bell-labs.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Hi Jake,<br>
<br>
>> I agree the key question for this discussion is about how best to get low latency for the internet.<br>
Thanks<br>
<br>
>> under the L4S approach for ECT(1), we can achieve it with either dualq or fq at the bottleneck, but under the SCE approach we can only do it with fq at the bottleneck.<br>
Correct<br>
<br>
>> we agree that in neither case can very low latency be achieved with a classic single queue with classic bandwidth-seeking traffic<br>
Correct, not without compromising latency for Prague or throughput/utilization/stability/drop for Reno/Cubic<br>
<br>
>> Are you saying that even if a scalable FQ can be implemented in high-volume aggregated links at the same cost and difficulty as dualq, there's a reason not to use FQ?<br></blockquote><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
FQ for "per-user" isolation in access equipment has clearly an extra cost, not? </blockquote><div><br></div><div>I've argued in the past that hashing is a bog standard part of most network cards and switches already. </div><div><br></div><div>"extra cost" should be measured by actual measurements. Usually when you do those, you find it's another variable entirely costing you the most</div><div>cpu/circuits.</div><div><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">If we need to implement FQ "per-flow" on top, we need 2 levels of FQ (per-user and per-user-flow, so from thousands to millions of queues). Also, I haven’t seen DC switches coming with an FQ AQM...<br></blockquote><div><br></div><div>Meh. Most of the time the instantaneous number of queues for some measurement of instantenious is in the low hundreds for rates up to</div><div>10GigE. We don't have a lot of data for bigger pipes. </div><div><br></div><div>I haven't seen any DC switches with support anything other than RED or AFD, and DC folk overprovision anyway.</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
>> Is there a use case where it's necessary to avoid strict isolation if strict isolation can be accomplished as cheaply?<br>
<br>
Even if as cheaply, as long as there is no reliable flow identification, it clearly has side effects. Many homeworkers are using a VPN tunnel, which is only one flow encapsulating maybe dozens. </blockquote><div><br></div><div>This is true. For a local endpoint for a vpn from a router fq_codel long ago gained support for doing the hashing & FQ before entering the tunnel.</div><div><br></div><div>This works only with in-kernel ipsec transports although I've been trying to get it added to wireguard for a long time now.</div><div><br></div><div> It of course doesn't apply to the whole path, but when applied at the home gateway router (bottleneck link), works rather well.</div><div><br></div><div>Here are two examples of that mechanism in play.</div><div><br></div><div><a href="http://www.taht.net/~d/ipsec_fq_codel/oldqos.png">http://www.taht.net/~d/ipsec_fq_codel/oldqos.png</a><br></div><div><br></div><div><a href="http://www.taht.net/~d/ipsec_fq_codel/newqos.png">http://www.taht.net/~d/ipsec_fq_codel/newqos.png</a><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Drop and ECN (if implemented correctly) are tunnel agnostic. Also how flows are identified might evolve (new transport protocols, encapsulations, ...?). Also if strict flow isolation could be done correctly, it has additional issues related to missed scheduling opportunities, besides it is a hard-coded throughput policy (and even mice size = 1 packet). On the other hand, flow isolation has benefits too, so hard to rule out one of them, not?<br></blockquote><div><br></div><div>The packet dissector in linux is quite robust, the one in BSD, less so.</div><div><br></div><div>A counterpoint to the entire ECN debate (l4s or sce) that I'd like to make at more length is that it can and does hurt non ecn'd flows, particularly at lower</div><div>bandwidths when you cannot reduce cwnd below 2 and the link is thus saturated. ARP can starve. ISIS fails. batman - lacking an IP header -  can starve.</div><div>babel, lacking ecn support can start to fail. And so on.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
>> Also, I think if the SCE position is "low latency can only be achieved with FQ", that's different from "forcing only FQ on the internet", provided the fairness claims hold up, right?  (Classic single queue AQMs may still have a useful place in getting pretty-good latency in the cheapest hardware, like maybe PIE with marking.)<br>
<br>
Are you saying that the real good stuff can only be for FQ 😉? Fairness between a flow getting only one signal and another getting 2 is an issue, right? The one with the 2 signals can either ignore one, listen half to both, or try to smooth both signals to find the average loudest one? Again safety or performance needs to be chosen. PIE or PI2 is optimal for Classic traffic and good to couple congestion to Prague traffic, but Prague traffic needs a separate Q and an immediate step to get the "good stuff" working. Otherwise it will also overshoot, respond sluggish, etc...<br>
<br>
>> Anyway, to me this discussion is about the tradeoffs between the 2 proposals.  It seems to me SCE has some safety advantages that should not be thrown away lightly, <br>
<br>
I appreciate the efforts of trying to improve L4S, but nobody working on L4S for years now see a way that SCE can work on a non-FQ system. For me (and I think many others) it is a no-go to only support FQ. Unfortunately we only have half a bit free, and we need to choose how to use it. Would you choose for the existing ECN switches that cannot be upgraded (are there any?) or for all future non-FQ systems.<br>
<br></blockquote><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
>> so if the performance can be made equivalent, it would be good to know about it before committing the codepoint.<br>
<br>
The performance in FQ is clearly equivalent, </blockquote><div><br></div><div>Huh?</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">but for a common-Q behavior, only L4S can work. As far as I understood the SCE-LFQ proposal is actually a slower FQ implementation (an FQ in DualQ disguise 😉), so I think not really a better alternative than pure FQ. Also its single AQM on the bulk queue will undo any isolation, as a coupled AQM is stronger than any scheduler, including FQ. Don't underestimate the power of congestion control 😉. The ultimate proof is in the DualQ Coupled AQM where congestion control can beat a priority scheduler. If you want FQ to have effect, you need to have an AQM per FQ... The authors will notice this when they implement an AQM on top of it. I saw the current implementation works only in taildrop mode. But I think it is very good that the SCE proponents are very motivated to try with this speed to improve L4S. I'm happy to be proven wrong, but up to now I don't see any promising improvements to justify delay for L4S, only the above alternative compromise. Agreed that we can continue exploring alternative proposal in parallel though.<br>
<br></blockquote><div><br></div><div>I cannot parse this extreme set of assumptions and declarations. "taildrop mode??"</div><div><br></div><div>As for promising improvements in general, there is a 7 year old deployment, running code,  of something that we've show to work well in a variety</div><div>of network scenarios, with 10x-100x improvements in network latency, at roughly 100% in linux overall, widely used in wifi and in many, many SQM/Qos systems and containers, with basic rfc3168 ecn enabled... and a proposal for a backward compatible way of enhancing that still more being explored. The embedded hardware pipeline</div><div>for future implementations of this tech is full - it would take 3+ years to make a course change.... </div><div><br></div><div>vs something that still has no real-world deployment data at all, that changes the definition of ecn, that has not a public ns2 or n3 model (?), no testing aside from a few</div><div>very specific benchmarks, and so on...</div><div><br></div><div>I do hope the coding competition heats up more, with more running code that others can explore, most of all. I long ago tired of the endless debates, as everyone knows,</div><div>and I do kind of wish I wasn't burning lunch on this email instead of setting up a test at battlemesh.</div><div><br></div><div>I note also that my leanings - in a fq_codel'd world, were it to stay such, was to enable more RTT based CCs  like BBRto work more often in an RTT mode, and thus</div><div>we start - originally to me, the SCE idea was a way to trigger a faster switch to congestion avoidance - as most of my captures taken from over used APs in</div><div>restaurants, cafes, train stations etc shows stuff in slow start to be the biggest problem - and, regardless, an initial CE, right now, is a strong indicator that fq-codel is present, and</div><div>a RTT based tcp can thus start to happen, and a good one, would not have many future marks after the first.</div><div><br></div><div>A big difference in our outlooks, I guess, is that my viewpoint is that most of the congestion is at the edges of the network and I don't care all that</div><div>much about big iron or switches, and I don't think either can afford much aqm tech at all in the first place. Not dual queues, not fqs.</div><div><br></div><div>Were L4S not to deploy (using ect1 as a marker - btw, I think CS5 might be a better candidate as it goes into the wifi VI queue), and a fq_pie/fq_codel/sch_cake</div><div>world to remain predominant, well, we might get somewhere, faster, where it counted.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
Koen.<br>
<br>
<br>
-----Original Message-----<br>
From: Holland, Jake <<a href="mailto:jholland@akamai.com" target="_blank">jholland@akamai.com</a>> <br>
Sent: Monday, July 8, 2019 10:56 PM<br>
To: De Schepper, Koen (Nokia - BE/Antwerp) <<a href="mailto:koen.de_schepper@nokia-bell-labs.com" target="_blank">koen.de_schepper@nokia-bell-labs.com</a>>; Jonathan Morton <<a href="mailto:chromatix99@gmail.com" target="_blank">chromatix99@gmail.com</a>><br>
Cc: <a href="mailto:ecn-sane@lists.bufferbloat.net" target="_blank">ecn-sane@lists.bufferbloat.net</a>; <a href="mailto:tsvwg@ietf.org" target="_blank">tsvwg@ietf.org</a><br>
Subject: Re: [tsvwg] [Ecn-sane] Comments on L4S drafts<br>
<br>
Hi Koen,<br>
<br>
I'm a bit confused by this response.<br>
<br>
I agree the key question for this discussion is about how best to get low latency for the internet.<br>
<br>
If I'm reading your message correctly, you're saying that under the L4S approach for ECT(1), we can achieve it with either dualq or fq at the bottleneck, but under the SCE approach we can only do it with fq at the bottleneck.<br>
<br>
(I think I understand and roughly agree with this claim, subject to some caveats.  I just want to make sure I've got this right so far, and that we agree that in neither case can very low latency be achieved with a classic single queue with classic bandwidth-seeking<br>
traffic.)<br>
<br>
Are you saying that even if a scalable FQ can be implemented in high-volume aggregated links at the same cost and difficulty as dualq, there's a reason not to use FQ?  Is there a use case where it's necessary to avoid strict isolation if strict isolation can be accomplished as cheaply?<br>
<br>
Also, I think if the SCE position is "low latency can only be achieved with FQ", that's different from "forcing only FQ on the internet", provided the fairness claims hold up, right?  (Classic single queue AQMs may still have a useful place in getting pretty-good latency in the cheapest hardware, like maybe PIE with<br>
marking.)<br>
<br>
Anyway, to me this discussion is about the tradeoffs between the<br>
2 proposals.  It seems to me SCE has some safety advantages that should not be thrown away lightly, so if the performance can be made equivalent, it would be good to know about it before committing the codepoint.<br>
<br>
Best regards,<br>
Jake<br>
<br>
On 2019-07-08, 03:26, "De Schepper, Koen (Nokia - BE/Antwerp)" <<a href="mailto:koen.de_schepper@nokia-bell-labs.com" target="_blank">koen.de_schepper@nokia-bell-labs.com</a>> wrote:<br>
<br>
    Hi Jonathan,<br>
<br>
    From your responses below, I have the impression you think this discussion is about FQ (flow/fair queuing). Fair queuing is used today where strict isolation is wanted, like between subscribers, and by extension (if possible and preferred) on a per transport layer flow, like in Fixed CPEs and Mobile networks. No discussion about this, and assuming we have and still will have an Internet which needs to support both common queues (like DualQ is intended) and FQs, I think the only discussion point is how we want to migrate to an Internet that supports optimally Low Latency.<br>
<br>
    This leads us to the question L4S or SCE?<br>
<br>
    If we want to support low latency for both common queues and FQs we "NEED" L4S, if we need to support it only for FQs, we "COULD" use SCE too, and if we want to force the whole Internet to use only FQs, we "SHOULD" use SCE 😉. If your goal is to force only FQs in the Internet, then let this be clear... I assume we need a discussion on another level in that case (and to be clear, it is not a goal I can support)...<br>
<br>
    Koen.<br>
<br>
<br>
    -----Original Message-----<br>
    From: Jonathan Morton <<a href="mailto:chromatix99@gmail.com" target="_blank">chromatix99@gmail.com</a>> <br>
    Sent: Friday, July 5, 2019 10:51 AM<br>
    To: De Schepper, Koen (Nokia - BE/Antwerp) <<a href="mailto:koen.de_schepper@nokia-bell-labs.com" target="_blank">koen.de_schepper@nokia-bell-labs.com</a>><br>
    Cc: Bob Briscoe <<a href="mailto:ietf@bobbriscoe.net" target="_blank">ietf@bobbriscoe.net</a>>; <a href="mailto:ecn-sane@lists.bufferbloat.net" target="_blank">ecn-sane@lists.bufferbloat.net</a>; <a href="mailto:tsvwg@ietf.org" target="_blank">tsvwg@ietf.org</a><br>
    Subject: Re: [tsvwg] [Ecn-sane] Comments on L4S drafts<br>
<br>
    > On 5 Jul, 2019, at 9:46 am, De Schepper, Koen (Nokia - BE/Antwerp) <<a href="mailto:koen.de_schepper@nokia-bell-labs.com" target="_blank">koen.de_schepper@nokia-bell-labs.com</a>> wrote:<br>
    > <br>
    >>> 2: DualQ can be defeated by an adversary, destroying its ability to isolate L4S traffic.<br>
    > <br>
    > Before jumping to another point, let's close down your original issue. Since you didn't mention, I assume that you agree with the following, right?<br>
    > <br>
    >        "You cannot defeat a DualQ" (at least no more than a single Q)<br>
<br>
    I consider forcibly degrading DualQ to single-queue mode to be a defeat.  However…<br>
<br>
    >>> But that's exactly the problem.  Single queue AQM does not isolate L4S traffic from "classic" traffic, so the latter suffers from the former's relative aggression in the face of AQM activity.<br>
    > <br>
    > With L4S a single queue can differentiate between Classic and L4S traffic. That's why it knows exactly how to treat the traffic. For Non-ECT and ECT(0) square the probability, and for ECT(1) don't square, and it works exactly like a DualQ, but then without the latency isolation. Both types get the same throughput, AND delay. See the PI2 paper, which is exactly about a single Q.<br>
<br>
    Okay, this is an important point: the real assertion is not that DualQ itself is needed for L4S to be safe on the Internet, but for differential AQM treatment to be present at the bottleneck.  Defeating DualQ only destroys L4S' latency advantage over "classic" traffic.  We might actually be making progress here!<br>
<br>
    > I agree you cannot isolate in a single Q, and this is why L4S is better than SCE, because it tells the AQM what to do, even if it has a single Q. SCE needs isolation, L4S not.<br>
<br>
    Devil's advocate time.  What if, instead of providing differential treatment WRT CE marking, PI2 instead applied both marking strategies simultaneously - the higher rate using SCE, and the lower rate using CE?  Classic traffic would see only the latter; L4S could use the former.<br>
<br>
    > We tried years ago similar things like needed for SCE, and found that it can't work. For throughput fairness you need the squared relation between the 2 signals, but with SCE, you need to apply both signals in parallel, because you don't know the sender type. <br>
<br>
    Yes, that's exactly what we do - and it does work.<br>
<br>
    >   - So either the sender needs to ignore CE if it gets SCE, or ignore SCE if you get CE. The first is dangerous if you have multiple bottlenecks, and the second is defeating the purpose of SCE. Any other combination leads to unfairness (double response).<br>
<br>
    This is a false dichotomy.  We quickly realised both of those options were unacceptable, and sought a third way.<br>
<br>
    SCE senders apply a reduced CE response when also responding to parallel SCE feedback, roughly in line with ABE, on the grounds that responding to SCE does some of the necessary reduction already.  The reduced response is still a Multiplicative Decrease, so it fits with normal TCP congestion control principles.<br>
<br>
    >   - you separate the signals in queue dept, first applying SCE and later CE, as you originally proposed, but that results in starvation for SCE.<br>
<br>
    Yes, although this approach gives the best performance for SCE when used with flow isolation, or when all flows are known to be SCE-aware.  So we apply this strategy in those cases, and move the SCE marking function up to overlap CE marking specifically for single queues.<br>
<br>
    It has been suggested that single queue AQMs are rare in any case, but this approach covers that corner case.<br>
<br>
    > Add on top that SCE makes it impossible to use DualQ, as you cannot differentiate the traffic types.<br>
<br>
    SCE is designed around not *needing* to differentiate the traffic types.  Single queues have known disadvantages, and SCE doesn't worsen them.<br>
<br>
    Meanwhile, we have proposed LFQ to cover the DualQ use case.  I'd be interested in hearing a principled critique of it.<br>
<br>
     - Jonathan Morton<br>
<br>
<br>
<br>
_______________________________________________<br>
Ecn-sane mailing list<br>
<a href="mailto:Ecn-sane@lists.bufferbloat.net" target="_blank">Ecn-sane@lists.bufferbloat.net</a><br>
<a href="https://lists.bufferbloat.net/listinfo/ecn-sane" rel="noreferrer" target="_blank">https://lists.bufferbloat.net/listinfo/ecn-sane</a><br>
</blockquote></div><br clear="all"><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><br>Dave Täht<br>CTO, TekLibre, LLC<br><a href="http://www.teklibre.com" target="_blank">http://www.teklibre.com</a><br>Tel: 1-831-205-9740</div></div></div>