
QUIC (Quick UDP Internet Connections) â Ă«shtĂ« njĂ« protokoll mbi UDP qĂ« mbĂ«shtet tĂ« gjitha funksionalitetet e TCP, TLS dhe HTTP/2 dhe zgjidh shumicĂ«n e problemeve tĂ« tyre. Ai shpesh quhet protokoll i ri ose "eksperimental", por ka qenĂ« pĂ«r njĂ« kohĂ« tĂ« gjatĂ« pĂ«rtej fazĂ«s eksperimentale: zhvillimi i tij ka vazhduar pĂ«r mĂ« shumĂ« se 7 vjet. GjatĂ« kĂ«saj kohe, protokolli ende nuk ka arritur tĂ« bĂ«het standard, por Ă«shtĂ« pĂ«rhapur gjerĂ«sisht. PĂ«r shembull, QUIC pĂ«rdoret pĂ«r tĂ« pĂ«rshpejtuar trafikun dhe pĂ«r tĂ« reduktuar vonesat nĂ« rrjetet mobile nga gjigantĂ«t si Google dhe Facebook, ndĂ«rsa IETF shpalli forkun e tij si bazĂ« pĂ«r standardin HTTP/3 (duke marrĂ« parasysh qĂ« HTTP/2 pĂ«rdor e faqeve).
Koncepsi
QUIC u zhvillua si një zëvendësim për TCP-in e vjetëruar, i cili fillimisht ishte projektuar për rrjete kabllore me një përqindje të ulët humbjesh. TCP dërgon paketat në rend, kështu që nëse një paketë humbet, e gjithë rreshti ndalon (), çka ndikon negativisht në cilësinë dhe stabilitetin e lidhjes. Për të shmangur humbje masive, rrjetet celulare përdorin bufere të mëdha, gjë që çon në tepricë dhe reagim të gabuar të protokollit (). Për më tepër, TCP shpenzon shumë kohë për të vendosur një lidhje: kërkesat SYN/ACK dhe TLS shkojnë ndaras, duke kërkuar tre roundtrip për të vendosur lidhjen, ndryshe nga një, siç e bën QUIC.

Duke qenë se QUIC kombinon zëvendësimin e TCP-së dhe implementimin e TLS 1.3, të gjitha lidhjet janë gjithmonë të enkriptuara, dhe dekodimi i këtij trafiku nuk është më i lehtë sesa nëse do të kalonte përmes HTTPS. Për më tepër, QUIC është implementuar në nivelin aplikativ; zëvendësimi i plotë i stack-ut të TCP do të kishte marrë pa fund.
Megjithëse mbështetje për shumërenditje në HTTP/2, problemi i bllokimit të radhës së parë mbetet për shkak të nevojës për të dërguar paketat në rend. QUIC është implementuar mbi UDP, prandaj nuk ka bllokade në parim, dhe për të siguruar që paketat të mos humbasin përfundimisht, ato numërohen dhe mund të përmbajnë pjesë të "fqinjve", duke siguruar mbivendosje. Për më tepër, QUIC ndan radhën monolitike në disa mëngjyrë për lloje të ndryshme kërkesash brenda një lidhjeje. Kështu, në rast humbjeje të një pakete, problemet mund të ndodhin vetëm në një radhë (p.sh., për transferimin e një skedari të caktuar):

Përdorimi
Fillimisht, QUIC u zhvillua brenda Google dhe ishte kryesisht i optimizuar për përdorim brenda kompanisë. Në vitin 2013, ai u transferua në IETF për standardizim (i cili vazhdon ende) dhe tani secili mund të kontribuojë në përmirësimin e protokollit, duke ofruar ato që i mungojnë atij. Grupi i punës IETF organizon çdo vit takime, ku miratohet standardi i ri dhe diskutohet për novacionet. Kjo realizim i QUIC konsiderohet si themelor, dhe baza për standardin HTTP/3 është pikërisht kjo.
Derisa të përfundojë, nuk flitet për përfshirjen e HTTP/3 si protokollin kryesor, sepse është akoma në zhvillim dhe pothuajse nuk mbështetet:

