HTTP fuq UDP - tagħmel użu tajjeb mill-protokoll QUIC

HTTP fuq UDP - tagħmel użu tajjeb mill-protokoll QUIC

QUIC (Quick UDP Internet Connections) huwa protokoll fuq UDP li jappoġġja l-karatteristiċi kollha ta 'TCP, TLS u HTTP/2 u jsolvi ħafna mill-problemi tagħhom. Spiss tissejjaħ protokoll ġdid jew "sperimentali", iżda ilu għadda mill-istadju sperimentali: l-iżvilupp ilu għaddej għal aktar minn 7 snin. Matul dan iż-żmien, il-protokoll ma rnexxilux isir standard, iżda xorta sar mifrux. Pereżempju, QUIC jintuża minn ġganti bħal Google u Facebook biex iħaffef it-traffiku u jnaqqas id-dewmien fin-netwerks mobbli, u l-IETF iddikjara l-furketta tiegħu tal-protokoll bħala l-bażi għall-istandard HTTP/3 (anke jekk HTTP/2 juża 44.8% biss siti).

Kunċett

QUIC ġie żviluppat bħala sostitut għall-legat TCP, li oriġinarjament kien iddisinjat għal netwerks bil-fili b'telf baxx. TCP iwassal pakketti fl-ordni, għalhekk jekk jintilef pakkett wieħed, il-kju kollu jitwaqqaf (imblukkar tal-head-of-line), li taffettwa b'mod negattiv il-kwalità u l-istabbiltà tal-konnessjoni. Biex jiġi evitat telf kbir, in-netwerks ċellulari jirrikorru għall-użu ta' buffers kbar, li mbagħad iwassal għal redundancy u rispons negattiv falz tal-protokoll (bufferbloat). Barra minn hekk, TCP iqatta 'ħafna ħin jistabbilixxi konnessjoni: talbiet SYN/ACK u TLS huma pproċessati separatament, li jeħtieġu tliet roundtrips minflok wieħed, kif jagħmel QUIC.

HTTP fuq UDP - tagħmel użu tajjeb mill-protokoll QUIC

Peress li QUIC jgħaqqad sostituzzjoni ta 'TCP u implimentazzjoni ta' TLS 1.3, il-konnessjonijiet kollha huma dejjem ikkodifikati, u d-deċifrar ta 'tali traffiku mhuwiex aktar faċli milli kieku kien għaddej minn HTTPS. Barra minn hekk, QUIC hija implimentata fil-livell tal-applikazzjoni, peress li jkun hemm sostituzzjoni sħiħa tal-munzell TCP eternità.

