Iprothokholi ye-QUIC iyasebenza: indlela u-Uber ayiphumeze ngayo ukuze kunyuswe ukusebenza

Iprotocol ye-QUIC inomdla kakhulu ukuyibukela, yiyo loo nto sikuthanda ukubhala ngayo. Kodwa ukuba iimpapasho zangaphambili malunga ne-QUIC zazininzi zembali (imbali yendawo, ukuba uyathanda) indalo kunye ne-hardware, namhlanje siyavuya ukupapasha ukuguqulelwa kolunye uhlobo - siza kuthetha malunga nokusetyenziswa kwangempela kweprotocol kwi-2019. Ngaphezu koko, asithethi malunga neziseko ezincinci ezisekelwe kwindawo ebizwa ngokuba yigaraji, kodwa malunga ne-Uber, esebenza phantse kwihlabathi jikelele. Iinjineli zenkampani ziye zafikelela njani kwisigqibo sokusebenzisa i-QUIC kwimveliso, indlela abaluqhuba ngayo uvavanyo kunye nento abayibonayo emva kokuyikhupha kwimveliso - ngaphantsi kokusikwa.

Imifanekiso iyacofa. Konwabele ukufunda!

Iprothokholi ye-QUIC iyasebenza: indlela u-Uber ayiphumeze ngayo ukuze kunyuswe ukusebenza

I-Uber inomlinganiselo wehlabathi jikelele, oko kukuthi, izixeko ezingama-600 zobukho, kuzo ngasinye isicelo sixhomekeke ngokupheleleyo kwi-intanethi engenazingcingo evela ngaphezu kwama-4500 abaqhubi beeselula. Abasebenzisi balindele ukuba i-app ingakhawulezi nje, kodwa ngexesha lokwenyani-ukufezekisa oku, i-app ka-Uber idinga ixesha eliphantsi kunye noqhagamshelo oluthembekileyo. Ewe, kodwa isitaki HTTP / 2 ayenzi kakuhle kuthungelwano oluguquguqukayo nolunelahleko olungenazingcingo. Siye saqaphela ukuba kule meko, ukusebenza okuphantsi kuhambelana ngokuthe ngqo nokuphunyezwa kwe-TCP kwii-kernel zenkqubo yokusebenza.

Ukusombulula ingxaki, siye safaka isicelo QUIC, i-protocol ye-multiplexing ye-channel yanamhlanje esinika ukulawula ngakumbi ekusebenzeni kweprotocol yezothutho. Okwangoku iqela elisebenzayo IETF ibeka emgangathweni iQUIC njenge HTTP / 3.

Emva kovavanyo olubanzi, sagqiba ekubeni ukuphumeza i-QUIC kwisicelo sethu kuya kubangela ukuba kubekho umsila ophantsi xa kuthelekiswa ne-TCP. Siqaphele ukucuthwa koluhlu lwe-10-30% yetrafikhi ye-HTTPS kumqhubi kunye nezicelo zabakhweli. I-QUIC ikwasinike ulawulo oluphelayo ukuya esiphelweni kwiiphakheji zabasebenzisi.

Kweli nqaku, sabelana ngamava ethu ekuphuculeni i-TCP kusetyenziso luka-Uber sisebenzisa isitakhi esixhasa i-QUIC.

Itekhnoloji yamva nje: TCP

Namhlanje, i-TCP yeyona ndlela isetyenziswayo yezothutho yokuhambisa i-HTTPS traffic kwi-Intanethi. I-TCP ibonelela ngomjelo othembekileyo wee-bytes, ngaloo ndlela uhlangabezana nokuxinana kwenethiwekhi kunye nokulahleka kwekhonkco. Ukusetyenziswa okuxhaphakileyo kwe-TCP ye-HTTPS yetrafikhi kungenxa yendawo yonke yangaphambili (phantse yonke i-OS iqulethe i-TCP), ukufumaneka kwiziseko ezininzi (ezifana nezilinganisi zomthwalo, i-HTTPS proxies kunye ne-CDNs), kunye nokusebenza ngaphandle kwebhokisi ekhoyo. phantse kumaqonga amaninzi kunye nothungelwano.

Uninzi lwabasebenzisi basebenzisa i-app yethu ekuhambeni, kwaye i-TCP tail latencies yayingekho ndawo kufutshane neemfuno zetrafikhi ye-HTTPS yexesha lokwenyani. Ukubeka ngokulula, abasebenzisi kwihlabathi liphela baye bafumana oku - Umfanekiso 1 ubonisa ukulibaziseka kwizixeko ezikhulu:

