Spanning-Tree protocol (STP)

Материал из Juniper Exam Wiki
Перейти к навигации Перейти к поиску

В общем

Ethernet легко подвержен бродкаст-штормам, когда в сети возникают петли.

Но для обеспечения резервирования, требуются альтернативные линки и это приводит топологию сети к петлям.

STP как раз дает возможность использовать резервирование, но избежать петель.

Juniper поддерживает данные вариации STP: STP, RSTP(используется по дефолту), MSTP, VSTP.

Итого зачем вообще нужен STP:

- Предотвращает бродкаст штормы
- Обеспечивает резервирование дополнительными линками, без петель
- Позволяет подключать к сети устройства, не поддерживающие STP (используя edge ports)

Корень дерева (root tree | root bridge) - это свитч, который выбирается алгоритмом STP. В дальнейшем он используется для рассчета наилучшего пути от bridge до root bridge.

Фреймы ходят по сети к получателю - leaf (ПК или любой другой не транзитный хост) - вдоль ветвей (branches).

Tree branch (ветвь) - сегмент сети или линк между бриджами.

Designated bridges - свитчи, которые передают фреймы по STP-дереву.

STP создает единственный возможный путь между root и leaf. Альтернативные пути переводятся в standby режим.

Роли портов STP

  • Root port - ближайший к root bridge. Это единственный порт, который получает фреймы от root bridge и пересылает их на него.
  • Designated port - порт, передающий трафик от root bridge к leaf. Designated bridge имеет один designated порт для каждого LAN. Root bridge передает фреймы во все designated порты.
  • Alternate port - альтернатиный порт к root bridge. Он не является частью активного spanning tree, но когда root port накрывается (если падает линк или переходит в состояние отбрасывания пакетов), то alternate port сразу принимает на себя его роль.
  • Backup port - резервный для desidnated порта. Работает аналогично alternate port.
  • Disabled port - порт, не принимает участия в активном spanning tree.
  • Edge port - порт в сторону хоста, не поддерживаюшего STP (ПК, сервер, роутеры, тупиковые хабы). Т.к. предполагается, что хосты не способны образовать петлю => edge port сразу переходит в состояние передачи фреймов. Можно назначить edge порт, а также STP может сам распознать edge порт (через отсутствие связи с конечными станциями).

Состояния портов (RSTP)

  • Discarding - отбрасывает все BPDU, все data-фреймы и не изучает mac-адреса.
  • Learning - изучает маки, и строит таблицу коммутации.
  • Forwarding - порт пересылает и фильтрует фреймы > становится частью активного spanning tree.

BPDU (bridge protocol data units)

BPDU фреймы - это сообщения, которыми обмениваются свитчи. В них содержится информация: bridge ID, root path costs, и port MAC addresses. Начальный обмен BPDU между коммутаторами определяет root bridge. Также BPDU распространяют информацию о стоимости маршрутов (cost) между ветками (tree branches) - основанные либо на пропускной способности линков, либо заданные вручную. RTSP строит топологию исходя из cost.

Когда отработал STA (spanning tree algorithm), всем портам назначены роли и состояния, идентифицированы root и designated bridges, требуется механизм для поддержания данной топологии в актуальном состоянии. Используем BPDU.

Root bridge отправляет BPDU каждые 2 сек (дефолтный hello time interval RSTP). Когда на порт приходит BPDU, он сравнивает данные, с полученными ранее, и на основании сравнения:

- Если данные BPDU совпадают с существующей записью в таблице MAC-адресов, порт сбрасывает таймер max age на 0 и пересылает новый BPDU с текущей активной информацией о топологии на следующий порт в spanning tree.
- Если топология в BPDU была изменена, обновляется таблица MAC-адресов, max age устанавливается в 0, и новый BPDU пересылается с текущей активной информацией о топологии на следующий порт в spanning tree.
- Когда порт не получает BPDU в течение 3 * hello (3*2 = 6 сек), он реагирует одним из двух способов.
-Если bridge является root port: происходит полное перестроение spanning tree.
-Если bridge является любым некорневым мостом: RSTP обнаруживает, что подключенный хост не умеет отправлять BPDU, и назначает этот порт в edge port.

STP генерирует свои BPDUs. Сетевуха на хосте (ПК, сервер, ...) тоже генерирует свои BPDUs. Эти BPDU хостов могут быть обработаны STP свитча и привести к проблемам на сети. Поэтому лучше включать BPDU Protection на edge ports.

Root Bridge Fails

Когда link на root port падает, в BPDU добавляется флаг, topology change notification (TCN).

Когда этот BPDU доходит до следующего порта в VLAN, таблица MAC-адресов сбрасывается, и BPDU едет на следующий bridge. В итоге, все порты во VLAN обнулили свои таблицы MAC. После этого RSTP назначает новый root port.

Если root port или designated port падают - alternate или backup port берут на себя их роль после обмена BDPU (proposal-agreement handshake).

Если локальный порт становится root или designated, то он согласовывает быстрое изменение тем же proposal-agreement handshake с ближайшим свитчем.

