Pròtacal QUIC ann an gnìomh: mar a chuir Uber an gnìomh e gus coileanadh a bharrachadh

Tha protocol QUIC air leth inntinneach a choimhead, agus is e sin as coireach gu bheil sinn dèidheil air sgrìobhadh mu dheidhinn. Ach nam biodh foillseachaidhean roimhe mu QUIC nas motha de nàdar eachdraidheil (eachdraidh ionadail, ma thogras tu) agus bathar-cruaidh, an-diugh tha sinn toilichte eadar-theangachadh de sheòrsa eadar-dhealaichte fhoillseachadh - bruidhnidh sinn mu fhìor chleachdadh a’ phròtacal ann an 2019. A bharrachd air an sin, chan eil sinn a 'bruidhinn mu dheidhinn bun-structair beag stèidhichte ann an garaids ris an canar, ach mu dheidhinn Uber, a tha ag obair cha mhòr air feadh an t-saoghail. Mar a thàinig innleadairean na companaidh chun cho-dhùnadh QUIC a chleachdadh ann an cinneasachadh, mar a rinn iad na deuchainnean agus na chunnaic iad às deidh dhaibh a chuir a-steach ann an cinneasachadh - fon ghearradh.

Faodar cliogadh air na dealbhan. Faigh tlachd bho leughadh!

Pròtacal QUIC ann an gnìomh: mar a chuir Uber an gnìomh e gus coileanadh a bharrachadh

Tha sgèile cruinne aig Uber, is e sin 600 baile-mòr làthaireachd, agus anns gach fear dhiubh tha an tagradh gu tur an urra ri eadar-lìn gun uèir bho barrachd air 4500 gnìomhaiche cealla. Tha luchd-cleachdaidh an dùil nach bi an aplacaid dìreach luath, ach ann an àm fìor - gus seo a choileanadh, feumaidh an app Uber latency ìosal agus ceangal fìor earbsach. Mo thruaighe, ach an stac HTTP / 2 chan eil e a’ dèanamh gu math ann an lìonraidhean uèirleas fiùghantach agus buailteach do chall. Thuig sinn sa chùis seo, gu bheil coileanadh ìosal ceangailte gu dìreach ri buileachadh TCP ann an kernels siostam obrachaidh.

Gus an duilgheadas fhuasgladh, rinn sinn tagradh QUIC, protocol ioma-fhillte seanail ùr-nodha a bheir barrachd smachd dhuinn air coileanadh a’ phròtacal còmhdhail. An-dràsta a’ bhuidheann-obrach IETF a’ gnàthachadh QUIC mar HTTP / 3.

Às deidh deuchainnean farsaing, cho-dhùin sinn gun toireadh buileachadh QUIC san tagradh againn latencies earbaill nas ìsle an taca ri TCP. Chunnaic sinn lùghdachadh anns an raon de 10-30% airson trafaic HTTPS ann an tagraidhean draibhearan is luchd-siubhail. Thug QUIC dhuinn cuideachd smachd deireadh-gu-deireadh air pasganan luchd-cleachdaidh.

San artaigil seo, bidh sinn a’ roinn ar n-eòlas ann a bhith ag ùrachadh TCP airson tagraidhean Uber a ’cleachdadh stac a bheir taic do QUIC.

An teicneòlas as ùire: TCP

An-diugh, is e TCP am protocol còmhdhail as motha a chleachdar airson trafaic HTTPS a lìbhrigeadh air an eadar-lìn. Tha TCP a’ toirt seachad sruth earbsach de bytes, mar sin a’ dèiligeadh ri dùmhlachd lìonra agus call sreathan ceangail. Tha cleachdadh farsaing de TCP airson trafaic HTTPS mar thoradh air uile-làthaireachd a’ chiad fhear (tha TCP aig cha mhòr a h-uile OS), ruigsinneachd air a’ mhòr-chuid de bhun-structar (leithid luchd-cothromachaidh luchdan, luchd-ionaid HTTPS agus CDNn), agus gnìomhachd taobh a-muigh a’ bhogsa a tha ri fhaighinn. air cha mhòr a’ mhòr-chuid de àrd-ùrlaran is lìonraidhean.

Bidh a’ mhòr-chuid de luchd-cleachdaidh a’ cleachdadh an aplacaid againn air an t-slighe, agus cha robh latencies earball TCP faisg air iarrtasan ar trafaic HTTPS fìor-ùine. Gu sìmplidh, tha luchd-cleachdaidh air feadh an t-saoghail air eòlas fhaighinn air seo - tha Figear 1 a’ sealltainn dàil ann am bailtean-mòra:

Pròtacal QUIC ann an gnìomh: mar a chuir Uber an gnìomh e gus coileanadh a bharrachadh
Figear 1: Bidh latency earbaill ag atharrachadh thar prìomh bhailtean Uber.

Ged a bha latency ann an lìonraidhean Innseanach agus Brazilach nas àirde na anns na SA agus an RA, tha latency earbaill gu math nas àirde na latency cuibheasach. Agus tha seo fìor eadhon airson na SA agus an RA.

TCP thairis air coileanadh adhair

Chaidh TCP a chruthachadh airson sreangach lìonraidhean, is e sin, le cuideam air ceanglaichean a tha gu math sùbailte. Ach, gun uèir tha na feartan agus na duilgheadasan aca fhèin aig lìonraidhean. An toiseach, tha lìonraidhean gun uèir buailteach do chall mar thoradh air bacadh agus lughdachadh chomharran. Mar eisimpleir, tha lìonraidhean Wi-Fi mothachail air microwave, bluetooth agus tonnan rèidio eile. Bidh lìonraidhean ceallach a’ fulang le call chomharran (slighe air chall) mar thoradh air meòrachadh / gabhail ris a’ chomharra le nithean agus togalaichean, a bharrachd air bho eadar-theachd bho nàbaidh tùir cealla. Tha seo a’ leantainn gu barrachd cudromach (4-10 tursan) agus nas eadar-mheasgte Ùine siubhail cruinn (RTT) agus call pacaid an taca ri ceangal uèirleas.

Gus cuir an-aghaidh atharrachaidhean agus call leud-bann, bidh lìonraidhean cealla mar as trice a’ cleachdadh bufairean mòra airson spreadhaidhean trafaic. Faodaidh seo leantainn gu cus ciudha, a tha a’ ciallachadh dàil nas fhaide. Glè thric bidh TCP a’ làimhseachadh a’ chiudha seo mar sgudal air sgàth ùine nas fhaide, agus mar sin bidh TCP buailteach a bhith a’ sealaidheachd agus mar sin a’ lìonadh a’ bhufair. Canar an duilgheadas seo ris bufair (cus bufair lìonra, bloat bufair), agus tha seo glè fìor dhuilgheadas eadar-lìon ùr-nodha.

Mu dheireadh, bidh coileanadh lìonra cealla ag atharrachadh a rèir neach-giùlain, sgìre, agus ùine. Ann am Figear 2, chruinnich sinn an dàil meadhanach de thrafaig HTTPS thar cheallan taobh a-staigh raon 2-cilemeatair. Dàta air a chruinneachadh airson dà phrìomh ghnìomhaiche cealla ann an Delhi, na h-Innseachan. Mar a chì thu, tha coileanadh ag atharrachadh bho chealla gu cealla. Cuideachd, tha cinneasachd aon ghnìomhaiche eadar-dhealaichte bho chinneasachd an dàrna fear. Tha seo fo bhuaidh factaran leithid pàtrain inntrigidh lìonra a’ toirt aire do ùine agus àite, gluasad luchd-cleachdaidh, a bharrachd air bun-structar lìonra a’ toirt aire do dhlùths an tùir agus an co-mheas de sheòrsan lìonra (LTE, 3G, msaa).

Pròtacal QUIC ann an gnìomh: mar a chuir Uber an gnìomh e gus coileanadh a bharrachadh
Figear 2. Moill a' cleachdadh radius 2 km mar eisimpleir. Delhi, na h-Innseachan.

