
QUIC (Kiired UDP Interneti Ühendused) on UDP peal töötav protokoll, mis toetab kõiki TCP, TLS ja HTTP/2 funktsioone ning lahendab enamik nende probleeme. Seda tuntakse sageli kui uut või 'eksperimentaalset' protokolli, kuid see on juba pikka aega eksperimentaalsest staadiumist välja kasvanud: arendustööd on kestnud üle 7 aasta. Selle aja jooksul ei ole protokollist veel saanud standardit, kuid see on end siiski laialdaselt tõestanud. Näiteks kasutavad QUIC-i liikluse kiirendamiseks ja viivituste vähendamiseks mobiilsetes võrkudes sellised hiidettevõtted nagu Google ja Facebook, ning IETF kuulutas oma protokolli hargnemise HTTP/3 standardi aluseks (samal ajal, kui HTTP/2 kasutab veebilehtedest).
Kontseptsioon
QUIC välja töötati vananenud TCP asendamiseks, mis oli algselt loodud madala kaotusprotsendiga kaablivõrkude jaoks. TCP edastab pakette järjestikku, seetõttu peatub terve järjekord, kui üks pakett kaob (), mis mõjutab negatiivselt ühenduse kvaliteeti ja stabiilsust. Massiliste kaotuste vältimiseks kasutavad mobiilvõrgud suuri puhvrite kasutamise meetodeid, mis omakorda toovad kaasa liialdatuse ja vale negatiivse reaktsiooni protokollis (). Lisaks on TCP ühenduse loomisel väga ajakulukas: SYN/ACK ja TLS päringud kulgevad eraldi, nõudes kolme roundtrip’i asemel ühte nagu QUIC.

Kuna QUIC ühendab endas TCP asendamise ja TLS 1.3 rakendamise, on kõik ühendused alati krüpteeritud. Sellise liikluse dekrüpteerimine ei ole lihtsam kui siis, kui see kulgeks HTTPS protokolli kaudu. Lisaks on QUIC rakendatud rakenduslikul tasemel, kuna täielik TCP staki asendamine võtaks igavikku.
Hoolimata HTTP/2 mitmeosalise edastamise toetusest on seal jäänud peamine probleem, et pakettide edastamine toimub järjekorras. QUIC on rakendatud UDP peal, seega ei tekita see üldse ummistusi ning pakette ei kaotata igaveseks, kuna need on nummerdatud ja võivad sisaldada oma „naabrite“ osi, tagades üleliigsuse. Lisaks jagab QUIC monoliitset järjekorda mitmeks vooks erinevatele päringutüüpidele ühe ühenduse sees. Seetõttu võivad paketi kaotuse korral probleemid tekkida ainult ühes järjekorras (näiteks siis, kui edastatakse konkreetset faili):

Kasutamine
QUIC loodi algselt Google'is ja oli suuresti kohandatud ettevõtte sisekasutuseks. 2013. aastal anti see IETF-ile standardiseerimiseks (mis jätkub endiselt), ja nüüd võib igaüks osaleda protokolli arenduses, pakkudes just omale vajalikke täiustusi. IETF-i töögrupp korraldab igal aastal kohtumisi, kus kinnitatakse uus standard ja arutatakse uuendusi. See QUIC-i rakendus on peamine ning selle alusel sertifitseeritakse HTTP/3 standard.
Praegu ei räägita HTTP/3 lisamisest põh protokollina, kuna see pole veel lõpetatud ja peaaegu ei toetata:

Kuid QUIC-i saab ellu viia kui transporti rakenduse ja serveri vahel, mida on edukalt teinud Uber:
Uberi kommentaar QUIC-i rakendamisest
QUIC-i edukaks integreerimiseks ja rakenduse jõudluse parandamiseks halva ühenduvuse tingimustes asendasime vana steki (HTTP/2 TLS-i/TCP-i peal) QUIC protokolliga. Kasutasime võrgu raamatukogu kohast , mis sisaldab originaalset, Google'i versiooni protokollist – gQUIC. See teostus täiustatakse pidevalt, et järgida viimast IETF spetsifikatsiooni.
Esmalt integreerisime Croneti oma Android-rakendustesse, et lisada QUIC-i tugi. Integreerimine viidi läbi nii, et minimeerida migratsioonikulud. Selle asemel, et täielikult asendada vana võrgu redaktori, mis kasutas teeki , integreerisime Croneti OkHttp API raamistiku ALL. Sel viisil integreerides vältisime muudatusi meie võrgu päringutes (mida kasutavad ) API tasemel.
Sarnaselt lähenemisele Android-seadmetele, oleme integreerinud Croneti Uberi rakendustesse iOS-is, suunates HTTP-liiklust võrgu , kasutades . See iOS Foundation'i pakutud abstraktsioon töötleb protokollispetsiifilisi URL-andmeid ja tagab, et saame Croneti integreerida oma iOS-rakendustesse ilma oluliste migratsioonikuludeta.
võetud artiklist Uber
Tagaplaanil nad püüdsid QUIC-ühendusi Google Cloud lb kaudu, mis alates 2018. aasta keskpaigast.
Pole üllatav, et Google Cloud töötab suurepäraselt Google'i loodud protokolliga, kuid millised on alternatiivid?
Nginx
Hiljuti proovisin CloudFlare nginx'i (mis vaikimisi ei toeta HTTP/3) oma Quiche tööriistaga. Teostus on saadaval ühes .patch failis, millele on lisatud installi õpetus:
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.patchSiia saab vajadusel lisada oma mooduleid
./configure
--prefix=$PWD
--with-http_ssl_module
--with-http_v2_module
--with-http_v3_module
--with-openssl=../quiche/deps/boringssl
--with-quiche=../quiche
makeJäänud on vaid HTTP/3 toe sisselülitamine
events {
worker_connections 1024;
}
http {
server {
# Luba QUIC ja HTTP/3.
listen 443 quic reuseport;
# Luba HTTP/2 (valikuline).
listen 443 ssl http2;
ssl_certificate cert.crt;
ssl_certificate_key cert.key;
# Luba kõik TLS versioonid (TLSv1.3 on vajalik QUIC-i jaoks).
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
# HTTP/3 jaoks pole praegu päringu puhverside toetatud.
proxy_request_buffering off;
# Lisa Alt-Svc pealkiri HTTP/3 läbirääkimiseks.
add_header alt-svc 'h3-27=":443"; ma=86400';
}
} Tavalistes brauserites ei saa HTTP/3 üle ühendust, kuid saab võtta ja käivita see lipuga --enable-quic, külastage oma serverit või näiteks veebisaiti quic.rocks ja vaadake ühenduse tüüpi Developer Tools'is:

HTTP/3 asemel kuvatakse http2+quic/99, kuid tegelikult on see sama asi.
Muud tehnoloogiad
- QUIC toetavad ka (mis uhkelt ühendasid end Facebookiga HTTP/3 kaudu) ja progressiivne . Apache'i toimetamine toimib praegu, aga see edeneb .
- 21. jaanuaril uuendati
- Käesoleval nädalal avas Microsoft , kus ei ole veel kõiki IETF standardi funktsioone, aga see on juba suur läbimurre.
Kokkuvõte

Huvi QUIC'i vastu on ebastabiilne, kuid kasvab, standardiseerimise nimel töötatakse. Uusi protokolle ilmub peaaegu iga kuu ja iga aastaga veenduvad üha rohkem arendajaid, et tulevik kuulub QUIC'ile. Lubatakse isegi protokolli kaasamist tulevatesse TCP-stekiversioonidesse, mis tähendab, et vahetult või hiljem kolib kogu internet kiiremate ja stabiilsemate ühenduste peale.
Juba nüüd saate seadistada QUIC-ühenduse oma infrastruktuurile või isegi edastada selle brauseritele — kõik plaanivad lisada protokolli toe ning kurb statistika caniuse kohta muutub rõõmsamaks.
Allikas: habr.com