Так как падение линка приводит к очистке маков на всей сети - это немного затормаживает работу сети и образует неплохой такой флуд для переобучения маков.

Включенный ARP (address resolution protocol) заставляет коммутатор активно отправлять ARP-запросы на IP-адреса в кэше ARP.

Включение ARP в STP наиболее полезно для избегания чрезмерного флуда в L2.

Модификации STP

STP

+:

  • Работает с 802.1D 1998 bridges
  • STP обратносовместим с RSTP, можно включать STP на 802.1D 1998 bridges
  • Годится для устаревших сетей, где не требуется быстрая сходимость.

-:

  • STP и RSTP ограничены одним инстансом для одного интерфейса. Используется set rstp interface для включения интерфейса в RSTP инстанс.
  • STP медленее RSTP
  • Не разделяет вланы. Создает spanning tree без учетов вланов и возможности постоения топологии для каждого влана. (в MSTP решена эта проблема)
  • Не обеспечивает быструю сходимость. STP использует тайминги, RSTP использует handshake механизм.
  • В IEEE 802.1D STP не используются edge ports.

На MX (c 14.1R1): - Без включения traceoptions работает логирование состояний и ролей интерфейсов STP. - Сбор информации что стриггерило изменения в STP (роль или статус).

На SRX: Поддерживается начиная с 15.1X49-D70 на некоторых девайсах.

На EX: По дефолту используется RSTP. Если работаем с Junos, поддерживающем Enhanced Layer 2 Software (ELS) - можно указать чтобы STP использовался принудительно (через указание force-version в конфиге).

Основные команды:

show spanning-tree statistics message-queues
show spanning-tree stp-buffer see-all
show spanning-tree statistics bridge
show spanning-tree statistics interface
clear spanning-tree stp-buffer

STP работает на основании создания bridge (switch).

Root bridge (switch) - в самом верху.

Ethernet от root switch подсоединяет другие свитчи в Local Area Network (LAN).

В STP и RSTP инстансах свитчам присваиваются extended system-id.

Config

1. удаляем RSTP глобально или на конкретных интерфейсах:

delete protocols rstp
set protocols rstp interface ge-0/0/0.0 disable

2. включаем STP:

set protocols stp interface all
set protocols stp interface ge-0/0/0.0

3. для более быстрого изучения маков - включаем Address Resolution Protocol (ARP) [при использовании irb | rvi]

set protocols stp interface all arp-on-stp
set protocols stp interface ge-0/0/0.0 arp-on-stp

RSTP (Rapid STP)

+:

  • Быстрее в сходимости при факапах
  • Voice и video лучше использовать с rstp.
  • RSTP обратносовместим с STP, причем на свитче не обязательно использовать именно RSTP.
  • Поддерживается больше портов, чем в MSTP или VSTP
  • Поддерживает edge ports на MX и ACX роутерах

-:

  • STP и RSTP ограничены одним инстансом для одного интерфейса. Используется set rstp interface для включения интерфейса в RSTP инстанс.
  • Не работает с 802.1D 1998 bridges
  • Не разделяет вланы. Создает spanning tree без учетов вланов и возможности постоения топологии для каждого влана. (в MSTP решена эта проблема)

MSTP (Multiple STP)

+:

  • Работает с несколькими вланами
  • Поддерживает несколько инстансов для одного физ интерфейса
  • Поддерживает edge ports на MX и ACX роутерах

-:

  • Не со всеми протоколами совместим
  • Поддерживает ограниченное кол-во портов. MSTP регион поддерживает до 64 MSTIs (а в каждом инстансе 1-4094 вланов)
  • MSTP больше нагружает CPU.
  • Не так быстр как RSTP

VSTP (VLAN STP)

+:

  • Работает в разными вланами. Включаем VSTP внутри вланов, для которых требуется работа STP.
  • VSTP и RSTP могут быть включены на свитче одновременно.
  • Можно добавить интерфейс как в global level, так и в VLAN level. Если добавить global, то VSTP будет включен во всех вланах этого интерфейса. Если будет добавлен global и VLAN level, то конфиг VLAN level будет приоритетнее и перезапишеи global level.
  • Поддерживает edge ports на MX и ACX роутерах

-:

  • 1 инстанс на один влан
  • Использует ограниченное кол-во портов
  • VSTP может работать максимум с 509 вланами. Однако, лучше использовать не более 190.
  • Для одного влана нельзя включить и VSTP и RSTP.
  • Если на свитче одновременно включаем VSTP + RSTP и на свитче более 253 вланов, то для 1-253 влана будет работаеть VSTP, для остальных RSTP.

TIPS:

- Рекомендуется включать VSTP во всех вланах.
- При использовании: set protocol vstp vlan all, vlan-id 1 туда не включен, если он нужен, то добавляем отдельно: set protocol vstp vlan 1
- Максимальное кол-во вланов, используемых в VSTP - опредлеляется типов свитча и его OS.
- Можно использовать VSTP вместе с cisco-свитчами PVST+ и Rapid-PVST+