Quick UDP Internet Connection (QUIC)

=Contexte=
 * Enseignants : Georges-Pierre Bonneau, Didier Donsez (VT2015)
 * Sujet : Quick UDP Internet Connection (QUIC)
 * Auteur : Hamdani Youcef
 * Date: 16 octobre 2015

=Mots clés= Protocole de transport, transport multiplexé, UDP(User Datagram Protocol), amélioration de la latence, 0-RTT.

=Résumé= QUIC (Quick UDP Internet Connection) est un protocole de transport réseau expérimental conçu par Google (Jim Roskind plus précisément). QUIC prend en charge un ensemble de connexions multiplexées entre deux points de terminaison à travers UDP (User Datagram Protocol), et a été conçu pour fournir une protection équivalente à TLS / SSL, avec une connexion et une latence réduite. De plus, une estimation de la bande passante dans chaque direction permet d'éviter la congestion. L'objectif principal de QUIC est d'améliorer la performance perçue des applications Web orientées connexion qui utilisent actuellement TCP (Transmission Control Protocol).

=Abstract= QUIC (Quick UDP Internet Connection) is an experimental network transport protocol designed by Google (Jim Roskind specifically). QUIC supports a set of multiplexed connections between two endpoints over UDP (User Datagram Protocol), and was designed to provide security protection equivalent to TLS / SSL along with reduced connection and transport latency. In addition, an estimation of bandwidth in each direction allows QUIC to avoid congestion. The main objective of QUIC is to improve the perceived performance of the connection-oriented Web applications that currently use TCP (Transmission Control Protocol).

=Synthèse=

Le protocole UDP
UDP est un protocole orienté "non connexion". Pour faire simple, lorsqu'une machine A envoie des paquets à destination d'une machine B, ce flux est unidirectionnel. En effet, la transmission des données se fait sans prévenir le destinataire (la machine B), et le destinataire reçoit les données sans effectuer d'accusé de réception vers l'émetteur (la machine A). Ceci est dû au fait que l'encapsulation des données envoyées par le protocole UDP ne permet pas de transmettre les informations concernant l'émetteur. De ce fait, le destinataire ne connait pas l'émetteur des données hormis son IP.

Le protocole TCP
Contrairement à l'UDP, le TCP est orienté "connexion". Lorsqu'une machine A envoie des données vers une machine B, la machine B est prévenue de l'arrivée des données, et témoigne de la bonne réception de ces données par un accusé de réception. Ici, intervient le contrôle CRC des données. Celui-ci repose sur une équation mathématique, permettant de vérifier l'intégrité des données transmises. Ainsi, si les données reçues sont corrompues, le protocole TCP permet aux destinataires de demander à l'émetteur de renvoyer les données corrompues.

SPDY
SPDY (prononcé « Speedy » pour rapide en anglais) est un protocole réseau expérimental fonctionnant sur la couche application au dessus de TCP et créé pour transporter du contenu Web. SPDY est une proposition, conçue par Google, visant à augmenter les capacités du protocole HTTP sans toutefois remplacer ce dernier. Le but premier de SPDY est de réduire la durée de téléchargement des pages Web en classant par ordre de priorité et en multiplexant le transfert de plusieurs fichiers (ceux composant une page web) de façon à ce qu'une seule connexion soit requise. Un inconvénient de ce protocole réside dans la perte de paquets. En effet, ce protocole étant basé sur TCP, la perte de paquets entraînera une réémission qui peut bloquer le serveur en attendant son arrivée.

Présentation
Contrairement à SPDY, QUIC est basé sur UDP. Cela permet de réduire le nombre d’allers et retours entre le client et le serveur, avant que le navigateur puisse enfin interpréter la page web à afficher. QUIC propose de réduire à zéro le nombre d’allers-retours, une vraie révolution car cela améliore considérablement le temps de connexion à internet, en annulant le temps de latence.

Fonctionnement
QUIC permet d'envoyer des requêtes en parallèles sur plusieurs canaux. A l'inverse de TCP, le nombre de canaux n'a pas d'impact sur la latence puisque UDP est orienté non-connexion. Le fait d'avoir plusieurs canaux permet aussi de gérer la perte de paquets sans bloquer le serveur contrairement a SPDY. QUIC n'est pas simplement une utilisation parallèle de canaux UDP puisque le protocole gère la perte de paquets grâce à une correction d'erreurs directe (ajout d'un paquet artificiel FEC Forward Error Correction qui est un XOR des 3 paquets précédents). De plus, alors que TCP utilise des fenêtres de congestion, QUIC dispose d'un ensemble de techniques modernes comme la retransmission spéculative proactive (envoyer des copies de paquets importants, tels que ceux contenant la correction d'erreurs ou de négociation de chiffrement initial). Enfin, QUIC peut réduire ou comprimer les transmissions de données redondantes (tels que les en-têtes) afin de faire de nombreuses demandes HTTP(S) dans une seule fenêtre de congestion initiale.

Les préoccupations concernant la connectivité UDP (la crainte que trop d'utilisateurs bloquent le trafic UDP) ont été atténuées par Chrome. Pour les faibles pourcentages d'utilisateurs qui ont UDP bloqué, QUIC revient automatiquement à la connectivité basée sur TCP.

Avantages
QUIC s’appuie sur un mécanisme de reconnaissance du client qui s’est précédemment connecté au serveur afin d’éviter la phase de validation pour autoriser la connexion en réduisant le nombre d’allers-retours à zéro. le client pourra alors directement envoyer des données au serveur sans perdre de temps avec des échanges préliminaires. Selon les développeurs dédiés au projet chez Google, QUIC permettrait d’établir une connexion en 0 à 100 millisecondes contre 200 et 300 ms pour une requête HTTPS et 100 ms en HTTP. Avec la recherche Google, le temps de chargement d'une page dite moyenne est amélioré de 3 %. Un gain qui paraît minime mais demeure significatif compte tenu des diverses optimisations déjà exploitées. Pour des connexions à YouTube à travers QUIC, Google fait valoir une diminution de 30 % du rebuffering lors de la consultation de vidéos et affirme que 75 % des connexions peuvent tirer parti de la fonctionnalité zero-round-trip de QUIC.

Un autre avantage de QUIC réside dans les connexions mobiles. En effet, TCP utilise une paire [adresse IP-numéro de port] pour identifier une connexion. QUIC quant à lui se sert d'un numéro d'identification unique qu'il génère. Cela permet d'éviter de rétablir une connexion entre client/serveur même après changement d'interface réseau et donc d'adresse IP. On peut prendre l'exemple d'un utilisateur de smartphone qui passe de sa connexion WIFI à sa connexion 4G pour naviguer sur internet, ce changement d'interface n'aura pas d'impact sur la connexion puisque l'identifiant de connexion unique QUIC persistera contrairement à L'adresse IP. On peut imaginer de nombreuses évolutions à cette technologie comme l'utilisation parallèle d'un réseau 4G et WIFI...

=Liens externes=
 * link HTTP over UDP: an Experimental Investigation of QUIC
 * link QUIC, le nouveau protocole Google pour accélérer le web
 * link QUIC From Wikipedia, the free encyclopedia
 * link QUIC: next generation multiplexed transport over UDP
 * link QUIC, a multiplexed stream transport over UDP
 * link Multiplexed Stream Transport over UDP