Lansare preliminară nginx cu suport pentru QUIC și HTTP/3

Compania NGINX a anunțat despre începutul testării implementare protocolelor QUIC și HTTP/3 în serverul HTTP și proxy nginx. Implementarea se bazează pe schița 27 specificației IETF-QUIC și este disponibilă prin un repository separat, derivat din versiunea 1.19.0. Codul este distribuit sub licența BSD și nu se intersectează cu implementarea propusă anterior a HTTP/3 pentru nginx de către compania Cloudflare, care este un proiect separat.

Suportul HTTP/3 în nginx este marcat ca experiment, deoarece nu toate funcționalitățile protocolului sunt implementate. Totuși, nginx poate fi deja utilizat pentru a trimite răspunsuri la cereri simple HTTP/3 peste QUIC și pentru a încărca/să ofere fișiere mari. Printre funcționalitățile lipsă ale protocolului se numără mecanismele de negociere a versiunii protocolului, ECN și controlul congestionării, jurnalele structurate, modul de recuperare (QUIC recovery, controlul fluxului și congestionării), NAT Rebinding, adresele mobile, Server push, atașarea datelor (trailer). De asemenea, există doar un suport de bază pentru procesarea pachetelor ACK și controlul fluxului, care necesită îmbunătățiri. Nu toate cerințele standardului au fost îndeplinite.

Pentru a activa HTTP/3, este necesar să compilezi nginx cu modulul http_v3_module și să adaugi o directivă suplimentară
„listen” cu flag-ul „http3” pentru a crea un socket UDP. De exemplu:

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

ssl_protocols TLSv1.3; # în QUIC TLS 1.3 este obligatoriu
ssl_certificate ssl/www.example.com.crt;
ssl_certificate_key ssl/www.example.com.key;

add_header Alt-Svc ‘quic=»:443’‘; # indicator al disponibilității QUIC
add_header QUIC-Status $quic; # Header cu statusul utilizării QUIC
}

Reamintim că HTTP/3 standardizează utilizarea protocolului QUIC ca transport pentru HTTP/2. Protocolul QUIC (Quick UDP Internet Connections) este dezvoltat din 2013 de către Google ca o alternativă la combinația TCP+TLS pentru Web, rezolvând problemele cu timpul mare de stabilire și negociere a conexiunilor în TCP și eliminând întârzierile în cazul pierderii pachetelor în timpul transferului de date. QUIC reprezintă o extensie a protocolului UDP, suportând multiplexarea mai multor conexiuni și oferind metode de criptare echivalente TLS/SSL. Pe partea de client, suportul experimental pentru HTTP/3 a fost deja adăugat în Curl, Firefox și Chromium.

Lansare preliminară nginx cu suport pentru QUIC și HTTP/3

Principalele grafica realizată prin WebGL și QUIC:

  • Siguranță ridicată, similară TLS (în esență QUIC oferă posibilitatea utilizării TLS 1.3 peste UDP);
  • Controlul integrității fluxului, prevenind pierderea pachetelor;
  • Posibilitatea de a stabili instantaneu o conexiune (0-RTT, în aproximativ 75% din cazuri, datele pot fi transmise imediat după trimiterea pachetului de stabilire a conexiunii) și de a asigura întârzieri minime între trimiterea cererii și primirea răspunsului (RTT, Round Trip Time);
    Lansare preliminară nginx cu suport pentru QUIC și HTTP/3
  • Neutilizarea la retransmiterea pachetului cu același număr de secvență, ceea ce permite evitarea ambiguităților în determinarea pachetelor primite și eliminarea timeout-urilor;
  • Pierderea unui pachet afectează livrarea doar a fluxului asociat și nu oprește livrarea datelor în fluxurile transmise în paralel prin conexiunea curentă;
  • Mijloace de corectare a erorilor, care minimizează întârzierile cauzate de retransmisia pachetelor pierdute. Utilizarea unor coduri speciale de corectare a erorilor la nivel de pachet pentru a reduce situațiile care necesită retransmiterea datelor din pachetul pierdut.
  • Limitele blocurilor criptografice sunt aliniate cu limitele pachetelor QUIC, ceea ce reduce impactul pierderilor de pachete asupra decodificării conținutului pachetelor următoare;
  • Lipsa problemelor cu blocarea cozii TCP;
  • Suport pentru identificatorul de conexiune, care permite reducerea timpului de reinstaurare a conexiunii pentru clienți mobile;
  • Posibilitatea de a activa mecanisme extinse de control al supraîncărcării conexiunii;
  • Utilizarea tehnicii de previzionare a capacității de transmisie în fiecare direcție pentru a asigura o intensitate optimă a trimiterii pachetelor, prevenind astfel ajungerea într-o stare de supraîncărcare, în care se observă pierderi de pachete;
  • Un salt semnificativ în performanță și lățime de bandă, comparativ cu TCP. Pentru serviciile video, cum ar fi YouTube, utilizarea QUIC a arătat o reducere a operațiunilor de rebuffering în timpul vizionării video cu 30%.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster