QUIC-protokolli on ÀÀrmiselt huvitav teema, millest me armastame kirjutada. Kui varasemad QUIC-i postitused kĂ€sitlesid rohkem ajaloolisi aspekte ja matemaatikat, siis tĂ€na oleme rÔÔmsad, et saame avaldada teistsuguse tĂ”lke â rÀÀgime protokolli reaalsest kasutamisest 2019. aastal. Ja juttu ei ole vĂ€ikesest infrastruktuurist, mis asub kuskil garaaĆŸis, vaid Uberist, mis tegutseb peaaegu kogu maailmas. Kuidas ettevĂ”tte insenerid otsustasid QUIC-i kasutada tootmises, kuidas nad teste viisid lĂ€bi ja mida nad pĂ€rast kasutusele vĂ”tmist tĂ€heldasid â loe edasi.
Pildid on klikkitavad. Head lugemist!
Uber on maailma mastaabis, olles kohal 600 linnas, kus rakendus sĂ”ltub tĂ€ielikult ĂŒle 4500 mobiilioperaatori traadita internetist. Kasutajad ootavad, et rakendus töötab mitte lihtsalt kiiresti, vaid reaalajas â selle tagamiseks vajab Uberi rakendus madalaid latentsusaegu ja vĂ€ga usaldusvÀÀrset ĂŒhendust. Kahjuks aga TCP-stack ei suuda toimida dĂŒnaamilistes ja paketikaotusele kalduvates traadita vĂ”rkudes. Me mĂ”istsime, et madal tulemuslikkus on otseselt seotud TCP rakendustega operatsioonisĂŒsteemi kernides.
Probleemi lahendamiseks rakendasime , kaasaegse protokolli, millel on kanalite mulitplekseerimine, mis annab meile rohkem kontrolle transportprotokolli jĂ”udluse ĂŒle. Praegu on töögrupp standardiseerimas QUIC-i kui .
PĂ€rast pĂ”hjalikke teste jĂ”udsime jĂ€reldusele, et QUIC-i kasutuselevĂ”tt meie rakenduses vĂ€hendab "sabade" latentsusaegu, vĂ”rreldes TCP-ga. Vaatasime HTTPS-i liikluses ja nĂ€gime 10-30% vĂ€henemist juhi- ja reisija-rakendustes. QUIC andis meile ka tĂ€ieliku kontrolli kasutaja paketid ĂŒle.
Selles artiklis jagame kogemusi TCP optimeerimisest Uberi rakenduste jaoks QUIC-i toega stack'i abil.
Tehnika viimane sÔna: TCP
TĂ€na on TCP kĂ”ige kasutatavam transportprotokoll HTTPS-i liikluse edastamiseks internetis. TCP tagab usaldusvÀÀrse baitide voolu, mistĂ”ttu suudab see toime tulla vĂ”rgu ĂŒlekoormuse ja kaotanud kanalitaseme. TCP laialdane rakendamine HTTPS-i liikluses on seletatav selle laialdase olemasoluga (peaaegu iga opsĂŒsteem sisaldab TCP-d), kergesti kĂ€ttesaadavusega enamus infrastruktuurist (nĂ€iteks koormuse tasakaalustajad, HTTPS-proxyd ja CDN-id) ning âkastist vĂ€ljaâ funktsionaalsusega, mis on kergesti ligipÀÀsetav enamikes platvormides ja vĂ”rkudes.
Enamik kasutajatest kasutab meie rakendust liikvel olles ning TCP âsabavirgestusedâ jÀÀvad olulistele nĂ”udmistele meie reaalaja HTTPS-i liikluses vastupidiseks. Lihtsalt öeldes on sellega silmitsi seisnud kasutajad ĂŒle kogu maailma â Joonisel 1 on kujutatud viivitusi suurtes linnades:
Joonis 1. âSabavirgestusteâ suurus varieerub Uberi kohaloleku peamistes linnades.
Kuigi Indias ja Brasiilias olid viivitused suuremad kui USA-s ja Suurbritannias, on sabavirgestused mÀrkimisvÀÀrselt kÔrgemad kui keskmised viivitused. Ja see kehtib ka USA ja Suurbritannia kohta.
TCP jĂ”udlus ĂŒle Ă”hu
TCP loodi juhttasandi vĂ”rkude jaoks, keskendudes hĂ€sti ennustatavatele linkidele. Kuid traadita vĂ”rkudel on oma eripĂ€rad ja vĂ€ljakutsed. Esiteks on traadita vĂ”rgud tundlikud signaali kadumise suhtes, mis tuleneb hĂ€iretest ja signaali nĂ”rgenemisest. NĂ€iteks Wi-Fi vĂ”rgud on tundlikud mikrolainete, bluetooth'i ja muude raadiolainete suhtes. MobiilivĂ”rgud kannatavad signaali kaotuse all () signaali peegelduse / neelamise tĂ”ttu esemetest ja hoonetest, samuti tĂ”ttu naabervĂ”rkudest See toob kaasa mĂ€rkimisvÀÀrseid (4-10 korda) ja varieeruvaid ja pakettide kaotusi vĂ”rreldes juhttasandi ĂŒhendusega.
Kuna mobiilivĂ”rgud pĂŒĂŒavad vĂ”idelda ribalaiuse kĂ”ikumiste ja kaotustega, kasutatakse tavaliselt suuri puhverdamise mĂ€lusid liikluse tippude jaoks. See vĂ”ib viia liigse jĂ€rjekorra loomisele, mis tĂ€hendab pikemaid viivitusi. Very sageli tĂ”lgendab TCP sellist jĂ€rjekorra ettevalmistamist kui kaotust pikendatud aja tĂ”ttu, seetĂ”ttu kalduvad TCP tegema uuesti edastamist ja tĂ€itma puhvrit. Seda probleemi tuntakse kui (), ja see on vĂ€ga kaasaegse interneti.
LĂ”puks sĂ”ltub mobiilivĂ”rgu jĂ”udlus operaatorist, piirkonnast ja ajast. Joonisel 2 oleme kogunud HTTPS-liiklusest mÔÔdetud keskmised latentsused 2-kilomeetrises raadiuses. Andmed on kogutud kahe suurima mobiilsideoperaatori kohta Delhis, Indias. Nagu nĂ€ha, varieerub jĂ”udlus vĂ”rgu ja operaatori lĂ”ikes. Lisaks erineb ĂŒhe operaatori jĂ”udlus teise oma jĂ”udlusest. Sellele mĂ”jutavad tegurid, nagu vĂ”rku sisenemise mustrid ajas ja asukohas, kasutajate liikuvus ning vĂ”rgu infrastruktuur, sealhulgas masti tihedus ja vĂ”rgu tĂŒĂŒpide (LTE, 3G jne) suhe.
Joonis 2. Latentsused 2-kilomeetrise raadiuse nÀitel. Delhi, India.
Samuti varieerub mobiilivĂ”rkude jĂ”udlus ajas. Joonisel 3 on nĂ€idatud keskmine latentsus nĂ€dalapĂ€evade lĂ”ikes. Me oleme samuti mĂ€rganud erinevusi veelgi vĂ€iksemas mastaabis â sama pĂ€eva ja tunni jooksul.
Joonis 3. HÀiresignaalid vÔivad oluliselt varieeruda erinevate pÀevade lÔikes, kuid samal operaatoril.
KÔik eelnevalt mainitu toob kaasa selle, et TCP jÔudlus on traadita vÔrkudes ebaefektiivne. Siiski, enne kui otsime TCP alternatiive, soovime saavutada tÀpset arusaama jÀrgmistes punktides:
- kas TCP on peamine sĂŒĂŒdlane meie rakenduste hilinenud vastuses?
- Kas kaasaegsetes vÔrkudes on mÀrkimisvÀÀrsed ja mitmekesised ringlatentsused (RTT)?
- Milline on RTT ja kadude mÔju TCP jÔudlusele?
TCP jĂ”udluse analĂŒĂŒs
Et mĂ”ista, kuidas me analĂŒĂŒsisime TCP jĂ”udlust, vaatame lĂŒhidalt ĂŒle, kuidas TCP edastab andmeid saatjast saajani. Alguses loob saatja TCP-ĂŒhenduse, tehes kolmnurga : saatja saadab SYN-paketi, ootab saajalt SYN-ACK-paketti, seejĂ€rel saadab ta ACK-paketi. Teised kaks protsessi, teine ja kolmas, kuluvad TCP-ĂŒhenduse loomiseks. Saaja kinnitab, et on saanud iga paketi (ACK), et tagada usaldusvÀÀrne edastamine.
Kui pakett vĂ”i ACK kaob, kordab saatja edastamist pĂ€rast ajavaru (RTO, ). RTO arvutatakse dĂŒnaamiliselt, tuginedes erinevatele teguritele, nĂ€iteks oodatavale latentsusele RTT saatja ja saaja vahel.
Joonis 4. TCP/TLS-i pakettide vahetus sisaldab retranmismehhanisme.
Kuna me tahtsime mĂ”ista, kuidas TCP meie rakendustes toimis, jĂ€lgisime TCP-pakette ĂŒhe nĂ€dala jooksul tootmisliikluses, mis tuli Indiast piiriserveritelt. SeejĂ€rel analĂŒĂŒsisime TCP-ĂŒhendusi kasutades . Lisaks lĂ”ime Android-rakenduse, mis saadab emuleeritud liiklust testserverile, pĂŒĂŒdes maksimaalselt jĂ€ljendada reaalset liiklust. Need rakendusega nutitelefonid jagati mitmele töötajale, kes kogusid logisid mitme pĂ€eva jooksul.
MĂ”lema katse tulemused olid omavahel kooskĂ”las. NĂ€gime kĂ”rgeid RTT-viivitusi; sabakeskmed olid peaaegu 6 korda kĂ”rgemad mediansest; viivituste aritmeetiline keskmine oli ĂŒle 1 sekundi. Paljudel ĂŒhendustel olid paketikaotused, mis sundisid TCP-d retransmoteerima 3,5% kĂ”igist pakettidest. Ălerahvastatud piirkondades, nĂ€iteks lennujaamades ja jaamades, tĂ€heldasime 7% kaotusi. Sellised tulemused panevad kahtluse alla ĂŒldlevinud arvamuse, et mobiilsides kasutatavad vĂ€hemalt oluliselt vĂ€hendavad kaotusi transporditasandil. Allpool on tulemused simulaatorrakenduse testidest:
VÔrgumetris
VÀÀrtused
RTT, millisekundites [50%, 75%, 95%, 99%]
[350, 425, 725, 2300]
RTT-lÔhe, sekundites
Keskmiselt ~1,2 s
Pakettide kaotus ebastabiilsetes ĂŒhendustes
Keskmiselt ~3.5% (7% ĂŒlerahvastatud piirkondades)
Peaaegu poolel neist ĂŒhendustest oli vĂ€hemalt ĂŒks pakett kaotsis, enamik neist olid SYN ja SYN-ACK paketid. Enamik TCP teostusi kasutab RTO vÀÀrtuse 1 sekundi SYN-pakettide jaoks, mis eksponetsiaalselt suureneb edasiste kaotuste korral. Rakenduse laadimisaeg vĂ”ib suureneda, kuna TCP vajab rohkem aega ĂŒhenduste loomiseks.
Andmepakettide puhul vÀhendavad kÔrged RTO vÀÀrtused oluliselt vÔrgu kasulikku kasutust ajutiste kaotuste korral traadita vÔrkudes. Me selgitasime vÀlja, et retranmisaja keskmine on umbes 1 sekund, kusjuures sabaviivitus on peaaegu 30 sekundit. Sellised kÔrged viivitused TCP tasemel pÔhjustasid HTTPS-i aegumise ja kordusnÔudmisi, mis suurendasid veelgi viivitust ja vÔrgu ebatÔhusust.
Kuigi 75. protsenti mÔÔdetud RTT-st oli umbes 425 ms, oli TCP 75. protsent peaaegu 3 sekundit. See viitab sellele, et kaotused sundisid TCP-d tegema andmete edastamiseks 7-10 korda katsetusi. Selle pĂ”hjuseks vĂ”ib olla ebaefektiivne RTO arvutamine vĂ”i TCP vĂ”imetus kaotustele kiiresti reageerida. aknas ja ĂŒlekoormuse juhtimisalgoritmi ebaefektiivsus, mis ei erista traadita kaotusi ja vĂ”rguĂŒlevaid kaotusi. Allpool on TCP kaotuste testitulemused:
TCP pakettide kaotusstatistika
TĂ€hendus
Protsent ĂŒhendustest, kus on vĂ€hemalt 1 paketti kadunud
45%
Protsent ĂŒhendustest, kus kaotused esinesid ĂŒhenduse loomise ajal
30%
Protsent ĂŒhendustest, kus kaotused esinesid andmevahetuse ajal
76%
Viivituste jaotumine uuesti edastamises, sekundid [50%, 75%, 95%, 99%]
[1, 2.8, 15, 28]
Ăhe paketi vĂ”i TCP-segmendi jaoks uuesti edastamiste arvu jaotumine
[1,3,6,7]
QUIC rakendamine
Algse disaini tegi Google, QUIC on mitme lĂ”imega kaasaegne transportprotokoll, mis töötab UDP peal. Praegu on QUIC (oleme juba kirjutanud, et QUIC-l on justkui kaks versiooni, uudishimulikud â tĂ”lkija mĂ€rkus). Nagu nĂ€idatud joonisel 5, asub QUIC HTTP/3 all (tegelikult on HTTP/2 QUIC-i peal HTTP/3, mida praegu aktiivselt standardiseeritakse). See osaliselt asendab HTTPS-i ja TCP tasemeid, kasutades pakettide koostamiseks UDP-d. QUIC toetab ainult turvalist andmeedastust, kuna TLS on tĂ€ielikult integreeritud QUIC-i.

