Measuring QUIC vs TCP on mobile and desktop
blog.apnic.net
blog.apnic.net
Nice to know 7% of Internet traffic isn't playing fair with the rest just so one company's content loads a few ms faster! Really don't know how I feel about TCP in general losing out to QUIC if it saw much wider deployment outside Google
And finally, it's incredibly disappointing to read these results from a third party, rather than having a balanced perspective as part of the original marketing
From a network usage standpoint, there isn't anything "unfair" about it -- QUIC runs atop UDP, which is also a perfectly acceptable and publicly available Internet protocol. And Chrome will happily use QUIC with non-Google hosts, the real problem is that production-quality QUIC server software is currently rare outside of Google.
Meanwhile we're not talking about a small slice of bandwidth spent on SIP video calls playing unfairly, we're talking about 70% or more of all Internet traffic suddenly stampeding over every pre-existing protocol, they're the floodgates I'm worried about
QUIC builds modern congestion control on top of UDP.
The ATM effort was a while back, but who knows, maybe it's time to try again.
TCP BBR is an attempt to fix TCP congestion control so it can saturate busy/lossy networks more reliably. That doesn't require QUIC.
I'll ignore that and suggest instead you read up on what happened to the Internet in the early 90s, the last time congestion control literally broke everything
Finally it's not the first time Google did something foul like that in the protocols department. IIRC they deploy a modified TCP slow start which also doesn't play fair in the face of contention
Many years ago my company made a VPN which tunneled through TCP† specifically designed for heavily loaded networks. I changed the Linux kernel to cap our back off time to something like 2 seconds because getting to a 2 minute back off just sucks badly when you are encapsulating a bunch of streams. Happy customers. Happy us, no more “the VPN hangs” complaints.
␄
† Yes, "don't do that", but when you have a mission critical unchangeable protocol sending enormous multi fragment UDP datagrams over a network path with a 10% packet loss rate, something has to give.
The article points out that both the QUIC and TCP implementations they tested are using CUBIC congestion control, but that's not enough information, because the article also points out that QUIC is using "more aggressive parameters." It's tough to say which parameters are better, but what's unsaid is that a TCP implementation could change their parameters and get the same congestion control results as QUIC.
The supposed poor performance of QUIC on resource-limited mobile devices is, as they point out, because it's a user space implementation that is thus more expensive. If QUIC becomes popular, I assume there will be kernel implementations that are as resource efficient as TCP. Meanwhile, it's a lot easier to to experiments (such as tuning CUBIC parameters!) when you don't have to reboot to install a new version.
It's also quite common for various TCP congestion controllers to completely fail to saturate busy links, because of various limitations. If that happens, it might be that QUIC is able to fill the empty space, thereby taking "more than its fair share" only because TCP wasn't going to use that share anyway. Since the article doesn't even say which TCP implementation it's comparing against, and doesn't say what happens when the TCP sessions are competing only amongst themselves with no QUIC present, it's hard to say what's going on.
The funny thing about all this is that, if they use the same congestion control (which seems to be the intention given that they are both using CUBIC and Google is separately trying to fix congestion control via BBR[1]), they should both be about equally fair. The performance benefits of QUIC are not even congestion control related!
[1] https://queue.acm.org/detail.cfm?id=3022184
[Disclaimer: I've worked with some of the people who wrote BBR and QUIC, so I'm biased.]
The performance effects of QUIC implementing congestion control in userland are more interesting. OTOH, QUIC allows deploying new features to users (through cronet) in an efficient way. TCP does not.
[1] https://chromium.googlesource.com/chromium/src/net/+/master/...
> [Disclaimer: I've worked with some of the people who wrote BBR and QUIC, so I'm biased.] Ditto
[0]: https://github.com/skywind3000/kcp/blob/master/README.en.md
(However, QUIC versions are extremely transient and has very limited support in Chrome; the next release of Caddy will bring it back up-to-date again.)
HTTP/2 replaces HTTP/1.1 (and is a direct descendent of SPDY, which has origins ~2009).
HTTP/2 on TCP gets you some of the benefits that QUIC provides (multiplexing, reduced roundtrips), but HTTP/2 on QUIC is the best of both worlds.
IMO, there's not much noise about QUIC mainly because most people don't care enough about latency to care, and the current lack of production-quality QUIC server software makes caring more complicated than "just enable it", so low demand all around. This should pick up when it gets closer to a ratified standard.