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.
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):
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:
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.
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:
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.
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
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.