Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

Марказҳои муосири додаҳо садҳо дастгоҳҳои фаъол доранд, ки бо намудҳои гуногуни мониторинг фаро гирифта шудаанд. Аммо ҳатто як муҳандиси мукаммале, ки дар даст мониторинги комил дорад, метавонад дар тӯли чанд дақиқа ба шикасти шабака дуруст посух диҳад. Дар гузориш дар конфронси Next Hop 2020, ман методологияи тарҳрезии шабакаи маркази додаҳоро пешниҳод кардам, ки хусусияти беназир дорад - маркази додаҳо худро дар миллисонияҳо шифо медиҳад. Аниқтараш, муҳандис мушкилотро оромона ҳал мекунад, дар ҳоле ки хидматҳо онро пайхас намекунанд.

- Барои оғоз, ман барои онҳое, ки шояд аз сохтори DC-и муосир огоҳ нестанд, муқаддимаи муфассал медиҳам.
Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

Барои бисёре аз муҳандисони шабакавӣ, шабакаи маркази додаҳо, албатта, аз ToR, бо гузариш дар раф оғоз мешавад. ToR одатан ду намуди пайванд дорад. Кӯдакон ба серверҳо мераванд, дигарон - N маротиба зиёдтар - ба сутунмӯҳраҳои дараҷаи аввал, яъне ба болоравии он мераванд. Пайвандҳои болоӣ одатан баробар ҳисобида мешаванд ва трафики байни болоравиҳо дар асоси хэши 5-навор мутавозин карда мешавад, ки он proto, src_ip, dst_ip, src_port, dst_port -ро дар бар мегирад. Дар ин ҷо ҳайратовар нест.
Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

Баъд, меъмории ҳавопаймоҳо чӣ гуна аст? Сутунмӯҳраҳои дараҷаи якум ба ҳамдигар пайваст нестанд, балки ба воситаи суперспинҳо пайваст мешаванд. Ҳарфи X барои superspins масъул хоҳад буд, он тақрибан ба як пайвастшавӣ монанд аст.
Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

Ва маълум аст, ки аз тарафи дигар, тори ба тамоми сутунмӯҳраҳои дараҷаи аввал пайвастанд. Дар ин расм чӣ муҳим аст? Агар мо дар дохили rack таъсири мутақобила дошта бошем, пас мутақобила, албатта, тавассути ToR мегузарад. Агар мутақобила дар дохили модул гузарад, он гоҳ мутақобила аз сутунмӯҳраҳои сатҳи якум мегузарад. Агар мутақобила байнимодулярӣ бошад - мисли ин ҷо, ToR 1 ва ToR 2 - он гоҳ ҳамкорӣ тавассути сутунмӯҳраҳои сатҳи якум ва дуюм мегузарад.
Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

Аз ҷиҳати назариявӣ, чунин меъморӣ ба осонӣ миқёспазир аст. Агар мо иқтидори порт, захираи ҷой дар маркази додаҳо ва нахи пешакӣ гузошташуда дошта бошем, пас шумораи ҳавопаймоҳоро ҳамеша зиёд кардан мумкин аст ва ба ин васила қобилияти умумии системаро зиёд кардан мумкин аст. Дар рӯи коғаз ин корро кардан хеле осон аст. Дар ҳаёти воқеӣ чунин хоҳад буд. Аммо достони имрӯза дар ин бора нест.
Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

Ман мехохам, ки хулосахои дуруст бароварда шаванд. Мо дар дохили маркази додаҳо роҳҳои зиёде дорем. Онҳо шартан мустақиланд. Як роҳ дар дохили маркази додаҳо танҳо дар дохили ToR имконпазир аст. Дар дохили модул мо ҳамон шумораи роҳҳо дорем, ки шумораи ҳавопаймоҳо. Миқдори роҳҳо байни модулҳо ба ҳосили шумораи ҳавопаймоҳо ва шумораи суперспинҳо дар ҳар як ҳавопаймо баробар аст. Барои равшантар кардани он, барои ҳис кардани миқёс, ман рақамҳоеро медиҳам, ки барои яке аз марказҳои додаҳои Яндекс эътибор доранд.
Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

Ҳашт ҳавопаймо мавҷуд аст, ки ҳар як ҳавопаймо 32 суперспин дорад. Дар натиҷа, маълум мешавад, ки дар дохили модул ҳашт роҳ мавҷуд аст ва бо ҳамкории байни модулҳо аллакай 256-тои онҳо вуҷуд доранд.

Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

