Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

Tha ceudan de innealan gnìomhach aig ionadan dàta ùr-nodha air an còmhdach le diofar sheòrsaichean sgrùdaidh. Ach bidh eadhon innleadair foirfe le sgrùdadh foirfe na làimh comasach air freagairt cheart a thoirt do fhàilligeadh lìonra ann am beagan mhionaidean. Ann an aithisg aig co-labhairt Next Hop 2020, thaisbean mi dòigh-obrach dealbhaidh lìonra ionad dàta aig a bheil feart sònraichte - bidh an ionad dàta ga shlànachadh ann am milliseconds. Nas mionaidiche, bidh an innleadair gu socair a 'rèiteachadh na duilgheadas, fhad' s nach eil na seirbheisean dìreach a 'toirt fa-near dha.

- An toiseach, bheir mi ro-ràdh gu math mionaideach dhaibhsan aig nach eil, is dòcha, mothachail air structar DC an latha an-diugh.
Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

Dha mòran innleadairean lìonra, bidh lìonra an ionaid dàta a’ tòiseachadh, gu dearbh, le ToR, le suidse san raca. Mar as trice tha dà sheòrsa de cheanglaichean aig ToR. Bidh an fheadhainn bheaga a’ dol gu na frithealaichean, cuid eile - tha N uair nas motha dhiubh - a’ dol a dh’ ionnsaigh na spìcean aig a’ chiad ìre, is e sin, gu na ceanglaichean suas aige. Mar as trice thathas den bheachd gu bheil ceanglaichean suas co-ionann, agus tha trafaic eadar uplinks air a chothromachadh stèidhichte air an hash 5-tuple, a tha a’ toirt a-steach proto, src_ip, dst_ip, src_port, dst_port. Chan eil iongnadh sam bith an seo.
Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

An ath rud, cò ris a tha ailtireachd nam plèanaichean coltach? Chan eil spìcean a’ chiad ìre ceangailte ri chèile, ach tha iad ceangailte le superspins. Bidh an litir X an urra ri superspins, tha e cha mhòr mar chrois-cheangal.
Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

Agus tha e soilleir gu bheil, air an làimh eile, tori ceangailte ris a h-uile spìcean den chiad ìre. Dè tha cudromach san dealbh seo? Ma tha eadar-obrachadh againn taobh a-staigh a 'chrann, bidh an eadar-obrachadh, gu dearbh, a' dol tro ToR. Ma thèid an eadar-obrachadh taobh a-staigh a 'mhodail, bidh an eadar-obrachadh a' dol tro spìcean na ciad ìre. Ma tha an eadar-obrachadh eadar-modular - mar a tha an seo, ToR 1 agus ToR 2 - an uairsin thèid an eadar-obrachadh tro spìcean an dà chuid aig a’ chiad agus an dàrna ìre.
Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

Gu teòiridheach, tha ailtireachd mar seo furasta a scalladh. Ma tha comas puirt againn, tèarmann àite anns an ionad dàta agus snàithleach ro-shuidhichte, faodar an àireamh de phlèanaichean a mheudachadh an-còmhnaidh, agus mar sin a’ meudachadh comas iomlan an t-siostaim. Air pàipear, tha seo gu math furasta a dhèanamh. Bhiodh e mar sin ann am fìor bheatha. Ach chan ann mu dheidhinn sin a tha sgeulachd an latha an-diugh.
Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

Tha mi airson gun tèid na co-dhùnaidhean ceart a tharraing. Tha mòran shlighean againn taobh a-staigh an ionad dàta. Tha iad neo-eisimeileach le cumhachan. Chan eil e comasach ach aon dòigh taobh a-staigh an ionad dàta taobh a-staigh ToR. Taobh a-staigh a 'mhodail, tha an aon àireamh de shlighean againn ris an àireamh de phlèanaichean. Tha an àireamh de shlighean eadar modalan co-ionann ri toradh an àireamh de phlèanaichean agus an àireamh de superspins anns gach plèana. Gus a dhèanamh nas soilleire, a bhith a 'faireachdainn an sgèile, bheir mi na h-àireamhan a tha dligheach airson aon de na h-ionadan dàta Yandex.
Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

Tha ochd plèanaichean ann, tha 32 superspins aig gach plèana. Mar thoradh air an sin, tha e a 'tionndadh a-mach gu bheil ochd slighean taobh a-staigh a' mhodail, agus le eadar-obrachadh eadar-mhodal tha 256 dhiubh mar-thà.

Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

