Subject: Re: [tsvwg] RTT-independence

From: Bob Briscoe <[email-masked]>
Date: Mon, 10 Feb 2020 16:15:41 +0000

Sebastian,

On 30/12/2019 22:10, Sebastian Moeller wrote:
> Dear Bob,
>
> summary to save the rest of the list some time:
>
> I argued that the current implementation of the dual queue coupled AQM (DQCAQM) fails to meet the required isolation quality between L4S two queues to to merit rolling it out of the lab and into the real internet.
>
> The symptom is that in realistic scenarios of high bandwidth flows with short RTTs L4S traffic demonstrably pummels/dominates the non-L4S traffics aggregate throughput. That fact is not under dispute as far as I can tell.
The clue is in the subject of your sentence: "short RTTs L4S traffic 
demonstrably pummels/dominates..." This suggests that, by changing the 
behaviour of the subject of your sentence (the L4S traffic over short 
RTTs), the problem will be addressed. I know you don't want that to be 
the answer, but that doesn't mean it isn't the answer.

>
> The L4S proponents argue, that this is working as designed, as this is a side-effect of their under-explained choices of acceptable standing queue "targets" for the two queues (1ms for the L4S-queue and 15ms for the non-L4S queue), which for short path RTTs in the limit creates an RTT imbalance of 1:15. (I have also argued that 15ms is the wrong value in theoretical grounds and so far this has not been disproven with facts/data).
15ms comes from the amplitude of the sawteeth of typical traffic at 
typical Internet bottlenecks over typical paths. "Traffic" might be 
multiple flows or single flows, but an AQM has to work well for the 
cases where the user wants to use the bandwidth they are paying for, 
including for single long-lived flows (OS updates, video uploads, etc). 
"Traffic" might use Cubic, Reno or other CCs but the user doesn't 
control the CC the other end uses, so the AQM has to work for typical 
cases and not be awful for worst cases. "Bottlenecks" might be anywhere, 
but they are most often in access links where there is not much flow 
multiplexing. With Reno, Cubic etc, the sawtooth amplitude depends on 
the RTT of the path. So "paths" might be between a customer in a large 
urban conurbation and a CDN in the same or a nearby conurbation, or a 
path might be half way round the globe, but the common case these days 
is an urban customer and a CDN.

One can argue whether the number is 10ms, 15ms, 20ms or whatever, but 
there is an operating point below which more and more traffic badly 
underutilizes the link. Whatever, this is not a theoretical question, it 
is a commercial question for ISPs when setting the target parameter of 
their AQM. You have to look at what ISPs do, not what you think they 
should do.

>
> The L4S team seems to accept though that this situation is sub-optimal and argues that by increasing the RTT-independence of all flows admitted to the L4S queue the problem can be ameliorated.
Correct.
>
> While I am all for increased RTT-independence, I fail to see how this can be considered a general solution for the problem that the DQCAQM simply fails to do the one thing exists to do.
The DualQ Coupled AQM merely gives out signals. It doesn't schedule 
throughput of anything in normal circumstances. The throughput that a 
flow takes depends on its response to those signals.

>
> Even if this would work for TCP Prague (and the increased RTT independence is not even deomstrated reliably for TCP Prague so far) that still will only solve this issue for flows with that congestion controller, this exercise needs to be repeated for all transports aimed for the L4S queue.
The point of the CC requirements (including the RTT independence 
requirement) in draft-ietf-ecn-l4s-id is that any CC is meant to comply 
if it wants to apply the ECT(1) codepoint.

The point of TCP Prague is to be a reference implementation that 
satisfies those requirements (that statement is not meant to discourage 
others from producing better reference implementations). Then people 
implementing other transport protocols can either a) copy the precise 
details, b) copy the general idea, or c) find other ways to satisfy the 
requirements.