Iprothokholi ye-QUIC iyasebenza: indlela u-Uber ayiphumeze ngayo ukuze kunyuswe ukusebenza
Umfanekiso 1: Ukubambezeleka komsila kuyehluka kuzo zonke izixeko eziphambili zika-Uber.

Nangona i-latency kwiinethiwekhi zaseIndiya naseBrazil zaziphezulu kune-US ne-UK, ukubambezeleka komsila kuphezulu kakhulu kune-latency ephakathi. Kwaye oku kuyinyani nakwi-US ne-UK.

TCP phezu ukusebenza emoyeni

I-TCP yenzelwe intambo uthungelwano, oko kukuthi, ngogxininiso kuqhagamshelo oluqikelelwayo kakhulu. Nangona kunjalo, wireless uthungelwano baneempawu zabo kunye nobunzima. Okokuqala, iinethiwekhi ezingenazingcingo zisengozini yelahleko ngenxa yokuphazamiseka kunye nokunciphisa umqondiso. Umzekelo, uthungelwano lwe-Wi-Fi lunovakalelo kwii-microwaves, ibluetooth kunye namanye amaza erediyo. Uthungelwano lweSelula lunengxaki yokulahleka komqondiso (indlela elahlekileyo) ngenxa yokubonakalisa / ukufunxwa komqondiso ngezinto kunye nezakhiwo, kunye nokusuka ukuphazamiseka ukusuka ebumelwaneni iinqaba zeseli. Oku kukhokelela ekubalulekeni ngakumbi (i-4-10 amaxesha) kunye neentlobo ezahlukeneyo Ixesha lohambo olujikelezayo (RTT) kunye nokulahleka kwepakethi xa kuthelekiswa noqhagamshelo oluneentambo.

Ukulwa nokuguquguquka kwe-bandwidth kunye nelahleko, iinethiwekhi zeselula zihlala zisebenzisa izithinteli ezinkulu zokugqabhuka kwetrafikhi. Oku kunokukhokelela emgceni ngokugqithisileyo, okuthetha ukulibaziseka okude. Rhoqo i-TCP ithatha oku kufola njengenkunkuma ngenxa yexesha elongeziweyo, ngoko ke i-TCP ithande ukugqithisela kwaye ngokwenza njalo igcwalise isithinteli. Le ngxaki yaziwa ngokuba ibufferbloat (ibuffering yenethiwekhi egqithisileyo, buffer bloat), kwaye oku kakhulu ingxaki enkulu I-intanethi yanamhlanje.

Ekugqibeleni, ukusebenza kwenethiwekhi yeselula kuyahluka ngokuthwala, ummandla kunye nexesha. Kumfanekiso wesi-2, siqokelele ukulibaziseka okuphakathi kwe-HTTPS yetrafikhi kuzo zonke iiseli ngaphakathi koluhlu lweekhilomitha ezi-2. Idatha eqokelelwe kubaqhubi abakhulu beeselula eDelhi, eIndiya. Njengoko ubona, ukusebenza kuyahluka ukusuka kwiseli ukuya kwiseli. Kwakhona, ukuveliswa komsebenzi omnye kuyahluka kwimveliso yesibini. Oku kuphenjelelwa yimiba efana neepatheni zokungena kwinethiwekhi ethathela ingqalelo ixesha kunye nendawo, ukuhamba komsebenzisi, kunye neziseko zophuhliso zenethiwekhi ezithathela ingqalelo uxinaniso lweenqaba kunye nomlinganiselo weentlobo zenethiwekhi (LTE, 3G, njl.).

Iprothokholi ye-QUIC iyasebenza: indlela u-Uber ayiphumeze ngayo ukuze kunyuswe ukusebenza
Umzobo 2. Ulibaziseko usebenzisa i-2 km radius njengomzekelo. eDelhi, eIndiya.

Kwakhona, ukusebenza kweenethiwekhi zeselula kuyahluka ngokuhamba kwexesha. Umzobo 3 ubonisa ukubambezeleka okuphakathi ngosuku lweveki. Kwakhona siye saphawula iiyantlukwano ngokomlinganiselo omncinane, kwimini enye nangeyure enye.

