Il-protokoll QUIC fl-azzjoni: kif Uber implimentah biex jottimizza l-prestazzjoni

Il-protokoll QUIC huwa estremament interessanti biex tara, u huwa għalhekk li nħobbu niktbu dwaru. Imma jekk pubblikazzjonijiet preċedenti dwar QUIC kienu aktar ta 'natura storika (storja lokali, jekk tixtieq) u hardware, illum aħna kuntenti li nippubblikaw traduzzjoni ta' tip differenti - se nitkellmu dwar l-applikazzjoni reali tal-protokoll fl-2019. Barra minn hekk, mhux qed nitkellmu dwar infrastruttura żgħira bbażata f’hekk imsejjaħ garaxx, iżda dwar Uber, li topera kważi mad-dinja kollha. Kif l-inġiniera tal-kumpanija waslu għad-deċiżjoni li jużaw QUIC fil-produzzjoni, kif wettqu t-testijiet u dak li raw wara li ħarġu fil-produzzjoni - taħt il-qatgħa.

L-istampi jistgħu jiġu kklikkjati. Igawdu l-qari!

Il-protokoll QUIC fl-azzjoni: kif Uber implimentah biex jottimizza l-prestazzjoni

Uber għandha skala globali, jiġifieri 600 belt ta 'preżenza, li f'kull waħda minnhom l-applikazzjoni tiddependi kompletament fuq l-Internet mingħajr fili minn aktar minn 4500 operatur ċellulari. L-utenti jistennew li l-app tkun mhux biss veloċi, iżda f'ħin reali - biex jinkiseb dan, l-app Uber teħtieġ latenza baxxa u konnessjoni affidabbli ħafna. Alas, imma l-munzell HTTP / 2 ma jmurx tajjeb f'netwerks bla fili dinamiċi u suxxettibbli għat-telf. Irrealizzajna li f'dan il-każ, prestazzjoni baxxa hija direttament relatata mal-implimentazzjonijiet tat-TCP fil-kernels tas-sistema operattiva.

Biex issolvi l-problema, applikajna QUIC, protokoll modern tal-multiplexing tal-kanali li jagħtina aktar kontroll fuq il-prestazzjoni tal-protokoll tat-trasport. Bħalissa l-grupp ta' ħidma IETF tistandardizza QUIC bħala HTTP / 3.

Wara ttestjar estensiv, aħna kkonkludejna li l-implimentazzjoni ta 'QUIC fl-applikazzjoni tagħna tirriżulta f'latenzi aktar baxxi meta mqabbla ma' TCP. Aħna osservajna tnaqqis fil-medda ta '10-30% għat-traffiku HTTPS fl-applikazzjonijiet tas-sewwieq u tal-passiġġieri. QUIC tana wkoll kontroll minn tarf sa tarf fuq il-pakketti tal-utenti.

F'dan l-artikolu, naqsmu l-esperjenza tagħna fl-ottimizzazzjoni tat-TCP għall-applikazzjonijiet Uber billi tuża munzell li jappoġġja QUIC.

L-aħħar teknoloġija: TCP

Illum, TCP huwa l-aktar protokoll tat-trasport użat għat-twassil tat-traffiku HTTPS fuq l-Internet. TCP jipprovdi fluss affidabbli ta 'bytes, u b'hekk ilaħħaq mal-konġestjoni tan-netwerk u t-telf tas-saff tal-link. L-użu mifrux ta' TCP għat-traffiku HTTPS huwa dovut għall-ubikwità ta' l-ewwel (kważi kull OS fih TCP), disponibbiltà fuq il-biċċa l-kbira ta' l-infrastruttura (bħal load balancers, proxys HTTPS u CDNs), u funzjonalità out-of-the-box li hija disponibbli. kważi fuq il-biċċa l-kbira tal-pjattaformi u tan-netwerks.

Il-biċċa l-kbira tal-utenti jużaw l-app tagħna meta jkunu għaddejjin, u l-latenzi tad-denb tat-TCP ma kienu mkien qrib it-talbiet tat-traffiku HTTPS tagħna f'ħin reali. Fi kliem sempliċi, utenti madwar id-dinja esperjenzaw dan - Figura 1 turi dewmien fl-ibliet ewlenin:

Il-protokoll QUIC fl-azzjoni: kif Uber implimentah biex jottimizza l-prestazzjoni
Figura 1: Il-latenza tad-denb tvarja madwar l-ibliet ewlenin ta’ Uber.

Għalkemm il-latency fin-netwerks Indjani u Brażiljani kien ogħla milli fl-Istati Uniti u r-Renju Unit, il-latency tad-denb huwa sinifikament ogħla mill-medja tal-latency. U dan jgħodd anke għall-Istati Uniti u r-Renju Unit.

TCP over the air prestazzjoni

TCP inħoloq għal bil-fili netwerks, jiġifieri, b'enfasi fuq rabtiet prevedibbli ħafna. Madankollu, bla wajers in-netwerks għandhom il-karatteristiċi u d-diffikultajiet tagħhom stess. L-ewwel, in-netwerks bla fili huma suxxettibbli għal telf minħabba interferenza u attenwazzjoni tas-sinjal. Pereżempju, in-netwerks Wi-Fi huma sensittivi għal microwaves, bluetooth u mewġ tar-radju ieħor. Netwerks ċellulari jsofru minn telf tas-sinjal (triq mitlufa) minħabba riflessjoni/assorbiment tas-sinjal minn oġġetti u bini, kif ukoll minn interferenza mill-ġirien torrijiet taċ-ċelluli. Dan iwassal għal aktar sinifikanti (4-10 darbiet) u aktar diversa Ħin tal-Vaġġ Round (RTT) u telf ta 'pakketti meta mqabbla ma' konnessjoni bil-fili.

Biex jiġġieldu kontra ċ-ċaqliq u t-telf tal-bandwidth, in-netwerks ċellulari tipikament jużaw buffers kbar għall-fqigħ tat-traffiku. Dan jista' jwassal għal kju eċċessiv, li jfisser dewmien itwal. Ħafna drabi TCP tittratta dan il-kju bħala skart minħabba timeout estiż, għalhekk it-TCP għandu tendenza li jittrasmetti u b'hekk jimla l-buffer. Din il-problema hija magħrufa bħala bufferbloat (buffering eċċessiv tan-netwerk, buffer bloat), u dan huwa ħafna problema serja Internet modern.

Fl-aħħarnett, il-prestazzjoni tan-netwerk ċellulari tvarja skont it-trasportatur, ir-reġjun u l-ħin. Fil-Figura 2, aħna ġbarna d-dewmien medjan tat-traffiku HTTPS bejn iċ-ċelloli f'medda ta '2 kilometri. Dejta miġbura għal żewġ operaturi ċellulari ewlenin f'Delhi, l-Indja. Kif tistgħu taraw, il-prestazzjoni tvarja minn ċellola għal oħra. Ukoll, il-produttività ta 'operatur wieħed hija differenti mill-produttività tat-tieni. Dan huwa influwenzat minn fatturi bħall-mudelli tad-dħul fin-netwerk li jqisu l-ħin u l-post, il-mobilità tal-utent, kif ukoll l-infrastruttura tan-netwerk b'kont meħud tad-densità tat-torri u l-proporzjon tat-tipi tan-netwerk (LTE, 3G, eċċ.).

Il-protokoll QUIC fl-azzjoni: kif Uber implimentah biex jottimizza l-prestazzjoni
Figura 2. Dewmien bl-użu ta' raġġ ta' 2 km bħala eżempju. Delhi, l-Indja.

Ukoll, il-prestazzjoni tan-netwerks ċellulari tvarja maż-żmien. Il-Figura 3 turi l-latency medjan skont il-ġurnata tal-ġimgħa. Osservajna wkoll differenzi fuq skala iżgħar, f'ġurnata u siegħa waħda.

Il-protokoll QUIC fl-azzjoni: kif Uber implimentah biex jottimizza l-prestazzjoni
Figura 3. Id-dewmien tad-denb jista 'jvarja b'mod sinifikanti bejn il-jiem, iżda għall-istess operatur.

