IEEE 802.1D STP использует алгоритм протокола spanning-tree (STA), чтобы определить, какие порты коммутаторов в сети должны быть переведены в состояние блокировки во избежание возникновения петель. STA назначает один из коммутаторов в качестве корневого моста и использует его как точку привязки для расчёта всех путей. На рисунке корневой мост (коммутатор S1) выбран с помощью специального процесса выбора. Все коммутаторы, участвующие в STP, обмениваются кадрами BPDU, чтобы определить, какой коммутатор имеет самое низкое значение идентификатора моста (BID) в сети. Коммутатор с наименьшим значением BID автоматически становится корневым мостом для расчётов STA.
Примечание. Чтобы упростить задачу, предположим (пока не указано иное), что все порты на всех коммутаторах назначены сети VLAN 1. У каждого коммутатора есть уникальный MAC-адрес, связанный с сетью VLAN 1.
BPDU представляет собой кадр обмена сообщениями, которым обмениваются коммутаторы для STP. Каждый BPDU содержит идентификатор BID, который определяет коммутатор, отправивший BPDU. Идентификатор BID содержит значение приоритета, MAC-адрес отправляющего коммутатора и дополнительный расширенный идентификатор системы. Самое низкое значение BID определяется комбинацией значений в этих трех полях.
После определения корневого моста STA рассчитывает кратчайший путь до него. Все коммутаторы используют STA для определения портов, подлежащих блокировке. Пока STA определяет оптимальные пути до корневого моста для всех портов коммутатора в домене широковещательной рассылки, пересылка трафика по сети заблокирована. При определении портов, подлежащих блокировке, STA учитывает стоимость как пути, так и порта. Стоимость портов рассчитывается с помощью значений стоимости порта, зависящей от скорости каждого порта коммутатора на данном маршруте. Сумма значений стоимости порта определяет общую стоимость пути до корневого моста. Если для выбора доступно несколько путей, STA выбирает путь с наименьшей стоимостью.
Определив наиболее предпочтительные пути для каждого коммутатора, алгоритм STA назначает роли участвующим портам коммутаторов. Роли портов описывают их связь с корневым мостом в сети, а также указывают, разрешена ли для них пересылка трафика:
- Корневые порты – порты коммутатора, находящиеся максимально близко к корневому мосту. На рисунке корневой порт на S2 — порт F0/1, настроенный для транкового канала между S2 и S1. Корневой порт на S3 — порт F0/1, настроенный для транкового канала между S3 и S1. Корневые порты выбираются для каждого коммутатора отдельно.
- Назначенные порты — все некорневые порты, которым, тем не менее, разрешено пересылать трафик по сети. На рисунке порты коммутатора S1 (F0/1 и F0/2) являются назначенными портами. На коммутаторе S2 порт F0/2 также настроен в качестве назначенного порта. Назначенные порты выбираются для каждого транкового канала отдельно. Если на одном конце транка находится корневой порт, то на другом — назначенный. Все порты на корневом мосте являются назначенными портами.
- Альтернативные и резервные порты – альтернативные и резервные порты настраиваются в состояние блокировки во избежание возникновения петель. На рисунке STA настроил порт F0/2 на коммутаторе S3 в роли альтернативного порта. Порт F0/2 на коммутаторе S3 находится в состоянии блокировки. Альтернативные порты выбираются только на транковых каналах, где ни один из концов не является корневым портом. Обратите внимание, что на рисунке заблокирован только один из концов транка. Это обеспечивает более быстрый переход в состояние пересылки в случае необходимости. (Заблокированные порты используются только в том случае, когда два порта на одном коммутаторе соединены друг с другом посредством коммутатора или одного кабеля).
- Отключенные порты – отключенным называется порт коммутатора, питание которого отключено.