La société Microsoft ouverture du code de la bibliothèque avec l'implémentation du protocole réseau . Le code est écrit en langage C et sous licence MIT. La bibliothèque est multiplateforme et peut être utilisée non seulement sous Windows, mais aussi sous Linux avec l'utilisation de ou OpenSSL pour TLS 1.3. D'autres plateformes devraient être prises en charge à l'avenir.
La bibliothèque est basée sur le code du pilote msquic.sys, fourni dans le noyau de Windows 10 (Insider Preview) pour assurer le fonctionnement des protocoles HTTP et au-dessus de QUIC. Ce code est également utilisé pour la mise en œuvre de HTTP/3 dans la pile interne de Windows et dans .NET Core. Le développement de la bibliothèque MsQuic se fera entièrement sur GitHub en utilisant des revues publiques, des demandes de tirage (pull requests) et des issues GitHub. Une infrastructure a été mise en place pour vérifier chaque commit et chaque demande de tirage avec un ensemble de plus de 4000 tests. Après la stabilisation de l'environnement de développement, il est prévu d'accepter les modifications des développeurs externes.
MsQuic peut déjà être utilisé pour créer des serveurs et des clients, mais toutes les fonctionnalités définies dans la spécification IETF ne sont pas encore disponibles. Par exemple, il n'y a pas encore de prise en charge de 0-RTT, de migration des clients, de Path MTU Discovery et de gestion de la sélection d'adresses pour le serveur (Server Preferred Address). Parmi les fonctionnalités mises en œuvre, on note l'optimisation pour atteindre un maximum de bande passante et un minimum de latence, le support de l'entrée/sortie asynchrone, RSS (Receive Side Scaling), et la possibilité de fusionner les flux UDP entrants et sortants. L'implémentation de MsQuic a été testée pour sa compatibilité avec les branches expérimentales des navigateurs Chrome et Edge.
Rappelons que HTTP/3 standardise l'utilisation du protocole QUIC en tant que transport pour HTTP/2. Le protocole (Quick UDP Internet Connections) est développé par Google depuis 2013 comme une alternative à la combinaison TCP+TLS pour le Web, résolvant les problèmes de latence dans l'établissement et l'accord des connexions TCP et éliminant les retards dus aux pertes de paquets pendant le transfert de données. QUIC représente une couche au-dessus du protocole UDP, prenant en charge le multiplexage de plusieurs connexions et fournissant des méthodes de cryptage équivalentes à TLS/SSL.
Principales QUIC :
- Une sécurité élevée, similaire à TLS (en réalité QUIC permet l'utilisation de TLS 1.3 sur UDP);
- Contrôle de l'intégrité du flux, empêchant la perte de paquets ;
- Possibilité d'établir une connexion instantanément (0-RTT, dans environ 75% des cas les données peuvent être transmises immédiatement après l'envoi du paquet d'établissement de connexion) et de garantir des délais minimaux entre l'envoi de la demande et la réception de la réponse (RTT, Round Trip Time) ;
- Non-utilisation lors de la retransmission d'un paquet du même numéro de séquence, permettant d'éviter toute ambiguïté lors de la détermination des paquets reçus et d'éliminer les délais d'attente ;
- La perte d'un paquet n'affecte que la livraison du flux qui lui est associé et ne bloque pas la livraison des données dans les flux simultanément transmis via la connexion actuelle ;
- Les mécanismes de correction d'erreurs réduisent les délais dus à la retransmission des paquets perdus. L'utilisation de codes spécifiques de correction d'erreurs au niveau du paquet permet de réduire les situations nécessitant la retransmission des données d'un paquet perdu.
- Les limites des blocs cryptographiques sont alignées sur les limites des paquets QUIC, ce qui réduit l'impact des pertes de paquets sur le décodage du contenu des paquets suivants ;
- Absence de problèmes de blocage de la queue TCP.
- Support de l'identifiant de connexion, permettant de réduire le temps d'établissement d'une reconnexion pour les clients mobiles.
- Capacité à se connecter à des mécanismes avancés de contrôle de congestion.
- Utilisation de techniques de prévision de bande passante dans chaque direction pour garantir une intensité d'envoi optimale des paquets, empêchant un glissement vers un état de congestion, où des pertes de paquets sont observées.
- Une augmentation de performance et de bande passante par rapport à TCP. Pour les services vidéo tels que YouTube, l'application de QUIC a montré une réduction de 30% des opérations de re-buffering lors du visionnage de vidéos.
Source : opennet.ru
