BGP Error Notification Code 3: UPDATE Message Error — Malformed Attribute
- Сессия BGP рвется сразу после получения первого маршрутного обновления (UPDATE).
- Маршрутизатор отправляет уведомление
BGP NOTIFICATION 3/1 (Malformed Attribute List)или3/3 (Missing Well-known Attribute). - Проблема 'BGP Attribute Poisoning' приводит к флапу сотен префиксов по всей сети.
- В дампе трафика атрибут (ORIGIN, AS_PATH, NEXT_HOP) имеет некорректную длину или поврежденные флаги.
1. Разбор основных субкодов UPDATE Error
- 3/1 (Malformed Attribute List): Синтаксическая ошибка в списке атрибутов (неверная длина или структура).
- 3/2 (Unrecognized Well-known Attribute): Не распознан обязательный атрибут.
- 3/3 (Missing Well-known Attribute): Отсутствует один из обязательных Well-known Mandatory атрибутов (ORIGIN, AS_PATH, NEXT_HOP).
- 3/4 (Attribute Flags Error): Несоответствие флагов атрибута (например, Well-known атрибут помечен как Optional).
- 3/5 (Attribute Length Error): Длина значения атрибута не соответствует стандарту.
- 3/11 (Malformed AS_PATH): Ошибка синтаксиса AS_PATH (некорректный AS_SET или AS_SEQUENCE).
2. Включение механизма 'Treat-as-withdraw' (RFC 7606)
Современные маршрутизаторы поддерживают RFC 7606: при ошибке в атрибуте отдельного префикса сбрасывается только поврежденный маршрут (withdraw), а вся BGP сессия не рвется:
# Cisco IOS XR / IOS-XE:
router bgp 65001
bgp update-error-handling
# Juniper Junos:
set protocols bgp error-handling update-action withdraw-route3. Проверка обязательных атрибутов в Route-Map
Убедитесь, что локальные политики фильтрации не удаляют обязательные атрибуты перед отправкой соседу:
# Пример корректного Route-Map в FRR:
route-map TO_UPSTREAM permit 10
set origin igp
set as-path prepend 650014. Локализация поврежденного префикса через Debug
# FRRouting:
debug bgp updates
debug bgp zebra
# Чтение лога:
show logging | include UPDATE Частые вопросы (FAQ)
Какие три атрибута BGP являются абсолютно обязательными (Well-known Mandatory)?
Это атрибуты ORIGIN (тип происхождения), AS_PATH (список автономных систем) и NEXT_HOP (IP адрес следующего перехода). Отсутствие любого из них вызывает сброс сессии с кодом 3/3.
Что такое BGP Attribute Poisoning?
Это сбой, при котором один маршрутизатор формирует поврежденный опциональный транзитивный атрибут, транслирует его по цепочке, и все последующие строгие маршрутизаторы в мире сбрасывают BGP сессии при получении этого апдейта.
Почему флаги атрибута (Attribute Flags) вызывают ошибку 3/4?
Каждый атрибут имеет байт флагов (Optional, Transitive, Partial, Extended Length). Если, например, атрибут NEXT_HOP пометить как Optional=1, парсер обязан сбросить сессию.
Как изолировать соседа, отправляющего битые UPDATE пакеты?
Установите временный фильтр входящих префиксов: neighbor <IP> prefix-list BLOCK_ALL in, чтобы предотвратить чтение RIB до решения проблемы на стороне партнера.