Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

Litsi tsa sejoale-joale tsa data li na le lisebelisoa tse makholo tse sebetsang tse koahetsoeng ke mefuta e fapaneng ea ho beha leihlo. Empa esita le moenjiniere ea phethahetseng ea nang le tlhokomelo e phethahetseng letsohong o tla khona ho arabela hantle ho hlōleha ha marang-rang ka metsotso e seng mekae feela. Tlalehong ea kopano ea Next Hop 2020, ke hlahisitse mokhoa oa ho qapa marang-rang oa setsi sa data o nang le tšobotsi e ikhethang - setsi sa data se iphekola ka li-milliseconds. Ka nepo, moenjiniere o lokisa bothata ka khutso, athe lits'ebeletso ha li e hlokomele.

- Ho qala, ke tla fana ka kenyelletso e hlakileng bakeng sa bao, mohlomong, ba sa tsebeng sebopeho sa DC ea sejoale-joale.
Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

Bakeng sa baenjiniere ba bangata ba marang-rang, marang-rang a setsi sa data a qala, ha e le hantle, ka ToR, e nang le switch ka rack. ToR hangata e na le mefuta e 'meli ea likhokahano. Ba banyenyane ba ea ho li-server, ba bang - ho na le makhetlo a N ho feta ho bona - ba ea ho li-spines tsa boemo ba pele, ke hore, ho ea holimo ho eona. Hangata li-uplink li nkoa li lekana, 'me sephethephethe pakeng tsa li-uplinks se leka-lekana ho latela 5-tuple hash, e kenyeletsang proto, src_ip, dst_ip, src_port, dst_port. Ha ho na lintho tse makatsang mona.
Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

Ka mor'a moo, mohaho oa lifofane o shebahala joang? Li-spines tsa boemo ba pele ha li kopane, empa li kopantsoe ka li-superspins. Lengolo X le tla ikarabella bakeng sa li-superspins, e batla e tšoana le sefapano.
Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

'Me ho hlakile hore, ka lehlakoreng le leng, li-tori li amana le li-spines tsohle tsa boemo ba pele. Ke eng ea bohlokoa setšoantšong see? Haeba re na le tšebelisano ka hare ho rack, joale tšebelisano, ehlile, e feta ToR. Haeba tšebelisano e kena ka har'a module, joale ho sebelisana ho feta ka har'a mokokotlo oa boemo ba pele. Haeba tšebelisano e le intermodular - joalo ka mona, ToR 1 le ToR 2 - joale tšebelisano e tla feta mokokotlong oa maemo a pele le a bobeli.
Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

Ho ea ka khopolo, mohaho o joalo o ka senyeha habonolo. Haeba re e-na le bokhoni ba boema-kepe, sebaka sa polokelo ea sebaka setsing sa data le fiber e behiloeng esale pele, joale palo ea lifofane e ka eketseha kamehla, kahoo e eketsa matla a kakaretso ea tsamaiso. Ka pampiri, sena se bonolo haholo ho se etsa. Ho ne ho tla ba joalo bophelong ba sebele. Empa pale ea kajeno ha e bue ka seo.
Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

Ke batla hore ho etsoe liqeto tse nepahetseng. Re na le litsela tse ngata ka hare ho setsi sa data. Ba ikemetse ho latela maemo. Tsela e 'ngoe ka hare ho setsi sa data e khoneha feela ka hare ho ToR. Ka hare ho module, re na le litsela tse lekanang le palo ea lifofane. Palo ea litsela pakeng tsa li-modules e lekana le sehlahisoa sa palo ea lifofane le palo ea li-superspins sefofaneng se seng le se seng. E le ho hlakisa, ho utloa tekanyo, ke tla fana ka linomoro tse sebetsang ho e 'ngoe ea litsi tsa data tsa Yandex.
Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

Ho na le lifofane tse robeli, sefofane ka seng se na le li-superspins tse 32. Ka lebaka leo, ho fumaneha hore ho na le litsela tse robeli ka har'a module, 'me ka ho sebelisana ha li-module ho se ho ntse ho e-na le 256 ea tsona.

Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

