HTTP thairis air UDP - a 'dèanamh feum math de phròtacal QUIC

HTTP thairis air UDP - a 'dèanamh feum math de phròtacal QUIC

Tha QUIC (Quick UDP Internet Connections) na phròtacal a bharrachd air UDP a bheir taic do na feartan uile aig TCP, TLS agus HTTP/2 agus a dh’ fhuasglas a’ mhòr-chuid de na duilgheadasan aca. Canar protocol ùr no “deuchainneach” ris gu tric, ach tha e air a bhith fada nas fhaide na an ìre deuchainneach: tha leasachadh air a bhith a’ dol air adhart airson còrr air 7 bliadhna. Rè na h-ùine seo, cha do shoirbhich leis a 'phròtacal a bhith na inbhe, ach dh'fhàs e farsaing. Mar eisimpleir, bidh fuamhairean leithid Google agus Facebook a’ cleachdadh QUIC gus trafaic a luathachadh agus dàil ann an lìonraidhean gluasadach a lughdachadh, agus dh’ ainmich an IETF am forc den phròtacal aige mar bhunait airson inbhe HTTP/3 (ged a tha HTTP/2 a’ cleachdadh dìreach 44.8% làraich).

Bun-bheachd

Chaidh QUIC a leasachadh an àite an dìleab TCP, a chaidh a dhealbhadh an toiseach airson lìonraidhean uèirleas le call ìosal. Bidh TCP a’ lìbhrigeadh phasganan ann an òrdugh, mar sin ma thèid aon phacaid a chall, thèid an ciudha gu lèir a stad (bacadh ceann-loidhne), a bheir droch bhuaidh air càileachd agus seasmhachd a’ cheangail. Gus call mòr a sheachnadh, bidh lìonraidhean ceallach a’ cleachdadh bufairean mòra, a tha an uair sin a’ leantainn gu call obrach agus freagairt àicheil meallta den phròtacal (bufair). A bharrachd air an sin, bidh TCP a’ caitheamh mòran ùine a’ stèidheachadh ceangal: tha iarrtasan SYN/ACK agus TLS air an giullachd air leth, a’ feumachdainn trì cuairtean cruinn an àite aon, mar a bhios QUIC a’ dèanamh.

HTTP thairis air UDP - a 'dèanamh feum math de phròtacal QUIC

Leis gu bheil QUIC a’ cothlamadh ath-shuidheachadh TCP agus buileachadh TLS 1.3, tha a h-uile ceangal an-còmhnaidh air a chrioptachadh, agus chan eil e nas fhasa an trafaic sin a dhì-chrioptachadh na bhiodh e a’ dol thairis air HTTPS. A bharrachd air an sin, tha QUIC air a chuir an gnìomh aig ìre an tagraidh, mar a bheireadh ath-nuadhachadh iomlan air a’ chruach TCP sìorraidheachd.

A dh'aindeoin taic airson ioma-fhillteachd ann an HTTP/2, dh'fhuirich an duilgheadas a thaobh bacadh ceann-loidhne ann air sgàth 's gu robh feum air pacaidean a lìbhrigeadh ann an òrdugh. Tha QUIC air a chuir an gnìomh a bharrachd air UDP, agus mar sin chan eil bacadh sam bith ann ann am prionnsapal, agus gus casg a chuir air pacaidean bho bhith air chall gu bràth, tha iad air an àireamhachadh agus faodaidh iad a bhith ann am pàirtean de “nàbaidhean,” a’ toirt seachad call. A bharrachd air an sin, bidh QUIC a’ sgaradh a’ chiudha monolithic ann an grunn snàithleanan airson diofar sheòrsaichean iarrtasan taobh a-staigh aon cheangal. Mar sin, ma thèid pasgan a chall, faodaidh duilgheadasan èirigh dìreach airson aon ciudha (mar eisimpleir, airson faidhle sònraichte a ghluasad):

HTTP thairis air UDP - a 'dèanamh feum math de phròtacal QUIC

Cleachd

