AFI и SAFI: прочитайте пару раньше имени службы
AFI 25 с SAFI 65 — не та же служба, что AFI 25 с SAFI 70. Прочитайте пару, затем проверьте обмен семействами, маршрут и результат пересылки.
Можно смотреть, как сессия поднимается, как появляется маршрут, и всё равно читать не ту службу. Пара чисел в начале каждого объявления, идентификатор семейства адресов и идентификатор следующего семейства адресов, решает, какой разборщик читает полезную нагрузку и какая таблица хранит результат. Ошибётесь в паре — политика импорта, сопоставление цели маршрута и поиск следующего перехода выполняются против структуры, которую никто не объявлял. Путь ниже начинается с этой пары и заканчивается результатом пересылки.
В какую таблицу попадает маршрут, решают два числа
Пара появляется дважды: внутри многопротокольной возможности, где говорящий объявляет семейство, и перед каждым NLRI, которое это семейство несёт. Поэтому это свойство маршрута, а не настройка на исходном узле. Поставщики печатают её как имя вида Address family VPNv4 Unicast, и формулировка кочует между выпусками, пока числа остаются на месте.
| Where you meet it | Family pair | Boundary of what it proves |
|---|---|---|
| VPNv4 unicast capability on a neighbour | 1 / 128 | the peer will signal labelled VPN-IPv4, nothing about import |
| VPNv6 unicast capability on a neighbour | 2 / 128 | the peer will signal VPN-IPv6, silent about the transport below |
| VPLS NLRI with a VE ID and a label base | 25 / 65 | a pseudowire is signalled, not that a bridge learned a MAC |
| EVPN MAC/IP advertisement route | 25 / 70 | a binding is advertised, not that the host answers |
Четыре кодировки покрывают почти все корпоративные случаи: 1 с 128 для VPN-IPv4 с меткой MPLS, 2 с 128 для эквивалента IPv6, 25 с 65 для VPLS с сигнализацией BGP и 25 с 70 для EVPN. Первая ошибка — считать, что каждая служба Layer 2 находится за 25 с 65, что скрывает EVPN. Вторая — рассматривать два семейства IP как одно семейство с более длинным адресом, хотя они согласуются отдельно и могут приниматься на разных партнёрах. Третья появляется, когда шаблон копируют из выпуска, знающего только одно из них. Справка в реестре решает все три быстрее, чем догадка, построенная на имени службы.
Считайте четыре строки примерами из реестра IANA, а не самим реестром. Если число не совпадает ни с чем знакомым, посмотрите его, прежде чем строить вокруг него политику.
AFI 25 несёт два несвязанных формата NLRI
Оба семейства Layer 2 сидят под AFI 25, и сходство на этом заканчивается. NLRI для VPLS в RFC 4761 section 3.2.2 несёт длину, различитель маршрута, VE ID, смещение блока VE, размер блока VE и базу меток, которые вместе называют конечную точку pseudowire и её метку. EVPN сохраняет AFI 25 и переходит на SAFI 70, где полезная нагрузка — тип маршрута: автоматическое обнаружение Ethernet, объявление MAC/IP, включающий multicast, сегмент Ethernet, префикс IP. Поэтому одно и то же смещение в байтах означает в двух семействах разное. Разборщик, написанный для одного, читает другое без жалоб и выдаёт бессмыслицу. Пара — единственное предупреждение о том, что толкование неверно.
Поле, которое в одном семействе означает смещение блока VE, не имеет соответствия в другом, а маршрут объявления MAC/IP существует только в EVPN. Цитировать атрибут так, будто он относится к обоим, — это путь, которым обзор записи идёт не туда.
Когда кто-то даёт вам запись или таблицу поставщика, спросите, какому семейству принадлежит атрибут. Затем убедитесь, что принимающая реализация поддерживает это семейство, а не имя службы из описания. Две платформы могут обе заявлять поддержку VPLS, реализуя разные семейства сигнализации. Пара разделяет их; ярлык продукта — нет.
Собственное семейство адресов сессии — отдельный вопрос
VPN-IPv6 регулярно объявляется через сессию, TCP-соединение которой идёт поверх IPv4, и это поддерживаемый проект, а не неисправность. Поэтому чтение только сводки сессии ничего не говорит о том, какие семейства VPN обменивают партнёры.
Семейство NLRI, транспортное семейство и семейство пересылки — три независимых решения. Маршрутизатор может говорить IPv4 со своим партнёром, принимать достижимость VPN-IPv6 и устанавливать маршрут, следующий переход которого — адрес IPv6, достижимый по пути, который вы не предусматривали. Каждому уровню нужно своё подтверждение. Площадки, сообщающие о недостижимых целях IPv6, тогда как объявления выглядят правильно, обычно потеряли разрешение следующего перехода, а не согласование семейств.
Проверьте семейство адресов сессии отдельно, затем семейства, которые она несёт, затем то, что ядро может переслать. Разделение трёх предотвращает частый ошибочный диагноз, когда правильное объявление читают как доказательство, что IPv6 работает из конца в конец. Оно доказывает лишь то, что один партнёр рассказал другому о префиксе.
Согласовано, получено, импортировано, установлено
Для одного ожидаемого маршрута четыре состояния должны выполняться по порядку, и каждое наблюдаемо. Семейство должно быть согласовано с этим партнёром, маршрут должен прийти, цель маршрута должна импортировать его в нужный контекст, а следующий переход должен разрешиться, чтобы маршрут установился. Пропуск первого состояния делает остальные три безответными, потому что несогласованное семейство не порождает маршрутов для осмотра. На платформах в стиле Cisco сводки семейств и возможности по партнёрам — отдельные команды.
show bgp all summary
show bgp vpnv4 unicast all summary
show bgp l2vpn evpn summary
show bgp neighbors <peer-address> | include Address family
Согласование видно в обмене возможностями, который печатается по партнёрам, а установленная сессия без единого указанного семейства не несёт ничего из запрошенного. Импорт решают цели маршрутов, переносимые как расширенные сообщества, поэтому правильная пара с неверно набранной целью оставляет таблицу пустой. Установка затем зависит от разрешения следующего перехода в принимающем контексте, что может не удаться, пока каждое объявление выглядит безупречно.
Подтвердите плоскость данных последней, потому что маршрут в таблице — утверждение, а не доставка. Те же четыре состояния относятся к каждому семейству; меняются только команды и имена таблиц.
Чего пара семейств не доказывает никогда
Правильное чтение пары говорит, как толковать следующую за ней маршрутную информацию, и это всё утверждение. Оно ничего не говорит о достижимости, о политике и о здоровье плоскости данных. Смешение двух порождает уверенные заявления о сети, которую никто не проверял. Несовпадение цели маршрута и сломанный следующий переход выглядят одинаково, если смотреть только на пару. Пара — инструкция по чтению и никогда не приговор.
Когда эскалируете, положите пару, цель маршрута и разрешённый следующий переход в одну заметку. Тогда следующему инженеру есть три независимые вещи для проверки вместо имени службы, которое надо перетолковывать. Если согласования нет, они видят это сразу, неверная цель оставляет импорт заметно отсутствующим, а неразрешённый следующий переход оставляет маршрут присутствующим, но непригодным.