Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

Cibiyoyin bayanai na zamani suna da ɗaruruwan na'urori masu aiki da aka shigar, waɗanda nau'ikan sa ido daban-daban ke rufe su. Amma ko da ingantacciyar injiniya mai cikakken sa ido a hannu zai iya ba da amsa daidai ga gazawar hanyar sadarwa a cikin 'yan mintuna kaɗan. A cikin rahoto a taron na gaba Hop 2020, na gabatar da tsarin ƙirar hanyar sadarwa na DC, wanda ke da fasali na musamman - cibiyar bayanai tana warkar da kanta a cikin millise seconds. Daidai sosai, injiniyan ya kwantar da hankali yana gyara matsalar, yayin da sabis ɗin ba sa lura da shi kawai.

- Da farko, zan ba da cikakkiyar gabatarwa ga waɗanda ƙila ba su san tsarin DC na zamani ba.
Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

Ga injiniyoyin cibiyar sadarwa da yawa, cibiyar sadarwar cibiyar bayanai ta fara, ba shakka, tare da ToR, tare da sauyawa a cikin tara. ToR yawanci yana da nau'ikan hanyoyin haɗin gwiwa guda biyu. Ƙananan suna zuwa uwar garken, wasu - akwai N sau fiye da su - suna zuwa ga kashin baya na matakin farko, wato, zuwa abubuwan da ke sama. Uplinks yawanci ana ɗaukarsu daidai ne, kuma zirga-zirga tsakanin hanyoyin haɗin kai yana daidaitawa bisa zanta daga 5-tuple, wanda ya haɗa da proto, src_ip, dst_ip, src_port, dst_port. Babu mamaki anan.
Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

Na gaba, menene tsarin gine-ginen shirin yayi kama? Spines na matakin farko ba a haɗa su da juna ba, amma an haɗa su ta hanyar superspines. Harafin X zai kasance alhakin superspines; kusan kamar haɗin giciye ne.
Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

Kuma a bayyane yake cewa, a gefe guda, tori yana da alaƙa da duk spines na matakin farko. Menene mahimmanci a wannan hoton? Idan muna da hulɗa a cikin rakiyar, to, hulɗar, ba shakka, ta shiga cikin ToR. Idan hulɗar ta faru a cikin tsarin, to, hulɗar yana faruwa ta hanyar spines matakin farko. Idan hulɗar ta kasance tsaka-tsaki - kamar a nan, ToR 1 da ToR 2 - to, hulɗar za ta tafi ta hanyar spines na duka matakan farko da na biyu.
Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

A ka'idar, irin wannan gine-gine yana da sauƙi mai sauƙi. Idan muna da ƙarfin tashar jiragen ruwa, sararin sararin samaniya a cikin cibiyar bayanai da kuma fiber da aka rigaya, to ana iya ƙara yawan hanyoyi a koyaushe, don haka ƙara yawan ƙarfin tsarin. Wannan yana da sauƙin yi akan takarda. Zai zama haka a rayuwa. Amma labarin yau ba akan haka bane.
Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

Ina so a yanke shawarar da ta dace. Muna da hanyoyi da yawa a cikin cibiyar bayanai. Suna da 'yancin kai bisa sharadi. Hanya ɗaya a cikin cibiyar bayanai mai yiwuwa ne kawai a cikin ToR. A cikin tsarin, muna da adadin hanyoyi daidai da adadin hanyoyi. Adadin hanyoyi tsakanin kayayyaki yana daidai da samfurin adadin jiragen sama da adadin superspines a cikin kowane jirgin sama. Don ƙarin bayani, don samun ma'anar ma'auni, zan ba da lambobi waɗanda ke aiki don ɗaya daga cikin cibiyoyin bayanan Yandex.
Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

Akwai jirage takwas, kowane jirgin yana da 32 superspines. A sakamakon haka, yana nuna cewa akwai hanyoyi guda takwas a cikin tsarin, kuma tare da hulɗar intermodule akwai 256 daga cikinsu.

Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

Wato, idan muna haɓaka littafin Cookbook, ƙoƙarin koyon yadda ake gina cibiyoyin bayanan da ba su dace ba waɗanda ke warkar da kansu, to tsarin gine-ginen tsarin shine zaɓin da ya dace. Yana magance matsalar ƙira, kuma a ka'idar yana da sauƙi. Akwai hanyoyi masu zaman kansu da yawa. Tambayar ta kasance: ta yaya irin wannan gine-ginen ke tsira daga kasawa? Akwai gazawa iri-iri. Kuma za mu tattauna wannan a yanzu.
Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

Bari daya daga cikin mu superspines "yi rashin lafiya". Anan na koma gine-ginen jirgi biyu. Za mu tsaya tare da waɗannan a matsayin misali domin zai zama sauƙi don ganin abin da ke faruwa tare da ƙananan sassa masu motsi. Bari X11 yayi rashin lafiya. Ta yaya wannan zai shafi ayyukan da ke zaune a cikin cibiyoyin bayanai? Yawancin ya dogara da yadda ainihin gazawar ta kasance.
Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

Idan gazawar yana da kyau, an kama shi a matakin sarrafa kansa na BFD iri ɗaya, sarrafa kansa da farin ciki yana sanya mahaɗin matsala kuma ya ware matsalar, to komai yana da kyau. Muna da hanyoyi da yawa, ana sake tura zirga-zirga nan take zuwa madadin hanyoyin, kuma sabis ba zai lura da komai ba. Wannan rubutun mai kyau ne.
Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

Wani mummunan labari shine idan muna da asara akai-akai, kuma sarrafa kansa ba ya lura da matsalar. Don fahimtar yadda wannan ke shafar aikace-aikacen, za mu ɗauki ɗan lokaci don tattauna yadda TCP ke aiki.
Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

Ina fata ba zan gigita kowa da wannan bayanin ba: TCP ƙa'idar tabbatar da watsawa ce. Wato, a cikin mafi sauƙi, mai aikawa ya aika da fakiti biyu kuma ya karɓi tarawa a kansu: "Na karɓi fakiti biyu."
Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

Bayan haka, zai aika ƙarin fakiti biyu, kuma yanayin zai sake maimaitawa. Ina neman afuwa a gaba don sauƙaƙawa. Wannan yanayin yana daidai idan taga (yawan fakitin jirgin) biyu ne. Tabbas, a cikin al'amuran gabaɗaya wannan ba lallai ba ne. Amma girman taga baya shafar mahallin isar da fakiti.
Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

Me zai faru idan muka rasa fakiti 3? A wannan yanayin, mai karɓa zai karɓi fakiti na 1, 2 da 4. Kuma zai gaya wa wanda ya aika a fili ta amfani da zaɓin SACK: "Ka sani, uku sun zo, amma tsakiyar ya ɓace." Ya ce, "Ack 2, BAZA 4."
Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

A wannan lokacin, mai aikawa ba tare da wata matsala ba yana maimaita ainihin fakitin da ya ɓace.
Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

Amma idan fakitin ƙarshe a cikin taga ya ɓace, yanayin zai bambanta gaba ɗaya.

Mai karɓa yana karɓar fakiti uku na farko kuma da farko ya fara jira. Godiya ga wasu ingantawa a cikin tarin TCP na Linux kernel, zai jira fakitin da aka haɗe sai dai in tutoci sun nuna a sarari cewa fakiti ne na ƙarshe ko wani abu makamancin haka. Zai jira har sai lokacin da aka jinkirta ACK ya ƙare sannan a aika da sanarwa a kan fakiti uku na farko. Amma yanzu mai aikawa zai jira. Bai sani ba ko kunshin na huɗu ya ɓace ko yana shirin isowa. Kuma don kar a yi amfani da hanyar sadarwar, za ta yi ƙoƙarin jira a sarari cewa fakitin ya ɓace, ko kuma lokacin RTO ya ƙare.
Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

Menene lokacin RTO? Wannan shine matsakaicin matsakaicin RTT da aka lissafta ta tarin TCP da wasu akai-akai. Wane irin dindindin ne wannan, yanzu za mu tattauna.
Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

Amma abin da ke da muhimmanci shi ne, idan muka sake rashin sa'a kuma an sake rasa fakiti na hudu, to RTO ya ninka. Wato, kowane ƙoƙarin da bai yi nasara ba yana nufin ninka lokacin ƙarewa.
Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

Yanzu bari mu ga menene daidai wannan tushe. Ta hanyar tsoho, mafi ƙarancin RTO shine 200 ms. Wannan shine mafi ƙarancin RTO don fakitin bayanai. Don fakitin SYN ya bambanta, 1 seconds. Kamar yadda kuke gani, ko da ƙoƙarin farko na sake aika fakiti zai ɗauki tsawon sau 100 fiye da RTT a cikin cibiyar bayanai.
Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

Yanzu bari mu dawo kan yanayin mu. Me ke faruwa da sabis ɗin? Sabis ɗin ya fara rasa fakiti. Bari sabis ɗin ya yi sa'a a cikin yanayin da farko kuma ya rasa wani abu a tsakiyar taga, sannan ya karɓi SACK kuma ya aika fakitin da suka ɓace.
Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

Amma idan rashin sa'a ya maimaita kansa, to muna da RTO. Menene mahimmanci a nan? Ee, muna da hanyoyi da yawa a cikin hanyar sadarwar mu. Amma zirga-zirgar TCP na haɗin TCP guda ɗaya zai ci gaba da tafiya ta hanyar fashe fashe. Asarar fakiti, muddin wannan sihiri na X11 namu bai fita da kansa ba, baya haifar da zirga-zirgar ababen hawa zuwa wuraren da ba su da matsala. Muna ƙoƙarin isar da fakitin ta wannan fakitin da aka karye. Wannan yana haifar da gazawar cascading: cibiyar bayanai tsari ne na aikace-aikacen hulɗa, kuma wasu haɗin TCP na duk waɗannan aikace-aikacen sun fara raguwa - saboda superspine yana shafar duk aikace-aikacen da ke cikin cibiyar bayanai. Kamar yadda ake cewa: idan ba ka yi wa doki takalma ba, dokin ya rame; dokin ya rame - ba a kai rahoton ba; ba a kai rahoton ba - mun yi rashin nasara a yakin. A nan ne kawai ƙidaya yana cikin daƙiƙa daga lokacin da matsala ta taso zuwa matakin lalacewa wanda sabis ya fara ji. Wannan yana nufin cewa masu amfani na iya rasa wani abu a wani wuri.
Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

Akwai biyu classic mafita da cewa complement juna. Na farko shi ne ayyukan da ke ƙoƙarin sanya bambaro a ciki da magance matsalar kamar haka: "Bari mu tweak wani abu a cikin tarin TCP. Bari mu yi lokutan aiki a matakin aikace-aikacen ko zaman TCP na dogon lokaci tare da duba lafiyar cikin gida." Matsalar ita ce irin waɗannan hanyoyin magance su: a) ba su da girma ko kaɗan; b) ba a duba su sosai. Wato, ko da idan sabis ɗin ya daidaita ma'aunin TCP da gangan ta hanyar da ta sa ya fi kyau, na farko, da wuya a yi amfani da shi ga duk aikace-aikacen da duk cibiyoyin bayanai, kuma na biyu, mai yiwuwa, ba zai fahimci cewa an yi shi ba. daidai , da abin da ba. Wato yana aiki, amma yana aiki mara kyau kuma baya sikeli. Kuma idan akwai matsalar hanyar sadarwa, wa ke da laifi? Hakika, NOC. Me NOC ke yi?

Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

Yawancin ayyuka sunyi imanin cewa a cikin aikin NOC yana faruwa wani abu kamar haka. Amma a gaskiya, ba wai kawai ba.
Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

NOC a cikin tsarin gargajiya yana tsunduma cikin haɓaka tsarin sa ido da yawa. Waɗannan su ne duka baki akwatin da kuma farin akwatin saka idanu. Game da misalin akwatin saka idanu na kashin baya gaya Alexander Klimenko a karshe na gaba Hop. Af, wannan saka idanu yana aiki. Amma ko da manufa saka idanu za su yi da wani lokaci lak. Yawancin lokaci wannan 'yan mintuna ne. Bayan ya tashi, injiniyoyin da ke bakin aiki suna buƙatar lokaci don duba yadda ake gudanar da aikin sau biyu, daidaita matsalar sannan a kashe wurin da matsalar ke faruwa. Wato a mafi kyawun yanayin, magance matsalar yana ɗaukar mintuna 5, a mafi munin yanayi, mintuna 20, idan ba a bayyana inda aka yi asarar ba. A bayyane yake cewa duk wannan lokacin - minti 5 ko 20 - ayyukanmu za su ci gaba da wahala, wanda tabbas ba shi da kyau.
Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

