HTTP/3 is the next Internet network protocol and is intended to partially replace HTTP/1 and HTTP/2. One month before the next meeting of the QUIC working group in Zurich in February, it might be useful to look at what HTTP/3 promises and what its current client/server support looks like.
HTTP/3 promises to make internet connections faster, more reliable and more secure. Born as "HTTP over QUIC", an attempt to adapt the HTTP protocol to run in addition to Google's own transport layer protocol, QUIC, was later proposed as an IETF standard and is currently an internet project. In October 2018, IETF HTTP and QUIC Co-Chair Mark Nottingham proposed renaming HTTP over QUIC to HTTP/3 to clarify its true nature and independence from QUIC.
What is QUIC
QUIC is a key element of HTTP/3 because it provides the foundation for its core functionality. Built on top of UDP, QUIC tries to address major issues with TCP, such as connection setup latency and loss of multithreaded packets. TCP's latency problem stems from the requirements of its congestion control algorithm, which requires a slow start to estimate the amount of traffic that can be sent before congestion occurs. In HTTP/1.0, this is compounded by the fact that each TCP request/response exchange is assigned a new connection, which results in a slow startup penalty.
Since then, the attempt to circumvent the slow start of TCP has been at the heart of consistent efforts to improve the HTTP protocol.
HTTP/1.1 introduced "backing" connections, allowing multiple request-response exchanges to be exchanged on the same TCP connection, without the need for a new connection establishment phase for each request. However, accepting HTTP/1.1 connections does not support sending multiple requests at the same time, again causing blockages due to the increasing complexity of web pages.
HTTP/2, a derivative of the now obsolete SPDY protocol, introduced the concept of first-class streams embedded in the same connection. This allowed simultaneous multiplexing of requests and responses, but with one serious disadvantage: when the packet loss increases, HTTP/2 performance degrades due to the way TCP handles packet retransmissions (HOL blocking). The impact can be high because all wires use the same connection. When packet loss exceeds a given threshold, paradoxically, more HTTP/1 connections are more efficient than HTTP/2.
As mentioned, QUIC has first-class streams that solve the problem of slow connection latency, as in HTTP/2. In addition, it processes them separately from each other, which solves performance issues due to packet loss. Using QUIC as a transport layer protocol is the biggest improvement over HTTP/3 over HTTP/2. Because QUIC initially implemented a number of flow-related features that were an integral part of the HTTP/2 specification, they could have been removed from HTTP/3. In addition, the implementation of QUIC was required to create a new HTTP header compression scheme, QPACK, because HTTP/2 HPACK header compression depends largely on the order in which TCP delivers packets to endpoints.
For several years now, Google has been using QUIC for its own services, including search, YouTube, and others, and has supported it in Chrome. For a while, Chrome was the only way to use QUIC when interacting with the Google services that support it. Mozilla recently added support for HTTP/3 in Firefox 72, but it's still experimental. The curl command-line tool also added support for HTTP/3 in version 7.66.0, as well as many additional features. On the server side, HTTP/3 is supported by LiteSpeed and Nginx.
Cloudflare and HTTP/3
On the cloud side, in addition to Google, Cloudflare announced a few months ago that it will temporarily enable HTTP/3 for some of its customers. Cloudflare is also the company behind Quiche, an open source Rust library for deploying HTTP/3 clients and servers.
As mentioned, HTTP/3 is still defined by the IETF and no official release date has been set yet. Meanwhile, HTTP/3 is growing globally, with almost 300,000 services worldwide using it. Google is still the top organization that introduces HTTP/3, but a few others have a small part. InfoQ will continue to communicate HTTP/3 in a timely manner to inform the public about the evolution of the Internet.