Protocol ya QUIC ikugwira ntchito: momwe Uber idathandizira kuti igwire bwino ntchito

Protocol ya QUIC ndiyosangalatsa kwambiri kuwonera, ndichifukwa chake timakonda kulemba za izo. Koma ngati zofalitsa zam'mbuyomu za QUIC zinali za mbiri yakale (mbiri yakumaloko, ngati mukufuna) chilengedwe ndi zida, lero ndife okondwa kufalitsa kumasulira kwamtundu wina - tikambirana za kugwiritsa ntchito kwenikweni kwa protocol mu 2019. Komanso, sitikulankhula za zomangamanga zazing'ono zomwe zimatchedwa garaja, koma za Uber, yomwe imagwira ntchito pafupifupi padziko lonse lapansi. Momwe mainjiniya a kampaniyo adafikira pa chisankho chogwiritsa ntchito QUIC popanga, momwe amachitira mayeso ndi zomwe adawona atazitulutsa popanga - pansi pa kudula.

Zithunzizo zimangodina. Sangalalani kuwerenga!

Protocol ya QUIC ikugwira ntchito: momwe Uber idathandizira kuti igwire bwino ntchito

Uber ili ndi masikelo apadziko lonse lapansi, omwe ndi mizinda 600 yopezeka, mu umodzi uliwonse kugwiritsa ntchito kumadalira pa intaneti opanda zingwe kuchokera kwa ogwiritsa ntchito ma cellular opitilira 4500. Ogwiritsa ntchito amayembekeza kuti pulogalamuyi isakhale yofulumira, koma mu nthawi yeniyeni - kuti akwaniritse izi, pulogalamu ya Uber imafunikira latency yochepa komanso kugwirizana kodalirika kwambiri. Kalanga, koma stack HTTP / 2 sichichita bwino mumanetiweki opanda zingwe osinthika komanso otayika. Tidazindikira kuti pakadali pano, magwiridwe antchito otsika amagwirizana mwachindunji ndi kukhazikitsidwa kwa TCP pamakina ogwiritsira ntchito.

Kuti tithane ndi vutoli, tinafunsira Mendulo, ndondomeko yamakono yowonjezera njira yomwe imatipatsa mphamvu zambiri pa kayendetsedwe ka kayendetsedwe ka kayendetsedwe ka kayendetsedwe ka kayendetsedwe kake. Panopa gulu logwira ntchito IETF imayimira QUIC ngati HTTP / 3.

Titayesa mozama, tidawona kuti kugwiritsa ntchito QUIC mukugwiritsa ntchito kwathu kungayambitse kuchepa kwa mchira poyerekeza ndi TCP. Tidawona kutsika kwapakati pa 10-30% pamayendedwe a HTTPS pamayendedwe oyendetsa ndi okwera. QUIC idatipatsanso mphamvu zowongolera mpaka kumapeto kwa phukusi la ogwiritsa ntchito.

M'nkhaniyi, tikugawana zomwe takumana nazo pakukonzekera TCP pa mapulogalamu a Uber pogwiritsa ntchito stack yomwe imathandizira QUIC.

Ukadaulo waposachedwa: TCP

Masiku ano, TCP ndiye njira yomwe imagwiritsidwa ntchito kwambiri popereka magalimoto a HTTPS pa intaneti. TCP imapereka njira yodalirika ya ma byte, potero kuthana ndi kusokonekera kwa maukonde ndi kutayika kwa ulalo. Kugwiritsiridwa ntchito kofala kwa TCP kwa HTTPS traffic ndi chifukwa cha kuchuluka kwa m'mbuyomu (pafupifupi OS iliyonse ili ndi TCP), kupezeka pazinthu zambiri (monga zolemetsa, ma proxies a HTTPS ndi ma CDN), komanso magwiridwe antchito akunja omwe akupezeka. pafupifupi pafupifupi nsanja ndi maukonde.

