A Cloudflare vállalat a HTTP/3 protokoll támogatásának biztosításához az NGINX-ben. A modul a Cloudflare által fejlesztett könyvtárra épül. a QUIC és HTTP/3 szállítási protokoll implementálásával. A quiche kódja Rust nyelven íródott, de magát a modult az NGINX-hez C nyelven fejlesztették, és dinamikus linkeléssel hivatkozik a könyvtárra. Az eredmények BSD licenc alatt.
A fordításhoz elegendő letölteni az nginx 1.16-ot és a quiche könyvtárat, majd újra kell fordítani az nginx-et a «--with-http_v3_module --with-quiche=..../quiche» opciókkal. A fordítás során a TLS támogatásának a BoringSSL könyvtáron kell alapulnia («--with-openssl=..../quiche/deps/boringssl»), az OpenSSL használata jelenleg nem támogatott. A kapcsolatok fogadásához a konfigurációba hozzá kell adni a listen direktívát a «quic» flaggel (például «listen 443 quic reuseport»).
A kliensprogramokban a HTTP/3 támogatása már be lett építve a Chrome Canary kísérleti verzióiba és a curl eszközbe. A szerveroldalon eddig korlátozott képességű különálló A HTTP/3 feldolgozási lehetősége az nginx-ben jelentősen leegyszerűsíti a HTTP/3 támogatással rendelkező szerverek telepítését, és lehetővé teszi az új protokoll tesztelésének könnyebb bevezetését. A HTTP/3 hivatalos támogatás megjelenése az nginx 1.17.x ágon 6-12 hónapon belül várható.
Emlékezzünk, hogy a HTTP/3 a QUIC protokoll használatát standardizálja a HTTP/2 számára. A protokoll Az éjszakai build-ekben a Firefox, amely az alapját képezi a 2022. január 7-én megjelenő Firefox 72-nek, támogatja a HTTP/3-at.
Fő QUIC:
- Magas biztonság, amely hasonló a TLS-hez (lényegében a QUIC lehetővé teszi a TLS használatát az UDP-n üstökölve);
- A folyam integritásának ellenőrzése, amely megakadályozza a csomagok elvesztését;
- A kapcsolat azonnali létrehozásának lehetősége (0-RTT, körülbelül 75%-os esetekben az adatokat közvetlenül a kapcsolati csomag elküldése után lehet átkonvertálni) és minimalizálva a késleltetést a kérés küldése és a válasz megérkezése között (RTT, Round Trip Time);
- Nem használja ugyanazt a szekvenciális számot egy csomag újraküldésekor, ami lehetővé teszi a kapott csomagok egyértelmű azonosítását és a timeoutok elkerülését;
- Csomag elvesztése csak az ahhoz kapcsolódó folyamat szállítását befolyásolja, és nem állítja le az adatokat a párhuzamosan átkonvertált folyamatok szállításában;
- Hibaellenőrző eszközök, amelyek minimalizálják a késéseket az elveszett csomagok újraküldése miatt. Speciális hibaellenőrző kódok használata csomagszinten a vesztes csomagok újraküldésének szükségességének csökkentésére.
- A kriptográfiai blokkok határai a QUIC csomagok határaival össze vannak hangolva, ezáltal csökkenti a csomagvesztések hatását a következő csomagok tartalmának dekódolására;
- Nincsenek problémák a TCP sorok blokkolásával;
- Támogatja a kapcsolati azonosítót, amely lehetővé teszi a mobil kliensek számára a visszakapcsolódási idő csökkentését;
- A kapcsolati túlterhelés-ellenőrzési mechanizmusok kiterjesztett lehetőségeinek csatlakoztatása;
- Sávszélesség-előrejelzési technikák használata mindkét irányban a csomagok optimális küldési intenzitásának biztosítása érdekében, elkerülve a túlterheltségi állapotba való kerülést, amely csomagvesztést eredményez;
- Észlelhető a teljesítményben és a sávszélességben a TCP-hez képest. Videószolgáltatások, például a YouTube esetében a QUIC alkalmazása 30%-kal csökkentette a videó nézése alatt a bufferelési műveletek számát.
Forrás: opennet.ru
