A NGINX vállalat hogy megkezdi a tesztelést QUIC és HTTP/3 protokollok az nginx HTTP szerverében és proxyjában. A megvalósítás alapja a IETF-QUIC specifikáció és hozzáférhető egy , amely az 1.19.0-s kiadástól ágazik el. A kód BSD licensz alatt forog és nem keresztezi a Cloudflare által az nginx számára készített HTTP/3 megvalósítással, amely egy külön projekt.
A HTTP/3 támogatása az nginx-ben kísérleti jelleggel van megjelölve, mivel a protokollnak van implementálva. Ezen felül az nginx már most is használható egyszerű HTTP/3 kérések válaszainak küldésére, valamint nagy fájlok letöltésére és feltöltésére. A protokoll hiányzó képességei között említhetők a protokoll verziók egyeztetése, ECN és áramlásvezérlés, strukturált naplók, helyreállítási mód (QUIC recovery, áramlás- és túlterhelés-vezérlés), NAT Rebinding, mobil címek, Server push, adatok csatolása (trailer). Jelenleg csak alapvető támogatás érhető el az ACK csomagok feldolgozásához és az áramlásvezérléshez, amely további fejlesztéseket igényel. Nem minden norma követelményét vették figyelembe.
A HTTP/3 aktiválásához az nginx-et az http_v3_module modullal kell összegyűjteni, és egy további direktívát kell hozzáadni
a «listen» segítségével «http3» zászlóval az UDP socket létrehozásához. Például:
server {
listen 443 ssl; # TCP socket a HTTP/1.1-hez
listen 443 http3 reuseport; # UDP socket a QUIC+HTTP/3-hoz
ssl_protocols TLSv1.3; # a QUIC-hez kötelező a TLS 1.3
ssl_certificate ssl/www.example.com.crt;
ssl_certificate_key ssl/www.example.com.key;
add_header Alt-Svc ‘quic=”:443”‘; # a QUIC elérhetőség jelzése
add_header QUIC-Status $quic; # A QUIC használati státusz fejléce
}
Emlékezzünk, hogy a HTTP/3 a QUIC protokoll használatát standardizálja a HTTP/2 számára. A protokoll (Quick UDP Internet Connections) 2013 óta fejlődik a Google által, mint alternatíva a TCP+TLS kombóra a Web-en, megoldva a TCP-vel kapcsolatos magas kapcsolatkezdési és koordinálási idejű problémákat, valamint eltüntetve a késleltetéseket az adatátvitel során bekövetkező csomagvesztés miatt. A QUIC egy UDP protokollra épülő réteget jelent, amely támogatja több kapcsolat multiplexálását és titkosítási módszereket kínál, amelyek egyenértékűek a TLS/SSL-lel. Az ügyfél oldali szoftverben a HTTP/3 kísérleti támogatása már meg lett valósítva a , és .
Fő QUIC:
- Magas szintű biztonság, amely hasonló a TLS-hez (lényegében a QUIC lehetőséget biztosít a TLS 1.3 UDP fölötti használatára);
- 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