Is e sin, ma tha sinn a’ leasachadh Leabhar Cook, a’ feuchainn ri ionnsachadh mar a thogas sinn ionadan dàta fulangach air lochdan a shlànaicheas iad fhèin, is e ailtireachd planar an roghainn cheart. Leigidh e leat fuasgladh fhaighinn air an duilgheadas sgèileachaidh, agus gu teòiridheach tha e furasta. Tha grunn shlighean neo-eisimeileach ann. Tha a 'cheist fhathast: ciamar a tha an leithid de dh'ailtireachd a' mairsinn fàilligeadh? Tha diofar thubaistean ann. Agus bruidhnidh sinn mu dheidhinn seo a-nis.
Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

Leig le fear de na superspins againn a bhith tinn. An seo thill mi gu ailtireachd dà itealan. Cumaidh sinn riutha mar eisimpleir oir bidh e dìreach nas fhasa faicinn dè tha dol air adhart an seo le nas lugha de phàirtean gluasadach. Leig le X11 fàs tinn. Ciamar a bheir seo buaidh air seirbheisean a tha a’ fuireach taobh a-staigh ionadan dàta? Tha tòrr an urra ri mar a tha an teip dha-rìribh a’ coimhead.
Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

Ma tha an fàilligeadh math, tha e air a ghlacadh aig ìre fèin-ghluasaid an aon BFD, bidh fèin-ghluasad gu toilichte a ’cur duilgheadasan joints agus a’ dealachadh an duilgheadas, an uairsin tha a h-uile dad ceart gu leòr. Tha mòran shlighean againn, thèid trafaic a chuir air ais sa bhad gu slighean eile, agus chan fhaic na seirbheisean dad. Is e suidheachadh math a tha seo.
Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

Is e droch shuidheachadh a th’ ann ma tha call cunbhalach againn, agus nach mothaich an fèin-ghluasad an duilgheadas. Gus tuigse fhaighinn air mar a bheir seo buaidh air an tagradh, feumaidh sinn beagan ùine a chaitheamh a’ beachdachadh air mar a tha protocol TCP ag obair.
Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

Tha mi an dòchas nach cuir mi iongnadh air duine sam bith leis an fhiosrachadh seo: tha TCP na phròtacal crathadh làimhe. Is e sin, anns a 'chùis as sìmplidh, bidh an neach-cuiridh a' cur dà phacaid, agus a 'faighinn ack mean air mhean orra: "Fhuair mi dà phacaid."
Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

Às deidh sin, cuiridh e dà phacaid eile, agus bidh an suidheachadh a-rithist. Tha mi duilich ro-làimh airson beagan sìmplidheachaidh. Tha an suidheachadh seo ceart ma tha an uinneag (àireamh pacaidean air itealaich) dà. Gu dearbh, chan eil seo riatanach san fharsaingeachd. Ach chan eil meud na h-uinneige a’ toirt buaidh air co-theacsa cur air adhart pacaid.
Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

Dè thachras ma chailleas sinn pasgan 3? Anns a 'chùis seo, gheibh an neach a gheibh e pacaidean 1, 2 agus 4. Agus cuiridh e fios gu soilleir don neach a chuir a' cleachdadh an roghainn SACK: "Tha fios agad, thàinig trì, ach chaidh am meadhan a chall." Tha e ag ràdh "Ack 2, SACK 4".
Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

Bidh an neach-cuiridh aig an àm seo ag ath-aithris dìreach a’ phacaid a chaidh a chall gun duilgheadas sam bith.
Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

Ach ma thèid am pasgan mu dheireadh san uinneig a chall, seallaidh an suidheachadh gu math eadar-dhealaichte.

Gheibh an neach a gheibh a’ chiad trì pacaidean agus an toiseach tòisichidh e a’ feitheamh. Taing do chuid de optimizations ann an stac TCP kernel Linux, fuirichidh e ri pacaid càraid, mura h-eil comharra soilleir anns na brataichean gur e seo am pacaid mu dheireadh no rudeigin mar sin. Fuirichidh e gus an tig an ùine-ama dàil ACK gu crìch agus an uairsin cuiridh e aithne airson a’ chiad trì pacaidean. Ach a-nis bidh an neach-cuiridh a’ feitheamh. Chan eil fios aige an deach an ceathramh pasgan a chall no a bheil e gu bhith a’ ruighinn. Agus gus nach cuir thu cus air an lìonra, feuchaidh e ri feitheamh ris a’ chomharra shoilleir gu bheil am pacaid air chall, no gun tig an ùine-ama RTO gu crìch.
Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