Яъне, агар мо китоби пухтупазро таҳия карда бошем ва кӯшиш кунем, ки чӣ гуна сохтани марказҳои додаҳои ба хатогиҳо тобоварро омӯзем, ки худро шифо мебахшанд, пас меъмории планарӣ интихоби дуруст аст. Он ба шумо имкон медиҳад, ки мушкилоти миқёсро ҳал кунед ва аз ҷиҳати назариявӣ осон аст. Роҳҳои зиёди мустақил вуҷуд доранд. Саволе боқӣ мемонад: чӣ гуна чунин меъморӣ аз нокомиҳо наҷот меёбад? Сахтҳои гуногун вуҷуд доранд. Ва мо ҳоло инро муҳокима хоҳем кард.
Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

Бигзор яке аз суперспинҳои мо бемор шавад. Дар ин чо ман ба меъмории ду самолёт баргаштам. Мо ба онҳо ҳамчун намуна мемонем, зеро дидани он ки дар ин ҷо бо қисмҳои камтари ҳаракаткунанда чӣ рӯй дода истодааст, осонтар хоҳад шуд. Бигузор X11 бемор шавад. Ин ба хидматҳое, ки дар дохили марказҳои додаҳо зиндагӣ мекунанд, чӣ гуна таъсир мерасонад? Бисёр чиз аз он вобаста аст, ки нокомӣ воқеан чӣ гуна ба назар мерасад.
Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

Агар нокомӣ хуб бошад, он дар сатҳи автоматизатсияи ҳамон BFD гирифта мешавад, автоматика бо хушҳолӣ пайвандҳои мушкилотро мегузорад ва мушкилотро ҷудо мекунад, пас ҳама чиз хуб аст. Мо роҳҳои зиёде дорем, ҳаракати нақлиёт фавран ба хатсайрҳои алтернативӣ интиқол дода мешавад ва хидматҳо чизеро пай намебаранд. Ин як сенарияи хуб аст.
Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

Сенарияи бад ин аст, ки агар мо талафоти доимӣ дошта бошем ва автоматизатсия мушкилотро пайхас накунад. Барои фаҳмидани он, ки ин ба барнома чӣ гуна таъсир мерасонад, мо бояд каме вақт сарф кунем, ки чӣ тавр протоколи TCP кор мекунад.
Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

Ман умедворам, ки ман бо ин маълумот касеро ба ҳайрат намеоварам: TCP протоколи дастфишорӣ аст. Ин аст, ки дар соддатарин ҳолат, ирсолкунанда ду баста мефиристад ва ба онҳо аксияи ҷамъӣ мегирад: "Ман ду баста гирифтам".
Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

Баъд аз ин, ӯ боз ду баста мефиристад ва вазъият такрор мешавад. Барои каме содда кардан пешакӣ узр мепурсам. Ин сенария дуруст аст, агар тиреза (шумораи бастаҳои парвоз) ду бошад. Албатта, ин дар маҷмӯъ ҳатман чунин нест. Аммо ба контексти интиқоли бастаҳо андозаи тиреза таъсир намерасонад.
Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

Агар мо бастаи 3-ро гум кунем, чӣ мешавад? Дар ин ҳолат, гиранда бастаҳои 1, 2 ва 4-ро мегирад. Ва ӯ бо истифода аз опсияи SACK ба ирсолкунанда ба таври возеҳ хабар медиҳад: "Медонед, се омад, аммо миёнаш гум шуд." Ӯ мегӯяд, "Ack 2, SACK 4".
Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

Фиристодан дар айни замон бастаеро, ки бе ягон мушкилот гум шудааст, такрор мекунад.
Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

Аммо агар бастаи охирини тиреза гум шавад, вазъият хеле дигар хоҳад буд.