Ke hore, haeba re ntse re hlahisa Cookbook, re leka ho ithuta ho haha ​​​​litsi tsa data tse mamellang liphoso tse ipholisang, joale moralo oa moralo ke khetho e nepahetseng. E u lumella ho rarolla bothata ba ho lekanya, 'me ka khopolo ho bonolo. Ho na le litsela tse ngata tse ikemetseng. Potso e sala: mohaho o joalo o pholoha joang ho hlōleha? Ho na le likotsi tse fapaneng. 'Me re tla tšohla sena hona joale.
Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

E re e mong oa li-superspins tsa rona a kula. Mona ke ile ka khutlela mohahong oa lifofane tse peli. Re tla lula le bona e le mohlala hobane ho tla ba bonolo ho bona se etsahalang mona ka likarolo tse fokolang tse tsamaeang. Tlohela X11 ho kula. See se tla ama litšebeletso tse phelang ka har'a litsi tsa data joang? Ho hongata ho itšetlehile ka hore na ho hlōleha ho shebahala joang.
Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

Haeba ho hlōleha ho le molemo, e tšoaroa boemong ba ho iketsetsa BFD e tšoanang, ho iketsetsa ka thabo ho beha manonyeletso a bothata le ho arola bothata, joale ntho e 'ngoe le e' ngoe e ntle. Re na le litsela tse ngata, sephethephethe se khutlisetsoa litseleng tse ling hang hang, 'me litšebeletso li ke ke tsa hlokomela letho. Ena ke boemo bo botle.
Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

Boemo bo bobe ke haeba re na le tahlehelo e sa khaotseng, 'me mochine o ikemetseng ha o bone bothata. Ho utloisisa hore na sena se ama kopo joang, re tla tlameha ho qeta nako e nyenyane re buisana ka hore na protocol ea TCP e sebetsa joang.
Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

Ke tšepa hore nke ke ka tšosa mang kapa mang ka tlhahisoleseling ena: TCP ke protocol ea ho ts'oarana ka matsoho. Ke hore, tabeng e bonolo, motho ea romelang o romela lipakete tse peli, 'me o fumana chelete e ngata ho tsona: "Ke fumane lipakete tse peli."
Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

Ka mor'a moo, o tla romela lipakete tse ling tse peli, 'me boemo bo tla pheta. Ke kopa tšoarelo esale pele bakeng sa ho nolofatsa ho itseng. Boemo bona bo nepahetse haeba fensetere (palo ea lipakete tse fofang) e le peli. Ha e le hantle, sena ha se hlile ha se joalo ka kakaretso. Empa moelelo oa ho fetisa lipakete ha o amehe ke boholo ba fensetere.
Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

Ho etsahala'ng haeba re lahleheloa ke sephutheloana sa 3? Tabeng ena, moamoheli o tla fumana liphutheloana tsa 1, 2 le 4. 'Me o tla tsebisa motho ea rometseng ka ho hlaka a sebelisa khetho ea SACK: "Ua tseba, ba bararo ba tlile, empa bohareng bo ne bo lahlehile." O re "Ack 2, SACK 4".
Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

Motho ea romelang motsotso ona o pheta hantle pakete e lahlehileng ntle le mathata.
Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

Empa haeba pakete ea ho qetela fensetereng e lahlehile, boemo bo tla shebahala bo fapane haholo.

Moamoheli o amohela lipakete tse tharo tsa pele mme pele ho tsohle o qala ho ema. Ka lebaka la lintlafatso tse ling ho Linux kernel TCP stack, e tla emela pakete e pakiloeng, ntle le haeba ho na le pontšo e hlakileng lifolakhang hore ena ke pakete ea ho qetela kapa ntho e joalo. E tla ema ho fihlela nako ea Delayed ACK e fela, ebe e romela kananelo bakeng sa lipakete tse tharo tsa pele. Empa joale motho ea romelang molaetsa o tla be a letile. Ha a tsebe hore na sephutheloana sa bone se lahlehile kapa se haufi le ho fihla. 'Me e le hore e se ke ea laola marang-rang, e tla leka ho emela pontšo e hlakileng ea hore pakete e lahlehile, kapa ho fela ha nako ea RTO.
Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

