HTTP holim'a UDP - ho sebelisa protocol ea QUIC hantle

HTTP holim'a UDP - ho sebelisa protocol ea QUIC hantle

QUIC (Quick UDP Internet Connections) ke protocol e holim'a UDP e tšehetsang likarolo tsohle tsa TCP, TLS le HTTP/2 le ho rarolla boholo ba mathata a bona. Hangata e bitsoa "protocol" e ncha kapa "teko", empa e se e le nako e telele e le teng ho feta mohato oa liteko: tsoelo-pele e 'nile ea tsoela pele ka lilemo tse fetang 7. Nakong ena, protocol ha ea ka ea khona ho ba maemo, empa e ntse e atile. Mohlala, QUIC e sebelisoa ke linatla tse joalo ka Google le Facebook ho potlakisa sephethephethe le ho fokotsa tieho ea marang-rang a mehala, mme IETF e phatlalalitse fereko ea eona ea protocol motheo oa maemo a HTTP/3 (leha HTTP/2 e sebelisa. 44.8% feela libaka).

Mohopolo

QUIC e ile ea ntlafatsoa e le sebaka sa TCP ea lefa, eo qalong e neng e etselitsoe marang-rang a tahlehelo e tlaase. TCP e fana ka lipakete ka tatellano, kahoo haeba pakete e le 'ngoe e lahlehile, mokoloko o emisitsoe (ho thibela hlooho), e amang hampe boleng le botsitso ba khokahano. Ho qoba tahlehelo e kholo, marang-rang a liselefouno a sebelisa li-buffers tse kholo, e leng se lebisang ho fokotseng le karabelo e fosahetseng ea protocol (bufferbloat). Ho phaella moo, TCP e qeta nako e ngata e theha khokahanyo: SYN / ACK le likōpo tsa TLS li sebetsoa ka thoko, tse hlokang maeto a mararo a ho khutla ho e-na le a le mong, joalo ka ha QUIC e etsa.

HTTP holim'a UDP - ho sebelisa protocol ea QUIC hantle

Kaha QUIC e kopanya phetoho ea TCP le ts'ebetsong ea TLS 1.3, likhokahano tsohle li lula li patiloe, 'me ho hlakola sephethephethe se joalo ha ho bonolo ho feta ha e ne e feta HTTPS. Ho phaella moo, QUIC e kenngoa ts'ebetsong boemong ba kopo, kaha ho tla nka sebaka se feletseng sa stack ea TCP ka ho sa feleng.

Ho sa tsotellehe ts'ehetso ea multiplexing ho HTTP / 2, bothata ba ho thibela lihlooho tsa marang-rang bo ile ba lula bo le teng ka lebaka la tlhokahalo ea ho fana ka lipakete ka tatellano. QUIC e sebelisoa ka holim'a UDP, kahoo ha e na thibelo ka molao-motheo, le ho thibela liphutheloana hore li se ke tsa lahleheloa ka ho sa feleng, li baloa 'me li ka ba le likarolo tsa "baahelani," ho fana ka bohlasoa. Ho feta moo, QUIC e arola mokoloko oa monolithic ka likhoele tse ngata bakeng sa mefuta e fapaneng ea likopo ka har'a khokahanyo e le 'ngoe. Kahoo, haeba pakete e lahlehile, mathata a ka hlaha bakeng sa tatellano e le 'ngoe feela (mohlala, bakeng sa ho fetisetsa faele e itseng):

HTTP holim'a UDP - ho sebelisa protocol ea QUIC hantle

Sebelisa

Qalong, QUIC e ile ea ntlafatsoa ka hare ho Google 'me e ne e etselitsoe ho sebelisoa ka har'a k'hamphani. Ka 2013, e fetiselitsoe ho IETF bakeng sa maemo (e ntseng e tsoela pele), 'me hona joale bohle ba ka kenya letsoho ho nts'etsopele ea protocol ka ho etsa tlhahiso ea seo ba se hlokang. Sehlopha sa tshebetso sa IETF se hlophisa dikopano tsa selemo le selemo tseo ka tsona maemo a matjha a dumellwang mme ho buisanwe ka dintlafatso. Ts'ebetsong ena ea QUIC e nkoa e le eona e ka sehloohong 'me ke motheong oa eona hore maemo a HTTP/3 a tiisitsoe.

Ho fihlela hajoale, ha ho na puo e mabapi le ho kenyelletsa HTTP/3 joalo ka protocol ea mantlha, hobane ha e so phethehe ebile e batla e sa tšehetsoe:

HTTP holim'a UDP - ho sebelisa protocol ea QUIC hantle