Қабулкунанда се бастаи аввалро мегирад ва пеш аз ҳама ба интизор шудан оғоз мекунад. Бо шарофати баъзе оптимизатсияҳо дар стеки TCP-и ядрои Linux, он бастаи ҷуфтшударо интизор мешавад, ба шарте ки дар парчамҳо нишонаи возеҳе вуҷуд надошта бошад, ки ин бастаи охирин ё чизе монанди он аст. Он то ба охир расидани мӯҳлати таъхири ACK интизор мешавад ва сипас барои се бастаи аввал тасдиқ мефиристад. Аммо ҳоло ирсолкунанда интизор мешавад. У намедонад, ки бастаи чорум гум шудааст ё дар арафаи омадан аст. Ва барои он ки шабакаро аз ҳад зиёд бор накунад, он кӯшиш мекунад, ки нишонаи возеҳ гум шудани баста ё ба охир расидани мӯҳлатҳои RTO-ро интизор шавад.
Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

Вақтхушии RTO чист? Ин ҳадди аксар аз RTT мебошад, ки аз ҷониби стеки TCP ҳисоб карда мешавад ва баъзе доимӣ. Ин доимӣ чист, мо ҳоло муҳокима хоҳем кард.
Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

Аммо муҳим аст, ки агар мо боз бахт накунем ва бастаи чорум боз гум шавад, пас RTO дучанд мешавад. Яъне, ҳар як кӯшиши номуваффақ дучанд шудани вақт аст.
Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

Акнун биёед бубинем, ки ин пойгоҳ ба чӣ баробар аст. Бо нобаёнӣ, ҳадди ақали RTO 200ms аст. Ин ҳадди ақали RTO барои бастаҳои додаҳост. Барои бастаҳои SYN, он гуногун аст, 1 сония. Тавре ки шумо мебинед, ҳатто кӯшиши аввалини дубора фиристодани бастаҳо нисбат ба RTT дар дохили маркази додаҳо 100 маротиба зиёдтар вақт мегирад.
Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

Акнун ба сенарияи мо бармегардем. Бо хидмат чӣ мешавад? Хидмат ба гум кардани бастаҳо оғоз мекунад. Бигзор хидмат дар аввал хушбахт бошад ва дар мобайни тиреза чизеро гум кунад, пас он SACK мегирад, бастаҳои гумшударо дубора мефиристад.
Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

Аммо агар бадбахтӣ такрор шавад, пас мо RTO дорем. Дар ин ҷо чӣ муҳим аст? Бале, мо дар шабака роҳҳои зиёде дорем. Аммо трафики TCP-и як пайвасти мушаххаси TCP аз ҳамон стек шикаста идома хоҳад дод. Талафоти бастаҳо, ба шарте ки ҷодугарии мо X11 худ аз худ набарояд, боиси интиқоли трафик ба минтақаҳое гардад, ки мушкилот надоранд. Мо кӯшиш мекунем, ки бастаро тавассути ҳамон стек шикаста расонем. Ин ба нокомии каскадӣ оварда мерасонад: маркази додаҳо маҷмӯи замимаҳои мутақобила мебошад ва баъзе пайвастҳои TCP-и ҳамаи ин замимаҳо ба таназзул оғоз мекунанд - зеро superspin ба ҳама замимаҳои дохили DC таъсир мерасонад. Чунон ки дар урфият: аспро кафш накун, асп ланг мешавад; асп ланг шуд - гузориш нарасид; хабар нарасид — чангро маглуб карданд. Танҳо дар ин ҷо ҳисоб сонияҳо аз лаҳзаи пайдо шудани мушкилот то марҳилаи таназзуле, ки хидматҳо эҳсос мекунанд, мегузарад. Ин маънои онро дорад, ки корбарон метавонанд дар ҷое чизе нагиранд.
Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

Ду роҳи ҳалли классикӣ мавҷуданд, ки якдигарро пурра мекунанд. Якум хидматҳое мебошанд, ки кӯшиш мекунанд, ки кох гузоранд ва мушкилотро чунин ҳал кунанд: "Биёед дар стеки TCP чизеро ислоҳ кунем. Ва биёед мӯҳлатҳои сатҳи барнома ё сеансҳои дарозмуддати TCP-ро бо санҷиши саломатии дохилӣ созем. Гап дар сари он аст, ки чунин роххо: а) умуман микьёс надоранд; б) хеле суст санҷида шудааст. Яъне, ҳатто агар хидмат тасодуфан стеки TCP-ро танзим кунад, то он беҳтар шавад, аввалан, ин ба ҳама замимаҳо ва ҳама марказҳои додаҳо татбиқ намегардад, ва дуюм, эҳтимолан, он намефаҳмад, ки чӣ дуруст анҷом дода шудааст ва чӣ не. Яъне, кор мекунад, аммо бад кор мекунад ва миқёс надорад. Ва агар мушкили шабака вуҷуд дошта бошад, ки гунаҳкор аст? Албатта NOC. NOC чӣ кор мекунад?

Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