Ogwiritsa ntchito ambiri amagwiritsa ntchito pulogalamu yathu popita, ndipo ma latency a TCP analibe pafupi ndi zomwe timakonda HTTPS traffic. Mwachidule, ogwiritsa ntchito padziko lonse lapansi adakumana ndi izi - Chithunzi 1 chikuwonetsa kuchedwa m'mizinda yayikulu:

Protocol ya QUIC ikugwira ntchito: momwe Uber idathandizira kuti igwire bwino ntchito
Chithunzi 1: Kuchedwa kwa mchira kumasiyanasiyana m'mizinda ikuluikulu ya Uber.

Ngakhale latency mumanetiweki aku India ndi aku Brazil anali apamwamba kuposa ku US ndi UK, kuchedwa kwa mchira ndikokwera kwambiri kuposa kuchedwa kwapakati. Ndipo izi ndi zoona ngakhale ku US ndi UK.

TCP pakuchita mlengalenga

TCP idapangidwira wawaya ma network, ndiye kuti, ndikugogomezera maulalo odziwikiratu kwambiri. Komabe, opanda zingwe maukonde ali ndi makhalidwe awoawo ndi zovuta. Choyamba, ma netiweki opanda zingwe amatha kutayika chifukwa cha kusokonezedwa ndi kuchepetsedwa kwa ma sign. Mwachitsanzo, ma Wi-Fi amakhudzidwa ndi ma microwave, bluetooth ndi mafunde ena a wailesi. Ma netiweki am'manja amavutika ndi kutayika kwa ma sign (njira yotayika) chifukwa chowunikira / kuyamwa kwa chizindikiro ndi zinthu ndi nyumba, komanso kuchokera kusokoneza kuchokera kwa oyandikana nawo nsanja za cell. Izi zimapangitsa kuti zikhale zofunikira kwambiri (nthawi 4-10) komanso zosiyanasiyana Nthawi Yobwereza (RTT) ndi kutayika kwa paketi poyerekeza ndi kulumikizidwa kwa waya.

Pofuna kuthana ndi kusinthasintha kwa bandwidth ndi kutayika, ma network am'manja nthawi zambiri amagwiritsa ntchito zotchingira zazikulu pakuphulika kwa magalimoto. Izi zitha kuyambitsa mizere mochulukira, zomwe zikutanthauza kuchedwa kwanthawi yayitali. Nthawi zambiri TCP imawona pamzerewu ngati chiwonongeko chifukwa cha nthawi yayitali, chifukwa chake TCP imakonda kutumizirana mauthenga ndikudzaza buffer. Vutoli limadziwika kuti bufferbloat (kuchuluka kwa ma network, buffer bloat), ndipo izi ndizovuta kwambiri vuto lalikulu Intaneti yamakono.

Pomaliza, machitidwe a ma netiweki am'manja amasiyanasiyana ndi chonyamulira, dera, ndi nthawi. Pachithunzi 2, tasonkhanitsa kuchedwa kwapakati kwa magalimoto a HTTPS pama cell mkati mwa mtunda wamakilomita awiri. Zambiri zomwe zasonkhanitsidwa kwa oyendetsa ma cellular awiri ku Delhi, India. Monga mukuonera, magwiridwe antchito amasiyanasiyana kuchokera ku selo kupita ku selo. Komanso, zokolola za wogwiritsa ntchito m'modzi zimasiyana ndi zachiwiri. Izi zimatengera zinthu monga njira zolowera pa intaneti potengera nthawi ndi malo, kuyenda kwa ogwiritsa ntchito, komanso zida zama network zomwe zimatengera kachulukidwe ka nsanja komanso kuchuluka kwa mitundu ya maukonde (LTE, 2G, etc.).

Protocol ya QUIC ikugwira ntchito: momwe Uber idathandizira kuti igwire bwino ntchito
Chithunzi 2. Kuchedwa kugwiritsa ntchito 2 km radius mwachitsanzo. Delhi, India.

Komanso, magwiridwe antchito a ma netiweki am'manja amasiyanasiyana pakapita nthawi. Chithunzi 3 chikuwonetsa kuchedwa kwapakati pa tsiku la sabata. Tinaonanso kusiyana pamlingo wocheperako, mkati mwa tsiku limodzi ndi ola limodzi.

