ћерион Ќетворкс

14 минут чтени€

ѕротокол св€зующего дерева (STP) был первоначально разработан Radia Perlman и впервые описан в 1985 году в јлгоритме распределенного вычислени€ св€зующего дерева в расширенной локальной сети.

1 STP уникален в списке рассматриваемых здесь плоскостей управлени€, поскольку изначально был разработан дл€ поддержки коммутации, а не маршрутизации. ƒругими словами, STP был разработан дл€ поддержки переадресации пакетов без времени жизни (TTL) и без подкачки заголовка per hop коммутационным устройством. ѕакеты, коммутируемые на основе STP, передаютс€ по сети без изменений.


ѕостроение дерева без петель

ѕроцесс построени€ дерева без петель выгл€дит следующим образом:

  1.  аждое устройство переводит все порты в заблокированный режим, чтобы ни один порт не пересылал трафик, и начинает объ€вл€ть блоки данных протокола моста (Bridge Protocol Data Units -BPDU) дл€ каждого порта. Ётот BPDU содержит:
    1. »дентификатор объ€вленного устройства, который €вл€етс€ приоритетным в сочетании с локальным интерфейсом Media Access Control (MAC) адресом.
    2. »дентификатор корневого моста-кандидата. Ёто мост с самым низким идентификатором, о котором знает локальное устройство. ≈сли каждое устройство в сети запускаетс€ в один и тот же момент, то каждое устройство будет объ€вл€ть себ€ как корневой мост-кандидат, пока не узнает о других мостах с более низким идентификатором моста.
  2. ѕри получении BPDU на интерфейсе идентификатор корневого моста, содержащийс€ в BPDU, сравниваетс€ с локально сохраненным наименьшим идентификатором корневого моста. ≈сли идентификатор корневого моста, содержащийс€ в BPDU, меньше, то локально сохраненный идентификатор корневого моста замен€етс€ вновь обнаруженным мостом с более низким идентификатором.
  3. ѕосле нескольких раундов объ€влений каждый мост должен был обнаружить мост с наименьшим идентификатором моста в сети и объ€вить этот мост корневым.
    1. Ёто должно происходить, пока все порты на всех устройствах все еще заблокированы (не пересылают трафик).
    2. „тобы убедитьс€, что это действительно произойдет, пока все порты все еще заблокированы, таймер устанавливаетс€ на достаточно длительное врем€, позвол€ющий выбрать корневой мост.
  4. ѕосле выбора корневого моста определ€етс€ кратчайший путь к корневому мосту.
    1.  аждый BPDU также содержит метрику дл€ достижени€ корневого моста. Ётой метрикой может быть количество переходов, но стоимость каждого перехода также может варьироватьс€ в зависимости от административных переменных, таких как пропускна€ способность канала.
    2.  аждое устройство определ€ет порт, через который оно имеет самый дешевый путь к корневому мосту. ќн отмечен как корневой порт.
    3. ≈сли существует более одного пути к корневому мосту с одинаковой стоимостью, используетс€ прерыватель св€зи. ќбычно это идентификатор порта.
  5. ƒл€ любого звена, по которому соединены два моста:
    1. ћост с наименьшей стоимостью пути к корневому мосту выбираетс€ дл€ пересылки трафика от канала к корневому мосту.
    2. ѕорт, соедин€ющий выбранный сервер пересылки с каналом, помечаетс€ как назначенный порт.
  6. ѕорты, отмеченные как корневые или как назначенные порты, могут пересылать трафик.

–езультатом этого процесса €вл€етс€ единое дерево, по которому доступны все пункты назначени€ в сети. Ќа рисунке 1 показано, как STP работает в реальной топологии.

–ис. 1 –абота протокола св€зующего дерева

ѕредположим, что все устройства на рисунке 1 были включены в один и тот же момент. —уществует р€д возможных вариаций времени, но процесс построени€ набора безцикловых путей через сеть будет выгл€деть, с точки зрени€ F, примерно так:

  1. ¬ыберите корневой мост:
    1. F объ€вл€ет BPDU E и D с идентификатором и корневым мостом кандидата 32768.0200.0000.6666.
    2. D (при условии, что D не получил никаких BPDU) объ€вл€ет BDPU с идентификатором и корневым мостом кандидата 28672.0200.0000.4444.
    3. E (при условии, что E не получил никаких BPDU) объ€вл€ет BPDU с идентификатором и корневым мостом-кандидатом 32768.0200.0000.5555.
    4. Ќа этом этапе F выберет D в качестве корневого моста и начнет объ€вл€ть BPDU со своим локальным идентификатором и корневым мостом-кандидатом, установленным на идентификатор D.
    5. ¬ какой-то момент D и E получат BPDU от C, имеющего идентификатор нижнего моста (24576.0200.0000.3333). ѕолучив этот BPDU, они оба установ€т свой ID корневого моста кандидата на ID C и отправ€т новые BPDU в F.
    6. ѕолучив эти новые BPDU, F отметит, что новый идентификатор корневого моста кандидата ниже, чем его предыдущий идентификатор корневого моста кандидата, и затем выберет C в качестве корневого моста.
    7. ѕосле нескольких циклов BDPU все мосты в сети выберут C в качестве корневого моста.
  2. ќтметьте корневые порты, найд€ кратчайший путь к корню:
    1. ѕредположим, что кажда€ лини€ св€зи стоит 1.
    2. D получит BDPU от C с локальным идентификатором и идентификатором корневого моста 24576.0200.0000.3333 и стоимостью 0.
    3. D добавит стоимость достижени€ C, одного перехода, объ€вл€€, что он может достичь корневого моста со стоимостью от 1 до F.
    4. E получит BDPU от C с локальным идентификатором и идентификатором корневого моста 24576.0200.0000.3333 и стоимостью 0.
    5. E добавит стоимость достижени€ C, одного перехода, объ€вл€€, что он может достичь корневого моста со стоимостью от 1 до F.
    6. F теперь имеет два объ€влени€ о корневом мосте с равной стоимостью. ќн должен разорвать св€зь между этими двум€ доступными пут€ми. ƒл€ этого F провер€ет идентификаторы объ€вленных мостов. »дентификатор моста D меньше, чем E, поэтому F будет отмечать свой порт, направленный к D, как корневой порт.
  3. ћаркировка назначенных портов на каждом канале:
    1. ≈динственный другой порт F направлен в сторону E. ƒолжен ли быть заблокирован этот порт?
    2. „тобы определить это, F сравнивает свой локальный идентификатор моста с идентификатором моста E. ѕриоритеты одинаковы, поэтому дл€ прин€ти€ решени€ необходимо сравнить адреса локальных портов. Ћокальный идентификатор F заканчиваетс€ на 6666, а у E - на 5555, поэтому E меньше.
    3. F не отмечает интерфейс к E как назначенный порт; вместо этого он отмечает этот порт как заблокированный.
    4. E выполн€ет то же сравнение и отмечает свой порт в направлении F как назначенный порт.
    5. D сравнивает свою стоимость по отношению к корню со стоимостью F по отношению к корню.
    6. —тоимость D ниже, поэтому он пометит свой порт в направлении D как назначенный порт.

Ќа рисунке 2 показаны заблокированные, назначенные и корневые порты после завершени€ этих вычислений.

–ис.2 –езультат процесса св€зующего дерева

ѕорты на рисунке 2 помечены как bp дл€ заблокированного порта, rp дл€ корневого порта и dp дл€ назначенного порта. –езультатом процесса €вл€етс€ дерево, которое может достигать любого сегмента сети, и, следовательно, хостов, подключенных к любому сегменту в сети. ќдин интересный момент, св€занный с STP, заключаетс€ в том, что в результате получаетс€ единое дерево по всей топологии, закрепленное на корневом мосту. ≈сли какой-либо хост, подключенный к E, отправл€ет пакет на хост, подключенный к B или F, пакет должен проходить через C, корневой мост, потому что один из двух портов на каналах [F, E] и [E, B] €вл€етс€ заблокирован. Ёто не самое эффективное использование полосы пропускани€, но оно предотвращает зацикливание пакетов во врем€ нормальной пересылки.

 ак обрабатываетс€ обнаружение соседей в STP? ќбнаружение соседей вообще не рассматриваетс€ с точки зрени€ надежной передачи информации по сети.  аждое устройство в сети строит свои собственные BPDU. Ёти BPDU не проход€т через какое-либо устройство, поэтому нет необходимости в сквозной надежной транспортировке в плоскости управлени€. ќднако обнаружение соседей используетс€ дл€ выбора корневого моста и построени€ дерева без циклов по всей топологии с использованием BPDU. ј как насчет отброшенных и потер€нных пакетов? Ћюбое устройство, на котором запущен протокол STP, периодически повторно передает свои BPDU по каждому каналу (в соответствии с таймером повторной передачи). ”стройству, на котором запущен протокол STP, требуетс€ несколько отброшенных пакетов (согласно таймеру отключени€), чтобы предположить, что его соседи вышли из стро€, и, следовательно, перезапустить вычисление состо€ний корневого моста и порта. ¬ STP нет двусторонней проверки подключени€ ни дл€ каждого соседа, ни на всем пути. “акже не существует какой-либо проверки maximum Transmission Unit (MTU). STP изучает топологию, комбиниру€ BPDU с информацией о локальных каналах дл€ каждого узла. ќднако в сети нет ни одного узла с таблицей, описывающей всю топологию.