Бисёре аз хидматҳо боварӣ доранд, ки дар NOC кор чунин аст. Аммо ростқавлона, на танҳо.
Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

NOC дар нақшаи классикӣ ба таҳияи бисёр мониторингҳо машғул аст. Инҳо ҳам мониторинги қуттии сиёҳ ва ҳам мониторинги қуттии сафед мебошанд. Дар бораи мисоли сандуқи сиёҳ-мониторинги сутунмӯҳраҳо гуфт Александр Клименко дар бораи гузаштаи Next Hop. Воқеан, ин мониторинг кор мекунад. Аммо ҳатто мониторинги комил таъхири вақт дорад. Одатан, ин якчанд дақиқа аст. Пас аз кор кардани он, ба муҳандисони навбатдор вақт лозим аст, ки кори онро дубора тафтиш кунанд, мушкилотро ҷойгир кунанд ва сипас майдони мушкилотро хомӯш кунанд. Яъне, дар беҳтарин ҳолат, табобати мушкилот 5 дақиқа, дар бадтарин 20 дақиқа, агар фавран маълум нашавад, ки талафот дар куҷо рух медиҳад. Маълум аст, ки тамоми ин вақт - 5 ё 20 дақиқа - хидматҳои мо зарар хоҳанд расонд, ки шояд хуб нест.
Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

Шумо чӣ қабул кардан мехоҳед? Мо роҳҳои зиёде дорем. Ва мушкилот маҳз аз он сабаб ба миён меоянд, ки ҷараёнҳои TCP, ки бадбахтанд, ҳамон масирро идома медиҳанд. Ба мо чизе лозим аст, ки ба мо имкон медиҳад, ки дар як пайвасти ягонаи TCP хатсайрҳои гуногунро истифода барем. Чунин ба назар мерасад, ки мо роҳи ҳалли худро дорем. TCP вуҷуд дорад, ки онро - TCP multipath, яъне TCP барои бисёр роҳҳо меноманд. Дуруст аст, ки он барои вазифаи тамоман дигар - барои смартфонҳое, ки дорои якчанд дастгоҳҳои шабакавӣ мебошанд, таҳия шудааст. Барои ба ҳадди аксар расонидани интиқол ё табдил додани ҳолати ибтидоӣ / нусхабардорӣ, механизме таҳия шудааст, ки шаффоф якчанд риштаҳоро (сессияҳо) барои барнома эҷод мекунад ва ба шумо имкон медиҳад, ки дар сурати нокомӣ байни онҳо гузаред. Ё, тавре ки ман гуфтам, фарохмаҷро ба ҳадди аксар расонед.

Аммо дар ин ҷо як нозуки вуҷуд дорад. Барои фаҳмидани он, ки он чӣ аст, мо бояд бубинем, ки ҷараёнҳо чӣ гуна танзим карда мешаванд.
Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

Риштаҳо пайдарпай гузошта мешаванд. Ҷараёни аввал аввал насб карда мешавад. Пас аз он ҷараёнҳои минбаъда бо истифода аз кукие, ки аллакай дар дохили ин ришта мувофиқа шудааст, муқаррар карда мешаванд. Ва дар ин ҷо мушкилот аст.
Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

Масъала дар он аст, ки агар риштаи якум насб нашавад, риштаҳои дуюм ва сеюм ҳеҷ гоҳ нахоҳанд омад. Яъне, TCP-и бисёрқабата талафоти бастаи SYN-ро дар ҷараёни аввал ҳал намекунад. Ва агар SYN гум шавад, TCP-и бисёрқабата TCP муқаррарӣ мешавад. Ҳамин тавр, дар муҳити маркази додаҳо, он ба мо кӯмак намекунад, ки мушкилоти талафотро дар корхона ҳал кунем ва дар сурати нокомӣ чӣ гуна истифода бурдани роҳҳои гуногунро омӯзем.
Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

