Кратко

  • draft-ietf-idr-fsv2-ip-basic-08 вводит User Order, обязательные и необязательные компоненты и Dependent Filters Chain, но решение об установке остаётся локальным для каждого узла.
  • Для каждой цели нужен отдельный квиток: полученный объект, возможности, проверка, фактический порядок, пропуски, записи software/hardware, счётчики, удаление и наблюдаемое действие на пакеты.

Управляющий объект один, результаты разные

Контроллер объявляет аварийный фильтр. Route reflector распространяет его, все ожидаемые сессии принимают UPDATE. Контрольная плоскость показывает успех.

Первый edge устанавливает полный match и действия. Второй не поддерживает обязательный компонент и локально отклоняет всю зависимую группу. Третий удаляет необязательный компонент и устанавливает остаток. Старый узел передаёт дальше новую action community, не понимая её смысла.

Доставка состоялась, политика пакетов разошлась. Revision 08 от 28 сентября 2026 года описывает эту границу прямо: у BGP по-прежнему нет action-reply.

Получение UPDATE доказывает перенос, а не исполнение.

Активный Internet-Draft не равен внедрению

Datatracker показывает revision 08 как активный документ IDR в состоянии I-D Exists. В тексте указан Standards Track, а поле предполагаемого статуса RFC не заполнено. Значения AFI, SAFI и типов остаются TBD, присутствуют редакторские заметки, полный механизм нескольких действий вынесен в будущую работу.

Документ подтверждает направление стандартизации, но не поддержку продуктом, операторское внедрение или инцидент.

RFC 8955, RFC 8956 и RFC 9117 образуют основу FSv1. FSv2 использует другие семейства, и версии могут сосуществовать как ships-in-the-night. В переходной сети одни peers поддерживают обе, другие одну, третьи ни одной.

Но пакет встречает на конкретном устройстве единственный фактический порядок фильтров.

User Order передаёт намерение

Каждый FSv2 NLRI несёт 32-битный User Order; меньшее значение имеет больший приоритет. Оператор может заменить порядок по умолчанию.

Узкое разрешение перед широким drop даёт не тот же результат, что после него. Draft рекомендует ставить FSv2 перед FSv1 и хранить правила в общей локальной базе.

Получатель всё равно объединяет локальные правила, решает равенство, проверяет match/actions и программирует software или hardware. BGP не возвращает originator итоговую активную последовательность. Объявленный и установленный порядок — разные факты.

DFC связывает только локальную судьбу

Dependent Filters Chain уменьшает риск частичной установки. В примере более конкретное правило разрешает SMTP и ставит DSCP, а широкое правило выполняет drop. Если устройство не умеет DSCP и оставляет только drop, легитимный трафик блокируется.

Ненулевой DFC связывает правила. Если одно локально invalid, все правила с тем же DFC на этом устройстве тоже invalid и не устанавливаются.

Это не распределённая транзакция. Сосед может принять группу, reflector может проверить лишь синтаксис. DFC не собирает ответы, не подтверждает успех источнику и не откатывает уже установленные записи в другом месте.

Это локальный fail-closed, не сетевой commit.

Необязательный компонент меняет эффективное правило

Неподдерживаемый обязательный компонент делает правило invalid. Необязательный можно убрать и установить оставшуюся часть как valid.

Так проще обновлять сеть, но меняется множество пакетов. Если новый qualifier сужает destination prefix, на старом устройстве qualifier исчезнет, а действие охватит больше трафика.

Пропуск должен быть наблюдаемым событием: что удалено, какой match остался, какое действие работает и кто разрешил отличие. Valid не означает identical.

Если действие невозможно установить, defaults или конфигурация могут определить валидность. Revision 08 оставляет продвинутый порядок и оценку действий будущим документам. В смешанном парке одинаковый результат не гарантирован.

Байты могут пройти без смысла

Действия связываются через Extended Communities. RFC 4360 задаёт перенос и транзитивность. Старое устройство способно корректно передать новую action, не понимая, что она запрошена.

Оно выполняет известные действия best effort. Намерение mark, sample и redirect может сократиться до части. Полное решение взаимодействий зависит от будущего container. Community в BGP не доказывает действие в hardware.

Validated, eligible и installed — не одно состояние

FSv2 проверяет структуру NLRI, свойства маршрута и actions. По умолчанию feasibility зависит от destination prefix и связанного unicast route, хотя явная конфигурация может ослабить часть правил.

Неустранимая malformed NLRI может требовать session reset. Другие ошибки используют treat-as-withdraw из RFC 7606. Draft предупреждает: malformed withdraw ранее valid NLRI способен оставить stuck route и требует уведомления.

Отсутствие объявления не доказывает отсутствие фильтра. Нужно увидеть удаление из RIB, policy store, software classifier, hardware table и поведения пакетов.

Быстрое распространение и медленное подтверждение

RFC 4760 и route reflectors масштабируют доставку, Extended Communities несут действия. BGP быстр, потому что не ждёт программирования каждой цели.

Revision 08 предлагает дополнять его запросами установки через NETCONF или RESTCONF. RFC 6241 и RFC 8040 дают request/response, но не создают универсальный FSv2 receipt. Ответ может подтвердить запрос или datastore, не hardware и пакет.

Практичная схема имеет две скорости: BGP запускает ограниченное по scope и времени вмешательство; отдельный цикл подтверждает точное правило, счётчики, результат и удаление на каждом узле.

Что хранить в квитке

Версию и идентификаторы; полномочие и цели; NLRI, User Order, DFC и flags; action communities; данные validation и исключения; времена по peers; capability; неизвестные и пропущенные элементы; решение DFC; итоговый порядок FSv1/FSv2; идентичность software/hardware entries; счётчики; expiry, withdraw и наблюдаемое удаление; решение продолжить, сузить или откатить.

Receipt доказывает доставку. Validation — соответствие локальным правилам. Table entry — программирование. Counter — встречу с трафиком. Ни один уровень не заменяет следующий.

Приоритет running code требует решать по состоянию, которое реально создало устройство.

Источники