Iprothokholi ye-QUIC iyasebenza: indlela u-Uber ayiphumeze ngayo ukuze kunyuswe ukusebenza
Umzobo 3. Ukulibaziseka komsila kunokuhluka kakhulu phakathi kweentsuku, kodwa kumqhubi ofanayo.

Konke oku kungasentla kubangela ukuba ukusebenza kwe-TCP kungasebenzi kwiinethiwekhi ezingenazingcingo. Nangona kunjalo, ngaphambi kokuba sijonge ezinye iindlela ze-TCP, besifuna ukuphuhlisa ukuqonda okuchanekileyo kwezi ngongoma zilandelayo:

  • ngaba i-TCP ngoyena nobangela wokubambezeleka komsila kwizicelo zethu?
  • Ngaba uthungelwano lwale mihla lunolibaziseko olubalulekileyo noluhlukeneyo lokuya nokubuya (RTT)?
  • Yintoni impembelelo ye-RTT kunye nelahleko ekusebenzeni kwe-TCP?

Uhlalutyo lweNtsebenzo ye-TCP

Ukuqonda indlela esihlalutye ngayo ukusebenza kwe-TCP, makhe sijonge ngokukhawuleza ukuba i-TCP idlulisela njani idatha ukusuka kumthumeli ukuya kumamkeli. Okokuqala, umthumeli useka uxhumano lwe-TCP, ukwenza iindlela ezintathu ukuxhawula isandla: Umthumeli uthumela ipakethe ye-SYN, ulinde ipakethe ye-SYN-ACK kummkeli, emva koko uthumele ipakethi ye-ACK. Ukupasa okwesibini kunye neyesithathu okongezelelweyo kuchithwa ukuseka uxhumano lwe-TCP. Ummkeli uyavuma ukufumana ipakethe nganye (ACK) ukuqinisekisa ukuhanjiswa okuthembekileyo.

Ukuba ipakethe okanye i-ACK ilahlekile, umthumeli uthumela kwakhona emva kwexesha lokuphuma (RTO, ukugqithisela ixesha lokuvala). I-RTO ibalwa ngokutshintshayo ngokusekelwe kwizinto ezahlukeneyo, ezifana nokulibaziseka kwe-RTT elindelekileyo phakathi komthumeli kunye nomamkeli.

Iprothokholi ye-QUIC iyasebenza: indlela u-Uber ayiphumeze ngayo ukuze kunyuswe ukusebenza
Umzobo 4. Utshintshiselwano lwepakethi phezu kwe-TCP / TLS iquka indlela yokubuyisela kwakhona.

Ukufumanisa ukuba i-TCP isebenze njani kwizicelo zethu, sibeke iliso kwiipakethi ze-TCP sisebenzisa wcpdump kangangeveki kwitrafikhi yokulwa evela kwiiseva zase-Indian edge. Emva koko sihlalutye uxhulumaniso lwe-TCP sisebenzisa tcptrace. Ukongeza, senze usetyenziso lwe-Android oluthumela itrafikhi efanisiweyo kwiseva yovavanyo, sixelisa itrafikhi yokwenyani kangangoko kunokwenzeka. Ii-smartphones ezinesi sicelo zasasazwa kubasebenzi abaninzi, abaqokelele izingodo kwiintsuku ezininzi.

Iziphumo zovavanyo zombini zazihambelana enye kwenye. Sabona ukubambezeleka okuphezulu kwe-RTT; amaxabiso omsila ayephantse abe ngama-6 aphezulu kunexabiso eliphakathi; umyinge we-arithmetic wokulibaziseka ungaphezulu kwe-1 yesibini. Unxibelelwano oluninzi lwalulahlekile, lubangela ukuba i-TCP iphinde ithumele i-3,5% yazo zonke iipakethi. Kwiindawo ezixineneyo ezifana nezikhululo zeenqwelo moya kunye nezikhululo zikaloliwe, sibone ilahleko eyi-7%. Ezi ziphumo zenza ukuthandabuza kubulumko obuqhelekileyo obusetyenziswa kuthungelwano lweselula iisekethe zokudluliselwa phambili ukunciphisa kakhulu ilahleko kwinqanaba lezothutho. Ngezantsi ziziphumo zovavanyo kwisicelo "sesilinganisi":

Uthungelwano metrics
Iimpawu zentsulungeko

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

Ukwahlukana kwe-RTT, imizuzwana
Ngokomyinge ~1,2 s

Ilahleko yepakethi kuqhagamshelwano olungazinzanga
I-avareji ~ 3.5% (7% kwiindawo ezigcwele kakhulu)

