Protokolli QUIC Ă«shtĂ« jashtĂ«zakonisht interesant pĂ«r t'u ndjekur, prandaj na pĂ«lqen ta shkruajmĂ« pĂ«r tĂ«. Por, nĂ«se publikimet e mĂ«parshme pĂ«r QUIC kishin njĂ« karakter mĂ« shumĂ« historik (mĂ« shumĂ« lokal, nĂ«se dĂ«shironi) dhe pĂ«rmbajtĂ«sor, sot ne jemi tĂ« lumtur tĂ« publikojmĂ« njĂ« pĂ«rkthim tĂ« njĂ« natyre tjetĂ«r â do tĂ« flasim pĂ«r aplikimin e vĂ«rtetĂ« tĂ« protokollit nĂ« vitin 2019. Dhe kjo nuk Ă«shtĂ« pĂ«r njĂ« infrastrukturĂ« tĂ« vogĂ«l, tĂ« bazuar nĂ« njĂ« garazh tĂ« supozuar, por pĂ«r Uber, qĂ« funksionon pothuajse nĂ« tĂ«rĂ« botĂ«n. Si arritĂ«n inxhinierĂ«t e kompanisĂ« nĂ« vendimin pĂ«r tĂ« pĂ«rdorur QUIC nĂ« prodhim, si bĂ«nĂ« testet dhe çfarĂ« panĂ« pas zbatimit nĂ« prodhim â nĂ«n kĂ«tĂ« kat.
Imazhet janë të klikueshme. Gëzuar leximin!
Uber â Ă«shtĂ« njĂ« pĂ«rmasĂ« globale, me 600 qytete tĂ« pranishme, nĂ« secilin prej tĂ« cilĂ«ve aplikacioni mbĂ«shtetet plotĂ«sisht te interneti wireless nga mĂ« shumĂ« se 4500 operatorĂ« celularĂ«. PĂ«rdoruesit presin qĂ« aplikacioni tĂ« funksionojĂ« jo thjesht shpejt, por nĂ« kohĂ« reale â pĂ«r ta siguruar kĂ«tĂ«, aplikacioni Uber ka nevojĂ« pĂ«r vonesa tĂ« ulĂ«ta dhe njĂ« lidhje shumĂ« tĂ« besueshme. FatkeqĂ«sisht, por staku nuk ndjehet mirĂ« nĂ« nivelet wireless dinamike dhe tĂ« ndjeshme ndaj humbjeve. Kuptuam se nĂ« kĂ«tĂ« rast niveli i ulĂ«t i performancĂ«s Ă«shtĂ« drejtpĂ«rdrejt i lidhur me realizimet e TCP nĂ« bĂ«rthamat e sistemeve operative.
Për të zgjidhur problemin, ne aplikuam , një protokoll modern me multiplexim të kanaleve, i cili na jep më shumë kontroll mbi performancën e protokollit transportues. Në këtë moment grupi i punës po standartizon QUIC si .
Pas testeve të detajuara, ne arritëm në përfundimin se zbatimi i QUIC në aplikacionin tonë do të ulte vonesat "dere" krahasuar me TCP. Vëzhguam një ulje në intervalin 10-30% për trafik HTTPS duke marrë për bazë aplikacionet e shoferëve dhe pasagjerëve. Gjithashtu, QUIC na dha kontroll të plotë mbi paketat e përdoruesve.
Në këtë artikull ne ndajmë përvojën tonë në optimizimin e TCP për aplikacionet Uber me ndihmën e një steku që mbështet QUIC.
Fjala e fundit e teknologjisë: TCP
Sot, TCP është protokolli më i përdorur për transportin e trafikut HTTPS në internet. TCP ofron një rrjedhë të besueshme të bytave, duke u përballur kështu me ngarkesën e rrjetit dhe humbjen në nivelin e kanalit. Përdorimi i gjerë i TCP për trafikun HTTPS shpjegohet nga gjithëpranishmëria e tij (pjesa më e madhe e sistemeve operative përmban TCP), disponueshmëria në shumicën e infrastrukturës (p.sh., në balancuesit e ngarkesës, HTTPS-proksit dhe CDN) dhe funksionaliteti
Shumica e pĂ«rdoruesve e pĂ«rdorin aplikacionin tonĂ« nĂ« lĂ«vizje, dhe "vonisat tail" tĂ« TCP kanĂ« qenĂ« shumĂ« larg kĂ«rkesave pĂ«r trafikun tonĂ« HTTPS nĂ« kohĂ« reale. Thjesht, pĂ«rdoruesit nga e gjithĂ« bota janĂ« pĂ«rballur me kĂ«tĂ« â nĂ« FigurĂ«n 1 janĂ« reflektuar vonisat nĂ« qytete tĂ« mĂ«dha:
Figura 1. Shuma e vonisave "tail" variaton në qytetet kryesore ku operon Uber.
Pavarësisht se vonisat në rrjetet indiane dhe braziliane ishin më të larta se në SHBA dhe Mbretërinë e Bashkuar, vonisat tail ishin ndjeshëm më të mëdha se mesatarja. Dhe kjo është e vërtetë edhe për SHBA-në dhe Mbretërinë e Bashkuar.
Performanca e TCP në ajër
TCP është krijuar për rrjetet me kabllo , që do të thotë fokusim në lidhje të parashikueshme. Megjithatë, rrjetet pa tela kanë karakteristika dhe vështirësi të vetat. Së pari, rrjetet pa tela janë të ndjeshme ndaj humbjeve për shkak të ndërhyrjeve dhe zbehjes së sinjalit. Për shembull, rrjetet Wi-Fi janë të ndjeshme ndaj mikrovalëve, Bluetooth dhe transmetimeve të tjera të radios. Rrjetet celulare përjetojnë humbje sinjali () për shkak të reflektimit/absorbimit të sinjalit nga objektet dhe ndërtesat, si dhe nga nga . Kjo çon në vonesa më të mëdha (4-10 herë) dhe të ndryshme dhe humbje paketash në krahasim me lidhjen e kabllit.
Për të përballuar ndryshimet në gjerësinë e brezit dhe humbjet, rrjetet celulare zakonisht përdorin bufferë të mëdha për shpërthimet e trafikut. Kjo mund të çojë në mbingarkesë, që do të thotë vonesa më të mëdha. Shpesh, TCP e interpreton këtë mbingarkesë si humbje për shkak të kohëzgjatjes së rritur, kështu që TCP ka tendencë të bëjë retransmetim, duke mbushur kështu bufferin. Kjo çështje njihet si (), dhe kjo është një internetit modern.
Më në fund, performanca e rrjetit celular ndryshon në varësi të operatorit të lidhjes, rajonit dhe kohës. Në Figurën 2, ne kemi mbledhur vonesat mesatare të trafikut HTTPS në lidhje me celularët në një rreze prej 2 kilometrash. Të dhënat janë mbledhur për dy operatorët më të mëdhenj të celularëve në New Delhi, Indi. Siç mund të vëreni, performanca ndryshon nga një qelizë në tjetrën. Gjithashtu, performanca e një operatori ndryshon nga ajo e operatorit tjetër. Këto ndryshime ndikohen nga faktorë si modelet e hyrjes në rrjet duke marrë parasysh kohën dhe vendndodhjen, lëvizshmërinë e përdoruesve, si dhe infrastrukturën e rrjetit duke marrë parasysh dendësinë e kullave dhe raportin e llojeve të rrjetit (LTE, 3G, etj.).
Figura 2. Vonesat në shembullin e një rreze prej 2 kilometrash. New Delhi, Indi.
Gjithashtu, performanca e rrjeteve celulare ndryshon me kalimin e kohës. Në Figurën 3, është treguar vonesa mesatare sipas ditëve të javës. Ne gjithashtu kemi vëzhguar diferenca në një shkallë më të vogël - brenda një dite dhe ore.
Figura 3. Vonesat e bishtave mund të ndryshojnë ndjeshëm në ditë të ndryshme, por për të njëjtin operator.
Gjithçka e përmendur më sipër çon në përfundimin se performanca TCP është e papërgjegjshme në rrjete celularë. Megjithatë, përpara se të kërkojmë alternativa për TCP, ne dëshirojmë të zhvillojmë një kuptim të saktë rreth pikave të mëposhtme:
- a është TCP përgjegjësi kryesore për vonesat e bishtave në aplikacionet tona?
- A kanë rrjetet moderne vonesa të konsiderueshme dhe të larmishme rreth trajtim (RTT)?
- Cili është ndikimi i RTT dhe humbjeve mbi performancën TCP?
Analiza e performancës TCP
Për të kuptuar se si analizuam performancën TCP, le të rikujtojmë shkurtimisht se si TCP transmeton të dhëna nga dërguesi te marrësi. Fillimisht, dërguesi vendos një lidhje TCP, duke iu nënshtruar një të tretë : dërguesi dërgon një paketë SYN, pret një paketë SYN-ACK nga marrësi, pastaj dërgon një paketë ACK. Kalime të dyta dhe të treta shpenzohen për krijimin e lidhjes TCP. Marrësi konfirmon marrjen e çdo pakete (ACK) për të siguruar dorëzimin e besueshëm.
Nëse humbet një paketë ose ACK, dërguesi bënë rivendosjen pas skadimit të kohës (RTO, ). RTO llogaritet në mënyrë dinamike, në bazë të faktorëve të ndryshëm, siç është vonesa e pritur RTT mes dërguesit dhe marrësit.
Figura 4. Shkëmbimi i paketave përmes TCP/TLS përfshin mekanizma të ritrasmetimit.
Për të përcaktuar se si funksiononte TCP në aplikacionet tona, ne ndjekëm paketat TCP me anë të gjatë një jave në trafik live që vinte nga serverat kufitarë indianë. Pas kësaj, ne analizuam lidhjet TCP me anë të . Për më tepër, ne krijuam një aplikacion Android që dërgon trafik të simuluar në një server provë, duke imituar sa më saktë trafikun e vërtetë. Smartphone-et me këtë aplikacion iu dhanë disa punonjësve, të cilët mbledhën logjet për disa ditë.
Rezultatet e të dy eksperimentëve ishin në përputhje me njëra-tjetrën. Ne vërejta vonesa të larta RTT; vlerat ekstreme ishin pothuajse 6 herë më të larta se mesatarja; vlera mesatare e vonesave ishte më shumë se 1 sekondë. Shumë lidhje patën humbje, gjë që e detyroi TCP-në të ritrasmetojë 3.5% të të gjitha paketimeve. Në zona me ngarkesë, si aeroportet dhe stacionet, ne vërejta humbje prej 7%. Këto rezultate vënë në dyshim mendimin e zakonshëm se skemat e avancuara të ritrasmetimit që përdoren në rrjetet celulare Metritë e rrjetit
RTT, milisekonda [50%, 75%, 95%, 99%]
Vlerat
Shkalla e RTT, sekonda
[350, 425, 725, 2300]
NĂ« mesatarisht ~1.2 s
Humbja e paketave në lidhje të paqëndrueshme
Në mesatarisht ~3.5% (7% në zona me ngarkesë)
Gati në gjysmën e këtyre lidhjeve kishte të paktën një humbje paketash, kryesisht këto ishin paketat SYN dhe SYN-ACK. Shumica e realizimeve të TCP përdorin vlerën RTO prej 1 sekondën për paketat SYN, e cila rritet në mënyrë eksponenciale për humbjet e mëpasshme. Koha e ngarkesës së aplikacionit mund të rritet për shkak se TCP i nevojitet më shumë kohë për të krijuar lidhjet.
Në rastin e paketave të dhënash, vlerat e larta RTO ulin ndjeshëm shfrytëzimin e dobishëm të rrjetit në praninë e humbjeve të përkohshme në rrjetet wireless. Ne zbuluam se koha mesatare e ritrasmetimit është rreth 1 sekondë me një vonesë ekstreme prej pothuajse 30 sekondash. Këto vonesa të larta në nivelin TCP shkaktonin kohëzgjatje HTTPS dhe kërkesa të përsëritura, gjë që akoma e aumentonte vonesën dhe paaftësinë e rrjetit.
Në rastin e paketave të dhënash, vlerat e larta RTO ulin ndjeshëm shfrytëzimin e dobishëm të rrjetit në praninë e humbjeve të përkohshme në rrjetet wireless. Ne zbuluam se koha mesatare e ritrasmetimit është rreth 1 sekondë me një vonesë ekstreme prej pothuajse 30 sekondash. Këto vonesa të larta në nivelin TCP shkaktonin kohëzgjatje HTTPS dhe kërkesa të përsëritura, gjë që akoma e aumentonte vonesën dhe paaftësinë e rrjetit.
Ndërsa percentili i 75-të i RTT-së së matur ishte rreth 425 ms, percentili i 75-të për TCP ishte pothuajse 3 sekonda. Kjo sugjeron se humbjet e detyruan TCP-në të bënte 7-10 kalime për të transferuar të dhënat me sukses. Kjo mund të jetë një pasojë e llogaritjes joefikase të RTO-së, duke e bërë TCP-në të pamundur për të reaguar shpejt ndaj humbjeve. në dritare dhe joefikasitetit të algoritmit të menaxhimit të ngarkesës, i cili nuk e dallon humbjen e paushme dhe humbjen për shkak të ngarkesës në rrjet. Më poshtë janë rezultatet e testeve të humbjeve TCP:
Statistika e humbjeve të paketave TCP
Vlera
Përqindja e lidhjeve me të paktën një humbje pakete
45%
Përqindja e lidhjeve me humbje gjatë vendosjes së lidhjes
30%
Përqindja e lidhjeve me humbje gjatë shkëmbimit të të dhënave
76%
Distribucioni i vonesave në rinovim, sekonda [50%, 75%, 95%, 99%]
[1, 2.8, 15, 28]
Distribucioni i numrit të rinovimeve për një paketë ose segment TCP
[1,3,6,7]
Zbatimi i QUIC
Fillimisht i projektuar nga Google, QUIC Ă«shtĂ« njĂ« protokoll transporti modern me shumĂ« rrjedha qĂ« funksionon mbi UDP. Deri mĂ« tani, QUIC Ă«shtĂ« (ne tashmĂ« kemi shkruar se ekzistojnĂ« dy versione tĂ« QUIC, ata qĂ« janĂ« kuriozĂ« â shĂ«n. pĂ«rkthyesit). Siç tregohet nĂ« FigurĂ«n 5, QUIC Ă«shtĂ« pozicionuar nĂ«n HTTP/3 (nĂ« thelb, HTTP/2 mbi QUIC Ă«shtĂ« HTTP/3, i cili tani po standardizohet me intensivitet). Ai zĂ«vendĂ«son pjesĂ«risht nivelet HTTPS dhe TCP, duke pĂ«rdorur UDP pĂ«r tĂ« formuar paketat. QUIC mbĂ«shtet vetĂ«m transferimin e sigurt tĂ« tĂ« dhĂ«nave, pasi TLS Ă«shtĂ« plotĂ«sisht i integruar nĂ« QUIC.

