STP разработан в Institute of Electrical and Electronics Engineers (IEEE) в 1998 году. Протокол определяется стандартом 802.1D.
Основная задача STP - не допускать loop в L2 сети путем просчета оптимального места и обрыва линка в этом месте, дальнейшего контроля состояния линков для оперативной перестройки топологии в случаи изменения состояние магистральных интерфейсов.
Существующие версии STP:
- Rapid Spanning Tree Protocol (RSTP)
- Multiple Spanning Tree Protocol (MSTP)
- VLAN Spanning Tree Protocol (VSTP)
Как это работает:
- свитчи обмениваются BPDU, шлют пакеты на мультикастовый ethernet-адрес 01-80-c2-00-00-00
- выбирается root bridge
- определяются роли портов по отношению к root bridge
- строится дерево, граф
Из чего состоит BPDU:
- DST MAC multicast адрес зарезервированный для STP (01-80-c2-00-00-00)
- SRC MAC адрес исходящего интерфейса
- размер
- LLC header который имеет destination service access point (DSAP) которой относится к root bridge
BPDU не имеет никакой VLAN метки.
Существует 2 типа BPDU:
- configuration BPDUs - для определения топологии, рута, назначения портов
- TCN BPDUs - изменения топологии
Процесс определения Root Bridge базируется на значении BID, который состоит из: настроенного приоритета (Bridge ID) и уникального идентификатора устройства (МАК адреса). Чем меньше приоритет BID - тем больше шанс стать root. Если приоритеты одинаковые, выбирается наименьший МАК адрес.
В начале выборов каждый коммутатор считает себя корневым, о чем и заявляет всем остальным с помощью BPDU, в котором представляет свой идентификатор как ID корневого свича. При этом, если он получает BPDU с меньшим Bridge ID, он перестает хвастаться своим и покорно начинает анонсировать полученный Bridge ID в качестве корневого. В итоге, корневым оказывается тот свич, чей Bridge ID меньше всех.
Роли портов в STP
В 2004 году вышел документ IEEE 802.1D-2004, который описывает механизм RSTP. Данный протокол имеет приемущество над STP за счет быстрого процесса сходимости сети.
В RSTP меняются роли портов:
- появляется новый тип Alternate (он подстраховывает root порт и принимает BPDU) по факту это порт, который смотрит тоже на RB, но имеет cost чуть выше основного.
- Block меняется на Backup, это порт который смотрит в LAN сегмент.
Сравнение STP и RSTP:
Основная суть в том, что при изменении топологии - нам не приходиться заново пересчитывать все связи а достаточно лишь переключиться на заранее подготовленный резерв.
Некоторые материалы были позаимствованы: https://habrahabr.ru/post/143768/
Основная задача STP - не допускать loop в L2 сети путем просчета оптимального места и обрыва линка в этом месте, дальнейшего контроля состояния линков для оперативной перестройки топологии в случаи изменения состояние магистральных интерфейсов.
Существующие версии STP:
- Rapid Spanning Tree Protocol (RSTP)
- Multiple Spanning Tree Protocol (MSTP)
- VLAN Spanning Tree Protocol (VSTP)
Как это работает:
- свитчи обмениваются BPDU, шлют пакеты на мультикастовый ethernet-адрес 01-80-c2-00-00-00
- выбирается root bridge
- определяются роли портов по отношению к root bridge
- строится дерево, граф
Из чего состоит BPDU:
- DST MAC multicast адрес зарезервированный для STP (01-80-c2-00-00-00)
- SRC MAC адрес исходящего интерфейса
- размер
- LLC header который имеет destination service access point (DSAP) которой относится к root bridge
BPDU не имеет никакой VLAN метки.
Существует 2 типа BPDU:
- configuration BPDUs - для определения топологии, рута, назначения портов
- TCN BPDUs - изменения топологии
Процесс определения Root Bridge базируется на значении BID, который состоит из: настроенного приоритета (Bridge ID) и уникального идентификатора устройства (МАК адреса). Чем меньше приоритет BID - тем больше шанс стать root. Если приоритеты одинаковые, выбирается наименьший МАК адрес.
В начале выборов каждый коммутатор считает себя корневым, о чем и заявляет всем остальным с помощью BPDU, в котором представляет свой идентификатор как ID корневого свича. При этом, если он получает BPDU с меньшим Bridge ID, он перестает хвастаться своим и покорно начинает анонсировать полученный Bridge ID в качестве корневого. В итоге, корневым оказывается тот свич, чей Bridge ID меньше всех.
Роли портов в STP
- все порты на root bridge в designated и forwarding состоянии
- root порты на остальных свитчах смотрят на root bridge и находятся в состоянии forwarding, root bridge никогда не имеет root портов. Root port выбирается суммированием скорости всех интерфейсов на пусти к RB, чем выше скорость - тем меньше cost: порт 10 мбит/сек - cost = 2,000,000, порт 10 гбит/сек - cost = 2000. Если скорости одинаковые выбирается порт с меньшим значением port ID (номер порта).
- designated порты находятся в forwarding состоянии
- все остальные порты находятся в blocking состоянии. Когда порт в данном состоянии он не отправляет BPDU, но слушает входящие BPDU.
В RSTP меняются роли портов:
- появляется новый тип Alternate (он подстраховывает root порт и принимает BPDU) по факту это порт, который смотрит тоже на RB, но имеет cost чуть выше основного.
- Block меняется на Backup, это порт который смотрит в LAN сегмент.
Сравнение STP и RSTP:
STP (802.1d) | RSTP (802.1w) |
В уже сложившейся топологии только корневой свич шлет BPDU, остальные ретранслируют | Все свичи шлют BPDU в соответствии с hello-таймером (2 секунды по умолчанию) |
Состояния портов | |
— блокировка (blocking) — прослушивание (listening) — обучение (learning) — перенаправление\пересылка (forwarding) — отключен (disabled) | — отбрасывание (discarding), заменяет disabled, blocking и listening — learning — forwarding |
Роли портов | |
— корневой (root), участвует в пересылке данных, ведет к корневому свичу — назначенный (designated), тоже работает, ведет от корневого свича — неназначенный (non-designated), не участвует в пересылке данных | — корневой (root), участвует в пересылке данных — назначенный (designated), тоже работает — дополнительный (alternate), не участвует в пересылке данных — резервный (backup), тоже не участвует |
Механизмы работы | |
Использует таймеры: Hello (2 секунды) Max Age (20 секунд) Forward delay timer (15 секунд) | Использует процесс proposal and agreement (предложение и соглашение) |
Свич, обнаруживший изменение топологии, извещает корневой свич, который, в свою очередь, требует от всех остальных очистить их записи о текущей топологии в течение forward delay timer | Обнаружение изменений в топологии влечет немедленную очистку записей |
Если не-корневой свич не получает hello- пакеты от корневого в течение Max Age, он начинает новые выборы | Начинает действовать, если не получает BPDU в течение 3 hello-интервалов |
Последовательное прохождение порта через состояния Blocking (20 сек) — Listening (15 сек) — Learning (15 сек) — Forwarding | Быстрый переход к Forwarding для p2p и Edge-портов |
Некоторые материалы были позаимствованы: https://habrahabr.ru/post/143768/
Комментариев нет:
Отправить комментарий