Me kuke so a karɓa? Muna da hanyoyi da yawa. Kuma matsaloli suna tasowa daidai saboda kwararar TCP waɗanda ba su da sa'a suna ci gaba da amfani da hanya ɗaya. Muna buƙatar wani abu da zai ba mu damar amfani da hanyoyi da yawa a cikin haɗin TCP guda ɗaya. Da alama muna da mafita. Akwai TCP, wanda ake kira multipath TCP, wato, TCP don hanyoyi masu yawa. Gaskiya ne, an haɓaka shi don aiki daban-daban - don wayoyin hannu waɗanda ke da na'urorin cibiyar sadarwa da yawa. Don haɓaka canja wuri ko yin yanayin firamare/ajiyayyen, an ƙirƙiri wata hanya mai ƙirƙira zaren (zama) da yawa a bayyane ga aikace-aikacen kuma yana ba ku damar canzawa tsakanin su a yayin da aka sami gazawa. Ko kuma, kamar yadda na ce, ƙara girma.

Amma akwai nuance a nan. Don fahimtar abin da yake, dole ne mu dubi yadda ake kafa zaren.
Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

Ana shigar da zaren bi da bi. An fara shigar da zaren farko. Ana saita zaren da ke gaba ta amfani da kuki da aka riga aka amince da su a cikin wannan zaren. Kuma ga matsalar.
Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

Matsalar ita ce idan zaren farko bai kafa kansa ba, zaren na biyu da na uku ba zai taba tasowa ba. Wato, Multipath TCP baya warware asarar fakitin SYN a farkon kwarara. Kuma idan SYN ya ɓace, Multipath TCP yana juya zuwa TCP na yau da kullun. Wannan yana nufin cewa a cikin yanayin cibiyar bayanai ba zai taimaka mana mu magance matsalar asara a cikin masana'anta ba kuma mu koyi amfani da hanyoyi da yawa a cikin yanayin rashin nasara.
Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

Menene zai iya taimaka mana? Wasu daga cikinku sun riga sun yi hasashe daga taken cewa wani muhimmin filin a cikin ƙarin labarinmu zai zama filin taken taken IPv6 kwarara. Lallai wannan fili ne da ya bayyana a cikin v6, ba a cikin v4 yake ba, ya mamaye 20 bits, kuma an dade ana takaddama kan amfani da shi. Wannan yana da ban sha'awa sosai - akwai rikice-rikice, an gyara wani abu a cikin RFC, kuma a lokaci guda aiwatarwa ya bayyana a cikin Linux kernel, wanda ba a rubuta shi a ko'ina ba.
Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

Ina gayyatar ku ku tafi tare da ni a ɗan bincike. Bari mu kalli abin da ke faruwa a cikin kernel na Linux a cikin ƴan shekarun da suka gabata.

Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

shekara ta 2014. Injiniya daga babban kamfani ɗaya da ake girmamawa yana ƙara wa aikin kwaya ta Linux dogaro da ƙimar alamar kwarara akan socket hash. Me suke kokarin gyarawa a nan? Wannan yana da alaƙa da RFC 6438, wanda ya tattauna batun mai zuwa. A cikin cibiyar bayanai, IPV4 sau da yawa ana lullube shi a cikin fakitin IPv6, saboda masana'antar kanta IPv6 ce, ​​amma IPv4 dole ne a ba da ita a waje. An daɗe ana samun matsaloli tare da maɓallai waɗanda ba za su iya duba ƙarƙashin taken IP guda biyu don isa TCP ko UDP kuma sami src_ports, dst_ports a can. Sai ya zama cewa zanta, idan ka duba na farko na biyu IP headers, ya juya ya zama kusan gyarawa. Don guje wa wannan, ta yadda daidaita wannan cunkoson ababen hawa ke aiki daidai, an ba da shawarar ƙara hash na fakitin 5-tuple da aka lulluɓe zuwa ƙimar filin alamar kwarara. Kusan an yi irin wannan abu don wasu tsare-tsaren rufewa, don UDP, don GRE, na karshen ya yi amfani da filin GRE Key. Wata hanya ko wata, manufofin a nan a bayyane suke. Kuma aƙalla a wancan lokacin a lokacin sun kasance masu amfani.

Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

A cikin 2015, sabon faci ya fito daga injiniyan da ake girmamawa ɗaya. Yana da ban sha'awa sosai. Ya ce mai zuwa - za mu ba da izini ga hash idan wani lamari mara kyau ya faru. Mene ne mummunan aukuwar kwatance? Wannan ita ce RTO da muka tattauna a baya, wato asarar wutsiya ta taga wani lamari ne da ba shi da kyau. Gaskiya, yana da ɗan wuya a yi tsammani cewa haka ne.

Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

