RD против RT в MPLS VPN: уникальность против политики импорта
Разграничитель маршрутов делает перекрывающиеся префиксы уникальными, а цель маршрута определяет, какие маршруты VRF может импортировать. Проследите один маршрут MPLS в обеих ролях.
Два клиентских сайта могут анонсировать 10.20.0.0/24, и оба остаются действительными в одной сети провайдера. Разграничитель маршрутов сохраняет эти анонсы раздельными; цель маршрута решает, какой клиентский VRF может взять копию. В конфигурации они стоят рядом и выполняют совершенно разные задачи. Путаница между ними приводит к изменениям, которые выглядят разумно и ничего не исправляют.
Проследите один маршрут от клиентского края до удалённого VRF и разделение становится конкретным: идентичность добавляется до того, как маршрут попадает в BGP, а политика распространения оценивается, когда маршрут достигает принимающего края провайдера.
Маршрут VPN-IPv4 — это RD плюс префикс IPv4
RFC 4364 определяет семейство адресов VPN-IPv4 как восьмибайтовый разграничитель маршрутов, за которым следует четырёхбайтовый адрес IPv4. RD добавляется перед клиентским префиксом, поэтому два одинаковых префикса с разных сайтов становятся двумя разными маршрутами BGP.
Эта конструкция и есть весь механизм уникальности. Провайдеру не нужно, чтобы клиенты договаривались о неперекрывающемся адресном пространстве, а маршрут с одного сайта не может молча заменить одинаковый префикс с другого сайта.
Сам формат RD — это значение, выбираемое администратором, обычно номер автономной системы и локальный номер. Его числовая форма — соглашение, а не признак того, что два поля разделяют смысл с целью маршрута, которая случайно использует те же цифры.
RD делает перекрывающиеся префиксы различимыми
Рассмотрим два анонса одного и того же префикса. Сайт A несёт RD 65000:101, а сайт B несёт RD 65000:202, оба для 10.20.0.0/24. Теперь BGP хранит два маршрута VPN-IPv4, которые можно независимо сравнивать, фильтровать и выбирать.
RD не говорит, какой VRF должен получить тот или иной маршрут, и не идентифицирует клиента или услугу. Это поле идентичности маршрута, а не список членства. Собственный RD данного VRF не обязан совпадать с RD маршрута, который он импортирует.
Поэтому изменение RD под номер другого сайта ничего не исправляет. Если маршрут отсутствует на другой стороне, совпадение цифр создаёт другую проблему идентичности вместо исправления решения об импорте.
RT — это атрибут BGP, а не метка в пакете
Политика экспорта прикрепляет к маршруту одну или несколько целей маршрута как расширенные атрибуты сообщества BGP. Принимающий край провайдера сравнивает эти атрибуты с политикой импорта каждого VRF. RT путешествует с маршрутом через плоскость управления. Сравнение происходит полностью в политике маршрутизации, до того как будет передан любой клиентский пакет.
Клиентские пакеты данных не несут RT. После установки маршрута в VRF пересылка использует таблицу этого VRF и стек меток MPLS, который назначает архитектура. Край провайдера не читает цель маршрута из каждого клиентского пакета.
Маршрут может нести несколько RT, а VRF может импортировать несколько. Конфигурация часто выглядит как короткий блок:
vrf definition CUST-A
rd 65000:101
address-family ipv4
route-target export 65000:500
route-target import 65000:500
Читайте этот блок как два отдельных утверждения. Строка экспорта определяет, что прикрепляется к маршрутам, покидающим этот VRF; строка импорта определяет, что этот VRF готов рассматривать. Совпадающие номера удобны, но не обязательны.
Право на импорт — это не установка
Маршрут может быть допустимым для VRF и при этом не появляться в её таблице пересылки. Допустимость — это фильтр; затем обычный процесс принятия решений BGP сравнивает допустимые маршруты и выбирает один. Более старый или менее предпочтительный маршрут может проиграть другому допустимому пути.
Проверяйте выбранный маршрут, а не только политику импорта. VRF, который импортирует RT 65000:500 и не показывает маршрут для 10.20.0.0/24, возможно, получил маршрут и отклонил его при выборе, либо не получил его вовсе.
Это различие важно и тогда, когда появляется неожиданный префикс. Слишком широкая политика импорта может притянуть маршруты, которые сайт не собирался использовать, и уникальность RD этому никак не мешает. Область распространения — это вопрос политики RT.
Найдите отсутствующий маршрут в порядке плоскости управления
Начните с анонса: экспортирует ли исходный VRF нужную RT и существует ли маршрут как маршрут VPN-IPv4 на отражателе маршрутов или на принимающем PE? Затем проверьте атрибут таким, каким он получен, а не таким, каким он настроен у отправителя.
Далее сравните список импорта принимающего VRF с фактическими значениями RT маршрута. Наконец, осмотрите выбранный маршрут в этом VRF и привязку метки. Каждый шаг отвечает на свой вопрос, а прыжок к RD обычно пропускает именно ошибочный шаг.
Запишите RD, экспортированный RT, импортированный RT и выбранный следующий узел для работающего и неисправного сайта. Четыре значения рядом превращают расплывчатое «VPN не передаёт маршруты» в точный шаг плоскости управления, который различается.