Виртуальная маршрутизация (VRF)

Виртуальная маршрутизация и пересылка (VRF)

Введение

VRF (Virtual Routing and Forwarding) — изоляция сетей на уровне маршрутизации: каждый набор интерфейсов получает собственную таблицу маршрутизации. Трафик разных VRF не видит друг друга, даже если их адреса пересекаются.

В системе 5А VRF описывается как единый профиль на весь кластер балансировки: администратор задаёт сети и то, через какие интерфейсы они подключены, а система разворачивает одинаковую картину на всех агентах кластера — создаёт устройства, выдаёт адреса, укладывает маршруты и настраивает BGP.

Так разделяют сетевые контуры — внешний, внутренний, тестовый, — разводят сети с пересекающимися адресами и обслуживают на одном кластере несколько независимых потребителей.

VRF-профили доступны в SLB- и в GSLB-кластерах. К VRF привязываются конфигурации балансировки, клиентские серверы и группы серверов, SNAT-группы и отказоустойчивость GSLB.

Как устроен VRF-профиль

Профиль состоит из трёх уровней:

  • VRF — имя и таблица маршрутизации. Одно устройство с этим именем появляется на каждом агенте, где есть хотя бы один узел профиля.
  • Сегмент подключения — сеть и способ, которым она заходит в VRF: интерфейс плюс VLAN либо интерфейс целиком. Сегментов может быть несколько.
  • Узел — конкретный агент в сегменте и его адрес в этой сети.

Адреса узлов система выдаёт сама из сети сегмента: перечислять агентов и раздавать им адреса вручную не требуется.

ℹ️

Не путайте VRF-профиль с интерфейсом типа vrf на вкладке Сеть → <сетевой агент> → Интерфейсы (описание). Там описывается VRF, настроенный на одной машине вручную; здесь — профиль, который система разворачивает и поддерживает на всех агентах кластера. Один интерфейс не может участвовать в обоих способах одновременно.

Создание VRF-профиля

  1. Откройте раздел Главная → Кластеры балансировки.
  2. Перейдите в кластер (SLB или GSLB), в котором требуется создать VRF.
  3. В боковом меню выберите раздел VRF.
  4. На вкладке VRF нажмите Создать VRF.
  5. Заполните форму Создание VRF. Поля, отмеченные звёздочкой, обязательны.
  6. Нажмите Сохранить.

Основные настройки

  • Имя — название профиля, уникальное в пределах кластера. Становится именем сетевого устройства на агентах, поэтому ограничено 13 символами; допустимы латинские буквы, цифры и символы _-.@. Имена default и vrf-data зарезервированы системой.
  • Описание — произвольный текстовый комментарий.

Таблица маршрутизации назначается системой при создании профиля и в форме не заполняется. Её номер показывается под полем Имя при редактировании. Изменить номер нельзя: чтобы получить другой, профиль удаляют и создают заново.

В подразделе Дополнительно:

  • Наблюдение за изоляцией — учёт трафика, который не соответствует настройкам VRF:
    • Выключено — учёт не ведётся;
    • Считать трафик за пределами VRF — на агентах включаются счётчики пакетов, не покрытых ожидаемым обменом VRF.
⚠️

Наблюдение только считает трафик и не блокирует его: блокировка на пакетном уровне в текущей версии не поддерживается.

Счётчики видны на агенте командой nft list table inet a5-crossvrf — последними правилами в цепочках crossvrf_in и crossvrf_out.

Показания вдвое больше числа пакетов: под VRF пакет проходит фильтр дважды — сначала с интерфейсом, через который пришёл, затем с устройством VRF.

Сегменты подключения

Сегмент описывает одну сеть и то, как она заходит в VRF. Для добавления нажмите Добавить сегмент.

  • Интерфейс — откуда берётся имя родительского интерфейса:
    • Data-интерфейс агента — каждый агент берёт интерфейс рабочего трафика из собственной регистрации. Подходит, когда на машинах разные имена интерфейсов;
    • Указать имя — одно имя интерфейса на всех агентов сегмента. Вводится в поле Интерфейс; у отдельного узла его можно переопределить.
  • Тип подключения — как трафик сегмента отделяется от прочего трафика интерфейса:
    • VLAN — по тегу; требуется указать VLAN ID;
    • Без тега (весь интерфейс) — интерфейс целиком отдаётся этому VRF.
  • VLAN ID — идентификатор VLAN от 1 до 4094. Одна и та же пара интерфейса и VLAN не может принадлежать двум VRF.
  • Сеть, IPv4 и Сеть, IPv6 — сети сегмента в формате CIDR, например 10.88.0.0/24. Из них система выдаёт адреса агентам. У сегмента должна быть задана хотя бы одна сеть.
  • Плавающий шлюз, IPv4 и Плавающий шлюз, IPv6 — адрес, который система поднимает на одном из агентов сегмента и переносит на другой при его отказе. Служит шлюзом по умолчанию для устройств этой сети. Должен лежать в сети сегмента и не совпадать с адресом узла.
  • Диапазон выдачи, IPv4 и Диапазон выдачи, IPv6 — часть сети, из которой выдаются адреса, в формате начало-конец, например 10.88.0.100-10.88.0.200. Пусто — вся сеть, кроме адреса сети, широковещательного адреса и плавающего шлюза.