Nako ea ho qetela ea RTO ke eng? Ena ke boholo bo tsoang ho RTT e baloang ke stack ea TCP le tse ling tse sa fetoheng. Ke eng sena se sa khaotseng, joale re tla tšohla.
Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

Empa ke habohlokoa hore haeba re se na lehlohonolo hape 'me pakete ea bone e lahleheloa hape, joale RTO e imena habeli. Ke hore, boiteko bo bong le bo bong bo sa atleheng ke ho imena habeli ha nako e felileng.
Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

Joale ha re boneng hore na motheo ona o lekana le eng. Ka kamehla, bonyane ba RTO ke 200ms. Ena ke bonyane ba RTO bakeng sa lipakete tsa data. Bakeng sa lipakete tsa SYN, e fapane, motsotsoana o le mong. Joalokaha u ka bona, esita le boiteko ba pele ba ho romela lipakete bo tla nka nako e telele ea 1 ho feta RTT ka hare ho setsi sa data.
Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

Joale khutlela ho boemo ba rona. Ho etsahalang ka tshebeletso? Tšebeletso e qala ho lahleheloa ke lipakete. E-re tšebeletso e be lehlohonolo qalong 'me e lahleheloe ke ntho e itseng bohareng ba fensetere, ebe e amohela SACK, e romela lipakete tse lahlehileng hape.
Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

Empa haeba lehlohonolo le pheta, joale re na le RTO. Ke eng ea bohlokoa moo? E, re na le litsela tse ngata marang-rang. Empa sephethephethe sa TCP sa khokahanyo e le 'ngoe ea TCP se tla tsoela pele ho feta har'a stack e tšoanang e robehileng. Tahlehelo ea liphutheloana, ha feela X11 ea rona ea boselamose e sa tsoe ka bo eona, ha e lebise sephethephethe se phallelang libakeng tse se nang mathata. Re leka ho tsamaisa pakete ka har'a stack e tšoanang e robehileng. Sena se lebisa ho hloleheng ha cascading: setsi sa data ke sete sa likopo tse sebelisanang, 'me tse ling tsa likhokahano tsa TCP tsa lits'ebetso tsena kaofela li qala ho senyeha - hobane superspin e ama lits'ebetso tsohle tse ka hare ho DC. Joalo ka poleloana e reng: ha u sa roe pere lieta, pere ea hlotsa; pere ea hlotsa - tlaleho ha ea ka ea fanoa; molaetsa ha oa ka oa fanoa - ba lahlehetsoe ke ntoa. Ke mona feela palo e eang metsotsoana ho tloha ha bothata bo hlaha ho fihlela boemong ba ho senyeha boo litšebeletso li qalang ho bo utloa. Sena se bolela hore basebelisi ba kanna ba se fumane letho kae-kae.
Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

Ho na le litharollo tse peli tsa khale tse tlatsanang. Ea pele ke litšebeletso tse lekang ho beha litlhaka le ho rarolla bothata ka tsela ena: “Ha re lokiseng ho hong ho stack ea TCP. Ha re etseng nako ea nako ea ts'ebeliso kapa linako tsa nako e telele tsa TCP ka tlhahlobo ea bophelo bo botle ba kahare. Bothata ke hore litharollo tse joalo: a) ha li na tekanyo ho hang; b) teko e mpe haholo. Ke hore, le haeba ts'ebeletso e lokisa setaele sa TCP ka phoso e le hore e be betere, pele, sena ha se na monyetla oa ho sebetsa lits'ebetsong tsohle le litsing tsohle tsa data, 'me ea bobeli, ho ka etsahala hore e ke ke ea utloisisa se entsoeng ka nepo le hore na ke eng. eseng. Ke hore, e sebetsa, empa e sebetsa hampe ebile ha e na tekanyo. Mme haeba ho na le bothata ba marang-rang, ke mang ea molato? Ehlile, NOC. NOC e etsa eng?

Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