Cuideachd, bidh coileanadh lìonraidhean cealla ag atharrachadh thar ùine. Tha Figear 3 a’ sealltainn an latency meadhanach a rèir latha na seachdain. Chunnaic sinn cuideachd eadar-dhealachaidhean air sgèile nas lugha, taobh a-staigh aon latha agus uair a thìde.

Pròtacal QUIC ann an gnìomh: mar a chuir Uber an gnìomh e gus coileanadh a bharrachadh
Figear 3. Faodaidh dàil earbaill atharrachadh gu mòr eadar làithean, ach airson an aon ghnìomhaiche.

Tha a h-uile rud gu h-àrd ag adhbhrachadh gu bheil coileanadh TCP neo-èifeachdach ann an lìonraidhean gun uèir. Ach, mus coimhead sinn airson roghainnean eile seach TCP, bha sinn airson tuigse mhionaideach a leasachadh air na puingean a leanas:

  • an e TCP am prìomh neach a tha ciontach air cùl latencies earbaill anns na tagraidhean againn?
  • A bheil dàil mhòr agus eadar-dhealaichte aig lìonraidhean an latha an-diugh (RTT)?
  • Dè a’ bhuaidh a tha aig RTT agus call air coileanadh TCP?

Mion-sgrùdadh Coileanaidh TCP

Gus tuigse fhaighinn air mar a rinn sinn mion-sgrùdadh air coileanadh TCP, leig dhuinn sùil aithghearr a thoirt air mar a bhios TCP a’ gluasad dàta bho neach a chuir gu neach-glacaidh. An toiseach, bidh an neach-cuiridh a 'stèidheachadh ceangal TCP, a' coileanadh trì-slighe crathadh làimhe: Bidh an neach a chuir a-steach pasgan SYN, a’ feitheamh ri pacaid SYN-ACK bhon ghlacadair, an uairsin a’ cur pacaid ACK. Thèid dàrna agus treas pas a bharrachd a chosg a' stèidheachadh a' cheangail TCP. Tha an neach-faighinn ag aideachadh gun d’ fhuair e gach pacaid (ACK) gus dèanamh cinnteach à lìbhrigeadh earbsach.

Ma thèid pacaid no ACK air chall, bidh an neach a chuir air ais às deidh ùine a-mach (RTO, ùine ath-chraolaidh). Tha RTO air a thomhas gu dinamach stèidhichte air grunn nithean, leithid an dàil RTT ris a bheil dùil eadar an neach a chuir agus an neach a gheibh e.

Pròtacal QUIC ann an gnìomh: mar a chuir Uber an gnìomh e gus coileanadh a bharrachadh
Figear 4. Tha inneal ath-chraolaidh a' gabhail a-steach iomlaid phasgan thairis air TCP/TLS.

Gus faighinn a-mach mar a choilean TCP anns na tagraidhean againn, rinn sinn sùil air pacaidean TCP a’ cleachdadh tcpdump airson seachdain air trafaic sabaid a’ tighinn bho luchd-frithealaidh iomall Innseanach. An uairsin rinn sinn mion-sgrùdadh air na ceanglaichean TCP a’ cleachdadh tcptrace. A bharrachd air an sin, chruthaich sinn tagradh Android a chuireas trafaic emulated gu frithealaiche deuchainn, ag atharrais air fìor thrafaig cho mòr ‘s as urrainn. Chaidh fònaichean sgairteil leis an aplacaid seo a sgaoileadh gu grunn luchd-obrach, a chruinnich logaichean thairis air grunn làithean.

Bha toraidhean an dà dheuchainnean co-chòrdail ri chèile. Chunnaic sinn latencies RTT àrd ; bha luachan earball faisg air 6 tursan nas àirde na an luach meadhanach; tha cuibheasachd àireamhachd dàil nas motha na 1 diog. Bha mòran cheanglaichean air an call, ag adhbhrachadh gun robh TCP ag ath-chraoladh 3,5% de na pacaidean gu lèir. Ann an sgìrean dùmhail leithid puirt-adhair agus stèiseanan rèile, chunnaic sinn call 7%. Tha na toraidhean sin a’ cur teagamh air a’ ghliocas àbhaisteach a chleachdar ann an lìonraidhean cealla cuairtean ath-chraolaidh adhartach lùghdachadh mòr air call aig ìre còmhdhail. Gu h-ìosal tha na toraidhean deuchainn bhon tagradh “simuladair”:

