Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

Iċ-ċentri tad-dejta moderni għandhom mijiet ta 'apparati attivi installati, koperti minn tipi differenti ta' monitoraġġ. Iżda anke inġinier ideali b'monitoraġġ perfett f'idejh ikun jista 'jirrispondi b'mod korrett għal falliment tan-netwerk fi ftit minuti biss. F'rapport fil-konferenza Next Hop 2020, ippreżentajt metodoloġija tad-disinn tan-netwerk taċ-ċentru tad-dejta, li għandha karatteristika unika - iċ-ċentru tad-dejta jfejjaq lilu nnifsu f'millisekondi. B'mod aktar preċiż, l-inġinier bil-kalma jiffissa l-problema, filwaqt li s-servizzi sempliċement ma jindunawx biha.

— L-ewwel nett, se nagħti introduzzjoni pjuttost dettaljata għal dawk li jistgħu ma jkunux konxji tal-istruttura ta 'DC modern.
Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

Għal ħafna inġiniera tan-netwerk, netwerk taċ-ċentru tad-dejta jibda, ovvjament, bit-ToR, bi swiċċ fir-rack. It-ToR normalment ikollu żewġ tipi ta' links. Iż-żgħar imorru għas-servers, oħrajn - hemm N darbiet aktar minnhom - imorru lejn l-ispina tal-ewwel livell, jiġifieri, l-uplinks tiegħu. L-uplinks ġeneralment jitqiesu ugwali, u t-traffiku bejn l-uplinks huwa bilanċjat ibbażat fuq hash minn 5-tuple, li jinkludi proto, src_ip, dst_ip, src_port, dst_port. Ebda sorpriża hawn.
Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

Sussegwentement, kif tidher l-arkitettura tal-pjan? Is-sinsla tal-ewwel livell mhumiex konnessi ma 'xulxin, iżda huma konnessi permezz ta' superspines. L-ittra X se tkun responsabbli għal superspines; hija kważi bħal cross-connect.
Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

U huwa ċar li, min-naħa l-oħra, it-tori huma konnessi mal-ispina kollha tal-ewwel livell. X'inhu importanti f'din l-istampa? Jekk ikollna interazzjoni ġewwa l-ixkaffa, allura l-interazzjoni, ovvjament, tgħaddi minn ToR. Jekk l-interazzjoni sseħħ ġewwa l-modulu, allura l-interazzjoni sseħħ permezz tal-ispina tal-ewwel livell. Jekk l-interazzjoni hija intermodulari - bħal hawn, ToR 1 u ToR 2 - allura l-interazzjoni se tgħaddi minn sinsla kemm tal-ewwel kif ukoll tat-tieni livell.
Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

Fit-teorija, arkitettura bħal din hija faċilment skalabbli. Jekk ikollna kapaċità tal-port, spazju żejjed fiċ-ċentru tad-dejta u fibra mqiegħda minn qabel, allura n-numru ta 'korsiji dejjem jista' jiżdied, u b'hekk tiżdied il-kapaċità ġenerali tas-sistema. Dan huwa faċli ħafna li tagħmel fuq il-karta. Ikun hekk fil-ħajja. Imma l-istorja tal-lum mhix dwar dan.
Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

Irrid li jittieħdu l-konklużjonijiet it-tajba. Għandna ħafna mogħdijiet ġewwa ċ-ċentru tad-dejta. Huma kondizzjonalment indipendenti. Mogħdija waħda ġewwa ċ-ċentru tad-dejta hija possibbli biss ġewwa ToR. Ġewwa l-modulu, għandna n-numru ta 'mogħdijiet ugwali għan-numru ta' korsiji. In-numru ta 'mogħdijiet bejn il-moduli huwa ugwali għall-prodott tan-numru ta' pjani u n-numru ta 'superspines f'kull pjan. Biex tagħmilha aktar ċara, biex tikseb sens tal-iskala, se nagħti numri li huma validi għal wieħed miċ-ċentri tad-dejta Yandex.
Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

