Ilana QUIC ni iṣe: bawo ni Uber ṣe ṣe imuse rẹ lati mu iṣẹ ṣiṣe dara si

Ilana QUIC jẹ ohun ti o nifẹ pupọ lati wo, eyiti o jẹ idi ti a nifẹ kikọ nipa rẹ. Ṣugbọn ti awọn atẹjade ti tẹlẹ nipa QUIC jẹ diẹ sii ti itan-akọọlẹ (itan agbegbe, ti o ba nifẹ) ẹda ati ohun elo, loni a ni idunnu lati ṣe atẹjade itumọ kan ti iru ti o yatọ - a yoo sọrọ nipa ohun elo gidi ti ilana naa ni ọdun 2019. Pẹlupẹlu, a ko sọrọ nipa awọn amayederun kekere ti o da ni ohun ti a pe ni gareji, ṣugbọn nipa Uber, eyiti o ṣiṣẹ ni gbogbo agbaye. Bii awọn onimọ-ẹrọ ti ile-iṣẹ ṣe wa si ipinnu lati lo QUIC ni iṣelọpọ, bawo ni wọn ṣe ṣe awọn idanwo ati ohun ti wọn rii lẹhin yiyi ni iṣelọpọ - ni isalẹ gige.

Awọn aworan jẹ clickable. Gbadun kika!

Ilana QUIC ni iṣe: bawo ni Uber ṣe ṣe imuse rẹ lati mu iṣẹ ṣiṣe dara si

Uber ni iwọn agbaye, eyun awọn ilu 600 ti wiwa, ninu ọkọọkan eyiti ohun elo naa dale lori Intanẹẹti alailowaya lati diẹ sii ju awọn oniṣẹ cellular 4500. Awọn olumulo nireti pe ohun elo naa kii ṣe iyara nikan, ṣugbọn ni akoko gidi - lati ṣaṣeyọri eyi, ohun elo Uber nilo lairi kekere ati asopọ igbẹkẹle pupọ. Alas, ṣugbọn akopọ HTTP / 2 ko ṣe daradara ni agbara ati isonu-prone awọn nẹtiwọki alailowaya. A ṣe akiyesi pe ninu ọran yii, iṣẹ kekere jẹ ibatan taara si awọn imuse TCP ni awọn ekuro ẹrọ.

Lati yanju iṣoro naa, a lo QUIC, Ilana multixing ikanni ti ode oni ti o fun wa ni iṣakoso diẹ sii lori iṣẹ ti ilana gbigbe. Lọwọlọwọ ẹgbẹ iṣẹ IETF standardizes QUIC bi HTTP / 3.

Lẹhin idanwo nla, a pari pe imuse QUIC ninu ohun elo wa yoo ja si awọn latencies iru kekere ni akawe si TCP. A ṣe akiyesi idinku ni iwọn 10-30% fun ijabọ HTTPS ninu awakọ ati awọn ohun elo ero-ọkọ. QUIC tun fun wa ni iṣakoso opin-si-opin lori awọn idii olumulo.

Ninu nkan yii, a pin iriri wa ni jijẹ TCP fun awọn ohun elo Uber nipa lilo akopọ ti o ṣe atilẹyin QUIC.

Imọ-ẹrọ tuntun: TCP

Loni, TCP jẹ ilana irinna ti a lo julọ fun jiṣẹ ijabọ HTTPS lori Intanẹẹti. TCP n pese ṣiṣan ti o ni igbẹkẹle ti awọn baiti, nitorinaa faramo iṣupọ nẹtiwọọki ati awọn adanu Layer ọna asopọ. Lilo ibigbogbo ti TCP fun ijabọ HTTPS jẹ nitori aye ti iṣaaju (fere gbogbo OS ni TCP), wiwa lori ọpọlọpọ awọn amayederun (gẹgẹbi awọn iwọntunwọnsi fifuye, awọn aṣoju HTTPS ati CDNs), ati iṣẹ-jade-ti-apoti ti o wa lori fere julọ awọn iru ẹrọ ati awọn nẹtiwọki.