Сегмент удаляется нажатием на значок корзины справа от его заголовка.

Узлы — агенты, на которых разворачивается сегмент, и их адреса в нём.

Для VLAN-сегмента с заданной сетью список ведёт система: все агенты кластера уже в нём, новые добавляются сами. Кнопка Убрать исключает агента из сегмента, Вернуть — возвращает его с прежним адресом.

Сегмент типа «Без тега» занимает интерфейс целиком, поэтому агентов в нём перечисляют вручную кнопкой Добавить узел.

Поля узла:

  • Агент — сетевой агент кластера.
  • Интерфейс — переопределение родительского интерфейса для этого агента. Пусто — используется интерфейс сегмента.
  • IPv4 и IPv6 — адрес агента в сети сегмента, без маски: маску задаёт сеть. Пустое поле означает «выдать автоматически», выданный адрес показывается под полем. Чтобы вернуть выдачу системе, очистите поле.
  • Основной — какой адрес считается адресом агента в этом VRF. От него ведутся проверки доступности, он подставляется источником BGP-сессий и адресом VRRP. Флажок появляется, только когда агент присутствует в нескольких сегментах профиля, то есть когда есть из чего выбирать; допустим один основной адрес на агента и семейство адресов.
⚠️

Сегмент «Без тега» без узлов не создаёт ни устройств, ни адресов — профиль сохранится, но на агентах ничего не появится.

Статические маршруты

Маршруты укладываются в таблицу маршрутизации этого VRF на всех его агентах. Для добавления нажмите Добавить маршрут.

  • Назначение (CIDR) — сеть назначения, например 192.168.8.0/24.
  • Шлюз (IP) — адрес следующего узла, например 192.168.8.1.
  • Метрика — приоритет маршрута, меньшее значение выше. По умолчанию 0.
  • Описание — произвольный текстовый комментарий.

Пара «назначение и метрика» в пределах профиля уникальна. Маршрут удаляется нажатием на значок корзины справа от строки.

BGP в VRF

Переключатель BGP включает BGP-сессии в контексте этого VRF.

  • ASN — номер автономной системы, от имени которой агенты устанавливают сессии в этом VRF.

Идентификатор маршрутизатора и адрес источника сессии система подставляет сама, у каждого агента свои: источником становится адрес агента в этом VRF. Отдельных полей для них нет.

Соседи (BGP пиры) добавляются кнопкой Добавить соседа.

  • IP — адрес соседа.
  • ASN — номер автономной системы соседа.
  • Разрешённые префиксы (CIDR) — сети, которые разрешено принимать от этого соседа, например 10.10.0.0/24.
  • Сообщества — community, добавляемые к анонсам этому соседу. Формат ASN:значение, например 65010:100; принимаются также no-export, no-advertise и no-export-subconfed.
  • Лимит числа префиксов — сколько маршрутов допустимо принять от соседа. Пусто — без ограничения.
  • Порог предупреждения, % — доля лимита, при достижении которой в журнал пишется предупреждение. От 1 до 100.
  • При превышении — что делать при достижении лимита: Закрыть сессию, Закрыть и поднять заново либо Только предупредить.
  • Перезапуск через, мин — задержка перед повторным поднятием сессии. Показывается для варианта Закрыть и поднять заново.
  • Анонсировать default route — анонсировать соседу маршрут по умолчанию.
  • Анонсировать VIP — разрешить анонс VIP этому соседу.
  • Пароль сессии — пароль аутентификации TCP-MD5. При чтении формы возвращается маской: сохранённое значение в интерфейсе не показывается.
  • TTL security — число прыжков для защиты GTSM. Рекомендуется для EBGP-сессий.
  • eBGP multihop — число прыжков до соседа, находящегося не в одной сети с агентом.
⚠️

Пустой список разрешённых префиксов означает «не принимать ничего». Сессия с соседом установится, но ни один маршрут принят не будет. Чтобы принимать маршруты, перечислите сети явно.

Анонсировать VIP сам по себе ничего не анонсирует. В анонс попадают VIP тех конфигураций балансировки этого VRF, у которых настроена отказоустойчивость по BGP.

TTL security и eBGP multihop взаимоисключены — FRR не принимает их одновременно. Заполнив одно поле, второе оставьте пустым.

Быстрое обнаружение отказа (BFD)

