Кратко

  • BGP-LS выводит объекты узлов, каналов и префиксов из состояния IGP/TE, применяет политику и раскрывает физическое, абстрактное либо смешанное представление. Это не побайтовая копия LSDB и не перенос sequence number исходных LSA/LSP.
  • Established-сессия и два производителя не доказывают свежесть. Решение нужно связывать с источником, Protocol-ID, Instance-ID, withdrawal, набором атрибутов, правилом слияния и фактическим состоянием FIB и пакетов.

В отчёте все компоненты выглядели исправными. BGP-сессии не падали, объекты продолжали поступать, вычисление пути завершилось успешно. Ошибка обнаружилась только в плоскости данных: пакет пришёл туда, где соединения больше не было.

После разделения сети производитель A всё ещё сообщал половину A–B, а производитель B — половину B–A. Каждый видел неполную историю удаления. Потребитель принял два фрагмента за согласующиеся копии и сформулировал более сильное утверждение, чем любой источник по отдельности: полный канал существует.

RFC 9552 разбирает такой риск для избыточных производителей и недоступных исходных узлов. Документ декабря 2023 года полностью заменяет RFC 7752 и включает изменения RFC 9029. Его важнейшая граница: BGP-LS распространяет контролируемое представление топологии, а не удостоверяет физическую истину.

Производное представление нельзя называть LSDB

Производитель обычно берёт сведения из OSPF/IS-IS LSDB и traffic engineering database, формирует Node, Link и Prefix NLRI и помещает свойства в BGP-LS Attribute. Один объект может объединять данные нескольких LSA или LSP; исходные sequence number в нём не сохраняются.

Устаревшие, удалённые, повреждённые или проигнорированные элементы обрабатываются по правилам исходного протокола. Не каждое поле должно экспортироваться. Политика определяет состав и может влиять на момент объявления.

Разница с инвентарём может быть намеренной. RFC 9552 разрешает физическую топологию, абстракцию из агрегированных узлов и виртуальных путей или смешанный вариант. ALTO может получать более грубую cost map, чем PCE. Оценивать точность можно только относительно договора раскрытия для конкретного потребителя.

В договоре нужны исходные домены, разрешённые объекты и атрибуты, степень абстракции, частота, предел свежести, конфиденциальность и цель. Без него невозможно отличить разрешённую абстракцию от потери или просрочки.

Три роли не образуют одну ответственность

RFC 9552 различает Producer, Propagator и Consumer. Producer создаёт BGP-LS-информацию обычно из IGP, но возможны Direct и Static источники. Propagator обрабатывает UPDATE, выполняет BGP Decision Process и передаёт выбранные данные. Consumer — приложение или процесс, использующий представление; он необязательно является BGP speaker.

Одна система может совмещать роли, однако журнал должен сохранять границы. Для объекта необходимо установить, кто его вывел, какая политика разрешила публикацию, какой BGP-путь был выбран, что получил сосед, как потребитель обработал дубликаты и какое действие последовало.

Интерфейс от BGP speaker к Consumer должен быть однонаправленным. Потребитель не может возвращать через него данные для BGP-LS origination. Чтение топологии и запись в сеть — разные полномочия; southbound-команда требует отдельной идентичности и авторизации.

Instance-ID задаёт пространство идентичности

Для non-VPN используется AFI 16388 / SAFI 71, для VPN Link-State — SAFI 72. RFC 4760 определяет multiprotocol capability, MP_REACH и MP_UNREACH. Capability доказывает канал обмена, но не актуальность объекта.

Protocol-ID различает IS-IS L1/L2, OSPFv2, OSPFv3, Direct и Static. Восьмиоктетный BGP-LS Instance-ID разделяет экземпляры IGP. Производители одного домена обязаны использовать одинаковый Instance-ID, а разные домены — уникальные значения. Ошибка раздваивает одну сеть или склеивает независимые сети.

ASN, area, router identity, topology ID и descriptor TLV дополняют ключ. Несогласованные optional TLV у избыточных производителей способны создать разные NLRI или частичные атрибуты.

Изменение descriptor означает изменение ключа. Старый NLRI следует отозвать через MP_UNREACH, а не только объявить новый. Завершённая миграция содержит положительное доказательство новой идентичности и отрицательное доказательство исчезновения старой из Producer, RIB, Adj-RIB-Out и графа Consumer.

Выбор BGP не выбирает самое свежее физическое наблюдение

Процесс RFC 4271 выбирает между BGP-путями. Он выражает предпочтение протокола, а не определяет, какой Producer последним видел исходный узел доступным.

В исходном инциденте не было двух полных независимых наблюдений. Были две старые половины. Именно слияние создало утверждение о целом канале. Поэтому число источников и свежесть — разные показатели.

Нужны доступность origin node с позиции каждого Producer, идентичность и возраст LSA/LSP, эпоха LSDB/TED, время origination, selected/alternate paths, ожидаемые withdrawals и состояние merge. Зелёная сессия ничего из этого не подтверждает.

RFC 9552 рекомендует отзывать объекты недоступных исходных узлов, если только явно заданный сценарий не требует сохранения полной LSDB-view. Исключение должно иметь владельца, назначение, максимальный возраст и видимую маркировку устаревания.

Сохранившийся NLRI может скрыть потерю свойств

Идентичность находится в NLRI, многие свойства — в BGP-LS Attribute. В контексте RFC 7606 повреждённый Attribute может быть отброшен, а NLRI сохранён.

Это состояние потери, а не осознанное сообщение «канал без метрики». Следует различать намеренное исключение политикой, неизвестный сохранённый TLV, Attribute Discard из-за ошибки и действительно неопределённое свойство.

Большие атрибуты могут требовать Extended Message из RFC 8654. Различия capability или исключаемых TLV приводят к разным наборам свойств при одинаковом NLRI. Сверять надо полный fingerprint атрибутов.

Реестр IANA подтверждает назначение codepoint, но не правильность сбора конкретным устройством и не физическую актуальность.

Получение feed не даёт права устанавливать путь

Архитектуре PCE нужны данные топологии/TED, ALTO использует network/cost map, а RFC 8571 переносит IGP TE performance metric. Транспортный стандарт не утверждает алгоритм потребителя.

В источнике сохраняются LSA/LSP identity, protocol, origin reachability и epoch. На Producer — версия, Protocol-ID, Instance-ID, descriptors, policy, origination/withdrawal. В propagation — capability, UPDATE, выбор, альтернативы, discard и задержка. На Consumer — object set, duplicate/merge rule, missing attributes, freshness и право доступа.

Вычисленный путь привязывают к точному snapshot, constraints, версии алгоритма и approval. Затем проверяют southbound request, принятие устройством, label/FIB, положительные и отрицательные packet canary. Ответ API — не установка, установка — не доставка пакета.

Изоляция нагрузки не отменяет секретность

Link-State UPDATE могут быть значительно чаще обычных prefix update. RFC 9552 рекомендует отдельные route reflector или равноценную изоляцию и ограничивает распространение одним административным доменом.

Топология и TE-метрики могут быть коммерчески и операционно чувствительны. Peering разрешается только доверенным speaker, а consumer-only peer не должен посылать UPDATE. Документация Cisco IOS XR, IOS XE и Juniper показывает реальные controls для instance, policy, queue, table и controller acquisition, но команды и defaults зависят от релиза.

Sources