Phantse isiqingatha solu qhagamshelo ubuncinci belahleko yepakethe enye, uninzi lwazo SYN kunye neepakethi zeSYN-ACK. Uninzi lweenkqubo ze-TCP zisebenzisa ixabiso le-RTO le-1 yesibini kwiipakethi ze-SYN, ezinyuka ngokukhawuleza kwiilahleko ezilandelayo. Amaxesha okulayishwa kwesicelo anokonyuka ngenxa yokuba i-TCP ithatha ixesha elide ukuseka imidibaniso.

Kwimeko yeepakethi zedatha, amaxabiso aphezulu e-RTO anciphisa kakhulu ukusetyenziswa okuluncedo kwenethiwekhi kubukho belahleko yexeshana kwiinethiwekhi ezingenazingcingo. Sifumene ukuba umyinge wokudluliselwa kwexesha malunga nesekondi enye kunye nokulibaziseka komsila malunga nemizuzwana engama-1. Ezi ntsuku ziphakamileyo kwizinga le-TCP zibangele ukuphelelwa kwexesha kwe-HTTPS kunye nokucela kwakhona, ngokuqhubekayo ukwandisa i-latency yenethiwekhi kunye nokungasebenzi kakuhle.

Ngoxa i-75 yepesenti ye-RTT elinganisiweyo yayijikeleze i-425 ms, ipesenti ye-75 ye-TCP yayiphantse ibe yi-3 imizuzwana. Oku kubonisa ukuba ilahleko yabangela ukuba i-TCP ithathe i-7-10 yokupasa ukuhambisa idatha ngempumelelo. Oku kunokuba sisiphumo sokubala kwe-RTO engasebenziyo, ukungakwazi kwe-TCP ukuphendula ngokukhawuleza kwilahleko. iipakethe zamva nje kwifestile kunye nokungasebenzi kakuhle kwe-algorithm yokulawula ukuxinana, engakwazi ukwahlula phakathi kwelahleko ezingenazintambo kunye nelahleko ngenxa yokuxinana kwenethiwekhi. Ngezantsi ziziphumo zovavanyo lwelahleko ye-TCP:

Iinkcukacha-manani zokulahleka kwepakethi ye-TCP
Nentsingiselo

Ipesenti yoqhagamshelo ubuncinane kunye nelahleko yepakethi e-1
45%

Ipesenti yoqhagamshelo kunye neelahleko ngexesha lokuseta uqhagamshelo
30%

Ipesenti yoqhagamshelwano kunye nelahleko ngexesha lokutshintshiselana kwedatha
76%

Ukusasazwa kokulibaziseka kwi-retransmission, imizuzwana [50%, 75%, 95%,99%] [1, 2.8, 15, 28]

Ukuhanjiswa kwenani lokuthunyelwa kwakhona kwepakethi enye okanye icandelo le-TCP
[1,3,6,7]

Ukusetyenziswa kwe-QUIC

Ekuqaleni iphuhliswe nguGoogle, i-QUIC yiprotocol yezothutho yanamhlanje enemisonto emininzi ehamba phezulu kwe-UDP. Ngoku i-QUIC ingenile inkqubo yokubeka emgangathweni (sele sibhale ukuba kukho, njengokuba kunjalo, iinguqulelo ezimbini ze-QUIC, ezinomdla inokulandela ikhonkco – malunga. umguquleli). Njengoko kuboniswe kwi-Figure 5, i-QUIC ifakwe phantsi kwe-HTTP / 3 (eqinisweni, i-HTTP / 2 phezulu kwe-QUIC yi-HTTP / 3, ngoku igxininiswe ngokusemgangathweni). Ithatha indawo ye-HTTPS kunye ne-TCP iileya ngokusebenzisa i-UDP ukwenza iipakethi. I-QUIC ixhasa kuphela ugqithiso lwedatha olukhuselekileyo njengoko i-TLS yakhelwe ngokupheleleyo kwi-QUIC.

Iprothokholi ye-QUIC iyasebenza: indlela u-Uber ayiphumeze ngayo ukuze kunyuswe ukusebenza
Umzobo 5: I-QUIC isebenza phantsi kwe-HTTP/3, ithatha indawo ye-TLS, eyayisebenza ngaphambili phantsi kwe-HTTP/2.