Litšebeletso tse ngata li lumela hore ho NOC, mosebetsi o tsamaea tjena. Empa ho bua 'nete, eseng feela.
Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

NOC sekemeng sa khale se kenelletse ho nts'etsopele ea tlhahlobo e ngata. Tsena ke bobeli ba black box monitoring le white box monitoring. Mabapi le mohlala oa black box- monitoring of spines bolelloa Alexander Klimenko nakong e fetileng ea Next Hop. Ka tsela, ts'ebetso ena ea ho beha leihlo e sebetsa. Empa esita le tlhokomelo e phethahetseng e tla ba le nako e saletseng morao. Hangata ke metsotso e mengata. Ka mor'a hore e sebetse, baenjiniere ba mosebetsing ba hloka nako ea ho hlahloba ts'ebetso ea eona habeli, ho beha bothata sebakeng sa bona, ebe ba tima sebaka sa bothata. Ke hore, tabeng e ntle ka ho fetisisa, phekolo ea bothata e nka metsotso e 5, ka metsotso e 20 e mpe ka ho fetisisa, haeba e sa totobale hang-hang hore na tahlehelo e etsahala hokae. Ho hlakile hore nako ena eohle - metsotso e 5 kapa 20 - litšebeletso tsa rona li tla tsoela pele ho utloisa bohloko, mohlomong ha li ntle.
Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

U ka rata ho fumana eng? Re na le litsela tse ngata. 'Me mathata a hlaha hantle hobane phallo ea TCP e se nang lehlohonolo e tsoela pele ho sebelisa tsela e tšoanang. Re hloka ntho e tla re lumella ho sebelisa litsela tse ngata ka har'a khokahanyo e le 'ngoe ea TCP. Ho ka bonahala eka re na le tharollo. Ho na le TCP, e bitsoang joalo - multipath TCP, ke hore, TCP bakeng sa litsela tse ngata. Ke 'nete, e ile ea etsoa bakeng sa mosebetsi o fapaneng ka ho feletseng - bakeng sa li-smartphone tse nang le lisebelisoa tse ngata tsa marang-rang. Ho eketsa phetisetso kapa ho etsa mokhoa oa mantlha / oa ho boloka, ho ile ha etsoa mochini o hlahisang likhoele tse 'maloa (linako) tsa ts'ebeliso ka mokhoa o hlakileng mme o o lumella ho chencha lipakeng tsa ona haeba o ka hloleha. Kapa, ​​​​joalokaha ke boletse, eketsa bandwidth.

Empa ho na le nuance mona. Ho utloisisa hore na ke eng, re tla tlameha ho sheba hore na melapo e etsoa joang.
Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

Likhoele li behiloe ka tatellano. Mohala oa pele o kenngoa pele. Liphallo tse latelang li behoa ho sebelisoa cookie e seng e lumellane ka har'a khoele eo. Mme bothata ke bona.
Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

Bothata ke hore haeba khoele ea pele e sa kenye, khoele ea bobeli le ea boraro e ke ke ea hlaha. Ke hore, TCP ea multipath ha e rarolle tahlehelo ea pakete ea SYN molapong oa pele. 'Me haeba SYN e lahlehile, TCP ea multipath e fetoha TCP e tloaelehileng. Kahoo, tikolohong ea setsi sa data, e ke ke ea re thusa ho rarolla bothata ba tahlehelo fekthering le ho ithuta ho sebelisa litsela tse ngata haeba ho hlōleha.
Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

Re ka thusoa ke eng? Ba bang ba lona ba se ba ntse ba hakanya lebitsong hore karolo ea bohlokoa pale ea rona e tla ba IPv6 flow label header field. Ka sebele, ena ke tšimo e hlahang ho v6, ha e v4, e nka likotoana tsa 20, 'me ho bile le likhang mabapi le tšebeliso ea eona ka nako e telele. Sena se thahasellisa haholo - ho ne ho e-na le likhohlano, ho na le ntho e tsitsitseng ka har'a moralo oa RFC, 'me ka nako e ts'oanang, ts'ebetsong e ile ea hlaha ka har'a kernel ea Linux e sa kang ea ngoloa kae kapa kae.
Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

