Знакомство с протоколом STP
В этой статье мы обсудим работу протокола, используемого на многих маршрутизаторах верхнего ценового диапазона, тем не менее, знакомы с ним не все. Речь пойдёт о STP (Spanning Tree Protocol, Протокол связующего дерева).
Изучать, как функционирует протокол STP мы будет на примере сети, схема которой изображена ниже:

Топология, содержащая резервные каналы
Построим закольцованную сеть с резервными путями распространения фреймов. Компьютер PC0 рассылает по сети в сеть широковещательные кадры. Данный фрейм поступает на порт коммутатор switch0, который разошлет его дальше через все порты, кроме того, на который он его принял (gig0/1, gig0/2). Далее коммутатор switch1 отправит фрейм по портам fast0/1, gig0/1, а коммутатор switch1 по портам gig0/1 и fast0/1. Что будет дальше с фреймами, дошедшими до конечных целей PC1 и PC2 нас, в рамках данного кейса, заботить не должно. Сосредоточим внимание на том, что будет дальше с фреймами, отправленными к коммутатору switch2.
Возникнет ситуация, где switch2 принимает на два порта копии оного фрейма. Копии фрейма с порта gig0/1 будет отправлена далее через порты fast0/1 и gig0/2, а копия фрейма с порта gig0/2 на fast0/1 и gig0/1 соответственно. На следующем шаге коммутаторы фрейм вернется на switch0 и отправится далее по кольцу нашей сети. Этот круговорот фреймов с сети будет продолжаться бесконечно или до тех пор, пока не откажет оборудование, постольку поскольку фрейм не IP пакет, и у него нету заголовка TTL, где указано, сколько маршрутизаторов еще может пройти пакет (каждый следующий маршрутизатор уменьшает этот параметр на 1).

Циркуляция фреймов в топологии с резервными каналы
Такое поведение фрейма грозит вызывает сразу несколько неприятностей.
- Первая - само собой разумеется, что создаётся лишний трафик, который уменьшает общую полезную пропускную способность сети. Причём проблема эта с течением времени непрерывно усугубляется.
- Вторая – создаются ошибки построения таблицы коммутации. Так как коммутаторы анализируют МАС-адрес в поле отправителя, и если он отсутствует в таблице коммутации, то он дописывается в неё, создавай соответствие между MAC-адресом фрейма и портом, на который он пришел. Если запись с таким MAC-адресом уже была, то новая запись просто заменит её.
Допустим, у нас есть PC0 с адресом адрес MAC0. От PC0 на порт Fast0/1 коммутатора Switch0 приходит широковещательный пакет. Соответственно, в таблицу коммутации будет добавлена пара MAC0 - Fast0/1. Как мы наблюдали ранее, Switch0 отправит копию фрейма далее, по кольцу коммутаторов, и через некоторое время фрейм вернется к нему на порты gig0/1 и gig0/2.
Допустим, что первым вернулась копия фрейма на порт gig0/1. В поле отправителя значится компьютер PC0. Коммутатор меняет в записи MAC0 значение с Fast0/1 на Gig0/1 и таблица коммутации не будет отображать реальное положение дел. И когда коммутатору придёт от switch1 фрейм для компьютера PC0, то он ошибочно будет передан не ему, через на закрепленный за ним порт (Fast0/1), а на порт Gig0/1 коммутатора switch3 и фрейм таким образом просто не попадет к получателю.
Что бы решить данную проблему, для сетей с резервными маршрутами разработали протокол STP (Spanning Tree Protocol) - протокол связующего дерева. Работает он так – при обнаружении кольца, один из его маршрутов блокируется, хосты образуют топологию типа «дерево».
Если вы когда-то соединяли коммутаторы в кольцевую сеть, то могли заметить, что на одном из коммутаторов индикатор порта, задействованного для построения сети горит оранжевым цветом, несмотря на то, что в порт вставлен кабель, ведущий к другому коммутатору. Вся странность этого явления объясняется работой протокола STP.
Само собой, STP блокирует порт не на всё время, а до изменения её структуры. Если в нашем примере из сети отключить один из связующих коммутаторов, то ранее отключенный порт будет задействован, чтобы восстановить работу сети.
Добавим, что порт блокируется, а не отключается. Выполните команду «show ip interface brief». Поля status и protocol будут в состоянии UP, и это обозначает, что порт включен и работает исправно. Но если запустить команду «show spanning-tree interface <interface name>», то в поле sts мы увидим, что порт находится в состоянии «BLK», что обозначает, что он не заблокирован. В обычной ситуации порт находится в состоянии BLK. Ещё, для получения информации обо всех интерфейсах вы можете выполнить команду «show spanning-tree active.»
На этом всё, детали работы протокола STP мы с вами разберем в следующих статьях.