STP

Материал из Xgu.ru

Перейти к: навигация, поиск

Эта статья находится в процессе написания.
Если вы считаете, что её стоило бы доработать как можно быстрее, пожалуйста, скажите об этом.


Содержание

[править] Описание протокола

Для того чтобы определить какие порты заблокировать, а какие будут forward, STP выполняет следующее:

  1. Выбор корневого моста (Root Bridge)
  2. Определение корневых портов (Root Port)
  3. Определение выделенных портов (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

[править] Дополнительная информация

Источник — «http://xgu.ru/wiki/STP»