Pupọ julọ awọn olumulo lo ohun elo wa lori lilọ, ati pe awọn lairi iru TCP ko si nibikibi ti o sunmọ awọn ibeere ti ijabọ HTTPS gidi-akoko wa. Ni kukuru, awọn olumulo ni gbogbo agbaye ti ni iriri eyi - Nọmba 1 fihan awọn idaduro ni awọn ilu pataki:

Ilana QUIC ni iṣe: bawo ni Uber ṣe ṣe imuse rẹ lati mu iṣẹ ṣiṣe dara si
Nọmba 1: Idaduro iru yatọ kọja awọn ilu akọkọ ti Uber.

Botilẹjẹpe aipe ni awọn nẹtiwọọki Ilu India ati Ilu Brazil ga ju ti AMẸRIKA ati UK lọ, idaduro iru jẹ pataki ti o ga ju lairi apapọ lọ. Ati pe eyi jẹ otitọ paapaa fun AMẸRIKA ati UK.

TCP lori iṣẹ afẹfẹ

TCP ti ṣẹda fun ti firanṣẹ awọn nẹtiwọki, iyẹn ni, pẹlu tcnu lori awọn ọna asopọ asọtẹlẹ pupọ. Sibẹsibẹ, alailowaya awọn nẹtiwọki ni awọn abuda ti ara wọn ati awọn iṣoro. Ni akọkọ, awọn nẹtiwọọki alailowaya ni ifaragba si awọn adanu nitori kikọlu ati attenuation ifihan agbara. Fun apẹẹrẹ, awọn nẹtiwọọki Wi-Fi jẹ ifarabalẹ si microwaves, bluetooth ati awọn igbi redio miiran. Awọn nẹtiwọki alagbeka jiya lati pipadanu ifihan agbara (ona ti o padanu) nitori iṣaro / gbigba ifihan agbara nipasẹ awọn nkan ati awọn ile, bakannaa lati kikọlu lati adugbo awọn ile-iṣọ sẹẹli. Eyi yori si pataki diẹ sii (awọn akoko 4-10) ati pupọ diẹ sii Akoko Irin-ajo Yika (RTT) ati pipadanu soso akawe si a ti firanṣẹ asopọ.

Lati dojuko awọn iyipada bandiwidi ati awọn adanu, awọn nẹtiwọọki cellular lo igbagbogbo lo awọn ifipamọ nla fun awọn nwaye ijabọ. Eleyi le ja si nmu queuing, eyi ti o tumo si gun idaduro. Nigbagbogbo TCP n tọju isinyi yii bi egbin nitori akoko ti o gbooro sii, nitorinaa TCP duro lati yiyi ati nitorinaa kun ifipamọ naa. Iṣoro yii ni a mọ bi bufferbloat (ifipamọ nẹtiwọọki pupọ, bloat buffer), ati pe eyi jẹ pupọ pataki isoro igbalode Internet.

Ni ipari, iṣẹ nẹtiwọọki cellular yatọ nipasẹ gbigbe, agbegbe, ati akoko. Ni olusin 2, a gba awọn idaduro agbedemeji ti ijabọ HTTPS kọja awọn sẹẹli laarin iwọn 2-kilometer kan. Awọn data ti a gba fun awọn oniṣẹ cellular meji pataki ni Delhi, India. Bii o ti le rii, iṣẹ ṣiṣe yatọ lati sẹẹli si sẹẹli. Pẹlupẹlu, iṣelọpọ ti oniṣẹ ẹrọ kan yatọ si iṣẹ-ṣiṣe ti keji. Eyi ni ipa nipasẹ awọn ifosiwewe bii awọn ilana titẹsi nẹtiwọọki ti o ṣe akiyesi akoko ati ipo, arinbo olumulo, ati awọn amayederun nẹtiwọọki ti o ṣe akiyesi iwuwo ile-iṣọ ati ipin ti awọn iru nẹtiwọọki (LTE, 3G, ati bẹbẹ lọ).