Чӣ ба мо кӯмак карда метавонад? Баъзе аз шумо аллакай аз ном тахмин кардаед, ки майдони муҳим дар ҳикояи минбаъдаи мо майдони сарлавҳаи тамғаи ҷараёни IPv6 хоҳад буд. Дар ҳақиқат, ин майдонест, ки дар v6 пайдо мешавад, он дар v4 нест, он 20 битро мегирад ва дар бораи истифодаи он муддати тӯлонӣ баҳсҳо вуҷуд доранд. Ин хеле ҷолиб аст - баҳсҳо буданд, чизе дар доираи RFC ислоҳ карда шуд ва ҳамзамон дар ядрои Linux татбиқе пайдо шуд, ки ҳеҷ гоҳ дар ягон ҷо ҳуҷҷатгузорӣ карда нашудааст.
Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

Ман тавсия медиҳам, ки шумо дар таҳқиқоти каме ба ман ҳамроҳ шавед. Биёед бубинем, ки тайи чанд соли охир дар ядрои Linux чӣ рӯй дод.

Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

соли 2014. Муҳандиси як ширкати бузург ва бонуфуз ба фаъолияти ядрои Linux вобастагии арзиши тамғаи ҷараёнро аз хэши розетка илова мекунад. Дар ин ҷо онҳо чиро ислоҳ карданӣ мешаванд? Ин ба RFC 6438 марбут аст, ки масъалаи зеринро баррасӣ кардааст. Дар дохили маркази додаҳо, IPv4 аксар вақт дар пакетҳои IPv6 фаро гирифта мешавад, зеро худи корхона IPv6 аст, аммо IPv4 бояд ба ягон роҳ дода шавад. Муддати тӯлонӣ бо коммутаторҳо мушкилот вуҷуд доштанд, ки натавонистанд дар зери ду сарлавҳаи IP ба TCP ё UDP ворид шаванд ва дар он ҷо src_ports, dst_ports пайдо кунанд. Маълум шуд, ки хэш, агар шумо ба ду сарлавҳаи аввал назар кунед, қариб собит шудааст. Барои роҳ надодан ба ин, то ки мувозинати ин трафики капсулашуда дуруст кор кунад, пешниҳод карда шуд, ки аз бастаи 5-капсулшуда ба арзиши майдони тамғаи ҷараён хэш илова карда шавад. Тақрибан ҳамин чиз барои дигар схемаҳои инкапсуляция анҷом дода шуд, барои UDP, барои GRE, дар охир майдони GRE Key истифода мешуд. Дар ин чо максадхо аз ин ё он тараф равшананд. Ва ҳадди аққал дар он вақт онҳо муфид буданд.

Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

Дар соли 2015, ямоқи нав аз ҳамон муҳандиси мӯҳтарам меояд. Ӯ хеле ҷолиб аст. Дар он гуфта мешавад, ки мо дар сурати рӯй додани як ҳодисаи масир манфии ҳашро тасодуфӣ мекунем. Ҳодисаи манфии масир чист? Ин РТО аст, ки мо қаблан баррасӣ кардем, яъне аз даст додани думи тиреза ҳодисаест, ки воқеан манфӣ аст. Дуруст аст, ки он чӣ будани онро тахмин кардан нисбатан душвор аст.

Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

2016, дигар ширкати эҳтиром, низ калон. Он асои охиринро таҳлил мекунад ва онро тавре месозад, ки хэше, ки мо қаблан тасодуфӣ карда будем, ҳоло дар ҳар як интиқоли SYN ва пас аз ҳар як тайм-аути RTO тағир дода шавад. Ва дар ин нома бори аввал ва охирин ҳадафи ниҳоӣ садо медиҳад - боварӣ ҳосил кардан, ки трафик дар сурати гум шудан ё изофабории каналҳо имкони тағйири масири нарм бо истифода аз роҳҳои гуногун дошта бошад. Албатта, баъд аз ин нашрияҳо зиёд буданд, онҳоро ба осонӣ ёфтан мумкин аст.

Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

Ҳарчанд не, шумо наметавонед, зеро ягон нашрия дар ин мавзӯъ вуҷуд надорад. Аммо мо медонем!

Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

Ва агар шумо чиро пурра нафаҳмед, ман ҳоло ба шумо мегӯям.
Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

Чӣ кор карда шуд, кадом функсия ба ядрои Linux илова карда шуд? txhash пас аз ҳар як ҳодисаи RTO ба арзиши тасодуфӣ тағир меёбад. Ин ҳамон натиҷаи манфии масир аст. Ҳаш аз ин txhash вобаста аст ва нишони ҷараён аз hash skb вобаста аст. Дар ин ҷо баъзе ҳисобҳо оид ба функсияҳо мавҷуданд, ҳамаи тафсилотҳоро дар як слайд ҷойгир кардан мумкин нест. Агар касе кунҷкоб бошад, шумо метавонед аз рамзи ядро ​​​​гузаред ва тафтиш кунед.