2016, wani kamfani mai suna, kuma babba. Yana rarrabuwa na ƙarshe kuma yana sanya shi ta yadda zanta, wanda a baya muka yi bazuwar, yanzu yana canzawa ga kowane SYN sakewa da kuma bayan kowane lokacin RTO. Kuma a cikin wannan wasiƙar, a karo na farko da na ƙarshe, an bayyana maƙasudin maƙasudi - don tabbatar da cewa zirga-zirgar ababen hawa a yayin hasara ko cunkoson tashoshi suna da ikon sake sarrafa su cikin sauƙi da kuma amfani da hanyoyi da yawa. Tabbas, bayan wannan akwai wallafe-wallafe da yawa, zaka iya samun su cikin sauƙi.

Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

Ko da yake a'a, ba za ku iya ba, saboda ba a sami bugu ɗaya kan wannan batu ba. Amma mun sani!

Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

Kuma idan ba ku fahimci abin da aka yi ba, zan gaya muku yanzu.
Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

Menene aka yi, wane aiki aka ƙara zuwa kwaya ta Linux? txhash yana canzawa zuwa ƙimar bazuwar bayan kowane taron RTO. Wannan shi ne mummunan sakamakon kwatance. Hash ɗin ya dogara da wannan txhash, kuma alamar kwarara ya dogara da skb hash. Akwai wasu ƙididdiga akan ayyuka a nan; duk cikakkun bayanai ba za a iya sanya su a kan faifai ɗaya ba. Idan kowa yana son sani, zaku iya shiga cikin lambar kernel kuma ku duba.

Menene mahimmanci a nan? Darajar filin alamar kwarara tana canzawa zuwa lamba bazuwar bayan kowace RTO. Ta yaya wannan ke shafar rafinmu na TCP mara kyau?
Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

Idan SACK ta faru, babu abin da zai canza saboda muna ƙoƙarin sake aika fakitin da aka sani da ya ɓace. Ya zuwa yanzu yana da kyau.
Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

Amma game da RTO, muddin mun ƙara alamar kwarara zuwa aikin hash akan ToR, zirga-zirgar na iya ɗaukar wata hanya ta dabam. Kuma yawancin hanyoyin, mafi girman damar da za ta iya samun hanyar da gazawar a kan wata na'ura ba ta shafa ba.
Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

Matsala ɗaya ta rage - RTO. Tabbas, akwai wata hanya, amma ana ɓata lokaci mai yawa akan wannan. 200 ms yana da yawa. Na biyu na damun daji sosai. A baya, na yi magana game da ƙarewar lokaci cewa ana daidaita ayyukan. Don haka, na biyu shine lokacin ƙarewa, wanda yawanci sabis ɗin ke saita shi a matakin aikace-aikacen, kuma a cikin wannan sabis ɗin zai kasance daidai. Bugu da ƙari, na maimaita, ainihin RTT a cikin cibiyar bayanai na zamani yana kusa da 1 millisecond.
Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

Me za ku iya yi da lokacin RTO? Ƙayyadaddun lokaci, wanda ke da alhakin RTO idan an rasa fakitin bayanai, ana iya daidaita shi cikin sauƙi daga sararin mai amfani: akwai mai amfani da IP, kuma ɗaya daga cikin sigoginsa ya ƙunshi rto_min iri ɗaya. Idan aka yi la'akari da cewa RTO, ba shakka, yana buƙatar daidaitawa ba a duniya ba, amma don abubuwan da aka ba da prefixes, irin wannan tsarin yana kama da aiki sosai.
Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

Gaskiya, tare da SYN_RTO komai ya ɗan yi muni. An ƙusa shi ta halitta. Kwayar tana da ƙayyadadden ƙimar daƙiƙa 1, kuma shi ke nan. Ba za ku iya isa wurin daga sararin mai amfani ba. Akwai hanya daya kawai.
Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

eBPF ya zo don ceto. Don sanya shi a sauƙaƙe, waɗannan ƙananan shirye-shiryen C ne. Ana iya saka su cikin ƙugiya a wurare daban-daban a cikin aiwatar da kernel stack da TCP stack, wanda za ku iya canza adadi mai yawa na saitunan. Gabaɗaya, eBPF wani tsari ne na dogon lokaci. Maimakon yanke da dama na sababbin sigogi na sysctl da fadada mai amfani na IP, motsi yana motsawa zuwa eBPF kuma yana fadada aikinsa. Yin amfani da eBPF, zaku iya canza tsarin sarrafa cunkoso da sauran saitunan TCP daban-daban.
Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