Meatairean lìonra
Luachan

RTT, milliseconds [50%,75%, 95%,99%]
[350, 425, 725, 2300]

Eadar-dhealachadh RTT, diogan
Gu cuibheasach ~1,2 s

Call pacaid air ceanglaichean neo-sheasmhach
Cuibheasach ~3.5% (7% ann an sgìrean le cus luchdan)

Bha co-dhiù aon chall pacaid aig faisg air leth de na ceanglaichean sin, a’ mhòr-chuid dhiubh pacaidean SYN agus SYN-ACK. Bidh a’ mhòr-chuid de bhuileachadh TCP a’ cleachdadh luach RTO de 1 diog airson pacaidean SYN, a bhios ag àrdachadh gu mòr airson call às deidh sin. Dh’ fhaodadh amannan luchdachadh tagraidh àrdachadh leis gu bheil TCP a’ toirt nas fhaide gus ceanglaichean a stèidheachadh.

A thaobh pacaidean dàta, tha luachan àrd RTO gu mòr a’ lughdachadh cleachdadh feumail an lìonra an làthair call neo-ghluasadach ann an lìonraidhean gun uèir. Lorg sinn gu bheil an ùine ath-chraoladh cuibheasach timcheall air 1 diog le dàil earbaill faisg air 30 diog. Dh’ adhbhraich na h-uallaichean àrda sin aig ìre TCP amannan-ama HTTPS agus ath-iarrtasan, a’ meudachadh tuilleadh latency lìonra agus neo-èifeachdas.

Fhad ‘s a bha an 75mh sa cheud de RTT tomhaiste timcheall air 425 ms, bha an 75mh ceudad airson TCP faisg air 3 diogan. Tha seo a’ nochdadh gun tug an call air TCP pasan 7-10 a ghabhail gus dàta a thar-chuir gu soirbheachail. Dh’ fhaodadh seo a bhith mar thoradh air àireamhachadh RTO neo-èifeachdach, neo-chomas TCP dèiligeadh gu sgiobalta ri call pacaidean as ùire san uinneig agus neo-èifeachdas an algairim smachd dùmhlachd, nach eil a’ dèanamh eadar-dhealachadh eadar call agus call gun uèir mar thoradh air dùmhlachd lìonra. Gu h-ìosal tha toraidhean deuchainnean call TCP:

Staitistig call pacaid TCP
luach

Àireamh sa cheud de cheanglaichean le co-dhiù 1 call pacaid
45%

An àireamh sa cheud de cheanglaichean le call aig àm stèidheachadh ceangail
30%

Àireamh sa cheud de cheanglaichean le call rè iomlaid dàta
76%

Sgaoileadh dàil ann an ath-chraoladh, diogan [50%, 75%, 95%,99%] [1, 2.8, 15, 28]

Sgaoileadh an àireamh de ath-chraoladh airson aon phasgan no earrann TCP
[1,3,6,7]

Cur an gnìomh QUIC

Air a leasachadh an toiseach le Google, tha QUIC na phròtacal còmhdhail ùr-nodha ioma-snàthainn a tha a’ ruith a bharrachd air UDP. Tha QUIC a-staigh an-dràsta pròiseas cunbhalachaidh (sgrìobh sinn mu thràth gu bheil, mar gum biodh, dà dhreach de QUIC, fiosrach urrainn an ceangal a leantainn - mu thuairmeas. eadar-theangair). Mar a chithear ann am Figear 5, tha QUIC air a chuir fo HTTP / 3 (gu dearbh, is e HTTP / 2 a bharrachd air QUIC HTTP / 3, a tha a-nis air a chothromachadh gu dian). Bidh e gu ìre a’ dol an àite na sreathan HTTPS agus TCP le bhith a’ cleachdadh UDP gus pacaidean a chruthachadh. Chan eil QUIC a’ toirt taic ach do ghluasad dàta tèarainte leis gu bheil TLS air a làn thogail a-steach do QUIC.

