4 ms·
I often see QUIC described as "faster than TCP", but in my experience this has only been the case when it comes to handshake latency. Throughput-wise, I've fou
by iamcalledrob 4y ago
I often see QUIC described as "faster than TCP", but in my experience this has only been the case when it comes to handshake latency.
Throughput-wise, I've found in real-world testing that QUIC is often slower than TCP:
(1) QUIC uses more CPU, due to the processing in user-space. 1Gbps required 3 CPU cores. On my 1x-CPU VPS, QUIC maxed out at 400Mbps due to the CPU. With TCP+TLS, I could comfortably achieve 5Gbps.
(2) QUIC was less resilient to packet loss (surprisingly). This was particularly noticeable on mobile devices.
If your use-case is to move bytes between powerful servers over a reliable, wired connection, QUIC may beat TCP in most ways that matter. But for use in real-world mobile apps, TCP may still offer better throughput.
Caveat: This is all data from using the quic-go package. The C libraries may well be more efficient :)
- skissane 4y ago> QUIC uses more CPU, due to the processing in user-space. That’s not inherent to the QUIC protocol itself though, that’s an implementation decision. There is no fundamental reason why QUIC couldn’t be implemented in kernel-space, such an implementation would still be conforming.
- iamcalledrob 4y agoAbsolutely, and it would be great if there was OS support here. TCP processing can be also offloaded to network cards today, so the same might need to happen for QUIC to be similarly efficient.