Dè a th’ ann an ùine-ama RTO? Is e seo an ìre as àirde bhon RTT air a thomhas leis a’ chruach TCP agus cuid seasmhach. Dè a tha seasmhach seo, bruidhnidh sinn a-nis.
Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

Ach tha e cudromach ma tha sinn mì-shealbhach a-rithist agus an ceathramh pacaid air chall a-rithist, gum bi an RTO a’ dùblachadh. Is e sin, tha gach oidhirp neo-shoirbheachail na dhùblachadh den ùine-ama.
Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

A-nis chì sinn cò ris a tha am bonn seo co-ionann. Gu gnàthach, is e 200ms an RTO as ìsle. Is e seo an RTO as ìsle airson pacaidean dàta. Airson pacaidean SYN, tha e eadar-dhealaichte, 1 diog. Mar a chì thu, bheir eadhon a’ chiad oidhirp air pacaidean a chuir air ais 100 uair nas fhaide na RTT taobh a-staigh an ionad dàta.
Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

A-nis air ais chun t-suidheachadh againn. Dè tha dol leis an t-seirbheis? Bidh an t-seirbheis a 'tòiseachadh a' call pacaidean. Leig leis an t-seirbheis a bhith fortanach an toiseach agus caill rudeigin ann am meadhan na h-uinneige, an uairsin gheibh e SACK, ath-chuir e na pacaidean caillte.
Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

Ach ma thig droch fhortan a-rithist, tha RTO againn. Dè tha cudromach an seo? Tha, tha tòrr shlighean againn san lìonra. Ach leanaidh an trafaic TCP de aon cheangal TCP sònraichte a’ dol tron ​​aon chruach briste. Chan eil call pacaid, fhad ‘s nach tèid ar draoidheachd X11 a-mach leis fhèin, a’ leantainn gu trafaic a ’sruthadh gu raointean nach eil duilich. Tha sinn a’ feuchainn ri pacaid a lìbhrigeadh tron ​​aon chruach briste. Bidh seo a’ leantainn gu fàilligeadh cascading: tha ionad dàta na sheata de thagraidhean eadar-ghnìomhach, agus bidh cuid de cheanglaichean TCP de na tagraidhean sin uile a’ tòiseachadh a ’crìonadh - leis gu bheil an superspin a’ toirt buaidh air a h-uile tagradh a tha taobh a-staigh an DC. Mar a tha e san abairt: mura dèan thu bròg air each, bidh an t-each a’ bualadh; the horse liped - cha deach an aithisg a lìbhrigeadh; cha deach an teachdaireachd a lìbhrigeadh - chaill iad an cogadh. Is ann dìreach an seo a bhios an cunntadh a’ dol airson diogan bhon mhionaid a tha an duilgheadas a’ tachairt chun ìre de dh’ ìsleachadh a thòisicheas seirbheisean a’ faireachdainn. Tha seo a’ ciallachadh gur dòcha nach fhaigh luchd-cleachdaidh rudeigin an àiteigin.
Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

Tha dà fhuasgladh clasaigeach ann a tha a 'cur ri chèile. Is e a’ chiad fhear seirbheisean a tha a’ feuchainn ri stràbhan a chuir sìos agus fuasgladh fhaighinn air an duilgheadas mar seo: “Nì sinn rudeigin anns a’ chruach TCP. Agus dèanamaid amannan-ama aig ìre tagraidh no seiseanan TCP fad-ùine le sgrùdaidhean slàinte a-staigh. 'S e an duilgheadas a th' ann gu bheil fuasglaidhean mar seo: a) gun sgèile idir; b) fìor dhroch deuchainn. Is e sin, eadhon ged a bhios an t-seirbheis a’ rèiteachadh an stac TCP gun fhiosta gus am fàs e nas fheàrr, an toiseach, chan eil e coltach gum bi seo iomchaidh airson a h-uile tagradh agus ionad dàta, agus san dàrna àite, is coltaiche, cha tuig e dè a chaidh a dhèanamh ceart agus dè chan eil. Is e sin, tha e ag obair, ach tha e ag obair gu math agus chan eil e a’ sgèile. Agus ma tha duilgheadas lìonra ann, cò as coireach? Gu dearbh NOC. Dè bhios NOC a’ dèanamh?

Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