Pròtacal QUIC ann an gnìomh: mar a chuir Uber an gnìomh e gus coileanadh a bharrachadh
Figear 5: Tha QUIC a’ ruith fo HTTP/3, a’ dol an àite TLS, a bha roimhe seo a’ ruith fo HTTP/2.

Gu h-ìosal tha na h-adhbharan a thug oirnn QUIC a chleachdadh airson leudachadh TCP:

  • Stèidheachadh ceangail 0-RTT. Tha QUIC a’ ceadachadh ceadan bho cheanglaichean a bh’ ann roimhe ath-chleachdadh, a’ lughdachadh an àireamh de chrathadh làimhe tèarainteachd. San àm ri teachd TLS1.3 bheir e taic do 0-RTT, ach bidh feum air crathadh làimhe TCP trì-shligheach fhathast.
  • faighinn thairis air bacadh HoL. Bidh HTTP/2 a’ cleachdadh aon cheangal TCP gach neach-dèiligidh gus coileanadh a leasachadh, ach faodaidh seo leantainn gu bacadh HoL (ceann-air-loidhne). Bidh QUIC a’ sìmpleachadh ioma-fhillteachd agus a’ lìbhrigeadh iarrtasan don tagradh gu neo-eisimeileach.
  • smachd dùmhlachd. Tha QUIC a’ fuireach aig ìre an tagraidh, ga dhèanamh nas fhasa am prìomh algairim còmhdhail ùrachadh a bhios a’ cumail smachd air cur a-mach stèidhichte air paramadairean lìonra (àireamh call no RTT). Bidh a’ mhòr-chuid de bhuileachadh TCP a’ cleachdadh an algairim ciùbach, nach eil cho math airson trafaic a tha mothachail air latency. Algorithms a chaidh a leasachadh o chionn ghoirid mar BBR, modal nas cruinne a dhèanamh den lìonra agus an ùine as fheàrr a dhèanamh. Leigidh QUIC leat BBR a chleachdadh agus an algairim seo ùrachadh mar a thathar ga chleachdadh. leasachadh.
  • ath-lìonadh call. Bidh QUIC a’ gairm dà TLP (probe call earball) mus tèid an RTO a phiobrachadh - eadhon nuair a tha na call gu math follaiseach. Tha seo eadar-dhealaichte bho bhuileachadh TCP. Bidh TLP ag ath-chraoladh gu ìre mhòr a’ phacaid mu dheireadh (no am fear ùr, ma tha fear ann) gus ath-lìonadh luath a bhrosnachadh. Tha làimhseachadh dàil earbaill gu sònraichte feumail airson an dòigh anns a bheil Uber ag obrachadh a lìonra, is e sin airson gluasadan dàta goirid, bho àm gu àm agus mothachail air latency.
  • ACK làn-leasaichte. Leis gu bheil àireamh sreath sònraichte aig gach pacaid, chan eil duilgheadas ann eadar-dhealachaidhean pacaidean nuair a thèid an ath-chraoladh. Bidh ùine ann am pacaidean ACK cuideachd airson a’ phacaid a phròiseasadh agus ACK a ghineadh air taobh an neach-dèiligidh. Bidh na feartan sin a’ dèanamh cinnteach gu bheil QUIC a’ tomhas RTT nas cinntiche. Tha ACK ann an QUIC a’ toirt taic do suas ri 256 còmhlan NAIGHEACH, a’ cuideachadh an neach a chuir a-steach a bhith nas seasmhaiche a thaobh gluasad pacaid agus a’ cleachdadh nas lugha de bytes sa phròiseas. ACK roghnach (SEACHD) ann an TCP chan eil e a’ fuasgladh na trioblaid seo anns a h-uile cùis.
  • imrich ceangail. Tha ceanglaichean QUIC air an comharrachadh le ID 64-bit, mar sin ma dh’ atharraicheas neach-dèiligidh seòlaidhean IP, faodar an seann ID ceangail a chleachdadh air an t-seòladh IP ùr gun bhriseadh sam bith. Is e cleachdadh gu math cumanta a tha seo airson tagraidhean gluasadach far am bi an neach-cleachdaidh ag atharrachadh eadar Wi-Fi agus ceanglaichean cealla.

