Microsoft has opened its implementation of the QUIC protocol used in HTTP / 3

Microsoft company announced about opening the library code msquic with network protocol implementation HERE C. The code is written in C language and spreads under the MIT license. The library is cross-platform and can be used not only in Windows, but also in Linux using s channel or OpenSSL for TLS 1.3. Support for other platforms is planned in the future.

The library is based on the code of the msquic.sys driver provided in the Windows 10 kernel (Insider Preview) to enable HTTP and SMB over QUIC. This includes the code used to implement HTTP/3 in the Windows internal stack and in .NET Core. The entire MsQuic library will be developed on GitHub using public reviews, pull requests, and GitHub Issues. An infrastructure has been prepared that checks each commit and pull request in a set of more than 4000 tests. After the development environment stabilizes, it is planned to accept changes from third-party developers.

MsQuic can already be used to create servers and clients, but not all of the functionality defined in the IETF specification is currently available. For example, there is no support for 0-RTT, client migration, Path MTU Discovery and Server Preferred Address control yet. Of the implemented features, optimization is noted to achieve maximum throughput and minimum delays, support for asynchronous I / O, RSS (Receive Side Scaling), the ability to combine input and output UDP streams. The MsQuic implementation has been tested for compatibility with experimental branches of Chrome and Edge browsers.

Recall that HTTP/3 standardizes the use of the QUIC protocol as a transport for HTTP/2. Protocol HERE C (Quick UDP Internet Connections) has been developed by Google since 2013 as an alternative to TCP + TLS for the Web, solving problems with long setup and negotiation times for connections in TCP and eliminating delays in case of packet loss during data transfer. QUIC is an add-on to the UDP protocol that supports multiplexing of multiple connections and provides encryption methods equivalent to TLS/SSL.

All features QUIC:

  • High security, similar to TLS (in fact, QUIC provides the ability to use TLS 1.3 over UDP);
  • Stream integrity control to prevent packet loss;
  • The ability to instantly establish a connection (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 receiving a response (RTT, Round Trip Time);
    Microsoft has opened its implementation of the QUIC protocol used in HTTP / 3

  • Do not use the same sequence number when retransmitting a packet, which allows you to avoid ambiguity in determining the received packets and get rid of timeouts;
  • Packet loss only affects the delivery of the stream associated with it and does not stop the delivery of data in streams transmitted in parallel over the current connection;
  • Error correction tools that minimize delays due to retransmission of lost packets. Use of special error correction codes at the packet level to reduce situations that require retransmission of lost packet data.
  • The boundaries of the cryptographic blocks are aligned with the boundaries of the QUIC packets, which reduces the impact of packet loss on the decoding of the contents of the following packets;
  • No problems with blocking the TCP queue;
  • Connection ID support to reduce reconnection time for mobile clients;
  • Possibility to connect advanced mechanisms for connection overload control;
  • Using bandwidth prediction techniques in each direction to ensure the optimal intensity of sending packets, preventing rolling into a state of congestion, in which there is a loss of packets;
  • Perceptible growth performance and throughput compared to TCP. For video services such as YouTube, QUIC has been shown to reduce video rebuffering operations by 30%.

Source: opennet.ru

Add a comment