Zephiel API
Engineering14 July 20227 min read

HTTP/3 is an RFC now

RFC 9114 landed in June. QUIC fixes the head-of-line blocking that HTTP/2 pushed down a layer rather than solving.

RFC 9114 was published in June, five years after the first drafts. We have HTTP/3 running on the gateway behind a flag and will make it the default once we have more data.

The problem HTTP/2 moved rather than fixed

HTTP/2 gave us multiplexing: many streams over one connection, no more six-connection limit. That solved head-of-line blocking at the HTTP layer.

It did not solve it at the transport layer, because TCP delivers a single ordered byte stream. Lose one packet and every multiplexed stream stalls until it is retransmitted, including the nine that had nothing to do with the lost packet. On a clean network you never notice. On a mobile connection with two per cent loss, HTTP/2 can be measurably worse than HTTP/1.1.

What QUIC does

QUIC runs over UDP and implements streams itself, so a lost packet stalls only the stream it belonged to. The other nine carry on.

The handshake is also folded together: transport and TLS 1.3 negotiate at once, so a new connection costs one round trip instead of two or three. And connections are identified by a connection ID rather than the four-tuple, which means a client moving from wifi to mobile keeps its connection instead of re-establishing it.

What we measured

For clients on good fixed connections, nothing worth reporting. Median latency moved by less than the noise.

For clients on lossy networks the difference is substantial — our worst-decile latency for mobile-originated traffic improved by about a third in testing. That is the population the protocol was designed for and the numbers reflect it.

Why it is not the default yet

UDP is blocked or throttled on a meaningful number of corporate networks, so clients must be able to fall back to HTTP/2 cleanly. Some do this well; some hang for several seconds first, which is worse than never trying.

We are collecting fallback behaviour data before we make it the default. When we do, it will be through Alt-Svc advertisement, so clients opt in on their own timetable and nothing changes for anyone who does not.

Keep reading