HTTP lori UDP - ṣiṣe lilo daradara ti ilana QUIC

HTTP lori UDP - ṣiṣe lilo daradara ti ilana QUIC

QUIC (Awọn isopọ Ayelujara UDP ni kiakia) jẹ ilana ti o wa lori oke ti UDP ti o ṣe atilẹyin gbogbo awọn ẹya ti TCP, TLS ati HTTP/2 ati pe o yanju pupọ julọ awọn iṣoro wọn. Nigbagbogbo a pe ni ilana tuntun tabi “esiperimenta”, ṣugbọn o ti pẹ ju ipele idanwo lọ: idagbasoke ti nlọ lọwọ diẹ sii ju ọdun 7 lọ. Lakoko yii, ilana naa ko ṣakoso lati di boṣewa, ṣugbọn tun di ibigbogbo. Fun apẹẹrẹ, QUIC jẹ lilo nipasẹ awọn omiran bii Google ati Facebook lati yara ijabọ ati dinku awọn idaduro ni awọn nẹtiwọọki alagbeka, ati pe IETF ṣalaye orita ti ilana naa ni ipilẹ fun boṣewa HTTP/3 (paapaa botilẹjẹpe HTTP/2 nlo nikan 44.8% awọn aaye).

Erongba

QUIC ti ni idagbasoke bi aropo fun TCP julọ, eyiti a ṣe apẹrẹ ni akọkọ fun awọn nẹtiwọọki onirin-pipadanu. TCP n pese awọn apo-iwe ni aṣẹ, nitorinaa ti apo kan ba sọnu, gbogbo isinyi ti duro (ìdènà ori-ti-ila), eyi ti o ni odi ni ipa lori didara ati iduroṣinṣin ti asopọ. Lati yago fun awọn ipadanu nla, awọn nẹtiwọọki cellular nlo si lilo awọn buffers nla, eyiti o yori si apọju ati idahun odi eke ti ilana naa (bufferbloat). Ni afikun, TCP lo akoko pupọ lati ṣeto asopọ kan: SYN/ACK ati TLS awọn ibeere lọ lọtọ, nilo awọn irin-ajo mẹta dipo ọkan, bi QUIC ṣe.

HTTP lori UDP - ṣiṣe lilo daradara ti ilana QUIC

Niwọn igba ti QUIC ṣajọpọ rirọpo TCP kan ati imuse ti TLS 1.3, gbogbo awọn asopọ nigbagbogbo jẹ ti paroko, ati pe iru ijabọ bẹ ko rọrun ju ti o ba lọ lori HTTPS. Ni afikun, QUIC ti ṣe imuse ni ipele ohun elo, bi rirọpo pipe ti akopọ TCP yoo gba ayeraye.

Pelu atilẹyin fun multiplexing ni HTTP/2, iṣoro ti idinamọ ori-ila wa nibẹ nitori iwulo lati fi awọn apo-iwe ranṣẹ ni ibere. QUIC ti wa ni imuse lori oke ti UDP, nitorina ko ni idinamọ ni opo, ati lati ṣe idiwọ awọn apo-iwe lati sọnu lailai, wọn jẹ nọmba ati pe o le ni awọn apakan ti "aladugbo," pese atunṣe. Ni afikun, QUIC pin isinyi monolithic sinu ọpọlọpọ awọn okun fun awọn oriṣiriṣi awọn ibeere laarin asopọ kan. Nitorinaa, ti apo kan ba sọnu, awọn iṣoro le dide fun isinyi kan nikan (fun apẹẹrẹ, fun gbigbe faili kan pato):

HTTP lori UDP - ṣiṣe lilo daradara ti ilana QUIC

Lo

Ni ibẹrẹ, QUIC ti ni idagbasoke laarin Google ati pe o jẹ apẹrẹ pupọ fun lilo laarin ile-iṣẹ naa. Ni ọdun 2013, a gbe lọ si IETF fun isọdọtun (eyiti o tun wa), ati nisisiyi gbogbo eniyan le kopa ninu idagbasoke ilana naa nipa didaba ohun ti wọn nsọnu. Ẹgbẹ iṣiṣẹ IETF ṣeto awọn ipade ọdọọdun lakoko eyiti a fọwọsi boṣewa tuntun kan ati ijiroro awọn imotuntun. Imuse ti QUIC ni a ka ni akọkọ ati pe o wa lori ipilẹ rẹ pe boṣewa HTTP/3 jẹ ifọwọsi.

Titi di isisiyi, ko si ọrọ nipa pẹlu HTTP/3 gẹgẹbi ilana akọkọ, nitori ko tii pari sibẹsibẹ o fẹrẹ ko ni atilẹyin:

HTTP lori UDP - ṣiṣe lilo daradara ti ilana QUIC

Ṣugbọn QUIC le ṣe imuse bi gbigbe laarin ohun elo ati olupin naa, eyiti o ṣe aṣeyọri ni Uber:

Ọrọ asọye Uber lori ifihan ti QUIC

