Mikrotik vrrp медленное переключение

Обсуждение оборудования и его настройки
Senter
Сообщения: 98
Зарегистрирован: 25 ноя 2014, 12:27

Произойдет, если мастер владелец виртуального адреса. Этот параметр нужен для борьбы Slave между собой, имхо.

Ну у меня так и получается, что виртуальный адрес не присвоен кому-либо на интерфейс, так что 2 Slave один из которых несколько главнее.

Могу предположить, что на на свиче поднят STP, который блокирует порт, когда увидит на нем тот же МАС адрес, что и на другом, на входящем фрейме.

В качестве свитча стоил D-Link DES1008(другого под рукой нет, если только еще один RouterBOARD как свитч попробовать).


vviz
Сообщения: 75
Зарегистрирован: 09 окт 2014, 16:46

Senter писал(а):
Произойдет, если мастер владелец виртуального адреса. Этот параметр нужен для борьбы Slave между собой, имхо.

Ну у меня так и получается, что виртуальный адрес не присвоен кому-либо на интерфейс, так что 2 Slave один из которых несколько главнее.

Могу предположить, что на на свиче поднят STP, который блокирует порт, когда увидит на нем тот же МАС адрес, что и на другом, на входящем фрейме.

В качестве свитча стоил D-Link DES1008(другого под рукой нет, если только еще один RouterBOARD как свитч попробовать).


Думается, лучше бы сделать исходя из описания работы и настройки vrrp как такового
https://ru.wikipedia.org/wiki/VRRP
http://wiki.mikrotik.com/wiki/VRRP
а после того как все заведтся уже крутить под себя.

ЗЫ: STP на таком длинке вроде бы нет.


Senter
Сообщения: 98
Зарегистрирован: 25 ноя 2014, 12:27

Пробовал выставлять 10.10.10.1 как основной адрес на master, всеравно ситуация та-же. Может есть какие другие методы "Железного" резервирования Микротиков?


DeLL
Сообщения: 74
Зарегистрирован: 05 июн 2014, 00:24

Метод проверки какой? пинги во внешку?


Senter
Сообщения: 98
Зарегистрирован: 25 ноя 2014, 12:27

Метод проверки какой? пинги во внешку?

Давайте я опишу, что вообще сделать пробовал на основе vrrp:

Задача: резервирования роутера.
Суть такова, есть 2 провайдера и одна внутренняя сеть. Каждый из провайдеров заведен в каждый из микротиков(mac на соответствующих интерфейсах естественно одинаковые). LAN интерфейсы объеденены по vrrp. У Master включены wan порты. На Slave скрипт наблюдает за vrrp, если он становится владельцем виртуального адреса(master помер), то включает у себя wan порты, когда он перестает быть владельцем виртуального адреса wan порты выключаются. На master подобный скрипт, который выключает wan если теряет контроль над виртуальным адресом. Да, в этой схеме есть определенное число недостатков, но другогой не придумал.
Изображение

И в принципе оно работает, только vrrp переключается не совсем мгновенно.


DeLL
Сообщения: 74
Зарегистрирован: 05 июн 2014, 00:24

Я особо не вдавался в подробности работы протокола и что он делает с сессиями и соединениями во время переключения, но VRRP поднимаю и на внешку, благо статика.
Щас еще стенд подниму потестирую...


Senter
Сообщения: 98
Зарегистрирован: 25 ноя 2014, 12:27

VRRP поднимаю и на внешку

У меня на внешке динамика будет, к тому-же провайдерская, не знаю как они отнесутся к такому.

Вообще сейчас(сделал по инструкции с xgu) работает относительно быстро(20 сек маскимальное переключение было)
M1-Master

Код: Выделить всё

/interface vrrp
add interface=br1 name=vrrp-lan priority=254 version=2 vrid=100
/ip address
add address=10.10.10.1/24 interface=br1 network=10.10.10.00
add address=10.10.10.1/32 interface=vrrp-lan network=10.10.10.1


M2-Slave

Код: Выделить всё

/interface vrrp
add interface=br1 name=vrrp-lan priority=250 version=2 vrid=100
/ip address
add address=10.10.10.2/24 interface=br1 network=10.10.10.0
add address=10.10.10.1/32 interface=vrrp-lan network=10.10.10.1


Только в таком режиме на Master vrrp интерфейс всегда в состоянии MR, нужно скрипт другой писать, так что продолжаю тестировать...

UPD:
Скрипты переключалки(включают/выключают wan)
M1-Master(тут использую ping, ибо по другому не получается)

Код: Выделить всё

#:local vrrpif "vrrp-lan"
:local wan1if "eth1-wan1"
:local wan2if "eth2-wan2"

:if ([/ping interval=0.2 count=4 address=10.10.10.2]!=4) do={
   :if (([/interface get $wan1if disabled]=false) or ([/interface get $wan2if disabled]=false)) do={
#      /interface disable $wan1if
      /interface disable $wan2if
   }
} else={
   :if (([/interface get $wan1if disabled]=true) or ([/interface get $wan2if disabled]=true)) do={
#      /interface enable $wan1if
      /interface enable $wan2if
   }
}


M2-Slave(проверяет состояние vrrp интерфейса)

Код: Выделить всё

:local vrrpif "vrrp-lan"
:local wan1if "eth1-wan1"
:local wan2if "eth2-wan2"

:if ([/interface get $vrrpif running]=false) do={
   :if (([/interface get $wan1if disabled]=false) or ([/interface get $wan2if disabled]=false)) do={
#      /interface disable $wan1if
      /interface disable $wan2if
   }
} else={
   :if (([/interface get $wan1if disabled]=true) or ([/interface get $wan2if disabled]=true)) do={
#      /interface enable $wan1if
      /interface enable $wan2if
   }
}