Ke khothaletsa hore u kopanele le 'na lipatlisisong tse nyane. Ha re shebeng se ntseng se etsahala ka har'a kernel ea Linux lilemong tse 'maloa tse fetileng.

Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

selemo sa 2014. Moenjiniere ea tsoang k'hamphaning e kholo le e nang le botumo bo botle o eketsa ts'ebetsong ea Linux kernel ho itšetleha ka boleng ba label ea phallo ho hash ea sokete. Ba leka ho lokisa eng moo? Sena se amana le RFC 6438 e ileng ea tšohla taba e latelang. Ka hare ho setsi sa data, IPv4 e atisa ho kenngoa ka har'a lipakete tsa IPv6, hobane fektheri ka boeona ke IPv6, empa IPv4 e tlameha ho fanoa ka tsela e itseng. Ka nako e telele ho ne ho e-na le mathata ka li-switches tse neng li sitoa ho sheba tlas'a lihlooho tse peli tsa IP ho fihla TCP kapa UDP le ho fumana src_ports, dst_ports moo. Ho ile ha fumaneha hore hashe, haeba u sheba lihlooho tse peli tsa pele tsa IP, li fetohile tse batlang li tsitsitse. E le ho qoba sena, e le hore ho leka-lekanya ha sephethephethe sena se kentsoeng se sebetse ka nepo, ho ile ha etsoa tlhahiso ea ho eketsa hash ho tloha paketeng e kentsoeng ea 5-tuple ho ea bohlokoa ba tšimo ea label label. Hoo e ka bang ho ile ha etsoa se tšoanang bakeng sa merero e meng ea encapsulation, bakeng sa UDP, bakeng sa GRE, qetellong ho ile ha sebelisoa tšimo ea GRE Key. Ka tsela e 'ngoe kapa e' ngoe, lipakane mona li hlakile. 'Me bonyane ka nako eo ka nako li ne li le molemo.

Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

Ka 2015, patch e ncha e tsoa ho moenjiniere ea hlomphehang ea tšoanang. O thahasellisa haholo. E bua se latelang - re tla etsa hore hash e be teng ha ho ka ba le ketsahalo e mpe ea ho tsamaisa. Ketsahalo e mpe ea tsela ke efe? Ena ke RTO eo re buileng ka eona pejana, ke hore, tahlehelo ea mohatla oa fensetere ke ketsahalo e hlileng e leng mpe. Ke 'nete hore ho batla ho le thata ho hakanya hore na ke eng.

Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

2016, k'hamphani e 'ngoe e hlomphuoang, le eona e kholo. E arola lithupa tsa ho qetela 'me e etsa hore hashe eo re neng re e entse esale pele e fetoloe ho phetisetso e ngoe le e ngoe ea SYN le kamora nako e ngoe le e ngoe ea RTO. 'Me lengolong lena, ka lekhetlo la pele le la ho qetela, sepheo sa ho qetela se utloahala - ho etsa bonnete ba hore sephethephethe nakong ea tahlehelo kapa boima ba likanale bo na le monyetla oa ho khutlisetsa mekhoa e bonolo, ho sebelisa litsela tse ngata. Ha e le hantle, ka mor'a moo ho ne ho e-na le lingoliloeng tse ngata, u ka li fumana habonolo.

Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

Le hoja che, u ka se khone, hobane ha ho so be le khatiso e le 'ngoe sehloohong sena. Empa rea ​​tseba!

Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

'Me haeba u sa utloisise ka botlalo se entsoeng, ke tla u bolella hona joale.
Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