Minkejja l-appoġġ għall-multiplexing f'HTTP/2, il-problema tal-imblukkar tal-head-of-line baqgħet hemm minħabba l-ħtieġa li jitwasslu l-pakketti fl-ordni. QUIC huwa implimentat fuq UDP, għalhekk ma għandu l-ebda imblukkar fil-prinċipju, u biex jipprevjeni li l-pakketti jintilfu għal dejjem, huma nnumerati u jista 'jkun fihom partijiet ta' "ġirien", li jipprovdu redundancy. Barra minn hekk, QUIC jaqsam il-kju monolitiku f'ħjut multipli għal tipi differenti ta 'talbiet f'konnessjoni waħda. Għalhekk, jekk jintilef pakkett, jistgħu jinqalgħu problemi għal kju wieħed biss (pereżempju, għat-trasferiment ta' fajl speċifiku):

HTTP fuq UDP - tagħmel użu tajjeb mill-protokoll QUIC

Użu

Inizjalment, QUIC ġie żviluppat fi ħdan Google u kien imfassal fil-biċċa l-kbira għall-użu fi ħdan il-kumpanija. Fl-2013, ġie trasferit lill-IETF għall-istandardizzazzjoni (li għadu għaddej), u issa kulħadd jista 'jipparteċipa fl-iżvilupp tal-protokoll billi jipproponi dak li jkun nieqes. Il-grupp ta' ħidma tal-IETF jorganizza laqgħat annwali li matulhom jiġi approvat standard ġdid u jiġu diskussi l-innovazzjonijiet. Din l-implimentazzjoni ta 'QUIC hija meqjusa bħala waħda ewlenija u hija fuq il-bażi tagħha li l-istandard HTTP/3 huwa ċċertifikat.

S'issa, m'hemm l-ebda diskors dwar l-inklużjoni ta 'HTTP/3 bħala l-protokoll ewlieni, minħabba li għadu mhux lest u kważi mhux appoġġjat:

HTTP fuq UDP - tagħmel użu tajjeb mill-protokoll QUIC

Iżda QUIC jista 'jiġi implimentat bħala trasport bejn l-applikazzjoni u s-server, li sar b'suċċess f'Uber:

Il-kumment ta’ Uber dwar l-introduzzjoni ta’ QUIC

Biex inkorporaw b'suċċess QUIC u ntejbu l-prestazzjoni tal-applikazzjoni f'ambjenti ta 'konnettività fqira, biddel il-munzell l-antik (HTTP/2 fuq TLS/TCP) bil-protokoll QUIC. Aħna użajna l-librerija tan-netwerk Cronet ta ' Proġetti tal-Kromju, li fiha l-verżjoni oriġinali, Google tal-protokoll - gQUIC. Din l-implimentazzjoni qed titjieb ukoll kontinwament biex issegwi l-aħħar speċifikazzjoni tal-IETF.

L-ewwel integrajna Cronet fl-apps Android tagħna biex inżidu l-appoġġ għal QUIC. L-integrazzjoni twettqet b'tali mod li jitnaqqsu kemm jista' jkun l-ispejjeż tal-migrazzjoni. Minflok tissostitwixxi kompletament il-munzell antik tan-netwerking li uża l-librerija OkHttp, integrajna Cronet TAĦT il-qafas OkHttp API. Billi għamilna l-integrazzjoni b'dan il-mod, evitajna bidliet fis-sejħiet tan-netwerk tagħna (li jintużaw minn Retrofit) fil-livell tal-API.

Simili għall-approċċ għal apparati Android, implimentajna Cronet f'apps Uber fuq iOS, interċettajna t-traffiku HTTP min-netwerk APIbl-użu NSURLProtocol. Din l-estrazzjoni, ipprovduta mill-Fondazzjoni tal-iOS, tieħu ħsieb id-dejta tal-URL speċifika għall-protokoll u tiżgura li nistgħu nintegraw Cronet fl-applikazzjonijiet tal-iOS tagħna mingħajr spejjeż sinifikanti ta’ migrazzjoni.

meħuda minn din it-traduzzjoni Artikli Uber

Fuq il-backend huma qabdu konnessjonijiet QUIC permezz Google Cloud lb, li jappoġġja protokoll minn nofs l-2018.

Mhix sorpriża li Google Cloud jaħdem tajjeb mal-protokoll żviluppat minn Google, imma x'inhuma l-alternattivi?

Nginx

Ftit ilu CloudFlare Ippruvajt naqsam nginx (li ma jappoġġjax HTTP/3 awtomatikament) bl-għodda Quiche tiegħu. L-implimentazzjoni hija disponibbli bħala fajl .patch wieħed, li jiġi ma 'tutorja ta' installazzjoni:

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

Hawnhekk tista 'tqabbad il-moduli tiegħek jekk meħtieġ

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

Li jibqa 'huwa li tippermetti l-appoġġ 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';
    }
}

Għadu mhux possibbli li tikkonnettja permezz ta 'HTTP/3 f'browsers regolari, iżda tista' tuża Kanarji tal-Kromju u mexxiha mal-bandiera --enable-quic, mur fis-server tiegħek jew, pereżempju, is-sit quic.rocks u ħares lejn it-tip ta' konnessjoni f'Għodod tal-Iżviluppaturi:
HTTP fuq UDP - tagħmel użu tajjeb mill-protokoll QUIC
Minflok HTTP/3 huwa miktub http2+quic/99, iżda huwa essenzjalment l-istess ħaġa.

Teknoloġiji oħra

Konklużjoni

HTTP fuq UDP - tagħmel użu tajjeb mill-protokoll QUIC

L-interess fil-QUIC huwa instabbli, iżda qed jikber, u għaddejja ħidma biex jiġi standardizzat. Implimentazzjonijiet ġodda tal-protokoll jidhru kważi kull xahar, u kull sena aktar u aktar żviluppaturi huma konvinti li QUIC huwa l-futur. Huwa saħansitra possibbli li jiġi inkluż il-protokoll f'verżjonijiet futuri tal-munzell TCP, li jfisser li llum jew għada l-Internet kollu jimxi għal konnessjonijiet aktar stabbli u aktar mgħaġġla.

Diġà issa tista 'tikkonfigura l-interazzjoni QUIC għall-infrastruttura tiegħek jew saħansitra tagħtiha lill-browsers - kollha qed jippjanaw li jżidu l-appoġġ għall-protokoll, u l-istatistika diqa ma' caniuse se ssir aktar ferrieħa.

HTTP fuq UDP - tagħmel użu tajjeb mill-protokoll QUIC

Sors: www.habr.com

Żid kumment