Вы здесь

Подробности реализации протоколов RSTP и проприетарного Extended Ring Redundancy

Подробности реализации протоколов RSTP и проприетарного Extended Ring Redundancy
20.01.2020 - 14:24 - 1 1

В сети можно найти много материалов про протокол RSTP. В рамках данной статьи я предлагаю сравнить протокол RSTP с проприетарным протоколом от Phoenix Contact – Extended Ring Redundancy.

Подробности реализации RSTP

Общие сведения

Время сходимости – 1-10 c
Возможные топологии – любая

Распространено мнение, что RSTP позволяет объединить коммутаторы только в кольцо:

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

Принцип действия

RSTP сводит любую топологию к дереву. Один из коммутаторов становится центром топологии – корневым коммутатором. Корневой коммутатор пропускает через себя наибольшее количество данных.

Принцип действия RSTP следующий:

  1. подается питание на коммутаторы;
  2. выбирается корневой коммутатор;
  3. остальные коммутаторы определяют наиболее быстрый путь до корневого коммутатора;
  4. оставшиеся каналы блокируются и становятся резервными.

Выбор корневого коммутатора

Коммутаторы с RSTP обмениваются BPDU-пакетами. BPDU – это сервисный пакет, который содержит информацию RSTP. BPDU бывает двух типов:

  • Configuration BPDU.
  • Topology Change Notification.

Configuration BPDU используется для построения топологии. Его посылает только корневой коммутатор. Configuration BPDU содержит:

  • идентификатор отправителя (Bridge ID);
  • идентификатор корневого коммутатора (Root Bridge ID);
  • идентификатор порта, из которого отправлен данный пакет (Port ID);
  • стоимость маршрута до корневого коммутатора (Root Path Cost).

Topology Change Notification может отправить любой коммутатор. Они отправляются в случае изменения топологии.

После включения все коммутаторы считают себя корневыми. Они начинают передавать пакеты BPDU. Как только коммутатор получает BPDU с меньшим Bridge ID, чем его собственный, он перестает считать себя корневым.

Bridge ID состоит из двух значений – MAC-адрес и Bridge Priority. MAC-адрес мы поменять не можем. Bridge Priority по умолчанию равен 32768. Если не менять Bridge Priority, то корневым станет коммутатор с наименьшим MAC-адресом. Коммутатор с наименьшим MAC-адресом — это самый старый и, возможно, не самый производительный. Рекомендуется вручную определить корневой коммутатор топологии. Для этого на корневом коммутаторе необходимо настроить маленький Bridge Priority (например, 0). Также можно определить резервный корневой коммутатор, задав ему чуть больший Bridge Priority (например, 4096).


Выбор пути до корневого коммутатора

Корневой коммутатор рассылает во все активные порты пакеты BPDU. BPDU имеет поле Path Cost. Path Cost обозначает стоимость пути. Чем выше стоимость пути, тем дольше по нему передается пакет. Когда BPDU проходит через порт, то в поле Path Cost добавляется стоимость. Добавленное число называется Port Cost.


К Path Cost добавляет определенное значение при прохождении BPDU через какой-либо порт. То значение, которое добавляет называется стоимостью порта (Port Cost) и может быть определено как вручную, так и автоматически. Port Cost может быть определено как вручную, так и автоматически.

Когда некорневой коммутатор имеет несколько альтернативных путей до корневого, то он выбирает наиболее быстрый. Он сравнивает Path Cost этих путей. Тот порт, с которого пришел BPDU с наименьшим Path Cost становится корневым (Root Port).


Стоимости портов, которые присваиваются автоматически можно посмотреть в таблице:

Скорость передачи данных порта

Стоимость порта

10 Мб/с

2 000 000

100 Мб/с

200 000

1 Гб/с

20 000

10 Гб/с

2 000

 

Роли и статусы портов

Порты коммутатора имеют несколько статусов и ролей портов.

Статусы портов (для STP):

  • Disabled – неактивен.
  • Blocking – слушает BPDU, но не передает. Данные не передает.
  • Listening – слушает и передает BPDU. Данные не передает.
  • Learning – слушает и передает BPDU. Готовится к передаче данных — заполняет таблицу MAC-адресов.
  • Forwarding – передает данные, слушает и передает BPDU.