Ngezantsi zizizathu eziye zasiqinisekisa ukuba sisebenzise i-QUIC yokwandisa i-TCP:

  • 0-RTT ukusekwa koqhagamshelwano. I-QUIC ivumela ukuphinda kusetyenziswe izigunyaziso ezivela kuqhagamshelo lwangaphambili, ukunciphisa inani lokuxhawula izandla ngokhuseleko. Kwixesha elizayo TLS1.3 iya kuxhasa i-0-RTT, kodwa ukuxhawula ngesandla kwe-TCP ngeendlela ezintathu kusafuneka.
  • ukoyisa ukuvalela kweHoL. I-HTTP / 2 isebenzisa uxhumano olulodwa lwe-TCP kumxhasi ngamnye ukuphucula ukusebenza, kodwa oku kunokukhokelela kwi-HoL (intloko-ye-line) yokuthintela. I-QUIC yenza lula ukuphindaphinda kwaye ithumele izicelo kwisicelo ngokuzimeleyo.
  • ulawulo lokuxinana. I-QUIC ihlala kwinqanaba lesicelo, okwenza kube lula ukuhlaziya i-algorithm yezothutho eziphambili ezilawula ukuthumela ngokusekelwe kwiiparamitha zenethiwekhi (inani lelahleko okanye i-RTT). Uninzi lweenkqubo ze-TCP zisebenzisa i-algorithm ICUBIC, engafanelekanga kwi-latency-sensitive traffic. Ii-algorithms ezisanda kuphuhliswa njenge I-BBR, ngokuchanekileyo ngakumbi imodeli yenethiwekhi kunye nokwandisa ukubambezeleka. I-QUIC ikuvumela ukuba usebenzise i-BBR kwaye uhlaziye le algorithm njengoko isetyenziswa. ukuphuculwa.
  • ukuzaliswa kwelahleko. I-QUIC ibiza ii-TLP ezimbini (ilahleko umsila probe) ngaphambi kokuba i-RTO iqalise - nangona ilahleko ibonakala kakhulu. Oku kwahlukile ekuphunyezweni kwe-TCP. I-TLP ithumela kwakhona ubukhulu becala ipakethe yokugqibela (okanye entsha, ukuba kukho enye) ukuvusa ukuzaliswa ngokukhawuleza. Ukuphatha ukulibaziseka komsila kubaluleke kakhulu kwindlela u-Uber asebenzisa ngayo uthungelwano, oko kukuthi, ugqithiso lwedatha olufutshane, olunqabileyo, kunye nolunovakalelo.
  • i-ACK ephuculweyo. Ekubeni ipakethe nganye inenombolo eyodwa yolandelelwano, akukho ngxaki iiyantlukwano iipakethi xa zithunyelwa kwakhona. Iipakethi ze-ACK zikwaqulethe ixesha lokucwangcisa ipakethi kunye nokuvelisa i-ACK kwicala lomxhasi. Ezi mpawu ziqinisekisa ukuba i-QUIC ibala i-RTT ngokuchanekileyo ngakumbi. I-ACK kwi-QUIC ixhasa ukuya kuthi ga kwi-256 bands I-NACK, ukunceda umthumeli ukuba axhathise ngakumbi kwipakethi yokushixa kwaye asebenzise iibyte ezimbalwa kwinkqubo. Ekhethiweyo ACK (Isaka) kwi-TCP ayisombululi le ngxaki kuzo zonke iimeko.
  • ukufuduka koqhagamshelwano. Uxhulumaniso lwe-QUIC luchongwa nge-ID ye-64-bit, ngoko ke ukuba umxhasi utshintsha iidilesi ze-IP, i-ID yoqhagamshelwano endala ingaqhubeka isetyenziswa kwidilesi ye-IP entsha ngaphandle kokuphazamiseka. Oku kuqheleke kakhulu kwizicelo eziphathwayo apho umsebenzisi atshintshela phakathi kwe-Wi-Fi kunye noqhagamshelo lweselula.

Ezezinye kwi-QUIC

Sithathele ingqalelo ezinye iindlela zokusombulula ingxaki phambi kokukhetha i-QUIC.