Tha mòran sheirbheisean den bheachd gu bheil obair a’ dol rudeigin mar seo ann an NOC. Ach a bhith onarach, chan ann a-mhàin.
Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

Tha NOC anns an sgeama clasaigeach an sàs ann an leasachadh iomadh sgrùdadh. Tha iad sin an dà chuid sgrùdadh bogsa dubh agus sgrùdadh bogsa geal. Mun eisimpleir de sgrùdadh bogsa dubh air spìcean dh'innis Alasdair Klimenko air an àm a dh'fhalbh Next Hop. Air an t-slighe, tha an sgrùdadh seo ag obair. Ach bidh dàil ùine aig eadhon sgrùdadh foirfe. Mar as trice tha e grunn mhionaidean. Às deidh dha obrachadh, feumaidh na h-innleadairean a tha air dleasdanas ùine gus sgrùdadh dùbailte a dhèanamh air an obair aige, an duilgheadas a shuidheachadh gu h-ionadail, agus an uairsin cuir às don raon duilgheadas. Is e sin, anns a 'chùis as fheàrr, bidh làimhseachadh na duilgheadas a' toirt 5 mionaidean, aig a 'char as miosa 20 mionaidean, mura h-eil e follaiseach sa bhad far a bheil na call a' tachairt. Tha e soilleir gum bi na seirbheisean againn uile air an goirteachadh fad na h-ùine seo - 5 no 20 mionaidean, agus is dòcha nach eil sin math.
Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

Dè a bhiodh tu airson fhaighinn? Tha uimhir de shlighean againn. Agus tha duilgheadasan ag èirigh dìreach leis gu bheil sruthan TCP a tha mì-shealbhach a ’leantainn air adhart a’ cleachdadh an aon shlighe. Feumaidh sinn rudeigin a leigeas leinn iomadh slighe a chleachdadh taobh a-staigh aon cheangal TCP. Bhiodh e coltach gu bheil fuasgladh againn. Tha TCP ann, ris an canar mar sin - multipath TCP, is e sin, TCP airson iomadh slighe. Fìor, chaidh a leasachadh airson obair gu tur eadar-dhealaichte - airson fònaichean sgairteil aig a bheil grunn innealan lìonra. Gus an gluasad a mheudachadh no am modh bun-sgoile / cùl-taic a dhèanamh, chaidh uidheamachd a leasachadh a chruthaicheas grunn snàithleanan (seiseanan) gu follaiseach airson an tagraidh agus a leigeas leat gluasad eatorra gun fhios nach fàilligeadh. No, mar a thuirt mi, àrdaich an leud-bann.

Ach tha nuance an seo. Gus tuigsinn dè a th’ ann, feumaidh sinn coimhead air mar a tha sruthan air an stèidheachadh.
Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

Tha snàithleanan air an suidheachadh ann an òrdugh. Tha a 'chiad sruth air a stàladh an toiseach. Thèid sruthan às deidh sin a shuidheachadh a’ cleachdadh a’ bhriosgaid a chaidh aontachadh mar-thà san t-snàthainn sin. Agus seo an duilgheadas.
Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

Is e an duilgheadas a th’ ann mura stàlaich a’ chiad snàithlean, cha nochd an dàrna agus an treas snàithlean gu bràth. Is e sin, chan eil multipath TCP a 'fuasgladh call a' phacaid SYN anns a 'chiad shruth. Agus ma thèid an SYN air chall, bidh multipath TCP gu bhith na TCP àbhaisteach. Mar sin, ann an àrainneachd ionad dàta, cha chuidich e sinn gus fuasgladh fhaighinn air an duilgheadas a thaobh call anns an fhactaraidh agus ionnsaich mar a chleachdas tu grunn shlighean gun fhios nach fàilligeadh.
Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