Empa QUIC e ka kengoa tšebetsong e le sepalangoang lipakeng tsa ts'ebeliso le seva, se atlehileng ho etsoa ho Uber:

Maikutlo a Uber mabapi le kenyelletso ea QUIC

Ho kenya QUIC ka katleho le ho ntlafatsa ts'ebetso ea ts'ebeliso maemong a khokahanyo a fosahetseng, re ile ra nkela stack ea khale (HTTP/2 holim'a TLS/TCP) ka protocol ea QUIC. Re ne re sebelisa laebrari ea marang-rang Cronet ho tswa Merero ea Chromium, e nang le mofuta oa mantlha oa Google oa protocol - gQUIC. Ts'ebetsong ena e boetse e lula e ntlafatsoa ho latela litlhaloso tsa morao-rao tsa IETF.

Re qalile ho kopanya Cronet ho lisebelisoa tsa rona tsa Android ho eketsa tšehetso bakeng sa QUIC. Ho kopanya ho ile ha etsoa ka tsela ea ho fokotsa litšenyehelo tsa ho falla ka hohle kamoo ho ka khonehang. Sebakeng sa ho nkela sebaka sa khale sa marang-rang se neng se sebelisa laebrari OkHttp, re kopantse Cronet TLAS'A moralo oa OkHttp API. Ka ho etsa kopanyo ka tsela ena, re ile ra qoba liphetoho ho mehala ea rona ea marang-rang (e sebelisoang ke Pheta hape) boemong ba API.

Joalo ka mokhoa oa lisebelisoa tsa Android, re kentse ts'ebetsong Cronet ho lisebelisoa tsa Uber ho iOS, ho thibela sephethephethe sa HTTP ho tsoa marang-rang. APItshebediso NSURLProtocol. Phatlalatso ena, e fanoeng ke iOS Foundation, e sebetsana le lintlha tsa URL tse khethehileng tsa protocol mme e netefatsa hore re ka kopanya Cronet le lits'ebetso tsa rona tsa iOS ntle le litšenyehelo tse kholo tsa ho falla.

nkiloeng ho tloha phetolelo ena Lingoloa tsa Uber

Ka morao ba ile ba tšoara likhokahano tsa QUIC ka Google Cloud lb, e leng e tšehetsa protocol ho tloha bohareng ba 2018.

Ha ho makatse hore ebe Google Cloud e sebetsa hantle ka protocol e ntlafalitsoeng ea Google, empa mekhoa e meng ke efe?

Nginx

Ha se khale CloudFlare Ke ile ka leka ho tšela nginx (e sa tšehetseng HTTP/3 ka boiketsetso) ka sesebelisoa sa eona sa Quiche. Ts'ebetsong e fumaneha e le faele e le 'ngoe ea .patch, e tlang le thupelo ea ho instola:

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

Mona o ka hokahanya li-module tsa hau ha ho hlokahala

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

Sohle se setseng ke ho thusa HTTP/3 tšehetso

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';
    }
}

Ha e so khonehe ho hokahanya ka HTTP/3 ho li-browser tse tloaelehileng, empa u ka li sebelisa Canary ea Chrome mme o e tsamaise ka folaga --enable-quic, e-ea ho seva sa hau kapa, mohlala, sebaka sa quic.rocks 'me u shebe mofuta oa khokahanyo ho Lisebelisoa tsa Moetsi:
HTTP holim'a UDP - ho sebelisa protocol ea QUIC hantle
Sebakeng sa HTTP/3 ho ngotswe http2+quic/99, empa ha e le hantle ke ntho e tšoanang.

Litheknoloji tse ling

fihlela qeto e

HTTP holim'a UDP - ho sebelisa protocol ea QUIC hantle

Khahleho ho QUIC ha e ea tsitsa, empa e ntse e hola, 'me mosebetsi o ntse o tsoela pele ho e tiisa. Ts'ebetsong e ncha ea protocol e hlaha hoo e batlang e le khoeli le khoeli, 'me selemo se seng le se seng bahlahisi ba bangata ba kholisehile hore QUIC ke bokamoso. Hoa khoneha ho kenyelletsa protocol liphetolelong tse tlang tsa TCP stack, e bolelang hore haufinyane Internet eohle e tla fallela ho likhokahano tse tsitsitseng le tse potlakileng.

U se u ntse u ka lokisa tšebelisano ea QUIC bakeng sa lisebelisoa tsa hau tsa motheo kapa ua e fa libatli - kaofela li rera ho eketsa tšehetso bakeng sa protocol, 'me lipalo-palo tse soabisang tse nang le caniuse li tla thaba le ho feta.

HTTP holim'a UDP - ho sebelisa protocol ea QUIC hantle

Source: www.habr.com

Eketsa ka tlhaloso