Настройка Loop Protect в RouterOS на маршрутизаторах Mikrotik

В одной из предыдущих публикаций про обновление RouterOS 6.37 я уже упоминал про добавление функции Loop Protect. Если быть точнее, Loop Protect добавлен в RouterOS начиная с версии 6.37rc25. Несмотря на это, в сам Winbox эта опция была добавлена только с выходом обновления RouterOS 6.37.1. Тогда же был представлен обновленный Winbox 3.6. С выпуском обновленного Winbox 3.7 мелкие недочеты по прежнему не исправлены.

Что такое Loop Protect и зачем он нужен в RouterOS?

Loop Protect, как следует из названия, функция для защиты от образования петель на уровне Layer 2. Система поддерживает контроль интерфейсов ethernet, vlan, eoip и eoipv6.


Хотите научиться работать с MikroTik? В этом поможет видеокурс "Настройка оборудования MikroTik". Посмотрите 25 уроков из этого курса бесплатно.


Если функция активирована, роутер периодически отправляет специальный пакет и, если пакет приходит обратно на маршрутизатор, RouterOS сверяет MAC отправителя. В случае обнаружения петли, интерфейс, на который пришел пакет, отключается на заданное время, а в лог системы при этом записывается соответствующее уведомление.

Настройка Loop Protect в Winbox

Функция Loop Protect настраивается индивидуально для каждого интерфейса. Откроем, к примеру, интерфейс ether5-slave-local, как видите, функция имеет значение «default», по сути это «off», т.е. по-умолчанию функция отключена на всех интерфейсах.

При использовании командной строки, используется параметр


loop-protect=on|off|default


Разработчики по прежнему не пофиксили дублирование параметров, поэтому на повторяющиеся «on», «off» и остальные параметры в Winbox не стоит обращать внимания, это мелкий баг.

Есть важный нюанс, про который забывает упомянуть как производитель, так и люди, описывающие работу Loop Protect. Дело в том, что для работы функции, необходимо активировать опцию на всех (!) портах, на которых вы считаете возможным образование петель. Если вы активируете loop-protect=on только на одном сетевом интерфейсе, при образовании петли, все порты, находящиеся в одной сети (бридже), станут недоступными. В этом случае необходимо ликвидировать петлю и перезагрузить устройство.

Для того, чтобы воссоздать петлю, я соединил интерфейсы ether3-slave-local и ether5-slave-local патчкордом, сеть при этом «падает», так что заранее необходимо задать все параметры.

В нашем случае для ether3-slave-local и ether5-slave-local задан параметр loop-protect=on.

Как видите, система обнаружила петлю и отключила сетевой интерфейс.

Для того, чтобы правильно настроить функцию, давайте рассмотрим дополнительные параметры:

  • loop-protect-send-interval – в Winbox он отображается как Send Interval, данный параметр отвечает за интервал опроса интерфейса. По-умолчанию, здесь указано 5 сек, т.е. RouterOS будет проверять интерфейс каждые 5 секунд.
  • loop-protect-disable-time – он же Disable Time в Winbox. Данный параметр отвечает за время, на которое отключается сетевой интерфейс. По-умолчанию – 5 минут.
  • loop-protect-status – в Winbox отображается как Status. Может принимать 3 значения: on (LP включен), off (LP выключен) и disable (LP включен, обнаружена петля).

Казалось бы, реализовать цикличность и отключить интерфейс на 5 минут – хорошая идея. Если бы не одно большое но…

Дело в том, что при повторном включении сетевого интерфейса, повторно образуется петля, а все сетевые интерфейсы в локальной сети станут недоступными. Система обнаружит петлю и повторно отключит интерфейс на 5 минут.

В таблице интерфейсов над отключенным интерфейсом будет отображен комментарий красного цвета, с помощью которого можно определить с какого порта пришел loop-пакет и, соответственно, определить объединенные порты.

Если посмотреть логи, можно обнаружить, что при этом на несколько секунд «падают» все сетевые интерфейсы. Для соединений между маршрутизатором и коммутатором это не критично, а вот конечные клиенты должны повторно переподключиться к маршрутизатору и получить IP (для сетей с DHCP).

На стороне конечных клиентов это будет выглядеть так

Т.е. каждые 5 минут будет обрываться соединение. Чтобы этого избежать, на интерфейсах можно установить параметр loop-protect-disable-time=0, что приведет к полному отключению интерфейса, система не будет в дальнейшем пытаться активировать его самостоятельно и проверять на наличие петли.

Пока не ясно, будет ли Mikrotik дорабатывать этот функционал, к примеру, выводить (изолировать) порт в отдельный бридж или vlan, чтобы другие сетевые интерфейсы не падали при повторной активации порта.

Где может быть полезен Loop Protect? В первую очередь в больших сетях с большим количеством соединений. Никто не застрахован он подобных случаев, Loop Protection позволяет существенно сэкономить время и нервы, которые уйдут на поиск неисправности.


Хотите научиться работать с MikroTik? В этом поможет видеокурс "Настройка оборудования MikroTik". Посмотрите 25 уроков из этого курса бесплатно.


Задавайте вопросы

+7 499 653-76-01
ежедневно, c 10:00 до 20:00 по мск

Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.

Группа в телеграм

MikroTik / IT-чат