HTTP/3 (QUIC)
HTTP/3 runs over QUIC, a UDP-based transport with built-in TLS 1.3, multiplexed streams, and no head-of-line blocking. It makes connections faster to establish and more resilient on flaky mobile networks.
- Mobile and lossy-network clients.
- Connection migration scenarios (switching networks).
- Environments that block UDP.
- When your LB/infra doesn't support QUIC connection-ID routing.
Definition
QUIC is a transport protocol on UDP that multiplexes many streams over one connection, encrypts by default (TLS 1.3), and lets one lost packet block only its stream. HTTP/3 is HTTP semantics over QUIC.
Why it exists
TCP+TLS has head-of-line blocking (one lost packet stalls all streams) and slow handshakes. QUIC fixes both and moves congestion control to userspace for faster iteration, improving mobile and lossy-link performance.
How it works
Client sends a 1-RTT (or 0-RTT) QUIC handshake carrying TLS. Streams are independent; packet loss on one doesn't block others. Connection migration by connection ID survives IP changes (Wi-Fi→cellular).
Scaling limits
UDP handling and QUIC crypto CPU can be higher per connection than kernel TCP. Load balancing across QUIC connections needs the connection ID, not the 4-tuple, since IPs change.
Cost shape
Slightly more CPU per connection; offset by fewer handshakes (0-RTT) and better mobile completion. Some networks block/throttle UDP.
Alternatives
- HTTP/2 over TCP — Universal support but head-of-line blocking across streams.
- HTTP/1.1 — Simplest, but no multiplexing and more handshakes.
Failure modes
- Middleboxes blocking UDP forcing fallback to TCP.
- 0-RTT replay risk on non-idempotent requests.