Ilana QUIC ni iṣe: bawo ni Uber ṣe ṣe imuse rẹ lati mu iṣẹ ṣiṣe dara si
Ṣe nọmba 2. Awọn idaduro ni lilo rediosi 2 km gẹgẹbi apẹẹrẹ. Delhi, India.

Paapaa, iṣẹ ti awọn nẹtiwọọki cellular yatọ lori akoko. Nọmba 3 ṣe afihan aipe agbedemeji nipasẹ ọjọ ti ọsẹ. A tun ṣe akiyesi awọn iyatọ lori iwọn kekere, laarin ọjọ kan ati wakati kan.

Ilana QUIC ni iṣe: bawo ni Uber ṣe ṣe imuse rẹ lati mu iṣẹ ṣiṣe dara si
Ṣe nọmba 3. Awọn idaduro iru le yatọ si pataki laarin awọn ọjọ, ṣugbọn fun oniṣẹ ẹrọ kanna.

Gbogbo awọn ti o wa loke nfa iṣẹ TCP ko ni aiṣe ni awọn nẹtiwọki alailowaya. Sibẹsibẹ, ṣaaju wiwa awọn omiiran si TCP, a fẹ lati ni idagbasoke oye to peye lori awọn aaye wọnyi:

  • Njẹ TCP jẹ ẹlẹṣẹ akọkọ lẹhin awọn latencies iru ninu awọn ohun elo wa?
  • Njẹ awọn nẹtiwọọki ode oni ni pataki ati ọpọlọpọ awọn idaduro irin-ajo yika (RTT)?
  • Kini ipa ti RTT ati pipadanu lori iṣẹ TCP?

TCP Performance Analysis

Lati loye bi a ṣe ṣe itupalẹ iṣẹ TCP, jẹ ki a yara wo bii TCP ṣe n gbe data lati ọdọ olufiranṣẹ si olugba kan. Ni akọkọ, olufiranṣẹ ṣeto asopọ TCP kan, ṣiṣe ọna mẹta ifọwọwọwọ: Olufiranṣẹ naa firanṣẹ apo-iwe SYN kan, o duro de apo SYN-ACK lati ọdọ olugba, lẹhinna fi apo ACK kan ranṣẹ. Afikun keji ati iwe-kẹta ni a lo ni idasile asopọ TCP. Olugba gba gbigba ti apo-iwe kọọkan (ACK) lati rii daju ifijiṣẹ igbẹkẹle.

Ti apo tabi ACK kan ba sọnu, olufiranṣẹ naa tun gbejade lẹhin igbati akoko kan (RTO, retransmission akoko). RTO ṣe iṣiro ni agbara da lori ọpọlọpọ awọn ifosiwewe, gẹgẹbi idaduro RTT ti a nireti laarin olufiranṣẹ ati olugba.

Ilana QUIC ni iṣe: bawo ni Uber ṣe ṣe imuse rẹ lati mu iṣẹ ṣiṣe dara si
Ṣe nọmba 4. Paṣipaarọ apo lori TCP / TLS pẹlu ilana atunṣe.

Lati pinnu bi TCP ṣe ṣe ninu awọn ohun elo wa, a ṣe abojuto awọn apo-iwe TCP nipa lilo tcpdump fun ọsẹ kan lori ija ijabọ nbo lati Indian eti olupin. Lẹhinna a ṣe itupalẹ awọn asopọ TCP nipa lilo tcptrace. Ni afikun, a ṣẹda ohun elo Android kan ti o firanṣẹ ijabọ apẹẹrẹ si olupin idanwo kan, afarawe ijabọ gidi bi o ti ṣee ṣe. Awọn fonutologbolori pẹlu ohun elo yii ni a pin si awọn oṣiṣẹ pupọ, ti o gba awọn akọọlẹ ni ọpọlọpọ awọn ọjọ.

