Теоретические основы и архитектура

Лабораторная работа: реализация сложных топологий L3VPN — Hub-and-Spoke, Extranet и Shared Services. По умолчанию L3VPN строит топологию Full Mesh (любой филиал общается с любым филиалом напрямую). Однако во многих корпоративных сценариях требуется топология Hub-and-Spoke: филиалы (Spokes) не должны связываться напрямую, а весь их трафик обязан проходить через центральный офис (Hub) для фильтрации на центральном фаерволе. Это достигается разделением Route Targets: Hub имеет два RT (например, Hub-In 65000:10 и Hub-Out 65000:20). Филиалы экспортируют свои маршруты с тегом Hub-In и импортируют только маршруты с тегом Hub-Out (по умолчанию — дефолтный маршрут 0.0.0.0/0 от центрального фаервола). Таким образом филиалы не знают маршрутов друг друга напрямую. Также в лабораторной реализуется Extranet — предоставление доступа к изолированному серверному сегменту (Shared Service VRF) из нескольких различных клиентских VRF через выборочный импорт Route Target.

RT как конструктор топологий

Топология L3VPN определяется не протоколами, а таблицей "кто какой RT экспортирует и импортирует". MP-BGP одинаково переносит все маршруты, а VRF решает по RT, какие из них принять. Три базовых шаблона:

ТопологияExport RTImport RTРезультат
Full mesh65000:100 на всех65000:100 на всехлюбой сайт видит любой
Hub-and-spokeSpoke: 65000:10; Hub: 65000:20Spoke: 65000:20; Hub: 65000:10spoke видит только hub
Extranet / shared servicesклиент: свой RT + RT сервисаклиент: свой RT + RT сервисаклиент видит общие серверы, но не соседей

Hub-and-spoke: зачем две VRF на hub-PE

Цель - принудительно провести весь межсайтовый трафик через межсетевой экран hub-сайта. Если на hub-PE сделать одну VRF с import 65000:10 и export 65000:20, то пакет из spoke 1 к spoke 2 прилетит на hub-PE с VPN-меткой этой VRF и PE, найдя маршрут на spoke 2 (он импортирован), перешлёт его напрямую, минуя firewall. Поэтому hub-PE разделяют на две VRF с двумя PE-CE линками к одному CE (firewall):

  • HUB-IN (импорт RT 65000:10): в ней лежат маршруты всех spoke; PE отдаёт их firewall по линку 1, а firewall возвращает проинспектированный трафик в этот же линк, и PE пересылает его к нужному spoke. VRF ничего не экспортирует.
  • HUB-OUT (экспорт RT 65000:20): в ней лежат маршруты, полученные от firewall по линку 2 (default и LAN hub-сайта 192.168.10.0/24), их RT 65000:20 импортируют spoke. Трафик от spoke приходит с меткой HUB-OUT и уходит в линк 2 на firewall - другого пути в этой VRF нет.

Следствие: spoke-to-spoke проходит spoke 1 -> PE2 -> PE1 (HUB-OUT) -> firewall -> PE1 (HUB-IN) -> PE2 -> spoke 2; на PE1 пакет в плоскости данных дважды пересекает VRF.

Особенности PE-CE протокола на hub

При eBGP между hub-PE и firewall у всех spoke обычно один AS: hub-CE и spoke-CE в одном AS 65101 не примут маршруты друг друга из-за loop prevention. На PE используют as-override, либо allowas-in на CE. При статике (как в лабораторной) проблемы нет, но firewall должен иметь маршруты на spoke LAN через PE (линк 1) и default через PE (линк 2). Без маршрута возврата в сторону spoke трафик теряется на firewall.

Extranet и shared services

