Version préliminaire de nginx avec prise en charge de QUIC et HTTP/3

La société NGINX a annoncé a annoncé le début des tests implementation des protocoles QUIC et HTTP/3 dans le serveur HTTP et le proxy nginx. L'implémentation est basée sur le brouillon 27 de la spécification IETF-QUIC et est disponible via un dépÎt distinct, dérivé de la version 1.19.0. Le code est distribué sous licence BSD et ne chevauche pas l'implémentation proposée précédemment de HTTP/3 pour nginx réalisée par Cloudflare, qui est un projet distinct.

La prise en charge de HTTP/3 dans nginx est marquĂ©e comme expĂ©rimentale, car toutes les fonctionnalitĂ©s du protocole ne sont pas encore implĂ©mentĂ©es. Cependant, nginx peut dĂ©jĂ  ĂȘtre utilisĂ© pour rĂ©pondre Ă  des requĂȘtes simples HTTP/3 sur QUIC et pour le tĂ©lĂ©chargement/envoi de fichiers lourds. Les fonctionnalitĂ©s encore manquantes du protocole incluent les mĂ©canismes de nĂ©gociation de version, ECN et contrĂŽle de congestion, les journaux structurĂ©s, le mode de rĂ©cupĂ©ration (QUIC recovery, gestion de flux et congestion), le NAT Rebinding, les adresses mobiles, le Server push et l'ajout de donnĂ©es (trailer). De plus, seul un support de base du traitement des paquets ACK et de gestion de flux est proposĂ©, ce qui nĂ©cessite des amĂ©liorations. Toutes les exigences de la norme ne sont pas prises en compte.

Pour activer HTTP/3, il est nécessaire de compiler nginx avec le module http_v3_module et d'ajouter une directive supplémentaire
« listen » avec l'option « http3 » pour créer un socket UDP d'écoute. Par exemple :

server {
listen 443 ssl; # socket TCP pour HTTP/1.1
listen 443 http3 reuseport; # socket UDP pour QUIC+HTTP/3

ssl_protocols TLSv1.3; # TLS 1.3 est requis dans QUIC
ssl_certificate ssl/www.example.com.crt;
ssl_certificate_key ssl/www.example.com.key;

add_header Alt-Svc ‘quic=»:443″‘; # indication de la disponibilitĂ© de QUIC
add_header QUIC-Status $quic; # En-tĂȘte avec le statut d'utilisation de QUIC
}

Rappelons que HTTP/3 standardise l'utilisation du protocole QUIC en tant que transport pour HTTP/2. Le protocole QUIC (Quick UDP Internet Connections) développé par Google depuis 2013 comme alternative à la combinaison TCP+TLS pour le Web, résolvant les problÚmes de temps d'établissement et de négociation de connexions en TCP et éliminant les retards dus à la perte de paquets lors de la transmission de données. QUIC est une superposition du protocole UDP, prenant en charge le multiplexage de plusieurs connexions et offrant des méthodes de chiffrement équivalentes à TLS/SSL. Du cÎté du logiciel client, le support expérimental de HTTP/3 a déjà été ajouté dans Curl, Firefox et Chromium.

Version préliminaire de nginx avec prise en charge de QUIC et HTTP/3

Principales caractéristiques 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) ;
    Version préliminaire de nginx avec prise en charge de QUIC et HTTP/3
  • 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 remarquable 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

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster