Виртуальная маршрутизация и пересылка (VRF)
Введение
VRF (Virtual Routing and Forwarding) — изоляция сетей на уровне маршрутизации: каждый набор интерфейсов получает собственную таблицу маршрутизации. Трафик разных VRF не видит друг друга, даже если их адреса пересекаются.
В системе 5А VRF описывается как единый профиль на весь кластер балансировки: администратор задаёт сети и то, через какие интерфейсы они подключены, а система разворачивает одинаковую картину на всех агентах кластера — создаёт устройства, выдаёт адреса, укладывает маршруты и настраивает BGP.
Так разделяют сетевые контуры — внешний, внутренний, тестовый, — разводят сети с пересекающимися адресами и обслуживают на одном кластере несколько независимых потребителей.
VRF-профили доступны в SLB- и в GSLB-кластерах. К VRF привязываются конфигурации балансировки, клиентские серверы и группы серверов, SNAT-группы и отказоустойчивость GSLB.
Как устроен VRF-профиль
Профиль состоит из трёх уровней:
- VRF — имя и таблица маршрутизации. Одно устройство с этим именем появляется на каждом агенте, где есть хотя бы один узел профиля.
- Сегмент подключения — сеть и способ, которым она заходит в VRF: интерфейс плюс VLAN либо интерфейс целиком. Сегментов может быть несколько.
- Узел — конкретный агент в сегменте и его адрес в этой сети.
Адреса узлов система выдаёт сама из сети сегмента: перечислять агентов и раздавать им адреса вручную не требуется.
Не путайте VRF-профиль с интерфейсом типа vrf на вкладке Сеть → <сетевой агент> → Интерфейсы (описание). Там описывается VRF, настроенный на одной машине вручную; здесь — профиль, который система разворачивает и поддерживает на всех агентах кластера. Один интерфейс не может участвовать в обоих способах одновременно.
Создание VRF-профиля
- Откройте раздел Главная → Кластеры балансировки.
- Перейдите в кластер (SLB или GSLB), в котором требуется создать VRF.
- В боковом меню выберите раздел VRF.
- На вкладке VRF нажмите Создать VRF.
- Заполните форму Создание VRF. Поля, отмеченные
, обязательны. - Нажмите Сохранить.
Основные настройки
- Имя — название профиля, уникальное в пределах кластера. Становится именем сетевого устройства на агентах, поэтому ограничено 13 символами; допустимы латинские буквы, цифры и символы
_-.@. Именаdefaultиvrf-dataзарезервированы системой. - Описание — произвольный текстовый комментарий.
Таблица маршрутизации назначается системой при создании профиля и в форме не заполняется. Её номер показывается под полем Имя при редактировании. Изменить номер нельзя: чтобы получить другой, профиль удаляют и создают заново.
В подразделе Дополнительно:
- Наблюдение за изоляцией — учёт трафика, который не соответствует настройкам VRF:
- Выключено — учёт не ведётся;
- Считать трафик за пределами VRF — на агентах включаются счётчики пакетов, не покрытых ожидаемым обменом VRF.
Наблюдение только считает трафик и не блокирует его: блокировка на пакетном уровне в текущей версии не поддерживается.
Счётчики видны на агенте командой nft list table inet a5-crossvrf — последними правилами в цепочках crossvrf_in и crossvrf_out.
Показания вдвое больше числа пакетов: под VRF пакет проходит фильтр дважды — сначала с интерфейсом, через который пришёл, затем с устройством VRF.
Сегменты подключения
Сегмент описывает одну сеть и то, как она заходит в VRF. Для добавления нажмите Добавить сегмент.
- Интерфейс — откуда берётся имя родительского интерфейса:
- Тип подключения — как трафик сегмента отделяется от прочего трафика интерфейса:
- 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.
Идентификатор маршрутизатора и адрес источника сессии система подставляет сама, у каждого агента свои: источником становится адрес агента в этом 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 политики.
- Откройте раздел Главная → Кластеры балансировки и перейдите в нужный кластер.
- В боковом меню выберите раздел VRF, затем вкладку Cross-VRF политики.
- Нажмите Создать политику.
- Заполните форму и нажмите Сохранить.
- Из 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. Устройства, адреса и маршруты агент создаёт сам.
Дополнительные материалы
- Сценарии настройки VRF — типовые задачи целиком, от пустого кластера до проверки трафиком.
- Добавление интерфейса — интерфейсы сетевого агента, включая VRF, настроенный вручную.
- SNAT-группы — подмена адреса источника, в том числе в VRF.
- VRRP — отказоустойчивость VIP.