Quick UDP Internet Connections (QUIC) is an experimental protocol proposed by Google, which is designed to provide security and reliability along with reduced connection and transport latency.
Google has already deployed QUIC protocol in their servers and do client implementation in the Chrome web browsers. The main idea behind QUIC is to use the UDP to overcome the SPDY inefficiencies. Along with this an encryption protocol that can be designed in an adhoc manner named ‘QUIC Crypto’, provides transport security service similar to TLS. When the UDP is unreliable and does not implement congestion control, QUIC implements retransmissions and congestion control at the application layer. Furthermore, in order to inherit its benefits, QUIC leverages most part of the SPDY design choices.
Features of QUIC:
The QUIC multiplexing feature has been inherited from SPDY and provides:
1) Prioritization among QUIC streams.
2) Traffic bundling over the same UDP connection.
3) Compression of HTTP headers over the same connection.
(B) Connection startup latency and security
The time required to setup a TCP connection is one RTT for a handshake and at least one extra RTT or two in the case of an encrypted connection over TLS. When QUIC is used the time taken to set up a connection is at most one RTT. Here, the startup latency takes zero RTT even in the case of an encrypted connection. QUIC-Crypto decrypts packets independently and avoids serialized decoding dependency, which would damage QUIC’s ability to provide out of order delivery to reduce the HOL.
(C) Forward Error Correction
The Forward Error Correction module comes with packet losses. The module is particularly effective in reducing HOL over a single QUIC stream by promptly recovering a lost packet, especially in the case of high RTT where retransmissions can considerably affect the HOL latency.
(D) Pluggable Congestion Control
QUIC has been designed to support two congestion control algorithms. The first is an implementation of the TCP CUBIC and the second is pacing-based congestion control algorithm that computes the application sending rate based on an estimate of the relative forward delay defined as the difference between the inter-arrival time of two consecutive data packets at the receiver and the inter-departure time of the same packets at the sender.
(E) Connection Identifier
A QUIC connection is uniquely identified by a CID (Connection Identifier) at the application layer and not by the pairs of IP addresses and port number. The first advantage is that since CIDs are not based on IP addresses, any handover between two networks can be transparently handled by QUIC without re-establishing the connection. Moreover, the CID is useful in the case of NAT unbinding and while restoring a connection, a new pair of IP addresses is typically required.
When comparing the performance of the latest QUIC with the other standard HTTP requests under different network conditions, QUIC shows higher output with respect to TCP CUBIC, especially in the case of under buffered networks and also in the presence of random losses, but at the cost of an increased packet loss ratio.