Дар ин ҷо чӣ муҳим аст? Арзиши майдони тамғаи ҷараён пас аз ҳар як RTO ба рақами тасодуфӣ тағир меёбад. Ин ба ҷараёни TCP-и бахти мо чӣ гуна таъсир мерасонад?
Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

Дар мавриди SACK, ҳеҷ чиз тағир наёфтааст, зеро мо кӯшиш мекунем, ки бастаи маълуми гумшударо дубора ирсол кунем. То ҳоло ҳамааш хуб.
Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

Аммо дар мавриди RTO, ба шарте ки мо тамғаи ҷараёнро ба функсияи hash дар ToR илова кардаем, трафик метавонад масири дигарро пеш гирад. Ва ҳар қадаре, ки ҳавопаймоҳо бештар бошанд, эҳтимоли пайдо кардани роҳе бештар аст, ки аз садама дар дастгоҳи мушаххас осеб надиҳад.
Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

Як мушкилот боқӣ мемонад - RTO. Маршрути дигар, албатта, ёфт мешавад, вале барои он вакти зиёд сарф мешавад. 200ms хеле зиёд аст. Дуюм умуман ваҳшӣ аст. Пештар, ман дар бораи вақтхушиҳо, ки хидматҳоро танзим мекунанд, сӯҳбат кардам. Ҳамин тавр, сония як вақт аст, ки одатан хидматро дар сатҳи барнома муқаррар мекунад ва дар ин хидмат ҳатто нисбатан дуруст хоҳад буд. Гузашта аз ин, такрор мекунам, ки RTT воқеии дохили маркази додаҳои муосир тақрибан 1 миллисония аст.
Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

Дар бораи мӯҳлатҳои RTO чӣ кор кардан мумкин аст? Вақтсанҷи вақт, ки барои RTO ҳангоми гум шудани бастаҳои додаҳо масъул аст, метавонад аз фазои корбар ба осонӣ танзим карда шавад: утилитаи IP мавҷуд аст ва яке аз параметрҳои он ҳамон rto_min-ро дар бар мегирад. Бо дарназардошти он, ки, албатта, шумо бояд RTO-ро на дар саросари ҷаҳон табдил диҳед, аммо барои префиксҳои додашуда, чунин механизм хеле кор мекунад.
Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

Дуруст аст, ки бо SYN_RTO ҳама чиз каме бадтар аст. Табиист, ки он ба поён меафтад. Арзиши аст, ки дар аслӣ собит - 1 сония, ва он аст,. Шумо наметавонед онро аз фазои корбар дастрас кунед. Танҳо як роҳ вуҷуд дорад.
Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

eBPF ба наҷот меояд. Агар содда карда гӯем, инҳо барномаҳои хурди Си мебошанд.Онҳоро дар ҷойҳои гуногун ҳангоми иҷрои стеки ядро ​​ва стеки TCP ба қалмоқҳо дохил кардан мумкин аст, ки бо ёрии онҳо шумо метавонед шумораи хеле зиёди танзимотҳоро тағир диҳед. Умуман, eBPF тамоюли дарозмуддат аст. Ба ҷои дидани даҳҳо параметрҳои нави sysctl ва васеъ кардани утилитаи IP, ҳаракат дар самти eBPF ва васеъ кардани функсияи он аст. Бо eBPF, шумо метавонед назорати консессия ва дигар танзимоти TCP-ро динамикӣ тағир диҳед.
Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

Аммо барои мо муҳим аст, ки бо ёрии он шумо метавонед арзишҳои SYN_RTO-ро тағир диҳед. Ва як мисоли ба таври оммавӣ нашршуда вуҷуд дорад: https://elixir.bootlin.com/linux/latest/source/samples/bpf/tcp_synrto_kern.c. Дар ин ҷо чӣ кор карда мешавад? Мисол кор мекунад, аммо худаш хеле ноҳамвор аст. Дар ин ҷо тахмин карда мешавад, ки дар дохили маркази додаҳо мо 44 битҳои аввалро муқоиса мекунем, агар онҳо мувофиқат кунанд, мо худро дар дохили DC мебинем. Ва дар ин ҳолат, мо арзиши SYN_RTO-ро ба 4ms тағир медиҳем. Худи хамин вазифаро хеле зеботар ичро кардан мумкин аст. Аммо ин мисоли оддӣ нишон медиҳад, ки чӣ а) имконпазир аст; б) нисбатан осон.

Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

