HTTP ka sarraysa UDP - adoo si wanaagsan u isticmaalaya borotokoolka QUIC

HTTP ka sarraysa UDP - adoo si wanaagsan u isticmaalaya borotokoolka QUIC

QUIC (Quick UDP Internet Connections) waa hab-maamuus korka ka ah UDP kaas oo taageera dhammaan sifooyinka TCP, TLS iyo HTTP/2 oo xalliya inta badan dhibaatooyinkooda. Inta badan waxaa loo yaqaan hab-raac cusub ama "tijaabo", laakiin waxay muddo dheer ka soo wareegtay marxaladda tijaabada: horumarku wuxuu socday in ka badan 7 sano. Muddadaas, hab-maamuusku ma suurtagelin inuu noqdo halbeeg, laakiin weli wuu sii faafay. Tusaale ahaan, QUIC waxaa adeegsada shirkadaha waaweyn sida Google iyo Facebook si loo dedejiyo taraafikada loona yareeyo dib u dhaca shabakadaha mobilada, IETF waxay ku dhawaaqday fargeeto borotokoolka saldhigga HTTP/3 heerka (inkastoo HTTP/2 ay isticmaasho kaliya 44.8% goobaha).

Fikrad

QUIC waxaa loo sameeyay beddelka TCP dhaxalka ah, kaas oo markii hore loogu talagalay shabakadaha fiilooyinka lumay ee hooseeya. TCP waxay u keentaa baakidh siday u kala horreeyaan, markaa haddii hal baakidh lumo, safka oo dhan waa la joojinayaa (xannibidda madaxa-line), kaas oo si xun u saameeya tayada iyo xasiloonida xiriirka. Si looga fogaado khasaaraha baaxadda leh, shabakadaha gacanta waxay adeegsadaan bakhaarro waaweyn, taas oo iyaduna horseedda ka-noqosho iyo jawaab-celin taban oo been ah oo borotokoolka ah (bufferbloat). Intaa waxaa dheer, TCP waxay ku bixisaa wakhti badan samaynta isku xidhka: Codsiyada SYN/ACK iyo TLS si gooni ah ayay u socdaan, una baahan saddex safar oo wareeg ah halkii hal, sida QUIC sameeyo.

HTTP ka sarraysa UDP - adoo si wanaagsan u isticmaalaya borotokoolka QUIC

Mar haddii QUIC ay isku darayso beddelka TCP iyo hirgelinta TLS 1.3, dhammaan xiriirada had iyo jeer waa la sifeeyay, iyo furidda taraafikada noocaas ah kama fududa haddii ay dhaaftay HTTPS. Intaa waxaa dheer, QUIC waxaa lagu fuliyaa heerka codsiga, maadaama beddelka buuxa ee xirmada TCP ay qaadan doonto daa'in.

In kasta oo la taageerayo isku-dhufashada HTTP/2, dhibaatada xannibaadda madaxa-line ayaa ku hadhay halkaas sababtoo ah baahida loo qabo in la keeno xidhmooyin si habsami leh. QUIC waxaa laga hirgeliyay dusha sare ee UDP, sidaas darteed ma laha xannibaad mabda'a ah, iyo si looga hortago xirmooyinka inay waligood lumin, waa la tiriyey waxayna ka koobnaan karaan qaybo ka mid ah "deriska," oo bixiya dib-u-celin. Intaa waxaa dheer, QUIC waxay safka monolithic u kala qaybisaa dunta badan ee noocyada kala duwan ee codsiyada hal xidhiidh. Sidaa darteed, haddii baakidhku lumo, dhibatooyinku waxay u soo bixi karaan hal saf oo keliya (tusaale ahaan, wareejinta fayl gaar ah):

HTTP ka sarraysa UDP - adoo si wanaagsan u isticmaalaya borotokoolka QUIC

Isticmaal

Markii hore, QUIC waxaa lagu soo saaray Google gudaheeda waxaana si weyn loogu habeeyey isticmaalka shirkadda dhexdeeda. 2013, waxaa loo wareejiyay IETF si loo habeeyo (taas oo wali socota), oo hadda qof kastaa wuxuu ka qayb qaadan karaa horumarinta borotokoolka isagoo soo jeedinaya waxa ka maqan. Kooxda shaqada ee IETF waxay abaabushaa shirar sanadle ah inta lagu guda jiro heer cusub oo la ansixiyay lagana doodayo wax cusub. Hirgelintan QUIC ayaa loo arkaa kan ugu weyn waxayna ku saleysan tahay in heerka HTTP/3 la shahaado.

Ilaa hadda, ma jiraan wax hadal ah oo ku saabsan in lagu daro HTTP/3 oo ah borotokoolka ugu muhiimsan, sababtoo ah weli ma dhammaan oo ku dhawaad ​​lama taageero:

HTTP ka sarraysa UDP - adoo si wanaagsan u isticmaalaya borotokoolka QUIC

Laakiin QUIC waxaa loo hirgelin karaa gaadiid ahaan u dhexeeya codsiga iyo server-ka, kaas oo si guul leh loogu sameeyay Uber:

Faallada Uber ee hordhaca QUIC

