The Mozilla developers who are in charge of the development of Firefox recently announced that Firefox nightly builds, as well as beta version, is already enabled by default the protocol HTTP / 3.
HTTP / 3 support in Firefox is based on the neqo project developed by Mozilla, which provides a client and server implementation for the QUIC protocol.
The component code to support HTTP / 3 and QUIC is written in Rust. To control the inclusion of HTTP / 3 in about: config, the “network.http.http3.enabled” option is provided.
From the client software, experimental support for HTTP 3 has already been added to Chrome and curl, and for servers it is available in nginx, as well as in the form of an nginx module and a test server from Cloudflare. Several test sites have been launched to test the operation of HTTP / 3 clients.
HTTP / 3 is still in the draft specification stage and it has not been fully standardized by the IETF. HTTP / 3 defines the use of the QUIC protocol as a transport for HTTP / 2.
The protocol QUIC (Fast UDP Internet Connections) since 2013 it has been developed by Google as an alternative to TCP + TLS for the Web, This solves problems with long TCP connection setup and negotiation times and eliminates packet loss delays during data transmission.
QUIC is a plug-in over UDP that supports multiplexing of multiple connections and provides encryption methods equivalent to TLS / SSL. During the development of the standard in the IETF, changes were made to the protocol, which led to the appearance of two parallel branches, one for HTTP / 3 and the other compatible with Google (Chrome supports both options).
Of the key features of QUIC the following stand out:
- High security similar to TLS (in fact, QUIC provides the ability to use TLS over UDP).
- Transmission integrity control, avoiding packet loss.
- The ability to establish a connection instantly (0-RTT, in about 75% of cases, data can be transmitted immediately after sending a connection setup packet) and ensure minimal delays between sending a request and receipt of a response (RTT, Round Trip Time).
- Use a different sequence number when retransmitting a packet, which avoids ambiguity in the identification of received packets and eliminates waiting times.
- Losing a packet affects delivery only of the stream associated with it and does not stop the delivery of data in parallel streams transmitted over the current connection.
- Error correction tools that minimize delays due to retransmission of lost packets. The use of special packet level error correction codes to reduce situations that require retransmission of lost data packets.
- Crypto block boundaries are aligned with QUIC packet boundaries, reducing the impact of packet loss on decoding the content of subsequent packets.
- There are no problems blocking the TCP queue.
- Support for a connection ID to reduce the time required to configure a reconnection for mobile clients.
- Possibility of connecting extended mechanisms to control connection congestion.
- Use the technique of predicting the performance in each direction to ensure the optimal packet delivery rate, avoiding falling into a state of congestion, in which there is a loss of packets.
- Remarkable performance and bandwidth gains over TCP. For video services like YouTube, the use of QUIC has shown a 30% reduction in buffering while watching the video.
Finally, on the stable branch, the inclusion of HTTP / 3 is scheduled to the launch of Firefox 88, scheduled for April 20.
If you want to know more about it About enabling HTTP / 3 support in Firefox, you can check the details In the following link.