Dè as urrainn ar cuideachadh? Tha cuid agaibh air tomhas mar-thà bhon ainm gur e an raon cudromach san sgeulachd eile againn an raon bann-cinn leubail sruthadh IPv6. Gu dearbh, is e seo raon a tha a 'nochdadh ann an v6, chan eil e ann an v4, bidh e a' toirt 20 buillean, agus tha connspaid air a bhith ann mu bhith ga chleachdadh airson ùine mhòr. Tha seo glè inntinneach - bha connspaidean ann, chaidh rudeigin a shuidheachadh taobh a-staigh frèam an RFC, agus aig an aon àm, nochd buileachadh anns an kernel Linux nach deach a chlàradh a-riamh an àite sam bith.
Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

Tha mi a’ moladh gun tig thu còmhla rium air beagan sgrùdaidh. Bheir sinn sùil air na tha air a bhith a’ tachairt ann an kernel Linux thairis air na beagan bhliadhnaichean a dh’ fhalbh.

Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

bliadhna 2014. Bidh innleadair bho chompanaidh mòr agus cliùiteach a’ cur ri gnìomhachd an kernel Linux an eisimeileachd air luach an leubail sruthadh air hash an t-socaid. Dè tha iad a’ feuchainn ri rèiteachadh an seo? Tha seo co-cheangailte ri RFC 6438 a bheachdaich air a’ chùis a leanas. Taobh a-staigh an ionad dàta, bidh IPv4 gu tric air a chuairteachadh ann am pacaidean IPv6, oir is e IPv6 an fhactaraidh fhèin, ach feumaidh IPv4 dòigh air choireigin a thoirt seachad. Airson ùine mhòr bha duilgheadasan ann le suidsichean nach b’ urrainn coimhead fo dhà bann-cinn IP gus faighinn gu TCP no UDP agus lorg src_ports, dst_ports an sin. Thionndaidh e a-mach gun robh an hash, ma choimheadas tu air a ’chiad dà bhann-cinn IP, cha mhòr air a shuidheachadh. Gus seo a sheachnadh, gus am bi cothromachadh an trafaic dùmhail seo ag obair gu ceart, chaidh a mholadh hash bhon phasgan encapsulated 5-tuple a chuir ri luach raon an leubail sruthadh. Chaidh timcheall air an aon rud a dhèanamh airson sgeamaichean glacaidh eile, airson UDP, airson GRE, anns an fhear mu dheireadh chaidh an raon GRE Key a chleachdadh. Aon dòigh no dòigh eile, tha na h-amasan an seo soilleir. Agus co-dhiù aig an àm sin bha iad feumail.

Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

Ann an 2015, thig bad ùr bhon aon innleadair cliùiteach. Tha e gu math inntinneach. Tha e ag ràdh na leanas - cuiridh sinn air thuaiream an hash gun fhios nach tachair tachartas slighe àicheil. Dè a th’ ann an tachartas slighe àicheil? Is e seo an RTO air an do bhruidhinn sinn na bu thràithe, is e sin, tha call earball na h-uinneige na thachartas a tha dha-rìribh àicheil. Fìor, tha e an ìre mhath duilich tomhas dè a th’ ann.

Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

2016, companaidh cliùiteach eile, cuideachd mòr. Bidh e a’ parsadh nan crutches mu dheireadh agus ga dhèanamh gus am bi an hash a rinn sinn air thuaiream a-nis air atharrachadh air gach ath-chraoladh SYN agus às deidh gach ùine RTO. Agus anns an litir seo, airson a 'chiad agus an turas mu dheireadh, tha an amas mu dheireadh a' fuaimeachadh - gus dèanamh cinnteach gu bheil an trafaig ma tha call no cus de shianalan comasach air ath-stiùireadh bog, a 'cleachdadh iomadh slighe. Gu dearbh, às deidh sin bha tòrr fhoillseachaidhean ann, is urrainn dhut gu furasta an lorg.

Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

Ged nach eil, chan urrainn dhut, oir cha robh aon fhoillseachadh air a’ chuspair seo. Ach tha fios againn!

Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

Agus mura tuig thu gu tur an nì a rinneadh, innsidh mi dhut a‑nis.
Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

Dè a chaidh a dhèanamh, dè an gnìomh a chaidh a chur ris an kernel Linux? Bidh txhash ag atharrachadh gu luach air thuaiream às deidh gach tachartas RTO. Is e seo an aon toradh slighe àicheil. Tha an hash an urra ris an txhash seo agus tha an leubail sruthadh an urra ris an hash skb. Tha beagan àireamhachadh air na gnìomhan an seo, chan urrainnear a h-uile mion-fhiosrachadh a chuir air aon shleamhnag. Ma tha duine fiosrach, faodaidh tu a dhol tron ​​​​chòd kernel agus sgrùdadh.