When the requirements were written, it was known to be hard to precisely 
satisfy all of them at once. That was also the message from the paper 
"Resolving Tensions between Congestion Control Scaling Requirements 
<http://bobbriscoe.net/pubs.html#ccdi_tr>" and the presentations of it 
in ICCRG at the time (also linked via the link I've just given, and all 
these are also linked via the L4S landing page 
<https://riteproject.eu/dctth/>). Some of the requirements are already 
written with some wriggle room (e.g. the case in point uses the 
weasel-words highlighted "MUST *reduce* or eliminate RTT bias over as 
wide a range of RTTs *as possible*"). The implementation and testing 
exercises we're going through will allow us to be able to suggest to the 
community how best to soften (or harden) any requirement that is 
unnecessarily ambitious (or permissive).

>
> If on the other hand the DQCAQM simply is fixed to deliver robust and reliable equitable bandwidth sharing between the two queues* then TCP Prague and all other transports intended for the L4S queue can take their sweet tome to develop more RTT-independence.
The problem is not just between L & C flows. it's also between long-RTT 
L and short-RTT L flows. And the problem appears when you cut out 
queuing delay with any shared-queue AQM, not just the DualQ Coupled AQM.
>
> I am no engineer, but I can easily recognize which of the two options promises robust isolation and which just promises an on-going whack-a-mole.
I don't know how to persuade someone about where it's best to apply a 
solution, if that person is only prepared to countenance applying 
solutions in the network, even though the problem stems from end system 
behaviour.

>
>
>
> *) Say under congestion no class gets more than double the bandwidth of the other, ideally obviously exactly 50%
Per class throughput has very little to do with per-flow throughput when 
users can arbitrarily vary the number of flows per class.

Bob
>
>
> more below in-line, mostly for Bob.
>
>> On Dec 30, 2019, at 00:25, Bob Briscoe <[email-masked]> wrote:
>>
>> Sebastian,
>>
>> On 18/12/2019 08:11, Sebastian Moeller wrote:
>>> Hi Bob,
>>>   more below in-line.
>>>
>>>
>>>> On Dec 18, 2019, at 01:23, Bob Briscoe <[email-masked]>
>>>>   wrote:
>>>>
>>>> Sebastian,
>>>>
>>>> I wanted to pick up your point about RTT-independence that you recently said has never been responded to.
>>>>
>>>> I have changed the subject line, because this is not an L4S vs SCE issue. With a shared queue it is just as much an issue for SCE as for L4S. With an FQ scheduler, it is just as much a non-issue for L4S as for SCE.
>>>>
>>>>
>>>> On 20/11/2019 14:18, Sebastian Moeller wrote:
>>>>
>>>>> Dear Koen, dear all,
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>> On Nov 20, 2019, at 13:40, De Schepper, Koen (Nokia - BE/Antwerp) <[email-masked]>
>>>>>>
>>>>>>   wrote:
>>>>>>
>>>>>>
>>>>>> One of these opportunities here is to make L4S_TCP less RTT dependent. There have been many working implementations for less RTT-dependent CCs in the past. One that is widely deployed is Cubic, which is doing this for getting more throughput for longer RTTs. The only reason why it didn’t fly for lower RTTs on the current Internet is that they would hurt themselves (get lower throughput, competing with Reno).
>>>>>>
>>>>>>
>>>>> 	[SM] Looking at the pfifo_fast results in Høiland-Jørgensen T, Hurtig P, Brunstrom A (2015) The Good, the Bad and the WiFi: Modern AQMs in a residential setting. Computer Networks 89:90–106. For Cubic/pfifo_fast (linux former default combination), I fail to see a strong indicator that cubic is RTT invariant or getting more thoughput at longer RTTs (except for the 10ms versus 50ms "hump"). What paper/data should I be looking at instead?
>>>>>
>>>>>
>>>>>
>>>>>>   
>>>>>> As we are able to define a new independent behavior and the RTT dependence in L4S is taken serious (some even call it a show stopper) this is even a must do opportunity for L4S. It is all a matter of perspective: show-stopper <-> opportunity.
>>>>>>
>>>>>>
>>>>> 	[SM] I believe that working on more RTT independence is worth-while but no replacement for fixing the isolation system as it it is that equitable isolation from existing traffic that basically gives you the slate clean-"green field" development opportunity, no?
>>>>>
>>>> [BB] RTT-dependence is caused by the end-system, and should be solved in the end-system (whether or not FQ is also deployed to solve it in some places).
>>>>
>>> 	[SM] I fully agree, and that is also a convincing argument, why increasing RTT independence can not be the solution for the observed isolation failure of the dual queue coupled AQM, glad that you agree.
>> [BB] There is no convincing argument yet. This is an opening sentence, from which neither I nor you can make any convincing argument. Please work through the whole argument below...
> 	[SM] I disagree, the argument is, since " RTT-dependence is caused by the end-system[s]" and needs to be addressed in the end-systems  we can not assume higher RTT-independence as a means to ameliorate deficiencies in L4S's chosen class separator, the DQCAQM, unless you are willing to post-pone the L4S experiment/roll-out until all end-points are changes to have a higher RTT-independence. Also what is missing is actual data demonstrating, that this will bring the worst case sharing of the DQCAQM into the acceptable range.
>
>>
>>>
>>>
>>>
>>>> Importantly, RTT-dependence only needs to be addressed in the newly deployed scalable (L4S or SCE) end-systems, not pre-existing end-systems like Reno & Cubic, as I'll now explain.
>>>>
>>>> The problem is due to the tiny RTT you can get when you have both a tiny base RTT and a tiny queue. For example:
>>>>
>>>> Base RTT/ms
>>>> Queue/ms
>>>> Total RTT/ms
>>>> Close Scalable flow:	2.5
>>>> 0.5
>>>> 3
>>>> Distant Scalable flow:	100
>>>> 0.5
>>>> 100.5
>>>> Close Classic flow:	2.5
>>>> 15
>>>> 7.5
>>>>
>>> 	[SM] Note, 15 + 2.5 = 17.5, a typo for sure. If I am wrong and you really ment 7.5, please elaborate why you only add 1/3 of the queueing delay, as I assume we are talking about saturating traffic here.
>>>
>>>
>>>
>>>> Distant Classic flow:	100
>>>> 15
>>>> 105
>>>>
>>> 	[SM] 15 + 105 = 120
>>>
>>>
>>>> If all the above flows were RTT-dependent, the lowest 3ms RTT ('Close Scalable') would be the potential hog. For example against 105ms ('Distant Classic') if they were both 'window fair' like Reno, the throughput ratio would be 105:3 = 35:1
>> [BB] Sorry, I screwed up that table. I decided to use a 5ms queue instead of a 15ms queue at the last minute (in order to use the worst case for my argument), however I only changed the totals, and omitted to change the queue itself. Here's the corrected table:
>>
>>
>>
>> Base RTT/ms
>> Queue/ms
>> Total RTT/ms
>> Close Scalable flow:	2.5
>> 0.5
>> 3
>> Distant Scalable flow:	100
>> 0.5
>> 100.5
>> Close Classic flow:	2.5
>> 5.0
>> 7.5
>> Distant Classic flow:	100
>> 5.0
>> 105
>>
>> All the arguments that followed remain the same though, because they relied on the totals not the constituent parts of the totals.
> 	[SM] Thanks for fixing the numbers, but as I already conceded below "but your point still stands", meaning I well understood the gist of your argument.
>
>
>>> 	[SM] I am not convinced that "window fairness" is in reality a useful property, throughput fairness seems much more desirable.
>> [BB] 'Window fairness' is not a useful property, it's just a property of a large class of congestion controls. The word 'fairness' sounds intrinsically like people should think it is desirable. So I try to avoid using it, and if I do, I try to always put it in quotes.
> 	[SM] Why bother? I have read a few of your opinion pieces arguing against flow fairness, and hence understand where you come from. I tend to think that rough equality is the best of all achievable bad splits, I happily concede it to be rarely "optimal". But as you have realized yourself, for any arbitrary hop on a path there typically is insufficient information available to actually optimize the bandwidth distribution between all active flows in any meaningful way; out of the two options, "anything goes" and "try to equalize by some relative objective measure",you seem to prefer the former while I prefer the latter.
>
>>>> Whereas the Close vs Distant Classic case is cushioned by the 15ms queue. RTT ratio = 105:7.5 = 14:1, which was the Internet status quo pre-L4S (or SCE).
>>>>
>>> 	[SM] If I fill in the modified numbers from above I get 115 / 17.5  ~ 6.6:1, but your point still stands.
>>>
>> [BB] Please now revisit the arguments below without the distraction of the typos.
>>>> So why is it enough for only scalable flows to reduce their RTT dependence? Assuming they do, the lowest 3ms RTT ('Close Scalable') doesn't go much faster than 'Distant Scalable'. If it's no longer a hog in relation to Distant Scalable, it's no longer a hog in relation to any of the other flows.
>>>>
>>> 	[SM] That seem strictly depend on your definition of hog 105/120 is not equal still giving L4S an IMHO (hard to justify) edge over standard compliant traffic. But I am happy to be convinced by actual empirical numbers.
>> [BB] Oh dear. What is so important to you about such precise rate equality?
> 	[SM] Please remember that this is not a pure discussion about the desirability of higher RTT-independence (I am all for it), but rather about the fact that it is a red herring to bring up RTT-independence as explanation for the fact that the current implementation of dual queue coupled AQM does not seem to meet what both the L4S-arch and the dualQ I.D.'s "promise" to the reader. The only fact that both are not wrong is because they hedge their bets by attaching specific conditions (and fail to mention that dualQ will make sure the required RTT equality will require shorter true RTTs for the non-L4S queue). Hence the text might be technically correct, but it is also misleading.
> 	So my point is that you need to fix the well-documented deficiencies in the dual queue coupled AQM. AND here I, and I assume most casual readers of the L4S I.D.s will expect equitable sharing between the two traffic classes. I am sure that most reviewers will not see that as strictly as I do, and will accept a fudge factor of say 1:2, but 1:8 and worse is simply an indication that either the implementation or the design are not up for the intended purpose...
>
>
>> Please be prepared to set aside your preconceptions about rate equality.
> 	[SM] No, I will not, as far as I understand the rationale behind the dual queue coupled AQM is to allow exposing the internet to the more "aggressive"/nimble 1/p type congestion controllers, and to be fit for roll-out the current guarantees that dual queue AQM will give, namely "not completely starving" non L4S-traffic is simply too weak.
> 	The discussion I am leading here is not about what L4S's AQM does inside each of the two traffic classes, but purely between them, so I am NOT talking about flow-fairness at all, but inter-class-fairness. And as I already indicated, even equitable sharing between classes will give the initially rare L4S traffic already a considerable boost over packets in the non-L4S queue, which I consider undesirable, but this is not a discussion about my preferences, but about whether the L4S experiment is sufficiently cautious and safe enough for the rest of the internet to being exposed to L4S traffic.
>
>
>> Please re-read the reference at {Note 1}. No-one has ever been able to justify a goal of equal flow-rates, except for starvation avoidance (when rough rate equality is sufficient).
> 	[SM] I read that note, but it fully failed to convince me. You seem to argue that equitable sharing prohibits more optimal traffic splits, and I fully agree, but at the same time it also prohibits more pessimal traffic splits, and given that the congested hop typically has no reasonable means to assign "valence" to the flows, I prefer predictable "good enough" sharing over "anything goes". And with that let's put that discussion to rest, given your dogmatic position regarding this topic, I am sure that I will not be able to convince you, and equally you will not be able to convince me of your position, as I have read quite a lot of your prose on that topic already and am still not convinced that "potentially optimal, but also potentially pessimal" is preferable to "mostly good enough and rarely really bad".
>
>
>> Congestion levels have to be high for starvation to be a concern. So, the lower congestion is, the less important rate equality becomes.
>>
>> There's a lot more to this, so please read and try really hard to understand /all/ the points in that reference at {Note 1}.
>>
>> For instance 'rate fairness' is also not a useful goal because, like 'window fairness', it makes the comparison in inappropriate units - if you try to say what is 'fair' at each instant without taking account of congestion over time, you'll get a much worse outcome (see the first argument in section 2.1.1 of the reference at {Note 1}).
>>
>> I recall that you (if my memory serves me correctly) dismissed that argument in section 2.1.1  because you couldn't see how to calculate the correct shares at any one time. You'd need to read the references for that. But even if you can't work out the perfect solution, doesn't mean you cannot see that, for flows with different volumes, highly unequal flow rates give much shorter flow completion times than equal flow rates. The idea is to start you questioning your belief in equal flow rates.
> 	[SM] Your leap of faith is that I follow you in accepting "completion time" as the relevant measure, which I do not. BTW, the intermediate hop really has little way to figure out whether a given flow is (close to being) finished or not or whether a sparse flow switches into bulk capacity-seeking mode later. In the light of all that uncertainty I still consider the outcome in b) quite reasonable and good enough. But I really disliked reading that editorial and will stop discussing it further.
>
>
>> Nonetheless, compared to 'window fairness', 'rate fairness' is a more useful /baseline/ on which to build other more useful behaviours, because at least it avoids starvation.
>>
>> So, please understand that the reason I prefer an RTT-independent congestion control is not because I believe 'rate fairness' is a desirable goal. In the presence of very shallow queues, 'rate-fairness' is just less undesirable than 'window fairness', because 'rate-fairness' avoids starvation.
> 	[SM] Bob, while I agree with very little in the above, this is orthogonal to the question that I am really concerned about, so I will let this pass, as it only distracts from the fact that I am not claiming the dual queue coupled AQM is broken because it does not do flow-queueing, to repeat myself, it is BROKEN, because it fails to properly ISOLATE the two traffic types you classify all packets into. So the property I see lacking is class-fairness not flow-fairness.
>
>
>>
>>>> So the worst case reverts to the Close Classic flow, which isn't so bad because the total RTT is cushioned by the queue. So we will be no worse off than we were before L4S or SCE.
>>>>
>>>>
>>>> You will see we explained this at the end of Section V.B 'Congestion Control Roadmap' in the draft journal paper about L4S that we posted earlier this year:
>>>> “`Data Centre to the Home’: Deployable Ultra-Low Latency for All”
>>>>
>>>> But is RTT-independent TCP Prague real? No, not quite yet. At the time we designed this, we simulated it, but we're now working on it again, including implementing it in Linux, so you should see results soon. The approach to RTT-independence that we suggest is explained in section 3.2 of a paper we presented to the iccrg back in Jul 2017.
>>>> “Resolving Tensions Between Congestion Control Scaling Requirements“
>>>>
>>> 	[SM] At this point I want to see real numbers from empirical testing, thanks for the references though.
> 	[SM] And I still do.
>
>>>
>>>
>>>> All the above papers are available via the L4S landing page:
>>>> https://riteproject.eu/dctth/#papers
>>>>>> I'm also not against the recent vibrant energy, interest and engagement of people, but I think we can better use this energy in making things work. As you noticed, we can use the help to speed things up on the open source part.
>>>>>>
>>>>>>
>>>>> 	[SM]... while at the same time requesting help for implementation and dealing with the consequences of said "code point and requirements".
>>>>>
>>>> If you recall, when I asked you not to keep repeating other people's arguments without adding anything, you said the RTT-dependence point was your contribution to the debate.
>>>>
>>> 	[SM] Then we miscommunicated, my point is, that if you fix the dual queue couplked AQM than you can tackle the worthy goal of less RTT dependence at your own sweet time.
>> [BB] You never say what you mean by 'fix the dualQ coupled AQM'.
> 	[SM] I did not have the impression that I left that in doubt, but I am happy to state this explicitly. Under congestion the dual queue coupled AQM needs to strictly maintain inter-class equality just as a casual reader expects it to do. That is, under load and independent of the number os flows and their RTT make-up egress rate of the AQM needs to be equal on a sufficiently small time-scale.
>
>
>> I am not going to know what you mean because, from my perspective, the AQM does what it was designed to do very well.
> 	[SM] That was my suspicion as well, that we are not simply talking about an implementation bug, but rather about a deep-rooted design decision behind the dual queue coupled AQM. But when bringing this up with Koen, he seemed to argue that he also is concerned about class inequalities (say at extremely short RTTs) so I am at a loss, is the failure to share equitable between the classes considered as "working as intended" or considered something that should be fixed?
>
>
>> It doesn't determine per-flow shares of capacity.
> 	[SM] We are talking per-class sharing here, please do not confuse these two they are conceptually quite different, and I am NOT, to repeat myself, blubbering on about the fact that there is no flow-queueing inside any of the two queues. Your AQM, your rules, as long as you do not completely pummel my non-L4S thoughput I am willing to live and let live.
>
>
>> It merely emits congestion signals. Per-flow shares of capacity are determined by each sender's response to those signals.
>>
>> You clearly want the AQM to do something different, but you don't say what. I assume you don't mean just "replace it with FQ" {Note 2}.
> 	[SM] No, Bob I do not propose that. I have wielded the term "equitable sharing" quite a lot, and at least in my humble opinion it was always clear that this is about sharing between the two queues. I am not trying to change your project to do flow-fair queueing inside of each of the two queues at all; I am trying to save the rest of the internet (including my own access link) from the negative side-effects I expect from your experiment.
>
>
>>>> The L4S team identified this problem in early 2015 during testing with diverse RTTs.
>>>>
>>> 	[SM] And then opted to keep pushing for internet-wide roll-out of L4S with this issue unsolved, color me not impressed.
>> [BB] We were pushing for Internet-wide roll-out of the /network/ part of L4S.
> 	[SM] Which contains the arguably not-working-as-it-should dual queue coupled AQM, exactly the right tome to voice concerns and objections, IMHO.
>
>
>> We were from network companies and we thought others would do the end-system parts - hence the Prague requirements. We thought DCTCP was a sufficient starting point for others to build on. Once I realized that wasn't happening (except in Google) without a reference implementation, I left CableLabs and got funding to hire folks to work on TCP Prague with me.
> 	[SM] So you really set out to spend the ECT(1) codepoint on the intuition that there potentially might be users interested in using such a system initially?
>
>
>>>
>>>
>>>> When the Prague requirements were first agreed, we (Koen in particular) insisted that this should be included as a basic safety requirement, even tho some people said it wasn't important.
>>>> The WG has so far kept it as a MUST requirement, justified by the potentially large discrepancy in rates that can result, articulated here:
>>>>      
>>>> https://tools.ietf.org/html/draft-ietf-tsvwg-ecn-l4s-id-08#appendix-A.1.5
>>>>
>>>>
>>>> What I wanted to show by this email is that a significant amount of work has been done on this, the problem is well-understood and solutions are in progress. RTT-independent congestion controls have been produced before - not that I'm belittling how hard it is to resolve the tension between requirements identified in the 'Tensions' paper above.
>>>>
>>> 	[SM] To repeat myself, this all supports the thesis that making RTT-independence the mechanism by which L4S equitably shares with standards-compliant traffic at the current state is premature.
>> [BB] It is not premature to develop an RTT-independence solution that we have shown to work in simulations, and that we know has been implemented successfully in other congestion controllers in the past.
> 	[SM] Bob, in the context of dual queue coupled AQ's short-comings, RTT-independence is a red herring. Even if you achieve RTT-independence for TCP-Prague, unless you enforce to only allow TCP-Prague into the L4S-queue (which would also allow to get rid of the abuse of ETC(1) as leaky classifier code point) you are not fixing the generic isolation failure of the dual queue coupled AQM, so hurrah for TCP Prague gaining RTT-independence in the future but that does not remove my objection or your AQM's issue.
>
>
>>> I very much would like to see the dual queue coupled AQM fixed, and once RTT independence (for all users of the L4S queue) is functional then the AQM can be changed again.
>> [BB] If you mean that we should bias the signals emitted by the DualQ to counterbalance the incorrect response of RTT-dependent senders, that would create a nightmare "incremental undeployment" problem.
> 	[SM] No, I mean that if your current design does not work at rather normal (given the closeness of CDNs to the edge) short RTT you should be given the chance to redesign your AQM. If you insist upon the AQM sharing to be driven by RTT dependent mechanisms, the onus is on you to remedy this.
>
>
>> Then, no-one would ever be able to fix any of these broken     (RTT-dependent) congestion controllers because, during the transition, the counterbalances added to AQMs would remain in the network and cause RTT-unfairness in the opposite direction. So reverse engineering the AQM to counter broken senders would freeze both into the Internet for ever.
> 	[SM] Realistically, what you call "broken senders" is the reality in the internet, the exact reality your new system be better compatible with to merit roll-out in the first place.
>
>> So, please accept that is not the way it's going to happen. The DualQ Coupled AQM does not need to be fixed because it isn't broken - it is very much working as intended.
> 	[SM] So I have you on record, that the equitable sharing failure at short RTTs is a property that you designed into the AQM on purpose? Again that seems to contradict my interpretation of Koen's words on this matter, but I am easily confused anyway.
>
>
>> Network deployments take years and remain for years. End system deployments can continuously evolve.
>>
>> My point at the start was that RTT-dependence is an aspect of the way DCTCP senders respond to the signals emitted by queues. So the correct place to fix RTT-dependence is in those senders.
>
> 	[SM] And I fully agree. Except that I draw the obvious logical conclusion, that hence increasing RTT-independence can NOT be the solution to the unequal between-class sharing of the dual queue coupled AQM. That is my point for some time now, and a rather explicit point.
>   
>>
>>>
>>>
>>>> So I ask you to take a more constructive approach. Banging on your keyboard in the style of "ner ner ne ner ner, I found a problem with L4S" doesn't help anyone,
>>>>
>>> 	[SM] Let me be blunt, without the deserved push-back on the lists, "peaceful coexistence with single queue RFC3168 AQMs" would not have been tackled, the gist of the presentatuins so far has always been to ask the room, but do we ned to care for this at all? So IMHO pointing out L4S current short comings is important as otherwise little progress on the difficult issues would happen at all.
>> [BB] The concerns about single-queue RFC3168 AQMs did indeed succeed in redirecting my attention from RTT-independence, which I would otherwise still be focusing on. Olivier at least is still working on that.
> 	[SM] Look, all of these issues come from a list of important issues that the L4S project itself created :
>
>
> Requirements
>
> L4S-ECN Packet Identification: ECT(1)
>
> Accurate ECN TCP feedback
>
> Reno-friendly on loss
>
> Reno-friendly if Classic ECN bottleneck
>
> Reduce RTT dependence
>
> Scale down to fractional window
>
> Detecting loss in units of time
>
> I can understand if you prefer working on some of them more than on others, but complaining that woking to make sure your design meets your own REQUIREMENTS seems odd. Or I am misreading your words and all you are saying is that you are dedicating time to this?
>
>> I am concerned that still no-one has yet found a single-queue RFC3168 AQM deployed on the public Internet, or a network operator who wants one. No doubt there are some out there, but I have no idea how large or small the problem really is.
> 	[SM] IMHO the prevalence of single queue RFC3168 AQM is irrelevant, this is a point of contention that was correctly identified in the TCP Prague requirements and needs a proper solution instead of trying to argue it away.
>
>> It would be preferable if you would at least gather data to help prioritize this work, by quantifying the prevalence and impact of these problems. But I can't stop you just repeating known problems in email after email with no data to support your invective.
> 	[SM] @Chairs, I do not want to appear to touchy, butI take offense in this, as long as Bob repeats the same points over and over again (instead of shutting me up with data), I do not seem him getting the right to complain that I also repeat my position instead of doing his research for him.
>
>
>>>> when the problem you've "found" exists with any low latency shared queue, including an SCE-based solution.
>>>>
>>> 	[SM] Well, the something called "dual queue" AQM certainly needs to at least behave as if it had two queues in my book.
>> [BB] It does. The L queue isolates its traffic from the latency of the other, and they each emit different but coupled levels of congestion signals.
> 	[SM] The problem I see is that fine time scales Bandwidth and latency are inter-twined and pretending that they are orthogonal does not really help (at any point in time typical links will only allow to transmit 1 packet that than hogs the link for its transmission time).
>
>
>>> L4S versus SCE is red herring here,
>> [BB] What I said was not pitting L4S against SCE. Quite the opposite.
>>
>> I said that an SCE transport also needs to be RTT-independent, for the cases where it runs over a single queue SCE AQM (e.g. CNQ). I do not see any work being done on RTT-independence in SCE transports at all. And I do not see you criticising anyone for not having done this.
> 	[SM] The current status is that L4S will pummel standards-compliant traffic in this condition, while SCE will yield too generously, the latter restricts the fall-out of too high RTT-dependence to the SCE flows themselves, the former will simply bully its way through. Note how the SCE way is both safe for roll-out and carries an in-built incentive to address this issue, while the L4S approach is not safe (from the viewpoint of the existing non-L4S internet) and carries no real incentive to fix this, after all if I make my L4S-endpoint sender less RTT independent at short RTTs I can get an advantage over both non-L4S as well as TCP Prague traffic.
>
>
>>> my current issue is that the current implementation of L4S's reference AQM does not work as it should and as a normal reader would understand from reading the dualQ ID, IMHO that needs to be fixed.
>> [BB] Which text in the aqm-dualq-coupled draft gives this wrong impression? It clearly says:
>>        For the
>>        public Internet an L4S transport has to comply with the
>>        requirements in Section 4 of [
>> I-D.ietf-tsvwg-ecn-l4s-id
>> ] (aka.
>>        the 'Prague L4S requirements').
> 	[SM] I have cited these before, but here again:
> "This specification defines `DualQ Coupled Active Queue Management
>     (AQM)', which enables these Scalable congestion controls to safely
>     co-exist with Classic Internet traffic."
> "Analytical study and implementation testing of the Coupled AQM have
>     shown that Scalable and Classic flows competing under similar
>     conditions run at roughly the same rate."
> "without compromising the performance of
>     the Classic traffic"
> "the Coupled AQM that addresses throughput equivalence between
>        Classic (e.g.  Reno, Cubic) flows and L4S flows (that satisfy the
>        Prague L4S requirements)."
> "For safe co-existence, under stationary conditions, a Scalable flow
>     has to run at roughly the same rate as a Reno TCP flow (all other
>     factors being equal)."
> "Nonetheless, coupled marking ensures that giving priority to L4S
>     traffic still leaves the right amount of spare scheduling time for
>     Classic flows to each get equivalent throughput to DCTCP flows (all
>     other factors such as RTT being equal)."
>
>
> None of this indicates that at short RTTs L4S traffic will dominate/pummel non-L4S traffic at short RTT paths, and nothing indicates that this is made worse by a severely under-explained set of latency targets for the two queues. Is that clear enough?
>
>
> 	[SM] And I note that not even TCP Prague seems to comply with all of these L4S requirements yet...
> 	Look, in my discipline the onus to demonstrate that something new and wonderful works and has no/little/acceptable side-effects is on the person proposing the new thing. So with that background I very much like to see a working-in-the-lab-as-designed-and-as-considered-safe version first before even contemplating inflicting this on the wider internet. As it stands the dual queue coupled AQM is willing to give both a latency and a bandwidth advantage to any flow willing to set ECT(1), I am quite troubled that I seem to be the only person that sees this as an obvious unsafe design...
>
>>
>> That clearly does not promise that the dualQ will behave as intended for a transport in the L queue that is RTT-dependent, i.e. that does not satisfy the stated requirements for that queue.
> 	[SM] Which IMHO is another problem, thanks for highlighting this. But also if the class-isolation is fixed that will also solve this issue.
>
>
>> Whatever, I notice that Appendix C assumes an RTT-dependent L4S transport, which will need to be changed once we have empirical results for RTT-independent transports. And that assumption needs to be called out in the interim. I've made a note-to-self to do both these.
>>
>>> I do not believe that the not yet solved RTT-independence goal is the best approach to solve the issue, but you are free to spend your time as you please.
>> It would help if you argued against the fairly straightforward reasoning (above, starting "So why is it enough for..."), rather than just generally saying you don't believe it.
> 	[SM] Well, I do not buy your "reasoning" what I see is you trying to shut me up instead of engaging in a discussions of the points I bring and I do not appreciate that.
>
>
>>>
>>>
>>>> Instead you could have read all the papers referenced from the L4S landing page, \\
>>>>
>>> 	[SM} Regrettably, I have read quite a lot of that material, and I typically see too much hype and too little critical analysis for my taste.
>>>
>>>
>>>> understood how much everyone already understands the problem,
>>>>
>>> 	[SM] I have no beef with your understanding of the issues, my complaint is that you do not act upon long-standing well-documented show-stopper issues. Not every documented bug can be dressed as a feature.
>> [BB] When you consider something to be an important bug, but I argue it is an important feature, the proper approach is to try to understand why something you thought was an accepted truth is being questioned.
> 	[SM] Bob, please re-read my arguments under the light that I am in no way trying to make you do flow-fair queueing inside of your two queues. All I want is that the network side of L4S is robust and reliable and does not harm the rest of the internet (well, my emphasis is on the latter part, as I have severe doubts that L4S will in reality work as intended anyway).
>
>> Instead, what you've typed is effectively an accusation that I am a charlatan with evil intent.
> 	[SM] I fail to see such an accusation in my mails could you please point out a specific instance, so I can try to avoid this in the future.
>
>> This frequent descent into personal slurs does not move anything forwards.
> 	[SM] It seems I offended you, since that was not my intention, I offer my apology for all phrases that you consider offensive. But that does not one iota affect my criticism.
>
>
>> Think of all the material about FQ-CoDel. Is that hype, or is it enthusiasm about good results? To a sceptical reader who has not repeated the results themselves, I'm sure it seems like extreme hype.
> 	[SM] You are really comparing the hype content of a single 25 page RFC versus a triplet of 35 (https://tools.ietf.org/html/draft-ietf-tsvwg-l4s-arch-04), 49 (https://tools.ietf.org/html/draft-ietf-tsvwg-aqm-dualq-coupled-10), and 42 page monsters (https://tools.ietf.org/html/draft-ietf-tsvwg-ecn-l4s-id-08), really?
>
>> I would ask you to presume the L4S results are all genuine until proven otherwise (of course, you should also hold a degree of scepticism in reserve). Then perhaps you would read enthusiasm as enthusiasm, rather than as hype.
>>
>> (Nonetheless, I am making an editorial pass through the drafts damping down the enthusiasm/hype.)
> 	[SM] Thanks.
>
>> Regards
>>
>>
>>
>> Bob
>>
>> {Note 1}: These arguments for allowing rate inequality are developed properly in "Per-Flow Scheduling and the End-to-End Argument". I wrote it this summer specially for readers who believe in per-flow scheduling and who missed the debates in the research and IETF communities about this over the past dozen years.
>>
>> {Note 2} I would never introduce per-flow rate controls into the network anyway.
> 	[SM] I know, but luckily that is not at issue here, we are merely talking about per-class rate controls...
>
>
>> Because I do not want to be to blame for a future where high-rate applications (AR, VR, holographic, light-field, remote viewing, etc) have to ask permission from the network, just in order to maintain a certain amount of throughput in the presence of FQ with varying numbers of competing flows (when there is plenty of bandwidth so that a less than equal share is still nowhere near starvation).
>> I do not think proponents of per-flow scheduling want such a politically distasteful shift of control towards network operators either, so I don't know why they choose not to see that they are pushing the Internet in this direction.
>>
>> The main reason the early L4S proponents sunk years into developing the dualQ coupled AQM was to provide a way to do low latency without FQ.
> 	[SM] It still remains to be seen, whether they succeeded though.
>
> Best Regards
> 	Sebastian
>
>
>>
>>
>>
>>> Best Regards
>>> 	Sebastian
>>>
>>>
>>>
>>>> how much has already been done to solve it, and then you could have tried to work out the details of a full solution.
>>>>
>>>>
>>>> Regards
>>>>
>>>>
>>>>
>>>> Bob
>>>>
>>>>
>>>>
>>>>> Best Regards
>>>>> 	Sebastian
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>>   
>>>>>> Regards,
>>>>>> Koen.
>>>>>>   
>>>>>> From: Ingemar Johansson S
>>>>>>
>>>>>> <[email-masked]>
>>>>>>
>>>>>>   
>>>>>> Sent: Wednesday, November 20, 2019 11:50 AM
>>>>>> To: Kyle Rose
>>>>>>
>>>>>> <[email-masked]>; Ingemar Johansson S <[email-masked]>
>>>>>>
>>>>>>
>>>>>> Cc: Sebastian Moeller
>>>>>>
>>>>>> <[email-masked]>; G Fairhurst <[email-masked]>; [email-masked]; [email-masked]; De Schepper, Koen (Nokia - BE/Antwerp) <[email-masked]>; [email-masked]; Ingemar Johansson S <[email-masked]>
>>>>>>
>>>>>>
>>>>>> Subject: RE: [tsvwg] L4S vs SCE
>>>>>>   
>>>>>> Hi
>>>>>>   
>>>>>> So given the imagined outcome that L4S fails.. two scenarios
>>>>>>   
>>>>>> If other SDOs or developers don’t pick up L4S then things are quite simple I guess, just declare the L4S drafts as deprecated, or is there more to do ?
>>>>>>   
>>>>>> But, if e.g. 3GPP somehow thinks that this is a good idea and adopts it.. Will the IETF send a message (LS?) to 3GPP with the message “please stop using L4S”, is this even a reasonable scenario?. After all, the fact that it is picked up by other SDOs, speaks against a failure ?
>>>>>>   
>>>>>> /Ingemar
>>>>>>   
>>>>>> From: Kyle Rose
>>>>>>
>>>>>> <[email-masked]>
>>>>>>
>>>>>>   
>>>>>> Sent: den 20 november 2019 11:14
>>>>>> To: Ingemar Johansson S
>>>>>>
>>>>>> <ingemar.s.johansson=[email-masked]>
>>>>>>
>>>>>>
>>>>>> Cc: Sebastian Moeller
>>>>>>
>>>>>> <[email-masked]>; G Fairhurst <[email-masked]>; [email-masked]; Ingemar Johansson S <[email-masked]>; [email-masked]; De Schepper, Koen (Koen) <[email-masked]>; [email-masked]
>>>>>>
>>>>>>
>>>>>> Subject: Re: [tsvwg] L4S vs SCE
>>>>>>   
>>>>>> On Wed, Nov 20, 2019 at 6:04 PM Ingemar Johansson S
>>>>>>
>>>>>> <ingemar.s.johansson=[email-masked]>
>>>>>>
>>>>>>   wrote:
>>>>>>
>>>>>>
>>>>>>>        How do you expect an industry/commercial roll-out of L4S
>>>>>>> technology to behave, if the L4S experiment should terminated without
>>>>>>> adoption as a standard track RFC? Are they supposed to phase-out using
>>>>>>> ECT(1) as well, or is it understood that deployed L4S instances continue using
>>>>>>> L4S methods?
>>>>>>>
>>>>>>>
>>>>>> [IJ] The premise would be that L4S is declared a failure. I doubt that anybody has a good enough crystal ball to predict what happens. First it is necessary to come to the conclusion that L4S is a failure and I would argue that we are not yet there and I don't currently see that coming. Before that possible event I don't see it meaningful to speculate.
>>>>>>   
>>>>>> I'm going to have to go ahead and disagree with you strongly here. Given the potential consequences of cleaning up after a failed experiment without a plan worked out beforehand, this blithe approach is simply not acceptable.
>>>>>>   
>>>>>> In lots of cases, experiments are easy to terminate in an obvious way: for example, in one typical case, a code point can simply be abandoned, or (even better) a pollutable experimental code point returned to the available pool after some time. If that were the case here, it would not be difficult to enumerate a sequence of steps required to do so. It doesn't appear that's the case, however, so all the more reason to make sure we address this as part of the experiment setup.
>>>>>>   
>>>>>> A launch escape system of the necessary complexity should be a requirement of any experimental deployment. In this case, that might circumscribe the scope of the experiment itself.
>>>>>>   
>>>>>> Kyle
>>>>>>
>>>>>>
>>>> -- 
>>>> ________________________________________________________________
>>>> Bob Briscoe
>>>>
>>>> http://bobbriscoe.net/
>> -- 
>> ________________________________________________________________
>> Bob Briscoe
>> http://bobbriscoe.net/

-- 
________________________________________________________________
Bob Briscoe                               http://bobbriscoe.net/

---

From: Sebastian Moeller <[email-masked]>
Date: Mon, 10 Feb 2020 22:59:10 +0100

Dear Bob,

thanks for bringing this up again. If I recall correctly, the L4S team set out to design, implement, and test methods to reduce the RTT-dependence in TCP Prague, so let me start our discussion with two questions: 

Q1: How far along is this effort of making TCP Prague less RTT-dependent?

Q2: Are you willing to share data with the list?

	Having real data to base our discussion on would make it probably much more worth anybody's time. I would invite anybody not interested in the small details to please ignore the rest of this email. Thank you in advance.

Bob,  I will address your specific points below individually, prefixed with [SM],

> On Feb 10, 2020, at 17:15, Bob Briscoe <[email-masked]> wrote:
> 
> Sebastian,
> 
> The clue is in the subject of your sentence: "short RTTs L4S traffic demonstrably pummels/dominates..." This suggests that, by changing the behaviour of the subject of your sentence (the L4S traffic over short RTTs), the problem will be addressed. I know you don't want that to be the answer, but that doesn't mean it isn't the answer.

	[SM] Bob, can you guarantee that any flow not showing sufficiently RTT independent behavior gets evicted out of and banned by the L4S-low latency queue? And do you have data that proves that the level of RTT independence you actually reach in the current TCP Prague implementation is sufficient to reduce the observed imbalance into say something in the 1:2 range? Real data from a realistic test bed could do wonders to convince me and others? that my concerns are over-blown. 

> 15ms comes from the amplitude of the sawteeth of typical traffic at typical Internet bottlenecks over typical paths.

	[SM] I have looked hard, but I have not found any pointer to this in the literature referenced from the dualq draft and even the DOCSIS Pie RFC, so I would be delighted if you could post a link to a preferable already peer-reviewed paper elaborating that point, please. And for clarification, as far as I can tell the typical saw-tooth appears in plots of say throughput over time, so time is the wrong dimension/unit for the amplitude of the saw-tooth, if at all its the period of the sawtooth, no? But I would assume that period to be partly a function of RTT itself, so I have a hard time believing that 15ms is "the" onlye TCP sawtooth period relevant for a general purpose router.

> "Traffic" might be multiple flows or single flows, but an AQM has to work well for the cases where the user wants to use the bandwidth they are paying for, including for single long-lived flows (OS updates, video uploads, etc). "Traffic" might use Cubic, Reno or other CCs but the user doesn't control the CC the other end uses, so the AQM has to work for typical cases and not be awful for worst cases.

	[SM] +1. But current DQCAQM arguably falls well into the awful category IMNSHO...

> "Bottlenecks" might be anywhere, but they are most often in access links where there is not much flow multiplexing.

	[SM] The next most likely place for bottlenecks, in my limited experience, is at peering/transit links between ISPs/ASs, there the amount of flow multiplexing tends to be on the high side as far as I can tell. I fail to see how any of these two facts are material for our issue though?

> With Reno, Cubic etc, the sawtooth amplitude depends on the RTT of the path.

	[SM] In the limit that will probably also hold true for TCP Prague, any control loop will work snappier with a shorter delay...

> So "paths" might be between a customer in a large urban conurbation and a CDN in the same or a nearby conurbation, or a path might be half way round the globe, but the common case these days is an urban customer and a CDN.
> 
> One can argue whether the number is 10ms, 15ms, 20ms or whatever,

	[SM] Let me remind you the number I brought into the discussion as neither of these, but exactly 5ms, based on some math actually.

> but there is an operating point below which more and more traffic badly underutilizes the link.

	[SM] So do I understand correctly, that you claim that for the targeted 100ms average RTT PIE will underutilize the link if the ref_delay is lower than the default 15ms, o specifically you claim that a ref_delay of 5ms will lead to unacceptable under-utilization? Again, I would love to see a real peer-reviewed paper demonstrating that.
	So my issue with that hand-waving is that Codel's 5ms for a 100ms RTT path is based on a sound theoretical foundation, and has proven itself to work well in the real world. So I would like to invite you to a) test to set DQCAQM's "classic" pie'e ref_delay to 5ms and show how that significantly underutilizes the link and how this does not address DQCAQM's failure mode. As a bonus, please explain, why you consider Codel's target rationale to be wrong. 

> Whatever, this is not a theoretical question, it is a commercial question for ISPs when setting the target parameter of their AQM. You have to look at what ISPs do, not what you think they should do.

	[SM] That argument about what ISPs do versus what we think they should do seems misplaced in a discussion about RFCs that are intended to tell ISPs how they should do something, so can we just drop that argument, please? It is arguments like this, and the 17 year old car example from last year that make me consider the possibility that you do not take my arguments/objections seriously...

> The DualQ Coupled AQM merely gives out signals. It doesn't schedule throughput of anything in normal circumstances. The throughput that a flow takes depends on its response to those signals. 

	[SM] Well, the only reason for DQCAQM's existence, if I understand your drafts correctly, is that DCTCP (1/p response type) and other TCPs (1/sqrt(p) response type) do not co-exist peacefully on the same link, so they need to be isolated from each other. What I am advocating for is to make sure that the selected isolation mechanism actually isolates the two classes robustly and reliably. If just naively and optimistically sending signals does not achieve that goal, by all means implement something that does. 

> The point of the CC requirements (including the RTT independence requirement) in draft-ietf-ecn-l4s-id is that any CC is meant to comply if it wants to apply the ECT(1) codepoint.

	[SM] But you also strongly argued against an L4S AQM actually checking whether the traversing flows in or destined for the low latency queue actually fulfill these/any requirements; the above sounds like you agree that behavioral monitoring is required? But then you are essentially basically back to, I dare say the dirty word, a flow queueing system (as you need to address L4S-LL  queue eligibility on a flow-by-flow basis). I am not saying that I would completely disagree with that, but I believe that this is not actually your position, but just a logical consequence of the your sentence above... 

> 
> The point of TCP Prague is to be a reference implementation that satisfies those requirements (that statement is not meant to discourage others from producing better reference implementations). Then people implementing other transport protocols can either a) copy the precise details, b) copy the general idea, or c) find other ways to satisfy the requirements.
> 
> When the requirements were written, it was known to be hard to precisely satisfy all of them at once.

	[SM] And that is a STRONG argument to NOT make your ISOLATOR depend on all L4S flows playing nicely according to the requirements (think "trust, but verify"). You are beginning to make my points for me...

