
QUIC (Quick UDP Internet Connections) je protokol na vrhu UDP, ki podpira vse funkcije TCP, TLS in HTTP/2 ter rešuje večino njihovih težav. Pogosto ga imenujejo nov ali 'eksperimentalni' protokol, a je že dolgo presegel fazo eksperimentiranja: razvoj poteka že več kot 7 let. V tem času protokol ni postal standard, vendar se je kljub temu široko razširil. Na primer, QUIC uporabljajo za pospeševanje prometa in zmanjšanje zakasnitev v mobilnih omrežjih takšni velikani kot Google in Facebook, IETF pa je napovedal, da bo njegov fork protokola podlaga za standard HTTP/3 (kar pomeni, da HTTP/2 uporablja spletnih strani).
Koncept
QUIC je bil razvit kot zamenjava zastarelega TCP, ki je bil prvotno prilagojen za žične omrežne povezave z nizkim odstotkom izgub. TCP dostavlja pakete v vrstnem redu, zato ob izgubi enega paketa celotna vrsta zastane (), kar negativno vpliva na kakovost in stabilnost povezave. Da bi se izognili množičnim izgubam, mobilna omrežja uporabljajo velike predpomnilnike, kar pa vodi do odvečnosti in napačne negativne reakcije protokola (). Poleg tega TCP porabi zelo veliko časa za vzpostavitev povezave: SYN/ACK in TLS zahteve gredo ločeno, kar zahteva tri potovanja namesto enega, kot to počne QUIC.

Ker QUIC združuje zamenjavo TCP in izvajanje TLS 1.3, so vse povezave vedno šifrirane, dešifriranje takšnega prometa ni lažje, kot če bi potekal prek HTTPS. Poleg tega je QUIC izveden na aplikacijski ravni, saj bi popolna zamenjava TCP sklada trajala večnost.
Kljub podpori za multipleksiranje v HTTP/2 težava z blokado glave vrste ostaja zaradi potrebe po dostavi paketov v vrstnem redu. QUIC je izveden na vrhu UDP, zato blokad ni, prav tako pa so paketi številčeni in lahko vsebujejo dele 'sosedov', kar zagotavlja redundanco. Poleg tega QUIC razdeljuje monolitno vrsto na več tokov za različne tipe zahtevkov znotraj ene povezave. Tako lahko ob izgubi paketa težave nastanejo le pri eni vrsti (na primer, pri prenosu določene datoteke):

Uporaba
Prvotno je QUIC razvijen unutar Google-a i bio je prilagođen korišćenju unutar kompanije. Godine 2013. prebačen je u IETF radi standardizacije (koja se još uvek nastavlja), i sada svako može učestvovati u razvoju protokola, predlažući ono što mu nedostaje. IETF radna grupa godišnje organizuje sastanke na kojima se usvaja novi standard i raspravlja o novostima. Ova implementacija QUIC-a smatra se osnovnom i na njenoj osnovi se sertifikuje standard HTTP/3.
Za sada se ne razmatra uključivanje HTTP/3 kao glavnog protokola, jer još uvek nije završen i gotovo da nije podržan:

Ali QUIC se može implementirati kao transport između aplikacije i servera, što je uspešno uradio Uber:
Komentar Uber-a o implementaciji QUIC-a
Da bi uspešno vgradili QUIC in izboljšali zmogljivost aplikacije v slabih povezavah, smo zamenjali staro strukturo (HTTP/2 preko TLS/TCP) s protokolom QUIC. Uporabili smo omrežno knjižnico iz , ki vsebuje izvirno Googlovsko različico protokola – gQUIC. Ta implementacija se nenehno izboljšuje, da bi sledila najnovejši specifikaciji IETF.
Najpre smo integrirali Cronet u naše Android aplikacije kako bismo dodali podršku za QUIC. Integracija je izvedena na način koji maksimalno smanjuje troškove migracije. Umesto da potpuno zamenimo stari mrežni stek koji je koristio biblioteku , integrirali smo Cronet POD OkHttp API okvirom. Izvršivši integraciju na ovaj način, izbegli smo promene u našim mrežnim pozivima (koje koriste ) na nivou API-ja.
Slično pristupu na Android uređajima, implementirali smo Cronet u Uber aplikacije za iOS, preusmeravajući HTTP saobraćaj iz mrežnih , koristeći . Ova apstrakcija koju pruža iOS Foundation obrađuje protokol-specifične URL podatke i osigurava da možemo integrisati Cronet u naše iOS aplikacije bez značajnih troškova migracije.
uzeto iz članka Uber-a
Na backendu su uhvatili QUIC konekcije preko Google Cloud lb, koji od sredine 2018. godine.
Nije iznenađujuće što Google Cloud savršeno funkcioniše s protokolom koji je razvio Google, ali koje su alternative?
Nginx
Nedavno je CloudFlare nginx (koji prema zadanim postavkama ne podržava HTTP/3) sa svojim alatom Quiche. Implementacija je dostupna u obliku jedinstvenog .patch fajla, uz koji je priložen tutorijal za instalaciju:
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.patchOvde možete dodati svoje module po potrebi
./configure
--prefix=$PWD
--with-http_ssl_module
--with-http_v2_module
--with-http_v3_module
--with-openssl=../quiche/deps/boringssl
--with-quiche=../quiche
makeSamo je potrebno uključiti podršku za HTTP/3
events {
worker_connections 1024;
}
http {
server {
# Omogući QUIC i HTTP/3.
listen 443 quic reuseport;
# Omogući HTTP/2 (opcionalno).
listen 443 ssl http2;
ssl_certificate cert.crt;
ssl_certificate_key cert.key;
# Omogući sve TLS verzije (TLSv1.3 je obavezan za QUIC).
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
# Buffers za zahteve trenutno nisu podržani za HTTP/3.
proxy_request_buffering off;
# Dodaj Alt-Svc header za pregovaranje o HTTP/3.
add_header alt-svc 'h3-27=":443"; ma=86400';
}
} U običnim pretraživačima još nije moguće povezati se putem HTTP/3, ali možete uzeti i pokrenuti ga s flagom --enable-quic, obratiti se svom serveru ili, na primer, sajtu quic.rocks i pogledati tip veze u Developer Tools:

Umesto HTTP/3 piše se http2+quic/99, ali to je zapravo jedno te isto.
Druge tehnologije
- QUIC prav tako podpira (ki so se s poudarkom povezovali z Facebookom preko HTTP/3) in progresivni . Apache še ne zna, a delo poteka .
- 21. januarja se je posodobil
- Pravkar je Microsoft odprl , kjer še niso na voljo vse funkcije iz standarda IETF, a to je že velik napredek.
Zaključek

Interes za QUIC je nestabilen, a raste, delo na njegovi standardizaciji pa poteka. Nova izvajanja protokola se pojavljajo skoraj vsak mesec, in vsako leto vse več razvijalcev spoznava, da je prihodnost v QUIC. Dovoljeno je celo vključitev protokola v prihodnje različice TCP sklada, kar pomeni, da bo prej ali slej celotni internet prešel na bolj stabilne in hitre povezave.
Že zdaj lahko nastavite QUIC komunikacijo za svojo infrastrukturo ali pa ga celo omogočite brskalnikom — vsi načrtujejo dodati podporo za protokol, in žalostna statistika s caniuse se bo spremenila v veselo.
Izvor: habr.com