Kollha ta 'hawn fuq tikkawża li l-prestazzjoni tat-TCP tkun ineffettiva fin-netwerks mingħajr fili. Madankollu, qabel ma nfittxu alternattivi għal TCP, ridna niżviluppaw fehim preċiż dwar il-punti li ġejjin:

  • TCP huwa l-ħati prinċipali wara latenzi tad-denb fl-applikazzjonijiet tagħna?
  • In-netwerks moderni għandhom dewmien round-trip (RTT) sinifikanti u varjat?
  • X'inhu l-impatt tal-RTT u t-telf fuq il-prestazzjoni tat-TCP?

Analiżi tal-Prestazzjoni tat-TCP

Biex nifhmu kif analizzajna l-prestazzjoni tat-TCP, ejja nagħtu ħarsa malajr lejn kif TCP jittrasferixxi d-dejta minn mittent għal riċevitur. L-ewwel, il-mittent jistabbilixxi konnessjoni TCP, li jwettaq three-way handshake: Il-mittent jibgħat pakkett SYN, jistenna għal pakkett SYN-ACK mir-riċevitur, imbagħad jibgħat pakkett ACK. It-tieni u t-tielet pass addizzjonali jintefqu biex jistabbilixxu l-konnessjoni TCP. Ir-riċevitur jirrikonoxxi li rċieva kull pakkett (ACK) biex jiżgura kunsinna affidabbli.

Jekk jintilef pakkett jew ACK, il-mittent jerġa' jittrażmetti wara timeout (RTO, timeout ta' trażmissjoni mill-ġdid). L-RTO huwa kkalkulat dinamikament ibbażat fuq diversi fatturi, bħad-dewmien RTT mistenni bejn il-mittent u r-riċevitur.

Il-protokoll QUIC fl-azzjoni: kif Uber implimentah biex jottimizza l-prestazzjoni
Figura 4. Skambju ta 'pakketti fuq TCP/TLS jinkludi mekkaniżmu ta' trażmissjoni mill-ġdid.

Biex niddeterminaw kif TCP wettaq fl-applikazzjonijiet tagħna, aħna mmonitorjajna l-pakketti TCP bl-użu tcpdump għal ġimgħa fuq traffiku miġġielda li ġej minn servers edge Indjani. Aħna mbagħad analizzajna l-konnessjonijiet TCP bl-użu tcptrace. Barra minn hekk, ħloqna applikazzjoni Android li tibgħat traffiku emulat lil server tat-test, billi timita traffiku reali kemm jista 'jkun. Smartphones b’din l-applikazzjoni tqassmu lil diversi impjegati, li ġabru zkuk fuq diversi jiem.

Ir-riżultati taż-żewġ esperimenti kienu konsistenti ma 'xulxin. Rajna latenzi RTT għoljin; il-valuri tad-denb kienu kważi 6 darbiet ogħla mill-valur medjan; il-medja aritmetika tad-dewmien hija aktar minn sekonda. Ħafna konnessjonijiet kellhom telf, u kkawżaw li TCP jerġa' jittrażmetti 1% tal-pakketti kollha. F’żoni konġestjonati bħal ajruporti u stazzjonijiet tal-ferrovija, rajna telf ta’ 3,5%. Dawn ir-riżultati jitfgħu dubju fuq l-għerf konvenzjonali li dawk użati fin-netwerks ċellulari ċirkwiti avvanzati ta' trażmissjoni mill-ġdid tnaqqas b'mod sinifikanti t-telf fil-livell tat-trasport. Hawn taħt huma r-riżultati tat-test mill-applikazzjoni "simulatur":

Metriċi tan-netwerk
Valuri

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

Diverġenza RTT, sekondi
Bħala medja ~ 1,2 s

