HTTP pamusoro peUDP - kushandisa zvakanaka QUIC protocol

HTTP pamusoro peUDP - kushandisa zvakanaka QUIC protocol

QUIC (Kurumidza UDP Internet Connections) iprotocol pamusoro peUDP inotsigira ese maficha eTCP, TLS neHTTP/2 uye inogadzirisa mazhinji ematambudziko avo. Inowanzonzi itsva kana "yekuedza" protocol, asi yakagara kwenguva refu nhanho yekuedza: kusimudzira kwave kuenderera kweanopfuura makore manomwe. Munguva iyi, iyo protocol haina kukwanisa kuita chiyero, asi ichiri kupararira. Semuenzaniso, QUIC inoshandiswa nehofori dzakadai seGoogle neFacebook kumhanyisa traffic uye kuderedza kunonoka munharembozha, uye IETF yakazivisa forogo yayo yeprotocol hwaro hweHTTP/7 standard (kunyangwe HTTP/3 inoshandisa. 44.8% chete nzvimbo).

Concept

QUIC yakagadziridzwa sechitsividzo chenhaka TCP, iyo yakatanga kugadzirirwa yakaderera-kurasikirwa newaya network. TCP inoburitsa mapaketi zvakarongeka, saka kana packet imwe ikarasika, mutsara wese unomiswa (head-of-line blocking), iyo inokanganisa zvakashata kunaka uye kugadzikana kwekubatana. Kuti udzivise kurasikirwa kukuru, maserura network anoshandisa kushandisa mabuffers makuru, izvo zvinozotungamira kune redundancy uye yenhema mhinduro isina kunaka yeprotocol (bufferbloat) Pamusoro pezvo, TCP inopedza nguva yakawanda ichigadzira chinongedzo: SYN/ACK uye TLS zvikumbiro zvinogadziriswa zvakasiyana, zvinoda kutenderera katatu pane imwe chete, sezvinoita QUIC.

HTTP pamusoro peUDP - kushandisa zvakanaka QUIC protocol

Sezvo QUIC ichibatanidza kutsiva kweTCP uye kuita kweTLS 1.3, zvese zvinongedzo zvinogara zvakavharirwa, uye kubvisa traffic yakadai hakusi nyore kupfuura dai yaienda pamusoro peHTTPS. Pamusoro pezvo, QUIC inoshandiswa padanho rekunyorera, sekutsiva kwakazara kweTCP stack nekusingaperi.

Pasinei nerutsigiro rwekuwandisa muHTTP/2, dambudziko remusoro-we-line blocking rakaramba riripo nekuda kwekudiwa kwekuendesa mapaketi zvakarongeka. QUIC inoshandiswa pamusoro peUDP, saka haina kuvharira musimboti, uye kudzivirira mapaketi kuti arasikirwe nekusingaperi, akaverengerwa uye anogona kuve nezvikamu zve "vavakidzani," zvichipa redundancy. Pamusoro pezvo, QUIC inotsemura mutsara we monolithic kuita tambo dzakawanda dzemhando dzakasiyana dzezvikumbiro mukati mekubatana kumwe chete. Saka, kana packet yakarasika, matambudziko anogona kumuka kune imwe chete mutsara (somuenzaniso, yekuendesa imwe faira):

HTTP pamusoro peUDP - kushandisa zvakanaka QUIC protocol

Shandisa

Pakutanga, QUIC yakagadziridzwa mukati meGoogle uye yakanyatsogadzirirwa kushandiswa mukati mekambani. Muna 2013, yakaendeswa kuIETF yekuenzanisa (iyo ichiri kuenderera mberi), uye iye zvino munhu wese anogona kutora chikamu mukugadzirwa kweprotocol nekutaura zvavari kushaikwa. Boka rinoshanda reIETF rinoronga misangano yegore panguva iyo chiyero chitsva chinotenderwa uye zvitsva zvinokurukurwa. Kuitwa uku kweQUIC kunoonekwa sechinhu chikuru uye zviri pahwaro hwayo kuti chiyero cheHTTP/3 chinopihwa chitupa.

Parizvino, hapana kutaura nezve kusanganisa HTTP/3 seyo huru protocol, nekuti haisati yapera uye haisati yatsigirwa:

HTTP pamusoro peUDP - kushandisa zvakanaka QUIC protocol

Asi QUIC inogona kuitwa sekufambisa pakati pechishandiso neseva, iyo yakaitwa zvakabudirira paUber:

Matauriro eUber pakuunzwa kweQUIC

