КомпаніїМережеве обладнанняПЗТехнології

Настройка ERPS на коммутаторах SNR

1

В настоящее время для большинства сетевых инженеров, IT-отделов и телеком-компаний не стоит вопрос организовывать резервирование на сети или нет. Скорее стоит вопрос как именно реализовывать это самое резервирование, чтобы уменьшить время простоя. Требования непрерывности бизнес-процессов постоянно повышаются и то, что раньше было допустимо, в настоящее время может служить поводом для написания объяснительной. Сейчас мало кто может себе позволить иметь согласованный план резервирования, заключающийся в переключении патчкорда из одного коммутатора/маршрутизатора в другой в случае наличия проблем с каналом. В данной статье предлагается к рассмотрению протокол L2-резервирования ERPS и его сравнение с семейством протоколов, наиболее распространенных на втором уровне модели OSI — семейством STP.

Описание протокола ERPS

ERPS (Ethernet Ring Protection Switching) — протокол, позволяющий осуществлять резервирование канала на втором уровне модели OSI путем физического создания петель и их логической блокировки. В каждом кольце выбирается R-APS VLAN, в котором будет ходить служебный трафик ERPS. Трафиковые VLAN’ы, которые нужно защищать от петель и разрывов, объединяются в MST-инстансы и называются protected VLAN. Также для каждого порта в кольце выбирается 1 из 3 возможных ролей: RPL owner, RPL neighbour или common. RPL owner должен быть 1 на кольцо и именно он при нормальных условиях должен выполнять блокировку петли и разблокировку канала в случае разрыва. RPL neighbour должен находиться с другой стороны линка от RPL owner и в текущей редакции стандарта G.8032/Y.1344 также может участвовать в блокировки/разблокировки канала. Common-порт, как можно судить по его названию, просто обычный порт, входящий в состав кольца и через который ходит служебный трафик в R-APS VLAN’е. Согласно стандарту G.8032/Y.1344 время сходимости должно составлять не более 50 мс при наличии в кольце не более 16 узлов. Также в настоящий момент в ERPS существует возможность выбора, будет кольцо revertive или non-revertive. В первом случае при восстановлении канала порт RPL-owner снова станет заблокированным и сбойный линк — рабочий, т.е. кольцо, вернется в исходное состояние. В случае если кольцо non-revertive, то возвращения в исходное состояние не произойдет.

Возникает резонный вопрос — ведь есть же уже семейство протоколов STP, которые решают аналогичную задачу резервирования. Зачем отходить от него? Ответ будет крыться во времени сходимости: для STP — это порядка 50 секунд, для RSTP — около 1-2 секунд, а для ERPS — 50 мс. Согласитесь, весомое преимущество. Но теперь уже возникает встречный вопрос — если же ERPS так хорош, почему не используется повсеместно? Во-первых, для его применения нужна специальная топология — кольцевая. В случае с STP его можно применить к любой топологии с любым количеством резервируемых линков, но все же помня про ограничение по количеству узлов. С ERPS номер с любой топологией не пройдет, нужны именно кольца или полукольца, о которых мы поговорим чуть позже. Во-вторых, у ERPS отличается механизм падения линка, который тоже описан ниже.

Основные алгоритмы работы ERPS

Штатная работа

Когда разрывов в кольце нет, то по нему ходят сигнальные сообщения «No Request». В данном режиме порт RPL owner заблокирован. Значение «Node State» в состоянии «IDLE».

Разрыв линка между RPL common’ами

В данном случае коммутаторы, которые обнаружили падение линка, после истечения «Hold Off Timer» посылают пакеты «Signal Failing». Коммутаторы, получившие пакет «Signal Failing», выполняют очистку таблицы MAC-адресов. Когда коммутаторы, на которых находятся RPL owner и RPL neighbour получают пакет «Signal Failing», они разблокируют указанные порты и также выполняют очистку таблицы MAC-адресов. Затем коммутаторы получают второй «Signal Failing»(от второго коммутатора, который зафиксировал падение линка) и снова выполняют очистку таблицы MAC-адресов. Назчение «Node State» в состоянии «PROTECTION».

Восстановление линка между RPL common’ами

