HTTP/3 QUIC Migration
HTTP/3 over QUIC migrates a connection when the client IP changes — WiFi to cellular — without re-handshaking, so a long download or call survives a network switch.
Definition
HTTP/3 QUIC migration is the connection migration feature of QUIC where a connection is identified by a connection ID rather than a 4-tuple, so that when the client IP or port changes the connection continues on the new path without re-handshaking, preserving long-lived streams across network transitions.
Context and scope
Applied in mobile video, VoIP, and any long-lived HTTP connection where the client moves between networks during a session.
Common misconceptions
- Connection migration is just roaming — it is roaming at the transport layer, with the connection ID as the anchor; the similarity is intentional
- Migration always keeps the connection alive — it keeps it alive if the new path works; a path change that the server cannot reach on the new IP still drops the connection
Anti-patterns
- Binding the connection to the 4-tuple on the server side, defeating the migration that QUIC was designed to provide
- Assuming migration is seamless and not handling the case where the new path has a different MTU and the packets fragment
Related concepts
Authoritative source
What it is
HTTP/3 QUIC migration is the connection migration feature of QUIC where a connection is identified by a connection ID rather than a 4-tuple, so that when the client IP or port changes the connection continues on the new path without re-handshaking, preserving long-lived streams across network transitions. Applied in mobile video, VoIP, and any long-lived HTTP connection where the client moves between networks during a session. The protocol’s semantics — safe versus unsafe, idempotent versus non-idempotent, cacheable versus non-cacheable — are contracts the client and intermediary rely on, and violating them breaks the web.
How it works
Headers carry the negotiation: content type, encoding, caching directives, and conditional request validators together let a client and server reach the cheapest correct response. Connection reuse eliminates handshake overhead; multiplexing removes head-of-line blocking; streaming avoids buffering the entire body. Each feature has a failure mode — keep-alive on a broken proxy, multiplexing with a misbehaving server — that must be detected and handled.
When to apply and pitfalls
Apply whenever a client and server communicate across a trust boundary the protocol already spans. The pitfall is treating HTTP as a transport and ignoring its semantics — POSTing a retrieval, marking a mutating request cacheable, or omitting the validator that would enable a 304. Intermediaries — CDNs, proxies — implement the standard literally, so semantic violations produce surprising behavior far from the origin.