HTTP i runga i te UDP - te whakamahi pai i te kawa QUIC

HTTP i runga i te UDP - te whakamahi pai i te kawa QUIC

Ko te QUIC (Nga Hononga Ipurangi Tere UDP) he kawa kei runga ake o te UDP e tautoko ana i nga ahuatanga katoa o TCP, TLS me HTTP/2 me te whakaoti i te nuinga o o raatau raruraru. He maha nga wa e kiia ana he kawa hou, he "whakamatautau" ranei, engari kua roa ke atu i te waahanga whakamatautau: kua neke atu i te 7 tau te whakawhanaketanga. I roto i tenei wa, kaore te kawa i eke hei paerewa, engari ka horapa tonu. Hei tauira, ka whakamahia a QUIC e nga tangata nunui penei i a Google me Facebook ki te tere haere i nga waka me te whakaheke i nga whakaroa i roto i nga whatunga waea, a ka kii te IETF ko tana marau o te kawa te putake mo te paerewa HTTP/3 (ahakoa ka whakamahia e HTTP/2. 44.8% anake pae).

Kaupapa

I whakawhanakehia a QUIC hei whakakapi mo te TCP tuku iho, i hangaia i te tuatahi mo nga whatunga waea iti-mate. Ka tukuna e TCP nga paatete i runga i te raupapa, na, ki te ngaro tetahi kete, ka mutu te rarangi katoa (te aukati upoko-o-raina), ka pa kino ki te kounga me te pumau o te hononga. Hei karo i nga mate nui, ka whakamahi nga whatunga pūkoro ki te whakamahi i nga kaitarai nui, ka puta ki te kore utu me te whakautu kino teka o te kawa (pupuhi). I tua atu, he nui te wa e whakapau ana a TCP ki te whakatu hononga: SYN/ACK me nga tono TLS e haere motuhake ana, me toru nga haerenga huri noa hei utu mo te kotahi, pera me QUIC.

HTTP i runga i te UDP - te whakamahi pai i te kawa QUIC

I te mea ka whakakotahi a QUIC i te whakakapinga TCP me te whakatinanatanga o TLS 1.3, ka whakamunatia nga hononga katoa i nga wa katoa, a ko te wetewete i aua waka he ngawari ake i te mea kei runga i te HTTPS. I tua atu, ka whakatinanahia te QUIC i te taumata tono, na te mea ka mau te whakakapinga o te puranga TCP mure ore.

Ahakoa te tautoko mo te multiplexing i roto i te HTTP/2, i noho tonu te raru o te aukati i te upoko-o-raina na te hiahia ki te tuku i nga paatete i runga i te raupapa. Ka whakatinanahia te QUIC ki runga ake o te UDP, na reira kaore he aukati i roto i te kaupapa, me te kore e ngaro nga paatete mo ake tonu atu, ka tatauhia, ka taea te whakauru i nga waahanga o nga "noho tata," e whakarato ana i te kore utu. I tua atu, ka wehewehea e QUIC te rarangi monolithic ki nga miro maha mo nga momo tono rereke i roto i te hononga kotahi. No reira, ki te ngaro tetahi kete, ka ara ake he raru mo te rarangi kotahi anake (hei tauira, mo te whakawhiti i tetahi konae motuhake):

HTTP i runga i te UDP - te whakamahi pai i te kawa QUIC

Whakamahia

I te tuatahi, i whakawhanakehia a QUIC i roto i a Google, a, i whakahiatohia mo te whakamahi i roto i te kamupene. I te tau 2013, i whakawhitia ki te IETF mo te paerewa (kei te haere tonu), a inaianei ka taea e nga tangata katoa te whai waahi ki te whakawhanaketanga o te kawa ma te tono i nga mea e ngaro ana. Ka whakarite te roopu mahi IETF i nga hui-a-tau ka whakamanahia he paerewa hou, ka korerohia nga mahi hou. Ko tenei whakatinanatanga o QUIC e kiia ana ko te mea matua me te mea i runga i tana kaupapa ka whakamanahia te paerewa HTTP / 3.

I tenei wa, kaore he korero mo te whakauru i te HTTP/3 hei kawa matua, na te mea kaore ano kia oti, kaore ano kia tautokona:

HTTP i runga i te UDP - te whakamahi pai i te kawa QUIC

Engari ka taea te whakatinana QUIC hei kawe i waenga i te tono me te tūmau, i tutuki pai i Uber:

Ko te korero a Uber mo te whakaurunga o QUIC

