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!
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:
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.).
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.
Chithunzi 3. Kuchedwa kwa mchira kumatha kusiyana kwambiri pakati pa masiku, koma kwa wogwiritsa ntchito yemweyo.
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.
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":
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.
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.
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.
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).
Chithunzi 7. Pakuyesa kwachiwiri, tinkafuna kufananitsa kutsirizitsa latency ya TCP ndi QUIC: kugwiritsa ntchito Google Cloud ndikugwiritsa ntchito proxy yathu yamtambo.
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.
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.
Chithunzi 9. M'mayesero ankhondo, QUIC inaposa TCP potengera latency.