Awọn esi ti awọn mejeeji adanwo wà ni ibamu pẹlu kọọkan miiran. A ri awọn latencies RTT giga; awọn iye iru fẹrẹ to awọn akoko 6 ti o ga ju iye agbedemeji lọ; aropin isiro ti awọn idaduro jẹ diẹ sii ju 1 aaya. Ọpọlọpọ awọn asopọ jẹ adanu, nfa TCP lati tun gbejade 3,5% ti gbogbo awọn apo-iwe. Ni awọn agbegbe ti o kunju gẹgẹbi awọn papa ọkọ ofurufu ati awọn ibudo ọkọ oju irin, a rii awọn adanu 7%. Awọn abajade wọnyi jẹ ṣiyemeji lori ọgbọn aṣa ti awọn ti a lo ninu awọn nẹtiwọọki cellular to ti ni ilọsiwaju retransmission iyika dinku awọn adanu ni ipele gbigbe. Ni isalẹ wa awọn abajade idanwo lati ohun elo “Simulator”:

Awọn metiriki nẹtiwọki
Awọn iye

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

Iyatọ RTT, aaya
Ni apapọ ~ 1,2 s

Pipadanu apo lori awọn asopọ aiduro
Apapọ ~ 3.5% (7% ni awọn agbegbe ti kojọpọ)

O fẹrẹ to idaji awọn asopọ wọnyi ni o kere ju pipadanu apo kan, pupọ julọ wọn SYN ati awọn apo-iwe SYN-ACK. Pupọ awọn imuse TCP lo iye RTO ti 1 iṣẹju-aaya fun awọn apo-iwe SYN, eyiti o pọ si ni afikun fun awọn adanu ti o tẹle. Awọn akoko ikojọpọ ohun elo le pọ si nitori TCP ti o gba to gun lati fi idi awọn asopọ mulẹ.

Ninu ọran ti awọn apo-iwe data, awọn iye RTO giga dinku lilo iwulo ti nẹtiwọọki niwaju awọn adanu igba diẹ ninu awọn nẹtiwọọki alailowaya. A rii pe apapọ akoko gbigbejade jẹ isunmọ 1 iṣẹju-aaya pẹlu idaduro iru ti o fẹrẹ to awọn aaya 30. Awọn iwifun giga wọnyi ni ipele TCP fa awọn akoko akoko HTTPS ati awọn ibeere tun-ṣe, siwaju sii npọ sii lairi nẹtiwọki ati ailagbara.

Lakoko ti ipin ogorun 75th ti iwọn RTT wa ni ayika 425 ms, ipin ogorun 75th fun TCP ti fẹrẹẹ jẹ iṣẹju-aaya 3. Eyi ni imọran pe pipadanu naa jẹ ki TCP gba awọn igbasilẹ 7-10 lati gbe data ni ifijišẹ. Eyi le jẹ abajade ti iṣiro RTO ailagbara, ailagbara TCP lati dahun ni kiakia si pipadanu titun jo ni window ati aiṣedeede ti iṣakoso algorithm iṣakoso, eyi ti ko ṣe iyatọ laarin awọn adanu alailowaya ati awọn adanu nitori iṣeduro nẹtiwọki. Ni isalẹ wa awọn abajade ti awọn idanwo pipadanu TCP:

TCP soso statistiki
Itumo

Ogorun ti awọn asopọ pẹlu o kere ju 1 ipadanu soso
45%

Ogorun awọn asopọ pẹlu awọn adanu lakoko iṣeto asopọ
30%

Ogorun awọn asopọ pẹlu awọn adanu lakoko paṣipaarọ data
76%

Pipin awọn idaduro ni gbigbejade, iṣẹju-aaya [50%, 75%, 95%,99%] [1, 2.8, 15, 28]

Pipin nọmba ti awọn gbigbejade fun apo kan tabi apakan TCP
[1,3,6,7]

Ohun elo ti QUIC

Ni akọkọ ti o ni idagbasoke nipasẹ Google, QUIC jẹ ilana irinna igbalode ti ọpọlọpọ-asapo ti o nṣiṣẹ lori oke ti UDP. Lọwọlọwọ QUIC wa ninu Standardization ilana (a ti kọ tẹlẹ pe o wa, bi o ti jẹ pe, awọn ẹya meji ti QUIC, iyanilenu le tẹle ọna asopọ – isunmọ. onitumọ). Gẹgẹbi a ṣe han ni olusin 5, QUIC ti wa ni gbe labẹ HTTP/3 (ni otitọ, HTTP/2 lori oke QUIC jẹ HTTP/3, eyiti o ti wa ni idiwọn ni bayi). O rọpo apa kan HTTPS ati awọn fẹlẹfẹlẹ TCP nipa lilo UDP lati ṣe awọn apo-iwe. QUIC nikan ṣe atilẹyin gbigbe data to ni aabo bi TLS ti kọ ni kikun si QUIC.