Dè tha cudromach an seo? Bidh luach raon an leubail sruthadh ag atharrachadh gu àireamh air thuaiream às deidh gach RTO. Ciamar a bheir seo buaidh air an t-sruth TCP mì-shealbhach againn?
Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

A thaobh SACK, chan eil dad air atharrachadh leis gu bheil sinn a’ feuchainn ri pacaid a chaidh a chall a chuir air ais. Gu ruige seo cho math.
Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

Ach a thaobh RTO, fhad ‘s a tha sinn air bileag sruthadh a chuir ris a’ ghnìomh hash air ToR, faodaidh trafaic slighe eile a ghabhail. Agus mar as motha de phlèanaichean, is ann as dualtaiche a tha e slighe a lorg nach toir tubaist buaidh air inneal sònraichte.
Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

Tha aon duilgheadas fhathast - RTO. Tha slighe eile, gu dearbh, air a lorg, ach tha tòrr ùine ga chosg air. Tha 200ms tòrr. Is e an dàrna fear fiadhaich san fharsaingeachd. Na bu thràithe, bhruidhinn mi mu dheidhinn amannan-ama a bhios a’ rèiteachadh sheirbheisean. Mar sin, is e àm a th’ ann an dàrna fear a bhios mar as trice a’ stèidheachadh seirbheis aig ìre an tagraidh, agus ann an seo bidh an t-seirbheis eadhon an ìre mhath ceart. A bharrachd air an sin, tha mi a-rithist, tha an fhìor RTT taobh a-staigh ionad dàta ùr-nodha timcheall air 1 millisecond.
Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

Dè ghabhas dèanamh mu àm-ama RTO? Faodar an ùine-ama a tha an urra ri RTO gun fhios nach caillear pacaidean dàta a bhith air a rèiteachadh gu ìre mhath bho àite luchd-cleachdaidh: tha goireas IP ann, agus tha an aon rto_min ann am fear de na paramadairean aige. Leis gu bheil, gu dearbh, feumaidh tu RTO a thionndadh chan ann air feadh na cruinne, ach airson ro-leasachain sònraichte, tha inneal mar seo a ’coimhead gu math ag obair.
Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

Fìor, le SYN_RTO tha a h-uile dad beagan nas miosa. Tha e gu nàdarrach air a chuir sìos. Tha an luach stèidhichte sa chridhe - 1 diog, agus sin e. Chan urrainn dhut a ruighinn bho àite luchd-cleachdaidh. Chan eil ann ach aon dòigh.
Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

thig eBPF gu teasairginn. Gus a chuir gu sìmplidh, is e prògraman beaga C a tha seo. Faodar an cur a-steach do dubhan aig diofar àiteachan ann a bhith a’ coileanadh a’ chruach kernel agus an stac TCP, leis an urrainn dhut àireamh mhòr de shuidheachaidhean atharrachadh. San fharsaingeachd, tha eBPF na ghluasad fad-ùine. An àite a bhith a’ sàbhadh dusanan de pharamadairean sysctl ùra agus a’ leudachadh a’ ghoireas IP, tha an gluasad a’ stiùireadh eBPF agus a’ leudachadh a ghnìomhachd. Le eBPF, faodaidh tu smachdan dùmhlachd agus diofar shuidheachaidhean TCP eile atharrachadh.
Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

Ach tha e cudromach dhuinne le cuideachadh bhuaithe gun urrainn dhut luachan SYN_RTO a thionndadh. Agus tha eisimpleir air fhoillseachadh gu poblach: https://elixir.bootlin.com/linux/latest/source/samples/bpf/tcp_synrto_kern.c. Dè tha air a dhèanamh an seo? Tha an eisimpleir ag obair, ach ann fhèin tha e gu math garbh. Thathas a’ gabhail ris an seo gum bi sinn taobh a-staigh an ionad dàta a’ dèanamh coimeas eadar a’ chiad 44 pìosan, ma tha iad a’ maidseadh, bidh sinn gar lorg fhèin taobh a-staigh an DC. Agus anns a 'chùis seo, bidh sinn ag atharrachadh luach ùine SYN_RTO gu 4ms. Faodar an aon obair a dhèanamh mòran nas gràsmhoire. Ach tha an eisimpleir shìmplidh seo a 'sealltainn na tha a) comasach; b) an ìre mhath furasta.

Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