Kuti tibudirire kupinza QUIC uye kunatsiridza kushanda kweapp munzvimbo dzakashata dzekubatanidza, takatsiva dura rekare (HTTP/2 pamusoro peTLS/TCP) neQUIC protocol. Takashandisa network library Cronet kubva Chromium Projects, iyo ine yekutanga, Google vhezheni yeprotocol - gQUIC. Kuita uku kuri kuramba kuchivandudzwa kuti kutevedzere yazvino IETF yakatarwa.

Isu takatanga kubatanidza Cronet mune yedu Android apps kuti tiwedzere rutsigiro rweQUIC. Kubatanidzwa kwakaitwa nenzira yekuderedza mari yekufambisa zvakanyanya sezvinobvira. Panzvimbo yekutsiva zvachose iyo yekare networking stack yaishandisa raibhurari OkHttp, takabatanidza Cronet PASI peOkHttp API framework. Nekuita kusanganisa neiyi nzira, isu takadzivirira shanduko kunetiweki mafoni edu (anoshandiswa ne Dzorera zvakare) pachiyero cheAPI.

Zvakafanana nemaitiro emidziyo yeAroid, takaisa Cronet muUber maapplication paIOS, tichibata HTTP traffic kubva kunetiweki. APIkushandisa NSURLProtocol. Iyi yekubvisa, yakapihwa neIOS Foundation, inobata data-chaiyo URL data uye inova nechokwadi chekuti tinogona kubatanidza Cronet mune yedu iOS zvikumbiro pasina mutengo wakakura wekufambisa.

kutorwa kubva shanduro iyi Zvinyorwa zveUber

Kumashure vakabata QUIC yekubatanidza kuburikidza neGoogle Cloud lb, iyo inotsigira protocol kubva pakati pe2018.

Hazvishamisi kuti Google Cloud inoshanda zvikuru neGoogle-yakagadziridzwa protocol, asi ndedzipi dzimwe nzira?

Nginx

Munguva pfupi yapfuura CloudFlare Ndakaedza kuyambuka nginx (iyo isingatsigire HTTP/3 nekukasira) ine Quiche chishandiso. Kuitwa kunowanikwa seimwe .patch faira, inouya nedzidziso yekuisa:

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

Pano iwe unogona kubatanidza mamodules ako kana zvichidikanwa

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

Chasara kugonesa HTTP/3 rutsigiro

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

Haisati yave kugona kubatana kuburikidza neHTTP/3 mumabhurawuza enguva dzose, asi unogona kushandisa Chrome Canary woimhanyisa nemureza --enable-quic, enda kune server yako kana, semuenzaniso, iyo quic.rocks saiti uye tarisa mhando yekubatanidza muDeveloper Tools:
HTTP pamusoro peUDP - kushandisa zvakanaka QUIC protocol
Panzvimbo yeHTTP/3 yakanyorwa http2+quic/99, asi zvakangofanana.

Mamwe matekinoroji

  • QUIC zvakare inotsigira LiteSpeed (iyo yakabatana neFacebook kuburikidza neHTTP/3 ine huru fanfare) uye inofambira mberi Caddy. Apache haisati yagona kuzviita, asi basa riri kuenderera mberi full swing.
  • January 21 yakagadziridzwa dhizaini chiyero cheWebRTC
  • Rimwe zuva Microsoft yakavhurwa msquic kushandiswa kodhi, umo asiri mabasa ese kubva kuIETF chiyero achiri kuwanikwa, asi ichi chatova budiriro huru.

mhedziso

HTTP pamusoro peUDP - kushandisa zvakanaka QUIC protocol

Kufarira QUIC hakuna kugadzikana, asi kuri kukura, uye basa riri kuenderera mberi rekuimisa. Kuitwa kutsva kweprotocol kunoonekwa mwedzi wega wega, uye gore rega rega vagadziri vakawanda vanogutsikana kuti QUIC ndiyo ramangwana. Izvo zvinotogoneka kuisa iyo protocol mune ramangwana shanduro dzeTCP stack, izvo zvinoreva kuti nekukurumidza kana gare gare iyo Internet yese ichaenda kune yakagadzikana uye nekukurumidza kubatana.

Parizvino iwe unokwanisa kugadzirisa QUIC kupindirana kwezvivakwa zvako kana kutombozvipa kune mabhurawuza - vese vari kuronga kuwedzera rutsigiro rweprotocol, uye nhamba dzinosiririsa dzine caniuse dzinowedzera kufara.

HTTP pamusoro peUDP - kushandisa zvakanaka QUIC protocol

Source: www.habr.com

Voeg