Hemm tmien ajruplani, kull pjan għandu 32 superspine. Bħala riżultat, jirriżulta li hemm tmien mogħdijiet ġewwa l-modulu, u bl-interazzjoni bejn il-moduli diġà hemm 256 minnhom.

Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

Jiġifieri, jekk qed niżviluppaw Cookbook, nippruvaw nitgħallmu kif nibnu ċentri tad-dejta tolleranti għall-ħsarat li jfejqu lilhom infushom, allura l-arkitettura planari hija l-għażla t-tajba. Issolvi l-problema tal-iskala, u fit-teorija huwa faċli. Hemm ħafna mogħdijiet indipendenti. Il-mistoqsija tibqa ': kif arkitettura bħal din tgħix fallimenti? Hemm diversi fallimenti. U se niddiskutu dan issa.
Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

Ħalli waħda mis-superspines tagħna "timrad". Hawnhekk erġajt lura għall-arkitettura b'żewġ pjani. Aħna nżommu ma 'dawn bħala eżempju għaliex sempliċiment ikun aktar faċli biex tara x'inhu jiġri b'inqas partijiet li jiċċaqilqu. Ħalli X11 jimrad. Dan kif se jaffettwa s-servizzi li jgħixu ġewwa ċ-ċentri tad-dejta? Jiddependi ħafna fuq kif in-nuqqas fil-fatt jidher.
Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

Jekk in-nuqqas huwa tajjeb, jinqabad fil-livell ta 'awtomazzjoni tal-istess BFD, l-awtomazzjoni heureusement tpoġġi l-ġonot problematiċi u tiżola l-problema, allura kollox huwa tajjeb. Għandna ħafna mogħdijiet, it-traffiku istantanjament jiġi ridirett lejn rotot alternattivi, u s-servizzi ma jindunaw xejn. Din hija skript tajjeb.
Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

Xenarju ħażin huwa jekk ikollna telf kostanti, u l-awtomazzjoni ma tinnotax il-problema. Biex nifhmu kif dan jaffettwa applikazzjoni, ikollna nqattgħu ftit ħin niddiskutu kif jaħdem it-TCP.
Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

Nispera li ma xokk lil ħadd b'din l-informazzjoni: TCP huwa protokoll ta' konferma tat-trażmissjoni. Jiġifieri, fl-aktar każ sempliċi, il-mittent jibgħat żewġ pakketti u jirċievi ack kumulattiv fuqhom: "Irċevejt żewġ pakketti."
Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