Dè tha fios againn mu thràth? Gu bheil an ailtireachd planar a’ ceadachadh sgèileadh, tha e a’ tionndadh a-mach gu bheil e air leth feumail dhuinn nuair a thionndaidheas sinn air an leubail sruthadh air ToR agus a gheibh sinn cothrom sruthadh timcheall raointean duilgheadas. Is e an dòigh as fheàrr air luachan RTO agus SYN-RTO ìsleachadh prògraman eBPF a chleachdadh. Tha a’ cheist fhathast: a bheil e sàbhailte an leubail sruthadh a chleachdadh airson cothromachadh? Agus tha nuance an seo.
Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

Seach gu bheil seirbheis agad air an lìonra a tha a 'fuireach ann an craoladh sam bith. Gu mì-fhortanach, chan eil ùine agam a dhol a-steach gu mion-fhiosrachadh mu chraoladh sam bith, ach is e seirbheis sgaoilte a th’ ann far a bheil diofar luchd-frithealaidh corporra rim faighinn air an aon sheòladh IP. Agus seo duilgheadas a dh’ fhaodadh a bhith ann: faodaidh tachartas RTO tachairt chan ann a-mhàin nuair a bhios trafaic a ’dol tron ​​​​fhactaraidh. Faodaidh e tachairt cuideachd aig ìre bufair ToR: nuair a thachras tachartas incast, faodaidh e tachairt eadhon air an aoigh nuair a bhios an aoigh a’ dòrtadh rudeigin. Nuair a thachras tachartas RTO agus bidh e ag atharrachadh an leubail sruthadh. Anns a 'chùis seo, faodaidh an trafaig a dhol gu suidheachadh sam bith eile. Seach gur e craoladh stàiteil a th’ ann, tha staid ceangail ann - faodaidh e a bhith na L3 Balancer no seirbheis air choireigin eile. An uairsin bidh duilgheadas ag èirigh, oir às deidh an RTO, bidh an ceangal TCP a ’ruighinn an fhrithealaiche, aig nach eil fios dad mun cheangal TCP seo. Agus mura h-eil roinneadh stàite againn eadar frithealaichean sam bith, thèid an trafaic sin a leigeil sìos agus brisidh an ceangal TCP.
Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

Dè ghabhas dèanamh an seo? Taobh a-staigh na h-àrainneachd fo smachd agad, far am bi thu a’ comasachadh cothromachadh leubail sruthadh, feumaidh tu luach an leubail sruthadh a chàradh nuair a gheibh thu cothrom air frithealaichean sam bith. Is e an dòigh as fhasa a dhèanamh tron ​​​​aon phrògram eBPF. Ach an seo tha puing glè chudromach - dè a nì thu mura h-eil thu ag obrachadh lìonra ionad dàta, ach a bheil thu nad ghnìomhaiche cian-conaltraidh? Is e seo an duilgheadas agad cuideachd: a ’tòiseachadh le dreachan sònraichte de Juniper agus Arista, bidh iad a’ toirt a-steach an leubail sruthadh anns a ’ghnìomh hash gu bunaiteach - a bhith onarach, airson adhbhar nach eil mi a’ tuigsinn. Faodaidh seo adhbhrachadh gun leig thu às ceanglaichean TCP bho luchd-cleachdaidh a 'dol tron ​​​​lìonra agad. Mar sin, tha mi a’ moladh gu mòr sgrùdadh a dhèanamh air na roghainnean router agad san àite seo.

Aon dòigh no dòigh eile, tha e coltach rium gu bheil sinn deiseil airson gluasad air adhart gu deuchainnean.
Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