Ilana QUIC ni iṣe: bawo ni Uber ṣe ṣe imuse rẹ lati mu iṣẹ ṣiṣe dara si
Nọmba 5: QUIC nṣiṣẹ labẹ HTTP/3, rọpo TLS, eyiti o ti ṣiṣẹ tẹlẹ labẹ HTTP/2.

Ni isalẹ awọn idi ti o da wa loju lati lo QUIC fun imudara TCP:

  • 0-RTT asopọ idasile. QUIC ngbanilaaye atunlo awọn aṣẹ lati awọn asopọ iṣaaju, idinku nọmba awọn imuwowo aabo. Ni ojo iwaju TLS1.3 yoo ṣe atilẹyin 0-RTT, ṣugbọn ọwọ ọwọ TCP ọna mẹta yoo tun nilo.
  • bibori ìdènà HoL. HTTP/2 nlo asopọ TCP kan fun alabara lati mu ilọsiwaju ṣiṣẹ, ṣugbọn eyi le ja si idinamọ HoL (ori-ti-line). QUIC jẹ ki o rọrun pupọ ati fi awọn ibeere ranṣẹ si ohun elo ni ominira.
  • iṣakoso idiwo. QUIC ngbe ni Layer ohun elo, ṣiṣe ki o rọrun lati ṣe imudojuiwọn algoridimu irinna akọkọ ti o ṣakoso fifiranṣẹ ti o da lori awọn aye nẹtiwọọki (nọmba awọn adanu tabi RTT). Pupọ awọn imuse TCP lo algorithm CUBIC, eyi ti ko dara julọ fun ijabọ ifarabalẹ latency. Laipe ni idagbasoke aligoridimu bi BBR, diẹ sii deede awoṣe nẹtiwọki ati ki o je ki lairi. QUIC gba ọ laaye lati lo BBR ki o ṣe imudojuiwọn algorithm yii bi o ti nlo. ilọsiwaju.
  • replenishment ti adanu. QUIC pe awọn TLP meji (ibere isonu iru) ṣaaju ki RTO ti nfa - paapaa nigbati awọn adanu jẹ akiyesi pupọ. Eyi yatọ si awọn imuse TCP. TLP tun gbejade nipataki soso ti o kẹhin (tabi tuntun, ti ọkan ba wa) lati ma nfa atunṣe ni iyara. Mimu awọn idaduro iru jẹ iwulo pataki fun ọna ti Uber n ṣiṣẹ nẹtiwọọki rẹ, eyun fun kukuru, lẹẹkọọkan, ati awọn gbigbe data ifamọ lairi.
  • Iṣapeye ACK. Niwọn igba ti apo-iwe kọọkan ni nọmba ọkọọkan alailẹgbẹ, ko si iṣoro awọn iyatọ awọn apo-iwe nigba ti won ti wa ni tun. Awọn apo-iwe ACK tun ni akoko lati ṣe ilana apo-iwe ati ṣe agbekalẹ ACK kan ni ẹgbẹ alabara. Awọn ẹya wọnyi rii daju pe QUIC ṣe iṣiro RTT ni deede diẹ sii. ACK ni QUIC ṣe atilẹyin to awọn ẹgbẹ 256 NACK, ṣe iranlọwọ fun olufiranṣẹ lati ni ifarabalẹ si ipadapọ apo ati lo awọn baiti diẹ ninu ilana naa. ACK ti o yan (APO) ni TCP ko yanju iṣoro yii ni gbogbo igba.
  • ijira asopọ. Awọn asopọ QUIC jẹ idanimọ nipasẹ ID 64-bit, nitorinaa ti alabara ba yipada awọn adirẹsi IP, ID asopọ atijọ le tẹsiwaju lati lo lori adiresi IP tuntun laisi idilọwọ. Eyi jẹ iṣe ti o wọpọ pupọ fun awọn ohun elo alagbeka nibiti olumulo n yipada laarin Wi-Fi ati awọn asopọ cellular.

