Архитектура MST: служебные и пользовательские деревья, концепция региона и расширенный priority-вектор.
Сколько пользовательских инстансов поддерживает MST?
Какие три параметра должны совпадать для принадлежности коммутаторов к одному MST-региону?
Чем MST-регион отличается для внешних наблюдателей?
Что происходит с External Root Path Cost внутри MST-региона?
Как управляются таймеры в пользовательских инстансах MST?
Какие служебные деревья строит MST?
добрый день коллеги с вами онлайн академия network education меня зовут инакинси солнцев и мы с вами продолжаем говорить про протокол спаринг 3 сегодняшняя серия будет посвящена протоколу мст также визно как 802 1 с хотя на самом деле это протокол который вошел в стандарт 802.1 q начиная с ли мне память не изменяет 2005 года соответственно 802 1 с это была рабочая группа но если вы посмотрите на любую документацию любого вендора то увидите именно чаще всего именно это обозначение потому что 802 1 q мы чаще знаем как протокол формирование дополнительных меток в транковых портах которые указывают на номер вилана протоколом ст протокол стандартный соответственно поддерживается большинством производителей скажем достаточно серьезного железа конечно вы его не встретите на свечах домашнего уровня или скажем свечах для маленького офиса но для решения уровня предприятия дата-центра провайдера вот там вот мст будет встретить можно вместо будет блокировать или
раз блокировать коммутацию с учетом поведения коммутатор который коммутирует трафик в разных виланах то есть вы можете в одном вилане трафик коммутировать на порту а в другом не коммутировать протокол мст будет строить одновременно несколько деревьев в абсолютно любом случае будет строиться дерево internal спалинг 3 как понятно из названия это что-то внутреннее и действительно это будет дерево внутри тех свечей которые поддерживают мст строится вот именно по линкам которые между ними будет чистой мастешной плюс есть дерево common спалинг 3 это дерево которое на дополняет дерево а ст и в него включаются также свечи коммутаторы бриджи как как назовете линки между ними которые не поддерживают мст то есть у нас есть вот такой бравые солдаты мст а вокруг него есть враги cst шные ну и соответственно дерево которое включает себя и cst и а ст будет называться цист common and internal спалинг 3 кроме деревьев а ст и соответственно си а ст вы будете дополнительно иметь возможность создать
так называемое пользовательские деревья или инстансы весь смысл unless-то заключается в том что вы будете эти самые вест ends и делать должны будете привязать вилана к деревьям то есть вы должны будете сказать что если у вас сети используются какие-то виланы то вы делаете какие-то пользовательские деревья вот эти самые инстансы и указывайте что например у нас есть два инстанса в норме левый инстанс используют допустим левые оплинки правый final использует правой оплинки и велана и допустим Четные мы привязываем к левому инстансу, виланы нечетные мы привязываем к правому инстансу. И у нас получается своего рода балансировка. Вы можете встретить аналогичное поведение в других протоколах, то есть ПВСТ, например. Но МСТ протокол стандартный. И если вам нужно работать с транками, если вам нужно работать с несколькими деревьями, то МСТ позволяет это сделать именно так. Что касается взаимодействия между свечами МСТшными и другими. Другими это какими? Ну те самыми ванильными.
Spanning 3, 800 2.1 Dash'ными. Может быть медленными, может быть быстрыми. МСТ штатно позволяет взаимодействовать между собой и вот этими старыми клиентами. Для этого будет использоваться дерево, ну то самое CIST, Common and Internal Spanning 3. То есть вы можете отправлять БПДушки обычные МСТшные, и соседи старые, ванильные, их поймут. Они поймут их, но будут взаимодействовать с ними по-своему, по стандартному спаннинг-тришному поведению. А МСТ, соответственно, поймет, что соседы присылают БПДушки старые, ванильные, и тоже будет вести себя согласно тому, как он себя должен вести со старыми клиентами. Что нам здесь сейчас потребуется для того, чтобы понять, как МСТ работает? Собственно говоря, когда мы говорим про МСТ, мы в первую очередь должны будем разобраться с тем, какие деревья МСТ будет строить. Про пользовательские деревья мы поговорим чуть попозже, там все с ними довольно просто и предсказуемо. А вот в части Common Spanning 3, Internal Spanning 3 и совокупного Common and Internal Spanning 3 постоянно возникают вопросы.
Давайте разберемся. Первое, что нам будет нужно понять, это концепцию региона. Есть в Spanning 3, в МСТ, такое понятие, что свечи принадлежат одному региону. И если у вас два свеча, не противоречиво настроены в МСТ относительно друг друга, в частности, у них одинаковые настройки, у них одинаковые привязки виланов к инстансам, у них одинаковые инстансы, то свечи между собой будут взаимодействовать по-свойски. И вот это вот по-свойски будет означать, что они между собой будут реплицировать дерево IST, Internal Spanning 3. Это вот такое специальное дерево, которым обмениваются только правильно настроенные коммутаторы. Если у вас есть один сосед МСТшный и другой сосед МСТшный, они друг друга будут отправлять в АПДУшки. Но как минимум они будут на этапе обнаружения друг друга отправлять Proposal Agreement. Они обменяются АПДУшками, и каждый из них расскажет, как он настроен в части МСТ. Если наш свеч понимает, что он отправил БПДУшку с определенными настройками, и сосед отправил встречную БПДУшку, допустим, агримент с такими же настройками прописанными,
то значит мы друг с другом настроены непротиворечиво, значит мы можем реплицировать дерево IST. В противном случае, если мы отправили БПДУшку МСТшную, а сосед нам ответил чем-то, что настроен и противоречиво относительно нас, мы будем это игнорировать в этом случае, и дерево IST реплицировать с соседом не будем. будем преподават только дерево c ст вот например у нас может быть два свеча центральной левый центральной правой они настроены одинаково и соответственно они между собой апплеции рую дерево а ст а вот этот левый свеч он может быть тоже mst но он настроен противоречиво и соответственно здесь будет реализироваться только дерево c ст чуть более строго на самом деле между вот этими двумя товарищами тоже cst будет реплицироваться сейчас разберемся в итоге когда у вас есть свечи которые настроены друг с другом непротиворечиво они образуют некую неразрывную область и они будут называться специальным словом регион вот нашем случае облачка как раз формирует такой регион свечей которые между собой настроены непротиворечиво все свечи которые настроены
противоречиво то есть либо не ms tash на классический ванильный спаринг 3 либо мы с тешно и но не настроены и корректно не настроены с нами одинаково они будут находиться за пределами нашего региона часто бывает такое что в литературе пишут много региональная настройка мст на самом деле вам ст нет смысла разговаривать о мульти региональной настройки есть свечи своего региона есть все остальные сколько там этих регионов всех остальных неважно потому что они в любом случае не ваши это вот именно так свои и враги свои это в пределах региона другие это за пределами нашего региона нас они не интересуют поэтому будут ли тут вот свечи мастер не будет ли здесь два мастерных свеча будут ли они в одном регионе нас это абсолютно не волнует мы в любом случае каждого из них будем трактовать как соседа обычного cst шнава ванильного как будет проверять свечи принадлежат они к одному региону или нет выводы ушках у нас есть поле это поле называется mst configuration идентифир вот
это вот поле она будет находиться в разделе маста extension то есть давайте вспомним как у нас б подушку устроена сначала идут сначала идет заголовок там где указываются флаги там где указывается номер версии там где указывается номер протокола потом в обычной классической бы подушке идет 22 байта priority вектора потом идут таймеры 8 байт вот и вообще на обычной по подушке на этом заканчивается в случае с мст после классического вот этого самого заголовка бы подушки дальше идет еще два поля 3 байта который будет начинаться 1 байтовым полем которая всегда 0 версия 1 вот и версия 3 лент там указывается размер бпдушки которая может быть случайного размера то есть за счет того что instance может быть разное количество и соответственно бпдушка тоже может быть произвольной длины но вот указывается что вот вот это вот это вот хвост который будет указывать на то что дальше идет мст-шная часть и вот это самая
мастерная часть называется маста extension в нашем случае самая первая часть этого самого маста extension будет маста configuration дефир огромное поле размером 51 байт его содержимое будет следующее сначала там будет один байт который всегда нулевой это указание на формат этого самого экстеншена потом будет 32 байта чисто текстовая строка который нуль терминированная то есть вы можете туда написать просто какой-то текст главное чтобы он был не более чем 32 символа длиной если будет меньше то добиваете нулями потом номер ревизии 2-байтовое число просто число и так называемый configuration дайджест это будет хэш мд 5 от таблицы в которой у вас к инстансам к вот этим пользовательским деревьям привязываются виланы там фактически будет следующее там будет табличка которая будет состоять из 4 4096 ячеек вот ну что-то вот в таком вот плане вот здесь первый вилан второй вилан третий вилан четвертый вилан пятый вилан шестой вилан и так далее и в
конце будет здесь 4094 и вы указываете какому инстансу каждый вилан будет привязан допустим говорите первый вилан к первому инстансу 2 вилан к второму инстансу 3 вилан снова к первому инстансу 4 ко второму и потом от всего вот этого дела считаете хэш мд 5 и у вас получается вот он 16 байт этого хэша вы записываете в поле configuration дайджест если два свеча друг с другом обмениваются бпдушками и если у них вот эти вот 51 байт будут одинаковые ну то есть один байт у них всегда одинаковые там 0 если них 50 байт будут одинаковые они настроены не противоречиво друг другу у них одинаковый configuration name этот имя региона у них одинаковый номер ревизии и у них одинаковый configuration дайджест есть одинаковые инстансы созданы и одинаково привязаны вилана к этим инстансом потому что если хэш совпал значит скорее всего содержимое ты база тоже совпала поэтому если два свеча обменялись бпдушками у них вот эти вот 51 байт совпали значит свечи настроены одинаково и как следствие
не противоречиво есть безусловно если вы что-то меняете если вы меняете привязки виланов к инстансам сами инстансы меняете меняете номер ревизии меняете да ими конфигурации у вас эти самые поля не совпадут и как следствие два свеча будут расценивать друг друга как просто какие-то чужие свечи которые не взаимодействует по протоколу мст что касается вот взаимодействие с другими свечами мы сейчас про мст чуть чуть попозже поговорим а вот сначала поговорим про то что происходит на границах региона если у вас есть свечи которые поддерживают мст которые настроены не противоречиво друг с другом они будут принадлежать так называемым одному регион все свечи которые не принадлежат этому региону они будут нам посылать бпдушки и эти бпдушки по ним будет четко видно что это чужие бпдушки мы будем при работе с чужими бпдушками реплицировать только дерево cst common спальник 3 то
есть мы ничего соседям про в нашу внутреннюю мстшную кухню не показываем мы говорим у нас есть единое дерево cst и мы видим себя с чужими свечами показывает взаимодействие только в дереве common спальник 3 то есть как будто бы никакого мст нету для того чтобы это до самом деле подчеркнуть все дерево мстшные будет вести себя хитрым образом все свечи которые находятся в одном регионе друг с другом они как бы схлопываются они делают вид что это один большой свечи они будут посылать бпдушки у которых сендер бпдш один и тот же у которых будет одинаковый root path cost то есть нельзя будет когда вы смотрите на бпдушки отправленные двумя разными свечами в одном регионе мст наружу на cst шных портах на пограничных портах нельзя будет определить что это на самом деле два разных свеча отправили если у вас есть попробуем рисовать давай мы стешных свеча здесь дерево st и соответственно вот здесь один сосед сидит здесь
другой здесь реплицируется cst cst бпдушки будут отправляться и здесь и здесь с одинаковым рубль и шайди с одинаковым root path cost с одинаковым всем всем всем ну и root бичаи тоже естественно одинаковый с одинаковым причаи одинаковый рубль и шайди так вот это вот будет как раз указываться стоимость дорота и сам root будет указываться в дереве cst мы никому не показываем что у нас происходит внутри региона мы при взаимодействии с наружными соседями показываем только то что как бы понимают эти внутрь в наружные соседи наружные соседи понимают только дерево cst когда мы будем обмениваться бпдушками мы будем указывать кого мы считаем рутом это будет вот вот здесь вот дерево не дерево поле си а ист и root identifier а мы будем указывать стоимость дорота cst external root path cost мы будем указывать кто мы кто мы в кавычках потому что сейчас разберемся почему и портой день то есть это обычный priority
вектор которыми обмениваются все остальные спальнинг 3 без каких-либо хитростей единственное что cst root identifier это общий руд за все дерево cst плюс а ист здесь вот все ист и следует читать буквально за все все все все все свечи которые мы знаем и а ст и и cst мы посмотрели у посмотрели у кого bridge id самый маленький может быть у кого-то по priority самый маленький что кого-то mac адрес самый маленький и вот его мы заявляем что он самый самый самый клевый рут из всех которые есть если вдруг этот сосед будет внутри нашего региона находиться то все свечи которые находятся внутри региона говорят вот он самый маленький соответственно свеч он мы вот и соответственно все остальные участники дерево cst они будут говорить что ага вот там есть регионы мастер мы вообще-то не знаем что это регионы мастер может быть там несколько свечей но они прикидываются одним значит вот этот один свеч который находится внутри региона кто-то из них мы не знаем кто он будет рутом мы будем делать вид что весь регион это как бы рут это
один такой виртуальный мега свеч и он будет рутом если же рут не находится в дереве аист он находится где-то за пределами региона то соответственно информация руте просто реплицируется между свечами так же как она реплицируется в любом другом спарнинг 3 мы узнаем про того кто самый крутой свеч и передаем эту информацию дальше следующих бопадушках cst external root path cost это информация о том сколько стоит добраться до рута она точно также реплицируется внутри а ст то есть смотрите если свеч центральный рут вот самый самый крутой рут самый самый маленький свеч самый маленький брич айди за всю топологию которая только есть и cst и аисте что если он находится внутри региона на всех всех всех свечах мастерных мы будем отправлять 0 в этом поле то что по cst шнему дерево дорота не стоит добраться ничего если же соседи нам прислали бопадушку где говорят мы знаем как
добраться до очень клёвого рута и это стоит сколько-то копеечек то все все все все все аистэшные свечи просто реплицирует это поле они ничего туда не прибавляют вот они получили какую-то стоимость и дальше все свечи транслируют эту стоимость дальше но единственное что прибавляется на пограничном свеча который получил этот бопадушку прибавляется стоимость интерфейса вот этого пограничного ну также как мы делаем с любой другой бопадушкой мы получили какую-то бопадушку прибавили стоимость интерфейса а дальше посмотрели что с ней делать вот если мы выяснили что оно пришло из-за границы региона к нам внутрь региона то дальше все свечи внутри региона эту стоимость просто реплицирует они ее не прибавляют ни к чему опять же смысл будет следующим у нас есть два свеча они между собой реплицирует аиста здесь у нас cst сосед здесь у нас cst сосед мы получаем бопадушку в которой написано дарута может добраться за 10 копеек интерфейс стоит 10 копеек мы говорим окей до рута вот этот вот свеч может добраться за 20 копеек дальше он передает информацию за 20 копеек вот
этот свеч тоже передает информацию за 20 копеек такого поведения внутри обычного спанинг 3 не было но соответственно это все будет все эквивалентно тому что в дереве cst весь регион стоит как бы 0 копеек то есть информация внутри региона аист за дерево cst не стоит передать ничего это фактически эквивалентно тому что весь регион склопываются в такую одну единственную точку когда он получаем информацию из дерева cst с одного конца региона мы ее дальше с другого конца региона транслируем без изменений regional root айди это кто будет рутом в дереве аист эта информация будет передаваться между свечами мастерными и внешними какими-то cst нами всегда одинаковая то есть чтобы мы не отправляли какую бы мы бы подушку не отправляли на каком бы свечаем астер нам за границы нашего региона мы всегда должны здесь писать одно и то же значение и это значение будет как раз внутренний рут за дерево аист потому что
мы будем отдельно считать дерево между своими и дерево между всеми остальными вот си аисте regional root айди это на самом деле рут за дерево аист он такой один все свечи аистэшные знают кто там рут и поэтому все свечи когда будут отправлять бпд ушки в дерево cst они будут всегда писать одно и то же значение а соответственно все cst-шные соседи они будут видеть вот этот вот правильный вектор и у них всегда будет одинаковый root bridge id отправляться всеми свечами в регионе одинаковый external root pass cost одинаковый regional root id как следствие все свечи за пределами нашего региона будут думать что это на самом деле весь регион это один такой большой мега свечи единственное что будет портить картину это порт айди порт айди двухбайтовое значение и соответственно каждый свеч который будет отправлять бпд ушки за пределы регионов cst-шное дерево он будет указывать каким портом он этот правил и теоретически возможно сделать так чтобы у вас два свеча ну допустим бпд ушка вот
здесь отправляется вот здесь отправляется они оба отправляют ethernet там допустим первым ethernet ам первым у них будут одинаковый порт айди ну бывает такой да что два свеча отправляют бы пд ушки вообще идентичные у них одинаковое вообще все так ну с таймером все понятно таймера там и в африке таймеры ну и дальше уже вот все что мы отправляем вот в этом вот вот первых сколько у нас тут получается 5 плюс 22 27 плюс 8 в первых 35 байтах все что мы отправляем это будет фактически кусочек боподушки которые соседи могут воспринять как обычную классическую спарнинг-трешную подружку единственное чем это бы бутушка будет отличаться например от rapid спарнинг-трешной это тем что у нее в заголовке будет стоять поле протокол version и там будет 03 у обычного рстп там будет 2 а в умст будет 3 но в остальном эти бы подушки абсолютно вот в первой своей части которую я сейчас обвел
рамочкой совпадают с обычными рстшными боподушками дальше начинаются отличие но дальше кто же читает то есть если обычный рстшный свитч получит вот такую боподушку мстш на он ее поймет вот это фактически симуляция быстрого спарнинг 3 который встроен в протокол что у вас мстш на и боподушки они сначала совпадают с рстшными а потом у них есть какой-то хвост и вот этот вот хвост он соответственно нужен только для тех кто понимает про что вообще идет речь порты которые будут сидеть на границе региона и смотреть за пределы региона будут называться специальным словом boundary как вы будете определять что порт будет как раз boundary во первых если у вас там сосед есть либо мстш на либо рстп ну то есть мст в другом регионе либо рстп вообще без регионов то они вам будут присылать боподушки вы им тоже будете прислать боподушки то есть любом случае будете ли вы диссигнать портом не будете в диссигнать портом они вам боподушки пришлют хотя бы с агриментом и вы поймете кто они если они вам прислали растопышную боподушку в баунде репорт если они прислали вам мстш на боподушку с
неправильными настройками вы баунде репорт если они вам вообще прислали спаринг 3ш на боподушку медленную 802 1 до 90 года ну значит вы точно баунде репорт в дереве cst все мстш на и свечи региона схлопываются такую в точку сингулярности в один большой мега свеч и мы сейчас дальше посмотрим как это будет выглядеть у нас будет отдельный слад слайд в котором это самая сингулярность будет показано но перед этим давайте поговорим про то как будет передаваться информация внутри региона то есть для нас будет важно как происходит репликация дерева а исти а есть это только связи между регион между свечами одного региона то есть на свечи как-то между собой связываться то не понимают по каким линком они будут настроены непротиворечиво по каким настроена противоречиво соседями я из тит и то самое деливо которое настроена непротиворечиво соответственно это будет точно дерево она будет
точно также считаться как и дерево нормально но единственное что там уже будет не правильный и вектор которую вот в красивом месте идет в совпадающим с классическим спайминг 3 информация про то кто будет труд сколько будет добраться до рута какие таймеры и прочее вся эта информация будет на самом деле разнесена по бопадушке так вот кто будет рутом в дереве а ст будет храниться в поле regional root айди то есть эта информация как бы про то кто root кто из всех мст шных свечей имеет самый маленький бритш айди абсолютно привычная нам концепция свечи между собой обвиневаться бы подружками эти бы подружки содержат себе информацию кто род и свечи получив несколько возможных вариантов как можно добраться до рута соответственно понимают что один из портов будет самый выгодный как добраться до самого крутого рута те остальные порты будут допустим не самые выгодные как можно добраться до самого крутого рута root path cost хранится вот в этом вот месте не путайте
здесь интернет паскост это в дереве а и ст вот здесь вот нас экстерна рут паскост это дерево cst называется она си аисте ну на самом деле здесь процесс речь если говорить про соответственно построение дерева а и страшного то вот мы смотрим кто рут это риджону рут сколько до него добраться внутри дерево аисте шнава вот она дерево и стешное плюс когда мы отправляем какие-то бы подушки мы должны указать кто мы и соответственно у нас будет указываться вот это вот поле вот здесь вот это аист и bridge identifier на самом деле то есть какой bridge айди в дерево аисте будет у нас и плюс еще будет порт айди но соответственно порт айди будет браться привычный вот он все аисте порт айди то есть все бы подушки которые мы отправляем они отправляются одним и тем же портом и 1 бы подушка несет в себя всю информацию за все пользовательские деревья и вот этот порт айди он в одном месте указывается нет
смысла повторять что в этом дереве мы отправили это таким портом а в этом дереве мы отправили другим портом мы и просто отправили вот этим вот портом ну и плюс когда мы реплицируем дерево аисте шнэ мы немножко информации из тест из теста с тешного дерева тоже реплицируем вот это вот root идентифаер он реплицируется и external root pass cost тоже реплицируется то есть это именно репликация идет репликация выглядит выглядит это так у нас есть свеч один у нас есть свеч другой у нас есть свеч 3 это будет у нас cst шный свеч здесь у нас соответственно мастер здесь у нас соответственно мастер ну и здесь тоже какой-то цистешный порт левый самый свеч будет самый самый самый крутой свеч за всю топологию он будет рутом рутом в дереве cst он же в дереве cst си аисте он посылает свою бабушку мы эту информацию принимаем он на присылает root bridge айди свой собственный root pass cost он посылает 0 мы говорим
этот трофей стоит 10 копеек и дальше мы говорим вот этому соседу external root pass cost у нас будет соответственно 10 копеек потому что мы получили информацию что до внешнего рута можно добраться за 10 копеек и вот это вот мастерный свеч когда своему ци стешному соседу будет говорить я посылаю external root pass cost 10 копеек эта информация с реплицировалась вот эта десятка рис реплицировать также как и root bridge айди здесь он говорит root bridge айди это я x ну соответственно говорим cst root cc st root это будет x и сосед 2 тоже посылает cst root x вот он cst root это то место куда мы обычно пишем рута я external root pass cost вот оно это место мы сюда обычно пишем обычных в обычных классических оба пдушках сколько стоит добраться на рута поэтому информация о том сколько стоит добраться за за рута за пределами региона на просто между а и страницы мечами именно реплицируются а вот дальше
уже между своими свечами выбирается root так называемый региональный root вот он regional root иди выбирается сколько стоит добраться до рота то есть вот правый мастер шный свитч пытается посчитать кратчайший способ как добраться до регионального рута и хранит от хранится эта информация в интернур паскалост ну и каким портом бы подушка отправляется брича иди каким портом вот это вот все асти бричать и так плюс здесь есть параметр который называется remaining hops это будет указатель сколько прыжков бы подушка прошла между свечами в классическом спанинг 3 у нас такой штуки не было а в мст она есть у вас по умолчанию бы подушка не может пройти больше 20 прыжков больше 20 хопов между свечами вот этот параметр он существует он будет существовать для каждого дерева которое мы будем строить не обязательно только из теста в мастерных инстансах это тоже штука будет
так картинка который я показывал про сингулярность всего региона в с точки зрения всех остальных свечей в один большой свеч у нас есть наша картинка соответственно есть свечи мастерные они друг с другом настроены непротиворечиво они друг с другом рефлексирует а ст дальше они говорят окей нам нужно будет посылать какие-то бы подушки и все свечи посылают одинаковые подушки вот действительно одинаково единственно чем они будут различаться только указанием на порт все вот эти свечи ведут себя как будто это был бы один большой свеч потому что он бы посылал просто бы подушки разными портами он бы посылал одинаковый root bridge айди который в дереве cст он вы посылал одинаковый root path cost который external root path cost он бы посылал одинаковые sender bridge айди потому что sender bridge айди для нормальных спаринг 3 это региональный root который здесь есть вот может быть вот это вот региональный root соответственно его bridge айди известен всем и его именно в качестве отправителя
указывает все поэтому это выглядит именно вот так вот его root bridge айди отправляется на всех портах в качестве bridge айди ну и соответственно порт да вот с портами вышла промашка порты не имеют какой-то сквозной нумерации если у вас есть порт который там называется 128.1 то вы вот им отправляете именно на конкретном свече может быть так что у вас одинаковые номера портов будут отправляться на физически разных свечах ну ничего с этим не поделаешь обратите внимание на следующий момент если у вас есть дерево аист то есть мастерные свечи между собой взяли подружились и чего-то там на реплицировали то региональный root у вас есть всегда кто-то из вот этих вот товарищей в аистэшном дереве будет рутом может быть вот этот может быть вот этот но он будет всего один и он будет точно есть еще дерево си аэстит то есть дерево за всю всю всю всю всю топологию то есть вот она у нас дерево между физическими свечами и она состоит
из двух деревьев одного виртуального свеча который называется регион мст и всех остальных которые находятся в дереве cst если у вас рут будет находиться в cst нам дереве ну допустим вот это вот будет труд это обычный классический рут на то есть ничего такого он посылает информацию что он знает как до себя добраться за 0 копеек здесь вот тоже там уходит за 0 копеек дальше сюда уходит допустим за 10 копеек мы говорим вот этот вот порт будет обычный рутовый порт он известно как добраться до рута за 0 копеек на этом порту мы получаем альтернативной по подушке мы этот порт блокируем потому что ну как там приходит вкусная бы подушка но но не настолько вкусно и чтобы мы сами могли бы отправить туда бы подушки свои а может быть и могли бы кто знает дальше сюда вот мы будем отправлять бы подушки там стоимостью тоже 10 копеек и сюда тоже 10 копеек то есть это фактически вот как как нарисован один большой свеч вот именно так себя бы подушками будет вести аэст но если у вас рут будет находиться внутри вот этого
большого мега свеча это будет автоматически означать что у вас этот рут принадлежит кому-то из железных свечей то есть например вот этому вот товарищу и это автоматически означает что он будет рутом за все дерево cst и он же будет рутом за дерево а ст потому что bridge id у него ну какой то вот есть и как следствие bridge id у него самый маленький среди вообще всех свечей ну и среди а стэшных свечей в частности поэтому он же будет и региональный рут вот ну и соответственно все свечи внутри дерева а и стэшного строят маршрут как до него можно добраться вот этот вот свечи например говорит и мы пойдем вот сюда вот этот свечи мы говорит пойдем сюда вот этот свечи на говорит мы можем пойти так можем патеток ну допустим пойдем наверх этот порт заблокируем как альтернает внутри региона и получается что после того как вот мы вот взяли а стэ и запустили в нем дерево а стэ в этом дереве заблокировалась коммутация и фактически превратила наш регион в граф без петель мы можем сказать окей этот
регион не отличим от над от одного большого свеча и соответственно бы подушки которые мы будем отправлять на каждом из этих свечей они будут уже гарантировать что внутри нашего большого региона петель нету следовательно следовательно информацию что внутри региона хранится можно вообще наружу никому не показывать то есть мы можем сказать что все что внутри mst произошло все останется внутри мастер петель там нету и получается что вы про если у вас есть рут который находится внутри региона мастэшного external root path cost везде будет нулевой то есть вы превращаетесь в один гигантский свеч который говорит я знаю когда браться до рута за 0 копеек это все происходит в дереве cst то есть в cst порты в баундере порты вы отправляется стоимость 0 когда рут у вас находится внутри региона как запомнить что вообще происходит в обычном классическом спальнинг 3 у нас есть замечательная штука про рейте вектор как мы сравниваем какие бы подушки у кого круче root bridge id root path cost center bridge id center порт айди добавляем еще receiving порт айди когда у нас не хватает этих четырех пунктов в мст тоже есть точно такой же механизм он чуть посложнее поэтому его так вот на память
уже воспроизвести наверное не у всех получится но если что вы всегда можете нарисовать шпаргалку и с этой шпаргалкой понять у кого бы подушка лучше кто каким портом где чего будет смотреть когда у нас есть вот такая большая при большая бы подушка что в ней передается в ней придается кто рут рут за дерево cst то есть за все вообще дерево сколько стоит добраться до рута за пределами нашего региона кто будет региональным рутом каким портом это отправляем сколько стоит добраться до регионального рута внутри региона и кто это вообще отправил ну на самом деле здесь еще римаинку хопс есть но она на правильный вектор не сильно влияет вот эти вот поля можно будет рассортировать в том порядке в котором они влияют на superior и inferior бы подо то есть когда в обычном классическом спаринг 3 к нас приходит боподушкам и всегда говорим эта боподушка лучше или хуже и этого достаточно для того чтобы определить кто какие роли партав получит вот ровно та же самая история здесь когда вы отправляете ли
принимаете бабушке в мст вам достаточно взять и по какому-то простому алгоритму посмотреть у кого бы подушки хуже у кого лучше и как следствие вам этого будет достаточно для того чтобы определить роли портов самое первое самое важное что будет влиять на superior бпд это будет root identifier это вот это вот root identifier то есть тот кто заявляет что знает самого крутого рута за всю топологию тот и круче если у вас есть классическая бпдушка там на месте си и стирует идентифаер лежит кто root ну root bridge id если вы мст-шный свитч то вы указываете рута за топологию за вообще все дерево вот здесь показано вот слабеньким таким серым шрифтом с пометкой стп что если у нас сосед классический ванильный стпшный он не знает про сия и стиру тут нельзя фарон знает про то кто рубляч но это одно и то же поле она в одном и том же месте лежит одного и того же размера просто называется по-разному в масты в ванильном спаринг 3 дальше external root pass cost сколько стоит добраться
до рута в дереве cst если у вас сосед cst-шный вы получаете бабушку сколько стоит добраться до рута на эту стоимость в смысле на стоимость порта увеличиваете это значение дальше транслирует это всем а я страшным свечам без изменений если у вас сосед мст-шный он так и называет это external root подкоски если у вас сосед медленный испанник 3 что он называет это руб от root pass cost ну то есть это одно и то же поле она лежит в одном и том же месте опять же занимает один тот же объем если у вас а стэшный сосед вы придаете ему root pass cost он дальше это дело транслирует без изменений потом риджинал рута иди в масты это называется риджинал рута иди в обычном споник 3 называется сендр брича зи то есть когда у нас есть один большой гигантский свитч в которой схлопывается весь регион мст-шный вот он прикидывается одним и тем же отправителем поэтому кто у вас будет региональный рут на мастер нам дереве вот он будет отправляться классическим свечам в качестве
сендр брича де и если вам классические споник 3 свечи присылает какие-то бабушки то вы понимаете что то что было сендр брича де то что лежала вот здесь вот это на самом деле вот будет указание кто отправил в дереве cst если у вас происходит взаимодействие внутри а и стрешного дерева то джинал рута иди вы действительно выбираете по-честному то есть если сосед прислал по подушку где у него региональный рут меньше чем у вас значит он знает как добраться до лучшего регионального рута чем вы следовательно вы перековываетесь и немедленно начинаете считать региональным рутом того кого кто кого вам прислал сосед дальше internal root пас кост сколько стоит добраться до рута регионального это в случае если вы обмениваетесь данными в аэс тэшном дереве вы добавляете к стоимостью того что прислал сосед интерфейс имеет какую-то стоимость вот вы ее прибавляете если сосед прислал внешний в cst нам дереве то эта информация лишена смысла в качестве интернур от поскос вы туда ставите ноль потому что эта
информация она хранится вот тут вот и соответственно если у вас там cst шн и бы подушка пришла именно не мстш на какая-то вот старая классическая спаринг 3 что-то там в общем-то нет этого поля там вот она бабушка она заканчивается вот тут и поэтому вы туда ставите ноль дальше bridge identifier кто отправил это бывший центр bridge id то есть если вам пришла бы подушка медленная вы смотрите вот здесь вот сендер bridge id если вам пришла бы подушка мстш на вы смотрите вот здесь вот ну и далее я сендер порт айди это вот он сендер порт айди ничего нового receiving порт айди ну каким портом вы это получили тоже то же самое ничего нового то есть порядок следования этих полей при проверке он уже не совсем как бы при понятный он не совсем очевидный если в обычной бы подушки просто брали 22 байты
говорили у кого вот это 22 байтовое число меньше то ты прав то в испанинк 3-шной бы подушки в мстш на бы подушки у нас приходится сравнивать их в таком вот порядке это первое это вторая дальше это третье это четвертое это пятое это шестая и еще добавляем 2 2 байт 3 7 портойди с 7 полем бисерин портойди если у вас есть кастомные инстанции вот эти самые пользовательские деревья то с ними в общем логика будет довольно простая там работает все точно так же как в обычном репет спарнинг 3 и информация которая необходима для построения каждого пользовательского дерева будет храниться вот вот в этом вот поле это поле configuration messages также называются m records ну в разной литературе вы можете увидеть по разному ну вот по стандарту configuration messages это будет несколько блоков по 16 байт этих блоков может быть разное количество минимум 0 но меньше 0 как-то грешновато класть больше 64 тоже нельзя то есть свеч не
не должен поддерживать больше чем 64 configuration месседжа и 64 инстанция в реальности вы на многих на много на оборудование многих вендоров не сможете даже 64 инстанция настроить допустим тоже циск она поддерживает максимум 16 инстанции это нормально дальше что касается этих самых месседжей они будут выстраиваться в блоке каждый блок по 16 байт и блока будет иметь вот такую вот структуру соответственно первое поле у нас будут флаги для построения дерева нам нужно будет в каждом дереве отправлять флаги пропозал agreement то есть мы хотим стать рутом за этот мы хотим стать диссигнатор бриджом за этот сегмент кто-то против кто-то не против или напротив мы не как бы согласно с тем чтобы кто-то стал диссигнатор бриджом то есть нам надо как минимум выставлять пропозал agreement и по-разному нам нужно будет отправлять топологи change указывать что вот в конкретном дереве у нас произошла смена топологии нам не надо всю топологии прикраивать нам если мы видим что случилось какое-то изменение только в одном
дереве нам достаточно отправить мастер чтобы подушку с указанием вот в таком-то дереве случился косяк остальные деревья все в порядке с ними они продолжают работать ну вот соответственно один байт там будут указания на роли портов там будет указание ну роли порта которым это отправили простите там будет указание на то случилось смена топологии не случилось есть ли learning нет learning ну в общем обычные классические спамят личные флаги дальше указывается на то кого вы будете считать региональным рутом за этот инстанс то есть это дерево и в этом дереве у нас есть рут вот этот вот самый масти и джинал рута иди это так так того мы считаем рутом в 8-байтовом брюджа иди у нас указываются естественно приоритет 4 бита и и масты инстанса иди это у нас 12 бит генерится по схеме экстендент системой иди туда прямо вкладывается номер инстанса поэтому если у вас есть инстанс номер один то получится внутри брюджа иди будет иметь следующую структуру при приоритете по умолчанию у вас бита приоритета будет восьмерки дальше номер
инстанса 0 0 1 и дальше будет уже mac адрес ну там а а б б ц ц д д е е ф ф то есть обычный mac адрес после того как мы получили соответственно рут брич айди дальше идет интернет рут паскост обычные 4 байта ничего такого если мы отправляем бпд ушку мы должны указывать соответственно рут брич айди рут паскост и брич айди каким идентификатором мы это отправили здесь заключается тонкий момент если мы отправляем бпд ушку одну единственную за весь мст за весь экземпляр мст и мы в ней перечисляем информацию про те деревья которые нам интересны то в этом случае у нас отправитель один и тот же брич по факту получается в один и тот же mac адрес но естественно могут быть разные приоритеты в разных деревьях поэтому bridge identifier priority это поле 1 байтовое в котором на самом деле имеет значение
только четыре старших бита эти самые четыре старших бита будут добавляться к mac адресу железки а mac адрес железки будут браться вот отсюда из bridge identifier то есть у вас есть указание каким bridge identifier вы это отправили бпд ушку в дереве cist этот bridge identifier состоит из 16 бит приоритета и соответственно 48 бит mac адреса 48 бит mac адреса у всех деревьев будут одинаковые поэтому мы берем 4 бита приоритета из bridge identifier priority дальше добавляем 12 бит указания на extend системой id какой это будет инстанс и дальше добавляем mac адрес из вот этого поля bridge identifier примерно такая же история получается из порта донтифая priority у нас опять же 1 байтовое поле которое на самом деле задействовано только на половину там только 4 бита и эти 4 бита в качестве приоритета добавляются к 12 битом идентификатора самого порта который мы отправили эту бпд ушку опять тоже
самая история что мы отправляем одну бпд ушку мы и отправляем одним единственным портом и в каждом из деревьев мы должны будем указать каким портом мы отправляем информацию в этом дереве нет смысла указывать что у нас бпд ушка в одном дереве отправлено одним идентификатором порта в другом дереве другим идентификатором порта если по факту у этих портов есть очень общая часть ну и последнее это remaining hops опять же механизм защиты от петли и который в мст используется во всех деревьях в дереве c ст используется в поле c ст remaining hops в каждом из кастомных инстансов используются мсти remaining hops вот так вот примерно выглядит синхронизация дерева кастомного инстанса в общем обычная рстпшная логика случае смены топологии мы отправляем флаги пока у нас все работает стабильно мы считаем как добраться до рота кто рут и прочее по обычной в общем самой простой логике где мы используем информацию про то кто
рут как добраться до рута каким идентификатором мы эту отправляем sender bridge id и каким идентификатором порта мы это отправляем sender port id только она немножко разрозненно хранится в каждой бпд ушки по сравнению с обычными рстпшными бпд ушками таймеры что интересно будут тоже наследоваться из дерева c ст то есть если у нас есть бпд ушка обычная рстпшная мы после правильных вектор указываем таймеры и эти таймеры будут соответственно hello timer forward delay max age и message h4 таймера каждый двухбайтовый и каждый указывается в секундах ну строго говоря в 256 долях секунды но по факту многие вендоры просто округляют до секунд так вот эти таймеры они в общем привязаны тесно к топологии всего региона поэтому таймеры указываются один раз и дальше в каждом дереве они просто фактически наследуются я надеюсь что сегодня вы узнали что-то новое про протокол мст
если есть какие то вопросы мы всегда можем на них ответить плюс дополнительная серия будет посвящена тому как мст себя ведет в оборудовании конкретных производителей потому что мы рассказали только про то как себя ведет такой чистый ванильные мст а то как вы реализуют отдельные вендоры это заслуживает отдельного упоминания потому что там есть очень неочевидные точки которые у каждого вендора естественно к какой-то свои и которые даже не догадаешься на самом деле что конкретный производитель вообще мог такое придумать но вот такие вот вещи есть поэтому про вендорские реализации мст будет отдельная серия на этом я с вами прощаюсь надеюсь что это видео было вам интересно спасибо за внимание внимание и до встречи в следующих видео