STP
Материал из Xgu.ru
|
Эта статья находится в процессе написания. |
Содержание |
[править] Описание протокола
Для того чтобы определить какие порты заблокировать, а какие будут forward, STP выполняет следующее:
- Выбор корневого моста (Root Bridge)
- Определение корневых портов (Root Port)
- Определение выделенных портов (Designated Port)
[править] Выбор корневого моста
Корневым становится коммутатор с наименьшим идентификатором моста (Bridge ID).
Только один коммутатор может быть корневым. Для того чтобы выбрать корневой коммутатор, все коммутаторы отправляют сообщения BPDU, указывая себя в качестве корневого коммутатора. Если коммутатор получает BPDU от коммутатора с меньшим Bridge ID, то он перестает анонсировать информацию о том, что он корневой и начинает передавать BPDU коммутатора с меньшим Bridge ID.
В итоге только один коммутатор останется корневым и будет передавать BPDU.
Изначально Bridge ID состоял из двух полей:
- Приоритет — поле, которое позволяет административно влиять на выборы корневого коммутатора. Размер — 2 байта,
- MAC-адрес — используется как уникальный идентификатор, который, в случае совпадения значений приоритетов, позволяет выбрать корневой коммутатор. Так как MAC-адреса уникальны, то и Bridge ID уникален, так что какой-то коммутатор обязательно станет корневым.
[править] Определение корневых портов
[править] Определение выделенных портов
[править] Пример топологии
[править] STP (802.1d)
Изменениями топологии считается изменения ролей DP и RP.
Коммутатор, который обнаружил изменения в топологии отправляет Topology Change Notification (TCN) BPDU корневому коммутатору:
- Коммутатор, на котором произошли изменения отправляет TCN BPDU через свой корневой порт. Отправка сообщения повторяется каждый hello interval (2 секунды) до тех пор пока получение сообщения не будет подтверждено.
- Следующий коммутатор, который получил TCN BPDU отправляет назад подтверждение. Подтверждение отправляется в следующем Hello BPDU, которое будет отправлять коммутатор, выставлением флага Topology Change Acknowledgement (TCA).
- Далее коммутаторы у которых порт работает в роли DP для сегмента, повторяют первые два шага и отправляют TCN через свой корневой порт и ждут подтверждения.
После того как корневой коммутатор получил TCN BPDU, он отправляет несколько следующих Hello с флагом TCA. Эти сообщения получают все коммутаторы. При получении сообщения hello с флагом TCA, коммутатор использует короткий таймер (Forward Delay time) для того чтобы обновить записи в таблице коммутации. Обновления выполняется из-за того, что после изменений в топологии STP в таблице коммутации могут храниться неправильные записи.
Если порт изменяет состояние с Blocking в Forwarding, то он должен пройти через два промежуточных состояния: Listening и Learning. Переход из Forwarding в Blocking может выполняться сразу.
[править] Роли и состояния портов
Роли портов:
- Root Port —
- Designated Port —
- Nondesignated Port —
- Disabled Port — порт который находится в выключенном состоянии.
Состояния портов:
- Blocking
- Listening
- Learning
- Forwarding
[править] BPDU
Bridge Protocol Data Unit (BPDU) —
| Название поля | Размер поля | Описание |
|---|---|---|
| Protocol Identifier | 2 байта | |
| Protocol Version Identifier | 1 байт | |
| BPDU Type | 1 байт | |
| Flags | 1 байт | |
| Root Identifier | 8 байт | |
| Root Path Cost | 4 байта | |
| Bridge Identifier | 8 байт | |
| Port Identifier | 2 байта | |
| Message Age | 2 байта | |
| Max Age | 2 байта | |
| Hello Time | 2 байта | |
| Forward Delay | 2 байта |
[править] RSTP (802.1w)
Роли портов:
- Root
- Designated
- Alternate — альтернативный путь к корневому коммутатору. Путь отличается от того, который использует корневой порт.
- Backup — запасной путь в сегмент.
Состояния портов:
- Learning
- Forwarding
- Discarding
[править] Отличия STP и RSTP
Соответствие между ролями портов в STP и RSTP:
| Состояние в STP (802.1d) | Состояние в RSTP (802.1w) |
|---|---|
| Blocking | Discarding |
| Listening | Discarding |
| Learning | Learning |
| Forwarding | Forwarding |
[править] Флаги в BPDU
Коммутатор устанавливает флаг proposal в RSTP BPDU для того чтобы предложить себя на роль выделенного (designated) коммутатора в сегменте. Роль порта в proposal-сообщении всегда установлена в designated.
Коммутатор устанавливает флаг agreement в RSTP BPDU для того чтобы принять предыдущее предложение. Роль порта в agreement-сообщении всегда установлена в root.
В RSTP нет отдельного BPDU для анонсирования изменений в топологии (topology change notification (TCN)). Протокол использует флаг topology change (TC) для того чтобы указать на изменения. Однако, для совместимости с коммутаторами, которые используют 802.1D, коммутаторы использующие RSTP обрабатывают и генерируют TCN BPDU.
[править] PVST (Cisco)
Per-VLAN Spanning Tree (PVST) — проприетарный протокол компании Cisco Systems, который для каждого VLAN строит отдельное дерево. Он предполагает использование ISL для создания транков (тегированных портов) и позволяет порту быть заблокированным для одних VLAN и разблокированным для других.
[править] PVST+ (Cisco)
Per-VLAN Spanning Tree Plus (PVST+) — проприетарный протокол компании Cisco Systems, с функциональностью аналогичной PVST. Однако, вместо ISL он использует 802.1Q.
Различают два вида протокола PVST+:
- PVST+ — основан на протоколе STP, с некоторыми проприетарными усовершенствованиями Cisco,
- Rapid PVST+ — основан на протоколе RSTP.
[править] PVST+
Проприетарные усовершенствования Cisco:
- Backbone Fast Convergence — функция улучшает сходимость топологии spanning-tree из-за непрямых изменений топологии;
- Loop Guard — функция проверяет, что корневой порт или альтернативный корневой порт получает BPDU. Если порт не получает BPDU, то loop guard переводит порт в состояние inconsistent, изолируя таким образом проблему и позволяя топологии spanning-tree перейти в другое состояние, до тех пор пока порт не начнет опять получать BPDU;
- Portfast — функция позволяет порту пропустить состояния listening и learning и сразу же перейти в состояние forwarding. Настраивается на портах уровня доступа (там где подключены пользователи);
- Portfast BPDU Guard — функция позволяет выключать порт при получении BPDU;
- Root Guard — функция не позволяет порту стать корневым портом или заблокированным. Если порт получит BPDU от корневого коммутатора, то он перейдет в специальное заблокированное состояние, которое называется root-inconsistent;
- Uplink Fast Convergence — функция позволяет быстро переключаться на избыточный uplink, в случае, если корневой порт выключился или пересчитывается топология spanning-tree;
- Uplink Load Balancing — функция позволяет балансировать нагрузку между uplink-портами, непосредственно контролируя стоимость портов для VLAN на транковых (тегированых) портах.
[править] Rapid PVST+
[править] MSTP (802.1s)
[править] STP в ProCurve
- Основная страница: STP в ProCurve
[править] STP в Cisco
- Основная страница: STP в Cisco
[править] Дополнительная информация
- Understanding Rapid Spanning Tree Protocol (802.1w) -- объяснение принципов работы RSTP на сайте cisco.
| |
|
|---|