Как только коммутаторы обнаруживают восстановление линка, они запускают «Guard Timer» и начинают посылать пакеты «No Request». Коммутаторы, получившие пакет «No Request», выполняют очистку таблицы MAC-адресов. Коммутатор, на котором находится RPL owner, запускает таймер «WTR Timer». После того, как истечет таймер «Guard Timer» один из двух коммутаторов, который зафиксировал восстановление линка, получит сообщение No Request c Node ID больше, чем свои, и разблокирует порт, который восстановился. В данном моменте времени состояние кольца будет «PENDING». Если значение «revertive mode» установлено в «revertive», то после истечения таймера «WTR Timer» коммутатор, один из портов которого RPL owner, посылает пакет «No request, RPL blocked» и блокирует порт RPL owner. После чего второй из коммутаторов, который обнаружил восстановление линка, разблокирует свой порт и кольцо вернется в исходное состояние «IDLE».

Разрыв линка между RPL owner и RPL neighbour

В случае разрыва линка между портами RPL owner и RPL neighbour коммутаторы начинают рассылать пакет «Signal Failing, Do not Flush», при получении которого остальные коммутаторы не будут сбрасывать таблицу МАС-адресов. Состояние кольца в данном случае будет «PROTECTION».

Восстановление линка между RPL owner и RPL neighbour

Алгоритм восстановления в данном случае напоминает ситуацию восстановления канала между RPL common’ами, за тем исключением, что в данном случае выставляется флаг «Do Not Flush» и коммутаторы не сбрасывают таблицу МАС-адресов.

Более подробно алгоритмы работы изложены в приложении III стандарта G.8032/Y.1344.

Особенности ERPS

Virtual channel

При настройке колец по умолчанию выставляется работа с virtual channel и идентификатор кольца Ring-ID 1. Поэтому, если при настройке колец не изменять данные параметры и задать одинаковый control vlan, то кольцо с полукольцом соберется, но разрыв 1 линка в любом из колец приведет к созданию петли. Для избежания этого можно либо задавать разные Ring-ID, либо разные control vlan, либо работать в режиме без virtual channel. Стоит отметить, что наличие/отсутствие virtual channel можно настроить только на полукольце. Нужно понимать, что virtual channel — это канал, который относится к major-ring’у, но позволяет передать через себя сигнальные сообщения sub-ring’a. В данном примере если упадет линк между WEST и EAST и линк между WEST и NORTH, то линк между WEST и SOUTH не разблокируется. Это происходит потому, что сигнальные сообщения «Signal Failing» относятся к major-ring’у, поэтому sub-ring никак реагировать не будет.

Детектирование падения линка

Обнаружить падение линка можно в двух случаях. Первый и наиболее распространенный — это падение физического интерфейса. Для того чтобы падение отрабатывалось штатно, нельзя ставить в кольце два идущих подряд коммутатора, на которых не настроен ERPS.

Второй, и наиболее эксклюзивный способ — это настройка механизма CFM(connectivity fault management). Этот протокол позволяет настроить мониторинг от «точки до точки» на уровне L2 с помощью CCM-пакетов, которые отправляются с заданной периодичностью. Таким образом, появляется таймер, в течение которого отсутствие прихода CCM-пакета позволяет сделать вывод о разрыве канала и включить режим защиты в протоколе ERPS.

Одной из интересных особенностей ERPS является тот факт, что, несмотря на постоянное присутствие в канале пакетов NR(no request), при их не получении портом RPL owner, этот порт не будет предпринимать никаких действий по включению защитного механизма ERPS.

Настройка ERPS на коммутаторах SNR

Настройка 1 кольца

Для начала предлагается рассмотреть настройку простого случая — 1 кольца из 3 коммутаторов(WEST, EAST и NORTH). В качестве тестовых коммутаторов выступают следующие модели:

  1. коммутатор WEST — SNR-S2990G-24FX
  2. коммутатор EAST — SNR-S2940-8G-v2
  3. коммутатор NORTH — SNR-S2990G-48T
  4. коммутатор SOUTH — SNR-S2960-24G

Настройка коммутатора WEST:

Настройка коммутатора NORTH:

Настройка коммутатора NORTH производится аналогично WEST, кроме роли порта port0. Поскольку с другой стороны линка будет RPL owner, то port0 должен быть neighbour.