Amma yana da mahimmanci a gare mu cewa ana iya amfani da shi don canza ƙimar SYN_RTO. Bugu da ƙari, akwai misalin da aka buga a bainar jama'a: https://elixir.bootlin.com/linux/latest/source/samples/bpf/tcp_synrto_kern.c. Me aka yi a nan? Misali yana aiki, amma a cikin kansa yana da wahala sosai. Anan ana ɗauka cewa a cikin cibiyar bayanai muna kwatanta farkon 44 bits; idan sun dace, to muna cikin cibiyar bayanai. Kuma a wannan yanayin muna canza ƙimar lokacin SYN_RTO zuwa 4ms. Ana iya yin wannan aikin da kyau da kyau. Amma wannan misali mai sauƙi yana nuna cewa wannan a) mai yiwuwa ne; b) in mun gwada da sauki.

Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

Me muka riga muka sani? Gaskiyar cewa tsarin gine-ginen jirgin yana ba da damar yin ƙima, ya zama yana da amfani sosai a gare mu lokacin da muka kunna alamar kwarara akan ToR kuma mu sami ikon yawo a kusa da wuraren matsala. Hanya mafi kyau don rage ƙimar RTO da SYN-RTO shine amfani da shirye-shiryen eBPF. Tambayar ta kasance: shin yana da lafiya don amfani da alamar kwarara don daidaitawa? Kuma akwai nuance a nan.
Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

A ce kana da sabis a kan hanyar sadarwarka wanda ke zaune a kowane siminti. Abin takaici, ba ni da lokacin da zan shiga dalla-dalla game da abin da kowanecast yake, amma sabis ne da aka rarraba tare da sabar sabar jiki daban-daban da ake samun damar ta hanyar adireshin IP iri ɗaya. Kuma a nan akwai matsala mai yuwuwa: taron RTO na iya faruwa ba kawai lokacin da zirga-zirga ke wucewa ta cikin masana'anta ba. Hakanan yana iya faruwa a matakin buffer na ToR: lokacin da abin da ya faru ya faru, yana iya faruwa har ma a kan mai watsa shiri lokacin da mai watsa shiri ya zubar da wani abu. Lokacin da taron RTO ya faru kuma yana canza alamar kwarara. A wannan yanayin, zirga-zirga na iya zuwa wani misali na kowane sigar. Bari mu ɗauka cewa wannan simintin na yau da kullun ne, yana ɗauke da yanayin haɗin gwiwa - yana iya zama Balancer L3 ko wani sabis. Sai matsala ta taso, saboda bayan RTO haɗin TCP ya isa ga uwar garken, wanda bai san komai game da wannan haɗin TCP ba. Kuma idan ba mu da rabon jihohi tsakanin kowane sabar sabar, to irin wannan zirga-zirgar za a watsar kuma za a karye haɗin TCP.
Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

Me za ku iya yi a nan? A cikin yanayin da ake sarrafa ku, inda kuke ba da damar daidaita alamar kwarara, kuna buƙatar yin rikodin ƙimar alamar kwarara lokacin samun damar kowane sabar sabar. Hanya mafi sauƙi ita ce yin wannan ta hanyar shirin eBPF iri ɗaya. Amma a nan akwai muhimmin batu - abin da za ku yi idan ba ku aiki da cibiyar sadarwar bayanai ba, amma mai aiki ne na sadarwa? Wannan ita ce matsalar ku kuma: farawa da wasu nau'ikan Juniper da Arista, sun haɗa da alamar kwarara a cikin ayyukan hash ta tsohuwa - a zahiri, saboda dalilin da ba shi da tabbas a gare ni. Wannan na iya sa ku sauke haɗin TCP daga masu amfani da ke wucewa ta hanyar sadarwar ku. Don haka ina ba da shawarar sosai duba saitunan hanyoyin sadarwar ku anan.

Wata hanya ko wata, ga alama a gare ni cewa a shirye muke mu ci gaba da gwaje-gwaje.
Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

