TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Why We Love QUIC and HTTP/3

210 pointsby kickdaddyabout 6 years ago

13 comments

drewg123about 6 years ago
QUIC costs something like 2x to 4x as much CPU time to serve large files or streams per byte as compared to TCP. This is because the anti-middlebox protections <i>also</i> mean that modern network hardware and software offloads that greatly reduce CPU time cannot work with QUIC. When combined with the fact that QUIC is userspace, that&#x27;s just deadly for performance. I&#x27;m talking about TSO, LRO (aka GRO), kTLS, and kTLS + hw encryption.<p>Let&#x27;s compare a 100MB file served via TCP to the same file served via QUIC.<p><pre><code> TCP: - web server sends 2MB at a time, 50x times, via async sendfile (50 syscalls &amp; kqueue notifications) - kernel reads data from disk, and encrypts. The data is read once and written once by KTLS in the kernel. - TCP sends data to the NIC in large-sh chunks 1.5k to 64k at a time, lets say an average of 16k. So the network stack runs 6250 times to transmit. - The client acks every other frame, so that&#x27;s 33333 acks. Let&#x27;s say they are collapsed 2:1 by LRO, so the TCP stack runs 16,666 times to process acks QUIC: - web server mmaps or read()&#x27;s the file and encrypts it in userspace and sends it 1500b at a time (1 extra memory copy &amp; 66,666 system calls) - UDP stack runs 66,666 to send data - UDP stack runs 33,333 number of times to receive QUIC acks (no idea what the aggregation is, lets say 2:1) - kernel wakes up web server to process QUIC acks 33,333 times. </code></pre> So for QUIC we have:<p><pre><code> - 4x as many network stack traversals due to the lack of TSO&#x2F;LRO. - 1000x as many system calls, due to doing all the packet handing in userspace - at least one more data copy (kernel -&gt; user) due to data handling in userspace. </code></pre> Some of these can be solved, by either moving QUIC into the kernel, or by using a DPDK-like userspace networking solution. However, the lack of TSO&#x2F;LRO even by itself is a killer for performance.<p>Disclaimer: I work on CDN performance. We&#x27;ve served 90Gb&#x2F;s with a 12-core Xeon-D. To serve the same amount of traffic with QUIC, you&#x27;d probably need multiple Xeon Gold CPUS. I guess that Google can afford this.
评论 #19478268 未加载
评论 #19476982 未加载
评论 #19476668 未加载
评论 #19477086 未加载
评论 #19477450 未加载
评论 #19486918 未加载
评论 #19476878 未加载
评论 #19477718 未加载
评论 #19476542 未加载
评论 #19476785 未加载
评论 #19476652 未加载
评论 #19478786 未加载
评论 #19476869 未加载
评论 #19476963 未加载
move-on-byabout 6 years ago
As far as I’ve been able to determine, QUIC suffers from the same SNI data leak that existing TLS versions with TCP has. I understand that ESNI is being (or is already?) included in the TLS 1.3 spec, but it’s obviously optional at this point.<p>Anyways, since QUIC is being touted everywhere as being very secure:<p>&gt; [QUIC] protects both the data and the transport protocol itself<p>It seems like missing ESNI as a required feature is a bit of a glaring omission. Does anyone have a better understanding? To me, it seems like a great opportunity to make ESNI required for HTTP&#x2F;3. Much like how browsers made TLS required for HTTP&#x2F;2. I would love further insights if anyone has any.
评论 #19478196 未加载
评论 #19478160 未加载
评论 #19477300 未加载
felixhandteabout 6 years ago
This is a timely post, since IETF 104 is happening this week in Prague[1]. The QUIC working group will be meeting on Tuesday and Wednesday to make progress on standardization[2].<p>[1] <a href="https:&#x2F;&#x2F;datatracker.ietf.org&#x2F;meeting&#x2F;104&#x2F;agenda.html" rel="nofollow">https:&#x2F;&#x2F;datatracker.ietf.org&#x2F;meeting&#x2F;104&#x2F;agenda.html</a><p>[2] <a href="https:&#x2F;&#x2F;datatracker.ietf.org&#x2F;doc&#x2F;draft-ietf-quic-transport&#x2F;" rel="nofollow">https:&#x2F;&#x2F;datatracker.ietf.org&#x2F;doc&#x2F;draft-ietf-quic-transport&#x2F;</a>
评论 #19476226 未加载
scurvyabout 6 years ago
QUIC will also usher in a new era of volumetric DDoS attacks. No longer can content providers use upstream ACLs to block udp garbage and fragments. The only option will be to use Fastly, AWS, or Cloudflare to ride out attacks.<p>QUIC is the tool to bring about the next phase of Internet centralization by the mega players.
评论 #19477465 未加载
评论 #19477928 未加载
collinfabout 6 years ago
&gt; These interposing network elements, called middleboxes, often unwittingly disallow changes to TCP headers and behavior, even if the server and the client are both willing.<p>There is nothing worse than finding out that someone not even at the company anymore decided years before to deploy some crap like this. Drives me absolutely crazy to impose stuff like this where silos in companies means transitioning involves on the order of 4-5 different &quot;components&quot; need to change.
评论 #19477514 未加载
mcguireabout 6 years ago
&quot;<i>TCP Fast Open is a stellar example of one such modification to TCP: eight years after it was first proposed, it is still not widely deployed, largely due to middleboxes.</i>&quot;<p>Anyone remember TTCP?
评论 #19477941 未加载
ioquatixabout 6 years ago
aka let&#x27;s just put everything in the application layer because solving it at the protocol layer is too difficult.
评论 #19478290 未加载
评论 #19475678 未加载
评论 #19475366 未加载
评论 #19475542 未加载
评论 #19475593 未加载
评论 #19475901 未加载
tyingqabout 6 years ago
Hopefully vendors like Forcepoint are trying to keep up. The first rollout of QUIC worked terribly in a lot of corporate environments because these MITM content filtering solutions didn&#x27;t pay attention.
评论 #19476082 未加载
评论 #19476356 未加载
Improvotterabout 6 years ago
I&#x27;m currently working with HTTP&#x2F;2 (more specifically HAS with HTTP&#x2F;2 Server Push) and it&#x27;s just a huge pain to find a high-level library that can help with this. I fear that it&#x27;ll take even longer for HTTP&#x2F;3 to be adopted or HTTP&#x2F;2 might just be skipped altogether. Why are there so many server-side implementations available for a variety of languages though many still lack some features or a client-side implementation altogether?
评论 #19477777 未加载
评论 #19480253 未加载
ignoramousabout 6 years ago
&#x2F;offtopic<p>Good folks at fastly, I hope you&#x27;re reading... I&#x27;ve been waiting very patiently for part 3 of this series for a good part of 2yrs now: <a href="https:&#x2F;&#x2F;www.fastly.com&#x2F;blog&#x2F;building-and-scaling-fastly-network-part-2-balancing-requests" rel="nofollow">https:&#x2F;&#x2F;www.fastly.com&#x2F;blog&#x2F;building-and-scaling-fastly-netw...</a>
ex3ndrabout 6 years ago
Are there ready to use mobile libraries for QUIC?
评论 #19476734 未加载
cagenutabout 6 years ago
so the arista&#x27;s are gonna be able to ecmp on it?
评论 #19477464 未加载
http333about 6 years ago
It seems that QUIC is a new transfer protocol created to replace TCP. QUIC uses UDP and LTS&#x2F;3 and solves the head of line problem addressed in HTTP2. Furthermore, sending the data encrypted allows QUIC to begin transfering data earlier. An experiment by google shows that in connections with high latency or loss QUIC gives a 15% reduction in highest latency.