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


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

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

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

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

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

image

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

image


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

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).

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

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

image

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

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

image

image

image

Стоимости портов, которые присваиваются автоматически можно посмотреть в таблице:
Скорость передачи данных порта Стоимость порта
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.

image

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

image

image

Остался последний момент: когда порту назначается роль 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 имеет четкие топологии, которые можно использовать:

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

image
Кольцо

image

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

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

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

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

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

image

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

image

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

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

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

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

image

image

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

image

Path Control
image

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

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

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

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

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

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

image

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

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

image

У портов всего две роли – 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-адресом становится новым корневым коммутатором.

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

image

image

image

image

image

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

image

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

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

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

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

image

Резюме

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

image

image

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

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

image

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

image

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

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




К сожалению, не доступен сервер mySQL