Мо аллакай чиро медонем? Ки меъмории планарӣ ба миқёс имкон медиҳад, он барои мо бениҳоят муфид мегардад, вақте ки мо нишонаи ҷараёнро дар ToR фаъол мекунем ва имкони ҷараёнро дар атрофи минтақаҳои мушкилот ба даст меорем. Беҳтарин роҳи паст кардани арзишҳои RTO ва SYN-RTO ин истифодаи барномаҳои eBPF мебошад. Савол боқӣ мемонад: оё истифодаи тамғаи ҷараён барои мувозинат бехатар аст? Ва дар ин ҷо як нозуки вуҷуд дорад.
Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

Фарз мекунем, ки шумо дар шабака хидмате доред, ки дар ҳама гуна қадбаҳо зиндагӣ мекунад. Мутаассифона, ман барои муфассалтар дар бораи anycast вақт надорам, аммо ин хидмати тақсимшудаест, ки серверҳои физикии гуногун дар як суроғаи IP дастрасанд. Ва дар ин ҷо як мушкили имконпазир аст: ҳодисаи RTO метавонад на танҳо дар вақти аз корхона гузаштани трафик рӯй диҳад. Он инчунин метавонад дар сатҳи буферии ToR рух диҳад: вақте ки ҳодисаи incast рух медиҳад, он ҳатто метавонад дар мизбон рух диҳад, вақте ки мизбон чизе рехт. Вақте ки ҳодисаи RTO рух медиҳад ва он тамғаи ҷараёнро тағир медиҳад. Дар ин ҳолат, трафик метавонад ба дигар инстансияи дилхоҳ интиқол дода шавад. Фарз мекунем, ки он ҳама гуна пахши давлатӣ аст, он дорои ҳолати пайвастшавӣ аст - он метавонад L3 Balancer ё ягон хидмати дигар бошад. Пас аз он мушкилот ба миён меояд, зеро пас аз RTO, пайвасти TCP ба сервер меояд, ки дар бораи ин пайвасти TCP чизе намедонад. Ва агар мо мубодилаи ҳолати байни серверҳои дилхоҳ надошта бошем, пас чунин трафик қатъ карда мешавад ва пайвасти TCP қатъ мешавад.
Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

Дар ин ҷо чӣ кор кардан мумкин аст? Дар доираи муҳити назоратшавандаи худ, ки дар он шумо мувозинати тамғакоғазҳои ҷараёнро фаъол мекунед, ҳангоми дастрасӣ ба серверҳои ҳамагуна ба шумо лозим аст, ки арзиши тамғаи ҷараёнро ислоҳ кунед. Роҳи осонтарин ин аст, ки онро тавассути ҳамон барномаи eBPF иҷро кунед. Аммо дар ин ҷо як нуктаи хеле муҳим аст - чӣ бояд кард, агар шумо шабакаи маркази маълумотро идора накунед, аммо оператори телекоммуникатсионӣ бошед? Ин мушкили шумо низ аст: аз версияҳои муайяни Juniper ва Arista сар карда, онҳо ба таври нобаёнӣ тамғаи ҷараёнро дар функсияи хэш дохил мекунанд - ростқавлона, бо сабабе, ки ман намефаҳмам. Ин метавонад боиси канда шудани пайвастҳои TCP аз корбароне, ки тавассути шабакаи шумо мегузарад, гардад. Аз ин рӯ, ман тавсия медиҳам, ки танзимоти роутери худро дар ин макон тафтиш кунед.

Ба ин ё он тарз, ба назари ман, мо тайёрем, ки ба тачрибахо гузарем.
Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

