VRRP
VRRP (Virtual Router Redundancy Protocol) — сетевой протокол, предназначенный для увеличения доступности маршрутизаторов, выполняющих роль шлюза по умолчанию. Это достигается путём объединения группы маршрутизаторов в один виртуальный маршрутизатор и назначения им общего IP-адреса, который и будет использоваться как шлюз по умолчанию для компьютеров в сети.
VRRP | |
---|---|
Название | Virtual Router Redundancy Protocol |
Назначение протокола | увеличение доступности маршрутизаторов, выполняющих роль шлюза по умолчанию |
Спецификация | RFC 5798 (2010) |
Терминология протокола
- 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. Это можно реализовать с помощью опции 82 DHCP. Идея заключается в том чтобы выдавать компьютерам, которые подключены к разным коммутаторам, разные значения 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 — используемый тип аутентификации:
- Должен быть уникальным для виртуального маршрутизатора,
- Пакет, тип аутентификации которого не совпадает с локально настроенным типом аутентификации, или у которого указан неизвестный тип аутентификации, должен быть отброшен,
- Определены такие типы аутентификации:
- Advertisement Interval (Adver Int) — интервал (в секундах) между отправкой VRRP-объявлений. По умолчанию равен 1 секунде;
- Checksum — контрольная сумма VRRP-пакета;
- IP Address(es) — один или более IP-адресов, которые ассоциированы с виртуальным маршрутизатором;
- Authentication Data — поле используется для совместимости с RFC 2338. Должно быть установлено равным 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-объявление
- Если значение Preempt режима False или, если приоритет в полученном VRRP-объявлении больше или равен локальному приоритету, то:
- Если приоритет в VRRP-объявлении установлен равным 0, то:
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-объявление
- Если приоритет в полученном VRRP-объявлении больше локального приоритета или если приоритет в полученном VRRP-объявлении равен локальному приоритету и основной IP-адрес отправителя больше локального основного IP-адреса, то:
- Если приоритет в VRRP-объявлении установлен равным 0, то:
См. также
- CARP (свободная и безопасная альтернатива протоколу VRRP)