QUIC, a multiplexed transport over UDP
QUIC is a new multiplexed transport built on top of UDP. HTTP/3 is designed to take advantage of QUIC's features, including lack of Head-Of-Line blocking between streams.
The QUIC project started as an alternative to TCP+TLS+HTTP/2, with the goal of improving user experience, particularly page load times. The QUIC working group at the IETF defined a clear boundary between the transport(QUIC) and application(HTTP/3) layers, as well as migrating from QUIC Crypto to TLS 1.3.
Because TCP is implemented in operating system kernels and middleboxes, widely deploying significant changes to TCP is next to impossible. However, since QUIC is built on top of UDP and the transport functionality is encrypted, it suffers from no such limitations.
Key features of QUIC and HTTP/3 over TCP+TLS and HTTP/2 include
- Reduced connection establishment time - 0 round trips in the common case
- Improved congestion control feedback
- Multiplexing without head of line blocking
- Connection migration
- Transport extensibility
- Optional unreliable delivery
IETF documents
- Version-Independent Properties of QUIC - RFC8999
- QUIC: A UDP-Based Multiplexed and Secure Transport - RFC9000
- Using TLS to Secure QUIC - RFC9001
- Congestion Control and Loss Detection - RFC9002
- HTTP/3 - IESG approved draft
- QPACK - IESG approved draft
Documentation
- SIGCOMM 2017 Paper
- QUIC overview
- QUIC FAQ
- A Guide to Parsing QUIC Client Hellos for Network Middlebox Vendors
- Legacy QUIC wire specification (versions up to and including Q043)
- Legacy QUIC wire specification (versions from Q044 to Q048 inclusive)
- Cleartext QUIC wire specification (versions Q049 and above)
- QUIC crypto design doc
- Getting started with the QUIC toy client and server
- QUIC tech talk
- QUIC Discovery
- QUIC FEC v1 (deprecated)
- QUIC flow control
Pre-Working Group IETF Material
- Presentations from the IETF-96 (Berlin) BoF on QUIC
- Presentations from the IETF-93 (Prague) BarBoF on QUIC
(Video)
- Introduction
- QUIC Protocol Overview
- Implementing QUIC For Fun And Learning (Christian Huitema, Microsoft)
- QUIC Congestion Control and Loss Recovery
- Initial Presentation at IETF-88 (Slides)
Video
Code
Mailing lists
- proto-quic@chromium.org - QUIC mailing list specific to Chromium
- quic@ietf.org - QUIC working group mailing list
Abridged QUIC Version History
- In 2012, Google started working on QUIC
- In 2013, Chrome started small-scale experiments with the original versions of QUIC (those versions are now known as Google QUIC)
- In 2014, Chrome started a wide-scale deployment of Google QUIC
- In 2015, Google brought QUIC to the IETF
- In 2017, the IETF started creating versions of QUIC that diverged from Google QUIC (those new versions were then called IETF QUIC)
- In 2020, Chrome started wide-scale experiments with IETF QUIC
- In 2021, the IETF officially published QUIC as RFC 9000. Chrome added support for RFC 9000 in Chrome 90 and default-enabled it for all users in Chrome 93