HTTP juu ya UDP - kutumia vyema itifaki ya QUIC

HTTP juu ya UDP - kutumia vyema itifaki ya QUIC

QUIC (Quick UDP Internet Connections) ni itifaki iliyo juu ya UDP inayoauni vipengele vyote vya TCP, TLS na HTTP/2 na kutatua matatizo yao mengi. Mara nyingi huitwa itifaki mpya au "majaribio", lakini kwa muda mrefu imepita hatua ya majaribio: maendeleo yamekuwa yakiendelea kwa zaidi ya miaka 7. Wakati huu, itifaki haikuweza kuwa kiwango, lakini bado ilienea. Kwa mfano, QUIC inatumiwa na makampuni makubwa kama vile Google na Facebook ili kuharakisha trafiki na kupunguza ucheleweshaji katika mitandao ya simu, na IETF ilitangaza uma wake wa itifaki kuwa msingi wa kiwango cha HTTP/3 (ingawa HTTP/2 hutumia. 44.8% tu tovuti).

Dhana

QUIC iliundwa kama mbadala wa TCP iliyopitwa na wakati, ambayo awali iliundwa kwa ajili ya mitandao ya waya yenye hasara ndogo. TCP hutoa pakiti kwa mpangilio, kwa hivyo ikiwa pakiti moja imepotea, foleni nzima imesimamishwa (kuzuia kichwa cha mstari), ambayo huathiri vibaya ubora na utulivu wa uunganisho. Ili kuzuia upotezaji mkubwa, mitandao ya rununu huamua kutumia buffers kubwa, ambayo inasababisha kupunguzwa na majibu hasi ya itifaki (bufferbloat) Kwa kuongeza, TCP hutumia muda mwingi kuanzisha muunganisho: SYN/ACK na maombi ya TLS huchakatwa kando, na kuhitaji kurudi na kurudi mara tatu badala ya moja, kama QUIC inavyofanya.

HTTP juu ya UDP - kutumia vyema itifaki ya QUIC

Kwa kuwa QUIC inachanganya uingizwaji wa TCP na utekelezaji wa TLS 1.3, miunganisho yote husimbwa kwa njia fiche kila wakati, na kusimbua trafiki kama hiyo si rahisi kuliko ikiwa inapitia HTTPS. Kwa kuongeza, QUIC inatekelezwa katika kiwango cha maombi, kwani uingizwaji kamili wa mrundikano wa TCP utachukua umilele.

Licha ya usaidizi wa kuzidisha katika HTTP/2, tatizo la uzuiaji wa mstari ulibaki pale pale kutokana na haja ya kutoa pakiti kwa utaratibu. QUIC inatekelezwa juu ya UDP, kwa hivyo haina kizuizi kimsingi, na ili kuzuia pakiti zipotee milele, zimeorodheshwa na zinaweza kuwa na sehemu za "majirani," na kutoa uondoaji. Kwa kuongeza, QUIC inagawanya foleni ya monolithic katika nyuzi nyingi kwa aina tofauti za maombi ndani ya muunganisho mmoja. Kwa hivyo, ikiwa pakiti imepotea, shida zinaweza kutokea kwa foleni moja tu (kwa mfano, kwa kuhamisha faili maalum):

HTTP juu ya UDP - kutumia vyema itifaki ya QUIC

Matumizi ya

Hapo awali, QUIC iliundwa ndani ya Google na iliundwa kwa ajili ya matumizi ndani ya kampuni. Mnamo 2013, ilihamishiwa kwa IETF kwa viwango (ambayo bado inaendelea), na sasa kila mtu anaweza kushiriki katika maendeleo ya itifaki kwa kupendekeza kile wanachokosa. Kikundi kazi cha IETF hupanga mikutano ya kila mwaka ambapo kiwango kipya kinaidhinishwa na uvumbuzi kujadiliwa. Utekelezaji huu wa QUIC unachukuliwa kuwa kuu na ni kwa msingi wake kwamba kiwango cha HTTP/3 kinathibitishwa.

Kufikia sasa, hakuna mazungumzo juu ya kujumuisha HTTP/3 kama itifaki kuu, kwa sababu haijakamilika bado na karibu haitumiki:

HTTP juu ya UDP - kutumia vyema itifaki ya QUIC

Lakini QUIC inaweza kutekelezwa kama usafiri kati ya programu na seva, ambayo ilifanywa kwa ufanisi katika Uber:

Maoni ya Uber kuhusu kuanzishwa kwa QUIC

