I-HTTP phezu kwe-UDP - ukusebenzisa kahle iphrothokholi ye-QUIC

I-HTTP phezu kwe-UDP - ukusebenzisa kahle iphrothokholi ye-QUIC

I-QUIC (Quick UDP Internet Connections) iyiphrothokholi engaphezulu kwe-UDP esekela zonke izici ze-TCP, TLS ne-HTTP/2 futhi ixazulula izinkinga zazo eziningi. Ivamise ukubizwa ngokuthi iphrothokholi entsha noma “yokuhlola”, kodwa sekuyisikhathi eside yadlula esigabeni sokuhlola: ukuthuthukiswa bekulokhu kuqhubeka iminyaka engaphezu kwengu-7. Ngalesi sikhathi, iphrothokholi ayizange ikwazi ukuba yindinganiso, kodwa yasabalale. Isibonelo, i-QUIC isetshenziswa izikhondlakhondla ezifana ne-Google ne-Facebook ukusheshisa ukugcwala kwezimoto nokunciphisa ukubambezeleka kwamanethiwekhi eselula, futhi i-IETF yamemezela ukuthi imfoloko yayo yephrothokholi iyisisekelo sezinga le-HTTP/3 (nakuba i-HTTP/2 isebenzisa 44.8% kuphela amasayithi).

Umqondo

I-QUIC yathuthukiswa njengokuthatha indawo ye-TCP yefa, ekuqaleni eyayakhelwe amanethiwekhi anezintambo ezilahlekelwa kancane. I-TCP iletha amaphakethe ngokulandelana, ngakho-ke uma iphakethe elilodwa lilahlekile, wonke umugqa uyamiswa (ukuvinjwa kwekhanda lomugqa), okuthinta kabi ikhwalithi nokuzinza kokuxhumeka. Ukuze ugweme ukulahlekelwa okukhulu, amanethiwekhi amaselula aphendukela ekusebenziseni ama-buffers amakhulu, okuholela ekubuyekezweni nasekuphenduleni okungalungile kwephrothokholi (i-bufferbloat). Ukwengeza, i-TCP ichitha isikhathi esiningi isungula uxhumano: I-SYN/ACK kanye nezicelo ze-TLS zicutshungulwa ngokuhlukana, ezidinga ukuya nokubuya kathathu esikhundleni sokukodwa, njengoba kwenza i-QUIC.

I-HTTP phezu kwe-UDP - ukusebenzisa kahle iphrothokholi ye-QUIC

Njengoba i-QUIC ihlanganisa ukushintshwa kwe-TCP nokusebenzisa i-TLS 1.3, konke ukuxhumeka kuhlala kubethelwe, futhi ukususa ukubethela kwethrafikhi akulula kunalokho uma bekudlula i-HTTPS. Ngaphezu kwalokho, i-QUIC isetshenziswa ezingeni lesicelo, njengoba kungase kuthathelwe indawo ephelele isitaki se-TCP iphakade.

Naphezu kokusekelwa kokuphindaphinda ku-HTTP/2, inkinga yokuvinjwa kwekhanda lomugqa yahlala lapho ngenxa yesidingo sokuletha amaphakethe ngendlela. I-QUIC isetshenziswa phezu kwe-UDP, ngakho-ke ayinakho ukuvinjelwa ngokomgomo, futhi ukuvimbela amaphakethe ukuthi angalahleki unomphela, anezinombolo futhi angaqukatha izingxenye "zomakhelwane," ezihlinzeka ngokungasebenzi. Ngaphezu kwalokho, i-QUIC ihlukanisa ulayini we-monolithic ube imicu eminingi ngezinhlobo ezahlukene zezicelo ngaphakathi koxhumano olulodwa. Ngakho, uma iphakethe lilahlekile, izinkinga zingase ziphakame kuphela kulayini owodwa (isibonelo, ukudlulisa ifayela elithile):

I-HTTP phezu kwe-UDP - ukusebenzisa kahle iphrothokholi ye-QUIC

Sebenzisa

Ekuqaleni, i-QUIC yathuthukiswa ngaphakathi kwe-Google futhi yalungiselelwa ukusetshenziswa ngaphakathi kwenkampani. Ngo-2013, yadluliselwa ku-IETF ukuze kumiswe (okusaqhubeka), futhi manje wonke umuntu angabamba iqhaza ekuthuthukisweni kwephrothokholi ngokuphakamisa lokho abakushodayo. Iqembu elisebenzayo le-IETF lihlela imihlangano yaminyaka yonke lapho izinga elisha ligunyazwa futhi kuxoxiswane ngezinto ezintsha. Lokhu kusetshenziswa kwe-QUIC kuthathwa njengokuyinhloko futhi kusisekelo sakhona ukuthi izinga le-HTTP/3 liyaqinisekiswa.

Kuze kube manje, akukho ukukhuluma mayelana nokufaka i-HTTP/3 njengephrothokholi eyinhloko, ngoba ayikaqedwa futhi cishe ayisekelwe:

I-HTTP phezu kwe-UDP - ukusebenzisa kahle iphrothokholi ye-QUIC

