Cloudflare propose un module pour prendre en charge HTTP / 3 dans NGINX

Cloudflare

Cloudflare a préparé un module pour fournir la prise en charge du protocole HTTP / 3 dans NGINX. Le module est terminé sous forme de cliché sur la bibliothèque de quiches développé chez Cloudflare avec l'implémentation du protocole de transport QUIC et HTTP / 3. Le code de la quiche est écrit en Rust, mais le module pour NGINX est écrit en C et accède à la bibliothèque via des liens dynamiques. Les heures d'ouverture sont ouvertes sous la licence BSD.

Depuis le logiciel client, La prise en charge de HTTP / 3 a déjà été ajoutée aux versions expérimentales de Chrome Canary et l'utilitaire curl. Du côté du serveur, l'utilisation d'implémentations de test isolées qui ont des capacités limitées a jusqu'à présent été requise. La possibilité de gérer HTTP / 3 dans nginx simplifiera considérablement le déploiement des serveurs avec le support HTTP / 3 et cela rendra la mise en œuvre test du nouveau protocole plus accessible.

HTTP / 3 standardise l'utilisation du protocole QUIC comme transport pour HTTP / 2. Le protocole QUIC a été développé par Google comme alternative à TCP + TLS pour le Web, vise à résoudre des problèmes avec une longue période d'installation et de coordination des composés en TCP et retarde l'élimination de la perte de paquets pendant la transmission de données. QUIC est un plug-in du protocole UDP qui prend en charge le multiplexage de plusieurs connexions et fournit des méthodes de cryptage équivalentes à TLS / SSL.

Parmi les principales caractéristiques de QUIC qui se démarquent:

  • Haute sécurité, similaire à TLS (en fait, QUIC offre la possibilité d'utiliser TLS sur UDP).
  • Contrôle d'intégrité de flux qui empêche la perte de paquets.
  • La possibilité d'établir une connexion instantanément (0-RTT, dans environ 75% des cas, les données peuvent être transférées immédiatement après l'envoi du paquet de configuration de connexion) et d'assurer des délais minimaux entre l'envoi d'une demande et la réception d'une réponse (RTT, Round Trip Time) .
  • Ne pas utiliser le même numéro de séquence lors de la retransmission d'un paquet, ce qui évite toute ambiguïté dans la détermination des paquets reçus et élimine les délais d'expiration.
  • La perte d'un paquet affecte uniquement la livraison du flux qui lui est associé et n'interrompt pas la livraison des données dans les flux transmis en parallèle sur la connexion en cours.
  • Des outils de correction d'erreurs qui minimisent les retards dus à la retransmission des paquets perdus. L'utilisation de codes spéciaux de correction d'erreur au niveau des paquets pour réduire les situations qui nécessitent la retransmission de données de paquets perdues.
  • Les limites des blocs cryptographiques sont alignées sur les limites des paquets QUIC, ce qui réduit l'effet de la perte de paquets sur le décodage du contenu des paquets suivants
  • Aucun problème de blocage de la file d'attente TCP
  • Prise en charge de l'identifiant de connexion, ce qui réduit le temps d'établissement d'une reconnexion pour les clients mobiles
  • Possibilité de connecter des mécanismes avancés pour contrôler la surcharge de connexion
  • Utilisation de la technique de prédiction de la bande passante dans chaque direction pour assurer une intensité optimale d'envoi de paquets, l'empêchant d'atteindre un état d'encombrement dans lequel une perte de paquets est observée
  • Performances et gains de performances remarquables par rapport à TCP. Pour les services vidéo comme YouTube, QUIC a montré une réduction de 30% des opérations de remise en mémoire tampon lors du visionnage de vidéos.

Comment implémenter le module pour prendre en charge HTTP / 3 dans NGINX?

Pour ceux qui souhaitent pouvoir implémenter ce module sur leur serveur, Ils peuvent le faire en suivant les instructions que nous partageons ci-dessous.

Pour le compiler, il leur suffit de télécharger le patch pour nginx 1.16 et le code de la bibliothèque de quiches.

curl -O https://nginx.org/download/nginx-1.16.1.tar.gz

tar xzvf nginx-1.16.1.tar.gz

git clone --recursive https://github.com/cloudflare/quiche

cd nginx-1.16.1

patch -p01 < ../quiche/extras/nginx/nginx-1.16.patch

Et nous compilons NGINX avec le support HTTP / 3 activé:

 ./configure                                 \

--prefix=$PWD                           \

--with-http_ssl_module                  \

--with-http_v2_module                   \

--with-http_v3_module                   \

--with-openssl=../quiche/deps/boringssl \

--with-quiche=../quiche

make

Lors de la compilation, le support TLS doit être basé sur la bibliothèque BoringSSL ("–with-openssl = .. / quiche / deps / boringssl"), l'utilisation d'OpenSSL n'est pas encore prise en charge.

Pour accepter les connexions dans la configuration, ils devront ajouter la directive listener avec le drapeau "quic".


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.