Roghainnean eile an àite QUIC

Bheachdaich sinn air dòighean eile airson fuasgladh fhaighinn air an duilgheadas mus do thagh sinn QUIC.

B’ e a’ chiad rud a dh’ fheuch sinn ri TPC PoPs (Points of Presence) a chleachdadh gus ceanglaichean TCP a thoirt gu crìch nas fhaisge air luchd-cleachdaidh. Gu bunaiteach, bidh PoPs a’ cur crìoch air ceangal TCP le inneal gluasadach nas fhaisge air an lìonra cealla agus a’ toirt an trafaic air ais chun bhun-structair tùsail. Le bhith a’ cur crìoch air TCP nas fhaisge, is urrainn dhuinn an RTT a lughdachadh agus dèanamh cinnteach gu bheil TCP nas freagarraiche do àrainneachd gun uèir fiùghantach. Ach, tha na deuchainnean againn air sealltainn gu bheil a’ mhòr-chuid de RTT agus call a’ tighinn bho lìonraidhean ceallach agus chan eil cleachdadh PoPn a’ toirt seachad leasachadh coileanaidh cudromach.

Choimhead sinn cuideachd air gleusadh crìochan TCP. Bha e duilich stac TCP a stèidheachadh air na frithealaichean ioma-ghnèitheach againn oir tha buileachadh eadar-dhealaichte aig TCP thar diofar dhreachan OS. Bha e duilich seo a chuir an gnìomh agus deuchainn a dhèanamh air diofar rèiteachaidhean lìonra. Cha robh e comasach TCP a rèiteachadh gu dìreach air innealan gluasadach air sgàth dìth ceadan. Nas cudromaiche, tha feartan leithid ceanglaichean 0-RTT agus ro-innse RTT leasaichte deatamach do ailtireachd a’ phròtacal, agus mar sin tha e do-dhèanta buannachdan mòra a choileanadh le bhith a’ gleusadh TCP leis fhèin.

Mu dheireadh, rinn sinn measadh air grunn phròtacalan stèidhichte air UDP a bhios a’ fuasgladh sruthadh bhidio - bha sinn airson faicinn an cuidicheadh ​​​​na protocolaidhean sin nar cùis. Gu mì-fhortanach, bha iad gu math gann ann an iomadh suidheachadh tèarainteachd, agus bha feum aca cuideachd air ceangal TCP a bharrachd airson meata-dàta agus fiosrachadh smachd.

Tha an rannsachadh againn air sealltainn gur dòcha gur e QUIC an aon phròtacal a chuidicheas le duilgheadas trafaic eadar-lìn, agus aig an aon àm a’ toirt aire do gach cuid tèarainteachd agus coileanadh.

Amalachadh QUIC a-steach don àrd-ùrlar

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.

A’ crìochnachadh QUIC air Google Cloud Balancers

Air an taobh backend, tha crìochnachadh QUIC air a thoirt seachad le bun-structar cothromachaidh Google Cloud Load, a bhios a ’cleachdadh alt-svc bannan-cinn ann am freagairtean gus taic a thoirt do QUIC. San fharsaingeachd, bidh an cothromaiche a’ cur bann-cinn alt-svc ri gach iarrtas HTTP, agus tha seo mu thràth a’ dearbhadh taic QUIC airson an àrainn. Nuair a gheibh neach-dèiligidh Cronet freagairt HTTP leis a’ bhann-cinn seo, bidh e a’ cleachdadh QUIC airson iarrtasan HTTP às deidh sin don raon sin. Cho luath ‘s a chuireas an cothromaiche crìoch air an QUIC, bidh ar bun-structar gu sònraichte a’ cur a ’ghnìomh seo thairis air HTTP2 / TCP gu na h-ionadan dàta againn.

Coileanadh: Toraidhean

