<font face="arial" size="3"><p style="margin:0;padding:0;font-family: arial; font-size: 12pt; overflow-wrap: break-word;">Two points:</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 12pt; overflow-wrap: break-word;"> </p>
<p style="margin:0;padding:0;font-family: arial; font-size: 12pt; overflow-wrap: break-word;">- Jerry Saltzer and I were the primary authors of the End-to-end argument paper, and the motivation was based *my* work on the original TCP and IP protocols. Dave Clark got involved significantly later than all those decisions, which were basically complete when he got involved. (Jerry was my thesis supervisor, I was his student, and I operated largely independently, taking input from various others at MIT). I mention this because Dave understands the end-to-end arguments, but he understands (as we all did) that it was a design *principle* and not a perfectly strict rule. That said, it's a rule that has a strong foundational argument from modularity and evolvability in a context where the system has to work on a wide range of infrastructures (not all knowable in advance) and support a wide range of usage/application-areas (not all knowable in advance). Treating the paper as if it were "DDC" declaring a law is just wrong. He wasn't Moses and it is not written on tablets. Dave did have some "power" in his role of trying to achieve interoperability across diverse implementations. But his focus was primarily on interoperability, not other things. So ideas in the IP protocol like "TOS" which were largely placeholders for not-completely-worked-out concepts deferred to the future were left till later.</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 12pt; overflow-wrap: break-word;"> </p>
<p style="margin:0;padding:0;font-family: arial; font-size: 12pt; overflow-wrap: break-word;">- It is clear (at least to me) that from the point of view of the source of an IP datagram, the "handling" of that datagram within the network of networks can vary, and so that is why there is a TOS field - to specify an interoperable, meaningfully described per-packet indicator of differential handling. In regards to the end-to-end argument, that handling choice is a network function, *to the extent that it can completely be implemented in the network itself*.</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 12pt; overflow-wrap: break-word;">Congestion management, however, is not achievable entirely and only within the network. That's completely obvious: congestion happens when the source-destination flows exceed the capacity of the network of networks to satisfy all demands.</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 12pt; overflow-wrap: break-word;">The network can only implement *certain* general kinds of mechanisms that may be used by the endpoints to resolve congestion:</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 12pt; overflow-wrap: break-word;">1) admission controls. These are implemented at the interface between the source entity and the network of networks. They tend to be impractical in the Internet context, because there is, by a fundamental and irreversible design choice made by Cerf and Kahn (and the rest of us), no central controller of the entire network of networks. This is to make evolvability and scalability work. 5G (not an Internet system) implies a central controller, as does SNA, LTE, and many other networks. The Internet is an overlay on top of such networks.</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 12pt; overflow-wrap: break-word;">2) signalling congestion to the endpoints, which will respond by slowing their transmission rate (or explicitly re-routing transmission, or compressing their content) through the network to match capacity. This response is done *above* the IP layer, and has proven very practical. The function in the network is reduced to "congestion signalling", in a universally understandable meaningful mechanism: packet drops, ECN, packet-pair separation in arrival time, ...  This limited function is essential within the network, because it is the state of the path(s) that is needed to implement the full function at the end points. So congestion signalling, like ECN, is implemented according to the end-to-end argument by carefully defining the network function to be the minimum necessary mechanism so that endpoints can control their rates.</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 12pt; overflow-wrap: break-word;">3) automatic selection of routes for flows. It's perfectly fine to select different routes based on information in the IP header (the part that is intended to be read and understood by the network of networks). Now this is currently *rarely* done, due to the complexity of tracking more detailed routing information at the router level. But we had expected that eventually the Internet would be so well connected that there would be diverse routes with diverse capabilities. For example, the "Interplanetary Internet" works with datagrams, that can be implemented with IP, but not using TCP, which requires very low end-to-end latency. Thus, one would expect that TCP would not want any packets transferred over a path via Mars, or for that matter a geosynchronous satellite, even if the throughput would be higher.</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 12pt; overflow-wrap: break-word;">So one can imagine that eventually a "TOS" might say - send this packet preferably along a path that has at most 200 ms. RTT, *even if that leads to congestion signalling*, while another TOS might say "send this path over the most "capacious" set of paths, ignoring RTT entirely. (these are just for illustration, but obviously something like this woujld work).</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 12pt; overflow-wrap: break-word;">Note that TOS is really aimed at *route selection* preferences, and not queueing management of individual routers.</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 12pt; overflow-wrap: break-word;"> </p>
<p style="margin:0;padding:0;font-family: arial; font-size: 12pt; overflow-wrap: break-word;">Queueing management to share a single queue on a path for multiple priorities of traffic is not very compatible with "end-to-end arguments". There are any number of reasons why this doesn't work well. I can go into them. Mainly these reasons are why "diffserv" has never been adopted - it's NOT interoperable because the diversity of traffic between endpoints is hard to specify in a way that translates into the network mechanisms. Of course any queue can be managed in some algorithmic way with parameters, but the endpoints that want to specify an end-to-end goal don't have a way to understand the impact of those parameters on a specific queue that is currently congested.</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 12pt; overflow-wrap: break-word;"> </p>
<p style="margin:0;padding:0;font-family: arial; font-size: 12pt; overflow-wrap: break-word;">Instead, the history of the Internet (and for that matter *all* networks, even Bell's voice systems) has focused on minimizing queueing delay to near zero throughout the network by whatever means it has at the endpoints or in the design. This is why we have AIMD's MD as a response to detection of congestion.</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 12pt; overflow-wrap: break-word;"> </p>
<p style="margin:0;padding:0;font-family: arial; font-size: 12pt; overflow-wrap: break-word;">Pragmatic networks (those that operate in the real world) do not choose to operate with shared links in a saturated state. That's known in the phone business as the Mother's Day problem. You want to have enough capacity for the rare near-overload to never result in congestion.  Which means that the normal state of the network is very lightly loaded indeed, in order to minimize RTT. Consequently, focusing on somehow trying to optimize the utilization of the network to 100% is just a purely academic exercise. Since "priority" at the packet level within a queue only improves that case, it's just a focus of (bad) Ph.D. theses. (Good Ph.D. theses focus on actual real problems like getting the queues down to 1 packet or less by signalling the endpoints with information that allows them to do their job).</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 12pt; overflow-wrap: break-word;"> </p>
<p style="margin:0;padding:0;font-family: arial; font-size: 12pt; overflow-wrap: break-word;">So, in considering what goes in the IP layer, both its header and the mechanics of the network of networks, it is those things that actually have implementable meaning in the network of networks when processing the IP datagram. The rest is "content" because the network of networks doesn't need to see it.</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 12pt; overflow-wrap: break-word;"> </p>
<p style="margin:0;padding:0;font-family: arial; font-size: 12pt; overflow-wrap: break-word;">Thus, don't put anything in the IP header that belongs in the "content" part, just being a signal between end points. Some information used in the network of networks is also logically carried between endpoints.</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 12pt; overflow-wrap: break-word;"> </p>
<p style="margin:0;padding:0;font-family: arial; font-size: 12pt; overflow-wrap: break-word;"> </p>
<p style="margin:0;padding:0;font-family: arial; font-size: 12pt; overflow-wrap: break-word;">On Friday, June 21, 2019 4:37pm, "Brian E Carpenter" <brian.e.carpenter@gmail.com> said:<br /><br /></p>
<div id="SafeStyles1561229193">
<p style="margin:0;padding:0;font-family: arial; font-size: 12pt; overflow-wrap: break-word;">> Below...<br />> On 21-Jun-19 21:33, Luca Muscariello wrote:<br />> > + David Reed, as I'm not sure he's on the ecn-sane list.<br />> ><br />> > To me, it seems like a very religious position against per-flow<br />> queueing. <br />> > BTW, I fail to see how this would violate (in a "profound" way ) the e2e<br />> principle.<br />> ><br />> > When I read it (the e2e principle)<br />> ><br />> > Saltzer, J. H., D. P. Reed, and D. D. Clark (1981) "End-to-End Arguments in<br />> System Design". <br />> > In: Proceedings of the Second International Conference on Distributed<br />> Computing Systems. Paris, France. <br />> > April 8–10, 1981. IEEE Computer Society, pp. 509-512.<br />> > (available on line for free).<br />> ><br />> > It seems very much like the application of the Occam's razor to function<br />> placement in communication networks back in the 80s.<br />> > I see no conflict between what is written in that paper and per-flow queueing<br />> today, even after almost 40 years.<br />> ><br />> > If that was the case, then all service differentiation techniques would<br />> violate the e2e principle in a "profound" way too,<br />> > and dualQ too. A policer? A shaper? A priority queue?<br />> ><br />> > Luca<br />> <br />> Quoting RFC2638 (the "two-bit" RFC):<br />> <br />> >>> Both these<br />> >>> proposals seek to define a single common mechanism that is used<br />> by<br />> >>> interior network routers, pushing most of the complexity and state<br />> of<br />> >>> differentiated services to the network edges.<br />> <br />> I can't help thinking that if DDC had felt this was against the E2E principle,<br />> he would have kicked up a fuss when it was written.<br />> <br />> Bob's right, however, that there might be a tussle here. If end-points are<br />> attempting to pace their packets to suit their own needs, and the network is<br />> policing packets to support both service differentiation and fairness,<br />> these may well be competing rather than collaborating behaviours. And there<br />> probably isn't anything we can do about it by twiddling with algorithms.<br />> <br />> Brian<br />> <br />> <br />> <br />> <br />> <br />> <br />> <br />> ><br />> ><br />> ><br />> ><br />> ><br />> ><br />> >  <br />> ><br />> > On Fri, Jun 21, 2019 at 9:00 AM Sebastian Moeller <moeller0@gmx.de<br />> <mailto:moeller0@gmx.de>> wrote:<br />> ><br />> ><br />> ><br />> > > On Jun 19, 2019, at 16:12, Bob Briscoe <ietf@bobbriscoe.net<br />> <mailto:ietf@bobbriscoe.net>> wrote:<br />> > ><br />> > > Jake, all,<br />> > ><br />> > > You may not be aware of my long history of concern about how<br />> per-flow scheduling within endpoints and networks will limit the Internet in<br />> future. I find per-flow scheduling a violation of the e2e principle in such a<br />> profound way - the dynamic choice of the spacing between packets - that most<br />> people don't even associate it with the e2e principle.<br />> ><br />> > Maybe because it is not a violation of the e2e principle at all? My point<br />> is that with shared resources between the endpoints, the endpoints simply should<br />> have no expectancy that their choice of spacing between packets will be conserved.<br />> For the simple reason that it seems generally impossible to guarantee that<br />> inter-packet spacing is conserved (think "cross-traffic" at the bottleneck hop<br />> along the path and general bunching up of packets in the queue of a fast to slow<br />> transition*). I also would claim that the way L4S works (if it works) is to<br />> synchronize all active flows at the bottleneck which in tirn means each sender has<br />> only a very small timewindow in which to transmit a packet for it to hits its<br />> "slot" in the bottleneck L4S scheduler, otherwise, L4S's low queueing delay<br />> guarantees will not work. In other words the senders have basically no say in the<br />> "spacing between packets", I fail to see how L4S improves upon FQ in that regard.<br />> ><br />> ><br />> >  IMHO having per-flow fairness as the defaults seems quite<br />> reasonable, endpoints can still throttle flows to their liking. Now per-flow<br />> fairness still can be "abused", so by itself it might not be sufficient, but<br />> neither is L4S as it has at best stochastic guarantees, as a single queue AQM<br />> (let's ignore the RFC3168 part of the AQM) there is the probability to send a<br />> throtteling signal to a low bandwidth flow (fair enough, it is only a mild<br />> throtteling signal, but still).<br />> > But enough about my opinion, what is the ideal fairness measure in your<br />> mind, and what is realistically achievable over the internet?<br />> ><br />> ><br />> > Best Regards<br />> >         Sebastian<br />> ><br />> ><br />> ><br />> ><br />> > ><br />> > > I detected that you were talking about FQ in a way that might have<br />> assumed my concern with it was just about implementation complexity. If you (or<br />> anyone watching) is not aware of the architectural concerns with per-flow<br />> scheduling, I can enumerate them.<br />> > ><br />> > > I originally started working on what became L4S to prove that it was<br />> possible to separate out reducing queuing delay from throughput scheduling. When<br />> Koen and I started working together on this, we discovered we had identical<br />> concerns on this.<br />> > ><br />> > ><br />> > ><br />> > > Bob<br />> > ><br />> > ><br />> > > --<br />> > > ________________________________________________________________<br />> > > Bob Briscoe               <br />>                http://bobbriscoe.net/<br />> > ><br />> > > _______________________________________________<br />> > > Ecn-sane mailing list<br />> > > Ecn-sane@lists.bufferbloat.net<br />> <mailto:Ecn-sane@lists.bufferbloat.net><br />> > > https://lists.bufferbloat.net/listinfo/ecn-sane<br />> ><br />> > _______________________________________________<br />> > Ecn-sane mailing list<br />> > Ecn-sane@lists.bufferbloat.net<br />> <mailto:Ecn-sane@lists.bufferbloat.net><br />> > https://lists.bufferbloat.net/listinfo/ecn-sane<br />> ><br />> <br />> </p>
</div></font>