HTTP akan UDP - yin kyakkyawan amfani da ka'idar QUIC

HTTP akan UDP - yin kyakkyawan amfani da ka'idar QUIC

QUIC (Quick UDP Internet Connections) yarjejeniya ce a saman UDP wanda ke goyan bayan duk fasalulluka na TCP, TLS da HTTP/2 kuma yana magance yawancin matsalolin su. Sau da yawa ana kiranta sabuwar yarjejeniya ko "gwaji", amma ta dade da wuce matakin gwaji: ci gaba yana gudana fiye da shekaru 7. A wannan lokacin, yarjejeniya ba ta sami damar zama ma'auni ba, amma har yanzu ya zama tartsatsi. Misali, QUIC irin su Google da Facebook suna amfani da su don hanzarta zirga-zirga da rage jinkiri a cikin hanyoyin sadarwar wayar hannu, kuma IETF ta ayyana cokali mai yatsa na ka'idar tushen tushen HTTP/3 (ko da yake HTTP/2 yana amfani da shi. 44.8% kawai shafukan).

Tunani

An ƙirƙira QUIC azaman maye gurbin TCP na gado, wanda aka ƙirƙira tun asali don cibiyoyin sadarwa mara-asara. TCP yana ba da fakiti cikin tsari, don haka idan fakiti ɗaya ya ɓace, an dakatar da duk jerin gwanon (toshe shugaban-layi), wanda mummunan tasiri akan inganci da kwanciyar hankali na haɗin gwiwa. Don guje wa hasara mai yawa, cibiyoyin sadarwar salula suna yin amfani da manyan buffers, wanda hakan ke haifar da sakewa da martani mara kyau na ƙa'idar (bufferbloat). Bugu da ƙari, TCP yana ciyar da lokaci mai yawa don kafa haɗi: SYN/ACK da TLS buƙatun ana sarrafa su daban, suna buƙatar zagaye uku maimakon ɗaya, kamar yadda QUIC ke yi.

HTTP akan UDP - yin kyakkyawan amfani da ka'idar QUIC

Tun da QUIC ya haɗu da maye gurbin TCP da aiwatar da TLS 1.3, duk haɗin kai koyaushe suna ɓoyewa, kuma yanke irin wannan zirga-zirgar ba ta da sauƙi fiye da idan ta wuce HTTPS. Bugu da ƙari, ana aiwatar da QUIC a matakin aikace-aikacen, kamar yadda cikakken maye gurbin tarin TCP zai ɗauka har abada.

Duk da goyan bayan multixing a cikin HTTP/2, matsalar toshe kan layi ta kasance a can saboda buƙatar sadar da fakitin tsari. Ana aiwatar da QUIC a saman UDP, don haka ba shi da wani toshewa bisa manufa, kuma don hana fakiti daga asarar har abada, ana ƙididdige su kuma suna iya ƙunsar sassan "maƙwabta," suna ba da sakewa. Bugu da kari, QUIC yana raba layin monolithic zuwa zaren da yawa don nau'ikan buƙatun a cikin haɗin gwiwa guda ɗaya. Don haka, idan fakiti ya ɓace, matsaloli na iya tasowa don jerin gwano ɗaya kawai (misali, don canja wurin takamaiman fayil):

HTTP akan UDP - yin kyakkyawan amfani da ka'idar QUIC

Amfani

Da farko, an ƙirƙira QUIC a cikin Google kuma an keɓance shi da yawa don amfani a cikin kamfanin. A cikin 2013, an canza shi zuwa IETF don daidaitawa (wanda har yanzu yana ci gaba), kuma yanzu kowa zai iya shiga cikin ci gaban yarjejeniya ta hanyar ba da shawarar abin da suka ɓace. Ƙungiyar ma'aikata ta IETF tana shirya tarurruka na shekara-shekara a lokacin da aka amince da sabon matsayi kuma ana tattauna sababbin abubuwa. Ana ɗaukar wannan aiwatar da QUIC a matsayin babba kuma akan tushen sa ne aka tabbatar da ma'aunin HTTP/3.

Ya zuwa yanzu, babu magana game da haɗa HTTP/3 a matsayin babbar yarjejeniya, saboda ba a gama ba tukuna kuma kusan ba a tallafawa:

HTTP akan UDP - yin kyakkyawan amfani da ka'idar QUIC

Amma ana iya aiwatar da QUIC azaman jigilar kayayyaki tsakanin aikace-aikacen da uwar garken, wanda aka yi nasara a Uber:

Sharhin Uber akan gabatarwar QUIC

Don samun nasarar shigar da QUIC da haɓaka aikin aikace-aikacen a cikin mahallin haɗin kai mara kyau, mun maye gurbin tsohuwar tari (HTTP/2 akan TLS/TCP) tare da ƙa'idar QUIC. Mun yi amfani da ɗakin karatu na cibiyar sadarwa Cronet daga Ayyukan Chromium, wanda ya ƙunshi asali, sigar Google na yarjejeniya - gQUIC. Hakanan ana inganta wannan aiwatarwa koyaushe don bin ƙayyadaddun ƙayyadaddun IETF.

Mun fara haɗa Cronet cikin ƙa'idodinmu na Android don ƙara tallafi ga QUIC. An gudanar da haɗin kai ta hanyar da za a rage farashin ƙaura gwargwadon yiwuwar. Maimakon gaba daya maye gurbin tsohon tarihin sadarwar da ke amfani da ɗakin karatu OkHttp, mun haɗa Cronet A ƙarƙashin tsarin OkHttp API. Ta hanyar yin haɗin kai ta wannan hanya, mun guje wa canje-canje ga kiran cibiyar sadarwar mu (wanda ke amfani da su Mai ritaya) a matakin API.

Kama da tsarin na'urorin Android, mun aiwatar da Cronet cikin aikace-aikacen Uber akan iOS, tare da hana zirga-zirgar HTTP daga hanyar sadarwa. APIamfani da NSURLProtocol. Wannan abstraction, wanda Gidauniyar iOS ta bayar, yana sarrafa takamaiman bayanan URL na yarjejeniya kuma yana tabbatar da cewa zamu iya haɗa Cronet cikin aikace-aikacen mu na iOS ba tare da ƙimar ƙaura ba.

dauka daga wannan fassarar Labaran Uber

A bayan baya sun kama haɗin QUIC ta Google Cloud lb, wanda yana goyan bayan yarjejeniya tun tsakiyar 2018.

Ba abin mamaki ba ne cewa Google Cloud yana aiki sosai tare da ƙa'idar da Google ta haɓaka, amma menene mafita?

Nginx

Ba a daɗe ba CloudFlare Na yi ƙoƙarin hayewa nginx (wanda baya goyan bayan HTTP/3 ta tsohuwa) tare da kayan aikin Quiche. Ana samun aiwatarwa azaman fayil ɗin .patch guda ɗaya, wanda ya zo tare da koyawa ta shigarwa:

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

Anan zaku iya haɗa samfuran ku idan ya cancanta

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

Duk abin da ya rage shine don ba da damar tallafin 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';
    }
}

Har yanzu bai yiwu a haɗa ta HTTP/3 a cikin masu bincike na yau da kullun ba, amma kuna iya amfani da su Chrome Canary da kuma gudanar da shi da tuta --enable-quic, Je zuwa uwar garken ku ko, alal misali, rukunin yanar gizon quic.rocks kuma duba nau'in haɗin kai a cikin Kayan aikin Haɓakawa:
HTTP akan UDP - yin kyakkyawan amfani da ka'idar QUIC
Maimakon HTTP/3 an rubuta shi http2+quic/99, amma ainihin abu ɗaya ne.

Sauran fasahohin

ƙarshe

HTTP akan UDP - yin kyakkyawan amfani da ka'idar QUIC

Sha'awar QUIC ba ta da ƙarfi, amma tana girma, kuma ana kan aiki don daidaita ta. Sabbin aiwatar da ƙa'idar suna bayyana kusan kowane wata, kuma kowace shekara ƙarin masu haɓakawa sun gamsu cewa QUIC shine gaba. Har ma yana yiwuwa a haɗa ƙa'idar a cikin nau'ikan tarin TCP na gaba, wanda ke nufin cewa ba da dade ko ba daɗe gabaɗayan Intanet za su matsa zuwa mafi kwanciyar hankali da haɗin kai cikin sauri.

Tuni yanzu zaku iya saita hulɗar QUIC don kayan aikin ku ko ma ba da ita ga masu bincike - duk suna shirin ƙara goyan bayan ƙa'idar, kuma ƙididdiga na bakin ciki tare da caniuse za su zama masu farin ciki.

HTTP akan UDP - yin kyakkyawan amfani da ka'idar QUIC

source: www.habr.com

Add a comment