#указываем, что port0 будет выполнять функцию "RPL neighbour"
WEST(config-erps-ring-inst-1)#rpl port0 neighbour  

В схеме мы видим, что port0 коммутатора WEST смотрит на port0 NORTH. Это вполне нормально, поскольку мы сами определяем значения port0 и port1. Port0 может смотреть как на port0, так и на port1. С port1 аналогично. Главное, чтобы соблюдалось правило: owner смотрит на neighbour, а common на common.

Настройка коммутатора EAST:

Настройка коммутатора EAST осуществляется аналогично WEST и NORTH, за исключением того, что на EAST роли портов port0 и port1 не указываются, будут ли они RPL owner или neighbour, т.е. они становятся по умолчанию RPL common.

В схеме и в приложенном конфиг-файле номера портов, участвующих в создании ERPS-кольца отличаются, т.к. используются разные модели коммутаторов.

Настройка коммутатора NORTH:

Настройка коммутатора NORTH производится аналогично WEST, кроме роли порта port0. Поскольку с другой стороны линка будет RPL owner, то port0 должен быть neighbour.

#указываем, что port0 будет выполнять функцию "RPL neighbour"
WEST(config-erps-ring-inst-1)#rpl port0 neighbour  

В схеме мы видим, что port0 коммутатора WEST смотрит на port0 NORTH. Это вполне нормально, поскольку мы сами определяем значения port0 и port1. Port0 может смотреть как на port0, так и на port1. С port1 аналогично. Главное, чтобы соблюдалось правило: owner смотрит на neighbour, а common на common.

Настройка коммутатора EAST:

Настройка коммутатора EAST осуществляется аналогично WEST и NORTH, за исключением того, что на EAST роли портов port0 и port1 не указываются, будут ли они RPL owner или neighbour, т.е. они становятся по умолчанию RPL common.

В схеме и в приложенном конфиг-файле номера портов, участвующих в создании ERPS-кольца отличаются, т.к. используются разные модели коммутаторов.

Проверка:

Убеждаемся, что Signal-Status имеет значение Non-failed на всех портах и Node State в состоянии IDLE. Это говорит о том, что кольцо создалось и работает в штатном режиме.

Также можно вывести информацию о параметрах с помощью команды show erps instans

WEST#show erps instance
ERPS Ring: test_ring1
Instance: 1
Description: -
Protected Instance: 1
Revertive mode: revertive
R-APS MEL: 7
R-APS Virtual-Channel: with
Control Vlan: 2
Ring ID: 1
Guard Timer(10ms): 50
Holdoff Timer(seconds): 0
WTR Timer(min): 5
-------------------------------------------
Port      Role             Port-Status
-------------------------------------------
Port0     RPL owner        blocked
Port1     common           forwarding

Предлагается немного остановиться на параметрах, которые ранее не рассматривались.

Revertive mode — режим работы, при котором после устранения разрыва(состояние PENDING) кольцо переходит в исходное состояние (состояние IDLE) — разблокируются все порты, кроме RPL owner и neighbour. Non-Revertive mode — режим работы, при котором после устранения разрыва блокированным остается тот линк, на котором был разрыв. Состояние кольца в этом случае будет PENDING.

R-APS MEL — уровень R-APS сообщений. Если на порт приходит сообщение, у которого R-APS MEL меньше, чем задано в ERPS-инстансе, то сообщение дальше отправляться не будет.

R-APS virtual channel — наличие виртуального канала в кольце(major-ring), по которому будут ходить сигнальные сообщения полукольца(sub-ring’a).

Ring-ID — идентификатор ERPS-кольца, являющийся последним октетом MAC-адреса назначения служебных сообщений(PDU). По умолчанию Ring-ID равен 1 и МАС-адрес в данном случае будет 01:19:a7:00:00:01.

Guard Timer — таймер, до истечения которого не будут обрабатываться сигнальные сообщения.

Holdoff Timer — таймер, до истечения которого будет игнорироваться неработоспособность линка, давая возможность линку восстановиться без срабатывания ERPS.

WTR (wait-to-restore) Timer — таймер, до истечения которого при восстановлении линка не будет переключение к исходной схеме блокировки портов в случае работы в revertive mode.

Настройка 1 кольца с полукольцом

