VRRP
(Virtual Router Redundancy Protocol) — сетевой протокол, предназначенный для увеличения доступности маршрутизаторов, выполняющих роль
шлюза по умолчанию
. Это достигается путём объединения группы маршрутизаторов в один
виртуальный маршрутизатор
и назначения им общего
IP-адреса
, который и будет использоваться как шлюз по умолчанию для компьютеров в сети.
Терминология протокола
-
VRRP-маршрутизатор (VRRP Router)
— физический маршрутизатор, на котором работает протокол VRRP. Он может участвовать в одном или более виртуальных маршрутизаторах.
-
Виртуальный маршрутизатор (Virtual Router, VR)
— абстрактный объект, которым управляет VRRP. Выполняет роль «маршрутизатора по умолчанию» для компьютеров в сети. Фактически, виртуальный маршрутизатор — это группа интерфейсов маршрутизаторов, которые находятся в одной сети и разделяют Virtual Router Identifier (VRID) и виртуальный IP-адрес.
-
Владелец IP-адреса (IP Address Owner)
— VRRP-маршрутизатор, который использует IP-адрес, назначенный виртуальному маршрутизатору, как реальный IP-адрес присвоенный интерфейсу.
-
VRRP-объявление (ADVERTISEMENT)
— сообщения, которые отправляет Master-маршрутизатор.
-
Виртуальный IP-адрес (Virtual IP address)
— это IP-адрес, присвоенный интерфейсу одного из маршрутизаторов, которые составляют Virtual Router. Используется также название —
основной IP-адрес (Primary IP Address)
. В VRRP-объявлениях в качестве адреса отправителя всегда используется виртуальный IP-адрес.
-
Virtual Router Master или VRRP Master router
— VRRP-маршрутизатор, который отвечает за отправку пакетов, отправленных на IP-адрес, который ассоциирован с виртуальным маршрутизатором, и за ответы на ARP-запросы, отправленные на этот адрес. Если владелец IP-адреса доступен, то он всегда становится Master.
-
Virtual Router Backup или VRRP Backup router
— это группа маршрутизаторов, которые находятся в режиме ожидания и готовы взять на себя роль VRRP Master router, как только текущий VRRP Master router станет недоступным.
-
Виртуальный MAC-адрес (Virtual MAC)
— 0000.5E00.01xx, где xx — номер группы VRRP.
Описание протокола
Протокол VRRP предназначен для увеличения доступности маршрутизаторов выполняющих роль шлюза по умолчанию.
Для группы маршрутизаторов настраивается их принадлежность
виртуальному маршрутизатору
. Фактически, виртуальный маршрутизатор — это группа интерфейсов маршрутизаторов, которые находятся в одной сети и разделяют
Virtual Router Identifier (VRID)
и
виртуальный IP-адрес
.
VRRP-маршрутизатор может находиться в нескольких виртуальных маршрутизаторах, каждый с уникальной комбинацией VRID/IP-адрес. Соответствия между VRID и виртуальным IP-адресом должны быть одинаковыми на всех маршрутизаторах в одной сети.
В любой момент времени только один из физических маршрутизаторов выполняет маршрутизацию трафика, то есть становится
VRRP Master router
, остальные маршрутизаторы в группе становятся
VRRP Backup router
. Если текущий VRRP Master router становится недоступным, то его роль берет на себя один из VRRP Backup маршрутизаторов, тот у которого наивысший приоритет. Задание приоритета позволяет определить более приоритетные пути административно.
Backup-маршрутизатор не будет пытаться перехватить на себя роль Master-маршрутизатора, если только у него не более высокий приоритет, чем у текущего Master-маршрутизатора. VRRP позволяет административно запретить перехват роли Master-маршрутизатора. Единственное исключение из этого правила — VRRP-маршрутизатор всегда будет становиться Master, если он владелец IP-адреса, который присвоен виртуальному маршрутизатору.
В каждом виртуальном маршрутизаторе только Master отправляет периодические VRRP-объявления на зарезервированный
групповой адрес
224.0.0.18. На канальном уровне в качестве MAC-адреса отправителя VRRP-объявлений используется виртуальный MAC-адрес.
Примеры использования
Первый пример
приведен для понимания принципов работы протокола. Как правило, такая схема не используется в реальных сетях.
Два маршрутизатора, R1 и R2, находятся в одном широковещательном сегменте и на интерфейсах, которые смотрят в локальную сеть, назначены IP-адреса, соответственно 10.0.1.1 и 10.0.1.2. Компьютеры в сети используют в качестве шлюза по умолчанию R1.
Должен быть определён виртуальный маршрутизатор, который поставит в соответствие уникальному идентификатору (VRID) IP-адрес, для которого один из маршрутизаторов является владельцем. R1 владелец IP-адреса 10.0.1.1, а R2 владелец IP-адреса 10.0.1.2. Для примера определён виртуальный маршрутизатор, для которого VRID = 1, а IP-адрес 10.0.1.1. После включения VRRP на маршрутизаторе R1 для VRID = 1, он берет на себя роль Master. Для него приоритет устанавливается равным 255, так как он является владельцем IP-адреса виртуального маршрутизатора. После включения VRRP на маршрутизаторе R2 для VRID = 1, он становится Backup-маршрутизатором. Для него приоритет устанавливается равным 100, так как он не является владельцем IP-адреса виртуального маршрутизатора.
При таких настройках, если маршрутизатор R1 доступен, все компьютеры передают трафик через R1. Если R1 по каким-либо причинам выходит из строя, то VRRP переводит R2 в роль Master. После этого R2 отвечает за передачу трафика, который отправлен на IP-адрес виртуального маршрутизатора.
В первом примере IP-адрес не резервируется и используется только R2, как IP-адрес интерфейса. Следующий пример показывает как выполнить резервирование и IP-адреса R2.
Второй пример
показывает схему, которая использовалась и в первом примере, но теперь маршрутизаторы используют два виртуальных маршрутизатора и оба маршрутизатора передают трафик. Такая схема более предпочтительна, чем предыдущая, для использования в реальных сетях.
Половина компьютеров использует в качестве шлюза по умолчанию R1, вторая половина — R2. Настройки виртуального маршрутизатора с VRID = 1 остаются точно такими же как в первом примере. Добавляется второй виртуальный маршрутизатор с VRID = 2 и IP-адресом 10.0.1.2. Для этого виртуального маршрутизатора R2 будет выполнять роль Master, а R1 — Backup.
В примере используется не только резервирование маршрутизатора по умолчанию, но и балансировка нагрузки между двумя маршрутизаторами.
Хотя в обоих примерах использовались только два маршрутизатора, маршрутизаторов может быть и больше. Тогда будет один Master и несколько Backup и, при выходе из строя Master-маршрутизатора, приоритет присвоенный Backup-маршрутизаторам будет определять кто из них будет новым Master (если приоритет больше, то маршрутизатор становится Master). Если у маршрутизаторов одинаковые значения приоритетов, то сравниваются их IP-адреса — тот у кого больше IP-адрес, будет Master.
Как правило, IP-адреса компьютерам назначаются с помощью протокола
DHCP
. Во втором примере DHCP-сервер должен выдавать половине компьютеров в подсети IP-адрес маршрутизатора по умолчанию 10.0.1.1, а другой половине компьютеров — 10.0.1.2. Это можно реализовать с помощью . Идея заключается в том чтобы выдавать компьютерам, которые подключены к разным коммутаторам, разные значения IP-адреса шлюза по умолчанию.
Формат пакета VRRP
VRRP-пакеты передаются для того, чтобы передать всем VRRP-маршрутизаторам информацию о состоянии и приоритете Master-маршрутизатора, который ассоциирован с VRID.
VRRP-пакеты инкапсулируются в IP-пакеты и отправляются на адрес групповой рассылки, который зарезервирован для VRRP.
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Version| Type | Virtual Rtr ID| Priority | Count IP Addrs| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Auth Type | Adver Int | Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | IP Address (1) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | . | | . | | . | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | IP Address (n) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Authentication Data (1) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Authentication Data (2) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Поля пакета:
-
Version — версия протокола. Текущая версия — 2.
-
Type — тип VRRP-пакета:
-
Пакеты с неизвестным типом пакета должны отбрасываться,
-
Единственный тип пакета, который определён в текущей версии протокола: 1 — ADVERTISEMENT,
-
Virtual Rtr ID (VRID) — идентифицирует виртуальный маршрутизатор, о статусе которого передается информация:
-
Диапазон значений от 1 до 255,
-
Priority — указывает приоритет VRRP-маршрутизатора, который отправляет пакет. Чем выше значение поля, тем более высокий приоритет:
-
Приоритет маршрутизатора, который является владельцем IP-адреса (или адресов) должен быть равен 255,
-
У остальных маршрутизаторов значение приоритета должно быть в диапазоне от 1 до 254. По умолчанию используется приоритет 100,
-
Значение приоритета равное 0 имеет специальное назначение — указывает, что текущий Master перестал участвовать в работе VRRP. Это используется для того чтобы быстрее перевести Backup-маршрутизаторы в роль Master, не дожидаясь окончания таймера,
-
Count IP Addrs — количество IP-адресов, которые содержатся в данном VRRP-объявлении
-
Authentication Type — используемый тип аутентификации:
-
Должен быть уникальным для виртуального маршрутизатора,
-
Пакет, тип аутентификации которого не совпадает с локально настроенным типом аутентификации, или у которого указан неизвестный тип аутентификации, должен быть отброшен,
-
Определены такие типы аутентификации:
-
0 — No Authentication — аутентификация не используется. В поле Authentication Data передаются 0,
-
1 — Reserved — зарезервированное значение, которое используется для совместимости с ,
-
2 — Reserved — зарезервированное значение, которое используется для совместимости с ,
-
Advertisement Interval (Adver Int) — интервал (в секундах) между отправкой VRRP-объявлений. По умолчанию равен 1 секунде;
-
Checksum — контрольная сумма VRRP-пакета;
-
IP Address(es) — один или более IP-адресов, которые ассоциированы с виртуальным маршрутизатором;
-
Authentication Data — поле используется для совместимости с . Должно быть установлено равным 0 и игнорироваться при получении.
Поля IP-пакета
Так как VRRP-пакеты инкапсулируются в IP-пакеты, ниже описаны значения некоторых полей IP-пакета:
-
IP-адрес отправителя — основной IP-адрес интерфейса с которого отправляется пакет;
-
IP-адрес получателя — групповой адрес 224.0.0.18. Так как это адрес из диапазона
link local scope
, то маршрутизаторы не передают пакет с таким адресом получателя, независимо от значения TTL;
-
TTL — устанавливается равным 255. VRRP-маршрутизатор, получивший пакет с другим значением поля TTL, должен отбросить пакет;
-
Протокол — протоколу VRRP присвоен номер 112.
Параметры виртуального маршрутизатора
Параметры виртуального маршрутизатора:
-
Идентификатор виртуального маршрутизатора (VRID)
— настраиваемое значение в диапазоне от 1 до 255. Нет значения по умолчанию
-
Приоритет
— значение приоритета, которое будет использоваться этим VRRP-маршрутизатором в выборах Master для этого виртуального маршрутизатора:
-
Значение 255 зарезервировано для маршрутизатора, который является владельцем IP-адреса ассоциированного с виртуальным маршрутизатором
-
Значение 0 зарезервировано для Master-маршрутизатора, для того чтобы сообщить Backup-маршрутизаторам о сложении с себя ответственности за виртуальный маршрутизатор
-
Диапазон значений 1-254 доступен для Backup-маршрутизаторов. По умолчанию используется приоритет 100
-
IP-адрес
— один или более IP-адресов присвоенные виртуальному маршрутизатору. Нет значения по умолчанию
-
Advertisement_Interval
— временной интервал между отправкой объявлений. По умолчанию 1 секунда
-
Skew Time
— время (в секундах), которое используется для отклонения Master Down Interval.
-
Высчитывается по формуле: ((256 — Priority) / 256)
-
Master Down Interval
— временной интервал после которого Backup Router станет Master Router.
-
Высчитывается по формуле: (3 * Advertisement Interval) + Skew time
-
Режим preempt
— контролирует то, будет ли Backup-маршрутизатор с более высоким приоритетом пытаться перехватить на себя роль Master у текущего Master-маршрутизатора с более низким приоритетом.
-
Исключение из этого правила — VRRP-маршрутизатор всегда будет становиться Master, если он владелец IP-адреса, который присвоен виртуальному маршрутизатору независимо от этого флага.
-
Возможные значения режима preempt:
-
True (значение по умолчанию) — разрешить перехватывать роль Master
-
False — запретить перехватывать роль Master
-
Тип аутентификации
-
Данные аутентификации
Таймеры VRRP
-
Adver Timer — таймер, который срабатывает для инициации отправки VRRP-объявлений на основании Advertisement Interval
-
Master Down Timer — таймер, который срабатывает когда VRRP-объявление не приходило в течение Master Down Interval
Описание состояний маршрутизаторов
Возможные состояния:
-
Initialize
(инициализации)
-
Backup
(резервный)
-
Master
(основной)
Диаграмма перехода между состояниями:
Initialize
Цель состояния
Initialize
— ожидание начала работы (Startup event).
Если VRRP включен на маршрутизаторе, то:
-
Если приоритет равен 255 (маршрутизатор является владельцем IP-адреса присвоенного виртуальному маршрутизатору):
-
Послать VRRP-объявление
-
Отправить gratuitous
ARP
-запрос содержащий MAC-адрес виртуального маршрутизатора для каждого IP-адреса ассоциированного с виртуальным маршрутизатором
-
Установить Adver Timer равным Advertisement Interval
-
Перейти в состояние
Master
-
иначе:
-
Установить Master Down Timer равным Master Down Interval
-
Перейти в состояние
Backup
Backup
Цель состояния
Backup
— мониторинг доступности и состояния Master-маршрутизатора.
Когда VRRP-маршрутизатор находится в этом состоянии он должен делать следующее:
-
Не должен отвечать на ARP-запросы на IP-адрес ассоциированный с виртуальным маршрутизатором
-
Должен отбрасывать пакеты с MAC-адресом получателя равным MAC-адресу виртуального маршрутизатора
-
Не должен принимать пакеты отправленные на IP-адрес ассоциированный с виртуальным маршрутизатором
-
Если на маршрутизаторе отключается VRRP (Shutdown event), то:
-
Отменить Master Down Timer
-
Перейти в состояние
Initialize
-
Если срабатывает таймер Master Down Timer, то:
-
Послать VRRP-объявление
-
Отправить gratuitous ARP-запрос содержащий MAC-адрес виртуального маршрутизатора для каждого IP-адреса ассоциированного с виртуальным маршрутизатором
-
Установить Adver Timer равным Advertisement Interval
-
Перейти в состояние
Master
-
Если получено VRRP-объявление, то:
-
Если приоритет в VRRP-объявлении установлен равным 0, то:
-
Установить Master Down Timer равным Skew Time
-
иначе:
-
Если значение Preempt режима
False
или, если приоритет в полученном VRRP-объявлении больше или равен локальному приоритету, то:
-
Сбросить Master Down Timer в значение равное Master Down Interval
-
иначе:
-
Отбросить VRRP-объявление
Master
В состоянии
Master
маршрутизатор отвечает за отправку пакетов отправленных на IP-адрес ассоциированный с виртуальным маршрутизатором.
Когда VRRP-маршрутизатор находится в этом состоянии он должен делать следующее:
-
Должен отвечать на ARP-запросы на IP-адрес ассоциированный с виртуальным маршрутизатором
-
Должен обрабатывать пакеты с MAC-адресом получателя равным MAC-адресу виртуального маршрутизатора
-
Не должен принимать пакеты отправленные на IP-адрес ассоциированный с виртуальным маршрутизатором, если он не является владельцем IP-адреса
-
Должен принимать пакеты отправленные на IP-адрес ассоциированный с виртуальным маршрутизатором, если он является владельцем IP-адреса
-
Если на маршрутизаторе отключается VRRP (Shutdown event), то:
-
Отменить Adver Timer
-
Отправить VRRP-объявление с приоритетом равным 0
-
Перейти в состояние
Initialize
-
Если срабатывает Adver Timer, то
-
Послать VRRP-объявление
-
Сбросить Adver Timer в значение равное Advertisement Interval
-
Если получено VRRP-объявление, то:
-
Если приоритет в VRRP-объявлении установлен равным 0, то:
-
Послать VRRP-объявление
-
Сбросить Adver Timer в значение равное Advertisement Interval
-
иначе:
-
Если приоритет в полученном VRRP-объявлении больше локального приоритета или если приоритет в полученном VRRP-объявлении равен локальному приоритету и основной IP-адрес отправителя больше локального основного IP-адреса, то:
-
Отменить Adver Timer
-
Установить Master Down Timer равным Master Down Interval
-
Перейти в состояние
Backup
-
иначе:
-
Отбросить VRRP-объявление
См. также
-
CARP
(свободная и безопасная альтернатива протоколу VRRP)
Ссылки