An toiseach, chaidh QUIC a leasachadh taobh a-staigh Google agus chaidh a dhealbhadh gu ìre mhòr airson a chleachdadh taobh a-staigh a’ chompanaidh. Ann an 2013, chaidh a ghluasad chun IETF airson cunbhalachadh (a tha fhathast a 'dol air adhart), agus a-nis faodaidh a h-uile duine pàirt a ghabhail ann an leasachadh a' phròtacail le bhith a 'moladh na tha iad a dhìth. Bidh buidheann-obrach IETF a’ cur choinneamhan air dòigh gach bliadhna far an tèid inbhe ùr aontachadh agus far a bheilear a’ beachdachadh air innleachdan ùra. Thathas den bheachd gur e buileachadh QUIC am prìomh fhear agus is ann air a bhunait a tha an inbhe HTTP/3 air a dhearbhadh.

Gu ruige seo, chan eil bruidhinn sam bith mu bhith a’ toirt a-steach HTTP/3 mar am prìomh phròtacal, leis nach eil e deiseil fhathast agus cha mhòr nach eil e a’ faighinn taic:

HTTP thairis air UDP - a 'dèanamh feum math de phròtacal QUIC

Ach faodar QUIC a chuir an gnìomh mar chòmhdhail eadar an tagradh agus an frithealaiche, a chaidh a dhèanamh gu soirbheachail aig Uber:

Beachd Uber air toirt a-steach QUIC

Gus QUIC fhighe a-steach gu soirbheachail agus coileanadh tagraidh a leasachadh ann an droch àrainneachdan ceangail, chuir sinn protocol QUIC an àite an t-seann chruach (HTTP / 2 thairis air TLS / TCP). Chleachd sinn leabharlann an lìonraidh Crònan bho Pròiseactan Chromium, anns a bheil an dreach tùsail, Google den phròtacal - gQUIC. Tha am buileachadh seo cuideachd ga leasachadh gu cunbhalach gus leantainn ris an t-sònrachadh IETF as ùire.

Amalaich sinn Cronet a-steach do na h-aplacaidean Android againn an-toiseach gus taic a chuir ri QUIC. Chaidh amalachadh a dhèanamh ann an dòigh a lughdaich cosgaisean imrich cho mòr 'sa ghabhas. An àite a bhith gu tur an àite an t-seann stac lìonraidh a chleachd an leabharlann OkHttp, tha sinn air Cronet UNDER frèam API OkHttp a thoirt a-steach. Le bhith a’ dèanamh an aonachadh san dòigh seo, sheachain sinn atharrachaidhean air na gairmean lìonra againn (a bhios gan cleachdadh le Iar-dhealbhachadh) aig ìre API.

Coltach ris an dòigh-obrach airson innealan Android, chuir sinn Cronet an sàs ann an aplacaidean Uber air iOS, a ’toirt a-steach trafaic HTTP bhon lìonra APIa ’cleachdadh Pròtacal NSURL. Bidh an tarraing seo, air a sholarachadh leis an iOS Foundation, a’ làimhseachadh dàta URL a tha sònraichte do phròtacal agus a’ dèanamh cinnteach gun urrainn dhuinn Cronet fhilleadh a-steach do na tagraidhean iOS againn gun chosgaisean mòra imrich.

air a thoirt bho eadar-theangachadh seo Artaigilean Uber

Air an deireadh-sheachdain ghlac iad ceanglaichean QUIC tro Google Cloud lb, a tha a’ toirt taic do phròtacal bho mheadhan 2018.

Chan eil e na iongnadh gu bheil Google Cloud ag obair gu math leis a’ phròtacal a chaidh a leasachadh le Google, ach dè na roghainnean eile a th ’ann?

Nginx

Chan eil o chionn fhada CloudFlare Dh'fheuch mi ri dhol tarsainn nginx (nach eil a 'toirt taic do HTTP / 3 gu bunaiteach) leis an inneal Quiche aige. Tha am buileachadh ri fhaighinn mar aon fhaidhle .patch, a thig le oideachadh stàlaidh:

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

An seo faodaidh tu na modalan agad a cheangal ma tha sin riatanach

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

Chan eil air fhàgail ach taic HTTP/3 a chomasachadh

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

Chan eil e comasach fhathast ceangal a dhèanamh tro HTTP/3 ann am brobhsairean cunbhalach, ach faodaidh tu a chleachdadh Sgaoileadh agus ruith e leis a' bhrataich --enable-quic, rachaibh chun t-seirbheisiche agad no, mar eisimpleir, an làrach quic.rocks agus thoir sùil air an t-seòrsa ceangail ann an Innealan Leasachaidh:
HTTP thairis air UDP - a 'dèanamh feum math de phròtacal QUIC
An àite HTTP/3 tha e sgrìobhte http2+quic/99, ach tha e gu bunaiteach an aon rud.

Teicneòlasan eile

  • Bidh QUIC cuideachd a’ toirt taic LiteSpeed (a cheangail ri Facebook tro HTTP/3 le fanadh mòr) agus adhartach Caddy. Chan urrainn dha Apache a dhèanamh fhathast, ach tha obair a’ dol air adhart làn leum.
  • Air ùrachadh air 21 Faoilleach dreachd inbhe airson WebRTC
  • Dìreach an latha eile dh’ fhosgail Microsoft còd buileachaidh msquic, anns nach eil a h-uile gnìomh bho inbhe IETF fhathast ri fhaighinn, ach tha seo mar-thà na adhartas mòr.

co-dhùnadh

HTTP thairis air UDP - a 'dèanamh feum math de phròtacal QUIC

Tha ùidh ann an QUIC neo-sheasmhach, ach tha e a’ fàs, agus tha obair a’ dol air adhart gus a dhèanamh àbhaisteach. Bidh buileachadh ùr den phròtacal a’ nochdadh cha mhòr a h-uile mìos, agus a h-uile bliadhna tha barrachd is barrachd luchd-leasachaidh cinnteach gur e QUIC an àm ri teachd. Tha e eadhon comasach am protocol a thoirt a-steach ann an dreachan den stac TCP san àm ri teachd, a tha a’ ciallachadh gun gluais an eadar-lìn gu lèir nas luaithe no nas fhaide air adhart gu ceanglaichean nas seasmhaiche agus nas luaithe.

A-cheana a-nis is urrainn dhut eadar-obrachadh QUIC a rèiteachadh airson do bhun-structair no eadhon a thoirt do bhrobhsairean - tha iad uile an dùil taic a chuir ris a ’phròtacal, agus bidh na staitistig brònach le caniuse a’ fàs nas sunndach.

HTTP thairis air UDP - a 'dèanamh feum math de phròtacal QUIC

Source: www.habr.com

Cuir beachd ann