Время схождения STP — 30-50 секунд. После включения коммутатора все порты проходят через все статусы. В каждом статусе порт находится несколько секунд. Из-за этого принципа действия STP имеет такое длительное время схождения. RSTP имеет меньше статусов портов.

Статусы портов (для RSTP):

  • Discarding – неактивен.
  • Discarding – слушает BPDU, но не передает. Данные не передает.
  • Discarding – слушает и передает BPDU. Данные не передает.
  • Learning – слушает и передает BPDU. Готовится к передаче данных — заполняет таблицу MAC-адресов.
  • Forwarding – передает данные, слушает и передает BPDU.
  • В RSTP статусы Disabled, Blocking и Listening объединены в один – Discarding.

Роли портов:

  • Root port – порт, через который передаются данные. Он служит наиболее быстрым путем до корневого коммутатора.
  • Designated port – порт, через который передаются данные. Определен для каждого сегмента LAN.
  • Alternate port – порт, через который данные не передаются. Он является альтернативным путем до корневого коммутатора.
  • Backup port – порт, через который данные не передаются. Он является резервным путем для сегмента, где уже подключен один порт с поддержкой RSTP. Backup port используется, если два канала коммутатора подключены к одному сегменту (читай хабу).
  • Disabled port – на данном порту отключен RSTP.

Выбор Root Port описан выше. Каким образом выбирается Designated port?

В первую очередь давайте определим, что такое сегмент LAN. Сегмент LAN – это коллизионный домен. Для коммутатора или маршрутизатора каждый порт образует отдельный коллизионный домен. Сегмент LAN – канал между коммутаторами или маршрутизаторами. Если говорить про хаб, то у хаба все порты находятся в одном коллизионном домене.

На один сегмент назначается только один Designated Port.

В случае с сегментами, где уже есть Root Port’ы, все понятно. Второй порт сегмента становится Designated Port.

Но остаются резервные каналы, где будет один Designated Port и один Alternate Port. Каким образом они будут выбираться? Designated Port станет порт с наименьшим Path Cost до корневого коммутатора. Если Path Cost равны, то Designated Port будет тот порт, который размещается на коммутаторе с наименьшим Bridge ID. Если и Bridge ID равны, то Designated Port становится порт с наименьшим номером. Второй порт будет Alternate.


Остался последний момент: когда порту назначается роль Backup? Как уже писалось выше, Backup port используется только в том случае, когда два канала коммутатора подключены к одному сегменту, то есть к хабу.

В этом случае Designated Port выбирается точно по тем же самым критериям:

  • Наименьший Path Cost до корневого коммутатора.
  • Наименьший Bridge ID.
  • Наименьший Port ID.

Максимальное количество устройств в сети

Стандарт IEEE 802.1D не предъявляет строгих требований по количеству устройств в ЛВС с RSTP. Но стандарт рекомендует использовать не более 7 коммутаторов в одной ветке (не более 7 хопов), т.е. не более 15 в кольце. При превышении этого значения начинает увеличиваться время сходимости сети.

Подробности реализации ERR.

Общие сведения

Время сходимости

Время схождения ERR – 15 мс. При максимальном количестве коммутаторов в кольце и наличии сопряжения колец – 18 мс.

Возможные топологии

ERR не позволяет свободно объединять устройства как RSTP. ERR имеет четкие топологии, которые можно использовать:

  • Кольцо.
  • Дублированное кольцо.
  • Сопряжение до трех колец.

Кольцо


Когда в ERR объединяются все коммутаторы в одно кольцо, то на каждом коммутаторе необходимо настроить порты, которые будут участвовать в построении кольца.

Двойное кольцо

Коммутаторы могут быть объединены в двойное кольцо, что значительно увеличивает надежность кольца.

Ограничения двойного кольца:

  • Двойное кольцо не может быть использовано для сопряжения коммутаторов с другими кольцами. Для этого необходимо использовать Ring Coupling.
  • Двойное кольцо не может быть использовано для кольца сопряжения.

Сопряжение колец