Protocol ya QUIC ikugwira ntchito: momwe Uber idathandizira kuti igwire bwino ntchito
Chithunzi 3. Kuchedwa kwa mchira kumatha kusiyana kwambiri pakati pa masiku, koma kwa wogwiritsa ntchito yemweyo.

Zonse zomwe zili pamwambazi zimapangitsa kuti ntchito ya TCP ikhale yosagwira ntchito pamanetiweki opanda zingwe. Komabe, tisanayang'ane njira zina za TCP, tinkafuna kumvetsetsa bwino mfundo izi:

  • Kodi TCP ndiyomwe idayambitsa vuto lalikulu pakugwiritsa ntchito kwathu?
  • Kodi maukonde amakono ali ndi kuchedwa kwakukulu komanso kosiyanasiyana (RTT)?
  • Kodi zotsatira za RTT ndi kutayika pa ntchito ya TCP ndi chiyani?

TCP Performance Analysis

Kuti timvetsetse momwe tidasankhira magwiridwe antchito a TCP, tiyeni tiwone mwachangu momwe TCP imasamutsira deta kuchokera kwa wotumiza kupita kwa wolandila. Choyamba, wotumizayo amakhazikitsa kugwirizana kwa TCP, kuchita njira zitatu kugwirana chanza: Wotumiza amatumiza paketi ya SYN, amadikirira paketi ya SYN-ACK kuchokera kwa wolandira, kenako amatumiza paketi ya ACK. Chiphaso chowonjezera chachiwiri ndi chachitatu chimagwiritsidwa ntchito kukhazikitsa kulumikizana kwa TCP. Wolandirayo amavomereza kulandila paketi iliyonse (ACK) kuti atsimikizire kutumizidwa kodalirika.

Ngati paketi kapena ACK itatayika, wotumiza amatumizanso pakatha nthawi (RTO, retransmission nthawi yatha). RTO imawerengedwa mosunthika kutengera zinthu zosiyanasiyana, monga kuchedwa kwa RTT pakati pa wotumiza ndi wolandila.

Protocol ya QUIC ikugwira ntchito: momwe Uber idathandizira kuti igwire bwino ntchito
Chithunzi 4. Kusinthana kwa paketi pa TCP / TLS kumaphatikizapo njira yobweretsera.

Kuti tidziwe momwe TCP imagwirira ntchito pazogwiritsa ntchito, tidayang'anira mapaketi a TCP pogwiritsa ntchito wcputu kwa sabata imodzi pamayendedwe omenyera nkhondo akuchokera ku ma seva aku India. Kenako tidasanthula kulumikizana kwa TCP pogwiritsa ntchito tcptrace. Kuphatikiza apo, tidapanga pulogalamu ya Android yomwe imatumiza kuchuluka kwa anthu ku seva yoyeserera, kutengera kuchuluka kwa magalimoto momwe tingathere. Mafoni am'manja omwe ali ndi pulogalamuyi adagawidwa kwa antchito angapo, omwe adatolera zipika kwa masiku angapo.

Zotsatira za mayesero onsewa zinali zogwirizana. Tinawona maulendo apamwamba a RTT; mitengo ya mchira inali pafupifupi nthawi 6 kuposa mtengo wapakatikati; kuchuluka kwa kuchedwa kwa masamu kumaposa sekondi imodzi. Malumikizidwe ambiri adatayika, zomwe zidapangitsa TCP kutumizanso 1% ya mapaketi onse. M'madera odzaza anthu monga ma eyapoti ndi masitima apamtunda, tawona kutayika kwa 3,5%. Zotsatirazi zikukayikitsa zanzeru zomwe zimagwiritsidwa ntchito pamanetiweki am'manja mabwalo apamwamba otumiziranso kuchepetsa kwambiri zotayika pamlingo wamayendedwe. M'munsimu muli zotsatira zoyeserera kuchokera ku pulogalamu ya "simulator":