Telf tal-pakketti fuq konnessjonijiet instabbli
Medja ~3.5% (7% f'żoni mgħobbija żżejjed)

Kważi nofs dawn il-konnessjonijiet kellhom mill-inqas telf ta 'pakkett wieħed, ħafna minnhom pakketti SYN u SYN-ACK. Ħafna mill-implimentazzjonijiet TCP jużaw valur RTO ta 'sekonda 1 għall-pakketti SYN, li jiżdied b'mod esponenzjali għal telf sussegwenti. Il-ħinijiet tat-tagħbija tal-applikazzjoni jistgħu jiżdiedu minħabba li TCP jieħu aktar żmien biex jistabbilixxi l-konnessjonijiet.

Fil-każ ta 'pakketti ta' dejta, valuri RTO għoljin inaqqsu ħafna l-utilizzazzjoni utli tan-netwerk fil-preżenza ta 'telf temporanju f'netwerks mingħajr fili. Aħna sibna li l-ħin medju ta 'trażmissjoni mill-ġdid huwa madwar 1 sekonda b'dewmien tad-denb ta' kważi 30 sekonda. Dawn il-latenzi għoljin fil-livell TCP ikkawżaw timeouts u talbiet mill-ġdid HTTPS, u żiedu aktar il-latenza u l-ineffiċjenza tan-netwerk.

Filwaqt li l-75 perċentil ta 'RTT imkejjel kien ta' madwar 425 ms, il-75 perċentil għal TCP kien kważi 3 sekondi. Dan jagħti ħjiel li t-telf ikkawża li TCP jieħu 7-10 passes biex jittrasmetti b'suċċess id-data. Dan jista 'jkun konsegwenza ta' kalkolu RTO ineffiċjenti, inabbiltà ta 'TCP li jirrispondi malajr għat-telf l-aħħar pakketti fit-tieqa u l-ineffiċjenza tal-algoritmu tal-kontroll tal-konġestjoni, li ma jiddistingwix bejn telf mingħajr fili u telf minħabba konġestjoni tan-netwerk. Hawn taħt jinsabu r-riżultati tat-testijiet tat-telf tat-TCP:

Statistika tat-telf tal-pakketti TCP
Valur

Perċentwal ta' konnessjonijiet b'mill-inqas telf ta' pakkett wieħed
45%

Perċentwal ta' konnessjonijiet b'telf waqt is-setup tal-konnessjoni
30%

Perċentwal ta' konnessjonijiet b'telf waqt l-iskambju tad-dejta
76%

Distribuzzjoni ta' dewmien fit-trażmissjoni mill-ġdid, sekondi [50%, 75%, 95%,99%] [1, 2.8, 15, 28]

Distribuzzjoni tan-numru ta' trażmissjonijiet mill-ġdid għal pakkett wieħed jew segment TCP
[1,3,6,7]

Applikazzjoni ta' QUIC

Żviluppat oriġinarjament minn Google, QUIC huwa protokoll modern tat-trasport b'ħafna kamini li jimxi fuq UDP. Bħalissa QUIC jinsab fi proċess ta 'standardizzazzjoni (diġa ktibna li hemm, kif inhi, żewġ verżjonijiet tal-QUIC, kurjużi jistgħu jsegwu l-link – madwar. traduttur). Kif muri fil-Figura 5, QUIC jitqiegħed taħt HTTP/3 (fil-fatt, HTTP/2 fuq QUIC huwa HTTP/3, li issa qed jiġi standardizzat b'mod intensiv). Jissostitwixxi parzjalment is-saffi HTTPS u TCP billi juża UDP biex jifforma pakketti. QUIC jappoġġja biss trasferiment sigur tad-dejta peress li TLS huwa mibni bis-sħiħ f'QUIC.

Il-protokoll QUIC fl-azzjoni: kif Uber implimentah biex jottimizza l-prestazzjoni
Figura 5: QUIC jaħdem taħt HTTP/3, li jissostitwixxi TLS, li qabel kien jaħdem taħt HTTP/2.

Hawn taħt huma r-raġunijiet li kkonvinċuna biex nużaw QUIC għall-amplifikazzjoni TCP:

  • Stabbiliment ta' konnessjoni 0-RTT. QUIC jippermetti l-użu mill-ġdid tal-awtorizzazzjonijiet minn konnessjonijiet preċedenti, u jnaqqas in-numru ta 'handshakes tas-sigurtà. Fil-futur TLS1.3 se jappoġġja 0-RTT, iżda handshake TCP bi tliet direzzjonijiet xorta se jkun meħtieġ.
  • jegħleb l-imblukkar tal-HoL. HTTP/2 juża konnessjoni TCP waħda għal kull klijent biex itejjeb il-prestazzjoni, iżda dan jista 'jwassal għall-imblukkar ta' HoL (head-of-line). QUIC jissimplifika l-multiplexing u jagħti talbiet lill-applikazzjoni b'mod indipendenti.
  • kontroll tal-konġestjoni. QUIC jirrisjedi fis-saff tal-applikazzjoni, li jagħmilha aktar faċli biex taġġorna l-algoritmu tat-trasport ewlieni li jikkontrolla l-bgħit abbażi tal-parametri tan-netwerk (numru ta 'telf jew RTT). Ħafna mill-implimentazzjonijiet TCP jużaw l-algoritmu KUBIKU, li mhuwiex ottimali għal traffiku sensittiv għal-latency. Algoritmi żviluppati reċentement bħal BBR, timmudella b'mod aktar preċiż in-netwerk u tottimizza l-latenza. QUIC jippermettilek tuża BBR u taġġorna dan l-algoritmu kif jintuża. titjib.
  • riforniment tat-telf. QUIC isejjaħ żewġ TLPs (sonda tat-telf tad-denb) qabel ma jiġi attivat l-RTO - anki meta t-telf ikun notevoli ħafna. Dan huwa differenti mill-implimentazzjonijiet tat-TCP. TLP jerġa 'jitrażmetti prinċipalment l-aħħar pakkett (jew il-ġdid, jekk ikun hemm wieħed) biex iwassal għal riforniment mgħaġġel. L-immaniġġjar tad-dewmien tad-denb huwa partikolarment utli għall-mod kif Uber topera n-netwerk tagħha, jiġifieri għal trasferimenti ta’ data qosra, sporadiċi u sensittivi għal-latency.
  • ACK ottimizzat. Peress li kull pakkett għandu numru ta 'sekwenza uniku, m'hemm l-ebda problema distinzjonijiet pakketti meta jiġu trażmessi mill-ġdid. Il-pakketti ACK fihom ukoll ħin biex jipproċessaw il-pakkett u jiġġeneraw ACK fuq in-naħa tal-klijent. Dawn il-karatteristiċi jiżguraw li QUIC jikkalkula RTT b'mod aktar preċiż. ACK f'QUIC jappoġġja sa 256 band NACK, tgħin lill-mittent ikun aktar reżiljenti għat-tħaffir tal-pakketti u juża inqas bytes fil-proċess. ACK selettiv (XKARA) f'TCP ma ssolvix din il-problema fil-każijiet kollha.
  • migrazzjoni tal-konnessjoni. Il-konnessjonijiet QUIC huma identifikati b'ID ta '64-bit, għalhekk jekk klijent jibdel l-indirizzi IP, l-ID tal-konnessjoni l-antika tista' tkompli tintuża fuq l-indirizz IP ġdid mingħajr interruzzjoni. Din hija prattika komuni ħafna għal applikazzjonijiet mobbli fejn l-utent jaqleb bejn konnessjonijiet Wi-Fi u ċellulari.

Alternattivi għal QUIC

Aħna ikkunsidrajna approċċi alternattivi biex insolvu l-problema qabel ma għażilna QUIC.

L-ewwel ħaġa li ppruvajna kienet li niskjeraw TPC PoPs (Punti ta 'Preżenza) biex ittemmu konnessjonijiet TCP eqreb tal-utenti. Essenzjalment, il-PoPs itemmu konnessjoni TCP b'apparat mobbli eqreb għan-netwerk ċellulari u jipprokuraw it-traffiku lura għall-infrastruttura oriġinali. Billi ttemm it-TCP aktar mill-qrib, nistgħu potenzjalment innaqqsu l-RTT u niżguraw li TCP jirreaġixxi aktar għal ambjent dinamiku mingħajr fili. Madankollu, l-esperimenti tagħna wrew li ħafna mill-RTT u t-telf ġej minn netwerks ċellulari u l-użu ta 'PoPs ma jipprovdix titjib sinifikanti fil-prestazzjoni.

Ħaresna wkoll lejn l-irfinar tal-parametri TCP. It-twaqqif ta 'munzell TCP fuq is-servers edge eteroġenji tagħna kien diffiċli minħabba li t-TCP għandu implimentazzjonijiet differenti fil-verżjonijiet differenti tal-OS. Kien diffiċli li timplimenta dan u tittestja konfigurazzjonijiet tan-netwerk differenti. Il-konfigurazzjoni ta' TCP direttament fuq apparat mobbli ma kinitx possibbli minħabba nuqqas ta' permessi. Aktar importanti minn hekk, karatteristiċi bħal konnessjonijiet 0-RTT u tbassir RTT mtejba huma kritiċi għall-arkitettura tal-protokoll, u għalhekk huwa impossibbli li jinkisbu benefiċċji sinifikanti billi tirfina TCP waħdu.

Fl-aħħarnett, aħna evalwajna diversi protokolli bbażati fuq UDP li jsolvu l-problemi tal-istriming tal-vidjo—ridna naraw jekk dawn il-protokolli jgħinux fil-każ tagħna. Sfortunatament, kienu nieqsa ħafna f'ħafna settings tas-sigurtà, u kienu jeħtieġu wkoll konnessjoni TCP addizzjonali għall-metadata u l-informazzjoni ta 'kontroll.

Ir-riċerka tagħna wriet li QUIC huwa forsi l-uniku protokoll li jista’ jgħin fil-problema tat-traffiku tal-Internet, filwaqt li jqis kemm is-sigurtà kif ukoll il-prestazzjoni.

Integrazzjoni ta' QUIC fil-pjattaforma

Biex inkorporaw b'suċċess QUIC u ntejbu l-prestazzjoni tal-applikazzjoni f'ambjenti ta 'konnettività fqira, biddel il-munzell l-antik (HTTP/2 fuq TLS/TCP) bil-protokoll QUIC. Aħna użajna l-librerija tan-netwerk Cronet ta ' Proġetti tal-Kromju, li fiha l-verżjoni oriġinali, Google tal-protokoll - gQUIC. Din l-implimentazzjoni qed titjieb ukoll kontinwament biex issegwi l-aħħar speċifikazzjoni tal-IETF.

L-ewwel integrajna Cronet fl-apps Android tagħna biex inżidu l-appoġġ għal QUIC. L-integrazzjoni twettqet b'tali mod li jitnaqqsu kemm jista' jkun l-ispejjeż tal-migrazzjoni. Minflok tissostitwixxi kompletament il-munzell antik tan-netwerking li uża l-librerija OkHttp, integrajna Cronet TAĦT il-qafas OkHttp API. Billi għamilna l-integrazzjoni b'dan il-mod, evitajna bidliet fis-sejħiet tan-netwerk tagħna (li jintużaw minn Retrofit) fil-livell tal-API.

Simili għall-approċċ għal apparati Android, implimentajna Cronet f'apps Uber fuq iOS, interċettajna t-traffiku HTTP min-netwerk APIbl-użu NSURLProtocol. Din l-estrazzjoni, ipprovduta mill-Fondazzjoni tal-iOS, tieħu ħsieb id-dejta tal-URL speċifika għall-protokoll u tiżgura li nistgħu nintegraw Cronet fl-applikazzjonijiet tal-iOS tagħna mingħajr spejjeż sinifikanti ta’ migrazzjoni.

Tlestija ta' QUIC fuq Google Cloud Balancers

Fuq in-naħa ta’ backend, it-tlestija QUIC hija pprovduta mill-infrastruttura tal-ibbilanċjar tat-Tagħbija ta’ Google Cloud, li tuża alt-svc headers fi tweġibiet għall-appoġġ QUIC. B'mod ġenerali, il-balancer iżid header alt-svc għal kull talba HTTP, u dan diġà jivvalida l-appoġġ QUIC għad-dominju. Meta klijent Cronet jirċievi tweġiba HTTP b'din l-intestatura, juża QUIC għal talbiet HTTP sussegwenti għal dak id-dominju. Ladarba l-balancer itemm il-QUIC, l-infrastruttura tagħna espliċitament tibgħat din l-azzjoni fuq HTTP2/TCP liċ-ċentri tad-dejta tagħna.

Prestazzjoni: Riżultati

Il-prestazzjoni tal-output hija r-raġuni ewlenija għat-tfittxija tagħna għal protokoll aħjar. Biex tibda, ħloqna stand bih emulazzjoni tan-netwerkbiex issir taf kif QUIC se jġib ruħu taħt profili tan-netwerk differenti. Biex nittestjaw il-prestazzjoni ta' QUIC fuq netwerks tad-dinja reali, għamilna esperimenti waqt is-sewqan madwar New Delhi billi nużaw traffiku tan-netwerk emulat simili ħafna għal sejħiet HTTP fl-app tal-passiġġieri.

Esperiment 1

Tagħmir għall-esperiment:

  • ittestja apparati Android bi stacks OkHttp u Cronet biex niżguraw li nippermettu traffiku HTTPS fuq TCP u QUIC rispettivament;
  • server ta' emulazzjoni bbażat fuq Java li jibgħat l-istess tip ta' headers HTTPS fit-tweġibiet u jgħabbi tagħmir tal-klijenti biex jirċievi talbiet minnhom;
  • prokuri tas-sħab li jinsabu fiżikament qrib l-Indja biex itemmu konnessjonijiet TCP u QUIC. Filwaqt li għat-terminazzjoni tat-TCP użajna reverse proxy fuq NGINX, kien diffiċli li ssib reverse proxy ta' sors miftuħ għal QUIC. Bnejna prokura inversa għal QUIC aħna stess billi nużaw il-munzell bażiku QUIC minn Chromium u ippubblikat fil-kromju bħala sors miftuħ.

Il-protokoll QUIC fl-azzjoni: kif Uber implimentah biex jottimizza l-prestazzjoniIl-protokoll QUIC fl-azzjoni: kif Uber implimentah biex jottimizza l-prestazzjoni
Figura 6. Is-suite tat-test tat-triq TCP vs QUIC kienet tikkonsisti minn apparati Android b'OkHttp u Cronet, prokuri tas-sħab għat-terminazzjoni tal-konnessjonijiet, u server ta 'emulazzjoni.

Esperiment 2

Meta Google għamel QUIC disponibbli ma Google Cloud Load Balancing, użajna l-istess inventarju, iżda b'modifika waħda: minflok NGINX, ħadna Google load balancers biex ittemm il-konnessjonijiet TCP u QUIC minn apparati, kif ukoll biex inrotta t-traffiku HTTPS lejn is-server ta 'emulazzjoni. Balancers huma mqassma mad-dinja kollha, iżda jużaw is-server PoP l-eqreb tal-apparat (grazzi għall-ġeolokalizzazzjoni).

Il-protokoll QUIC fl-azzjoni: kif Uber implimentah biex jottimizza l-prestazzjoni
Figura 7. Fit-tieni esperiment, ridna nqabblu l-latency ta 'tlestija ta' TCP u QUIC: billi tuża Google Cloud u nużaw il-prokura tas-sħab tagħna.

Bħala riżultat, diversi rivelazzjonijiet jistennewna:

  • terminazzjoni permezz tal-PoP tejbet il-prestazzjoni tat-TCP. Peress li l-balancers itemmu konnessjonijiet TCP eqreb lejn l-utenti u huma ottimizzati ħafna, dan jirriżulta f'RTTs aktar baxxi, li jtejjeb il-prestazzjoni tat-TCP. U għalkemm QUIC kien inqas affettwat, xorta qabeż it-TCP f'termini ta 'tnaqqis tal-latenza tad-denb (b'10-30 fil-mija).
  • dnub huma affettwati ħops tan-netwerk. Għalkemm il-proxy QUIC tagħna kien aktar 'il bogħod mill-apparati (madwar 50 ms latenza ogħla) mill-load balancers ta' Google, wassal prestazzjoni simili - tnaqqis ta '15% fil-latency kontra tnaqqis ta' 20% fid-99 perċentil għal TCP. Dan jissuġġerixxi li t-tranżizzjoni tal-aħħar mil hija ostaklu fin-netwerk.

Il-protokoll QUIC fl-azzjoni: kif Uber implimentah biex jottimizza l-prestazzjoniIl-protokoll QUIC fl-azzjoni: kif Uber implimentah biex jottimizza l-prestazzjoni
Figura 8: Riżultati minn żewġ esperimenti juru li QUIC jaqbeż b'mod sinifikanti t-TCP.

Ġlieda kontra t-traffiku

Ispirati mill-esperimentazzjoni, implimentajna l-appoġġ QUIC fl-applikazzjonijiet tagħna Android u iOS. Għamilna testijiet A/B biex niddeterminaw l-impatt tal-QUIC fl-ibliet fejn topera Uber. B'mod ġenerali, rajna tnaqqis sinifikanti fid-dewmien tad-denb fiż-żewġ reġjuni, operaturi tat-telekomunikazzjoni u tip ta 'netwerk.

Il-graffs hawn taħt juru t-titjib perċentwali fid-denb (95 u 99 perċentili) skont il-makroreġjun u tipi ta' netwerk differenti - LTE, 3G, 2G.
Il-protokoll QUIC fl-azzjoni: kif Uber implimentah biex jottimizza l-prestazzjoniIl-protokoll QUIC fl-azzjoni: kif Uber implimentah biex jottimizza l-prestazzjoni
Figura 9. Fit-testijiet tal-battalja, QUIC qabeż lil TCP f'termini ta 'latency.

'Il quddiem biss

Forsi dan huwa biss il-bidu - ir-rilaxx ta 'QUIC fil-produzzjoni pprovda opportunitajiet aqwa biex tittejjeb il-prestazzjoni tal-applikazzjoni kemm f'netwerks stabbli kif ukoll mhux stabbli, jiġifieri:

Żieda fil-kopertura

Wara li analizzat il-prestazzjoni tal-protokoll fuq it-traffiku reali, rajna li madwar 80% tas-sessjonijiet użaw b'suċċess QUIC għal Kollha talbiet, filwaqt li 15% tas-sessjonijiet użaw taħlita ta’ QUIC u TCP. Aħna nassumu li l-kombinazzjoni hija dovuta għall-timeout tal-librerija Cronet lura lejn TCP, peress li ma tistax tiddistingwi bejn fallimenti UDP reali u kundizzjonijiet ħżiena tan-netwerk. Bħalissa qed infittxu soluzzjoni għal din il-problema hekk kif naħdmu lejn l-implimentazzjoni sussegwenti tal-QUIC.

ottimizzazzjoni QUIC

It-traffiku minn apps mobbli huwa sensittiv għal-latency, iżda mhux sensittiv għall-bandwidth. Ukoll, l-applikazzjonijiet tagħna jintużaw primarjament fuq netwerks ċellulari. Ibbażat fuq esperimenti, il-latencies tad-denb għadhom għoljin minkejja li tuża prokura biex ittemm TCP u QUIC qrib l-utenti. Qegħdin infittxu b'mod attiv modi kif intejbu l-ġestjoni tal-konġestjoni u ntejbu l-effiċjenza tal-algoritmi tal-irkupru tat-telf QUIC.

B'dan u bosta titjib ieħor, qed nippjanaw li ntejbu l-esperjenza tal-utent irrispettivament min-netwerk u r-reġjun, u nagħmlu trasport ta 'pakketti konvenjenti u bla xkiel aktar aċċessibbli madwar id-dinja.

Sors: www.habr.com

Żid kumment