I-HTTP ngaphezulu kwe-UDP - ukusebenzisa kakuhle i-QUIC protocol

I-HTTP ngaphezulu kwe-UDP - ukusebenzisa kakuhle i-QUIC protocol

I-QUIC (i-Quick UDP Internet Connections) yiprotocol ephezulu ye-UDP exhasa zonke iimpawu ze-TCP, i-TLS kunye ne-HTTP / 2 kwaye ixazulula ezininzi iingxaki zabo. Idla ngokubizwa ngokuba yiprotocol entsha okanye "yovavanyo", kodwa sele idlule ixesha elide kwisigaba sovavanyo: uphuhliso luqhubekile ngaphezulu kweminyaka eyi-7. Ngeli xesha, iprotocol ayizange ikwazi ukuba ngumgangatho, kodwa yasasazeka. Umzekelo, i-QUIC isetyenziswa zizigebenga ezifana ne-Google kunye ne-Facebook ukukhawulezisa i-traffic kunye nokunciphisa ukulibaziseka kuthungelwano oluphathwayo, kwaye i-IETF yabhengeza ifolokhwe yayo yeprotocol isiseko somgangatho we-HTTP/3 (nangona i-HTTP/2 isebenzisa. kuphela 44.8% iindawo).

Umxholo

I-QUIC yaphuhliswa njengokutshintshwa kwe-TCP yelifa, eyayiyilelwe ekuqaleni ilahleko ephantsi yothungelwano lweengcingo. I-TCP ihambisa iipakethi ngokulandelelana, ngoko ke ukuba ipakethi enye ilahleka, umgca uphela umisiwe (intloko yomgca ukuvala), echaphazela kakubi umgangatho kunye nokuzinza koqhagamshelwano. Ukunqanda ilahleko enkulu, iinethiwekhi zeselula zibhenela ekusebenziseni ii-buffers ezinkulu, ezithi zikhokelele ekufunekeni nasekuphenduleni okungalunganga kweprotocol (ibufferbloat). Ukongeza, i-TCP ichitha ixesha elininzi ukuseka uxhulumaniso: I-SYN / ACK kunye nezicelo ze-TLS zihamba ngokwahlukileyo, zifuna ukujikeleza kathathu endaweni yesinye, njengoko i-QUIC yenza.

I-HTTP ngaphezulu kwe-UDP - ukusebenzisa kakuhle i-QUIC protocol

Ekubeni i-QUIC idibanisa ukutshintshwa kwe-TCP kunye nokuphunyezwa kwe-TLS 1.3, zonke iidibansi zihlala zifihliwe, kwaye ukucima i-traffic enjalo akukho lula kunokuba bekuhamba nge-HTTPS. Ukongeza, i-QUIC iphunyezwa kwinqanaba lesicelo, njengoko ukutshintshwa okupheleleyo kwesitaki se-TCP kuya kuthatha ngonaphakade.

Nangona ukuxhaswa kwe-multiplexing kwi-HTTP / 2, ingxaki ye-head-line blocking yahlala ikhona ngenxa yesidingo sokuhambisa iipakethi ngokulandelelana. I-QUIC iphunyezwe phezu kwe-UDP, ngoko ayinayo i-blocking in principle, kwaye ukukhusela iipakethi ukuba zilahleke ngonaphakade, zibalwe kwaye zingaqukatha iinxalenye "zabamelwane," ezinikezela ngokuphindaphindiweyo. Ukongeza, i-QUIC yahlula umgca we-monolithic ibe yimisonto emininzi kwiindidi ezahlukeneyo zezicelo ngaphakathi koqhagamshelwano olulodwa. Ke, ukuba ipakethi ilahlekile, iingxaki zinokuvela kuphela kumgca omnye (umzekelo, ukuhambisa ifayile ethile):

I-HTTP ngaphezulu kwe-UDP - ukusebenzisa kakuhle i-QUIC protocol

Sebenzisa

Ekuqaleni, i-QUIC yaphuhliswa ngaphakathi kuGoogle kwaye yayilungiselelwe ukusetyenziswa ngaphakathi kwenkampani. Kwi-2013, idluliselwe kwi-IETF yokulinganisa (esaqhubekayo), kwaye ngoku wonke umntu unokuthatha inxaxheba ekuphuhlisweni kweprotocol ngokuphakamisa oko balahlekileyo. Iqela elisebenzayo le-IETF liququzelela iintlanganiso zonyaka apho umgangatho omtsha uvunyiwe kwaye izinto ezintsha zixoxwa. Oku kuphunyezwa kwe-QUIC kuthathwa njengeyona nto iphambili kwaye kusekelwe ekubeni umgangatho we-HTTP / 3 uqinisekisiwe.

Ukuza kuthi ga ngoku, akukho ntetho malunga nokubandakanya i-HTTP/3 njengeyona ndlela iphambili yomthetho, kuba ayikagqitywa kwaye ayixhaswanga:

I-HTTP ngaphezulu kwe-UDP - ukusebenzisa kakuhle i-QUIC protocol

Kodwa i-QUIC inokuphunyezwa njengothutho phakathi kwesicelo kunye neseva, eyenziwe ngempumelelo e-Uber:

Izimvo zika-Uber malunga nokwaziswa kwe-QUIC

Ukuzinzisa ngempumelelo i-QUIC kunye nokuphucula usetyenziso lwenkqubo kwiindawo zoqhagamshelo olulambathayo, sitshintshe isitaki esidala (HTTP/2 ngaphezulu kwe-TLS/TCP) nge-QUIC protocol. Sasebenzisa ithala leencwadi lenethiwekhi I-Cronet ΠΈΠ· IiProjekthi zeChromium, equlethe imvelaphi, inguqulelo kaGoogle yeprotocol - gQUIC. Olu phunyezo lusoloko luphuculwa ukulandela inkcazo ye-IETF yamva nje.

Siqale sadibanisa iCronet kwiiapps zethu ze-Android ukongeza inkxaso ye-QUIC. Ukuhlanganiswa kwenziwa ngendlela yokunciphisa iindleko zokufuduka kangangoko kunokwenzeka. Endaweni yokutshintsha ngokupheleleyo isitakhi esidala sothungelwano ebesisebenzisa ithala leencwadi OkHttp, sidibanise iCronet PHANTSI kwe-OkHttp API isakhelo. Ngokwenza udibaniso ngale ndlela, sithintele utshintsho kwiifowuni zethu zenethiwekhi (ezisetyenziswa yi Yenza kwakhona) kwinqanaba le-API.

Ngokufana nendlela yezixhobo ze-Android, siphumeze iCronet kwi-Uber apps kwi-iOS, sithintela i-HTTP traffic kwinethiwekhi. APIusebenzisa NSURLProtocol. Olu thatho, olubonelelwa yi-iOS Foundation, luphatha idatha ye-URL yeprotocol kwaye iqinisekisa ukuba sinokudibanisa iCronet kwizicelo zethu ze-iOS ngaphandle kweendleko ezinkulu zokufuduka.

ithathwe kwi le nguqulelo Amanqaku ka-Uber

Ngasemva babambe unxibelelwano lwe-QUIC nge-Google Cloud lb, leyo ixhasa umthetho olandelwayo ukusukela phakathi ku-2018.

Ayimangalisi into yokuba iLifu likaGoogle lisebenza kakuhle ngeprotocol ephuhliswe nguGoogle, kodwa zeziphi ezinye iindlela?

Nginx

Kungekudala kwi-CloudFlare Ndazama ukuwela nginx (engaxhasi iHTTP/3 ngokungagqibekanga) ngesixhobo sayo seQuiche. Ukuphunyezwa kufumaneka njengefayile enye ye-.patch, ehamba nesifundo sofakelo:

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

Apha ungaqhagamshela iimodyuli zakho ukuba kuyimfuneko

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

Konke okuseleyo kukuvumela inkxaso yeHTTP/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';
    }
}

Akukenzeki ukudibanisa nge-HTTP/3 kwiziphequluli eziqhelekileyo, kodwa ungasebenzisa Canary Chrome kwaye uyiqhube kunye neflegi --enable-quic, yiya kumncedisi wakho okanye, umzekelo, indawo ye-quic.rocks kwaye ujonge uhlobo loqhagamshelwano kwiZixhobo zoMphuhlisi:
I-HTTP ngaphezulu kwe-UDP - ukusebenzisa kakuhle i-QUIC protocol
Esikhundleni se-HTTP / 3 kubhaliwe http2+quic/99, kodwa ngokusisiseko iyafana.

Obunye ubuchwepheshe

isiphelo

I-HTTP ngaphezulu kwe-UDP - ukusebenzisa kakuhle i-QUIC protocol

Umdla kwi-QUIC awuzinzanga, kodwa uyakhula, kwaye umsebenzi uyaqhubeka ukuwubeka emgangathweni. Ukuphunyezwa okutsha kweprotocol kubonakala phantse nyanga zonke, kwaye minyaka yonke abaphuhlisi abaninzi ngakumbi bayaqiniseka ukuba i-QUIC yikamva. Kunokwenzeka ukubandakanya iprotocol kwiinguqulelo zexesha elizayo ze-TCP stack, oku kuthetha ukuba ngokukhawuleza okanye kamva yonke i-Intanethi iya kufudukela kuqhagamshelwano oluzinzile kwaye olukhawulezayo.

Sele ngoku ungaqwalasela ukusebenzisana kwe-QUIC kwiziseko zoncedo zakho okanye uyinike izikhangeli - zonke zicwangcisa ukongeza inkxaso yeprotocol, kwaye izibalo ezilusizi kunye ne-caniuse ziya kuvuya ngakumbi.

I-HTTP ngaphezulu kwe-UDP - ukusebenzisa kakuhle i-QUIC protocol

umthombo: www.habr.com

Yongeza izimvo