Awọn yiyan si QUIC

A ṣe akiyesi awọn isunmọ omiiran lati yanju iṣoro naa ṣaaju yiyan QUIC.

Ohun akọkọ ti a gbiyanju ni lati ran awọn TPC PoPs (Awọn aaye ti Wiwa) lati fopin si awọn asopọ TCP ti o sunmọ awọn olumulo. Ni pataki, Awọn PoPs fopin si asopọ TCP kan pẹlu ẹrọ alagbeka kan ti o sunmọ nẹtiwọọki cellular ati aṣoju ijabọ pada si awọn amayederun atilẹba. Nipa fopin si TCP jo, a le ni agbara dinku RTT ati rii daju pe TCP jẹ idahun diẹ sii si agbegbe alailowaya ti o ni agbara. Sibẹsibẹ, awọn idanwo wa ti fihan pe pupọ julọ RTT ati pipadanu wa lati awọn nẹtiwọọki cellular ati lilo awọn PoPs ko pese ilọsiwaju iṣẹ ṣiṣe pataki.

A tun wo tuning TCP sile. Ṣiṣeto akopọ TCP kan lori awọn olupin eti oriṣiriṣi wa nira nitori TCP ni awọn imuse aibikita kọja awọn ẹya OS oriṣiriṣi. O nira lati ṣe eyi ati idanwo awọn atunto nẹtiwọọki oriṣiriṣi. Ṣiṣeto TCP taara lori awọn ẹrọ alagbeka ko ṣee ṣe nitori aini awọn igbanilaaye. Ni pataki julọ, awọn ẹya bii awọn asopọ 0-RTT ati asọtẹlẹ RTT ti o ni ilọsiwaju jẹ pataki si faaji ilana naa, ati nitorinaa ko ṣee ṣe lati ṣaṣeyọri awọn anfani pataki nipa yiyi TCP nikan.

Nikẹhin, a ṣe ayẹwo ọpọlọpọ awọn ilana ti o da lori UDP ti o yanju ṣiṣan fidio-a fẹ lati rii boya awọn ilana wọnyi yoo ṣe iranlọwọ ninu ọran wa. Laanu, wọn ṣe alaini pupọ ni ọpọlọpọ awọn eto aabo, ati pe wọn tun nilo asopọ TCP afikun fun metadata ati alaye iṣakoso.

Iwadi wa ti fihan pe QUIC jẹ boya ilana nikan ti o le ṣe iranlọwọ pẹlu iṣoro ti ijabọ Intanẹẹti, lakoko ti o ṣe akiyesi aabo mejeeji ati iṣẹ.

Ijọpọ ti QUIC sinu pẹpẹ

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.

Ipari QUIC lori Google Cloud Balancers

Ni ẹgbẹ ẹhin, ipari QUIC ti pese nipasẹ awọn amayederun iwọntunwọnsi Load Google Cloud, eyiti o lo alt-svc awọn akọle ni awọn idahun lati ṣe atilẹyin QUIC. Ni gbogbogbo, iwọntunwọnsi ṣafikun akọsori alt-svc kan si ibeere HTTP kọọkan, ati pe eyi ti fọwọsi atilẹyin QUIC tẹlẹ fun agbegbe naa. Nigbati alabara Cronet kan gba esi HTTP kan pẹlu akọsori yii, o nlo QUIC fun awọn ibeere HTTP ti o tẹle si agbegbe yẹn. Ni kete ti oniwọntunwọnsi ba pari QUIC, awọn amayederun wa fi iṣẹ yii ranṣẹ ni gbangba lori HTTP2/TCP si awọn ile-iṣẹ data wa.

Performance: Results