Ho entsoe eng, ke ts'ebetso efe e kenyellelitsoeng kernel ea Linux? txhash e fetoha boleng bo sa reroang kamora ketsahalo e 'ngoe le e' ngoe ea RTO. Sena ke sephetho se tšoanang sa tsela e mpe. Hashe e itšetlehile ka txhash ena le lengolo la phallo le itšetlehile ka skb hash. Ho na le lipalo tse mabapi le mesebetsi mona, lintlha tsohle li ke ke tsa beoa selaeteng se le seng. Haeba mang kapa mang a labalabela ho tseba, o ka feta ka har'a khoutu ea kernel mme o hlahlobe.

Ke eng ea bohlokoa moo? Boleng ba tšimo ea label ea phallo e fetoha ho nomoro e sa tloaelehang ka mor'a RTO ka 'ngoe. See se ama joang molatsoana oa rona o se nang lehlohonolo oa TCP?
Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

Tabeng ea SACK, ha ho letho le fetohileng hobane re leka ho romela pakete e tsebahalang e lahlehileng. Ke khotsofetse ho fihlela hajoale.
Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

Empa tabeng ea RTO, ha feela re kentse lengolo la phallo mosebetsing oa hash ho ToR, sephethephethe se ka nka tsela e fapaneng. 'Me ha lifofane li ntse li eketseha, ho na le monyetla o moholo oa ho fumana tsela e sa angoeng ke ho oa ha sesebelisoa se itseng.
Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

Bothata bo le bong bo sala - RTO. Tsela e 'ngoe, ha e le hantle, e fumanoa, empa nako e ngata e sebelisoa ho eona. 200ms e ngata haholo. Ea bobeli ke ho hlaha ka kakaretso. Pejana, ke buile ka linako tsa nako tse lokisang litšebeletso. Kahoo, ea bobeli ke nako ea nako eo hangata e behang tšebeletso boemong ba kopo, 'me ho sena tšebeletso e tla be e nepahetse. Ho feta moo, ke pheta, RTT ea sebele ka hare ho setsi sa morao-rao sa data se pota-potile 1 millisecond.
Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

Ke eng e ka etsoang mabapi le ho qeta nako ea RTO? Nako ea nako e ikarabellang bakeng sa RTO haeba ho lahleheloa ke lipakete tsa data ho ka hlophisoa habonolo ho tloha sebakeng sa mosebedisi: ho na le ts'ebeliso ea IP, 'me e' ngoe ea litekanyetso tsa eona e na le rto_min e tšoanang. Ha u nahana hore, ehlile, o hloka ho fetolela RTO eseng lefats'eng ka bophara, empa bakeng sa li-prefixes tse fanoeng, mochini o joalo o shebahala o sebetsa haholo.
Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

Ke 'nete, ka SYN_RTO tsohle li mpefala. Ka tlhaho e khokhothetsoe fatše. Boleng bo tsitsitse bohareng - motsotsoana oa 1, 'me ke phetho. Ha o khone ho e fihlela u le sebakeng sa mosebelisi. Ho na le tsela e le 'ngoe feela.
Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

eBPF e thusa. Ho bua ka mokhoa o bonolo, tsena ke mananeo a manyenyane a C. Li ka kenngoa ka li-hook libakeng tse fapaneng ha ho etsoa kernel stack le TCP stack, eo ka eona u ka fetolang palo e kholo haholo ea litlhophiso. Ka kakaretso, eBPF ke mokhoa oa nako e telele. Sebakeng sa ho bona liparamente tse ngata tse ncha tsa sysctl le ho holisa ts'ebeliso ea IP, mokhatlo ona o lebile ho eBPF mme o holisa ts'ebetso ea ona. Ka eBPF, o ka fetola taolo ea tšubuhlellano le litlhophiso tse ling tse fapaneng tsa TCP.
Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

