Cloudflare on juurutanud mooduli HTTP/3 toetamiseks NGINX-is

Cloudflare'i ettevõte ette valmistatud moodul HTTP/3 protokolli toetamiseks NGINX-is. Moodul on loodud Cloudflare'i poolt välja töötatud teegi lisandmoodulina quiche QUIC ja HTTP/3 transpordiprotokolli rakendamisega. Quiche'i kood on kirjutatud Rusti keeles, kuid NGINX-moodul ise on kirjutatud C-keeles ja pääseb teeki dünaamilise linkimise abil. Arengud lahti BSD litsentsi alusel.

Kokkupanemiseks laadige lihtsalt alla plaaster kuni nginx 1.16 ja kood quiche'i teegid, seejärel ehitage nginx uuesti suvanditega "—with-http_v3_module —with-quiche=../quiche". Ehitamisel peaks TLS-i tugi põhinema BoringSSL teegil (“--with-openssl=../quiche/deps/boringssl”), OpenSSL-i kasutamist veel ei toetata. Ühenduste vastuvõtmiseks tuleb seadistustesse lisada kuulamiskäsk lipuga “quic” (näiteks “kuula 443 quic reuseport”).

Klienditarkvaras on HTTP/3 tugi juba lisatud Chrome Canary eksperimentaalsetele järgudele ja curl-utiliidile. Serveri poolel oli seni vaja kasutada eraldi, piiratud testrakendused. HTTP/3 töötlemise võimalus nginxis lihtsustab oluliselt HTTP/3 toega serverite juurutamist ja muudab uue protokolli testrakenduse ligipääsetavamaks. HTTP/3 standardtoe tekkimine nginxis oodata 1.17.x filiaalis 6-12 kuud.

Tuletage meelde, et HTTP/3 standardib QUIC-protokolli kasutamist HTTP/2 transpordina. Protokoll QUIC (Quick UDP Internet Connections) on Google alates 2013. aastast välja töötanud alternatiivina TCP+TLS-i kombinatsioonile veebi jaoks, lahendades probleeme pikkade häälestus- ja läbirääkimisaegadega TCP-ühenduste jaoks ning kõrvaldades viivitused, kui andmeedastuse ajal paketid kaovad. QUIC on UDP-protokolli laiendus, mis toetab mitme ühenduse multipleksimist ja pakub TLS/SSL-iga samaväärseid krüpteerimismeetodeid.

Kõik Omadused QUIC:

  • Kõrge turvalisus, mis sarnaneb TLS-iga (sisuliselt annab QUIC võimaluse kasutada TLS-i üle UDP);
  • Voo terviklikkuse kontroll, mis hoiab ära pakettide kadumise;
  • Võimalus koheselt luua ühendus (0-RTT, ligikaudu 75% juhtudest saab andmeid edastada kohe pärast ühenduse seadistuspaketi saatmist) ja tagada minimaalsed viivitused päringu saatmise ja vastuse saamise vahel (RTT, Round Trip Time);
  • Paketi uuesti edastamisel ei kasutata sama järjenumbrit, mis väldib vastuvõetud pakettide tuvastamisel ebaselgust ja vabaneb ajalõppudest;
  • Paketi kadumine mõjutab ainult sellega seotud voo edastamist ega peata andmete edastamist paralleelsetes voogudes, mis edastatakse praeguse ühenduse kaudu;
  • Veaparandusfunktsioonid, mis minimeerivad kadunud pakettide uuesti saatmisest tingitud viivitusi. Spetsiaalsete veaparanduskoodide kasutamine paketi tasemel, et vähendada olukordi, mis nõuavad kadunud pakettandmete uuesti edastamist.
  • Krüptograafiliste plokkide piirid joondatakse QUIC-pakettide piiridega, mis vähendab pakettide kadude mõju järgnevate pakettide sisu dekodeerimisele;
  • TCP järjekorra blokeerimisega probleeme pole;
  • Ühenduse identifikaatori tugi, mis vähendab mobiiliklientide taasühenduse loomiseks kuluvat aega;
  • Võimalus ühendada täiustatud ühenduse ülekoormuse kontrollimehhanisme;
  • Kasutab suunapõhiseid läbilaskevõime prognoosimise tehnikaid, et tagada pakettide saatmine optimaalse kiirusega, vältides nende ummistumist ja pakettide kadumist;
  • Tajutav kasvu jõudlus ja läbilaskevõime võrreldes TCP-ga. Videoteenuste (nt YouTube) puhul vähendab QUIC taaspuhverdamistoiminguid videote vaatamisel 30%.
  • Allikas: opennet.ru

Lisa kommentaar