Cloudflare a implementat un modul pentru a suporta HTTP/3 în NGINX

Compania Cloudflare pregătit modul pentru a oferi suport pentru protocolul HTTP/3 în NGINX. Modulul este conceput ca un supliment pentru biblioteca dezvoltată de Cloudflare Tarta cu implementarea protocolului de transport QUIC și HTTP/3. Codul quiche este scris în Rust, dar modulul NGINX în sine este scris în C și accesează biblioteca folosind link-ul dinamic. Evoluții deschis sub licența BSD.

Pentru a asambla, descărcați plasture la nginx 1.16 și cod biblioteci quiche, apoi reconstruiți nginx cu opțiunile „—with-http_v3_module —with-quiche=../quiche”. La construirea, suportul TLS ar trebui să se bazeze pe biblioteca BoringSSL (“--with-openssl=../quiche/deps/boringssl”), utilizarea OpenSSL nu este încă acceptată. Pentru a accepta conexiuni, trebuie să adăugați directiva listen cu indicatorul „quic” la setări (de exemplu, „listen 443 quic reuseport”).

În software-ul client, suportul HTTP/3 a fost deja adăugat la versiunile experimentale ale Chrome Canary și utilitarul curl. Pe partea de server, până acum era necesar să se folosească separat, limitat implementări de testare. Abilitatea de a procesa HTTP/3 în nginx va simplifica în mod semnificativ implementarea serverelor cu suport HTTP/3 și va face implementarea de testare a noului protocol mai accesibilă. Apariția suportului standard pentru HTTP/3 în nginx este de așteptat în ramura 1.17.x timp de 6-12 luni.

Amintiți-vă că HTTP/3 standardizează utilizarea protocolului QUIC ca transport pentru HTTP/2. Protocol QUIC (Quick UDP Internet Connections) a fost dezvoltat de Google din 2013 ca o alternativă la combinația TCP+TLS pentru Web, rezolvând problemele cu timpi lungi de configurare și negociere pentru conexiunile în TCP și eliminând întârzierile atunci când pachetele sunt pierdute în timpul transferului de date. QUIC este o extensie a protocolului UDP care acceptă multiplexarea conexiunilor multiple și oferă metode de criptare echivalente cu TLS/SSL.

Principalul caracteristici RAPID:

  • Securitate ridicată similară cu TLS (în esență QUIC oferă posibilitatea de a utiliza TLS peste UDP);
  • Controlul integrității fluxului, prevenind pierderea pachetelor;
  • Capacitatea de a stabili instantaneu o conexiune (0-RTT, în aproximativ 75% din cazuri datele pot fi transmise imediat după trimiterea pachetului de configurare a conexiunii) și de a oferi întârzieri minime între trimiterea unei cereri și primirea unui răspuns (RTT, Round Trip Time);
  • Neutilizarea aceluiași număr de secvență la retransmiterea unui pachet, ceea ce evită ambiguitatea în identificarea pachetelor primite și scapă de timeout-uri;
  • Pierderea unui pachet afectează doar livrarea fluxului asociat cu acesta și nu oprește livrarea datelor în fluxuri paralele transmise prin conexiunea curentă;
  • Funcții de corectare a erorilor care minimizează întârzierile datorate retransmiterii pachetelor pierdute. Utilizarea codurilor speciale de corectare a erorilor la nivel de pachet pentru a reduce situațiile care necesită retransmiterea pachetelor de date pierdute.
  • Granițele blocurilor criptografice sunt aliniate cu granițele pachetelor QUIC, ceea ce reduce impactul pierderilor de pachete asupra decodării conținutului pachetelor ulterioare;
  • Fără probleme cu blocarea cozii TCP;
  • Suport pentru identificatorul de conexiune, care reduce timpul necesar pentru stabilirea unei reconectari pentru clienții mobili;
  • Posibilitatea de conectare a mecanismelor avansate de control al congestionării conexiunii;
  • Utilizează tehnici de prognoză a debitului pe direcție pentru a se asigura că pachetele sunt trimise la rate optime, prevenind congestionarea acestora și pierderea pachetelor;
  • Perceptibil creştere performanță și debit în comparație cu TCP. Pentru serviciile video precum YouTube, s-a demonstrat că QUIC reduce operațiunile de rebuffering la vizionarea videoclipurilor cu 30%.
  • Sursa: opennet.ru

Adauga un comentariu