Iṣẹ iṣejade jẹ idi akọkọ fun wiwa wa fun ilana to dara julọ. Lati bẹrẹ pẹlu, a ṣẹda imurasilẹ pẹlu nẹtiwọki emulationlati wa bawo ni QUIC yoo ṣe huwa labẹ awọn profaili nẹtiwọki oriṣiriṣi. Lati ṣe idanwo iṣẹ QUIC lori awọn nẹtiwọọki gidi-aye, a ṣiṣẹ awọn idanwo lakoko wiwakọ ni ayika New Delhi ni lilo ijabọ nẹtiwọọki ti o jọra pupọ si awọn ipe HTTP ninu ohun elo ero ero.

Idanwo 1

Awọn ohun elo fun idanwo naa:

  • idanwo awọn ẹrọ Android pẹlu awọn akopọ OkHttp ati Cronet lati rii daju pe a gba laaye ijabọ HTTPS lori TCP ati QUIC ni atele;
  • olupin emulation orisun Java ti o firanṣẹ iru awọn akọle HTTPS kanna ni awọn idahun ati fifuye awọn ẹrọ alabara lati gba awọn ibeere lati ọdọ wọn;
  • awọn aṣoju awọsanma ti o wa ni ti ara ti o sunmọ India lati fopin si TCP ati awọn asopọ QUIC. Lakoko fun ifopinsi TCP a lo aṣoju yiyipada lori NGINX, o nira lati wa aṣoju yiyipada orisun ṣiṣi fun QUIC. A kọ aṣoju yiyipada fun QUIC funrara wa ni lilo akopọ QUIC ipilẹ lati Chromium ati atejade o sinu chromium bi ìmọ orisun.

Ilana QUIC ni iṣe: bawo ni Uber ṣe ṣe imuse rẹ lati mu iṣẹ ṣiṣe dara siIlana QUIC ni iṣe: bawo ni Uber ṣe ṣe imuse rẹ lati mu iṣẹ ṣiṣe dara si
Ṣe nọmba 6. TCP vs QUIC suite idanwo opopona ni awọn ẹrọ Android pẹlu OkHttp ati Cronet, awọn aṣoju awọsanma fun piparẹ awọn asopọ, ati olupin emulation.

Idanwo 2

Nigbati Google ṣe QUIC wa pẹlu Iwontunwonsi fifuye awọsanma Google, A lo ọja-itaja kanna, ṣugbọn pẹlu iyipada kan: dipo NGINX, a mu awọn iṣiro fifuye Google lati fopin si TCP ati awọn asopọ QUIC lati awọn ẹrọ, bakannaa lati ṣe ipa ọna HTTPS si olupin emulation. Awọn iwọntunwọnsi pin kaakiri agbaye, ṣugbọn lo olupin PoP ti o sunmọ ẹrọ naa (ọpẹ si agbegbe agbegbe).

Ilana QUIC ni iṣe: bawo ni Uber ṣe ṣe imuse rẹ lati mu iṣẹ ṣiṣe dara si
Ṣe nọmba 7. Ni idanwo keji, a fẹ lati ṣe afiwe ipari ipari ti TCP ati QUIC: lilo Google Cloud ati lilo aṣoju awọsanma wa.

Bi abajade, ọpọlọpọ awọn ifihan n duro de wa:

  • ifopinsi nipasẹ PoP ilọsiwaju iṣẹ TCP. Niwọn igba ti awọn iwọntunwọnsi fopin si awọn asopọ TCP ti o sunmọ awọn olumulo ati pe wọn ti ni iṣapeye gaan, eyi ni abajade ni awọn RTT kekere, eyiti o mu iṣẹ ṣiṣe TCP dara si. Ati pe botilẹjẹpe QUIC ko ni ipa diẹ, o tun ṣaju TCP ni awọn ofin ti idinku idaduro iru (nipasẹ 10-30 ogorun).
  • iru ti wa ni fowo nẹtiwọki hops. Botilẹjẹpe aṣoju QUIC wa siwaju lati awọn ẹrọ (bii 50 ms ti o ga julọ lairi) ju awọn iwọntunwọnsi fifuye Google, o ṣe jiṣẹ iru iṣẹ ṣiṣe - idinku 15% ni lairi dipo idinku 20% ni ipin 99th fun TCP. Eleyi ni imọran wipe awọn ti o kẹhin maili orilede ni a bottleneck ni awọn nẹtiwọki.