»зучение доступных пунктов назначени€

 ак STP разрешает пересылку? ¬ частности, как устройства, на которых запущен протокол STP, узнают о доступных местах назначени€? –ассмотрим рисунок 3.

–ис. 3 ќбнаружение достижимости STP

Ќа рис. 3 показано состо€ние сети с вычисленным св€зующим деревом и каждым портом, отмеченным как назначенный или корневой порт. ¬ этой топологии нет заблокированных портов, потому что нет петель. ѕредположим, B, C и D не имеют информации о подключенных устройствах; A отправл€ет пакет в сторону E. „то происходит в этот момент?

  1. A передает пакет по каналу [A, B]. ѕоскольку B имеет назначенный порт на этом канале, он примет пакет (коммутаторы принимают все пакеты на назначенных портах) и проверит адреса источника и назначени€.
  2. B может определить, что A доступен через этот назначенный порт, потому что он получил пакет от A на этом порту. »сход€ из этого, B вставит MAC-адрес A как достижимый в свою таблицу пересылки через свой интерфейс на канале [A, B].
  3. B не имеет информации о E, поэтому он будет рассылать этот пакет через каждый из своих незаблокированных портов. ¬ этом случае единственный другой порт B - это его корневой порт, поэтому B пересылает этот пакет в C. Ёто лавинна€ рассылка называетс€ Broadcast, Unknown, и Multicast (BUM) трафиком. BUM-трафик - это то, чем должна каким-то образом управл€ть кажда€ плоскость управлени€, котора€ изучает пункты назначени€ в процессе пересылки.
  4.  огда C получает этот пакет, он провер€ет адрес источника и обнаруживает, что A доступен через назначенный порт, подключенный к [B, C]. ќн вставит эту информацию в свою локальную таблицу пересылки.
  5. ” C также нет информации о том, где E находитс€ в сети, поэтому он просто лавинно рассылает пакет по всем незаблокированным портам. ¬ этом случае единственный другой порт C - это канал [C, D].
  6. D повтор€ет тот же процесс, которому следовали B и C, узнава€, что A доступен через его корневой порт по каналу [C, D], и лавинно направл€ет пакет по каналу [D, E].
  7.  огда E получает пакет, он обрабатывает информацию и отправл€ет ответ обратно A.
  8.  огда D получает этот ответный пакет от E, он провер€ет адрес источника и обнаруживает, что E доступен через назначенный ему порт по каналу [D, E]. D действительно знает обратный путь к A, поскольку он обнаружил эту информацию при обработке первого пакета в потоке, идущем от A к E. ќн будет искать A в своей таблице пересылки и передавать пакет по каналу [C, D].
  9. C и B будут повтор€ть процесс, который D и C использовали дл€ определени€ местоположени€ E и перенаправлени€ обратного трафика обратно в A.

“аким образом, узнава€ адрес источника по вход€щим пакетам, а также путем лавинной рассылки или пересылки пакетов по исход€щим каналам, каждое устройство в сети может узнать о каждом достижимом месте назначени€. ѕоскольку протокол STP основан на изучении доступных адресатов в ответ на пакеты, передаваемые по сети, его классифицируют как реактивную плоскость управлени€. ќбратите внимание, что этот процесс обучени€ происходит на уровне хоста; подсети и IP-адреса не изучаютс€, а скорее изучаетс€ физический адрес интерфейса хоста. ≈сли один хост имеет два физических интерфейса на одном и том же канале, он будет отображатьс€ как два разных хоста дл€ плоскости управлени€ STP.

 ак удал€етс€ информаци€ из таблиц пересылки на каждом устройстве? „ерез процесс тайм-аута. ≈сли запись пересылки не была использована в определенное врем€ (таймер удержани€), она удал€етс€ из таблицы. —ледовательно, STP полагаетс€ на кэшированную информацию пересылки.


