Cloudflare on valmistanut moduulin tukemaan HTTP / 3-protokollaa NGINX: ssä. Moduuli on valmis napsautuksen muodossa quiche-kirjastossa kehitetty Cloudflaressa toteuttamalla QUIC- ja HTTP / 3-siirtoprotokolla. Piirikoodi kirjoitetaan Rust-muodossa, mutta NGINX-moduuli on kirjoitettu C-kirjaimella ja käyttää kirjastoa dynaamisten linkkien kautta. Aukioloajat ovat auki BSD-lisenssillä.
Asiakasohjelmistosta HTTP / 3-tuki on jo lisätty Chrome Canaryn kokeellisiin koontiversioihin ja curl-apuohjelma. Palvelinpuolella on toistaiseksi vaadittu eristettyjen testaustoteutusten käyttöä, joilla on rajoitetut ominaisuudet. Kyky käsitellä HTTP / 3: tä nginxissä yksinkertaistaa huomattavasti HTTP / 3-tuen sisältävien palvelinten käyttöönottoa ja se tekee uuden protokollan testitoteutuksesta helpommin saatavilla.
HTTP / 3 standardoi QUIC-protokollan käytön siirtona HTTP / 2: lle. Google on kehittänyt QUIC-protokollan vaihtoehtona TCP + TLS for Webille aikoo ratkaista ongelmia TCP: n pitkien asennus- ja koordinointiyhdisteiden kanssa ja viivästyttää pakettihäviön poistamista tiedonsiirron aikana. QUIC on UDP-protokollan laajennus, joka tukee useiden yhteyksien multipleksointia ja tarjoaa TLS / SSL: ää vastaavia salausmenetelmiä.
QUICin keskeisistä ominaisuuksista, jotka erottuvat:
- Korkea tietoturva, samanlainen kuin TLS (QUIC tarjoaa itse asiassa mahdollisuuden käyttää TLS: ää UDP: n kautta).
- Virtauksen eheyden hallinta, joka estää pakettien menetyksen.
- Mahdollisuus muodostaa yhteys välittömästi (0-RTT, noin 75 prosentissa tapauksista tietoja voidaan siirtää välittömästi yhteyden määrityspaketin lähettämisen jälkeen) ja varmistaa mahdollisimman vähän viiveitä pyynnön lähettämisen ja vastauksen vastaanottamisen välillä (RTT, meno-paluu) .
- Saman järjestysnumeron käyttämättä jättäminen paketin uudelleenlähetyksessä, mikä välttää epäselvyyttä vastaanotettujen pakettien määrittämisessä ja eliminoi aikakatkaisut.
- Paketin menettäminen vaikuttaa vain siihen liittyvän virran toimitukseen eikä lopeta datan toimittamista virroissa, jotka lähetetään rinnakkain nykyisen yhteyden kautta.
- Virheenkorjaustyökalut, jotka minimoivat kadonneiden pakettien uudelleenlähetyksestä johtuvat viiveet. Erityisten pakettitason virhekorjauskoodien käyttö tilanteiden vähentämiseksi, jotka edellyttävät kadonneen pakettidatan uudelleenlähetystä.
- Salauslohkorajat ovat linjassa QUIC-pakettirajojen kanssa, mikä vähentää pakettihäviön vaikutusta seuraavien pakettien sisällön dekoodaukseen
- Ei ongelmia TCP-jonon estämisessä
- Tuki yhteystunnukselle, mikä lyhentää aikaa muodostaa yhteys uudelleen mobiiliasiakkaille
- Mahdollisuus yhdistää edistyneitä mekanismeja yhteyden ylikuormituksen hallitsemiseksi
- Käyttämällä kaistanleveyden ennustamistekniikkaa kumpaankin suuntaan optimaalisen paketin edelleenlähetysintensiteetin varmistamiseksi estämällä sitä saavuttamasta ruuhkautumistilaa, jossa pakettihäviö havaitaan
- Huomattava suorituskyky ja suorituskyvyn lisäykset TCP: n kautta. Videopalveluissa, kuten YouTubessa, QUIC osoitti 30 prosentin vähennystä uudelleenpuskurointitoiminnoissa videoita katsellessa.
Kuinka moduuli otetaan käyttöön HTTP / 3: n tukemiseksi NGINX: ssä?
Niille, jotka haluavat ottaa tämän moduulin käyttöön palvelimellaan, He voivat tehdä sen noudattamalla alla olevia ohjeita.
Voit koota sen heidän on vain ladattava nginx 1.16 -korjaustiedosto ja quiche-kirjastokoodi.
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
Ja käännämme NGINXin HTTP / 3-tuella:
./configure \ --prefix=$PWD \ --with-http_ssl_module \ --with-http_v2_module \ --with-http_v3_module \ --with-openssl=../quiche/deps/boringssl \ --with-quiche=../quiche make
Kääntämisen aikana TLS-tuen on perustuttava BoringSSL-kirjastoon ("–with-openssl = .. / quiche / deps / boringssl"), OpenSSL: n käyttöä ei vielä tueta.
Yhteyksien hyväksymiseksi kokoonpanossa heidän on lisättävä kuunteludirektiivi "quic" -lipulla.