Kodwa i-QUIC ingasetshenziswa njengokuthutha phakathi kohlelo lokusebenza kanye neseva, eyenziwe ngempumelelo kwa-Uber:

Amazwana ka-Uber mayelana nokwethulwa kwe-QUIC

Ukuze ushumeke ngempumelelo i-QUIC futhi uthuthukise ukusebenza kohlelo lokusebenza ezindaweni ezingaxhumekile kahle, simiselele isitaki esidala (HTTP/2 phezu kwe-TLS/TCP) ngephrothokholi ye-QUIC. Sisebenzise umtapo wolwazi wenethiwekhi I-Cronet kusuka ku Amaphrojekthi we-Chromium, equkethe inguqulo yoqobo ye-Google yephrothokholi - gQUIC. Lokhu kusetshenziswa nakho kuthuthukiswa njalo ukuze kulandele ukucaciswa kwe-IETF kwakamuva.

Siqale sahlanganisa i-Cronet kuzinhlelo zethu zokusebenza ze-Android ukuze sengeze usekelo lwe-QUIC. Ukuhlanganiswa kwenziwa ngendlela yokunciphisa izindleko zokufuduka ngangokunokwenzeka. Esikhundleni sokushintsha ngokuphelele isitaki senethiwekhi esidala esasisebenzisa umtapo wolwazi OkHttp, sihlanganise i-Cronet NGAPHANSI kohlaka lwe-OkHttp API. Ngokwenza ukuhlanganisa ngale ndlela, sigweme izinguquko ezingcingweni zethu zenethiwekhi (ezisetshenziswa yi Buyisela inzuzo) ezingeni le-API.

Ngokufana nendlela yamadivayisi e-Android, sisebenzise i-Cronet kuzinhlelo zokusebenza ze-Uber ku-iOS, sivala ithrafikhi ye-HTTP evela kunethiwekhi. APIusebenzisa NSURLProtocol. Lokhu kufinyezwa, okuhlinzekwe yi-iOS Foundation, kusingatha idatha ye-URL eqondene nephrothokholi futhi kuqinisekisa ukuthi singakwazi ukuhlanganisa i-Cronet kuzinhlelo zethu zokusebenza ze-iOS ngaphandle kwezindleko ezinkulu zokuthutha.

kuthathwe ku lokhu kuhumusha Izindatshana ze-Uber

Ngasemuva babambe ukuxhumana kwe-QUIC nge-Google Cloud lb, okuyinto isekela iphrothokholi kusukela maphakathi no-2018.

Akumangazi ukuthi i-Google Cloud isebenza kahle ngephrothokholi ethuthukisiwe ye-Google, kepha yiziphi ezinye izindlela?

Nginx

Kungekudala CloudFlare Ngazama ukuwela nginx (engayisekeli i-HTTP/3 ngokuzenzakalelayo) ngethuluzi layo le-Quiche. Ukusetshenziswa kuyatholakala njengefayela elilodwa le-.patch, eliza nesifundo sokufaka:

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

Lapha ungakwazi ukuxhuma amamojula akho uma kudingeka

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

Okusele nje ukunika amandla usekelo lwe-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';
    }
}

Akukenzeki okwamanje ukuxhuma nge-HTTP/3 kuziphequluli ezijwayelekile, kodwa ungasebenzisa I-Canary ye-Chrome futhi uyigijimise nefulegi --enable-quic, hamba kuseva yakho noma, isibonelo, isayithi le-quic.rocks bese ubheka uhlobo loxhumano kokuthi Amathuluzi Kanjiniyela:
I-HTTP phezu kwe-UDP - ukusebenzisa kahle iphrothokholi ye-QUIC
Esikhundleni se-HTTP/3 kubhaliwe http2+quic/99, kodwa empeleni kuyinto efanayo.

Obunye ubuchwepheshe

isiphetho

I-HTTP phezu kwe-UDP - ukusebenzisa kahle iphrothokholi ye-QUIC

Intshisekelo ku-QUIC ayizinzile, kodwa iyakhula, futhi umsebenzi uyaqhubeka ukuze ifane. Ukuqaliswa okusha kwephrothokholi kubonakala cishe nyanga zonke, futhi minyaka yonke onjiniyela abaningi ngokwengeziwe bayaqiniseka ukuthi i-QUIC iyikusasa. Kungenzeka futhi ukufaka iphrothokholi ezinguqulweni ezizayo zesitaki se-TCP, okusho ukuthi ngokushesha noma kamuva yonke i-inthanethi izothuthela ekuxhumekeni okuzinzile nokushesha kakhulu.

Kakade manje usungakwazi ukumisa ukusebenzisana kwe-QUIC kungqalasizinda yakho noma uyinikeze iziphequluli - zonke zihlela ukwengeza usekelo lwephrothokholi, futhi izibalo ezidabukisayo nge-caniuse zizojabula kakhulu.

I-HTTP phezu kwe-UDP - ukusebenzisa kahle iphrothokholi ye-QUIC

Source: www.habr.com

Engeza amazwana