ѕодведение итогов о протоколе св€зующего дерева

STP €вно не €вл€етс€ ни протоколом состо€ни€ канала, ни протоколом вектора пути. Ёто протокол вектора рассто€ни€? Ћюба€ путаница в том, как классифицировать протокол, проистекает из первоначального выбора корневого моста перед вычислением кратчайших путей. ”далив этот первый шаг, проще классифицировать STP как протокол вектора рассто€ни€, использу€ распределенную форму алгоритма Ѕеллмана-‘орда дл€ расчета путей без петель по топологии. „то нужно сделать с первоначальным расчетом корневого моста? Ёта часть процесса гарантирует, что во всей сети будет только одно дерево кратчайшего пути. “аким образом, STP можно классифицировать как протокол вектора рассто€ни€, который использует алгоритм Ѕеллмана-‘орда дл€ вычислени€ единого набора кратчайших путей дл€ всех пунктов назначени€ во всей сети. ƒругими словами, STP вычисл€ет дерево кратчайшего пути по топологии, а не по адресатам.

ѕочему так важно, чтобы одно дерево вычисл€лось по всей сети? Ёто св€зано со способом, которым STP изучает информацию о доступности: STP - это реактивна€ плоскость управлени€, изучающа€ достижимость в ответ на фактические пакеты, проход€щие через сеть. ≈сли бы каждое устройство построило отдельное дерево с корн€ми в самом себе, этот реактивный процесс привел бы к несогласованному представлению топологии сети и, следовательно, к петл€м пересылки.


STP и широковещательные штормы

Ўироковещательные рассылки - важна€ часть обнаружени€ служб в большинстве приложений. Ќапример, как показано на рисунке 4, как A может обнаружить присутствие определенной службы на F?

–ис. 4 Ўироковещательные штормы и протокол св€зующего дерева

—амое простое, что может сделать A в этой ситуации, - это отправить какой-то пакет, который будет доставлен на каждый хост, подключенный к сети, и дождатьс€ ответа от хоста, на котором запущена данна€ служба. “аким образом, A отправл€ет широковещательную рассылку с вопросом о конкретной услуге или устройстве.  ак B, C, D и E должны относитьс€ к этой трансл€ции? ѕоскольку широковещательна€ рассылка не €вл€етс€ Ђобучаемымї адресом (широковещательную рассылку должно принимать каждое устройство в каждом сегменте), лучше всего дл€ коммутаторов пересылать пакет на каждый неблокированный порт.

„то произойдет, если ј выполнит много рассылок? „то произойдет, если хост отправит достаточно широковещательных рассылок, чтобы отбросить BPDU? ¬ этом случае сам STP запутаетс€ и, скорее всего, создаст цикл пересылки в топологии. “акой цикл пересылки будет, конечно, пересылать широковещательные пакеты посто€нно, так как нет TTL дл€ отбрасывани€ пакетов после того, как они пересекли сеть определенное количество раз.  ажда€ рассылка, передаваема€ A, в этой ситуации останетс€ в сети навсегда, петл€€, возможно, между коммутаторами B, C, D и E. » кажда€ рассылка, добавленна€ к нагрузке сети, конечно же, предотвратит успешную передачу или прием BPDU, предотвраща€ схождение STP.

—ледовательно, трафик в сети преп€тствует сходимости STP, а отсутствие сходимости увеличивает нагрузку трафика на саму сеть Ц возникает положительный цикл обратной св€зи, который вызывает хаос во всей сети. Ёти событи€ называютс€ широковещательными штормами и достаточно распространены в сет€х на основе STP, чтобы заставить мудрых проектировщиков и операторов сети ограничивать область действи€ любого домена STP. —уществование широковещательных штормов также привело к р€ду модификаций работы STP, таких как проста€ замена базового протокола плоскостью управлени€ истинным состо€нием канала.


—кидки 50% в Merion Academy

¬ыбрать курс