Figura 5: QUIC funksionon nën HTTP/3, duke zëvendësuar TLS, i cili më parë funksiononte nën HTTP/2.
Më poshtë japim arsyet që na bënë të përdorim QUIC për forcuar TCP:
- 0-RTT e vendosjes së lidhjes. QUIC lejon ripërdorimin e autorizimeve nga lidhjet e mëparshme, duke e ulur numrin e dorëzimeve të sigurisë. Në të ardhmen do të mbështesë 0-RTT, megjithatë, dorëzimi tridimensional i TCP ende do të jetë i detyrueshëm.
- kapërcimi i bllokimit HoL. HTTP/2 përdor një lidhje TCP për çdo klient për të përmirësuar performancën, por kjo mund të çojë në bllokimin HoL (head-of-line). QUIC thjeshton shumëkëtësinë dhe dorëzon kërkesat në aplikacion në mënyrë të pavarur nga njëra-tjetra.
- menaxhimi i ngarkesës. QUIC është në nivelin e aplikacioneve, duke lehtësuar përditësimin e algoritmit kryesor të transportit, i cili menaxhon dërgesat, duke u bazuar në parametrat e rrjetit (numri i humbjeve ose RTT). Shumica e realizimeve TCP përdorin algoritmin , i cili nuk është optimal për trafikun, të ndjeshëm ndaj vonesave. Algoritmet e zhvilluara së fundmi si , modelojnë më saktësisht rrjetin dhe optimizojnë vonesat. QUIC lejon përdorimin e BBR dhe përditësimin e këtij algoritmi ndërsa ai .
- pĂ«r tĂ« rikuperuar humbjet. QUIC aktivizon dy TLP () para se tĂ« funksionojĂ« RTO â edhe kur humbjet janĂ« shumĂ« tĂ« ndjeshme. Kjo Ă«shtĂ« njĂ« ndryshim nga realizimet TCP. TLP pĂ«rsĂ«rit kryesisht paketĂ«n e fundit (ose njĂ« tĂ« re, nĂ«se ekziston), pĂ«r tĂ« aktivizuar rikuperimin e shpejtĂ«. Trajtimi i vonesave tĂ« fundit Ă«shtĂ« veçanĂ«risht i dobishĂ«m pĂ«r mĂ«nyrĂ«n se si funksionon Uber me rrjetin, tĂ« cilat janĂ« tĂ« shkurtra, episodike dhe tĂ« ndjeshme ndaj vonesave.
- ACK të optimizuar. Duke pasur parasysh se çdo paketë ka një numër unik rendor, nuk ka problem i paketimeve gjatë përsëritjes së tyre. Paketat ACK gjithashtu përmbajnë kohën për të procesuar paketën dhe për të gjeneruar ACK nga ana e klientit. Këto veçori garantojnë se QUIC llogarit më saktësisht RTT. ACK në QUIC mbështet deri në 256 intervale , duke ndihmuar dërguesin të jetë më i qëndrueshëm ndaj ri-renditjes së paketimeve dhe të përdorë më pak byte në proces. ACK selektive () në TCP nuk zgjidh këtë problem në të gjitha rastet.
- migrimi i lidhjes. Lidhjet QUIC identifikohen me një ID 64-bit, në mënyrë që nëse klienti ndryshon adresat IP, mund të vazhdojë të përdorë ID-në e lidhjes së vjetër në adresën e re IP, pa ndërprerje. Kjo është një praktikë shumë e zakonshme për aplikacionet mobile, kur përdoruesi kalon midis lidhjeve Wi-Fi dhe celulare.
Alternativat e QUIC
Ne shqyrtuam qasje alternative për të zgjidhur problemin para se të zgjidhnim QUIC.
E para, ne fillim provuam të vendosim TPC PoPs (Pikat e PrPresence) për të përfunduar lidhjet TCP më afër përdoruesve. Në thelb, PoPs përfundon lidhjen TCP me pajisjen mobile më afër rrjetit celular dhe e proksionon trafikun deri te infrastruktura origjinale. Duke e përfunduar TCP më afër, potencialisht mund të zvogëlojmë RTT-në dhe të jemi të sigurt se TCP do të reagojë më aktivisht ndaj mjedisit dinamik pa tel. Megjithatë, eksperimentet tona treguan se në shumicën e rasteve RTT dhe humbjet vijnë nga rrjetet celulare dhe përdorimi i PoPs nuk ofron përmirësime të rëndësishme në performancë.
Ne gjithashtu shqyrtuam optimizimin e parametrave të TCP. Cilësimi i stekëve TCP në serverat tanë të kufizuar ishte i vështirë, pasi TCP ka implementime të pa krahasueshme në versione të ndryshme të OS. Ishte e vështirë ta zbatonim dhe të testonim konfigurata të ndryshme rrjetesh. Cilësimi i TCP direkt në pajisjet mobile ishte i pamundur për shkak të mungesës së autorizimeve. Më e rëndësishmja, karakteristika si lidhjet me 0-RTT dhe parashikimi i përmirësuar i RTT janë kritikisht të rëndësishme për arkitekturën e protokollit dhe, prandaj, është e pamundur të arrihet një avantazh të konsiderueshëm vetëm duke cilësuar TCP.
Në fund, ne vlerësuam disa protokolle të bazuara në UDP që adresojnë defektet në transmetimin e videove - doja të dija nëse këto protokolle do të ndihmonin në rastin tonë. Fatkeqësisht, këto kishin mungesë të madhe të shumë parametrave të sigurisë dhe gjithashtu kërkonin një lidhje të shtuar TCP për të dhënat dhe informacionin e menaxhimit.
Hulumtimet tona treguan se QUIC është pothuajse protokolli i vetëm që mund të ndihmojë me problemin e trafikut të Internetit, duke marrë parasysh si sigurinë ashtu edhe performancën.
Integrimi i QUIC në platformë
Për të integruar me sukses QUIC dhe për të përmirësuar performancën e aplikacionit në kushte të këqija lidhjeje, ne zëvendësuam stekun e vjeter (HTTP/2 mbi TLS/TCP) me protokollin QUIC. Ne përfshiu bibliotekën e rrjetit nga , e cila përmban versionin origjinal të protokollit të Google, gQUIC. Kjo implementim gjithashtu përmirësohet vazhdimisht për t'u përputhur me specifikimin më të fundit të IETF.
Së pari, ne integuam Cronet në aplikacionet tona Android për të shtuar mbështetje për QUIC. Integrimi u realizua në një mënyrë që reduktonte sa më shumë shpenzimet e migrimit. Në vend që të zëvendësonim tërësisht stekën e vjetër të rrjetit që përdorte bibliotekën , ne integuam Cronet Nà kuadër të API-së së OkHttp. Duke e realizuar integrimin në këtë mënyrë, ne shmanguam ndryshime në thirrjet tona rrjetore (të cilat përdorin ) në nivelin e API-së.
Në mënyrë të ngjashme me qasjen tonë për pajisjet Android, ne implementuam Cronet në aplikacionet Uber për iOS, duke kapur trafik HTTP nga , duke përdorur . Kjo abstraksion, e ofruar nga iOS Foundation, trajton të dhënat e URL-ve specifike për protokollin dhe garanton që mund të integrojmë Cronet në aplikacionet tona për iOS pa shpenzime të mëdha migrimi.
Përfundimi i QUIC në balancuesit e Google Cloud
Anës së backend-it, përfundimi i QUIC sigurohet nga infrastruktura e Google Cloud Load balancing, e cila përdor këto krye të përgjigjeve për të mbështetur QUIC. Në përgjithësi, balancuesi shton një krye alt-svc në çdo kërkesë HTTP dhe verifikon mbështetje për QUIC për domain-in. Kur klienti Cronet merr një përgjigje HTTP me këtë krye, ai përdor QUIC për kërkesat e ardhshme HTTP për këtë domain. Pasi balancuesi përfundon QUIC, infrastruktura jonë e dërgon shprehimisht këtë veprim përmes HTTP2/TCP në qendrat tona të të dhënave.
Performanca: rezultatet
Performanca e dhënë është arsyeja kryesore për kërkimin tonë të protokollit më të mirë. Për fillim, ne krijuam një skenë me , për të kuptuar se si do të sillet QUIC nën profile të ndryshme rrjeti. Për të testuar funcionimin e QUIC në rrjetet reale, ne kryem eksperimente duke u lëvizur në New Delhi, duke përdorur trafik të emuluar rrjeti, shumë të ngjashëm me thirrjet HTTP në aplikacionin e pasagjerit.
Eksperimenti 1
Inventari për eksperimentin:
- pajisje testuese Android me steka OkHttp dhe Cronet, për të siguruar që ne drejtojmë trafikun HTTPS përmes TCP dhe QUIC përkatësisht;
- një server emulimi i ndërtuar në Java, i cili dërgon krye të njëjta HTTPS në përgjigje dhe ngarkon pajisjet klient, për të marrë kërkesat nga ato;
- proxy në cloud, të cilat janë fizikisht të vendosura afër Indisë, për të përfunduar lidhjet TCP dhe QUIC. Ndërsa për përfundimin e TCP ne përdorëm një proxy të prapme mbi , ishte e vështirë të gjejmë një proxy të hapur për QUIC. Ne e zhvilluam vetë një proxy për QUIC, duke përdorur stakun bazë QUIC nga Chromium dhe e tij në Chromium si softuer të hapur.
Figura 6. Seti i testeve për TCP vs QUIC përfshinte pajisje Android me OkHttp dhe Cronet, proxy në re për përfundimin e lidhjeve dhe një server simulimi.
Eksperimenti 2
Kur Google e bëri QUIC të disponueshëm përmes , ne përdorëm të njëjtin inventar, por me një modifikim: në vend të NGINX, morëm balancuesit e Google për përfundimin e lidhjeve TCP dhe QUIC nga pajisjet, si dhe për dirigjimin e trafikut HTTPS në serverin simulues. Balancuesit janë të shpërndarë në të gjithë botën, por përdorin një server PoP të afërt me pajisjen (falë gjeolokacionit).
Figura 7. Në eksperimentin e dytë, donim të krahasonim vonesën e përfundimit të TCP dhe QUIC: duke përdorur Google Cloud dhe duke përdorur proxy-në tonë në re.
Si rezultat, na pritën disa zbulime:
- përfundimi përmes PoP përmirësoi performancën e TCP. Sikurse balancuesit përfundojnë lidhjen TCP më afër përdoruesve dhe janë të optimizuar shkëlqyeshëm, kjo ofron RTT më të ulët, çka përmirëson performancën e TCP. Edhe pse ndikimi mbi QUIC ishte më i vogël, prapë ai e kaloi TCP në aspektin e zvogëlimit të vonesave tail (nga 10-30 për qind).
- vonesa do tĂ« ndikohen nga . Edhe pse proxy-ja jonĂ« QUIC ishte mĂ« larg nga pajisjet (me njĂ« vonesĂ« rreth 50 ms mĂ« tĂ« lartĂ«), ajo ofronte performancĂ« tĂ« ngjashme â njĂ« zvogĂ«lues prej 15% nĂ« vonesa nĂ« krahasim me 20% nĂ« percentilin 99 tĂ« TCP. Kjo tregon se kalimi nĂ« milen e fundit Ă«shtĂ« pika e ngushtĂ« nĂ« funksionimin e rrjetit.
Figura 8. Rezultatet e dy eksperimenteve tregojnë se QUIC tejkalon ndjeshëm TCP.
Trafiku në luftë
Të frymëzuar nga eksperimentet, ne implementuam mbështetje për QUIC në aplikacionet tona Android dhe iOS. Ne kryem testimin A/B për të përcaktuar ndikimin e QUIC në qytetet e pranishme të Uber. Në përgjithësi, pamë një zvogëlues të rëndësishëm të vonesave tail në raport me rajonet, operatorët e komunikimit dhe llojin e rrjetit.
NĂ« grafiket mĂ« poshtĂ«, shihen pĂ«rqindjet e pĂ«rmirĂ«simit tĂ« vonesave (95 dhe 99 percentilet) sipas makroregjioneve dhe llojeve tĂ« ndryshme tĂ« rrjetit â LTE, 3G, 2G.
Figura 9. Në testet e luftës, QUIC tejkaloi TCP në vonesa.
Vetëm përpara
Padysh, kjo Ă«shtĂ« vetĂ«m fillimi â implementimi i QUIC nĂ« prodhim ofroi mundĂ«si tĂ« jashtĂ«zakonshme pĂ«r tĂ« pĂ«rmirĂ«suar performancĂ«n e aplikacioneve si nĂ« rrjete stabile ashtu edhe nĂ« ato jo stabile, veçanĂ«risht:
Rritja e mbulimit
Pas analizës së performancës së protokollit në trafik real, ne pamë se rreth 80% e sesioneve e përdorën me sukses QUIC për të gjitha kërkesa, ndërsa 15% e sesioneve përdorën kombinimin e QUIC dhe TCP. Ne supozojmë se ky kombinim ka ndodhur sepse biblioteka Cronet kalon përsëri në TCP për shkak të skadimit të kohës, pasi nuk mund të dallojë ndërprerjet reale të UDP-së nga kushtet e dobëta të rrjetit. Tani jemi duke kërkuar një zgjidhje për këtë problem, ndërsa punojmë për implementimin e mëtejshëm të QUIC.
Optimizimi i QUIC
Trafiku nga aplikacionet celulare është i ndjeshëm ndaj vonesave, por jo ndaj gjerësisë së brezit. Gjithashtu, aplikacionet tona përdoren kryesisht në rrjete celulare. Bazuar në eksperimente, vonesat ende janë të mëdha, edhe pse përdorim proxy për të përfunduar TCP dhe QUIC afër përdoruesve. Ne jemi në kërkim aktiv të mënyrave për të përmirësuar menaxhimin e ngarkesës dhe për të rritur efikasitetin e algoritmeve të QUIC për mbushjen e humbjeve.
Me këto dhe disa përmirësime të tjera, ne planifikojmë të përmirësojmë përvojën e përdoruesve pa marrë parasysh rrjetin dhe rajonin, duke bërë transportin e pakove më të rehatshëm dhe pa ndërprerje më të aksesueshëm në mbarë botën.
Burimi: habr.com
