HTTP karịrị UDP - na-eji usoro QUIC eme ihe nke ọma

HTTP karịrị UDP - na-eji usoro QUIC eme ihe nke ọma

QUIC (njikọ ịntanetị ngwa ngwa UDP) bụ ụkpụrụ n'elu UDP na-akwado atụmatụ niile nke TCP, TLS na HTTP/2 ma na-edozi ọtụtụ nsogbu ha. A na-akpọkarị ya ọhụrụ ma ọ bụ "nnwale" protocol, ma ọ dịla anya ọ dịlarị oge nnwale: mmepe na-aga n'ihu karịa afọ 7. N'oge a, protocol emeghị ka ọ bụrụ ọkọlọtọ, mana ọ ka na-agbasawanye. Dịka ọmụmaatụ, ndị dike dị ka Google na Facebook na-eji QUIC iji mee ka okporo ụzọ dị ngwa ma belata igbu oge na netwọk mkpanaka, na IETF kwupụtara ndụdụ nke protocol ndabere maka ọkọlọtọ HTTP/3 (n'agbanyeghị na HTTP/2 na-eji. naanị 44.8% saịtị).

Echiche

Emepụtara QUIC ka ọ bụrụ nnọchi maka TCP nketa, nke emebere na mbụ maka netwọọkụ wired dị ala. TCP na-ebuga ngwugwu n'usoro, yabụ ọ bụrụ na otu ngwugwu efunahụ, a kwụsịrị kwụ n'ahịrị niile (isi-nke-akara ngọngọ), nke na-emetụta àgwà na nkwụsi ike nke njikọ ahụ na-adịghị mma. Iji zere nnukwu mfu, netwọkụ ekwentị na-amalite iji nnukwu ihe nchekwa, nke n'aka nke ya na-eduga na redundancy na nzaghachi na-adịghị mma nke usoro ahụ (bufferbloat). Na mgbakwunye, TCP na-etinye oge dị ukwuu iji guzobe njikọ: A na-ahazi arịrịọ SYN/ACK na TLS iche iche, na-achọ njem okirikiri atọ kama ịbụ otu, dị ka QUIC na-eme.

HTTP karịrị UDP - na-eji usoro QUIC eme ihe nke ọma

Ebe QUIC na-ejikọta ngbanwe TCP na mmejuputa TLS 1.3, njikọ niile na-ezoro ezo mgbe niile, na imebi ụdị okporo ụzọ adịghị mfe karịa ma ọ bụrụ na ọ na-agafe HTTPS. Na mgbakwunye, a na-emejuputa QUIC na ọkwa ngwa, dịka ngbanwe zuru oke nke nchịkọta TCP ga-ewe ebighi ebi.

N'agbanyeghị nkwado maka multiplexing na HTTP/2, nsogbu nke isi-nke-akara igbochi nọgidere na n'ihi mkpa na-ebuga ngwugwu n'usoro. A na-emejuputa QUIC n'elu UDP, n'ihi ya, ọ nweghị ihe mgbochi na ụkpụrụ, na iji gbochie ngwugwu ka ọ ghara ịla n'iyi ruo mgbe ebighị ebi, a na-agụ ha ọnụ ma nwee ike ịnwe akụkụ nke "ndị agbata obi," na-enye redundancy. Na mgbakwunye, QUIC na-ekewa kwụ n'ahịrị monolithic n'ọtụtụ eri maka ụdị arịrịọ dị iche iche n'ime otu njikọ. Ya mere, ọ bụrụ na ngwugwu efunahụ, nsogbu nwere ike ibili naanị maka otu kwụ n'ahịrị (dịka ọmụmaatụ, maka ịnyefe otu faịlụ):

HTTP karịrị UDP - na-eji usoro QUIC eme ihe nke ọma

Jiri

