
A QUIC (Quick UDP Internet Connections) egy UDP-alapú protokoll, amely támogatja a TCP, TLS és HTTP/2 összes lehetőségét, és megoldja legnagyobb problémáikat. Gyakran nevezik új vagy „kísérleti” protokollnak, de már régóta túllépett a kísérleti fázison: a fejlesztés több mint 7 éve zajlik. Ez idő alatt a protokoll nem vált hivatalos sztenderddé, de ennek ellenére széles körben elterjedt. Például a QUIC-et forgalom gyorsítására és a késések csökkentésére használja olyan óriásvállalatok, mint a Google és a Facebook, és az IETF a protokoll forkját az HTTP/3 szabvány alapjának nyilvánította (miközben az HTTP/2-t használja weboldal).
Koncepció
A QUIC-ot a megöregedett TCP helyettesítésére fejlesztették ki, amely eredetileg vezetéknélküli, alacsony veszteségű hálózatokhoz lett tervezve. A TCP a csomagokat sorrendben szállítja, így ha egy csomag elveszik, az egész sor leáll (), ami negatívan befolyásolja a kapcsolat minőségét és stabilitását. A tömeges veszteségek elkerülése érdekében a mobilhálózatok nagy pufferek használatához folyamodnak, ami a protokoll fölöslegességéhez és hamis negatív reakciókhoz () vezet. Ezen kívül a TCP nagyon sok időt tölt a kapcsolat létrehozásával: a SYN/ACK és TLS kérések külön mennek, három roundtrip-et igényelve egy helyett, ahogy azt a QUIC teszi.

Mivel a QUIC ötvözi a TCP helyettesítését és a TLS 1.3 implementálását, minden kapcsolat mindig titkosítva van, és egy ilyen forgalom dekódolása nem könnyebb, mint ha HTTPS-en haladna. Ezenkívül a QUIC alkalmazási szinten valósul meg, mivel a TCP-stack teljes helyettesítése örökkévalóságba telne. Örökkévalóság.
A HTTP/2 multiplexálásának támogatása ellenére a head-of-line blocking problémája a csomagok sorrendbeli kézbesítése miatt megmaradt. A QUIC UDP fölött valósul meg, így alapvetően nincsenek blokkolások, és hogy a csomagok ne vesszenek el véglegesen, számozva vannak és tartalmazhatják szomszédok részeit is, biztosítva a redundanciát. Ezenkívül a QUIC a monolitikus sort több szálra bontja, különböző típusú kérések számára egyetlen kapcsolat belsejében. Így csomagvesztés esetén problémák csak egy sorban merülhetnek fel (például egy adott fájl átvitelénél):

Használat
A QUIC-ot eredetileg a Google-n belül lett kifejlesztve, és nagyrészt a cégen belüli használatra lett optimalizálva. 2013-ban az IETF-nek adták át standardizálásra (ami még mindig folyamatban van), és most már bárki részt vehet a protokoll fejlesztésében, javasolva azt, ami számára hiányzik. Az IETF munkacsoport évente találkozókat szervez, ahol új szabványokat hagynak jóvá és megvitatják az újdonságokat. Ez a QUIC-implementáció számít a főnek, és ennek alapján tanúsítják az HTTP/3 szabványt.
Jelenleg még nem merül fel az HTTP/3 mint fő protokoll bevezetése, mert még nem fejeződött be, és szinte nem támogatott:

De a QUIC-ot a kliens és a szerver közötti szállítási rétegként lehet megvalósítani, amit a Uber sikeresen végrehajtott:
A Uber megjegyzése a QUIC bevezetéséről
Ahhoz, hogy a QUIC-ot sikeresen beépíthessük és javíthassuk az alkalmazás teljesítményét gyenge kapcsolat esetén, a régi stack-et (HTTP/2 TLS/TCP felett) a QUIC protokollra cseréltük. Felhasználtuk a hálózati könyvtárat a , amely tartalmazza a protokoll eredeti, Google-os verzióját – gQUIC. Ez a megvalósítás folyamatosan fejlesztve van, hogy kövesse az IETF legfrissebb specifikációját.
Először integráltuk a Cronet-et Android-alkalmazásainkba, hogy támogassuk a QUIC-ot. Az integrációs folyamatot úgy hajtottuk végre, hogy minimalizáljuk a migrációs költségeket. Ahelyett, hogy teljes mértékben kicseréltük volna a régi hálózati stack-et, amely az könyvtárat használta, a Cronet-et az OkHttp API keretrendszer ALATT integráltuk. Ezzel az integrációval elkerültük a hálózati hívásaink (amelyeket a ) szintjén végzett változtatásokat.
Hasonlóan az Android-eszközökhöz, a Cronet-et az Uber iOS alkalmazásaiban is beépítettük, megfigyelve a HTTP forgalmat a hálózati , használva a . Ez az iOS Foundation által biztosított absztrakció kezeli a protokollspecifikus URL-adatokat, és biztosítja, hogy a Cronet-et jelentős migrációs költségek nélkül tudjuk integrálni iOS-alkalmazásainkba.
forrás: Uber cikkéből
A háttérben a QUIC kapcsolatokat a Google Cloud lb-n keresztül fogták el, amely 2018 közepétől.
Nem meglepő, hogy a Google Cloud jól működik a Google által fejlesztett protokollal, de mik az alternatívák?
Nginx
Nemrég a CloudFlare nginx (amely alapértelmezés szerint nem támogatja a HTTP/3-at) a Quiche eszközével. A megvalósítás egyetlen .patch fájlként elérhető, amelyhez telepítési útmutató tartozik:
curl -O https://nginx.org/download/nginx-1.16.1.tar.gz
tar xvzf 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.patchItt szükség szerint csatlakoztathatók a saját moduljai.
./configure
--prefix=$PWD
--with-http_ssl_module
--with-http_v2_module
--with-http_v3_module
--with-openssl=../quiche/deps/boringssl
--with-quiche=../quiche
makeCsak a HTTP/3 támogatását kell engedélyezni.
events {
worker_connections 1024;
}
http {
server {
# Engedélyezze a QUIC-et és a HTTP/3-at.
listen 443 quic reuseport;
# Engedélyezze a HTTP/2-t (opcionális).
listen 443 ssl http2;
ssl_certificate cert.crt;
ssl_certificate_key cert.key;
# Engedélyezze az összes TLS verziót (a TLSv1.3 szükséges a QUIC-hez).
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
# A kérés pufferelése jelenleg nem támogatott a HTTP/3 esetében.
proxy_request_buffering off;
# Adjon hozzá Alt-Svc fejlécet a HTTP/3 tárgyalásához.
add_header alt-svc 'h3-27=":443"; ma=86400';
}
} Normál böngészőkön még nem lehet csatlakozni a HTTP/3-hoz, de van lehetőség arra, és indítsa el a következő kapcsolóval: --enable-quic, lépjen kapcsolatba saját szerverével vagy például a quic.rocks webhellyel, és nézze meg a kapcsolat típusát a Fejlesztői Eszközökben:

A HTTP/3 helyett http2+quic/99, de lényegében ugyanaz.
Egyéb technológiák
- A QUIC támogatja (amelyek nagy hirtelenséggel csatlakoztak a Facebookhoz a HTTP/3-on) és a fejlődő . Az Apache egyelőre nem támogatja, de a munka teljes gőzzel zajlik. .
- a WebRTC szabvány tervezete.
- a msquic megvalósításának kódját, A QUIC iránti érdeklődés ingadozó, de növekszik, zajlik a szabványosítása. Újabb protokollok jönnek létre gyakorlatilag havonta, és minden évben egyre több fejlesztő győződik meg arról, hogy a jövő a QUIC-é. Még a protokoll jövőbeli TCP verziokba való integrációja is megengedett, ami azt jelenti, hogy előbb-utóbb az egész internet átköltözik a stabilabb és gyorsabb kapcsolatokra.
Zárás

Már most beállíthatja a QUIC-kapcsolatot az infrastruktúrája számára, vagy akár átadhatja azt a böngészőknek — mindegyik tervez támogatni a protokollt, és a caniuse.com szomorú statisztikái vidámabbá válnak.
Az Android Chrome böngészőben elérhetővé válik az új sötét mód.
Forrás: habr.com