> That was also the message from the paper "Resolving Tensions between Congestion Control Scaling Requirements" and the presentations of it in ICCRG at the time (also linked via the link I've just given, and all these are also linked via the L4S landing page). Some of the requirements are already written with some wriggle room (e.g. the case in point uses the weasel-words highlighted "MUST reduce or eliminate RTT bias over as wide a range of RTTs as possible").

	[SM] I would be considerably less critical if you could demonstrate a working less RTT-dependent transport (say TCP Prague) that by virtue of that reduced RTT-dependence results in more equitable sharing between the LL and the normal L4S queues under short path RTT conditions; but even then you are left with having to either police (here, meant as monitor behavior and take actions to remedy violations.) that behavior or implement equivalent RTT-independence in any other transport you want admit to the LL queue. 
	But if understand "5.4.1.1.  Inclusion of Additional Traffic with L4S" in https://tools.ietf.org/html/draft-ietf-tsvwg-ecn-l4s-id-08#page-13 correctly, you plan to admit non TCP Prague traffic to the LL-queue, so the "any other transport" part really is important, or rather since you want to admit completely unresponsive traffic (as long as each individual flow roughly paces and does not exceed the path by itself) your whole rationale why this is safe disintegrates, IMHO. The unresponsive traffic will not ceed to classic congestion signals reaching the LL-queue by coupling and your class-isolator again goes belly-up, even if you fixed TCPp Prague and all other responsive transports.
	Also, "written with some wriggle room" and "weasel-words" does not fill me with the warm and fuzzy feeling that real engineering does. To me the solution is self-evident, fix DQCAQM to not having to relay on the yet unproven reduced RTT-dependence to equitably share between traffic classes, and most of my objection here just evaporate.

> The implementation and testing exercises we're going through will allow us to be able to suggest to the community how best to soften (or harden) any requirement that is unnecessarily ambitious (or permissive).

	[SM] I will advocate to the community that we simply should engineer the isolator such that this requirement gets reduced to one about the RTT-fairness for flows in the L4S LL-queue. I also happily admit, that if increased RTT-dependence is achieved by TCP Prague that I will advocate/cheerlead for the adoption of the underlaying techniques into other congestion controllers, but show me data first, please.

> The problem is not just between L & C flows. it's also between long-RTT L and short-RTT L flows.

	[SM] We are dealing with clearly two separate but related issues here, let's deal with one issue at a time:
a) equitable sharing between traffic classes in the L4S traffic dichotomy, it becomes increasingly clear that banking on increasing RTT dependence here is a somewhat insane idea, given that techniques exist that allow equitable sharing between traffic classes with "maximally" RTT-dependent inter-flow un-fairness. Let's not re-invent the wheel but use something known good and move on.
 
