Кратко

  • Главный вклад версии 03 — интеграция RFC 7606. В разделе 6.4.1 перечислены четыре ответа на ошибку UPDATE: сброс сессии, отключение семейства адресов, отзыв маршрутов из затронутого сообщения или удаление безвредного атрибута.
  • Класс ошибки определяет допустимое действие. Treat-as-withdraw требует корректно разобрать NLRI; атрибут можно удалить, лишь когда он не влияет на выбор и установку маршрута.

От соседа приходит некорректное UPDATE. Операционный вопрос — какой радиус должна получить эта ошибка.

Проект draft-ietf-idr-bgp4-rfc4271bis от 22 октября переносит этот вопрос в базовую спецификацию BGP-4. В приложении B сказано, что основной вклад версии 03 — включение RFC 7606, пересмотревшего в 2015 году обработку ошибок сообщений BGP UPDATE. Раздел 6.4.1 располагает четыре реакции от сильной к слабой. Это шкала последствий. Тип ошибки задаёт обработку; настройка реализации может вернуть поведение со сбросом сессии.

Четыре масштаба последствий

Самая сильная мера — сброс сессии. Маршрутизатор отправляет NOTIFICATION и завершает BGP-сессию. Под удар попадает соседство со всеми согласованными через него семействами адресов. Затем состояние маршрутов проходит через механизмы сходимости и восстановления оператора. Если парсер уже не может надёжно определить маршруты в сообщении, у протокола нет основания изображать точный список пострадавших префиксов.

Следующий уровень — отключение AFI/SAFI. AFI и SAFI обозначают сетевой протокол и тип передаваемой достижимости. Проект ссылается на существующую процедуру Multiprotocol BGP: маршрутизатор может игнорировать последующие маршруты отключённого семейства, пришедшие по той же сессии от этого соседа. IPv4 unicast может остановиться, пока IPv6 unicast продолжает работать через то же соединение. Граница проходит по одному семейству на одном пиринге.

Treat-as-withdraw ограничивает реакцию маршрутами в UPDATE, содержащем ошибку. Они удаляются из Adj-RIB-In так, будто сообщение их отозвало. Для этого NLRI должны успешно разобраться. Если маршрутизатор не понимает, какие префиксы находились в сообщении, он не сможет составить достоверный перечень отзыва.

Последний и самый мягкий уровень — удаление атрибута. Некорректный атрибут пути отбрасывается, а остальная часть UPDATE обрабатывается дальше. Вмешательство минимально, условие жёсткое: атрибут не должен влиять на выбор или установку маршрута. Удалить preference, next hop или иное значение, меняющее решение, — значит незаметно заменить смысл маршрута и назвать это уборкой.

Нужно различать размер реакции и объём информации, которой парсер ещё может доверять. При конфликте длин атрибутов проект использует общую длину атрибутов, чтобы найти начало NLRI, и требует treat-as-withdraw, если не обнаружена более тяжёлая ошибка. Если надёжный разбор NLRI невозможен, соответствующие правила возвращаются к сбросу сессии.

Что объединила версия 03

RFC 7606 уже ввела пересмотренную обработку ошибок UPDATE. Версия 03 включает её в основной текст BGP-4, собирая базовые правила и политику ошибок в одном документе. Она также отменяет несколько старых подкодов ошибок UPDATE: при новых процедурах соответствующие условия больше не вызывают NOTIFICATION. Для семантически неверного NEXT_HOP проект заменяет «игнорировать» на treat-as-withdraw и разрешает настройкой вернуть сброс сессии.

Интеграция неполная: изменения RFC 7606 в других RFC остаются за пределами проекта. На 24 октября Datatracker обозначает документ как Active Internet-Draft группы IDR; состояние IESG — «I-D Exists». Плановый этап — направить базовую спецификацию BGP в IESG в мае 2027 года как Internet Standard. В заголовке проекта указано, что при принятии он обновит RFC 7606.

Операционные последствия выходят далеко за пределы парсера. Сброс превращает ошибку сообщения в событие всего соседства. Отключение семейства меняет восстановление сервиса на этом пиринге. Treat-as-withdraw может переместить трафик затронутых префиксов, пока другие UPDATE продолжают ходить. Удаление атрибута сохраняет маршрут, убирая часть информации; безопасность зависит от точного смысла атрибута.

Проверка проходит в работающей сети. По каждому классу ошибки оператор связывает записанную причину, предписанный ответ, выполненное действие, изменившиеся маршруты и результат передачи пакетов. Established показывает состояние сессии. Полезное доказательство следует за решением по UPDATE через Adj-RIB-In, выбранный маршрут, FIB и пакет.

Источники