Empa ho bohlokoa ho rona hore ka thuso ea eona o ka sotha boleng ba SYN_RTO. Mme ho na le mohlala o phatlalalitsoeng phatlalatsa: https://elixir.bootlin.com/linux/latest/source/samples/bpf/tcp_synrto_kern.c. Ho etsoa eng moo? Mohlala o sebetsa, empa ka boeona o thata haholo. Ho nahanoa mona hore ka hare ho setsi sa data re bapisa li-bits tsa pele tsa 44, haeba li lumellana, joale re iphumana re le ka har'a DC. Tabeng ena, re fetola boleng ba nako ea SYN_RTO ho 4ms. Mosebetsi o tšoanang o ka etsoa ka bokhabane le ho feta. Empa mohlala ona o bonolo o bontša hore na ke eng a) khoneha; b) ho batla ho le bonolo.

Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

Re se re ntse re tseba eng? Hore meralo ea polane e lumella ho eketsa, ho bonahala e le molemo haholo ho rona ha re bulela label ea ho phalla ho ToR mme re fumana monyetla oa ho phalla libakeng tse nang le mathata. Mokhoa o motle oa ho theola boleng ba RTO le SYN-RTO ke ho sebelisa mananeo a eBPF. Potso e sala: na ho bolokehile ho sebelisa lengolo la phallo bakeng sa ho leka-lekanya? 'Me ho na le nuance mona.
Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

A re re u na le tšebeletso marang-rang e lulang sebakeng sefe kapa sefe. Ka bomalimabe, ha ke na nako ea ho bua ka botlalo mabapi le mofuta ofe kapa ofe, empa ke ts'ebeletso e ajoang moo li-server tse fapaneng tsa 'mele li fumanehang atereseng e tšoanang ea IP. 'Me mona ke bothata bo ka bang teng: ketsahalo ea RTO e ka etsahala eseng feela ha sephethephethe se feta fekthering. E ka boela ea etsahala boemong ba ToR buffer: ha ketsahalo ea incast e etsahala, e ka etsahala le ho moamoheli ha moamoheli a tšolla ho hong. Ha ketsahalo ea RTO e etsahala mme e fetola lengolo la phallo. Tabeng ena, sephethephethe se ka ea ho mohlala o mong oa leha e le ofe. Ha re re ke leha e le efe ea boleng bo holimo, e na le boemo ba khokahanyo - e ka ba L3 Balancer kapa tšebeletso e 'ngoe. Joale ho hlaha bothata, hobane ka mor'a RTO, khokahanyo ea TCP e fihla ho seva, e sa tsebeng letho ka khokahanyo ena ea TCP. 'Me haeba re se na ho arolelana mmuso pakeng tsa li-server tsa anycast, joale sephethephethe se joalo se tla theoha' me khokahano ea TCP e tla robeha.
Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

Ho ka etsoa eng moo? Ka har'a tikoloho ea hau e laoloang, moo u nolofalletsang ho leka-lekanya label ea ho phalla, ho hlokahala hore u lokise boleng ba lebokose la phallo ha u fihlella li-server tsa anycast. Tsela e bonolo ka ho fetisisa ke ho e etsa ka lenaneo le tšoanang la eBPF. Empa mona ho na le ntlha ea bohlokoa haholo - seo u lokelang ho se etsa haeba u sa sebetse marang-rang a setsi sa data, empa na ke mokhanni oa telecom? Hona ke bothata ba hau hape: ho qala ka liphetolelo tse itseng tsa Juniper le Arista, li kenyelletsa lengolo la phallo mosebetsing oa hash ka ho sa feleng - ho bua 'nete, ka lebaka leo ke sa le utloisiseng. Sena se ka etsa hore o tlohele likhokahano tsa TCP ho basebelisi ba fetang marang-rang a hau. Ka hona, ke khothaletsa haholo ho hlahloba litlhophiso tsa router ea hau sebakeng sena.

Ka tsela e 'ngoe kapa e' ngoe, ho bonahala ho 'na hore re itokiselitse ho fetela litekong.
Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

