Диагностика BGP-соседств (Troubleshooting BGP Neighbor Adjacencies)
Отредактирована 24.09.2026
R1#show bgp ipv4 unicast summary BGP router identifier 10.1.13.1, local AS number 65501 BGP table version is 1, main routing table version 1 Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 10.1.12.2 4 65502 16 16 1 0 0 00:11:25 0 10.1.13.3 4 65502 15 12 1 0 0 00:09:51 0
Вот перечень причин, по которым BGP-соседство может не установиться:
- Интерфейс не работает: Интерфейс должен быть в состоянии up/up.
- Нарушена связность на Layer 3 (сетевом): Вы должны иметь возможность достичь IP-адреса, с которым пытаетесь установить соседство (adjacency).
- Путь к соседу проходит через маршрут по умолчанию: Вы должны иметь возможность достичь соседа, используя маршрут, отличный от маршрута по умолчанию.
- У соседа нет маршрута к локальному маршрутизатору: Оба маршрутизатора, устанавливающие BGP-пиринг (peering), должны иметь маршруты друг к другу.
- Некорректный оператор neighbor (neighbor statement): IP-адрес и номер автономной системы (autonomous system number) в операторе neighbor ip_address remote-as as_number должны быть указаны точно.
- ACL (Access Control Lists): Список контроля доступа (ACL) или межсетевой экран (firewall) блокируют TCP-порт 179.
- BGP-пакеты отправляются с неправильного IP-адреса: Исходный IP-адрес (source IP) входящего BGP-пакета должен совпадать с локальным оператором neighbor.
- TTL BGP-пакета истек (TTL expires): Сосед (peer) находится дальше, чем разрешено.
- Несовпадение аутентификации (Mismatched Authentication): Оба маршрутизатора должны согласовывать параметры аутентификации.
- Неверно настроенная группа пиров (Peer Group): Группы пиров (peer groups) упрощают повторяющиеся конфигурации BGP; однако, если они реализованы неаккуратно, это может помешать формированию соседств (neighbor relationships) или изучению маршрутов (routes).
- Таймеры: Таймеры не обязаны совпадать; однако, если установлен параметр minimum holddown from neighbor, это может помешать установлению соседства (neighbor adjacency).
- Loopback-интерфейс всегда в состоянии up/up (если только вы его не выключите вручную).
- Если физический интерфейс, через который идет BGP-сессия, упадет, сессия не оборвется, а переключится на другой доступный путь (при условии, что IGP знает альтернативный маршрут к loopback-адресу соседа).
- Это повышает отказоустойчивость (redundancy) BGP-пиринга.
Нарушена связность на Layer 3 (Layer 3 Connectivity Is Broken)
R5#show bgp ipv4 unicast summary BGP router identifier 10.1.45.5, local AS number 65502 BGP table version is 1, main routing table version 1 Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 2.2.2.2 4 65502 0 0 1 0 0 never Idle
R5#show ip route 2.2.2.2 255.255.255.255 % Network not in table R5#ping 2.2.2.2 source 5.5.5.5 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds: ..... Success rate is 0 percent (0/5)
R5#show ip route 2.2.2.2 255.255.255.255 % Network not in table R5#ping 2.2.2.2 source 5.5.5.5 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds: Packet sent with a source address of 5.5.5.5 !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 84/91/104 ms
R5#show ip route ...output omitted... Gateway of last resort is 10.1.45.4 to network 0.0.0.0 D*EX 0.0.0.0/0 [170/3328] via 10.1.45.4, 00:08:37, GigabitEthernet1/0 3.0.0.0/32 is subnetted, 1 subnets D 3.3.3.3 [90/131072] via 10.1.45.4, 00:53:34, GigabitEthernet1/0 4.0.0.0/32 is subnetted, 1 subnets D 4.4.4.4 [90/130816] via 10.1.45.4, 00:53:19, GigabitEthernet1/0 ...output omitted...
R5# show bgp ipv4 unicast summary BGP router identifier 10.1.45.5, local AS number 65502 BGP table version is 1, main routing table version 1 Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 2.2.2.2 4 65502 0 0 1 0 0 never Idle
- Обеспечить детерминированность (предсказуемость) BGP-сессии.
- Избежать ситуаций, когда BGP-сессия пытается установиться через интерфейс, который может быть нестабильным или непредназначенным для BGP-трафика.
- Обеспечить симметричную маршрутизацию (пакеты туда и обратно идут по одному и тому же пути).
- Добавьте статический маршрут (static route) к IP-адресу соседа:
ip route 2.2.2.2 255.255.255.255 10.1.12.2
- Или убедитесь, что протокол IGP (OSPF, EIGRP) изучает маршрут к этому адресу.
У соседа нет маршрута к локальному маршрутизатору (Local Router)
R2#show bgp ipv4 unicast summary BGP router identifier 2.2.2.2, local AS number 65502 BGP table version is 1, main routing table version 1 Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 5.5.5.5 4 65502 0 0 1 0 0 00:00:13 Idle 10.1.12.1 4 65501 2 2 1 0 0 00:00:12 0
R2#show ip route 5.5.5.5 255.255.255.255 Routing entry for 5.5.5.5/32 Known via "eigrp 100", distance 90, metric 131072, type internal Redistributing via eigrp 100 Last update from 10.1.24.4 on GigabitEthernet2/0, 00:23:58 ago Routing Descriptor Blocks: * 10.1.24.4, from 10.1.24.4, 00:23:58 ago, via GigabitEthernet2/0 Route metric is 131072, traffic share count is 1 Total delay is 5020 microseconds, minimum bandwidth is 1000000 Kbit Reliability 255/255, minimum MTU 1500 bytes Loading 1/255, Hops 2
show ip route [IP-адрес_соседа]
show ip route [IP-адрес_локального_роутера]
Некорректный оператор neighbor (Incorrect neighbor Statement)
R2#show run | s router bgp router bgp 65502 bgp log-neighbor-changes neighbor 5.5.5.5 remote-as 65502 neighbor 5.5.5.5 update-source Loopback0 neighbor 10.1.12.1 remote-as 65501
- IP-адрес пира (peer), с которым вы будете устанавливать пиринг;
- автономная система (autonomous system), в которой находится этот пир. Если вы допустите ошибку в любой из них, вы увидите состояние active (Active) или idle (Idle).
R2#show tcp brief all TCB Local Address Foreign Address (state) 68DD357C 10.1.12.2.179 10.1.12.1.35780 ESTAB 68DD24DC 2.2.2.2.179 5.5.5.5.45723 ESTAB
- Idle (постоянно): нет маршрута к IP-адресу соседа.
- Active (постоянно): маршрут есть, TCP рукопожатие прошло, но open-сообщение не получило ответа (обычно проблема с ACL или firewall).
- Переключение Idle ↔ Active: несовпадение AS-номеров или проблема с аутентификацией.
BGP-пакеты отправляются с неправильного IP-адреса (BGP Packets Sourced from Wrong IP Address)
direct connection [dɪˈrekt kəˈnekʃn] прямое подключение, непосредственное подключение
R2#show run | section router bgp router bgp 65502 bgp log-neighbor-changes neighbor 4.4.4.4 remote-as 65502 neighbor 4.4.4.4 update-source Loopback0 neighbor 10.1.12.1 remote-as 65501 R2#show ip interface brief | include Loopback Loopback0 2.2.2.2 YES manual up up
R4#show run | section router bgp router bgp 65502 bgp log-neighbor-changes neighbor 2.2.2.2 remote-as 65502 neighbor 2.2.2.2 update-source Loopback0 R4#show ip interface brief | include Loopback Loopback0 4.4.4.4 YES manual up up
- Loopback всегда в состоянии up/up.
- Если один физический канал падает, BGP-пакеты пойдут через другой интерфейс (при условии, что IGP знает маршрут к loopback-адресу соседа).
- Это повышает отказоустойчивость (redundancy) BGP-пиринга.
R4#show access-lists Extended IP access list 100 10 deny tcp any any eq bgp 20 deny tcp any eq bgp any 30 permit ip any any R4#show ip interface gigabitEthernet 0/0 | include access list Outgoing access list is 100 Inbound access list is not set
R5#show bgp ipv4 unicast summary BGP router identifier 10.1.45.5, local AS number 65502 BGP table version is 1, main routing table version 1 Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 2.2.2.2 4 65502 0 0 1 0 0 00:02:24 Idle
R2#show bgp ipv4 unicast neighbors | i ^BGP neighbor|Local port|Foreign port BGP neighbor is 1.1.1.1, remote AS 65501, external link Local host: 2.2.2.2, Local port: 23938 Foreign host: 1.1.1.1, Foreign port: 179 BGP neighbor is 3.3.3.3, remote AS 65502, internal link Local host: 2.2.2.2, Local port: 179 Foreign host: 3.3.3.3, Foreign port: 45936 BGP neighbor is 4.4.4.4, remote AS 65502, internal link Local host: 2.2.2.2, Local port: 34532 Foreign host: 4.4.4.4, Foreign port: 179 BGP neighbor is 5.5.5.5, remote AS 65502, internal link Local host: 2.2.2.2, Local port: 49564 Foreign host: 5.5.5.5, Foreign port: 179
TTL BGP-пакета истек (TTL of BGP Packet Expires)
R1(config)# interface GigabitEthernet1/0 R1(config-if)# ip address 10.1.12.1 255.255.255.252 R1(config-if)# no shutdown R1(config-if)# exit R1(config)# router bgp 65001 R1(config-router)# bgp log-neighbor-changes R1(config-router)# neighbor 10.1.12.2 remote-as 65002 R1(config-router)# exit
R2(config)# interface GigabitEthernet1/0 R2(config-if)# ip address 10.1.12.2 255.255.255.252 R2(config-if)# no shutdown R2(config-if)# exit R2(config)# router bgp 65002 R2(config-router)# bgp log-neighbor-changes R2(config-router)# neighbor 10.1.12.1 remote-as 65001 R2(config-router)# exit
R2#show bgp ipv4 unicast neighbors | include BGP neighbor|TTL BGP neighbor is 5.5.5.5, remote AS 65502, internal link Minimum incoming TTL 0, Outgoing TTL 255 BGP neighbor is 10.1.12.1, remote AS 65501, external link Minimum incoming TTL 0, Outgoing TTL 1
R1#show run | s router bgp router bgp 65501 bgp log-neighbor-changes neighbor 2.2.2.2 remote-as 65502 neighbor 2.2.2.2 update-source Loopback0 neighbor 10.1.13.3 remote-as 65502
R2#show run | s router bgp router bgp 65502 bgp log-neighbor-changes neighbor 1.1.1.1 remote-as 65501 neighbor 1.1.1.1 update-source Loopback0 neighbor 5.5.5.5 remote-as 65502 neighbor 5.5.5.5 update-source Loopback0
R1#show bgp ipv4 unicast summary BGP router identifier 10.1.13.1, local AS number 65501 BGP table version is 1, main routing table version 1 Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 2.2.2.2 4 65502 0 0 1 0 0 never Idle 10.1.13.3 4 65502 36 35 1 0 0 00:29:49 0
R2#show bgp ipv4 unicast summary BGP router identifier 2.2.2.2, local AS number 65502 BGP table version is 1, main routing table version 1 Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 1.1.1.1 4 65501 0 0 1 0 0 never Idle 5.5.5.5 4 65502 27 26 1 0 0 00:20:52 0
R2#show bgp ipv4 unicast neighbors | include BGP neighbor|TTL BGP neighbor is 1.1.1.1, remote AS 65501, external link External BGP neighbor may be up to 2 hops away. BGP neighbor is 5.5.5.5, remote AS 65502, internal link Minimum incoming TTL 0, Outgoing TTL 255
R2#show bgp ipv4 unicast summary BGP router identifier 2.2.2.2, local AS number 65502 BGP table version is 1, main routing table version 1 Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 1.1.1.1 4 65501 2 4 1 0 0 00:00:04 0 5.5.5.5 4 65502 38 37 1 0 0 00:30:57 0
| Сценарий | Цель пакета | Прыжков | TTL = 1 | TTL = 2 |
|---|---|---|---|---|
| Физические интерфейсы | Gi1/0 соседа (10.1.12.2) | 1 | ✅ Доставлен | ✅ Доставлен |
| Loopback-интерфейсы | Loopback0 соседа (2.2.2.2) | 2 | ❌ Отброшен | ✅ Доставлен |
Несовпадение аутентификации (Mismatched Authentication)
R1#show bgp ipv4 unicast summary BGP router identifier 1.1.1.1, local AS number 65501 BGP table version is 1, main routing table version 1 Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 2.2.2.2 4 65502 0 0 1 0 0 00:02:49 Idle 10.1.13.3 4 65502 7 5 1 0 0 00:02:48 0
neighbor [IP-адрес] password [пароль]
- Пароль должен быть одинаковым на обоих маршрутизаторах.
- Если пароли не совпадают, TCP-соединение не будет установлено, и BGP-сессия останется в состоянии Idle.
- В syslog-сообщении будет указано No MD5 digest, что явно указывает на проблему с аутентификацией.
- MD5-аутентификация защищает BGP-сессию от атак типа "man-in-the-middle" (подмена маршрутизатора).
Неверно настроенные группы пиров (Misconfigured Peer Groups)
- Вы забыли связать IP-адрес соседа с группой пиров: После того как группа пиров создана, необходимо использовать команду neighbor ip_address peer-group peer_group_name, чтобы связать соседа с конфигурациями в группе пиров. Если вы забудете это сделать, IP-адрес соседа не будет использовать конфигурации из группы пиров. Он будет использовать конфигурации BGP вне группы пиров, что может помешать формированию соседства.
- Группа пиров настроена некорректно: Возможно, вы упустили из виду, что то, что работает для одного соседа, может не работать для другого. Например, использование update-source Loopback 0 может хорошо работать для iBGP-пира, но не для eBGP-пира.
- Фильтр маршрутов (route filter), примененный к группе, не подходит для всех пиров: Фильтр, примененный через route-map или любым другим способом, может не давать ожидаемого результата на всех маршрутизаторах. Будьте осторожны с фильтрами и убедитесь, что они дают желаемый результат для всех соседей в группе пиров.
- Порядок выполнения операций (order of operations) дает нежелательный результат: Если между группой пиров и конкретным оператором neighbor есть конфликтующие записи, оператор neighbor имеет приоритет. В Примере 20 в группе пиров указано, что источник обновлений (update source) — Loopback 0. Однако для соседа 3.3.3.3 явно указано, что будет использоваться Loopback 1 с помощью команды neighbor 3.3.3.3 update-source Loopback1. Этот конкретный оператор neighbor переопределяет (overrides) группу пиров.
R2#show run | section router bgp router bgp 65502 bgp log-neighbor-changes network 10.1.5.0 mask 255.255.255.0 neighbor TSHOOT_IBGP_NEIGHBORS peer-group neighbor TSHOOT_IBGP_NEIGHBORS transport connection-mode passive neighbor TSHOOT_IBGP_NEIGHBORS update-source Loopback0 neighbor TSHOOT_IBGP_NEIGHBORS next-hop-self neighbor TSHOOT_IBGP_NEIGHBORS route-map TSHOOT_BGP_FILTER out neighbor 1.1.1.1 remote-as 65501 neighbor 1.1.1.1 password C neighbor 1.1.1.1 ebgp-multihop 2 neighbor 1.1.1.1 update-source Loopback0 neighbor 3.3.3.3 remote-as 65502 neighbor 3.3.3.3 peer-group TSHOOT_IBGP_NEIGHBORS neighbor 3.3.3.3 update-source Loopback1 neighbor 4.4.4.4 remote-as 65502 neighbor 4.4.4.4 peer-group TSHOOT_IBGP_NEIGHBORS neighbor 5.5.5.5 remote-as 65502 neighbor 5.5.5.5 peer-group TSHOOT_IBGP_NEIGHBORS
- Конкретные настройки для отдельного соседа (neighbor X.X.X.X ...) имеют приоритет над настройками группы пиров (peer-group).
- Если в группе пиров и в индивидуальной настройке есть конфликтующие параметры — побеждает индивидуальная настройка.
- Группа пиров TSHOOT_IBGP_NEIGHBORS задает update-source Loopback0.
- Для соседа 3.3.3.3 явно задано update-source Loopback1.
- В результате для соседа 3.3.3.3 будет использоваться Loopback1, а не Loopback0.
- Когда у вас много iBGP-соседей с одинаковыми настройками (например, update-source Loopback0, next-hop-self).
- Для экономии CPU маршрутизатора (обновление генерируется один раз для всей группы).
- Для упрощения конфигурации (меньше команд, меньше ошибок).
- Когда у соседей разные настройки (например, разные route-maps, разные update-source).
- Для eBGP-соседей, у которых часто разные AS и настройки TTL.
Таймеры в BGP
R1#show bgp ipv4 unicast neighbors 10.1.13.3 | include hold time|holdtime Last read 00:00:02, last write 00:00:29, hold time is 90, keepalive interval is 30 seconds Configured hold time is 180, keepalive interval is 60 seconds Minimum holdtime from neighbor is 90 second
R3#show bgp ipv4 unicast neighbors 10.1.13.1 | include hold time|holdtime Last read 00:00:10, last write 00:00:23, hold time is 90, keepalive interval is 30 seconds Configured hold time is 90, keepalive interval is 30 seconds Minimum holdtime from neighbor is 90 second
- R1 предлагает 180/60 (значения по умолчанию), но принимает от R3 минимум 90 (строка Minimum holdtime from neighbor is 90 second — это значение, полученное от R3, а не настроенное на R1).
- R3 предлагает 90/30 и требует от соседа минимум 90.
- BGP выбирает наименьшее → 90/30 для обоих.
R1#config t Enter configuration commands, one per line. End with CNTL/Z. R1(config)#router bgp 65501 R1(config-router)#neighbor 10.1.13.3 timers 10 30 R1(config-router)#do clear ip bgp 10.1.13.3 R1(config-router)# %BGP-5-ADJCHANGE: neighbor 10.1.13.3 Down User reset %BGP_SESSION-5-ADJCHANGE: neighbor 10.1.13.3 IPv4 Unicast topology base removed from session User reset %BGP-3-NOTIFICATION: received from neighbor 10.1.13.3 active 2/6 (unacceptable hold time) 0 bytes %BGP-5-NBR_RESET: Neighbor 10.1.13.3 active reset (BGP Notification received) %BGP-5-ADJCHANGE: neighbor 10.1.13.3 active Down BGP Notification received %BGP_SESSION-5-ADJCHANGE: neighbor 10.1.13.3 IPv4 Unicast topology base removed from session BGP Notification received R1(config-router)# %BGP-3-NOTIFICATION: received from neighbor 10.1.13.3 active 2/6 (unacceptable hold time) 0 bytes R1#
- Уведомление unacceptable hold time появляется дважды — R1 после сброса сессии снова пытается установить соседство, и R3 снова отклоняет его, потому что hold time = 30 по-прежнему меньше минимума 90.
- После второго отклонения строка %BGP-5-ADJCHANGE не появляется, потому что сессия уже находилась в состоянии Active (не Established). R1 продолжает попытки установить соседство, но R3 каждый раз отклоняет их.
Как работают BGP-таймеры:
- Keepalive (hello): интервал между отправкой Keepalive-сообщений (по умолчанию 60 секунд).
- Hold time: время, в течение которого маршрутизатор ждет Keepalive от соседа перед разрывом сессии (по умолчанию 180 секунд, обычно = 3 × Keepalive).
- При установке сессии BGP выбирает наименьшие значения из предложенных обоими соседями.
Зачем нужен minimum hold time:
- Защита от слишком агрессивных таймеров (например, Keepalive = 1 секунда), которые могут создать излишнюю нагрузку на CPU и каналы связи.
- Если сосед предлагает hold time меньше, чем установленный minimum — сессия не установится, и вы получите уведомление unacceptable hold time.