<div dir="ltr">David's last point reminds me of a time-sharing system I once worked on. We adjusted the scheduling so tasks that needed lower latency got priority and we deliberately increased latency for tasks that users assumed would take a while :-)))<div><br></div><div>v</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Apr 19, 2022 at 4:40 PM David P. Reed <<a href="mailto:dpreed@deepplum.com">dpreed@deepplum.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"><font face="arial" size="2"><p style="margin:0px;padding:0px;font-family:arial;font-size:10pt">Sebastian - all your thoughts here seem reasonable.</p>
<p style="margin:0px;padding:0px;font-family:arial;font-size:10pt"> </p>
<p style="margin:0px;padding:0px;font-family:arial;font-size:10pt">I would point out only two things:</p>
<p style="margin:0px;padding:0px;font-family:arial;font-size:10pt"> </p>
<p style="margin:0px;padding:0px;font-family:arial;font-size:10pt">1) 100 ms. is a magic number for human perception. It's basically the order of magnitude of humans' ability to respond to unpredictable events outside the human. That's why it is magic. Now humans can actually perceive intervals much, much shorter (depending on how we pay attention), but usually it is by comparing two events' time ordering. We can even synchronize to external, predictable events with finer resolution (as in Jazz improv or just good chamber music playing).  A century of careful scientific research supports this, niot just one experiment. Which is why one should take it seriously as a useful target. (the fact that one can achieve it across the planet with digital signalling networks makes it a desirable goal for anything interactive between a human and any entity, be it computer or human). If one can do better, of course, that's great. I like that from my home computer I can get lots of places in under 8 msec (15 msec RTT).</p>
<p style="margin:0px;padding:0px;font-family:arial;font-size:10pt"> </p>
<p style="margin:0px;padding:0px;font-family:arial;font-size:10pt">2) given that a particular heavily utilized link might be shared for paths where the light-speed-in-fiber round trip for active flows varies by an order of magnitude, why does one try to make fair RTT (as opposed to all other possible metrics on each flow) among flows. It doesn't make any sense to me why. Going back to human interaction times, it makes sense to me that you might want to be unfair so that most flows get faster than 200 ms. RTT, for example, penalizing those who are really close to each other anyway.</p>
<p style="margin:0px;padding:0px;font-family:arial;font-size:10pt">If the RTT is already low because congestion has been controlled, you can't make it lower. Basically, the ideal queue state is < 1 packet in the bottleneck outbound queues, no matter what the RTT through that queue is.</p>
<p style="margin:0px;padding:0px;font-family:arial;font-size:10pt"> </p>
<p style="margin:0px;padding:0px;font-family:arial;font-size:10pt"> </p>
<p style="margin:0px;padding:0px;font-family:arial;font-size:10pt"> </p>
<p style="margin:0px;padding:0px;font-family:arial;font-size:10pt">On Thursday, April 14, 2022 5:25pm, "Sebastian Moeller" <<a href="mailto:moeller0@gmx.de" target="_blank">moeller0@gmx.de</a>> said:<br><br></p>
<div id="gmail-m_578555020591181826SafeStyles1650399602">
<p style="margin:0px;padding:0px;font-family:arial;font-size:10pt">> Just indulge me here for a few crazy ideas ;)<br>> <br>> > On Apr 14, 2022, at 18:54, David P. Reed <<a href="mailto:dpreed@deepplum.com" target="_blank">dpreed@deepplum.com</a>> wrote:<br>> ><br>> > Am I to assume, then, that routers need not pay any attention to RTT to<br>> achieve RTT-fairness?<br>> <br>> Part of RTT-bias seems caused by the simple fact that tight control loops work<br>> better than sloppy ones ;)<br>> <br>> There seem to be three ways to try to remedy that to some degree:<br>> 1) the daft one:<br>> define a reference RTT (larger than typically encountered) and have all TCPs<br>> respond as if encountering that delay -> until the path RTT exceeds that<br>> reference TCP things should be reasonably fair<br>> <br>> 2) the flows communicate with the bottleneck honestly:<br>> if flows would communicate their RTT to the bottleneck the bottleneck could<br>> partition its resources such that signaling (mark/drop) and puffer size is<br>> bespoke per-flow. In theory that can work, but relies on either the RTT<br>> information being non-gameably linked to the protocol's operation* or everybody<br>> being fully veridical and honest<br>> *) think a protocol that will only work if the best estimate of the RTT is<br>> communicated between the two sides continuously<br>> <br>> 3) the router being verbose:<br>> If routers communicate the fill-state of their queue (global or per-flow does not<br>> matter all that much) flows in theory can do a better job at not putting way too<br>> much data in flight remedying the cost of drops/marks that affects high RTT flows<br>> more than the shorter ones. (The router has little incentive to lie here, if it<br>> wanted to punish a flow it would be easier to simply drop its packets and be done<br>> with).<br>> <br>> <br>> IMHO 3, while theoretically the least effective of the three is the only one that<br>> has a reasonable chance of being employed... or rather is already deployed in the<br>> form of ECN (with mild effects).<br>> <br>> > How does a server or client (at the endpoint) adjust RTT so that it is fair?<br>> <br>> See 1) above, but who in their right mind would actually implement something like<br>> that (TCP Prague did that, but IMHO never in earnest but just to "address" the<br>> L4S bullet point RTT-bias reduction).<br>> <br>> > Now RTT, technically, is just the sum of the instantaneous queue lengths in<br>> bytes along the path and the reverse path, plus a fixed wire-level delay. And<br>> routers along any path do not have correlated queue sizes.<br>> ><br>> > It seems to me that RTT adjustment requires collective real-time cooperation<br>> among all-or-most future users of that path. The path is partially shared by many<br>> servers and many users, none of whom directly speak to each other.<br>> ><br>> > And routers have very limited memory compared to their throughput-RTdelay<br>> product. So calculating the RTT using spin bits and UIDs for packets seems a bit<br>> much to expect all routers to do.<br>> <br>> If posed like this, I guess the better question is, what can/should routers be<br>> expected to do here: either equitably share their queues or share queue<br>> inequitably such that throughput is equitable. From a pure router point of the<br>> view the first seems "fairest", but as fq_codel and cake show, within reason<br>> equitable capacity sharing is possible (so not perfectly and not for every<br>> possible RTT spread).<br>> <br>> ><br>> > So, what process measures the cross-interactions among all the users of all<br>> the paths, and what control-loop (presumably stable and TCP-compatible) actually<br>> converges to RTT fairness IRL.<br>> <br>> Theoretically nothing, in reality on a home link FQ+competent AQM goes a long way<br>> in that direction.<br>> <br>> <br>> ><br>> > Today, the basis of congestion control in the Internet is that each router is<br>> a controller of all endpoint flows that share a link, and each router is free to<br>> do whatever it takes to reduce its queue length to near zero as an average on all<br>> timescales larger than about 1/10 of a second (a magic number that is directly<br>> derived from measured human brain time resolution).<br>> <br>> The typical applies, be suspicious of too round numbers.... 100ms is in no way<br>> magic and also not "correct" it is however a decent description of reaction times<br>> in a number of perceptul tasks that can be mis-interpreted as showing things like<br>> the brain runs at 10Hz or similar...<br>> <br>> <br>> ><br>> > So, for any two machines separated by less than 1/10 of a light-second in<br>> distance, the total queueing delay has to stabilize in about 1/10 of a second.<br>> (I'm using a light-second in a fiber medium, not free-space, as the speed of light<br>> in fiber is a lot slower than the speed of light on microwaves, as Wall Street has<br>> recently started recoginizing and investing in).<br>> ><br>> > I don't see how RTT-fairness can be achieved by some set of bits in the IP<br>> header. You can't shorten RTT below about 2/10 of a second in that desired system<br>> state. You can only "lengthen" RTT by delaying packets in source or endpoint<br>> buffers, because it's unreasonable to manage all the routers.<br>> ><br>> > And the endpoints that share a path can't talk to each other and reach a<br>> decision in on the order of 2/10 of a second.<br>> ><br>> > So at the very highest level, what is RTT-fairness's objective function<br>> optimizing, and how can it work?<br>> ><br>> > Can it be done without any change to routers?<br>> <br>> Well the goal here seems to undo the RTT-dependence of throughput so a router can<br>> equalize per flow throughput and thereby (from its own vantage point) enforce RTT<br>> independence, within the amount of memory available. And that already works today<br>> for all identifiable flows, but apparently at a computational cost that larger<br>> routers do not want to pay. But you knew all that<br>> <br>> <br>> ><br>> ><br>> ><br>> ><br>> > On Tuesday, April 12, 2022 3:07pm, "Michael Welzl" <<a href="mailto:michawe@ifi.uio.no" target="_blank">michawe@ifi.uio.no</a>><br>> said:<br>> ><br>> ><br>> ><br>> > On Apr 12, 2022, at 8:52 PM, Sebastian Moeller <<a href="mailto:moeller0@gmx.de" target="_blank">moeller0@gmx.de</a>><br>> wrote:<br>> > Question: is QUIC actually using the spin bit as an essential part of the<br>> protocol?<br>> > The spec says it’s optional: <br>> <a href="https://www.rfc-editor.org/rfc/rfc9000.html#name-latency-spin-bit" target="_blank">https://www.rfc-editor.org/rfc/rfc9000.html#name-latency-spin-bit</a><br>> > Otherwise endpoints might just game this if faking their RTT at a router<br>> yields an advantage...<br>> > This was certainly discussed in the QUIC WG. Probably perceived as an unclear<br>> incentive, but I didn’t really follow this.<br>> > Cheers,<br>> > Michael<br>> ><br>> > This is why pping's use of tcp timestamps is elegant, little incentive for<br>> the endpoints to fudge....<br>> ><br>> > Regards<br>> > Sebastian<br>> ><br>> ><br>> > On 12 April 2022 18:00:15 CEST, Michael Welzl <<a href="mailto:michawe@ifi.uio.no" target="_blank">michawe@ifi.uio.no</a>><br>> wrote:<br>> > Hi,<br>> > Who or what are you objecting against? At least nothing that I described<br>> does what you suggest.<br>> > BTW, just as a side point, for QUIC, routers can know the RTT today - using<br>> the spin bit, which was designed for that specific purpose.<br>> > Cheers,<br>> > Michael<br>> ><br>> ><br>> > On Apr 12, 2022, at 5:51 PM, David P. Reed <<a href="mailto:dpreed@deepplum.com" target="_blank">dpreed@deepplum.com</a>><br>> wrote:<br>> > I strongly object to congestion control *in the network* attempting to<br>> measure RTT (which is an end-to-end comparative metric). Unless the current RTT is<br>> passed in each packet a router cannot enforce fairness. Period.<br>> ><br>> > Today, by packet drops and fair marking, information is passed to the sending<br>> nodes (eventually) about congestion. But the router can't know RTT today.<br>> ><br>> > The result of *requiring* RTT fairness would be to put the random bottleneck<br>> router (chosen because it is the slowest forwarder on a contended path) become the<br>> endpoint controller.<br>> ><br>> > That's the opposite of an "end-to-end resource sharing protocol".<br>> ><br>> > Now, I'm not saying it is impossible - what I'm saying it is asking all<br>> endpoints to register with an "Internet-wide" RTT real-time tracking and control<br>> service.<br>> ><br>> > This would be the technical equivalent of an ITU central control point.<br>> ><br>> > So, either someone will invent something I cannot imagine (a distributed,<br>> rapid-convergence algortithm that rellects to *every potential user* of a shared<br>> router along the current path the RTT's of ALL other users (and potential users).<br>> ><br>> > IMHO, the wish for RTT fairness is like saying that the entire solar system's<br>> gravitational pull should be equalized so that all planets and asteroids have fair<br>> access to 1G gravity.<br>> ><br>> ><br>> > On Friday, April 8, 2022 2:03pm, "Michael Welzl" <<a href="mailto:michawe@ifi.uio.no" target="_blank">michawe@ifi.uio.no</a>><br>> said:<br>> ><br>> > Hi,<br>> > FWIW, we have done some analysis of fairness and convergence of DCTCP in:<br>> > Peyman Teymoori, David Hayes, Michael Welzl, Stein Gjessing: "Estimating an<br>> Additive Path Cost with Explicit Congestion Notification", IEEE Transactions on<br>> Control of Network Systems, 8(2), pp. 859-871, June 2021. DOI<br>> 10.1109/TCNS.2021.3053179<br>> > Technical report (longer version):<br>> ><br>> <a href="https://folk.universitetetioslo.no/michawe/research/publications/NUM-ECN_report_2019.pdf" target="_blank">https://folk.universitetetioslo.no/michawe/research/publications/NUM-ECN_report_2019.pdf</a><br>> > and there’s also some in this paper, which first introduced our LGC<br>> mechanism:<br>> > <a href="https://ieeexplore.ieee.org/document/7796757" target="_blank">https://ieeexplore.ieee.org/document/7796757</a><br>> > See the technical report on page 9, section D: a simple trick can improve<br>> DCTCP’s fairness (if that’s really the mechanism to stay with…<br>> I’m getting quite happy with the results we get with our LGC scheme :-) <br>> )<br>> ><br>> > Cheers,<br>> > Michael<br>> ><br>> > On Apr 8, 2022, at 6:33 PM, Dave Taht <<a href="mailto:dave.taht@gmail.com" target="_blank">dave.taht@gmail.com</a>> wrote:<br>> > I have managed to drop most of my state regarding the state of various<br>> > dctcp-like solutions. At one level it's good to have not been keeping<br>> > up, washing my brain clean, as it were. For some reason or another I<br>> > went back to the original paper last week, and have been pounding<br>> > through this one again:<br>> ><br>> > Analysis of DCTCP: Stability, Convergence, and Fairness<br>> ><br>> > "Instead, we propose subtracting α/2 from the window size for each<br>> marked ACK,<br>> > resulting in the following simple window update equation:<br>> ><br>> > One result of which I was most proud recently was of demonstrating<br>> > perfect rtt fairness in a range of 20ms to 260ms with fq_codel<br>> > <a href="https://forum.mikrotik.com/viewtopic.php?t=179307" target="_blank">https://forum.mikrotik.com/viewtopic.php?t=179307</a> )- and I'm pretty<br>> > interested in 2-260ms, but haven't got around to it.<br>> ><br>> > Now, one early result from the sce vs l4s testing I recall was severe<br>> > latecomer convergence problems - something like 40s to come into flow<br>> > balance - but I can't remember what presentation, paper, or rtt that<br>> > was from. ?<br>> ><br>> > Another one has been various claims towards some level of rtt<br>> > unfairness being ok, but not the actual ratio, nor (going up to the<br>> > paper's proposal above) whether that method had been tried.<br>> ><br>> > My opinion has long been that any form of marking should look more<br>> > closely at the observed RTT than any fixed rate reduction method, and<br>> > compensate the paced rate to suit. But that's presently just reduced<br>> > to an opinion, not having kept up with progress on prague, dctcp-sce,<br>> > or bbrv2. As one example of ignorance, are 2 packets still paced back<br>> > to back? DRR++ + early marking seems to lead to one packet being<br>> > consistently unmarked and the other marked.<br>> ><br>> > --<br>> > I tried to build a better future, a few times:<br>> > <a href="https://wayforward.archive.org/?site=https%3A%2F%2Fwww.icei.org" target="_blank">https://wayforward.archive.org/?site=https%3A%2F%2Fwww.icei.org</a><br>> ><br>> > Dave Täht CEO, TekLibre, LLC<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" target="_blank">https://lists.bufferbloat.net/listinfo/ecn-sane</a><br>> ><br>> > --<br>> > Sent from my Android device with K-9 Mail. Please excuse my brevity.<br>> ><br>> <br>> </p>
</div></font>_______________________________________________<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"><div dir="ltr"><div>Please send any postal/overnight deliveries to:</div><div>Vint Cerf</div><div>1435 Woodhurst Blvd </div><div>McLean, VA 22102</div><div>703-448-0965</div><div><br></div><div>until further notice</div><div><br></div><div><br></div><div><br></div></div></div>