BGP Error Notification Code 1: Message Header Error — Причины и решение
- BGP сессия переходит из состояния
EstablishedвIdle/Active. - В логах маршрутизатора (Cisco IOS, FRRouting, BIRD, Juniper) появляется сообщение
BGP-3-NOTIFICATION: sent/received 1/1 (Connection Not Synchronized)или1/2 (Bad Message Length). - Сброс BGP соседства происходит каждые несколько минут или при передаче больших порций UPDATE.
- Потеря TCP синхронизации в BGP маркере (16 байт шестнадцатеричных единиц 0xFF).
1. Классификация субкодов ошибки (Subcodes)
- 1/1 (Connection Not Synchronized): Маркер BGP сообщения не состоит из всех единиц (0xFF). Нарушена целостность TCP потока.
- 1/2 (Bad Message Length): Длина BGP пакета меньше 19 байт или больше 4096 байт (для стандартного BGP) без согласованного Extended Message Capability.
- 1/3 (Bad Message Type): Неизвестный тип сообщения (допустимы только 1-OPEN, 2-UPDATE, 3-NOTIFICATION, 4-KEEPALIVE, 5-ROUTE-REFRESH).
2. Проверка целостности TCP соединения и MTU на стыке
В 90% случаев ошибка вызвана повреждением пакетов промежуточным оборудованием или некорректным MSS:
# FRRouting / Cisco IOS:
show ip bgp neighbors <PEER_IP>
# Проверьте Path MTU Discovery:
show ip bgp neighbors <PEER_IP> | include Transport MTU3. Настройка Extended Message Support для длинных префиксов
Если пир отправляет длинные UPDATE сообщения (RFC 8654), включите поддержку Extended Message в конфигурации BIRD / FRR:
# BIRD 2.x configuration:
protocol bgp my_peer {
extended next hop on;
# Разрешить сообщения размером до 65535 байт
}4. Захват и анализ BGP заголовка в tcpdump
tcpdump -s 0 -nnvv -i eth0 port 179 -w /tmp/bgp_header_err.pcapОткройте дамп в Wireshark и проверьте поле Marker в первом упавшем пакете на наличие битовых искажений.
Частые вопросы (FAQ)
Что означает BGP Marker в заголовке сообщения?
Это 16-байтовое поле в начале каждого BGP-сообщения, заполненное всеми единицами (0xFF...FF). Оно используется для синхронизации и обнаружения потери границ сообщений в TCP потоке.
Может ли BGP MD5 Password вызывать ошибку Message Header Error?
Нет, неверный пароль BGP MD5 отбрасывается ядром на уровне TCP стека (TCP MD5 Signature Option) до того, как BGP процесс прочитает заголовок.
Какой минимальный и максимальный размер BGP сообщения по стандарту RFC 4271?
Минимальный размер составляет 19 байт (заголовок без тела сообщения, например KEEPALIVE), максимальный — 4096 байт (если не согласована опция Extended Messages по RFC 8654).
Как предотвратить падение сессии из-за фрагментации BGP пакетов?
Включите Path MTU Discovery (PMTUD) для BGP сессий командой 'neighbor <IP> path-mtu-discovery' или настройте статическое ограничение TCP MSS на интерфейсе.