Na mbụ, QUIC ka emepụtara n'ime Google ma ahaziri ya maka ojiji n'ime ụlọ ọrụ ahụ. Na 2013, e zigara ya na IETF maka nhazi nhazi (nke ka na-aga n'ihu), ma ugbu a onye ọ bụla nwere ike itinye aka na mmepe nke protocol site n'ịtụpụta ihe ha na-efu. Otu ndị na-arụ ọrụ IETF na-ahazi nzukọ kwa afọ nke a na-akwado ụkpụrụ ọhụrụ yana a na-atụle ihe ọhụrụ. A na-ewere mmejuputa QUIC a dị ka nke bụ isi na ọ bụ na ndabere ya ka akwadoro ọkọlọtọ HTTP/3.

Ka ọ dị ugbu a, ọ nweghị okwu gbasara gụnyere HTTP/3 dị ka isi protocol, n'ihi na emechabeghị ya ma ọ fọrọ nke nta ka ọ ghara ịkwado ya:

HTTP karịrị UDP - na-eji usoro QUIC eme ihe nke ọma

Mana enwere ike itinye QUIC dị ka ụgbọ njem n'etiti ngwa na ihe nkesa, nke emere nke ọma na Uber:

Okwu Uber na ntinye nke QUIC

Iji tinye QUIC nke ọma ma melite arụmọrụ ngwa na gburugburu njikọ njikọ adịghị mma, anyị jiri ụkpụrụ QUIC dochie stack ochie (HTTP/2 n'elu TLS/TCP). Anyị na-eji ọbá akwụkwọ netwọk Cronet si Ọrụ Chromium, nke nwere nke mbụ, ụdị Google nke protocol - gQUIC. A na-emeziwanye mmejuputa a mgbe niile iji soro nkọwapụta IETF kachasị ọhụrụ.

Anyị bu ụzọ tinye Cronet n'ime ngwa gam akporo anyị iji gbakwunye nkwado maka QUIC. Emere njikọta n'ụzọ iji belata ọnụ ahịa mbugharị dị ka o kwere mee. Kama dochie kpam kpam nchịkọta netwọk ochie nke ji ọbá akwụkwọ ahụ OkeHttp, anyị ejikọtala Cronet N'okpuru usoro OkHttp API. Site n'ime njikọ a n'ụzọ dị otú a, anyị zere mgbanwe na oku netwọk anyị (nke a na-eji Ntughari) na ọkwa API.

Yiri usoro maka ngwaọrụ gam akporo, anyị mebere Cronet n'ime ngwa Uber na iOS, na-egbochi okporo ụzọ HTTP site na netwọkụ. APIeji NSURLPprotocol. Abstraction a, nke iOS Foundation nyere, na-ejikwa data URL akọwapụtara na protocol wee hụ na anyị nwere ike itinye Cronet na ngwa iOS anyị na-enweghị nnukwu ụgwọ mbugharị.

ewepụtara na ntụgharị asụsụ a Akụkọ Uber

Na azụ azụ ha jidere njikọ QUIC site na Google Cloud lb, nke na-akwado protocol kemgbe etiti afọ 2018.

Ọ bụghị ihe ijuanya na Google Cloud na-arụ ọrụ nke ọma na ụkpụrụ Google mepụtara, mana kedu ihe ndị ọzọ?

Nginx

Ogologo oge gara aga CloudFlare Agbalịrị m ịgafe nginx (nke anaghị akwado HTTP/3 na ndabara) na ngwa Quiche ya. Mmejuputa a dị ka otu faịlụ .patch, nke na-abịa na nkuzi nrụnye:

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

Ebe ị nwere ike jikọọ modul gị ma ọ bụrụ na ọ dị mkpa

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

Naanị ihe fọdụrụ bụ ime ka HTTP/3 kwado ya

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';
    }
}

Ọ gaghị ekwe omume ijikọ site na HTTP/3 na ihe nchọgharị oge niile, mana ị nwere ike iji Canary Chrome ma were ọkọlọtọ gbaa ya --enable-quic, gaa na nkesa gị ma ọ bụ, dịka ọmụmaatụ, saịtị quic.rocks wee lelee ụdị njikọ dị na Ngwaọrụ Mmepụta:
HTTP karịrị UDP - na-eji usoro QUIC eme ihe nke ọma
Kama HTTP/3 ka edere ya http2+quic/99, ma ọ bụ n'ezie otu ihe.

Teknụzụ ndị ọzọ

  • QUIC na-akwadokwa LiteSpeed (nke ejikọrọ na Facebook site na HTTP/3 nwere nnukwu mmasị) yana na-aga n'ihu Kaddy. Apache enweghị ike ime ya, mana ọrụ na-aga n'ihu n'uju.
  • Jenụwarị 21 emelitere ọkọlọtọ maka WebRTC
  • Naanị ụbọchị ọzọ Microsoft mepere Koodu mmejuputa msquic, nke na-abụghị ọrụ niile sitere na ọkọlọtọ IETF ka dị, mana nke a abụrụlarị nnukwu ọganihu.

nkwubi

HTTP karịrị UDP - na-eji usoro QUIC eme ihe nke ọma

Mmasị na QUIC anaghị akwụsi ike, mana na-eto eto, a na-arụkwa ọrụ iji hazie ya. Mmejuputa iwu ọhụrụ nke protocol na-apụta ihe fọrọ nke nta ka ọ bụrụ kwa ọnwa, na kwa afọ, ọtụtụ ndị mmepe kwenyesiri ike na QUIC bụ ọdịnihu. Ọ ga-ekwe omume ịgụnye protocol na ụdị TCP n'ọdịnihu, nke pụtara na n'oge na-adịghị anya, ịntanetị dum ga-aga na njikọ kwụsiri ike na ngwa ngwa.

Ugbua ị nwere ike hazie mmekọrịta QUIC maka akụrụngwa gị ma ọ bụ nye ya na ihe nchọgharị - ha niile na-eme atụmatụ ịgbakwunye nkwado maka usoro ahụ, ọnụ ọgụgụ dị mwute na caniuse ga-enwekwa obi ụtọ karị.

HTTP karịrị UDP - na-eji usoro QUIC eme ihe nke ọma

isi: www.habr.com

Tinye a comment