Cloudflare oferă un modul care acceptă HTTP / 3 în NGINX

Cloudflare

Cloudflare a pregătit un modul pentru a oferi suport pentru protocolul HTTP / 3 din NGINX. Modulul este gata sub forma unui snap pe biblioteca quiche dezvoltat la Cloudflare cu implementarea protocolului de transport QUIC și HTTP / 3. Codul quiche este scris în Rust, dar modulul pentru NGINX este scris în C și accesează biblioteca prin legături dinamice. Orele de funcționare sunt deschise sub licența BSD.

Din software-ul clientului, Suportul HTTP / 3 a fost deja adăugat la versiunile experimentale Chrome Canary și utilitatea curl. Pe partea de server, până acum a fost necesară utilizarea unor implementări de test izolate care au capacități limitate. Capacitatea de a gestiona HTTP / 3 în nginx va simplifica semnificativ implementarea serverelor cu suport HTTP / 3 și va face implementarea testului noului protocol mai accesibilă.

HTTP / 3 standardizează utilizarea protocolului QUIC ca transport pentru HTTP / 2. Protocolul QUIC a fost dezvoltat de Google ca o alternativă la TCP + TLS pentru web, prin urmare intenționează să rezolve problemele cu o lungă perioadă de instalare și coordonare a compușilor în TCP și întârzie eliminarea pierderii de pachete în timpul transmiterii datelor. QUIC este un plug-in la protocolul UDP care acceptă multiplexarea mai multor conexiuni și oferă metode de criptare echivalente cu TLS / SSL.

Printre caracteristicile cheie ale QUIC care se remarcă:

  • Securitate ridicată, similară cu TLS (de fapt, QUIC oferă posibilitatea de a utiliza TLS peste UDP).
  • Controlul integrității fluxului care previne pierderea pachetelor.
  • Capacitatea de a stabili o conexiune instantaneu (0-RTT, în aproximativ 75% din cazuri, datele pot fi transferate imediat după trimiterea pachetului de configurare a conexiunii) și asigură întârzieri minime între trimiterea unei cereri și primirea unui răspuns (RTT, Round Trip Time) .
  • Nu utilizați același număr de ordine atunci când retransmiteți un pachet, ceea ce evită ambiguitatea în determinarea pachetelor primite și elimină expirările.
  • Pierderea unui pachet afectează livrarea numai a fluxului asociat acestuia și nu oprește livrarea de date în fluxuri transmise în paralel prin conexiunea curentă.
  • Instrumente 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 datelor de pachete pierdute.
  • Limitele blocurilor criptografice sunt aliniate cu limitele pachetelor QUIC, reducând efectul pierderii pachetelor asupra decodificării conținutului pachetelor ulterioare
  • Nu există probleme cu blocarea cozii TCP
  • Suport pentru identificatorul de conexiune, care reduce timpul pentru stabilirea unei reconectări pentru clienții mobili
  • Abilitatea de a conecta mecanisme avansate pentru a controla supraîncărcarea conexiunii
  • Utilizarea tehnicii de predicție a lățimii de bandă în fiecare direcție pentru a asigura intensitatea optimă a redirecționării pachetelor, împiedicându-l să ajungă la o stare de congestie în care se observă pierderea pachetelor
  • Performanță remarcabilă și câștiguri de performanță față de TCP. Pentru serviciile video precum YouTube, QUIC a arătat o reducere de 30% a operațiunilor de re-tamponare la vizionarea videoclipurilor.

Cum se implementează modulul care acceptă HTTP / 3 în NGINX?

Pentru cei care sunt interesați să poată implementa acest modul pe serverul lor, O pot face urmând instrucțiunile pe care le împărtășim mai jos.

Pentru a o compila, trebuie doar să descarce patch-ul pentru nginx 1.16 și codul bibliotecii quiche.

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

Și compilăm NGINX cu suport HTTP / 3 activat:

 ./configure                                 \

--prefix=$PWD                           \

--with-http_ssl_module                  \

--with-http_v2_module                   \

--with-http_v3_module                   \

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

--with-quiche=../quiche

make

În timpul compilării, suportul TLS trebuie să se bazeze pe biblioteca BoringSSL („–cu-openssl = .. / quiche / deps / boringssl”), utilizarea OpenSSL nu este încă acceptată.

Pentru a accepta conexiuni în configurație, vor trebui să adauge directiva ascultător cu semnalizatorul „quic”.


Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.