Общие сервисы (DNS, мониторинг, SaaS-шлюз) размещают в отдельной VRF SS с RT 65000:900. Клиентские VRF дополнительно импортируют 65000:900, а SS импортирует клиентские RT, чтобы был обратный маршрут. Принципы:

  • Видимость односторонняя на уровне маршрутов, но двусторонняя на уровне пакетов: маршруты клиента в SS нужны для ответа, потому что в SS нет default.
  • Адреса клиентов, попадающие в SS, должны быть уникальными: два клиента с перекрывающимися LAN, импортированные в SS, конфликтуют (для таких клиентов используют NAT на стыке или не импортируют LAN, а только нужные /32).
  • Клиенты A и B не импортируют RT друг друга: даже при общем SS они остаются изолированными, пока SS не включает транзитный default между VRF.
  • Ограничивайте утечку явными политиками (import-map/vrf-import), чтобы SS получала не всю таблицу, а только нужные префиксы.

Cisco/Huawei/Junos: где задаётся RT

Cisco и Huawei - декларативно в VRF (route-target/vpn-target), Junos - vrf-target либо vrf-import/vrf-export политики с communities. Политики нужны, когда логика сложнее "один RT": несколько RT на импорт (spoke: 20 и 900), RT только для части маршрутов, ограничение по префиксам.

Сходимость и масштаб

Каждая смена RT приводит к повторному выбору маршрутов в VRF: на больших таблицах clear лишь для затронутых VRF. Количество RT на VRF ограничено (Huawei - до 8 в одной команде, Cisco - десятки). Чем сложнее схема RT, тем тяжелее аудит: храните RT-матрицу (кто экспортирует, кто импортирует) как данные в Git.

Проверка топологии

Правильная проверка - не пинг, а таблица маршрутов: в VRF spoke нет префиксов других spoke (только default hub, LAN hub-сайта и сервисы), в HUB-IN есть все spoke, в SS есть spoke и нет hub. Трассировка spoke-to-spoke должна показать firewall, а запрос к SS идёт напрямую к PE1. Любое другое поведение - утечка RT.

Схема архитектуры и топология

text
               [Hub CE / Firewall]
                        ^
                        | (Hub PE: VRF Hub-In imports RT 65000:10, VRF Hub-Out exports RT 65000:20)
                        v
                 [Provider Core]
                  /           \
                 v             v
          [Spoke-1 CE]     [Spoke-2 CE]
(Imports RT 65000:20 only)  (Imports RT 65000:20 only)
(Exports RT 65000:10)       (Exports RT 65000:10)

Схема прохождения трафика и стек меток

text
Hub-and-Spoke Routing Policy Enforcement:
1. Spoke-1 advertises 10.1.0.0/24 with Export RT 65000:10.
2. Spoke-2 imports only RT 65000:20, so it does not learn the Spoke-1 route directly.
3. Hub PE imports RT 65000:10 into VRF Hub-In and passes the spoke routes to the firewall.
4. VRF Hub-Out exports a default/summary route with RT 65000:20; the spokes import it.
5. Spoke-to-spoke traffic therefore follows the default route to the hub and is inspected by the firewall.

Таблица состояний и параметров

Топология VPNПолитика Export RTПолитика Import RTПоведение трафика
Full Mesh (Любой с любым)RT 65000:100RT 65000:100Прямая связь между всеми филиалами без посредников
Hub-and-Spoke (Spoke)RT 65000:10 (Spoke)RT 65000:20 (Hub)Филиалы видят только Hub, прямой связи между филиалами нет
Hub-and-Spoke (Hub)RT 65000:20 (Hub)RT 65000:10 (Spoke)Центральный узел видит все филиалы и инспектирует весь трафик
Extranet (Shared Services)RT_Customer + RT_SharedRT_Customer + RT_SharedБезопасный доступ к общим серверам без объединения клиентов

Архитектурная модель и принцип работы

В реальных сетях оператора MPLS объединяет оборудование различных производителей. Ниже представлены практические примеры конфигурации и вывода команд Data Plane / Control Plane для четырёх платформ: Cisco IOS-XE/XR, Huawei VRP, Juniper Junos и MikroTik RouterOS v7. Обратите внимание на различия в синтаксисе и механизмах распределения меток.

Практическая конфигурация (Cisco, Huawei, Juniper, MikroTik)

Cisco (IOS-XE/XR)