Senter
Сообщения: 98
Зарегистрирован: 25 ноя 2014, 12:27

Продолжая(надуюсь что Завершая) эпопею. Решил отказаться от vrrp и использовать 5 порт(соеденил кабелем, выдал адреса из /30 подсети) для проверки того жива вторая железяка или нет.

M1-master:

Код: Выделить всё

:local wan1if "eth1-wan1"
:local wan2if "eth2-wan2"
:local lanif "eth3-lan"
:local manif "eth5-man"
:local neigh

:if ([/system identity get name]~"slave") do={
   :set neigh 10.10.10.253
} else={
   :set neigh 10.10.10.254
}

:if ([/ping count=4 interval=0.2 interface=$manif address=$neigh]=4) do={
   :if (([/interface get $wan1if disabled]=true) or ([/interface get $wan2if disabled]=true)) do={
      /interface enable $wan1if
      /interface enable $wan2if
      /interface enable $lanif
   }
} else={
   :if (([/interface get $wan1if disabled]=false) or ([/interface get $wan2if disabled]=false)) do={
      /interface disable $wan1if
      /interface disable $wan2if
      /interface disable $lanif
   }
}


M2-Slave:

Код: Выделить всё

:local wan1if "eth1-wan1"
:local wan2if "eth2-wan2"
:local lanif    "eth3-lan"
:local manif "eth5-man"
:local neigh

:if ([/system identity get name]~"slave") do={
   :set neigh 10.10.10.253
} else={
   :set neigh 10.10.10.254
}

:if ([/ping count=4 interval=0.2 interface=$manif address=$neigh]!=4) do={
   :if (([/interface get $wan1if disabled]=true) or ([/interface get $wan2if disabled]=true)) do={
      /interface enable $wan1if
      /interface enable $wan2if
      /interface enable $lanif
   }
} else={
   :if (([/interface get $wan1if disabled]=false) or ([/interface get $wan2if disabled]=false)) do={
      /interface disable $wan1if
      /interface disable $wan2if
      /interface disable $lanif
   }
}


На интерфейсах которые включаются/выключаются назначены одинаковые mac(попарно естественно). Скрипты выполняются каждые 10 секунд(можно 5), в итоге максимальное время переключения 20 секунд. Завтра тестировать с провайдерами осталось. и сделать не таким быдлокодом как сейчас конечно-же....


DeLL
Сообщения: 74
Зарегистрирован: 05 июн 2014, 00:24

Потестил немного работу сабжевого протокола.

Версия 2 при ежесекундной проверке нормально отрабатывает отключение мастера (по питанию). Тестировал сразу с четырьмя VRRP-интерфейсами. Один на внешку (серая сеть прова) и три внутренних.
Во время переключения пропадает всего 1 эхо-ответ (пинг), онлайн-радио замолкает, закачки останавливаются, точнее "зависают". Проверял на Даунлоад Мастере. Можно сделать вывод, что соединения просто сбрасываются.
Быстрое возвращение мастера в строй и перехват на себя всех привилегий, однако, не рвет соединения. ДМ продолжает качать, радио не замолкает и пинги не теряются.
Но замечен глюк: после возвращения мастера в строй и захват полномочий - слейв каждый раз рандомно оставляет один из интерфейсов VRRP в состоянии мастера, при этом на другом маршрутизаторе этот интерфейс тоже в состоянии мастера! Каких-либо закономерностей не обнаружил, досконально проверить работу данных интерфейсов не смог. Вроде бы работает =)
В логе только одна строчка:

Код: Выделить всё

vrrp,warning vrrp-WORK received packet with bad checksum

Настройки на обоих маршрутизаторах такие:
 "Config"
/interface vrrp
add authentication=simple interface=ether5 name=vrrp-GUEST password=2010 \
priority=50 version=2 vrid=100
add authentication=simple interface=ether1 name=vrrp-INTERNET password=2011 \
priority=50 version=2
add authentication=simple interface=ether4 name=vrrp-STAFF password=2010 \
priority=50 version=2 vrid=16
add authentication=simple interface=ether3 name=vrrp-WORK password=2010 \
priority=50 version=2 vrid=10
/ip address
add address=192.168.33.199/24 interface=ether1 network=192.168.33.0
add address=192.168.10.3/24 interface=ether3 network=192.168.10.0
add address=172.16.0.3/24 interface=ether4 network=172.16.0.0
add address=10.0.0.3/24 interface=ether5 network=10.0.0.0
add address=192.168.10.1/32 interface=vrrp-WORK network=192.168.10.1
add address=172.16.0.1/32 interface=vrrp-STAFF network=172.16.0.1
add address=10.0.0.1/32 interface=vrrp-GUEST network=10.0.0.1
add address=192.168.33.253/32 interface=vrrp-INTERNET network=192.168.33.253


PS. Закономерность все-таки обнаружил.
По какой-то причине на мастере один из VRRP-интерфейсов перестает слать свои объявления. Счетчик пакетов Tx - ноль. На другом маршрутизаторе поэтому активируется этот интерфейс тоже в состояние мастера с записью в лог: master down timer


Senter
Сообщения: 98
Зарегистрирован: 25 ноя 2014, 12:27

А чем соеденнены маршрутизаторы между собой, я понимаю что свитч, но какой: управляемый, нет, если управляемый то используете deleteOnTimeout?


Ответить