Si aan si guul leh ugu dhejino QUIC oo aan u wanaajino waxqabadka arjiga ee deegaannada isku xirnaanta liidata, waxaan ku beddelnay xirmaddii hore (HTTP/2 ee ka sarreysa TLS/TCP) borotokoolka QUIC. Waxaan isticmaalnay maktabadda shabakadda Cronet ka Mashaariicda Chromium, kaas oo ka kooban asalka, nooca Google ee borotokoolka - gQUIC. Hirgelintan sidoo kale si joogto ah ayaa loo hagaajinayaa si loo raaco qeexitaannada IETF ee ugu dambeeyay.

Waxaan markii hore ku dhex milmay Cronet abkayada Android si aan ugu darno taageerada QUIC. Isdhexgalka ayaa loo sameeyay si loo yareeyo kharashaadka socdaalka intii suurtagal ah. Halkii aad si buuxda u beddeli lahayd xidhmaddii hore ee isku xidhka ee isticmaalaysay maktabadda okHttp, waxaan isku darnay Cronet HOOS OkHttp API qaab-dhismeedka. Markaan samaynay isdhexgalka habkan, waxaan ka fogaanay isbedelada ku yimaada wicitaanada shabakadaha (oo ay adeegsadaan Dib-u-habeyn) heerka API.

Si la mid ah habka loogu talagalay aaladaha Android, waxaan ku hirgelinay Cronet gudaha barnaamijyada Uber ee iOS, ka joojinta taraafikada HTTP ee shabakada APIisticmaalaya NSURLProtocol. Soo koobiddan, oo ay bixiso IOS Foundation, waxay gacanta ku haysaa xogta URL-ku-gaarka ah ee borotokoolka waxayna hubisaa inaan ku dari karno Cronet-ka barnaamijyadeena macruufka iyada oo aan kharash badan oo socdaalka ah la helin.

laga soo qaatay turjumaadaan Maqaallada Uber

Dhabarka dambe waxay qabteen isku xirka QUIC ee Google Cloud lb, kaas oo waxay taageertaa borotokoolka ilaa bartamihii 2018-kii.

La yaab maaha in Google Cloud uu si weyn ugu shaqeeyo borotokoolka Google-soo saaray, laakiin waa maxay beddelka?

Nginx

Muddo aan fogayn CloudFlare Waxaan isku dayay inaan ka gudbo nginx (kaas oo aan ku taageeri HTTP/3 default) oo leh qalabkeeda Quiche. Hirgelinta waxaa loo heli karaa sidii hal fayl .patch ah, kaas oo la socda tababbarka rakibidda:

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.patch

Halkan waxaad ku xidhi kartaa modules-kaaga haddii loo baahdo

./configure                          	
   	--prefix=$PWD                       	
   	--with-http_ssl_module              	
   	--with-http_v2_module               	
   	--with-http_v3_module               	
   	--with-openssl=../quiche/deps/boringssl 
   	--with-quiche=../quiche
 make

Waxa hadhay oo dhan waa in la suurtogeliyo taageerada HTTP/3

events {
    worker_connections  1024;
}

http {
    server {
        # Enable QUIC and HTTP/3.
        listen 443 quic reuseport;

        # Enable HTTP/2 (optional).
        listen 443 ssl http2;

        ssl_certificate      cert.crt;
        ssl_certificate_key  cert.key;

        # Enable all TLS versions (TLSv1.3 is required for QUIC).
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;

        # Request buffering in not currently supported for HTTP/3.
        proxy_request_buffering off;

        # Add Alt-Svc header to negotiate HTTP/3.
        add_header alt-svc 'h3-27=":443"; ma=86400';
    }
}

Wali suurtagal ma aha in lagu xidho HTTP/3 daalacashada caadiga ah, laakiin waad isticmaali kartaa Kansarka Chrome oo ku orda calanka --enable-quic, aad server-kaaga ama, tusaale ahaan, goobta quic.rocks oo fiiri nooca isku xirka ee Aaladaha Horumarinta:
HTTP ka sarraysa UDP - adoo si wanaagsan u isticmaalaya borotokoolka QUIC
Halkii HTTP/3 waa la qoray http2+quic/99, laakiin asal ahaan waa isku shay.

Farsamooyinka kale

gunaanad

HTTP ka sarraysa UDP - adoo si wanaagsan u isticmaalaya borotokoolka QUIC

Xiisaha QUIC waa mid aan degganayn, laakiin sii kordhaya, waxaana socda shaqada si loo habeeyo. Hirgelinta cusub ee borotokoolka ayaa soo muuqda ku dhawaad ​​bil kasta, sanad walbana horumariyayaal badan iyo in ka badan ayaa ku qanacsan in QUIC uu yahay mustaqbalka. Xitaa waa suurtogal in lagu daro borotokoolka noocyada mustaqbalka ee xirmooyinka TCP, taas oo macnaheedu yahay in mar dhow ama hadhow Internetka oo dhan uu u guuri doono xiriiro xasiloon oo degdeg ah.

Hadda ka hor waxaad u habayn kartaa isdhexgalka QUIC ee kaabayaashaaga ama xitaa waxaad siin kartaa daalacashada - dhamaantood waxay qorsheynayaan inay ku daraan taageerada borotokoolka, iyo tirakoobyada murugada leh ee caniuse waxay noqon doonaan kuwo farxad badan.

HTTP ka sarraysa UDP - adoo si wanaagsan u isticmaalaya borotokoolka QUIC

Source: www.habr.com

Add a comment