Network metrics
Makhalidwe

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

Kusiyana kwa RTT, masekondi
Pafupifupi ~1,2 s

Kutayika kwa paketi pamalumikizidwe osakhazikika
Avereji ~ 3.5% (7% m'malo odzaza)

Pafupifupi theka la maulumikizidwewa anali ndi paketi imodzi yotayika, ambiri mwa iwo SYN ndi SYN-ACK mapaketi. Zochita zambiri za TCP zimagwiritsa ntchito mtengo wa RTO wa 1 sekondi pamapaketi a SYN, omwe amawonjezeka kwambiri pakutayika kotsatira. Nthawi zotsegula zitha kuwonjezeka chifukwa TCP imatenga nthawi yayitali kukhazikitsa maulumikizidwe.

Pankhani ya mapaketi a data, ma RTO apamwamba amachepetsa kwambiri kugwiritsa ntchito maukonde pamaso pa kutayika kwakanthawi kwama network opanda zingwe. Tidapeza kuti nthawi yotumiziranso pafupifupi mphindi imodzi ndikuchedwa kwa masekondi pafupifupi 1. Machedwe apamwamba awa pamlingo wa TCP adapangitsa kuti HTTPS ichoke ndikufunsiranso, ndikuwonjezera kuchedwa kwa netiweki komanso kusagwira ntchito bwino.

Ngakhale kuti 75th percentile ya RTT yoyezedwa inali pafupi ndi 425 ms, 75th percentile ya TCP inali pafupifupi masekondi atatu. Izi zikuwonetsa kuti kutayika kudapangitsa kuti TCP itenge ma pass 3-7 kuti itumize bwino deta. Izi zitha kukhala zotsatira za kuwerengera kosakwanira kwa RTO, kulephera kwa TCP kuyankha mwachangu pakutayika. mapepala atsopano pazenera ndi kusagwira ntchito bwino kwa aligorivimu yowongolera, zomwe sizisiyanitsa pakati pa zotayika zopanda zingwe ndi zotayika chifukwa cha kuchuluka kwa maukonde. Pansipa pali zotsatira za mayeso otayika a TCP:

Ziwerengero zotayika za paketi ya TCP
mtengo

Maperesenti olumikizana ndi paketi imodzi yotayika
45%

Maperesenti olumikizana ndi zotayika panthawi yolumikizana
30%

Maperesenti olumikizana ndi zotayika panthawi yakusinthana kwa data
76%

Kugawa kwa kuchedwa pakutumizanso, masekondi [50%, 75%, 95%,99%] [ 1, 2.8:15, 28, XNUMX ]

Kugawidwa kwa chiwerengero cha retransmissions kwa paketi imodzi kapena gawo la TCP
[1,3,6,7]

Kugwiritsa ntchito kwa QUIC

Poyambirira ndi Google, QUIC ndi njira yamakono yoyendera maulendo ambiri yomwe imayenda pamwamba pa UDP. Pakadali pano QUIC ili mkati standardization ndondomeko (tidalemba kale kuti pali, titero, mitundu iwiri ya QUIC, yofuna kudziwa akhoza kutsatira ulalo - pafupifupi. womasulira). Monga momwe tawonetsera pa Chithunzi 5, QUIC imayikidwa pansi pa HTTP/3 (kwenikweni, HTTP/2 pamwamba pa QUIC ndi HTTP/3, yomwe tsopano ikukhazikika mwamphamvu). Imalowetsa pang'ono zigawo za HTTPS ndi TCP pogwiritsa ntchito UDP kupanga mapaketi. QUIC imangothandizira kusamutsa kwa data kotetezedwa popeza TLS imamangidwa mu QUIC.

Protocol ya QUIC ikugwira ntchito: momwe Uber idathandizira kuti igwire bwino ntchito
Chithunzi 5: QUIC ikuyenda pansi pa HTTP/3, m'malo mwa TLS, yomwe kale inkayenda pansi pa HTTP/2.

Pansipa pali zifukwa zomwe zidatitsimikizira kugwiritsa ntchito QUIC pakukulitsa TCP:

  • Kukhazikitsidwa kwa 0-RTT. QUIC imalola kugwiritsidwanso ntchito kwa zilolezo kuchokera kumalumikizidwe am'mbuyomu, kuchepetsa kuchuluka kwachitetezo chachitetezo. M'tsogolomu Chithunzi cha TLS1.3 imathandizira 0-RTT, koma kugwirana chanza kwa njira zitatu za TCP kudzafunikabe.
  • kugonjetsa HoL kutsekereza. HTTP/2 imagwiritsa ntchito kulumikizidwa kumodzi kwa TCP pa kasitomala aliyense kuti apititse patsogolo magwiridwe antchito, koma izi zitha kuyambitsa kutsekeka kwa HoL (mutu wa mzere). QUIC imathandizira kuchulukitsa ndikupereka zopempha ku pulogalamuyo palokha.
  • kuwongolera kusokonekera. QUIC imakhala pamalo ogwiritsira ntchito, kupangitsa kuti ikhale yosavuta kusinthira njira yayikulu yoyendera yomwe imawongolera kutumiza kutengera magawo a netiweki (chiwerengero cha zotayika kapena RTT). Nthawi zambiri TCP imagwiritsa ntchito algorithm KUKHALA, zomwe sizili bwino pamagalimoto omwe ali ndi latency-sensitive traffic. Ma aligorivimu opangidwa posachedwa ngati BBR, khazikitsani maukonde molondola ndikuwongolera kuchedwa. QUIC imakulolani kugwiritsa ntchito BBR ndikusintha ndondomekoyi momwe ikugwiritsidwira ntchito. kusintha.
  • kubwezeretsanso zotayika. QUIC imayimba ma TLP awiri (kufufuza kwa mchira) RTO isanayambike - ngakhale zotayika zikuwonekera kwambiri. Izi ndizosiyana ndi kukhazikitsa kwa TCP. TLP imatumizanso makamaka paketi yomaliza (kapena yatsopano, ngati ilipo) kuti iyambitse kubwezeretsanso mwachangu. Kugwira kuchedwa kwa mchira ndikothandiza kwambiri pa momwe Uber imagwirira ntchito netiweki yake, monga kusamutsa deta kwakanthawi kochepa, kwakanthawi kochepa, komanso kochedwa.
  • wokometsedwa ACK. Popeza paketi iliyonse ili ndi nambala yotsatizana, palibe vuto kusiyana mapaketi pamene atumizidwanso. Mapaketi a ACK amakhalanso ndi nthawi yokonza paketi ndikupanga ACK kumbali ya kasitomala. Izi zimatsimikizira kuti QUIC imawerengera RTT molondola. ACK mu QUIC imathandizira mpaka magulu 256 NACK, kuthandiza wotumizayo kukhala wolimba mtima pakusuntha paketi ndikugwiritsa ntchito ma byte ochepa pochita izi. Kusankha ACK (BAG) mu TCP sichithetsa vutoli nthawi zonse.
  • kusamuka kwa kulumikizana. Kulumikizana kwa QUIC kumadziwika ndi ID ya 64-bit, kotero ngati kasitomala asintha ma adilesi a IP, ID yakale yolumikizira ikhoza kupitiliza kugwiritsidwa ntchito pa adilesi yatsopano ya IP popanda kusokonezedwa. Izi ndizofala kwambiri pamapulogalamu am'manja pomwe wogwiritsa ntchito amasintha pakati pa Wi-Fi ndi ma cellular.

Njira zina za QUIC

Tidawona njira zina zothetsera vutoli tisanasankhe QUIC.

Chinthu choyamba chomwe tidayesa chinali kuyika TPC PoPs (Points of Presence) kuti athetse kulumikizana kwa TCP pafupi ndi ogwiritsa ntchito. Kwenikweni, ma PoPs amathetsa kulumikizidwa kwa TCP ndi foni yam'manja pafupi ndi netiweki yam'manja ndikuyimira magalimoto kubwerera kuzinthu zoyambirira. Pothetsa TCP pafupi, titha kuchepetsa RTT ndikuwonetsetsa kuti TCP imamvera malo opanda zingwe. Komabe, zoyesera zathu zasonyeza kuti zambiri za RTT ndi kutayika zimachokera ku ma cellular networks ndipo kugwiritsa ntchito PoPs sikumapereka kusintha kwakukulu kwa ntchito.

Tidayang'ananso pakusintha magawo a TCP. Kukhazikitsa stack ya TCP pa ma seva athu am'mphepete mwamitundu yosiyanasiyana kunali kovuta chifukwa TCP ili ndi machitidwe osiyanasiyana m'mitundu yosiyanasiyana ya OS. Zinali zovuta kukhazikitsa izi ndikuyesa masinthidwe osiyanasiyana. Kukhazikitsa TCP mwachindunji pazida zam'manja sikunali kotheka chifukwa chosowa zilolezo. Chofunika kwambiri, zinthu monga kulumikizidwa kwa 0-RTT ndi kulosera kwabwino kwa RTT ndizofunika kwambiri pamapangidwe a protocol, chifukwa chake ndizosatheka kupeza phindu lalikulu pakukonza TCP yokha.

Pomaliza, tidawunika ma protocol angapo a UDP omwe amathetsa kusanja kwamavidiyo - tinkafuna kuwona ngati ma protocolwa angatithandize. Tsoka ilo, iwo anali akusowa kwambiri muzinthu zambiri zachitetezo, ndipo amafunikiranso kulumikizana kowonjezera kwa TCP kwa metadata ndi chidziwitso chowongolera.

Kafukufuku wathu wasonyeza kuti QUIC mwina ndiyo njira yokhayo yomwe ingathandize ndi vuto la kuchuluka kwa anthu pa intaneti, poganizira za chitetezo ndi ntchito.

Kuphatikiza kwa QUIC papulatifomu

Kuti tiyike bwino QUIC ndikuwongolera magwiridwe antchito m'malo osalumikizana bwino, tidasintha stack yakale (HTTP/2 pa TLS/TCP) ndi protocol ya QUIC. Tidagwiritsa ntchito laibulale ya netiweki Cronet kuchokera Chromium Projects, yomwe ili ndi choyambirira, Google ya protocol - gQUIC. Kukhazikitsa uku kukukonzedwanso nthawi zonse kuti mutsatire zomwe IETF yaposachedwa.

Tidaphatikiza koyamba Cronet mu mapulogalamu athu a Android kuti tiwonjezere thandizo la QUIC. Kuphatikiza kunkachitika m'njira yochepetsera ndalama zosamukira kumayiko ena momwe zingathere. M'malo mosinthanso malo akale ochezera a pa intaneti omwe adagwiritsa ntchito laibulale ChabwinoHttp, taphatikiza Cronet PANSI ndi ndondomeko ya OkHttp API. Pochita kuphatikiza motere, tapewa kusintha kwa mafoni athu pamanetiweki (omwe amagwiritsidwa ntchito ndi Kubweza) pamlingo wa API.

Mofanana ndi njira yazida za Android, tidayika Cronet mu mapulogalamu a Uber pa iOS, kuletsa kuchuluka kwa HTTP pamaneti. APIkugwiritsa NSURLProtocol. Chidulechi, choperekedwa ndi iOS Foundation, chimakhala ndi data ya URL yeniyeni ndikuwonetsetsa kuti titha kuphatikiza Cronet ndi mapulogalamu athu a iOS popanda ndalama zambiri zosamukira.

Kumaliza QUIC pa Google Cloud Balancers

Kumbali yakumbuyo, kumaliza kwa QUIC kumaperekedwa ndi Google Cloud Load balancing infrastructure, yomwe imagwiritsa ntchito alt-svc mitu poyankha kuthandizira QUIC. Nthawi zambiri, wowerengera amawonjezera mutu wa alt-svc pa pempho lililonse la HTTP, ndipo izi zimatsimikizira kale kuthandizira kwa QUIC pa domain. Makasitomala a Cronet akalandira yankho la HTTP ndi mutuwu, amagwiritsa ntchito QUIC pazofunsitsa za HTTP ku domain imeneyo. Wolinganiza akamaliza QUIC, zomangamanga zathu zimatumiza izi kudzera pa HTTP2/TCP kumalo athu a data.

Magwiridwe: Zotsatira

Kuchita kwa zotuluka ndiye chifukwa chachikulu chosakasaka protocol yabwinoko. Poyamba, tinapanga choyimira ndi kutsanzira maukondekuti mudziwe momwe QUIC idzakhalira pansi pa mbiri zosiyanasiyana zapaintaneti. Kuti tiyese momwe QUIC imagwirira ntchito pamanetiweki adziko lenileni, tidayesa zoyeserera tikuyendetsa mozungulira New Delhi pogwiritsa ntchito mayendedwe apamtaneti ofanana kwambiri ndi mafoni a HTTP mu pulogalamu yonyamula anthu.

Kuyesera 1

Zida zoyeserera:

  • yesani zida za Android zokhala ndi ma stacks a OkHttp ndi Cronet kuti muwonetsetse kuti tikulola kuchuluka kwa magalimoto a HTTPS pa TCP ndi QUIC motsatana;
  • seva yotsatsira yochokera ku Java yomwe imatumiza mitu yofananira ya HTTPS poyankha ndikunyamula zida zamakasitomala kuti alandire zopempha kuchokera kwa iwo;
  • ma proxies amtambo omwe ali pafupi ndi India kuti athetse kulumikizana kwa TCP ndi QUIC. Pomwe tidayimitsa TCP tidagwiritsa ntchito reverse proxy NGINX, zinali zovuta kupeza gwero lotseguka la QUIC. Tidapanga choyimira chakumbuyo cha QUIC tokha pogwiritsa ntchito stack ya QUIC yochokera ku Chromium ndi lofalitsidwa mu chromium ngati gwero lotseguka.

Protocol ya QUIC ikugwira ntchito: momwe Uber idathandizira kuti igwire bwino ntchitoProtocol ya QUIC ikugwira ntchito: momwe Uber idathandizira kuti igwire bwino ntchito
Chithunzi 6. TCP vs QUIC road test suite inali ndi zida za Android zokhala ndi OkHttp ndi Cronet, ma proxies amtambo oletsa kulumikizana, ndi seva yotsatsira.

Kuyesera 2

Pamene Google idapanga QUIC kupezeka ndi Google Cloud Load Balancing, tinagwiritsa ntchito zolemba zomwezo, koma ndi kusinthidwa kumodzi: mmalo mwa NGINX, tinatenga Google load balancers kuti tithetse ma TCP ndi QUIC kugwirizana kuchokera ku zipangizo, komanso kuyendetsa magalimoto a HTTPS ku seva yotsanzira. Zosungira zimagawidwa padziko lonse lapansi, koma gwiritsani ntchito seva ya PoP yomwe ili pafupi kwambiri ndi chipangizocho (zikomo ku geolocation).

Protocol ya QUIC ikugwira ntchito: momwe Uber idathandizira kuti igwire bwino ntchito
Chithunzi 7. Pakuyesa kwachiwiri, tinkafuna kufananitsa kutsirizitsa latency ya TCP ndi QUIC: kugwiritsa ntchito Google Cloud ndikugwiritsa ntchito proxy yathu yamtambo.

Zotsatira zake, mavumbulutso angapo akutiyembekezera:

  • Kuthetsa kudzera pa PoP kunapititsa patsogolo ntchito ya TCP. Popeza owongolera amathetsa kulumikizana kwa TCP pafupi ndi ogwiritsa ntchito ndipo amakometsedwa kwambiri, izi zimabweretsa ma RTT otsika, omwe amathandizira magwiridwe antchito a TCP. Ndipo ngakhale QUIC sinakhudzidwe kwambiri, idapitilirabe TCP pochepetsa kuchepa kwa mchira (ndi 10-30 peresenti).
  • michira imakhudzidwa ma network hops. Ngakhale pulojekiti yathu ya QUIC inali kutali ndi zida (pafupifupi 50 ms apamwamba latency) kuposa zolemetsa zolemetsa za Google, zidaperekanso magwiridwe antchito ofanana - kutsika kwa 15% kwa latency motsutsana ndi kutsika kwa 20% mu 99th percentile ya TCP. Izi zikuwonetsa kuti kusintha kwa mailosi komaliza ndikulepheretsa netiweki.

Protocol ya QUIC ikugwira ntchito: momwe Uber idathandizira kuti igwire bwino ntchitoProtocol ya QUIC ikugwira ntchito: momwe Uber idathandizira kuti igwire bwino ntchito
Chithunzi 8: Zotsatira zochokera ku mayesero awiri zimasonyeza kuti QUIC imaposa TCP kwambiri.

Limbanani ndi kuchuluka kwa magalimoto

Molimbikitsidwa ndi kuyesa, takhazikitsa thandizo la QUIC mu mapulogalamu athu a Android ndi iOS. Tidachita mayeso a A/B kuti tidziwe momwe QUIC imakhudzira mizinda yomwe Uber imagwirira ntchito. Mwambiri, tawona kuchepa kwakukulu kwa kuchedwa kwa mchira m'magawo onse awiri, oyendetsa ma telecom ndi mtundu wa netiweki.

Ma grafu omwe ali pansipa akuwonetsa kusintha kwa michira (95 ndi 99 percentiles) ndi zigawo zazikulu ndi mitundu yosiyanasiyana ya maukonde - LTE, 3G, 2G.
Protocol ya QUIC ikugwira ntchito: momwe Uber idathandizira kuti igwire bwino ntchitoProtocol ya QUIC ikugwira ntchito: momwe Uber idathandizira kuti igwire bwino ntchito
Chithunzi 9. M'mayesero ankhondo, QUIC inaposa TCP potengera latency.

Patsogolo pokha

Mwina ichi ndi chiyambi chabe - kutulutsidwa kwa QUIC mukupanga kwapereka mwayi wodabwitsa wopititsa patsogolo magwiridwe antchito pamanetiweki okhazikika komanso osakhazikika, omwe ndi:

Kuwonjezeka kwa kufalitsa

Titasanthula momwe ma protocol amagwirira ntchito pamagalimoto enieni, tidawona kuti pafupifupi 80% ya magawo adagwiritsa ntchito QUIC всСх zopempha, pamene 15% ya magawo adagwiritsa ntchito kuphatikiza kwa QUIC ndi TCP. Tikuganiza kuti kuphatikizaku kudachitika chifukwa cha nthawi yofikira laibulale ya Cronet kubwerera ku TCP, popeza siyingathe kusiyanitsa pakati pa zolephera zenizeni za UDP ndi zovuta zama network. Pakali pano tikuyang'ana njira yothetsera vutoli pamene tikuyesetsa kukwaniritsa QUIC.

Kukhathamiritsa kwa QUIC

Magalimoto ochokera ku mapulogalamu am'manja amakhudzidwa ndi latency, koma osati bandwidth. Komanso, mapulogalamu athu amagwiritsidwa ntchito makamaka pamanetiweki am'manja. Kutengera zoyeserera, ma latency a mchira akadali okwera ngakhale kugwiritsa ntchito projekiti kuti athetse TCP ndi QUIC pafupi ndi ogwiritsa ntchito. Tikuyang'ana mwachangu njira zosinthira kasamalidwe kazambiri komanso kukonza bwino kwa ma algorithms obwezeretsa kutayika kwa QUIC.

Ndi zosinthazi ndi zina zingapo, tikukonzekera kupititsa patsogolo luso la ogwiritsa ntchito mosasamala kanthu za maukonde ndi dera, kupangitsa kuti zoyendera zapaketi zosavuta komanso zopanda msoko zizipezeka padziko lonse lapansi.

Source: www.habr.com

Kuwonjezera ndemanga