Ha re bulela letšoao la phallo ho ToR, re lokisetsa eBPF ea moemeli, eo hona joale e phelang ho mabotho, re ile ra etsa qeto ea hore re se ke ra emela ho hlōleha ho hoholo ho latelang, empa ho etsa liqhomane tse laoloang. Re nkile ToR, e nang le li-uplink tse 'ne,' me ra etsa marotholi ho e 'ngoe ea tsona. Ba ile ba etsa molao, ba re - joale u lahleheloa ke lipakete tsohle. Joalokaha u bona ka ho le letšehali, re na le leihlo la pakete ka 'ngoe, e theohetse ho 75%, ke hore, 25% ea lipakete li lahlehile. Ka ho le letona ho na le li-graph tsa litšebeletso tse phelang ka mor'a ToR ena. Ha e le hantle, tsena ke li-graph tsa sephethephethe tsa manonyeletso a nang le li-server ka hare ho rack. Joalokaha u bona, ba ile ba teba le ho feta. Ke hobane'ng ha ba ile ba teba ka tlaase - eseng ka 25%, empa maemong a mang ka makhetlo a 3-4? Haeba khokahano ea TCP e se na lehlohonolo, e ntse e tsoela pele ho leka ho fihlella ka sebopeho se robehileng. Sena se mpefatsoa ke boits'oaro bo tloaelehileng ba ts'ebeletso kahare ho DC - bakeng sa kopo e le 'ngoe ea mosebelisi, likopo tsa N ho lits'ebeletso tsa kahare li hlahisoa, mme karabelo e tla ea ho mosebelisi, ebang ke ha mehloli eohle ea data e arabela, kapa ha nako ea nako e hlahisoa boemo ba ts'ebeliso, bo ntseng bo hloka ho hlophisoa. Ke hore, ntho e 'ngoe le e 'ngoe e mpe haholo.
Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

Hona joale teko e tšoanang, empa ka "flow label" e nolofalitsoe. Joalokaha u bona, ka letsohong le letšehali, tlhahlobo ea rona ea batch e theohile ka 25%. Sena se nepahetse ka ho feletseng, hobane ha e tsebe letho ka li-retransmits, e romela lipakete 'me e bala feela karo-karolelano ea palo ea lipakete tse fanoeng le tse lahlehileng.

'Me ka ho le letona ke kemiso ea litšebeletso. U ke ke ua fumana phello ea bothata bo kopanetsoeng mona. Sephethephethe sa li-milliseconds tse tšoanang se ile sa phalla ho tloha sebakeng sa bothata ho ea ho li-uplink tse tharo tse setseng tse sa kang tsa angoa ke bothata. Re na le marang-rang a ipholisang.

Marang-rang a ipholisang: boselamose ba Flow Label le lefokisi le potileng kernel ea Linux. Tlaleho ea Yandex

Ena ke slide ea ka ea ho qetela, nako ea ho bala. Hona joale, ke tšepa hore u tseba ho haha ​​marang-rang a setsi sa boitsebiso ba ho iphekola. Ha ho hlokahale hore u fete ka har'a polokelo ea kernel ea Linux 'me u batle li-patches tse khethehileng moo, ua tseba hore Flow label e rarolla bothata tabeng ena, empa u lokela ho atamela mochine ona ka hloko. 'Me ke hatisa hape hore haeba u le mojari, ha ua lokela ho sebelisa letšoao la phallo e le mosebetsi oa hash, ho seng joalo u tla senya linako tsa basebelisi ba hau.

Bakeng sa baenjiniere ba marang-rang, phetoho ea maikutlo e lokela ho etsahala: marang-rang ha a qale ka ToR, eseng ka sesebelisoa sa marang-rang, empa ka moeti. Mohlala o makatsang ke oa kamoo re sebelisang eBPF ka bobeli ho fetola RTO le ho lokisa leibole ea phallo mabapi le lits'ebeletso life kapa life.

The flow label mechanic e hlile e loketse litšebeliso tse ling ka har'a karolo e laoloang ea tsamaiso. Sena e ka ba sephethephethe pakeng tsa litsi tsa data, kapa u ka sebelisa mechine e joalo ka tsela e khethehileng ho laola sephethephethe se tsoang. Empa ke tla bua ka sena, kea tshepa, nakong e tlang. Ke leboha haholo ka tlhokomelo ea hau.

Source: www.habr.com