Ili kupachika QUIC kwa ufanisi na kuboresha utendaji wa programu katika mazingira duni ya muunganisho, tulibadilisha rafu ya zamani (HTTP/2 juu ya TLS/TCP) na itifaki ya QUIC. Tulitumia maktaba ya mtandao Cronet ya Miradi ya Chromium, ambayo ina asili, toleo la Google la itifaki - gQUIC. Utekelezaji huu pia unaboreshwa kila mara ili kufuata vipimo vya hivi punde zaidi vya IETF.

Kwanza tuliunganisha Cronet kwenye programu zetu za Android ili kuongeza usaidizi kwa QUIC. Ujumuishaji ulifanyika kwa njia ya kupunguza gharama za uhamiaji iwezekanavyo. Badala ya kubadilisha kabisa safu ya zamani ya mtandao ambayo ilitumia maktaba OkHttp, tumeunganisha Cronet CHINI ya mfumo wa API ya OkHttp. Kwa kufanya ujumuishaji kwa njia hii, tuliepuka mabadiliko kwenye simu zetu za mtandao (ambazo hutumiwa na Faida) katika kiwango cha API.

Sawa na mbinu ya vifaa vya Android, tulitekeleza Cronet kwenye programu za Uber kwenye iOS, na kuzuia trafiki ya HTTP kutoka kwa mtandao. APIkutumia NSURLProtocol. Muhtasari huu, unaotolewa na iOS Foundation, hushughulikia data ya URL mahususi ya itifaki na huhakikisha kwamba tunaweza kujumuisha Cronet kwenye programu zetu za iOS bila gharama kubwa za uhamiaji.

kuchukuliwa kutoka tafsiri hii Makala ya Uber

Kwenye upande wa nyuma walinasa miunganisho ya QUIC kupitia Google Cloud lb, ambayo inasaidia itifaki tangu katikati ya 2018.

Haishangazi kwamba Wingu la Google hufanya kazi vizuri na itifaki iliyotengenezwa na Google, lakini ni nini mbadala?

Nginx

Si muda mrefu uliopita CloudFlare Nilijaribu kuvuka nginx (ambayo haiauni HTTP/3 kwa chaguo-msingi) na zana yake ya Quiche. Utekelezaji unapatikana kama faili moja ya .patch, inayokuja na mafunzo ya usakinishaji:

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

Hapa unaweza kuunganisha moduli zako ikiwa ni lazima

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

Kilichobaki ni kuwezesha usaidizi wa 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';
    }
}

Bado haiwezekani kuunganisha kupitia HTTP/3 katika vivinjari vya kawaida, lakini unaweza kutumia Kanari ya Chrome na kuiendesha na bendera --enable-quic, nenda kwa seva yako au, kwa mfano, tovuti ya quic.rocks na uangalie aina ya muunganisho katika Zana za Wasanidi Programu:
HTTP juu ya UDP - kutumia vyema itifaki ya QUIC
Badala ya HTTP/3 imeandikwa http2+quic/99, lakini kimsingi ni kitu kimoja.

Teknolojia zingine

  • QUIC pia inasaidia Iliyowekwa (ambayo iliunganishwa na Facebook kupitia HTTP/3 kwa mbwembwe nyingi) na inaendelezwa Caddy. Apache haiwezi kuifanya bado, lakini kazi inaendelea full swing.
  • Januari 21 imesasishwa rasimu ya kiwango cha WebRTC
  • Siku nyingine tu Microsoft ilifungua msquic msimbo wa utekelezaji, ambayo si utendakazi wote kutoka kwa kiwango cha IETF bado zinapatikana, lakini hii tayari ni mafanikio makubwa.

Hitimisho

HTTP juu ya UDP - kutumia vyema itifaki ya QUIC

Kuvutiwa na QUIC si dhabiti, lakini kunakua, na kazi inaendelea ili kulisawazisha. Utekelezaji mpya wa itifaki huonekana karibu kila mwezi, na kila mwaka watengenezaji zaidi na zaidi wanaamini kuwa QUIC ni siku zijazo. Inawezekana hata kujumuisha itifaki katika matoleo yajayo ya safu ya TCP, ambayo inamaanisha kuwa hivi karibuni mtandao wote utahamia kwenye miunganisho thabiti na ya haraka zaidi.

Tayari sasa unaweza kusanidi mwingiliano wa QUIC kwa miundombinu yako au hata kuwapa vivinjari - wote wanapanga kuongeza usaidizi kwa itifaki, na takwimu za kusikitisha za caniuse zitafurahiya zaidi.

HTTP juu ya UDP - kutumia vyema itifaki ya QUIC

Chanzo: mapenzi.com

Kuongeza maoni