Joonis 5: QUIC töötab HTTP/3 all, asendades TLS-i, mis töötas varem HTTP/2 all.
Allpool toome vÀlja pÔhjused, mis veenisid meid kasutama QUIC-i TCP tugevdamiseks:
- 0-RTT ĂŒhenduse loomine. QUIC vĂ”imaldab varasemate ĂŒhenduste autoriseerimiste taaskasutamist, vĂ€hendades turvatehingute arvu. Tulevikus toetab 0-RTT, kuid kolmesuunaline TCP-tehing jÀÀb endiselt kohustuslikuks.
- HoL-blokeeringu ĂŒletamine. HTTP/2 kasutab iga kliendi jaoks ĂŒhte TCP-ĂŒhendust, et parandada jĂ”udlust, kuid see vĂ”ib viia HoL (head-of-line) blokeeringuni. QUIC lihtsustab multipleximist ja edastab pĂ€ringud rakendusele ĂŒksteisest sĂ”ltumatult.
- ĂŒletamine ĂŒlekoormuse juhtimisest. QUIC toimib rakenduskihtidel, vĂ”imaldades peamist transportalgoritmi kergemini uuendada, mis haldab saatmist, tuginedes vĂ”rgutingimustele (kaotuste arv vĂ”i RTT). Enamik TCP-implementatsioone kasutab algoritmi , mis ei ole optimaalne viivitusest sĂ”ltuva liikluse jaoks. Hiljuti vĂ€lja töötatud algoritmid nagu modelleerivad vĂ”rku tĂ€psemalt ja optimeerivad viivitusi. QUIC vĂ”imaldab kasutada BBR-i ja uuendada seda algoritmi selle .
- kaotuste taastamiseks. QUIC kutsub esile kaks TLP () enne RTO aktiveerimist â isegi kui kaotused on vĂ€ga ulatuslikud. See erineb TCP-implementatsioonidest. TLP edastab peamiselt viimase paketi (vĂ”i uue, kui see on olemas), et alustada kiiret taastamist. Haldamine, mis kĂ€sitleb saba viivitusi, on eriti kasulik Uberi tööviisi tĂ”ttu vĂ”rgu osas, nimelt lĂŒhikeste, episoodiliste ja viivitustundlike andmeedastuste puhul.
- optimeeritud ACK. Kuna igal pakendil on ainulaadne jÀrjestuse number, ei teki probleemi pakettide edastamisel. ACK-paketid sisaldavad samuti aega paketi töötlemiseks ja ACK-i genereerimiseks kliendi poolel. Need omadused tagavad, et QUIC arvutab RTT-d tÀpsemalt. QUIC-i ACK toetab kuni 256 vahemikku , aidates saatjal olla pakettide muutumisele vastupidavam ja kasutada protsessi kÀigus vÀhem baite. Valikuline ACK () TCP-s ei lahenda see probleem kÔigis juhtudes.
- ĂŒhenduse migreerimine. QUIC-i ĂŒhendused identifitseeritakse 64-bitise ID abil, nii et kui klient vahetab IP-aadresse, saab vana ĂŒhenduse ID-d uuel IP-aadressil edasi kasutada, ilma katkestusteta. See on vĂ€ga levinud praktika mobiilirakendustes, kui kasutaja vahetab Wi-Fi ja mobiilsete ĂŒhenduste vahel.
QUIC-i alternatiivid
Oleme kaalunud alternatiivseid lÀhenemisviise probleemi lahendamiseks enne QUIC-i valimist.
Esiteks proovisime tĂ”sta TPC PoP-sid (Presence Points), et lĂ”petada TCP-ĂŒhendused lĂ€hemal kasutajatele. Tegelikult lĂ”petab PoP TCP-ĂŒhenduse mobiilseadmega lĂ€hemal mobiilivĂ”rgule ja suunab liikluse algsele infrastruktuurile. TCP lĂ”petades lĂ€hemal, saame potentsiaalselt vĂ€hendada RTT-d ja olla kindlad, et TCP reageerib dĂŒnaamilises traadita keskkonnas aktiivsemalt. Siiski, meie katsetused nĂ€itasid, et enamasti tulenevad RTT ja kaod mobiilivĂ”rkudest ning PoP-ide kasutamine ei too olulist jĂ”udluse parandust.
Vaatasime ka TCP parameetrite seadmist. TCP-steigi seadmine meie heterogeensetes piiriserverites oli keeruline, kuna TCP-l on erinevates OSimedes vĂ”rreldamatud teostused. Erinevate vĂ”rgukonfiguratsioonide rakendamine ja testimine oli keeruline. TCP-seadistus mobiilseadmetes oli volituste puudumise tĂ”ttu vĂ”imatu. Veelgi olulisem on see, et sellised funktsioonid nagu 0-RTT ĂŒhendused ja paranenud RTT ennustus on protokolli arhitektuuri jaoks kriitilise tĂ€htsusega ning seetĂ”ttu ei saa TCP-seadistusega oluliselt kasu saavutada.
LĂ”puks hindasime mitmeid UDP-pĂ”hiseid protokolle, mis lahendavad videostreamingu tĂ”rkeid - soovisime teada, kas need protokollid saavad meie olukorras abiks olla. Kahjuks puudusid neis paljuski vajalikud turvaseaded, samuti oli vajalik tĂ€iendav TCP-ĂŒhendus metaandmete ja haldusinformatsiooni jaoks.
Meie uuringud nÀitasid, et QUIC on peaaegu ainus protokoll, mis suudab Interneti-liikluse probleemiga tegeleda, arvestades nii turvalisust kui ka jÔudlust.
QUICi integreerimine platvormi
QUIC-i edukaks integreerimiseks ja rakenduse jĂ”udluse parandamiseks nĂ”rkades ĂŒhendustes asendasime vana steki (HTTP/2 ĂŒle TLS/TCP) QUIC-protokolliga. Kasutasime vĂ”rgu teeki API-s , mis sisaldab originaali, Google'i versioon protokollist â gQUIC. Seda teostust tĂ€iustatakse pidevalt, et jĂ€rgida viimast IETF-i spetsifikatsiooni.
Esmalt integreerisime Croneti oma Android-rakendustesse, et lisada QUIC-i tugi. Integreerimine toimus nii, et migratsioonikulusid oleks vÔimalikult vÀhe. Selle asemel, et tÀielikult asendada vana vÔrgu steki, mis kasutas teeki , integreerisime Croneti OkHttp API raames. Sellise integreerimisega vÀltisime muudatusi meie vÔrgu kutsumistes (mida kasutavad ) API tasemel.
Sarnaselt lÀhenemisele Android-seadmetele rakendasime Croneti Uberi rakendustes iOS-is, peatades HTTP liikluse vÔrgu , kasutades . See abstraktsioon, mis on saadud iOS Foundationist, haldab protokollispetsiifilisi URL-andmeid ja tagab, et saame Croneti integreerida oma iOS-rakendustes oluliste migratsioonikuludeta.
QUICi lÔpetamine Google Cloudi tasakaalustajates
TagakĂŒljel tagab QUICi lĂ”petamise Google Cloudi Load balancing infrastruktuur, mis kasutab pealkirjad vastustes QUICi toe toetamiseks. Ăldiselt lisab koormuse jagaja iga HTTP-pĂ€ringule alt-svc pealkirja, mis valideerib QUICi toe domeeni jaoks. Kui Cronet klient saab sellise pealkirjaga HTTP-vastuse, kasutab ta jĂ€rgmiste HTTP-pĂ€ringute jaoks QUICi sellele domeenile. Kui koormuse jagaja lĂ”petab QUICi, edastab meie infrastruktuur selle tegevuse tĂ”eliselt HTTP2/TCP kaudu meie andmekeskustesse.
Toime: tulemused
VÀlja antud toime on peamine pÔhjus, miks me otsime parimat protokolli. Alustuseks lÔime keskkonna, , et selgitada vÀlja, kuidas QUIC erinevates vÔrguprofiilides kÀitub. QUICi töö kontrollimiseks reaalsetes vÔrkudes tegime eksperimente, sÔitmine New Delhis, kasutades samal ajal simuleeritud vÔrgu liiklust, mis sarnanes vÀga rakenduse reisija HTTP-pÀringutele.
Eksperiment 1
Eksperimendi inventar:
- testseadmed Androidil OkHttp ja Cronet stackidega, et veenduda, et meie HTTPS-liiklus liigub juba vastavalt TCP ja QUIC kaudu;
- Java-pĂ”hine simuleerimise server, mis saadab sama tĂŒĂŒpi HTTPS-pealkirjad vastustes ja koormab kliendiseadmeid, et saada neilt pĂ€ringud;
- pilveproksid, mis on fĂŒĂŒsiliselt India lĂ€hedal, et lĂ”petada TCP ja QUIC ĂŒhendused. KĂ”rge TCP lĂ”petamiseks kasutasime tagasipöörde proksi , kuid oli keeruline leida avatud lĂ€htekoodiga tagasipöörde proksi QUICile. Me kogusime ise QUICi tagasipöörde proksi, kasutades aluse QUICi steki Chromiumist ja selle Chromiumis kui avatud lĂ€htekoodine.
Joonis 6. TCP vs QUIC testimiseks mĂ”eldud tee komplekt koosnes Android-seadmest OkHttp ja Cronet, pilveproksidest ĂŒhenduste lĂ”petamiseks ja simuleerimise serverist.
Eksperiment 2
Kui Google tegi QUICi kergesti kĂ€tte saadavaks, , kasutasime sama inventari, kuid ĂŒhe modifikatsiooniga: NGINXi asemel vĂ”tsime Google'i koormuse jagajad TCP ja QUIC ĂŒhenduste lĂ”petamiseks seadmetelt ning HTTPS-liikluse suunamiseks simuleerimise serverisse. Koormuse jagajad on jaotatud ĂŒle kogu maailma, kuid kasutavad seadmele lĂ€himat PoP serverit (tĂ€nu geolokatsioonile).
Joonis 7. Teises eksperimendis soovisime vÔrrelda TCP ja QUICi lÔpetamise viivitust: Google Cloudi ja meie pilveproksi abil.
KokkuvÔttes ootas meid mitu avastust:
- PoP-i kaudu lĂ”petamine parandas TCP suutlikkust. Kuna tasakaalustajad lĂ”petavad TCP-ĂŒhenduse lĂ€hemal kasutajatele ja on suurepĂ€raselt optimeeritud, toob see kaasa vĂ€iksemaid RTT-sid, mis parandab TCP jĂ”udlust. Ja kuigi see mĂ”jutas QUIC-i vĂ€hem, ĂŒletas see ikkagi TCP-d pehmete viivituste vĂ€hendamise osas (10â30 protsenti).
- pehmetele viivitustele mĂ”jutavad . Kuigi meie QUIC-proksi oli seadmetest kaugemal (ligikaudu 50 ms suurem latentsus) kui Google'i tasakaalustajad, nĂ€itas see sarnast jĂ”udlust â 15% langus latentsuses vĂ”rreldes TCP 99. protsentiili 20% langusega. See nĂ€itab, et viimase miili vahetus on vĂ”rgu töötluse kitsaskohaks (bottleneck).
Joonis 8. Kahe eksperimendi tulemused nĂ€itavad, et QUIC ĂŒletab TCP-d mĂ€rkimisvÀÀrselt.
SÔjaline liiklus
Katsed inspireerisid meid rakendama QUIC-i toetust meie Androidi ja iOS-i rakendustes. Viisime lĂ€bi A/B testimise, et mÀÀrata QUIC-i mĂ”ju Uberi kohalikes linnades. Ăldiselt nĂ€gime mĂ€rkimisvÀÀrset vĂ€henemist pehmetes viivitustes nii piirkondade kui ka telecom operaatorite ning vĂ”rgu tĂŒĂŒpide lĂ”ikes.
Allpool toodud graafikutel on nĂ€idatud protsentuaalsed parandused pehmetes viivitustes (95. ja 99. protsentiil) makrorikides ja erinevates vĂ”rgutĂŒĂŒpides â LTE, 3G, 2G.
Joonis 9. SĂ”jalistes testides ĂŒletas QUIC TCP-d latentsuse osas.
Ainult edasi
TĂ”enĂ€oliselt on see ainult algus â QUIC-i vĂ€ljatootmine tootmises on andnud hĂ€mmastavaid vĂ”imalusi rakenduste jĂ”udluse parandamiseks nii stabiilsetes kui ka ebastabiilsetes vĂ”rkudes, nimelt:
Katvuse suurenemine
AnalĂŒĂŒsides protokolli jĂ”udlust reaalsetes liiklustingimustes, nĂ€gime, et ligikaudu 80% sessioonidest kasutasid QUIC-i edukalt kĂ”igi pĂ€ringute jaoks, samal ajal kui 15% sessioonidest kasutasid nii QUIC-i kui TCP-d. Eeldame, et kombinatsioon tekkis seetĂ”ttu, et Croneti teek lĂŒlitub ajaĂŒlevaate tĂ”ttu tagasi TCP-le, kuna ta ei suuda eristada tegelikke UDP-rikkeid ja halbu vĂ”rguolusid. Hetkel otsime sellele probleemile lahendust, kuna töötame QUIC-i edasise rakendamise kallal.
QUIC-i optimeerimine
Mobiilirakendustest pÀrinev liiklus on viivitusolukordadele tundlik, kuid mitte ribalaiusele. Samuti kasutatakse meie rakendusi peamiselt mobiilivÔrkudes. Eksperimentide pÔhjal on sabaviivitused endiselt suured, isegi kui kasutatakse proksit TCP ja QUIC lÔpetamiseks lÀhedal kasutajatele. Otsime aktiivselt viise koormuse juhtimise parandamiseks ja QUIC-i kadu tagasiarvutamise algoritmide efektiivsuse tÔstmiseks.
Nende ja teiste tÀiendustega kavatseme parandada kasutajakogemust sÔltumata vÔrgust ja piirkonnast, muutes pakettide sujuva ja mugava transportimise kergemini kÀttesaadavaks maailmas.
Allikas: habr.com