Lati ṣaṣeyọri ifibọ QUIC ati imudara iṣẹ ohun elo ni awọn agbegbe isopọmọ ti ko dara, a rọpo akopọ atijọ (HTTP/2 lori TLS/TCP) pẹlu ilana QUIC. A lo ile-ikawe nẹtiwọki Cronet ati bẹbẹ lọ Awọn iṣẹ akanṣe Chromium, eyiti o ni atilẹba, Google version of the protocol - gQUIC. Imuse yii tun jẹ ilọsiwaju nigbagbogbo lati tẹle sipesifikesonu IETF tuntun.

A kọkọ ṣepọ Cronet sinu awọn ohun elo Android wa lati ṣafikun atilẹyin fun QUIC. A ṣe iṣọpọ ni iru ọna lati dinku awọn idiyele ijira bi o ti ṣee ṣe. Dipo ti patapata rirọpo awọn atijọ Nẹtiwọki akopọ ti o lo awọn ìkàwé OkHttp, a ti ṣepọ Cronet labẹ ilana OkHttp API. Nipa ṣiṣe iṣọpọ ni ọna yii, a yago fun awọn ayipada si awọn ipe nẹtiwọọki wa (eyiti o nlo nipasẹ Retiro) ni ipele API.

Iru si ọna fun awọn ẹrọ Android, a ṣe imuse Cronet sinu awọn ohun elo Uber lori iOS, ni idilọwọ awọn ijabọ HTTP lati nẹtiwọọki APIlilo NSURLProtocol. Abstraction yii, ti a pese nipasẹ Ipilẹṣẹ iOS, ṣe itọju data URL-pato ti ilana ati rii daju pe a le ṣepọ Cronet sinu awọn ohun elo iOS wa laisi awọn idiyele ijira pataki.

gba lati itumọ yi Uber ìwé

Lori ẹhin wọn mu awọn asopọ QUIC nipasẹ Google Cloud lb, eyiti atilẹyin Ilana niwon aarin 2018.

Kii ṣe iyalẹnu pe Google Cloud ṣiṣẹ nla pẹlu ilana ti idagbasoke Google, ṣugbọn kini awọn omiiran?

Nginx

Ko gun seyin CloudFlare Mo gbiyanju lati rekọja nginx (eyiti ko ṣe atilẹyin HTTP/3 nipasẹ aiyipada) pẹlu ohun elo Quiche rẹ. Imuse naa wa bi faili .patch kan, eyiti o wa pẹlu ikẹkọ fifi sori ẹrọ:

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

Nibi o le sopọ awọn modulu rẹ ti o ba jẹ dandan

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

Gbogbo ohun ti o ku ni lati mu atilẹyin HTTP/3 ṣiṣẹ

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

Ko ṣee ṣe lati sopọ nipasẹ HTTP/3 ni awọn aṣawakiri deede, ṣugbọn o le lo Chrome Canary ati ṣiṣe awọn ti o pẹlu awọn Flag --enable-quic, lọ si olupin rẹ tabi, fun apẹẹrẹ, aaye quic.rocks ki o si wo iru asopọ ni Awọn Irinṣẹ Olùgbéejáde:
HTTP lori UDP - ṣiṣe lilo daradara ti ilana QUIC
Dipo HTTP/3 o ti kọ http2+quic/99, sugbon o jẹ pataki ohun kanna.

Awọn imọ-ẹrọ miiran

  • QUIC tun ṣe atilẹyin LiteSpeed (eyi ti o sopọ si Facebook nipasẹ HTTP / 3 pẹlu afẹfẹ nla) ati ilọsiwaju caddy. Apache ko le ṣe sibẹsibẹ, ṣugbọn iṣẹ n lọ lọwọ ni kikun golifu.
  • January 21 imudojuiwọn osere bošewa fun WebRTC
  • Ni ọjọ miiran Microsoft ṣii msquic imuse koodu, ninu eyiti kii ṣe gbogbo awọn iṣẹ lati boṣewa IETF sibẹsibẹ wa, ṣugbọn eyi jẹ aṣeyọri nla tẹlẹ.

ipari

HTTP lori UDP - ṣiṣe lilo daradara ti ilana QUIC

Anfani ni QUIC jẹ riru, ṣugbọn ndagba, ati pe iṣẹ n lọ lọwọ lati ṣe idiwọn rẹ. Awọn imuṣẹ tuntun ti ilana naa han ni gbogbo oṣu, ati ni gbogbo ọdun diẹ sii ati siwaju sii awọn olupilẹṣẹ ni idaniloju pe QUIC ni ọjọ iwaju. Paapaa o ṣee ṣe lati ṣafikun ilana naa ni awọn ẹya iwaju ti akopọ TCP, eyiti o tumọ si pe laipẹ tabi ya gbogbo Intanẹẹti yoo lọ si iduroṣinṣin diẹ sii ati awọn asopọ iyara.

Tẹlẹ ni bayi o le tunto ibaraenisepo QUIC fun awọn amayederun rẹ tabi paapaa fun awọn aṣawakiri - gbogbo wọn n gbero lati ṣafikun atilẹyin fun ilana naa, ati awọn iṣiro ibanujẹ pẹlu caniuse yoo di idunnu diẹ sii.

HTTP lori UDP - ṣiṣe lilo daradara ti ilana QUIC

orisun: www.habr.com

Fi ọrọìwòye kun