Оригинал: Хабр

FHRP (First Hop Redundancy Protocol) — семейство протоколов, предназначенных для создания избыточности шлюза по умолчанию. Общей идеей для данных протоколов является объединение нескольких физических маршрутизаторов в один виртуальный, который и выступает шлюзом для конечных устройств.

Представьте себе следующую сеть:

Схема сети

Она состоит из:

  • 2 маршрутизатора с выходом в интернет, объединённых в VRRP-кластер;
  • коммутатора, объединяющего устройства в сегмент;
  • компьютера, использующего виртуальный IP как шлюз по умолчанию.

Такая конфигурация позволит в случае отказа основного маршрутизатора (R1) практически незаметно для пользователя переключиться на резервный (R2).

Как это выглядит на практике#

Для примера возьмём два MikroTik, коммутатор и один ПК.

Пусть у нас будет следующая адресация:

УстройствоIP
R1 (Master)192.168.1.2/24
R2 (Backup)192.168.1.3/24
VRID 33192.168.1.1/24
ПК192.168.1.100/24

Настроим VRRP на первом маршрутизаторе:

/ip address
add address=192.168.1.2/24 interface=ether2
/vrrp
add interface=ether2 vrid=33 priority=255
/ip address
add address=192.168.1.1/24 interface=vrrp33

Затем на втором:

/ip address
add address=192.168.1.3/24 interface=ether2
/vrrp
add interface=ether2 vrid=33 priority=100
/ip address
add address=192.168.1.1/24 interface=vrrp33

Для ПК шлюзом по умолчанию укажем 192.168.1.1.

В VRRP маршрутизатор с наибольшим приоритетом становится Master, второй — Backup. Master отвечает на ARP-запросы виртуального IP и перенаправляет трафик; Backup следит за состоянием Master и принимает роль Master при отказе (приоритет 255 — маршрутизатор является адресуемым владельцем виртуального IP).

Проверка отказа#

Посмотрим таблицу ARP до отказа:

ARP до отказа

Отключим R1 и повторим проверку:

ARP после отказа

Как видно, MAC-адрес шлюза сменился с R1 на R2 — переключение произошло автоматически, ПК продолжил работу без изменения настроек.

Как работает выбор Master#

Маршрутизаторы в одном VRID обмениваются анонсами VRRP (multicast 224.0.0.18, IP-протокол 112). Master рассылает их с интервалом Advertisement Interval (по умолчанию 1 секунда). Если Backup не получает анонсы в течение Master Down Interval (3 × Advertisement Interval + Skew Time), он считает Master отказавшим и prendет роль Master. Маршрутизатор с приоритетом 255 (владелец IP) всегда перехватывает роль Master, когда доступен.

Для подсчёта Skew Time используется формула: (256 − приоритет) / 256. Чем выше приоритет, тем меньше Skew Time — то есть маршрутизаторы с более высоким приоритетом быстрее prendут роль Master.

Порядок обработки пакетов#

Входящий в кластер пакет проходит следующий путь:

  1. Пакет приходит на виртуальный MAC-адрес.
  2. Аппаратное обеспечение маршрутизатора принимает пакет.
  3. Пакет проверяется: если пакет предназначен Master-маршрутизатору, он обрабатывается им; если текущий маршрутизатор — Backup, а пакет не является VRRP-пакетом, он отбрасывается (кроме случаев preemption-сценариев).

Практические советы#

  • Настраивайте preempt, чтобы маршрутизатор с большим приоритетом возвращал себе роль Master после восстановления.
  • Используйте аутентификацию (в классическом VRRP — простую текстовую, что не даёт защиты от подмены; для безопасности полагайтесь на изоляцию сегмента управления).
  • Мониторьте состояние VRRP: резкие смены Master/Backup могут указывать на проблемы с линками.

Заключение#

VRRP позволяет создать отказоустойчивый шлюз без изменения конфигурации конечных устройств. За счём простоты (один виртуальный IP, один виртуальный MAC и выборы по приоритету) он широко поддерживается производителями и подходит для большинства задач резервирования шлюза по умолчанию.