<font face="arial" size="3"><p style="margin:0;padding:0;font-family: arial; font-size: 12pt; overflow-wrap: break-word;">Pardon, but cwnd should NEVER be larger than the number of forwarding hops between source and destination.</p>
<p style="margin:0;padding:0;font-family: arial; font-size: 12pt; overflow-wrap: break-word;">Kleinrock and students recently proved that the optimum cwnd for both throughput and minimized latency is achieved when there is one packet or less in each outbound queue from source to destination (including cross traffic - meaning other flows sharing the same outbound queue.</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;">Now the idea that cwnd should be in the 1000's of packets is totally absurd, unless the source or destination buffers (at the end hosts) are counted, and that would be needed if the TCP source and destination application might, for example, be "swapped out" and thus unable to actually send and acknowledge packets at the instant of receiving an ACK.</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;">If cwnd is sort of compensating for "swapping out" the TCP endpoint processes so that they take milliseconds to provide or acknowledge receipt of a packet, then that's fine (if you want throughput and terrible latency), but that's not the congestion window. That's just cramming the operating system's scheduling delay into the TCP stack.</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;">TCP is not supposed to be designed around slow OS process schedulers. Those buffers should never be allowed to build up in the transport network, where they kill latency for everyone. That's just terrible design, conflating OS scheduling with congestion management.</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 Thursday, May 16, 2019 6:01pm, "Jonathan Foulkes" <jf@jonathanfoulkes.com> said:<br /><br /></p>
<div id="SafeStyles1558218380">
<p style="margin:0;padding:0;font-family: arial; font-size: 12pt; overflow-wrap: break-word;">> Thanks for sharing Dave.<br />> <br />> A good paper, but there are few gaps worthy of mentioning on this list:<br />> <br />> Testing when there is an AQM present means the test must adapt to the challenge of<br />> smaller cwnd existing for any one stream, therefore it will take many more streams<br />> to saturate a line with cwnd = 30 than if the cwnd is allowed to grow to<br />> >1,000<br />> In general, the impact of cwnd relative to saturation and impact on delay was not<br />> visited, and yet it’s critical. One of the reasons for spiky delays on high<br />> speed lines is the ginormous cwnds hogging the line with their 800ms+ RTT’s<br />> <br />> Asymmetry of provisioned upload relative to download, at some point, the<br />> ack-stream can be held up by either lack of capacity or bloat in the uplink. So<br />> even though a link can deliver 300Mbps down, a bloated uplink of 5mbps might never<br />> allow that level to be reached.<br />> There are ISPs provisioning truly crazy asymmetric service.<br />> <br />> They do make a good point about the local network, WiFi specifically being the new<br />> bottleneck, which is why we included an iperf instance that can be started on the<br />> IQrouter to help run client to server tests that help spot local network capacity<br />> limits, typically on WiFi.<br />> <br />> Regarding their point about ‘Cross traffic’ impact on measurements,<br />> Cake’s per-host / per-target fairness also complicates AQM-enabled testing<br />> from client devices. Which is why we make the built-in speed test the arbiter of<br />> true line capacity, as it factors for ALL traffic flowing through the router. But,<br />> as you mention, that is also a challenge from a CPU resource standpoint on higher<br />> speeds.<br />> <br />> The biggest gap in this paper is not paying sufficient attention to latency as a<br />> critical metric, and one that is controllable by an AQM. Bufferbloat metrics have<br />> more impact on end-user experience than +/- 50Mbps on a 100mbps baseline.<br />> I was rather miffed they do not even mention the DSLreports.com speedtest, or the<br />> fast.com test, as those are the two that provide a bufferbloat metric.<br />> <br />> The industry as whole MUST pay attention and socialize the relevancy of managed<br />> latencies as being critical to customer satisfaction and good application<br />> performance. And that starts with tests that clearly grade that critical aspect.<br />> <br />> Cheers,<br />> <br />> Jonathan<br />> <br />> > On May 15, 2019, at 3:58 AM, Dave Taht <dave.taht@gmail.com> wrote:<br />> ><br />> > If it helps any: Nick Feamster and Jason Livingood just published "<br />> > Internet Speed Measurement: Current Challenges and Future<br />> > Recommendations " ( https://arxiv.org/pdf/1905.02334.pdf ) a few days<br />> > ago, and outlines quite a few problems going forward at higher speeds.<br />> > I do wish the document had pointed out more clearly that router based<br />> > measurements have problems also, with weaker cpus unable to source<br />> > enough traffic for an accurate measurement, but I do hope this<br />> > document has impact, and it's a good read, regardless.<br />> ><br />> > Still, somehow getting it right at lower speeds is always on my mind.<br />> > I'd long ago hoped that DSL devices would adopt BQL, and that<br />> > cablemodems would also, thus moving packet processing a little higher<br />> > on the stack so more advanced algorithms like cake could take hold.<br />> ><br />> > On Wed, May 15, 2019 at 9:32 AM Sebastian Moeller <moeller0@gmx.de><br />> wrote:<br />> >><br />> >> Hi All,<br />> >><br />> >><br />> >> I believe the following to be relevant to this discussion:<br />> https://apenwarr.ca/log/20180808<br />> >> Where he discusses a similar idea including implementation albeit aimed<br />> at lower bandwidth and sans the automatic bandwidth tracking.<br />> >><br />> >><br />> >>> On May 15, 2019, at 01:34, David P. Reed <dpreed@deepplum.com><br />> wrote:<br />> >>><br />> >>><br />> >>> Ideally, it would need to be self-configuring, though... I.e.,<br />> something<br />> >>> like the IQRouter auto-measuring of the upstream bandwidth to tune<br />> the<br />> >>> shaper.<br />> >><br />> >> @Jonathan from your experience how tricky is it to get reliable speedtest<br />> endpoints and how reliable are they in practice. And do you do any sanitization,<br />> like take another measure immediate if the measured rate differs from the last by<br />> more than XX% or something like that?<br />> >><br />> >><br />> >>><br />> >>> Sure, seems like this is easy to code because there are exactly two<br />> ports to measure, they can even be labeled physically "up" and "down" to indicate<br />> their function.<br />> >><br />> >> IMHO the real challenge is automated measurements over the internet at<br />> Gbps speeds. It is not hard to get some test going (by e.g. tapping into ookla's<br />> fast net of confederated measurement endpoints) but getting something where the<br />> servers can reliably saturate 1Gbps+ seems somewhat trickier (last time I looked<br />> one required a 1Gbps connection to the server to participate in speedtest.net,<br />> obviously not really suited for measuring Gbps speeds).<br />> >> In the EU there exists a mandate for national regulators to establish<br />> and/or endorse an anointed "official" speedtests, untended to keep ISP marketing<br />> honest, that come with stricter guarantees (e.g. the official German speedtest,<br />> breitbandmessung.de will only admit tests if the servers are having sufficient<br />> bandwidth reserves to actually saturate the link; the enduser is required to<br />> select the speed-tier giving them a strong hint about the required rates I<br />> believe).<br />> >> For my back-burner toy project "per-packet-overhead estimation on<br />> arbitrary link technology" I am currently facing the same problem, I need a<br />> traffic sink and source that can reliably saturate my link so I can measure<br />> maximum achievable goodput, so if anybody in the list has ideas, I am all<br />> ears/eyes.<br />> >><br />> >>><br />> >>> For reference, the GL.iNet routers are tiny and nicely packaged, and<br />> run<br />> >>> OpenWrt; they do have one with Gbit ports[0], priced around $70. I<br />> very<br />> >>> much doubt it can actually push a gigabit, though, but I haven't had<br />> a<br />> >>> chance to test it. However, losing the WiFi, and getting a slightly<br />> >>> beefier SoC in there will probably be doable without the price going<br />> >>> over $100, no?<br />> >>><br />> >>> I assume the WiFi silicon is probably the most costly piece of<br />> intellectual property in the system. So yeah. Maybe with the right parts being<br />> available, one could aim at $50 or less, without sales channel markup. (Raspberry<br />> Pi ARM64 boards don't have GigE, and I think that might be because the GigE<br />> interfaces are a bit pricey. However, the ARM64 SoC's available are typically<br />> Celeron-class multicore systems. I don't know why there aren't more ARM64 systems<br />> on a chip with dual GigE, but I suspect searching for them would turn up some).<br />> >><br />> >> The turris MOX (https://www.turris.cz/en/specification/) might be a<br />> decent startimg point as it comes with one Gbethernet port and both a SGMII and a<br />> PCIe signals routed on a connector, they also have a 4 and an 8 port switch<br />> module, but for our purposes it might be possible to just create a small single Gb<br />> ethernet port board to get started.<br />> >><br />> >> Best Regards<br />> >> Sebastian<br />> >><br />> >>><br />> >>> -Toke<br />> >>><br />> >>> [0] https://www.gl-inet.com/products/gl-ar750s/<br />> >>> _______________________________________________<br />> >>> Cerowrt-devel mailing list<br />> >>> Cerowrt-devel@lists.bufferbloat.net<br />> >>> https://lists.bufferbloat.net/listinfo/cerowrt-devel<br />> >><br />> >> _______________________________________________<br />> >> Bloat mailing list<br />> >> Bloat@lists.bufferbloat.net<br />> >> https://lists.bufferbloat.net/listinfo/bloat<br />> ><br />> ><br />> ><br />> > --<br />> ><br />> > Dave Täht<br />> > CTO, TekLibre, LLC<br />> > http://www.teklibre.com<br />> > Tel: 1-831-205-9740<br />> > _______________________________________________<br />> > Bloat mailing list<br />> > Bloat@lists.bufferbloat.net<br />> > https://lists.bufferbloat.net/listinfo/bloat<br />> <br />> </p>
</div></font>