Переключатель Быстрое обнаружение отказа (BFD) ускоряет обнаружение сбоя канала до соседей этой карточки: отказ замечается за доли секунды вместо таймеров BGP.

  • Множитель обнаружения — число подряд пропущенных пакетов, после которого сессия считается разорванной. От 1 до 255.
  • Интервал приёма, мс — минимальный интервал, с которым агент готов принимать пакеты BFD. От 15 до 60 000.
  • Интервал передачи, мс — интервал, с которым агент отправляет пакеты BFD. От 15 до 60 000.

Cross-VRF политики

Трафик между VRF по умолчанию запрещён. Разрешение описывается политикой на вкладке Cross-VRF политики.

  1. Откройте раздел Главная → Кластеры балансировки и перейдите в нужный кластер.
  2. В боковом меню выберите раздел VRF, затем вкладку Cross-VRF политики.
  3. Нажмите Создать политику.
  4. Заполните форму и нажмите Сохранить.
  • Из VRF — откуда разрешается трафик.
  • В VRF — куда разрешается трафик.
  • Режим политики:
    • Через балансировщик (bridge) — балансировщик принимает соединение в одном VRF и открывает новое в другом. Маршруты между VRF не добавляются, серверы разных VRF друг друга не видят. Так связывают VIP конфигурации балансировки с группами серверов в другом VRF;
    • Между VRF (routed) — в таблицы обоих VRF добавляются маршруты к указанным сетям, и трафик идёт напрямую. Доступен только между двумя именованными VRF.

Кроме именованных профилей в качестве конца политики доступна default (global) — глобальная таблица маршрутизации. С ней возможен только режим Через балансировщик.

Для режима Между VRF дополнительно заполняются:

  • Сети назначения — сети в целевом VRF, до которых разрешается трафик, в формате CIDR.
  • Сети источников — сети, из которых разрешается трафик, в формате CIDR.
  • Транслировать адреса источников (NAT-masquerade) — подменять адрес источника адресом балансировщика в целевом VRF. Нужно, когда в целевом VRF нет обратного маршрута к сетям источника.
ℹ️

Политика действует в одну сторону. Для встречного трафика создайте вторую политику с обратными Из VRF и В VRF.

Маршрут по умолчанию (0.0.0.0/0) в поле Сети назначения допустим только вместе с трансляцией адресов источников — так настраивается выход изолированной сети наружу через общий VRF.

Какие сочетания требуют политики

VRF конфигурации балансировки и VRF её группы серверов могут различаться. Система проверяет это при сохранении конфигурации и отказывает, если разрешения нет.

VRF конфигурации балансировкиVRF группы серверовЧто требуется
один и тот жеодин и тот женичего
default (global)именованныйполитика default (global) → этот VRF, режим Через балансировщик
именованныйdefault (global)политика этот VRF → default (global), тот же режим
один именованныйдругой именованныйполитика «откуда» → «куда»; доступны оба режима

Порядок настройки для каждого случая — в сценарии Серверы в другом VRF.

Управление VRF-профилями

Созданные профили перечислены на вкладке VRF:

  • Имя — название профиля.
  • Сети — сети его сегментов.
  • Агенты — число узлов во всех сегментах.
  • Статус — Работает либо Не доставляется; во втором случае подсказка содержит причину.
  • Обновлён — дата, время и пользователь последнего изменения.

Действия в списке: Создать VRF, редактирование (значок карандаша) и удаление (значок корзины). Cross-VRF политики редактируются и удаляются так же, но пара Из VRF и В VRF при редактировании не меняется — для другой пары создайте новую политику.

Статус Не доставляется означает, что номер таблицы маршрутизации профиля занят другим VRF, созданным раньше. Такой профиль на агенты не передаётся; чтобы это исправить, отвяжите от него зависимые объекты, удалите его и создайте заново.

⚠️

VRF-профиль нельзя удалить, пока на него ссылаются: конфигурации балансировки, группы серверов, клиентские серверы, SNAT-группы, Cross-VRF политики, отказоустойчивость GSLB или ручные маршруты агентов. Система вернёт ошибку со списком того, что держит профиль. Cross-VRF политику также нельзя удалить, пока ею пользуется конфигурация балансировки.

Ограничения и рекомендации

  • Сеть сегмента обязательна: без неё система не может выдавать адреса и профиль не сохранится.
  • Data-интерфейс агента нельзя отдать сегменту целиком. Если рабочий трафик уже идёт через этот интерфейс, заведите на нём VLAN-сегмент.
  • Номер таблицы маршрутизации после создания не меняется.
  • Группа серверов привязывается ровно к одному VRF; серверы с разными VRF в одной группе недопустимы.
  • Имя профиля вместе с именем интерфейса и номером VLAN складывается в имя устройства на агенте, а длина такого имени ограничена. Короткие имена профилей и интерфейсов снимают этот вопрос.
  • Сегмент поверх уже существующего VLAN-интерфейса добавляет второй тег и уменьшает MTU на 4 байта. Убедитесь, что MTU родительского интерфейса это допускает.
  • FRR требуется только для BGP в VRF. Устройства, адреса и маршруты агент создаёт сам.

Дополнительные материалы