6 ms·
An argument for increasing TCP's initial congestion window (2024)
- howtofly 1y agoIIRC, all latency-driven congestion control algorithms suffer from violent rtt variance, which happens frequently in wireless networks. How does BBR perform under such circumstances?
- cyb0rg0 1y agoGoogle has a long history of performing networking research, making changes, and pushing those changes to the entire internet. In 2011, they published one of my favorite papers, which described their decision to increase the TCP initial congestion window from 1 to 10 on their entire infrastructure.
- deleted 1y ago[deleted]
- rayanboulares 1y agoJust the day I discovered TCP Congestion Windows and spent the day tweaking and benchmarking between Vegas, Reno, Cubic and TCTP
- IncreasePosts 1y agoI've also tweaked and marked benches in Vegas and Reno, to my great shame.
- jddunce 1y agoI seem to remember this coming up a few times over the years and it’s always bad iirc.
- wahern 1y ago> Google also developed QUIC, which is HTTP over UDP. There’s no longer any congestion window to deal with, so entire messages can be sent at once. I don't think that's true. QUIC implementations typically use the same congestion control algorithms, including both CUBIC and BBR, at least nominally. The latest RFCs for those discuss use with both TCP and QUIC. Though, perhaps when used with QUIC they have more degrees of freedom to tune things.
- 01HNNWZ0MV43FF 1y agoAlso QUIC is not HTTP over UDP. HTTP/3 is HTTP over QUIC. QUIC is bidi streams and best-effort datagrams over UDP.
- Hilift 1y agoVendors are pushing using QUIC and without other networking layers, thus the performance increase. For example, SMB3 over QUIC over the Internet, sans VPN.
- dlenski 1y agoYeah, the article completely lost me at this point. A somewhat-interesting, though simplistic, discussion of congestion control in TCP. And then… "but don't worry, QUIC is magic, and it doesn't need any of this.” No. No it's not. QUIC is not magic and it basically changes nothing in terms of congestion control.
- commandersaki 1y agoI reckon bufferbloat is overhyped as a problem, it mattered to a small set of Internet connectivity in the 2010s and promptly went away as connectivity changed and improved, yet we continue to look at it like it was yesterdays problem.
- toast0 1y agoBufferbloat is alive and well. Try a t-mobile 5g home gateway. Oof. I think cable modems have had a ton of improvement, and more fiber in our diet helps, but mobile can be tricky, and wifi is still highly variable (there's promising signs, but I don't know how many people update their access points)
- commandersaki 1y agoIs it though, or is it just a scapegoat or a red herring, especially in the case with a wireless medium? That's been my experience with quick claims to bufferbloat, it's usually something else at play. But again ymmv.
- toast0 1y agoI mean, I did a speed test with t-mobile 5g home internet, download speed was impressive, but so was the difference in ping time during the download vs otherwise. Sure, wireless is complex, but there were definitely some way too big buffers in the path. Add in some difficulty integrating their box into my network, and it wasn't for me.
- commandersaki 1y agoFair enough, I concede with your assessment, my understanding of bufferbloat (which I have to relearn everytime I look at it) is that the telltale sign is ping to any destination that traverses the uplink exhibits higher latency than usual when you're saturating your download. It's just a tricky thing to test given variability of conditions (and what might be deemed as expected operation) which is why I'm usually hesitant and sceptical, and I don't trust those speedtest websites to gauge it properly.
- edynamic90 1y ago[dead]
- procaryote 1y agoThis might be one of those induced demand situations like building more lanes on a highway, which generally makes traffic worse. The actual limiting factor for how horribly bloated frontend code becomes is that at some point, it becomes so bad that it noticably impacts your business negatively, and you need to improve it. Increasing the TCP window so it managed at least the basic asset delivery makes sense, but if you need to cold start regularly and you have hundreds of kb of javascript, perhaps fix your stuff?
- kev009 1y agoThis article is stuck in a very wide valley of being perhaps somewhat familiar with the domain concepts but nowhere near deep enough to draw any of the conclusions being drawn. It is close enough to being completely wrong. The primary tradeoff of initcwnd is setting a reasonable window before you've learned anything about the path. BBR has little say on this because it takes, in relative terms, quite a while to go through its phases. An early BBR session is therefore not really superior to other congestion controls because that is not the problem it is really focused on. Jacking up the initcwnd, you start to risk tail loss, which is the worst kind of loss for a sliding window.. especially in the primordial connection. There are ways of trying to deal with all that but they are loss predictions. If you are a big enough operator, maybe you have some a priori knowledge to jack this up for certain situations. But people are also reckless and do not understand the tradeoffs or overall fairness that the transport community tries to achieve. As other comments have pointed out, QUIC stacks also replicate congestion control and other algorithms based on the TCP RFCs. These are usually much simpler and lacking features compared to the mainline Linux TCP stack. It's not a free lunch and doesn't obviate the problem space any transport protocol has to make tradeoffs on.
- youngtaff 1y agoThis! They also miss the fact that even with an initcwnd of 10 the TLS negotiation isn’t going to consume it so the window starts growing long before content is actually sent. Plus there’s no discussion of things like packet pacing
- Hnrobert42 1y agoHow would this affect DDOS attacks? Would it make you more vulnerable?
- namibj 1y agoL4S[0] also helps a lot with sensing congestion before young connections have yet to suffer their first lost packet... Basically it sqrt's your actual packet loss rate as far as feedback frequency/density is concerned, without actually even typically having to enact that loss. For example, you could get congestion feedback every 100th packet (as you would with 1% packet loss), during network conditions that would traditionally only have 0.01% packet loss. From [1]: Unless an AQM node schedules application flows explicitly, the likelihood that the AQM drops a Not-ECT Classic packet (p_C) MUST be roughly proportional to the square of the likelihood that it would have marked it if it had been an L4S packet (p_L). That is: p_C ~= (p_L / k)2 The constant of proportionality (k) does not have to be standardized for interoperability, but a value of 2 is RECOMMENDED. The term 'likelihood' is used above to allow for marking and dropping to be either probabilistic or deterministic. [0]: https://www.rfc-editor.org/rfc/rfc9330.html https://www.rfc-editor.org/rfc/rfc9330.html [1]: https://www.rfc-editor.org/rfc/rfc9331#name-the-strength-of-l4s-ce-mark https://www.rfc-editor.org/rfc/rfc9331#name-the-strength-of-...
- egberts1 1y agoSomeone needs to reread all of Sally Floyd, et al. researches from International Computer Science Institute of UC Berkeley. She touched the TCP congestion algorithms of all TCP variants Tahoe, Reno, New Reno, Carson, Vegas, SACK, Westwood, Illinois, Hybla, Compound, HighSpeed, BIC, CUBIC, DCTCP, BBR, BCP, XCP, RCP. And it all boils down to: * how much propagation delay are there, * how long are each packets, and * whether there are sufficient storage space for “buffer bloats”. Also, TCP congestion algorithms are neatly pegged as * reactive (loss-based) * proactive (delay-based) * predictive (bandwidth estimation) https://egbert.net/blog/articles/tcp-evolution.html https://egbert.net/blog/articles/tcp-evolution.html also citations: DUAL (Wang & Crowcroft, 1992) https://www.cs.wustl.edu/~jain/cis788-95/ftp/tcpip_cong/ https://www.cs.wustl.edu/~jain/cis788-95/ftp/tcpip_cong/ TCP Veno (Fu & Liew, 2003) https://www.ie.cuhk.edu.hk/wp-content/uploads/fileadmin//staff_upload/soung/Journal/J3.pdf https://www.ie.cuhk.edu.hk/wp-content/uploads/fileadmin//sta... https://citeseerx.ist.psu.edu/document?doi=003084a34929d8d2ced93605fadd8b9bdf20e5f9&repid=rep1&type=pdf https://citeseerx.ist.psu.edu/document?doi=003084a34929d8d2c... TCP Nice (Venkataramani, Kokku, Dahlin, 2002) https://citeseerx.ist.psu.edu/document?doi=10.1.1.12.8742 https://citeseerx.ist.psu.edu/document?doi=10.1.1.12.8742 TCP-LP (Low Priority TCP, Kuzmanovic & Knightly, 2003) https://www.cs.rice.edu/~ek7/papers/tcplp.pdf https://www.cs.rice.edu/~ek7/papers/tcplp.pdf Scalable TCP (Kelly, 2003) https://www.hep.ucl.ac.uk/~ytl/talks/scalable-tcp.pdf https://www.hep.ucl.ac.uk/~ytl/talks/scalable-tcp.pdf H-TCP (Leith & Shorten, 2004) https://www.hamilton.ie/net/htcp/ https://www.hamilton.ie/net/htcp/ FAST TCP (Jin, Wei, Low, 2004/2005) https://netlab.caltech.edu/publications/FAST-TCP.pdf https://netlab.caltech.edu/publications/FAST-TCP.pdf TCP Africa (King, Baraniuk, Riedi, 2005) https://www.cs.rice.edu/~ied/comp600/PROJECTS/Africa.pdf https://www.cs.rice.edu/~ied/comp600/PROJECTS/Africa.pdf TCP Libra (Marfia, Palazzi, Pau, Gerla, Sanadidi, Roccetti, 2007) https://www.cs.ucla.edu/NRL/hpi/tcp-libra/ https://www.cs.ucla.edu/NRL/hpi/tcp-libra/ YeAH-TCP (Yet Another High-speed TCP, Baiocchi, Castellani, Vacirca, 2007) https://dl.acm.org/doi/10.1145/1282380.1282391 https://dl.acm.org/doi/10.1145/1282380.1282391 TCP-Nice and other background CCAs https://en.wikipedia.org/wiki/TCP_congestion_control https://en.wikipedia.org/wiki/TCP_congestion_control TCP-FIT (Wang, 2016) https://www.sciencedirect.com/science/article/abs/pii/S1084804516300340 https://www.sciencedirect.com/science/article/abs/pii/S10848...