b) More equitable bandwidth sharing between  long-RTT and short-RTT flows (note that I ignore the L- or C-ness here, as less RTT-dependence obviously seems like a good thing for all traffic). That is IMHO a worthy goal worth exploring even outside the narrow scope of trying working-around undesired side-effetcs of DQCAQM's design choices. 

As I stated before, I am not against reducing RTT dependence at all, I am against making RTT-independence of all L4S flows a pre-condition for robust, reliable, and equitable link sharing between the two traffic classes you advocate to sort everything into.

> And the problem appears when you cut out queuing delay with any shared-queue AQM, not just the DualQ Coupled AQM.

	[SM] I do not disagree, but that is besides the point, as the L/C queue isolation is not part of what an AQM does anyways, so I think trying to judge its merits as if it was a "simple" AQM is not too helpful or interesting.

> I don't know how to persuade someone about where it's best to apply a solution, if that person is only prepared to countenance applying solutions in the network, even though the problem stems from end system behaviour. 

	[SM] Simple, either show real data that my objections are unfounded or b) change your design to make my objections unfounded. What seemingly does not work well is trying to simply argue my objections away. The crux here is that I am a perennial pessimist and assume that the L4S experiment will be going out in flames, and I want to limit the side-effects and fall-out pro-actively...

> Per class throughput has very little to do with per-flow throughput when users can arbitrarily vary the number of flows per class.

	[SM] Note how I did explicitly not argue about flows but classes (so L- and C-traffic in your nomenclature?). In that argument am accepting your premise of a two class system and expect to see robust, reliable, and equitable sharing between the two classes. In that context it is both immaterial, that 5-tupel separation can be gamed by opening multiple flows (so maybe just use 2-tupel flow identification by SRC and DST addresses at least on ISP controlled links*) and that L4S as currently designed will also give more bandwidth to a flock of aggressive flows than to a single well behaved flow (heck current L4S will simply give all bandwidth to a sufficiently aggressive and persistent flow, so need to even open multiple flows).
	I have read enough of your papers by now to understand and recognize your position regarding fq solutions, and while I am confident that you are misguided and overly dogmatic, I am not arguing for turning DQCAQM's into a full fq AQM, but I do argua that it should be made a normal state of the art two classes isolator. You could basically do this by using using your proposed machinery to sort packets into your two queues and then just use a DRR scheduler to service both queues, if you will give the LL-queue a lower quantum and there you go, a robust and reliable solution that needs none of the coupling abstraction, just each queue can use its own sojourn time to select its own marking probability independently.

Best Regards
	Sebastian

*) Already proposed in https://www.ietf.org/rfc/rfc2914.txt