Into yokuqala esiyizamayo yayikukuthumela ii-TPC PoPs (Amanqaku oBukho) ukuphelisa uxhulumaniso lwe-TCP kufutshane nabasebenzisi. Ngokusisiseko, ii-PoPs ziphelisa uqhagamshelo lwe-TCP kunye nesixhobo esiphathwayo esikufutshane nenethiwekhi yeselula kunye ne-proxy i-traffic ebuyela kwiziseko zokuqala. Ngokuphelisa i-TCP ngokusondeleyo, sinako ukunciphisa i-RTT kwaye siqinisekise ukuba i-TCP iphendula ngakumbi kwimo engqongileyo engenazingcingo. Nangona kunjalo, iimvavanyo zethu zibonise ukuba ininzi ye-RTT kunye nelahleko ivela kwiinethiwekhi zeselula kunye nokusetyenziswa kwe-PoPs ayiboneleli ukuphuculwa komsebenzi obalulekileyo.

Siphinde sajonga i-TCP parameters. Ukuseta isitaki se-TCP kwiiseva zethu ezinqamlezileyo ze-edge bekunzima kuba i-TCP inophumezo olwahlukeneyo kwiinguqulelo ezahlukeneyo ze-OS. Kwakunzima ukuphumeza oku kunye nokuvavanya ubumbeko bothungelwano olwahlukileyo. Ukuqwalasela i-TCP ngokuthe ngqo kwizixhobo eziphathwayo kwakungenakwenzeka ngenxa yokungabikho kweemvume. Okubaluleke ngakumbi, iimpawu ezifana noqhagamshelo lwe-0-RTT kunye nokuqikelelwa okuphuculweyo kwe-RTT zibalulekile kulwakhiwo lweprotocol, kwaye ngenxa yoko akunakwenzeka ukufezekisa izibonelelo ezibalulekileyo ngokulungisa i-TCP yodwa.

Okokugqibela, siye savavanya iiprothokholi ezininzi ezisekwe kwi-UDP ezilungisa usasazo lwevidiyo-besifuna ukubona ukuba ezi migaqo ziya kunceda na kwimeko yethu. Ngelishwa, babenqongophele kakhulu kwizicwangciso ezininzi zokhuseleko, kwaye bafuna uxhulumaniso olongezelelweyo lwe-TCP yemethadatha kunye nolwazi lokulawula.

Uphando lwethu lubonise ukuba i-QUIC mhlawumbi yodwa iprotocol enokunceda ingxaki ye-intanethi ye-intanethi, ngelixa ithathela ingqalelo ukhuseleko kunye nokusebenza.

Ukudityaniswa kwe-QUIC kwiqonga

Ukuzinzisa ngempumelelo i-QUIC kunye nokuphucula usetyenziso lwenkqubo kwiindawo zoqhagamshelo olulambathayo, sitshintshe isitaki esidala (HTTP/2 ngaphezulu kwe-TLS/TCP) nge-QUIC protocol. Sasebenzisa ithala leencwadi lenethiwekhi I-Cronet ΠΈΠ· IiProjekthi zeChromium, equlethe imvelaphi, inguqulelo kaGoogle yeprotocol - gQUIC. Olu phunyezo lusoloko luphuculwa ukulandela inkcazo ye-IETF yamva nje.

Siqale sadibanisa iCronet kwiiapps zethu ze-Android ukongeza inkxaso ye-QUIC. Ukuhlanganiswa kwenziwa ngendlela yokunciphisa iindleko zokufuduka kangangoko kunokwenzeka. Endaweni yokutshintsha ngokupheleleyo isitakhi esidala sothungelwano ebesisebenzisa ithala leencwadi OkHttp, sidibanise iCronet PHANTSI kwe-OkHttp API isakhelo. Ngokwenza udibaniso ngale ndlela, sithintele utshintsho kwiifowuni zethu zenethiwekhi (ezisetyenziswa yi Yenza kwakhona) kwinqanaba le-API.

Ngokufana nendlela yezixhobo ze-Android, siphumeze iCronet kwi-Uber apps kwi-iOS, sithintela i-HTTP traffic kwinethiwekhi. APIusebenzisa NSURLProtocol. Olu thatho, olubonelelwa yi-iOS Foundation, luphatha idatha ye-URL yeprotocol kwaye iqinisekisa ukuba sinokudibanisa iCronet kwizicelo zethu ze-iOS ngaphandle kweendleko ezinkulu zokufuduka.

Ukugqiba i-QUIC kwi-Google Cloud Balancers

