Quick UDP Internet Connection (QUIC)

From air
Revision as of 13:52, 16 October 2015 by Youcef.Hamdani (talk | contribs) (→‎Avantages)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

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

Avant propos

Protocoles de transport de base UDP/TCP

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.

TCP/UDP fonctionnement

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.

Fonctionnemment de SPDY

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.

Quic

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.

couche QUIC

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 fonctionnement

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.

Etablissement de connexion TCP, TCP + TLS, QUIC

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...

QUIC changement d'interface réseau

Liens externes