Spanning-Tree protocol (STP)
В общем
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+
© Наталия Бобкова 2014—2022