Wara dan, se jibgħat żewġ pakketti oħra, u s-sitwazzjoni tirrepeti. Niskuża ruħi minn qabel għal xi simplifikazzjoni. Dan ix-xenarju huwa korrett jekk it-tieqa (in-numru ta 'pakketti fit-titjira) hija tnejn. Naturalment, fil-każ ġenerali dan mhux neċessarjament il-każ. Iżda d-daqs tat-tieqa ma jaffettwax il-kuntest tat-trażmissjoni tal-pakketti.
Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

X'jiġri jekk nitilfu l-pakkett 3? F'dan il-każ, ir-riċevitur jirċievi l-pakketti 1, 2 u 4. U hu se jgħid b'mod espliċitu lill-mittent billi juża l-għażla SACK: "Taf, waslu tlieta, iżda n-nofs kien mitluf." Jgħid, "Ack 2, SACK 4."
Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

F'dan il-mument, min jibgħat mingħajr problemi jirrepeti eżattament il-pakkett li ntilef.
Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

Imma jekk l-aħħar pakkett fit-tieqa jintilef, is-sitwazzjoni tidher kompletament differenti.

Min jirċievi l-ewwel tliet pakketti u l-ewwel nett jibda jistenna. Grazzi għal xi ottimizzazzjonijiet fil-munzell TCP tal-kernel tal-Linux, se tistenna pakkett paired sakemm il-bnadar jindikaw b'mod espliċitu li huwa l-aħħar pakkett jew xi ħaġa simili. Se tistenna sakemm jiskadi l-timeout ACK Delayed u mbagħad tibgħat rikonoxximent fuq l-ewwel tliet pakketti. Imma issa l-mittent se jistenna. Ma jafx jekk ir-raba’ pakkett intilifx jew hux se jasal. U sabiex ma jgħabbix żżejjed in-netwerk, se jipprova jistenna għal indikazzjoni espliċita li l-pakkett jintilef, jew biex jiskadi ż-żmien tal-RTO.
Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

X'inhu RTO timeout? Dan huwa l-massimu tal-RTT ikkalkulat mill-munzell TCP u xi kostanti. X'tip ta 'kostanti huwa dan, issa se niddiskutu.
Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

Imma l-importanti hu li jekk nerġgħu nkunu sfortunati u r-raba’ pakkett jerġa’ jintilef, allura l-RTO jirdoppja. Jiġifieri, kull tentattiv li ma jirnexxix ifisser li tirdoppja l-timeout.
Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

Issa ejja naraw x'inhi din il-bażi ugwali. B'mod awtomatiku, l-RTO minimu huwa 200 ms. Dan huwa l-RTO minimu għall-pakketti tad-dejta. Għal pakketti SYN huwa differenti, 1 sekonda. Kif tistgħu taraw, anke l-ewwel tentattiv biex jerġgħu jintbagħtu l-pakketti se jieħu 100 darba itwal mill-RTT ġewwa ċ-ċentru tad-dejta.
Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

Issa ejja nerġgħu lura għax-xenarju tagħna. X'qed jiġri bis-servizz? Is-servizz jibda jitlef il-pakketti. Ħalli s-servizz ikun kundizzjonali xortik tajba għall-ewwel u jitlef xi ħaġa fin-nofs tat-tieqa, imbagħad jirċievi XKARA u jibgħat mill-ġdid il-pakketti li ntilfu.
Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

Imma jekk ix-xorti ħażina tirrepeti ruħha, allura għandna RTO. X'inhu importanti hawn? Iva, għandna ħafna mogħdijiet fin-netwerk tagħna. Iżda t-traffiku TCP ta 'konnessjoni TCP partikolari waħda se jkompli jgħaddi mill-istess munzell miksur. Telf tal-pakketti, sakemm dan X11 maġiku tagħna ma joħroġx waħdu, ma jwassalx għal traffiku li jgħaddi f'żoni li mhumiex problematiċi. Qed nippruvaw inwasslu l-pakkett permezz tal-istess munzell miksur. Dan iwassal għal falliment kaskata: ċentru tad-dejta huwa sett ta 'applikazzjonijiet li jinteraġixxu, u xi wħud mill-konnessjonijiet TCP ta' dawn l-applikazzjonijiet kollha jibdew jiddegradaw - minħabba li s-superspine taffettwa l-applikazzjonijiet kollha li jeżistu ġewwa ċ-ċentru tad-dejta. Kif jgħid il-qal: jekk ma żarbux żiemel, iż-żiemel mar zopp; iż-żiemel mar zopp - ir-rapport ma ġiex ikkunsinnat; ir-rapport ma ġiex imwassal - tlifna l-gwerra. Hawnhekk biss l-għadd huwa f'sekondi mill-mument li tqum il-problema sal-istadju ta' degradazzjoni li jibdew iħossu s-servizzi. Dan ifisser li l-utenti jistgħu jkunu qed jitilfu xi ħaġa x'imkien.
Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

Hemm żewġ soluzzjonijiet klassiċi li jikkumplimentaw lil xulxin. L-ewwel huwa s-servizzi li qed jippruvaw ipoġġu t-tiben u jsolvu l-problema bħal din: "Ejja tweak xi ħaġa fil-munzell TCP. Ejja nagħmlu timeouts fil-livell tal-applikazzjoni jew sessjonijiet TCP ta’ ħajja twila bi kontrolli interni tas-saħħa.” Il-problema hija li soluzzjonijiet bħal dawn: a) ma jiskalaw xejn; b) huma kkontrollati ħażin ħafna. Jiġifieri, anki jekk is-servizz aċċidentalment jikkonfigura l-munzell TCP b'mod li jagħmilha aħjar, l-ewwelnett, mhux probabbli li jkun applikabbli għall-applikazzjonijiet kollha u ċ-ċentri tad-dejta kollha, u t-tieni, x'aktarx, mhux se jifhem li sar b'mod korrett , u dak li le. Jiġifieri taħdem, iżda taħdem ħażin u ma tiskalax. U jekk hemm problema tan-netwerk, min għandu t-tort? Naturalment, NOC. X'jagħmel l-NOC?

Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

Ħafna servizzi jemmnu li fil-ħidma tal-NOC jiġri xi ħaġa bħal din. Imma biex inkun onest, mhux biss.
Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

NOC fl-iskema klassika hija involuta fl-iżvilupp ta 'ħafna sistemi ta' monitoraġġ. Dawn huma kemm il-monitoraġġ tal-kaxxa sewda kif ukoll il-kaxxa bajda. Dwar eżempju ta 'monitoraġġ tas-sinsla tal-kaxxa sewda qal Alexander Klimenko fl-aħħar Next Hop. Mill-mod, dan il-monitoraġġ jaħdem. Iżda anke l-monitoraġġ ideali se jkollu dewmien ta 'żmien. Normalment dan huwa ftit minuti. Wara li jintefa, l-inġiniera fuq ix-xogħol jeħtieġu ħin biex jiċċekkjaw doppjament it-tħaddim tiegħu, jillokalizzaw il-problema u mbagħad jitfu ż-żona problematika. Jiġifieri, fl-aħjar każ, it-trattament tal-problema jieħu 5 minuti, fl-agħar każ, 20 minuta, jekk ma jkunx immedjatament ovvju fejn iseħħ it-telf. Huwa ċar li dan il-ħin kollu - 5 jew 20 minuta - is-servizzi tagħna se jkomplu jsofru, li probabbilment mhux tajjeb.
Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

X'tixtieq verament tirċievi? Għandna ħafna modi. U l-problemi jinqalgħu preċiżament minħabba li flussi TCP li huma sfortunati jkomplu jużaw l-istess rotta. Għandna bżonn xi ħaġa li tippermettilna nużaw rotot multipli fi ħdan konnessjoni TCP waħda. Jidher li għandna soluzzjoni. Hemm TCP, li jissejjaħ TCP multipath, jiġifieri, TCP għal mogħdijiet multipli. Veru, ġie żviluppat għal kompitu kompletament differenti - għal smartphones li għandhom diversi apparati tan-netwerk. Biex timmassimizza t-trasferiment jew tagħmel mod primarju/backup, ġie żviluppat mekkaniżmu li joħloq ħajt multipli (sessjonijiet) b'mod trasparenti għall-applikazzjoni u jippermettilek taqleb bejniethom f'każ ta 'falliment. Jew, kif għedt, timmassimizza l-istrixxa.

Iżda hawn sfumatura. Biex nifhmu x'inhu, ikollna nħarsu lejn kif il-ħjut huma stabbiliti.
Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

Il-ħjut huma installati b'mod sekwenzjali. L-ewwel ħajt huwa installat l-ewwel. Il-ħjut sussegwenti huma mbagħad issettjati bl-użu tal-cookie li diġà ġie miftiehem fi ħdan dak il-ħajt. U hawn il-problema.
Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

Il-problema hija li jekk l-ewwel ħajta ma tistabbilixxix ruħha, it-tieni u t-tielet ħajta qatt mhu se jinqalgħu. Jiġifieri, TCP multipath ma jsolvix it-telf ta 'pakkett SYN fl-ewwel fluss. U jekk is-SYN jintilef, it-TCP multipath jinbidel f'TCP regolari. Dan ifisser li f'ambjent ta 'ċentru tad-dejta mhux se jgħinna nsolvu l-problema tat-telf fil-fabbrika u nitgħallmu nużaw mogħdijiet multipli f'każ ta' falliment.
Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

X'jista' jgħinna? Xi wħud minnkom diġà qtajtu mit-titlu li qasam importanti fl-istorja ulterjuri tagħna se jkun il-qasam tal-header tat-tikketta tal-fluss IPv6. Tabilħaqq, dan huwa qasam li jidher f'v6, mhuwiex f'v4, jokkupa 20 bit, u kien hemm kontroversja dwar l-użu tiegħu għal żmien twil. Dan huwa interessanti ħafna - kien hemm tilwim, xi ħaġa ġiet iffissata fi ħdan l-RFC, u fl-istess ħin dehret implimentazzjoni fil-kernel tal-Linux, li ma kienet dokumentata imkien.
Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

Nistednek tmur miegħi fuq ftit investigazzjoni. Ejja nagħtu ħarsa lejn dak li qed jiġri fil-qalba tal-Linux matul l-aħħar ftit snin.

Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

sena 2014. Inġinier minn kumpanija waħda kbira u rispettata żżid mal-funzjonalità tal-qalba tal-Linux id-dipendenza tal-valur tat-tikketta tal-fluss fuq is-socket hash. X'kienu qed jippruvaw jirranġaw hawn? Dan huwa relatat ma 'RFC 6438, li ddiskuta l-kwistjoni li ġejja. Ġewwa ċ-ċentru tad-dejta, l-IPv4 spiss ikun inkapsulat f'pakketti IPv6, minħabba li l-fabbrika nnifisha hija IPv6, iżda IPv4 għandu b'xi mod jingħata barra. Għal żmien twil kien hemm problemi bi swiċċijiet li ma setgħux ifittxu taħt żewġ headers IP biex jaslu għal TCP jew UDP u jsibu src_ports, dst_ports hemmhekk. Irriżulta li l-hash, jekk tħares lejn l-ewwel żewġ headers IP, irriżulta li kien kważi fiss. Biex jiġi evitat dan, sabiex l-ibbilanċjar ta 'dan it-traffiku inkapsulat jaħdem b'mod korrett, ġie propost li jiżdied il-hash tal-pakkett inkapsulat 5-tuple mal-valur tal-qasam tat-tikketta tal-fluss. Madwar l-istess ħaġa saret għal skemi oħra ta 'inkapsulament, għal UDP, għal GRE, dan tal-aħħar uża l-qasam GRE Key. B'xi mod jew ieħor, l-għanijiet hawn huma ċari. U għall-inqas f'dak il-mument kienu utli.

Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

Fl-2015, garża ġdida ġejja mill-istess inġinier rispettat. Huwa interessanti ħafna. Jgħid dan li ġej - aħna se nagħmel każwali l-hash f'każ ta 'avveniment ta' routing negattiv. X'inhu avveniment ta' rotta negattiva? Dan huwa l-RTO li ddiskutejna qabel, jiġifieri, it-telf tad-denb tat-tieqa huwa avveniment li huwa tassew negattiv. Veru, huwa relattivament diffiċli li wieħed isib li dan hu.

Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

2016, kumpanija oħra ta 'fama, kbira wkoll. Jiżżarma l-aħħar krozzi u jagħmilha sabiex il-hash, li qabel konna għamilna bl-addoċċ, issa jinbidel għal kull ritrażmissjoni SYN u wara kull timeout RTO. U f'din l-ittra, għall-ewwel u l-aħħar darba, l-għan aħħari huwa ddikjarat - li jiġi żgurat li t-traffiku f'każ ta 'telf jew konġestjoni tal-kanali jkollu l-abbiltà li jiġi rrotta b'mod ippronunzjat u juża mogħdijiet multipli. Naturalment, wara dan kien hemm ħafna pubblikazzjonijiet, faċilment tista 'ssibhom.

Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

Għalkemm le, ma tistax, għax ma kienx hemm pubblikazzjoni waħda dwar dan is-suġġett. Imma nafu!

Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

U jekk ma tifhimx bis-sħiħ dak li sar, jien ngħidlek issa.
Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

X'sar, liema funzjonalità ġiet miżjuda mal-kernel tal-Linux? txhash jinbidel għal valur każwali wara kull avveniment RTO. Dan huwa r-riżultat negattiv ħafna tar-routing. Il-hash jiddependi fuq dan it-txhash, u t-tikketta tal-fluss tiddependi fuq il-hash skb. Hemm xi kalkoli dwar il-funzjonijiet hawn; id-dettalji kollha ma jistgħux jitqiegħdu fuq slide waħda. Jekk xi ħadd hu kurjuż, tista' tgħaddi mill-kodiċi tal-kernel u tiċċekkja.

X'inhu importanti hawn? Il-valur tal-qasam tat-tikketta tal-fluss jinbidel għal numru każwali wara kull RTO. Dan kif jaffettwa l-fluss TCP sfortunat tagħna?
Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

Jekk isseħħ XKARA, xejn ma jinbidel għax qed nippruvaw nibagħtu mill-ġdid pakkett magħruf mitluf. S'issa tajjeb.
Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

Iżda fil-każ ta 'RTO, sakemm aħna żidna tikketta tal-fluss mal-funzjoni hash fuq ToR, it-traffiku jista' jieħu rotta differenti. U iktar ma jkun hemm korsiji, iktar ikun kbir iċ-ċans li ssib mogħdija li mhix affettwata minn ħsara fuq apparat speċifiku.
Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

Jibqa' problema waħda - RTO. Naturalment, hemm rotta oħra, iżda ħafna ħin jinħela fuq dan. 200 ms huwa ħafna. It-tieni huwa assolutament selvaġġ. Preċedentement, tkellimt dwar timeouts li s-servizzi huma kkonfigurati. Għalhekk, it-tieni huwa timeout, li normalment ikun ikkonfigurat mis-servizz fil-livell tal-applikazzjoni, u f'dan is-servizz saħansitra jkun relattivament tajjeb. Barra minn hekk, nirrepeti, l-RTT reali ġewwa ċentru tad-dejta modern huwa ta 'madwar 1 millisekonda.
Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

X'tista 'tagħmel bil-timeouts RTO? Il-timeout, li huwa responsabbli għal RTO f'każ ta 'telf ta' pakketti tad-dejta, jista 'jiġi kkonfigurat relattivament faċilment mill-ispazju tal-utent: hemm utilità IP, u wieħed mill-parametri tiegħu fih l-istess rto_min. Meta wieħed iqis li l-RTO, ovvjament, jeħtieġ li jiġi aġġustat mhux globalment, iżda għal prefissi partikolari, mekkaniżmu bħal dan jidher pjuttost fattibbli.
Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

Veru, b'SYN_RTO kollox huwa kemmxejn agħar. Huwa naturalment nailed isfel. Il-qalba għandha valur fiss ta 'sekonda 1, u dak hu. Ma tistax tasal hemm mill-ispazju tal-utent. Hemm mod wieħed biss.
Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

eBPF jiġi għas-salvataġġ. Fi kliem sempliċi, dawn huma programmi żgħar C. Jistgħu jiddaħħlu f'ganċijiet f'postijiet differenti fl-eżekuzzjoni tal-munzell tal-kernel u l-munzell TCP, li magħhom tista 'tbiddel numru kbir ħafna ta' settings. B'mod ġenerali, l-eBPF hija xejra fit-tul. Minflok ma jaqtgħu għexieren ta 'parametri sysctl ġodda u tespandi l-utilità tal-IP, il-moviment qed jimxi lejn eBPF u jespandi l-funzjonalità tiegħu. Bl-użu tal-eBPF, tista 'tbiddel b'mod dinamiku l-kontrolli tal-konġestjoni u diversi settings TCP oħra.
Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

Iżda huwa importanti għalina li tista 'tintuża biex tibdel il-valuri SYN_RTO. Barra minn hekk, hemm eżempju ppubblikat pubblikament: https://elixir.bootlin.com/linux/latest/source/samples/bpf/tcp_synrto_kern.c. X'sar hawn? L-eżempju qed jaħdem, iżda fih innifsu huwa mhux maħdum ħafna. Hawnhekk huwa preżunt li ġewwa ċ-ċentru tad-dejta nqabblu l-ewwel 44 bit; jekk jaqblu, allura nkunu ġewwa ċ-ċentru tad-dejta. U f'dan il-każ aħna nibdlu l-valur ta 'timeout SYN_RTO għal 4ms. L-istess kompitu jista 'jsir ħafna aktar eleganti. Iżda dan l-eżempju sempliċi juri li dan huwa a) possibbli; b) relattivament sempliċi.

Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

X’nafu diġà? Il-fatt li l-arkitettura tal-pjan tippermetti l-iskala, jirriżulta li huwa estremament utli għalina meta nippermettu t-tikketta tal-fluss fuq ToR u niksbu l-abbiltà li niċċirkolaw madwar żoni problematiċi. L-aħjar mod biex jitnaqqsu l-valuri RTO u SYN-RTO huwa li tuża programmi eBPF. Il-mistoqsija tibqa ': huwa sikur li tuża tikketta tal-fluss għall-ibbilanċjar? U hawn sfumatura.
Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

Ejja ngħidu li għandek servizz fuq in-netwerk tiegħek li jgħix f'anycast. Sfortunatament, m'għandix ħin biex nidħol fid-dettall dwar x'inhu anycast, iżda huwa servizz distribwit b'servers fiżiċi differenti aċċessibbli permezz tal-istess indirizz IP. U hawn problema possibbli: l-avveniment RTO jista 'jseħħ mhux biss meta t-traffiku jgħaddi mid-drapp. Jista 'jseħħ ukoll fil-livell tal-buffer tat-ToR: meta jseħħ avveniment incast, jista' saħansitra jseħħ fuq l-ospitant meta l-ospitant ixerred xi ħaġa. Meta jseħħ avveniment RTO u jibdel it-tikketta tal-fluss. F'dan il-każ, it-traffiku jista' jmur f'istanza anycast oħra. Ejja nassumu li dan huwa anycast stateful, fih stat ta 'konnessjoni - jista' jkun Balancer L3 jew xi servizz ieħor. Imbagħad tqum problema, għax wara RTO il-konnessjoni TCP tasal fis-server, li ma jaf xejn dwar din il-konnessjoni TCP. U jekk ma jkollniex qsim tal-istat bejn is-servers anycast, allura tali traffiku jitwaqqa 'u l-konnessjoni TCP tinkiser.
Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

X'tista' tagħmel hawn? Fl-ambjent ikkontrollat ​​tiegħek, fejn tippermetti l-ibbilanċjar tat-tikketta tal-fluss, għandek bżonn tirreġistra l-valur tat-tikketta tal-fluss meta taċċessa servers anycast. L-eħfef mod huwa li tagħmel dan permezz tal-istess programm eBPF. Iżda hawnhekk huwa punt importanti ħafna - x'għandek tagħmel jekk ma toperax netwerk ta 'ċentru tad-dejta, iżda inti operatur tat-telekomunikazzjoni? Din hija l-problema tiegħek ukoll: li jibdew b'ċerti verżjonijiet ta' Juniper u Arista, jinkludu tikketta tal-fluss fil-funzjonijiet tal-hash tagħhom b'mod awtomatiku - franchement, għal raġuni li mhix ċara għalija. Dan jista 'jġiegħlek twaqqa' konnessjonijiet TCP minn utenti li jgħaddu min-netwerk tiegħek. Allura nirrakkomanda ħafna li tiċċekkja s-settings tar-routers tiegħek hawn.

B’xi mod jew ieħor, jidhirli li lesti ngħaddu għall-esperimenti.
Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

Meta ppermettejna t-tikketta tal-fluss fuq ToR, ippreparajna l-aġent eBPF, li issa jgħix fuq l-ospiti, iddeċidejna li ma nistennewx il-falliment kbir li jmiss, iżda li nwettqu splużjonijiet ikkontrollati. Ħadna ToR, li għandu erba 'uplinks, u waqqafna qtar fuq wieħed minnhom. Ġibw regola u qalu - issa qed titlef il-pakketti kollha. Kif tistgħu taraw fuq ix-xellug, għandna monitoraġġ għal kull pakkett, li niżel għal 75%, jiġifieri, 25% tal-pakketti jintilfu. Fuq il-lemin hemm graffs tas-servizzi li jgħixu wara dan it-ToR. Essenzjalment, dawn huma graffs tat-traffiku tal-interfaces ma 'servers ġewwa l-ixtilliera. Kif tistgħu taraw, għerqu saħansitra aktar baxxi. Għaliex waqgħu aktar baxxi - mhux b'25%, iżda f'xi każijiet b'3-4 darbiet? Jekk il-konnessjoni TCP hija sfortunata, tkompli tipprova tilħaq mill-junction miksura. Dan huwa aggravat mill-imġieba tipika tas-servizz ġewwa d-DC - għal talba ta 'utent wieħed, jiġu ġġenerati N talbiet għal servizzi interni, u r-rispons se jmur għand l-utent jew meta s-sorsi kollha tad-dejta jirrispondu, jew meta jseħħ timeout fl-applikazzjoni. livell, li għad irid jiġi kkonfigurat. Jiġifieri kollox huwa ħażin ħafna, ħafna.
Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

Issa l-istess esperiment, iżda bil-valur tat-tikketta tal-fluss attivat. Kif tistgħu taraw, fuq ix-xellug il-monitoraġġ tal-lott tagħna niżel bl-istess 25%. Dan huwa assolutament korrett, għax ma jaf xejn dwar it-trażmissjoni mill-ġdid, jibgħat pakketti u sempliċement jgħodd il-proporzjon tan-numru ta 'pakketti kkonsenjati u mitlufa.

U fuq il-lemin hemm l-iskeda tas-servizz. Mhux se ssib l-effett ta 'ġonta problematika hawn. F'dawk l-istess millisekondi, it-traffiku għadda miż-żona problematika għat-tliet uplinks li fadal li ma ġewx affettwati mill-problema. Aħna ltqajna netwerk li jfejjaq innifsu.

Netwerk li jfejjaq innifsu: il-maġija ta 'Flow Label u xogħol ditektif madwar il-kernel tal-Linux. Rapport Yandex

Din hija l-aħħar slide tiegħi, iż-żmien li niġbor fil-qosor. Issa, nispera li tkun taf kif tibni netwerk taċ-ċentru tad-dejta li jfejjaq lilhom infushom. Mhux se jkollok bżonn tgħaddi mill-arkivju tal-kernel tal-Linux u tfittex irqajja speċjali hemmhekk; taf li t-tikketta Flow f'dan il-każ issolvi l-problema, iżda trid tavviċina dan il-mekkaniżmu bir-reqqa. U nenfasizza għal darb'oħra li jekk inti operatur tat-telekomunikazzjoni, m'għandekx tuża tikketta tal-fluss bħala funzjoni ta 'hash, inkella tfixkel is-sessjonijiet tal-utenti tiegħek.

L-inġiniera tan-netwerk iridu jgħaddu minn bidla kunċettwali: in-netwerk jibda mhux bit-ToR, mhux bl-apparat tan-netwerk, iżda mal-host. Eżempju pjuttost impressjonanti huwa kif nużaw l-eBPF kemm biex nibdlu l-RTO kif ukoll biex niffissaw it-tikketta tal-fluss lejn is-servizzi anycast.

Il-mekkaniżmi tat-tikketta tal-fluss huma ċertament adattati għal applikazzjonijiet oħra fi ħdan is-segment amministrattiv ikkontrollat. Dan jista 'jkun traffiku bejn ċentri tad-dejta, jew tista' tuża tali mekkaniżmi b'mod speċjali biex timmaniġġja t-traffiku ħerġin. Imma jien ngħidlek dwar dan, nispera, id-darba li jmiss. Grazzi ħafna għall-attenzjoni tiegħek.

Sors: www.habr.com