Lokacin da muka kunna alamar kwarara akan ToR, mun shirya wakilin eBPF, wanda yanzu ke rayuwa akan runduna, mun yanke shawarar kada mu jira babban gazawa na gaba, amma don gudanar da fashewar sarrafawa. Mun ɗauki ToR, wanda ke da hanyoyin haɗin kai guda huɗu, kuma mun saita digo akan ɗaya daga cikinsu. Sun zana doka kuma suka ce - yanzu kuna asarar duk fakiti. Kamar yadda kuke gani a hagu, muna da saka idanu akan kowane fakiti, wanda ya ragu zuwa kashi 75%, wato kashi 25% na fakitin sun ɓace. A hannun dama akwai jadawali na ayyuka da ke zaune a bayan wannan ToR. Mahimmanci, waɗannan jadawali ne na zirga-zirga na musaya tare da sabar a cikin rakiyar. Kamar yadda kuke gani, sun nitse har ƙasa. Me yasa suka ragu - ba ta 25% ba, amma a wasu lokuta ta sau 3-4? Idan haɗin TCP ya yi rashin sa'a, yana ci gaba da ƙoƙarin isa ta hanyar da aka karye. Wannan yana kara tsanantawa da dabi'un sabis na cikin DC - don buƙatun mai amfani guda ɗaya, ana samar da buƙatun N zuwa sabis na ciki, kuma amsa za ta tafi ga mai amfani ko dai lokacin da duk hanyoyin bayanan suka amsa, ko kuma lokacin da aka ƙare a aikace-aikacen. matakin, wanda har yanzu yana buƙatar daidaitawa. Wato komai yayi muni sosai.
Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

Yanzu gwajin iri ɗaya, amma tare da kunna ƙimar alamar kwarara. Kamar yadda kuke gani, a gefen hagu na sa ido kan rukunin mu ya ragu da kashi 25%. Wannan daidai ne, saboda bai san komai game da sake aikawa ba, yana aika fakiti kuma kawai yana ƙididdige adadin adadin fakitin da aka kawo da kuma batattu.

Kuma a dama shine jadawalin sabis. Ba za ku sami tasirin haɗin gwiwa mai matsala ba a nan. A cikin waɗancan miliyon daƙiƙa guda, zirga-zirgar zirga-zirgar zirga-zirgar zirga-zirgar zirga-zirgar zirga-zirgar zirga-zirgar zirga-zirgar zirga-zirgar zirga-zirgar zirga-zirgar zirga-zirgar zirga-zirgar zirga-zirgar zirga-zirgar ababen hawa ta taso daga yankin da matsalar ta shafa zuwa sauran hanyoyin sama guda uku da matsalar ba ta shafa ba. Muna da hanyar sadarwa mai warkar da kanta.

Cibiyar sadarwa da ke warkar da kanta: sihirin Label ɗin Flow da kuma mai binciken da ke kewaye da kernel na Linux. Yandex rahoton

Wannan shine zamewar ƙarshe na, lokacin taƙaitawa. Yanzu, ina fata kun san yadda ake gina cibiyar sadarwar bayanan warkar da kai. Ba za ku buƙaci ku shiga cikin tarihin kernel na Linux ba kuma ku nemo faci na musamman a wurin; kun san cewa lakabin Flow a wannan yanayin yana magance matsalar, amma kuna buƙatar kusanci wannan tsarin a hankali. Kuma na sake jaddada cewa idan kai ma'aikacin sadarwa ne, bai kamata ka yi amfani da alamar ruwa a matsayin aikin hash ba, in ba haka ba za ka lalata zaman masu amfani da ku.

Dole ne injiniyoyin hanyar sadarwa su yi canjin ra'ayi: cibiyar sadarwa ta fara ba tare da ToR ba, ba tare da na'urar cibiyar sadarwa ba, amma tare da mai watsa shiri. Babban misali mai ban mamaki shine yadda muke amfani da eBPF duka don canza RTO da kuma gyara alamar kwarara zuwa duk wani sabis na watsawa.

Injiniyoyin alamar kwarara tabbas sun dace da sauran aikace-aikace a cikin sashin gudanarwa mai sarrafawa. Wannan na iya zama zirga-zirga tsakanin cibiyoyin bayanai, ko kuma kuna iya amfani da irin waɗannan injiniyoyi ta hanya ta musamman don sarrafa zirga-zirgar ababen hawa. Amma zan gaya muku game da wannan, ina fata, na gaba. Na gode kwarai da kulawar ku.

source: www.habr.com