Kwi-backend side, ukugqitywa kwe-QUIC kunikezelwa yi-Google Cloud Load balancing infrastructure, esebenzisa i-alt-svc iiheader kwiimpendulo zokuxhasa iQUIC. Ngokubanzi, ibhalansi yongeza i-alt-svc i-header kwisicelo ngasinye se-HTTP, kwaye oku sele kuqinisekisa inkxaso ye-QUIC yesizinda. Xa umxhasi weCronet efumana impendulo yeHTTP ngale ntloko, isebenzisa iQUIC kwizicelo ezilandelayo zeHTTP kulo thambeka. Nje ukuba ibhalansi igqibe i-QUIC, isiseko sethu sithumela ngokucacileyo esi senzo nge-HTTP2/TCP kumaziko ethu edatha.

Intsebenzo: Iziphumo

Ukusebenza kwemveliso sesona sizathu siphambili sokukhangela iprotocol engcono. Ukuqala, sidale ukuma kunye ukulinganisa kwinethiwekhiukufumanisa ukuba i-QUIC iyakuziphatha njani phantsi kweeprofayile zothungelwano ezahlukeneyo. Ukuvavanya ukusebenza kwe-QUIC kuthungelwano lwehlabathi lokwenyani, siye saqhuba imifuniselo ngelixa sijikeleza eNew Delhi sisebenzisa itrafikhi elinganisiweyo yenethiwekhi efana kakhulu neminxeba ye-HTTP kwi-app yabakhweli.

Uvavanyo loku-1

Izixhobo zovavanyo:

  • vavanya izixhobo ze-Android ezine-OkHttp kunye ne-Cronet stacks ukuqinisekisa ukuba sivumela i-HTTPS yetrafikhi ngaphezulu kwe-TCP kunye ne-QUIC ngokulandelelanayo;
  • iseva yokulinganisa esekwe kwiJava ethumela uhlobo olufanayo lweentloko zeHTTPS kwiimpendulo kunye nokulayisha izixhobo zabaxhasi ukufumana izicelo kubo;
  • iiproxies zamafu ezibekwe ngokwasemzimbeni kufutshane neIndiya ukuphelisa unxibelelwano lwe-TCP kunye ne-QUIC. Ngelixa ukupheliswa kwe-TCP sisebenzise i-proxy ebuyela umva NGINX, bekunzima ukufumana umthombo ovulekileyo obuyela umva we-QUIC. Sakhe umva ummeli we-QUIC ngokwethu sisebenzisa isitakhi se-QUIC esisisiseko esivela kwiChromium kunye ipapashiwe ibe kwichromium njengomthombo ovulekileyo.

Iprothokholi ye-QUIC iyasebenza: indlela u-Uber ayiphumeze ngayo ukuze kunyuswe ukusebenzaIprothokholi ye-QUIC iyasebenza: indlela u-Uber ayiphumeze ngayo ukuze kunyuswe ukusebenza
Umzobo 6. I-TCP vs QUIC yovavanyo lwendlela yendlela yayiquka izixhobo ze-Android ezine-OkHttp kunye neCronet, iiproxies zefu zokuphelisa uxhulumaniso, kunye neseva yokulinganisa.

Uvavanyo loku-2

Xa uGoogle enze iQUIC ifumaneke nge ILifu likaGoogle lokuLawulwa kweBalancing, sasebenzisa uluhlu olufanayo, kodwa ngokuguqulwa okukodwa: endaweni ye-NGINX, sithathe i-balancers yomthwalo we-Google ukuphelisa uxhulumaniso lwe-TCP kunye ne-QUIC kwizixhobo, kunye nomzila we-HTTPS we-traffic kwi-server yokulinganisa. Izilinganisi zisasazwe kwihlabathi liphela, kodwa sebenzisa iseva yePoP ekufutshane nesixhobo (enkosi kwi-geolocation).

Iprothokholi ye-QUIC iyasebenza: indlela u-Uber ayiphumeze ngayo ukuze kunyuswe ukusebenza
Umzobo 7. Kuvavanyo lwesibini, sifuna ukuthelekisa ukugqitywa kwe-TCP kunye ne-QUIC: ukusebenzisa i-Google Cloud kunye nokusebenzisa i-proxy yethu yefu.

