VRRP

Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск

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 (обозначен DG на рисунке [но рисунок отсутствует]).

Должен быть определен виртуальный маршрутизатор, который поставит в соответствие уникальному идентификатору (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 — используемый тип аутентификации:
    • Должен быть уникальным для виртуального маршрутизатора,
    • Пакет, тип аутентификации которого не совпадает с локально настроенным типом аутентификации, или у которого указан неизвестный тип аутентификации, должен быть отброшен,
    • Определены такие типы аутентификации:
      • 0 - No Authentication — аутентификация не используется. В поле Authentication Data передаются 0,
      • 1 - Reserved — зарезервированное значение, которое используется для совместимости с RFC 2338,
      • 2 - Reserved — зарезервированное значение, которое используется для совместимости с RFC 2338,
  • 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-маршрутизатора, to indicate it is releasing responsibility for the virtual router
    • Диапазон значений 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)