Ilana QUIC ni iṣe: bawo ni Uber ṣe ṣe imuse rẹ lati mu iṣẹ ṣiṣe dara siIlana QUIC ni iṣe: bawo ni Uber ṣe ṣe imuse rẹ lati mu iṣẹ ṣiṣe dara si
Nọmba 8: Awọn abajade lati awọn idanwo meji fihan pe QUIC ṣe pataki ju TCP lọ.

Ija ijabọ

Atilẹyin nipasẹ idanwo, a ti ṣe atilẹyin QUIC ninu awọn ohun elo Android ati iOS wa. A ṣe idanwo A/B lati pinnu ipa ti QUIC ni awọn ilu nibiti Uber n ṣiṣẹ. Ni gbogbogbo, a rii idinku nla ni awọn idaduro iru kọja awọn agbegbe mejeeji, awọn oniṣẹ tẹlifoonu ati iru nẹtiwọọki.

Awọn aworan ti o wa ni isalẹ ṣe afihan awọn ilọsiwaju ogorun ni iru (95 ati 99 ogorun) nipasẹ agbegbe Makiro ati awọn oriṣi nẹtiwọọki oriṣiriṣi - LTE, 3G, 2G.
Ilana QUIC ni iṣe: bawo ni Uber ṣe ṣe imuse rẹ lati mu iṣẹ ṣiṣe dara siIlana QUIC ni iṣe: bawo ni Uber ṣe ṣe imuse rẹ lati mu iṣẹ ṣiṣe dara si
Ṣe nọmba 9. Ni awọn idanwo ogun, QUIC ṣe itọsi TCP ni awọn ofin ti lairi.

Nikan siwaju

Boya eyi jẹ ibẹrẹ nikan - itusilẹ ti QUIC sinu iṣelọpọ ti pese awọn aye iyalẹnu lati ni ilọsiwaju iṣẹ ṣiṣe ohun elo ni mejeeji iduroṣinṣin ati awọn nẹtiwọọki riru, eyun:

Alekun agbegbe

Lẹhin ti ṣe itupalẹ iṣẹ ti ilana naa lori ijabọ gidi, a rii pe isunmọ 80% ti awọn akoko lo QUIC ni aṣeyọri fun всех awọn ibeere, lakoko ti 15% ti awọn akoko lo apapọ ti QUIC ati TCP. A ro pe apapo jẹ nitori akoko akoko ikawe Cronet ti o pada si TCP, nitori ko le ṣe iyatọ laarin awọn ikuna UDP gidi ati awọn ipo nẹtiwọọki ti ko dara. A n wa ojuutu lọwọlọwọ si iṣoro yii bi a ṣe n ṣiṣẹ si imuse atẹle ti QUIC.

Imudara QUIC

Ijabọ lati awọn ohun elo alagbeka jẹ ifarabalẹ lairi, ṣugbọn kii ṣe akiyesi bandiwidi. Paapaa, awọn ohun elo wa ni akọkọ lo lori awọn nẹtiwọọki cellular. Da lori awọn adanwo, awọn idaduro iru tun ga paapaa botilẹjẹpe lilo aṣoju lati fopin si TCP ati QUIC ti o sunmọ awọn olumulo. A n wa awọn ọna lati mu ilọsiwaju iṣuna pọ si ati imudara ṣiṣe ti awọn algoridimu imularada pipadanu QUIC.

Pẹlu iwọnyi ati ọpọlọpọ awọn ilọsiwaju miiran, a gbero lati ni ilọsiwaju iriri olumulo laibikita nẹtiwọọki ati agbegbe, ṣiṣe irọrun ati irinna soso ailẹgbẹ diẹ sii ni iraye si ni ayika agbaye.

orisun: www.habr.com

Fi ọrọìwòye kun