Kia pai te whakauru i te QUIC me te whakapai ake i te mahinga tono i roto i nga taiao honohono ngoikore, i whakakapihia e matou te puranga tawhito (HTTP/2 i runga i te TLS/TCP) me te kawa QUIC. I whakamahia e matou te whare pukapuka whatunga Cronet Tuhinga ka whai mai Kaupapa Chromium, kei roto te putanga taketake a Google o te kawa - gQUIC. Kei te whakapai tonu hoki tenei whakatinanatanga ki te whai i nga korero hou a IETF.

I whakauruhia e matou a Cronet ki roto i a maatau taupānga Android hei taapiri tautoko mo QUIC. Ko te whakaurunga i mahia i runga i te huarahi ka taea te whakaiti i nga utu heke. Engari ki te whakakapi katoa i te puranga whatunga tawhito i whakamahia te whare pukapuka OkHttp, kua whakauruhia e matou a Cronet I ROTO i te anga API OkHttp. Na roto i te mahi whakauru penei, i karohia e matou nga huringa ki o matou waea whatunga (e whakamahia ana e Whakaahuatanga) i te taumata API.

He rite ki te huarahi mo nga taputapu Android, i whakatinanahia e matou a Cronet ki roto i nga taupānga Uber i runga i te iOS, te aukati i nga hokohoko HTTP mai i te whatunga. APIwhakamahi ana NSURLProtocol. Ko tenei tangohanga, na te iOS Foundation, e whakahaere ana i nga raraunga URL motuhake kawa me te whakarite ka taea e tatou te whakauru i a Cronet ki o tatou tono iOS me te kore utu nui o te hekenga.

tangohia mai tenei whakamaoritanga Uber tuhinga

I te tuara ka mau i a raatau nga hononga QUIC ma te Google Cloud lb, e tautoko kawa mai i waenganui o 2018.

Ehara i te mea miharo he pai te mahi a Google Cloud me te kawa kua whakawhanakehia e Google, engari he aha nga huarahi rereke?

Nginx

Kaore i roa i mua CloudFlare I whakamatau ahau ki te whakawhiti nginx (kaore e tautoko i te HTTP/3 ma te taunoa) me tana taputapu Quiche. Kei te waatea te whakatinanatanga hei konae .patch kotahi, ka tae mai me te akoranga whakaurunga:

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

I konei ka taea e koe te hono atu i o kōwae ina tika

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

Ko nga mea e toe ana ko te whakahohe i te tautoko 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';
    }
}

Kaore ano kia taea te hono ma te HTTP/3 i nga kaitirotiro auau, engari ka taea e koe te whakamahi Chrome Canary ka rere ki te haki --enable-quic, haere ki to tūmau, hei tauira, te pae quic.rocks ka titiro ki te momo hononga i roto i nga Utauta Kaiwhakawhanake:
HTTP i runga i te UDP - te whakamahi pai i te kawa QUIC
Engari o HTTP/3 kua tuhia http2+quic/99, engari he rite tonu te mea.

Ētahi atu hangarau

  • Ka tautoko hoki a QUIC LiteSpeed (i hono atu ki a Facebook ma te HTTP/3 me te nui o te manawapa) me te ahu whakamua tauhaa,. Kaore ano a Apache e taea, engari kei te haere tonu te mahi piu tonu.
  • Ko te 21 o Hanuere kua whakahoutia tauira tauira mo WebRTC
  • I tera atu ra ka tuwhera a Microsoft waehere whakatinanatanga msquic, karekau ano nga mahi katoa mai i te paerewa IETF e waatea ana, engari he waahi nui tenei.

mutunga

HTTP i runga i te UDP - te whakamahi pai i te kawa QUIC

Ko te hiahia ki te QUIC kaore i te pumau, engari kei te tipu haere, kei te haere tonu te mahi ki te whakataurite. Ko nga whakatinanatanga hou o te kawa ka puta tata ia marama, a ia tau ka nui ake nga kaiwhakawhanake e whakapono ana ko QUIC te heke mai. Ka taea hoki te whakauru i te kawa ki roto i nga putanga a muri ake o te puranga TCP, ko te tikanga ka tere ake te Ipurangi katoa ki nga hononga pumau me te tere ake.

Inaianei ka taea e koe te whirihora i te taunekeneke QUIC mo to hanganga, ka hoatu ranei ki nga kaitirotiro - kei te whakamahere ratou katoa ki te taapiri tautoko mo te kawa, ka koa ake nga tatauranga pouri me te caniuse.

HTTP i runga i te UDP - te whakamahi pai i te kawa QUIC

Source: will.com

Tāpiri i te kōrero