Por QUIC mund të implementohet si një transport midis aplikacionit dhe serverit, që Uber e ka realizuar me sukses:
Koment nga Uber mbi implementimin e QUIC
PĂ«r tĂ« integruar me sukses QUIC dhe pĂ«r tĂ« pĂ«rmirĂ«suar performancĂ«n e aplikacionit nĂ« kushte tĂ« kĂ«qija lidhjeje, ne zĂ«vendĂ«suam stekĂ«n e vjetĂ«r (HTTP/2 mbi TLS/TCP) me protokollin QUIC. Ne angazhuam bibliotekĂ«n rrjetore nga , e cila pĂ«rmban versionin origjinal, tĂ« Google-it tĂ« protokollit â gQUIC. Kjo implementim gjithashtu pĂ«rmirĂ«sohet vazhdimisht, pĂ«r tĂ« ndjekur specifikimin mĂ« tĂ« fundit tĂ« IETF.
Fillimisht, ne integrojmë Cronet në aplikacionet tona Android, për të shtuar mbështetje për QUIC. Integrimi u realizua në mënyrë që të ulin sa më shumë kostot e migrimit. Në vend që të zëvendësonim plotësisht stekën e vjetër rrjetore, e cila përdorte bibliotekën , ne integrojmë Cronet Nà kornizën e API-së OkHttp. Duke kryer integrimin në këtë mënyrë, shmangëm ndryshimet në thirrjet tona rrjetore (të cilat përdorin ) në nivelin API.
Në përputhje me qasjen për pajisjet Android, ne implantuam Cronet në aplikacionet Uber për iOS, duke kapur trafikun HTTP nga rrjeti , duke përdorur . Kjo abstraksion, e ofruar nga iOS Foundation, përpunon të dhënat URL specifike për protokollin dhe garanton që ne mund të integrojmë Cronet në aplikacionet tona iOS pa kosto të konsiderueshme migrimi.
marrë nga përkthimi i artikullit të Uber
Në backend, ata kapin lidhjet QUIC përmes Google Cloud lb, i cili që nga mesi i vitit 2018.
Nuk është një befasia që Google Cloud funksionon mirë me protokollin e zhvilluar nga Google, por cilat janë alternativat?
Nginx
Jo shumë kohë më parë, CloudFlare nginx (i cili për default nuk mbështet HTTP/3) me mjetin e tij Quiche. Realizimi është në formën e një skedari të vetëm .patch, i shoqëruar me një tutorial për instalimin:
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.patchKëtu mund të lidhen modulat tuaja nëse është e nevojshme
./configure
--prefix=$PWD
--with-http_ssl_module
--with-http_v2_module
--with-http_v3_module
--with-openssl=../quiche/deps/boringssl
--with-quiche=../quiche
makePërfshin vetëm aktivizimin e mbështetjes për HTTP/3
events {
worker_connections 1024;
}
http {
server {
# Aktivizoni QUIC dhe HTTP/3.
listen 443 quic reuseport;
# Aktivizoni HTTP/2 (opcional).
listen 443 ssl http2;
ssl_certificate cert.crt;
ssl_certificate_key cert.key;
# Aktivizoni të gjitha versionet e TLS (TLSv1.3 është e kërkuar për QUIC).
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
# Bufferimi i kërkesave të proxy nuk mbështetet aktualisht për HTTP/3.
proxy_request_buffering off;
# Shtoni Alt-Svc header për të negociuar HTTP/3.
add_header alt-svc 'h3-27=":443"; ma=86400';
}
} Në browserat normalë, lidhja përmes HTTP/3 nuk është e mundur për momentin, por mund të merrni dhe ta nisni atë me flagun --enable-quic, të adresoheni në serverin tuaj ose, për shembull, në faqen quic.rocks dhe të shihni llojin e lidhjes në Vegzat e Zhvilluesve:

Në vend të HTTP/3 shkruhet http2+quic/99, por ndryshe është pothuajse e njëjtë.
Teknologji të tjera
- QUIC gjithashtu mbështet (të cilat janë lidhur me pompë me Facebook për HTTP/3) dhe progresiv . Apache aktualisht nuk e zotëron, por puna po vazhdon .
- Më 21 janar u përditësua
- Pikërisht këto ditë Microsoft hapi , në të cilin nuk janë të gjitha funksionet e standardit IETF, por kjo është një hap i madh përpara.
Përfundimi

Interesi për QUIC është i paqëndrueshëm, por po rritet, po kryhet puna për standardizimin e tij. Zbatime të reja të protokollit po dalin çdo muaj, dhe çdo vit më shumë zhvillues convjobrohen se e ardhmja është QUIC. Madje lejohet përfshirja e protokollit në versionet e ardhshme të stekës TCP, që do të thotë se herët a vonë, të gjithë interneti do të kalojë në lidhje më të qëndrueshme e më të shpejtë.
Tani pĂ«r tani mund tĂ« konfiguroni ndĂ«rveprimin QUIC pĂ«r infrastrukturen tuaj ose madje t'ua ofroni shfletuesve â ata planifikojnĂ« tĂ« shtojnĂ« mbĂ«shtetje pĂ«r protokollin, dhe statistikat e trishtueshme nga caniuse do tĂ« bĂ«hen mĂ« tĂ« lumtura.
Burimi: habr.com