Is e coileanadh toraidh am prìomh adhbhar airson ar rannsachadh airson protocol nas fheàrr. An toiseach, chruthaich sinn seasamh le emulation lìonragus faighinn a-mach mar a bhios QUIC gad ghiùlan fhèin fo phròifil lìonra eadar-dhealaichte. Gus deuchainn a dhèanamh air coileanadh QUIC air lìonraidhean san t-saoghal fhìor, ruith sinn deuchainnean fhad ‘s a bha sinn a’ draibheadh ​​​​timcheall New Delhi a ’cleachdadh trafaic lìonra emulated glè choltach ri fiosan HTTP san app luchd-siubhail.

Deuchainn 1

Innealan airson an deuchainn:

  • dèan deuchainn air innealan Android le stacan OkHttp agus Cronet gus dèanamh cinnteach gun leig sinn le trafaic HTTPS thairis air TCP agus QUIC fa leth;
  • frithealaiche emulation stèidhichte air Java a bhios a’ cur an aon sheòrsa de chinn-cinn HTTPS ann am freagairtean agus a’ luchdachadh innealan teachdaiche gus iarrtasan fhaighinn bhuapa;
  • proxies sgòthan a tha suidhichte gu corporra faisg air na h-Innseachan gus crìoch a chuir air ceanglaichean TCP agus QUIC. Fhad ‘s a bha sinn airson crìochnachadh TCP chleachd sinn neach-ionaid cùil NGINX, bha e duilich neach-ionaid cùl fosgailte a lorg airson QUIC. Thog sinn neach-ionaid cùil airson QUIC sinn fhìn a’ cleachdadh a’ chruach QUIC bunaiteach bho Chromium agus foillsichte e a-steach do chromium mar stòr fosgailte.

Pròtacal QUIC ann an gnìomh: mar a chuir Uber an gnìomh e gus coileanadh a bharrachadhPròtacal QUIC ann an gnìomh: mar a chuir Uber an gnìomh e gus coileanadh a bharrachadh
Figear 6. Anns an t-sreath deuchainn rathaid TCP vs QUIC bha innealan Android le OkHttp agus Cronet, luchd-ionaid sgòthan airson ceanglaichean a thoirt gu crìch, agus frithealaiche emulation.

Deuchainn 2

Nuair a thug Google seachad QUIC ri fhaighinn le Co-chothromachadh luchdan Google Cloud, chleachd sinn an aon clàr-seilbhe, ach le aon atharrachadh: an àite NGINX, ghabh sinn cothromadairean luchdan Google gus ceanglaichean TCP agus QUIC a thoirt gu crìch bho innealan, a bharrachd air trafaic HTTPS a stiùireadh chun t-seirbheisiche emulation. Tha cothromairean air an sgaoileadh air feadh an t-saoghail, ach cleachd am frithealaiche PoP as fhaisge air an inneal (le taing dha geolocation).

Pròtacal QUIC ann an gnìomh: mar a chuir Uber an gnìomh e gus coileanadh a bharrachadh
Figear 7. Anns an dàrna deuchainn, bha sinn airson coimeas a dhèanamh eadar latency crìochnachaidh TCP agus QUIC: a 'cleachdadh Google Cloud agus a' cleachdadh ar neach-ionaid neòil.

Mar thoradh air an sin, bha grunn foillseachaidhean a’ feitheamh rinn:

  • crìochnachadh tro PoP coileanadh TCP nas fheàrr. Leis gu bheil cothromairean a’ cur crìoch air ceanglaichean TCP nas fhaisge air luchd-cleachdaidh agus gu bheil iad làn-leasaichte, bidh seo a’ leantainn gu RTTn nas ìsle, a leasaicheas coileanadh TCP. Agus ged nach robh uiread de bhuaidh air QUIC, bha e fhathast nas fheàrr na TCP a thaobh lughdachadh latency earbaill (le 10-30 sa cheud).
  • tha buaidh air earbaill leuman lìonra. Ged a bha an neach-ionaid QUIC againn nas fhaide bho na h-innealan (timcheall air 50 ms latency nas àirde) na luchd-cothromachaidh luchdan Google, lìbhrig e coileanadh coltach ris - lùghdachadh 15% ann an latency an coimeas ri lùghdachadh 20% anns an 99mh ceudad airson TCP. Tha seo a’ nochdadh gu bheil an gluasad mìle mu dheireadh na chnap-starra san lìonra.