При сопряжении в сети может быть не более 200 устройств.

Сопряжение колец подразумевает объединение остальных колец в еще одно кольцо.

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

При сопряжении через один коммутатор на устройстве задействуются оба порта. Время схождения в этом случае будет составлять примерно 15-17 мс. При таком сопряжении коммутатор сопряжения будет точкой отказа, т.к. потеряв этот коммутатор, теряется сразу все кольцо. Сопряжение через два коммутатора позволяет избежать этого.


Возможно сопрягать дублированные кольца.

Path Control

Функция Path Control позволяет настроить порты, через которые будут передаваться данные в штатном режиме работы. Если канал откажет и сеть перестроится на резервную топологию, то после восстановления канала, сеть перестроиться обратно на заданную топологию.

Эта функция позволяет сэкономить на резервном кабеле. Более того всегда будет известна используемая топология для траблшутинга.

Основная топология переключается на резервную за 15 мс. Обратное переключение при восстановлении сети будет занимать около 30 мс.

Ограничения:

  • Не может быть использован вместе с Dual Ring.
  • Функция должна быть включена на всех коммутаторах в сети.
  • Один из коммутаторов настраивается как мастер Path Control.
  • Автоматический переход на основную топологию после восстановления осуществляется через 1 секунду по умолчанию (данный параметр можно изменить при помощи SNMP в диапазоне от 0 с до 99 с).

Принцип действия

Принцип работы ERR

Для примера рассмотрим шесть коммутаторов – 1-6. Коммутаторы объединены в кольцо. Каждый коммутатор использует два порта для подключения к кольцу и хранит их статусы. Коммутаторы пересылают статусы портов друг другу. Эти данные устройства используют для установки исходного состояния портов.

У портов всего две роли – Blocked и Forwarding.

Коммутатор с наибольшим MAC-адресом блокирует у себя порт. Все остальные порты в кольце передают данные.

Если Blocked port перестает работать, то следующий порт с наибольшим MAC-адресом становится Blocked.

После загрузки коммутаторы начинают посылать Ring Protocol Data Unit (R-PDU). R-PDU передается с помощью multicast. R-PDU – это сервисное сообщение, как и BPDU в RSTP. R-PDU содержит статусы портов коммутатора и его MAC-адрес.

Алгоритм действий при отказе канала
Когда канал отказывает, коммутаторы посылают R-PDU для уведомления об изменении статуса портов.

Алгоритм действий при восстановлении канала
Когда отказавший канал вводится в работу, коммутаторы посылают R-PDU для уведомления об изменении статуса портов.

Коммутатор с наибольшим MAC-адресом становится новым корневым коммутатором.

Отказавший канал становится резервным.

После восстановления один из портов канала остается заблокированным, а второй переводится в состояние forwarding. Заблокированным портом становится порт с наибольшей скоростью. Если скорости равны, то заблокированным станет порт коммутатора с наибольшим MAC-адресом. Этот принцип позволяет заблокировать порт, который перейдет из состояния blocked в состояние forwarding с максимальной скоростью.

Максимальное количество устройств в сети

Максимальное количество коммутаторов в ERR кольце – 200.

Взаимодействие ERR и RSTP

RSTP можно использовать в сочетании с ERR. Но кольцо RSTP и кольцо ERR должны пересекаться только через один коммутатор.

Резюме

ERR отлично подходит для организации типовых топологий. Например, кольцо или дублированное кольцо.


Подобные топологии часто применяются для резервирования на промышленных объектах.

Более того, при помощи ERR вторую топологию можно реализовать менее надежно, но более бюджетно. Это можно сделать при помощи дублированного кольца.


Но не всегда можно применить ERR. Бывают достаточно экзотические схемы. С одним из наших заказчиков мы тестировали следующую топологию.

В данном случае ERR применить не представляется возможным. Для такой схемы мы использовали RSTP. У заказчика было жесткое требование по времени сходимости – менее 3 с. Чтобы добиться этого времени необходимо было четко определить корневые коммутаторы (основной и резервный), а также стоимости портов в ручном режиме.

Как итог, ERR заметно выигрывает по времени сходимости, но не дает такой гибкости, которую дает RSTP.