Вақте ки мо тамғаи ҷараёнро дар ToR фурӯзон кардем, eBPF-и агентро омода кардем, ки ҳоло дар мизбон зиндагӣ мекунад, мо тасмим гирифтем, ки нокомии навбатиро интизор нашавем, балки таркишҳои идорашавандаро анҷом диҳем. Мо ToR-ро гирифтем, ки дорои чаҳор пайвандак аст ва дар яке аз онҳо қатраҳо сохтем. Онҳо қоида кашиданд, гуфтанд онҳо - акнун шумо ҳама пакетҳоро гум мекунед. Тавре ки шумо дар тарафи чап мебинед, мо мониторинги як пакет дорем, ки он то 75% коҳиш ёфтааст, яъне 25% бастаҳо гум шудаанд. Дар тарафи рост графикҳои хидматҳое ҳастанд, ки дар паси ин ТоR зиндагӣ мекунанд. Дар асл, инҳо графикҳои трафики буғумҳо бо серверҳо дар дохили раф мебошанд. Чунон ки мебинед, онхо боз хам пасттар фурУ рафтаанд. Чаро онхо кам — 25 фоиз не, балки дар баъзе мавридхо 3—4 баробар кам шуданд? Агар пайвасти TCP бадбахт бошад, он кӯшиш мекунад, ки тавассути интерфейси шикаста дастрасӣ пайдо кунад. Ин бо рафтори маъмулии хидмат дар дохили DC шадидтар мешавад - барои як дархости корбар, N дархост ба хидматҳои дохилӣ тавлид мешавад ва посух ба корбар хоҳад расид, ё вақте ки ҳама манбаъҳои додаҳо посух медиҳанд, ё вақте ки вақти фаромадани вақт дар сатҳи барнома, ки то ҳол бояд танзим карда шавад. Яъне, ҳама чиз хеле ва хеле бад аст.
Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

Ҳоло ҳамон таҷриба, аммо бо нишони ҷараён фаъол аст. Тавре ки шумо мебинед, дар тарафи чап, мониторинги партияи мо ҳамон 25% коҳиш ёфт. Ин комилан дуруст аст, зеро вай дар бораи ретрансляторҳо чизе намедонад, он пакетҳоро мефиристад ва танҳо таносуби шумораи бастаҳои расонидашуда ва гумшударо ҳисоб мекунад.

Ва дар тарафи рост ҷадвали хизматрасонӣ аст. Дар ин ҷо шумо таъсири муштараки мушкилотро намеёбед. Трафик дар ҳамон миллисонияҳо аз минтақаи мушкилот ба се пайванди боқимонда, ки аз мушкилот осеб надида буданд, ҷараён гирифт. Мо шабакае дорем, ки худро шифо мебахшад.

Шабакае, ки худро шифо медиҳад: ҷодугарии Flow Label ва детектив дар атрофи ядрои Linux. Ҳисоботи Yandex

Ин слайди охирини ман аст, вақти ҳисоб кардан. Ҳоло, ман умедворам, ки шумо медонед, ки чӣ гуна шабакаи маркази иттилоотии худтабобаткунанда бунёд кунед. Ба шумо лозим нест, ки аз бойгонии ядрои Linux гузаред ва дар он ҷо часбҳои махсусро ҷустуҷӯ кунед, шумо медонед, ки нишони Flow мушкилотро дар ин ҳолат ҳал мекунад, аммо шумо бояд ба ин механизм бодиққат муносибат кунед. Ва ман бори дигар таъкид мекунам, ки агар шумо интиқолдиҳанда бошед, шумо набояд тамғаи ҷараёнро ҳамчун функсияи hash истифода баред, вагарна шумо сессияҳои корбарони худро вайрон мекунед.

Барои муҳандисони шабака, тағироти консептуалӣ бояд сурат гирад: шабака на бо ToR, на бо дастгоҳи шабакавӣ, балки бо мизбон оғоз мешавад. Мисоли хеле аҷиб ин аст, ки чӣ гуна мо eBPF-ро ҳам барои тағир додани RTO ва ҳам барои ислоҳ кардани тамғаи ҷараён ба хидматҳои ҳама гуна пахш истифода мебарем.

Механики тамғаи ҷараён бешубҳа барои истифодаҳои дигар дар доираи сегменти маъмурии идорашаванда мувофиқ аст. Ин метавонад трафики байни марказҳои додаҳо бошад ё шумо метавонед чунин механикҳоро бо роҳи махсус барои идоракунии трафики баромад истифода баред. Аммо ман дар ин бора, умедворам, дафъаи оянда гап мезанам. Ташаккури зиёд барои таваҷҷӯҳатон.

Манбаъ: will.com