Nuair a thionndaidh sinn air an leubail sruthadh air ToR, dh’ ullaich sinn eBPF an neach-ionaid, a tha a-nis a’ fuireach air na h-aoighean, chuir sinn romhainn gun a bhith a’ feitheamh ris an ath fhàiligeadh mòr, ach gus spreadhaidhean fo smachd a chumail. Ghabh sinn ToR, aig a bheil ceithir uplinks, agus rinn sinn boinneagan air fear dhiubh. Tharraing iad riaghailt, thuirt iad - a-nis tha thu a 'call a h-uile pasgan. Mar a chì thu air an taobh chlì, tha sgrùdadh per-pack againn, a tha air tuiteam gu 75%, is e sin, tha 25% de phasgan air chall. Air an làimh dheis tha grafaichean de sheirbheisean a tha a’ fuireach air cùl an ToR seo. Gu dearbh, is iad sin grafaichean trafaic de joints le frithealaichean taobh a-staigh an raca. Mar a chì thu, chaidh iad fodha eadhon nas ìsle. Carson a chaidh iad fodha nas ìsle - chan ann le 25%, ach ann an cuid de chùisean 3-4 tursan? Ma tha an ceangal TCP mì-shealbhach, tha e fhathast a 'feuchainn ri ruighinn tron ​​​​eadar-aghaidh briste. Tha seo air a dhèanamh nas miosa le giùlan àbhaisteach na seirbheis taobh a-staigh an DC - airson aon iarrtas neach-cleachdaidh, thèid N iarrtasan gu seirbheisean a-staigh a chruthachadh, agus thèid am freagairt chun neach-cleachdaidh, an dàrna cuid nuair a fhreagras a h-uile stòr dàta, no nuair a thèid ùine a chuir air adhart aig ìre an tagraidh, a dh'fheumas a bhith air a rèiteachadh fhathast. Is e sin, tha a h-uile dad gu math, gu math dona.
Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

A-nis an aon deuchainn, ach leis an leubail sruthadh air a chomasachadh. Mar a chì thu, air an taobh chlì, chaidh an sgrùdadh baidse againn fodha leis an aon 25%. Tha seo gu tur ceart, leis nach eil fios aige mu dheidhinn ath-chraolaidhean, bidh e a ’cur phasganan air falbh agus dìreach a’ cunntadh co-mheas an àireamh de phasganan air an lìbhrigeadh agus air chall.

Agus air an làimh dheis tha clàr nan seirbheisean. Chan fhaigh thu buaidh co-dhuilgheadas an seo. Bha trafaic anns na h-aon milliseconds sin a’ sruthadh bhon raon duilgheadas gu na trì ceanglaichean suas a bha air fhàgail air nach tug an duilgheadas buaidh. Fhuair sinn lìonra a shlànaicheas e fhèin.

Lìonra a shlànaicheas e fhèin: draoidheachd an Flow Label agus an lorgaire timcheall air kernel Linux. Yandex aithisg

Is e seo an sleamhnag mu dheireadh agam, àm airson stoc a ghabhail. A-nis, tha mi an dòchas gu bheil fios agad mar a thogas tu lìonra ionad dàta fèin-slànachaidh. Cha leig thu leas a dhol tro thasglann kernel Linux agus coimhead airson badan sònraichte an sin, tha fios agad gu bheil an leubail Flow a’ fuasgladh na duilgheadas sa chùis seo, ach feumaidh tu dèiligeadh ris an uidheamachd seo gu faiceallach. Agus tha mi a’ daingneachadh a-rithist ma tha thu nad neach-giùlain, cha bu chòir dhut an leubail sruthadh a chleachdadh mar ghnìomh hash, air neo brisidh tu seiseanan do luchd-cleachdaidh.

Airson innleadairean lìonra, feumar gluasad bun-bheachdail a dhèanamh: chan eil an lìonra a 'tòiseachadh le ToR, chan ann le inneal lìonra, ach le aoigheachd. Is e eisimpleir gu math iongantach mar a bhios sinn a’ cleachdadh eBPF an dà chuid gus an RTO atharrachadh agus gus an leubail sruthadh a chàradh a dh’ ionnsaigh seirbheisean craolaidh sam bith.

Tha an meacanaig leubail sruthadh gu cinnteach freagarrach airson cleachdaidhean eile taobh a-staigh an roinn rianachd fo smachd. Faodaidh seo a bhith na thrafaig eadar ionadan dàta, no faodaidh tu meacanaig mar sin a chleachdadh ann an dòigh shònraichte gus smachd a chumail air trafaic a tha a’ falbh. Ach bruidhnidh mi mu dheidhinn seo, tha mi an dòchas, an ath thuras. Tapadh leibh gu mòr airson an aire agad.

Source: www.habr.com