Pròtacal QUIC ann an gnìomh: mar a chuir Uber an gnìomh e gus coileanadh a bharrachadhPròtacal QUIC ann an gnìomh: mar a chuir Uber an gnìomh e gus coileanadh a bharrachadh
Figear 8: Tha toraidhean bho dhà dheuchainn a’ sealltainn gu bheil QUIC gu math nas fheàrr na TCP.

Dèan sabaid air trafaig

Le brosnachadh bho dheuchainnean, tha sinn air taic QUIC a chuir an gnìomh anns na tagraidhean Android agus iOS againn. Rinn sinn deuchainn A/B gus faighinn a-mach dè a’ bhuaidh a bhiodh aig QUIC anns na bailtean-mòra far a bheil Uber ag obair. San fharsaingeachd, chunnaic sinn lùghdachadh mòr ann an dàil earbaill thar gach roinn, gnìomhaichean telecom agus seòrsa lìonra.

Tha na grafaichean gu h-ìosal a’ sealltainn àrdachadh sa cheud ann an earbaill (95 agus 99 percentiles) a rèir macro-sgìre agus diofar sheòrsaichean lìonra - LTE, 3G, 2G.
Pròtacal QUIC ann an gnìomh: mar a chuir Uber an gnìomh e gus coileanadh a bharrachadhPròtacal QUIC ann an gnìomh: mar a chuir Uber an gnìomh e gus coileanadh a bharrachadh
Figear 9. Ann an deuchainnean blàir, rinn QUIC nas fheàrr na TCP a thaobh latency.

Dìreach air adhart

Is dòcha gur e seo dìreach toiseach tòiseachaidh - tha sgaoileadh QUIC gu cinneasachadh air cothroman iongantach a thoirt seachad gus coileanadh tagraidh adhartachadh ann an lìonraidhean seasmhach agus neo-sheasmhach, is iad sin:

Meudachadh air còmhdach

Às deidh dhuinn sgrùdadh a dhèanamh air coileanadh a’ phròtacal air fìor thrafaig, chunnaic sinn gun do chleachd timcheall air 80% de sheiseanan QUIC gu soirbheachail airson всех iarrtasan, agus chleachd 15% de sheiseanan measgachadh de QUIC agus TCP. Tha sinn a’ gabhail ris gu bheil an cothlamadh mar thoradh air ùine leabharlann Cronet air ais gu TCP, leis nach urrainn dha eadar-dhealachadh a dhèanamh eadar fìor fhàilligidhean UDP agus droch shuidheachadh lìonra. Tha sinn an-dràsta a’ coimhead ri fuasgladh fhaighinn air an duilgheadas seo agus sinn ag obair a dh’ionnsaigh buileachadh QUIC às deidh sin.

Optimization QUIC

Tha trafaic bho aplacaidean gluasadach mothachail air latency, ach chan eil e mothachail air leud-bann. Cuideachd, tha na tagraidhean againn air an cleachdadh gu sònraichte air lìonraidhean cealla. Stèidhichte air deuchainnean, tha latencies earbaill fhathast àrd ged a thathar a’ cleachdadh neach-ionaid gus TCP agus QUIC a thoirt gu crìch faisg air luchd-cleachdaidh. Tha sinn gu gnìomhach a’ coimhead airson dòighean air riaghladh dùmhlachd a leasachadh agus èifeachdas algorithms faighinn seachad air call QUIC a leasachadh.

Leis na leasachaidhean sin agus grunn leasachaidhean eile, tha sinn an dùil eòlas an neach-cleachdaidh a leasachadh ge bith dè an lìonra agus an sgìre a th’ ann, a’ dèanamh còmhdhail pacaid goireasach is fuaigheil nas ruigsinneach air feadh an t-saoghail.

Source: www.habr.com

Cuir beachd ann