На следующем этапе предлагается немного усложнить схему, оставив уже настроенное кольцо и подключить к коммутаторам WEST и EAST еще и SOUTH. Таким образом, к существующему кольцу(major-ring) мы подключаем полукольцо(sub-ring). Полукольцо получается из-за того, что линк между WEST и EAST уже принадлежит кольцу WEST-EAST-NORTH и мы не можем на этих же портах коммутаторов WEST и EAST прописать, что они относятся также к кольцу WEST-EAST-SOUTH.

Настройка коммутатора WEST:

Настройка коммутатора EAST:

Настройка коммутатора EAST осуществляется аналогично WEST, за исключением того, что rpl port0 не указывается, т.е. port0 будет RPL common, а port1 существовать не будет.

Настройка коммутатора SOUTH:

настройка коммутатора SOUTH аналогична настройке коммутатора NORTH за исключением того, что будет создано кольцо erps_ring2 с параметром  open-ring, в котором будет control vlan 4.

Конфигурационные файлы для настройки 1 кольца с полукольцом.

Коммутатор EAST

Коммутатор WEST

Коммутатор NORTH

Коммутатор SOUTH

Результаты тестов на коммутаторах SNR

Схема представляет собой кольцо из пяти коммутаторов. Тестируемые ПК находятся на соседних коммутаторах. В нормальном режиме трафик идет по большому кольцу. Во время теста физически разрывается линк на коммутаторе с тестовым ПК, после чего трафик идет всего через 2 коммутатора. На коммутаторах SNR для ускорения времени сходимости следует ввести команду «port-scan mode interrupt». Тест представляет собой запуск пинга каждые 0,01 секунды с одного ПК до второго. Таймеры для ERPS: Hold-off timer — 0s, Guard timer — 10ms. Таймеры для RSTP: Hello timer — 2s, со стороны обоих ПК порты включены в режим portsfast. Ниже таблица со временем сходимости для каждого теста и среднее за 10 тестов. «Реверс» — время сходимости при восстановлении разорванного линка.

1 2 3 4 5 6 7 8 9 10 среднее время, c
ERPS 0,19 0,02 0,27 0,05 0,1 0,14 0,14 0,13 0,02 0,16 0,122
ERPS реверс 0,03 0,05 0,02 0,03 0,03 0,03 0,02 0,05 0,03 0,03 0,032
RSTP 0,93 0,93 0,87 1 0,96 0,8 0,93 1,01 0,86 1,02 0,931
RSTP реверс 0,02 0,01 0,01 0,01 0,01 0,01 0,01 0,01 0,01 0,01 0,011

Таблица 1. Время сходимости ERPS и RSTP

Что удивило, при восстановлении канала быстрей оказался RSTP. Правда, разница составила всего 2 сотые секунды. Зато при пропадании линка, как и ожидалось, ERPS переключался быстрее, чем RSTP. Причем разница составляет почти целую секунду.

Заключение

Тестовое кольцо ERPS настроено, резервирование отработано, время переключения проверено. Думаю, что пора подвести итог — вспомнить преимущества и недостатки этого протокола. И начнем, пожалуй, с последних.

К «минусам» можно сразу отнести отсутствие в самом протоколе мониторинга пропадания линка на логическом уровне. Таймер с функциональностью «keep alive» отсутствует даже как вспомогательный механизм. Небольшими недостатками являются относительная сложной настройки и его применимость к уже существующей сети, поскольку требуется именно кольцевая топология, которую не всегда возможно будет реализовать за приемлемые средства.

Нейтральной особенностью является наличие 1 резервного линка на кольцо, что, с одной стороны повышает утилизацию сети при наличии резервирования, а с другой — приводит к отсутствию связности при 2 разрывах и более в 1 кольце.

Главной положительной особенностью является время сходимости. Только ради этого уже можно всерьез задумываться о внедрении этого протокола на сети. Приятным дополнением к этому станет наличие таймера «hold-off», который исключит полную неработоспособность сети в случае частого изменения состояния порта, чего нельзя сказать про семейство STP. Также еще следует отметить низкую нагрузку на CPU по сравнению с STP, ведь в ERPS логика довольно проста: есть аварийное сообщение — разблокировать порт, нет — заблокировать.

Comments

Leave a reply