Ngenxa yoko, silindele izityhilelo ezininzi:

  • ukupheliswa nge-PoP kuphuculwe ukusebenza kwe-TCP. Ekubeni i-balancers iphelisa uxhulumaniso lwe-TCP olusondeleyo kubasebenzisi kwaye luphuculwe kakhulu, oku kubangela ii-RTT eziphantsi, eziphucula ukusebenza kwe-TCP. Kwaye nangona i-QUIC yayingachaphazeleki kangako, isaqhubela phambili i-TCP ngokwemiqathango yokunciphisa i-latency yomsila (nge-10-30 ekhulwini).
  • imisila iyachaphazeleka iihops zenethiwekhi. Nangona i-proxy yethu ye-QUIC yayingaphezulu kwizixhobo (malunga ne-50 ms ephezulu latency) kune-balancers yomthwalo we-Google, yazisa ukusebenza okufanayo - ukuncipha kwe-15% kwi-latency ngokuchasene ne-20% yokunciphisa i-99th percentile ye-TCP. Oku kuphakamisa ukuba utshintsho lweemayile lokugqibela luyi-bottleneck kwinethiwekhi.

Iprothokholi ye-QUIC iyasebenza: indlela u-Uber ayiphumeze ngayo ukuze kunyuswe ukusebenzaIprothokholi ye-QUIC iyasebenza: indlela u-Uber ayiphumeze ngayo ukuze kunyuswe ukusebenza
Umzobo 8: Iziphumo ezivela kwiimvavanyo ezimbini zibonisa ukuba i-QUIC idlula kakhulu i-TCP.

Ukulwa itrafikhi

Ngokukhuthazwa luvavanyo, siphumeze inkxaso ye-QUIC kwi-Android kunye ne-iOS yethu yosetyenziso. Senze uvavanyo lwe-A/B ukufumanisa ifuthe le-QUIC kwizixeko apho u-Uber esebenza khona. Ngokubanzi, sibone ukuncitshiswa okubonakalayo kokulibaziseka komsila kuyo yonke imimandla yomibini, abaqhubi be-telecom kunye nohlobo lwenethiwekhi.

Iigrafu ezingezantsi zibonisa ukuphuculwa kweepesenti kwimisila (95 kunye ne-99 yeepesenti) nge-macro-region kunye neentlobo ezahlukeneyo zenethiwekhi - i-LTE, i-3G, i-2G.
Iprothokholi ye-QUIC iyasebenza: indlela u-Uber ayiphumeze ngayo ukuze kunyuswe ukusebenzaIprothokholi ye-QUIC iyasebenza: indlela u-Uber ayiphumeze ngayo ukuze kunyuswe ukusebenza
Umzobo 9. Kwiimvavanyo zokulwa, i-QUIC iphumelele i-TCP ngokwemiqathango ye-latency.

phambili kuphela

Mhlawumbi esi sisiqalo nje - ukukhutshwa kwe-QUIC kwimveliso kuye kwanika amathuba amangalisayo okuphucula ukusebenza kwesicelo kuzo zombini iinethiwekhi ezizinzileyo nezingazinzanga, ezizezi:

Ukwandiswa kokhuseleko

Emva kokuba sihlalutye ukusebenza kweprotocol kwi-traffic yokwenyani, sabona ukuba malunga ne-80% yeeseshoni zisebenzise ngempumelelo i-QUIC всСх izicelo, ngelixa i-15% yeeseshoni zisebenzise indibaniselwano ye-QUIC kunye ne-TCP. Sicinga ukuba indibaniselwano ibangelwe lixesha lokuphuma kwethala leencwadi le-Cronet libuyele kwi-TCP, kuba ayinako ukwahlula phakathi kokusilela kokwenyani kwe-UDP kunye neemeko zenethiwekhi ezimbi. Ngoku sijonge kwisisombululo kule ngxaki njengoko sisebenzela ukuphunyezwa okulandelayo kwe-QUIC.

QUIC ulungiselelo

I-traffic evela kwii-apps eziphathwayo zinovakalelo kwi-latency, kodwa ayisiyiyo i-bandwidth. Kwakhona, izicelo zethu zisetyenziswa ikakhulu kwiinethiwekhi zeselula. Ngokusekwe kwimvavanyo, ukubambezeleka komsila kusephezulu nangona usebenzisa i-proxy ukuphelisa i-TCP kunye ne-QUIC kufutshane nabasebenzisi. Sijonge ngenkuthalo iindlela zokuphucula ulawulo lokuxinana kunye nokuphucula ukusebenza kakuhle kwe-QUIC ilahleko ye-algorithms yokubuyisela.

Ngolu kunye nolunye uphuculo oluninzi, siceba ukuphucula amava omsebenzisi nokuba injani inethiwekhi kunye nommandla, ukwenza uthutho lwepakethi olufanelekileyo kunye nolungenamthungo lufikeleleke kwihlabathi liphela.

umthombo: www.habr.com

Yongeza izimvo