六状态总览
BGP 邻居建立要经过 Idle、Connect、Active、OpenSent、OpenConfirm、Established 六个状态。排障时先确认卡在哪个状态,再按该状态的常见成因排查:Connect 与 Active 属于 TCP 层问题,OpenSent 与 OpenConfirm 属于报文参数协商问题,Established 之后才轮到前缀与选路。
基本信息
| 状态数量 | 6 个(含 Idle 与 Established) |
|---|---|
| 正常稳态 | Established |
| 常见卡住位置 | Active(TCP 建不起来) |
| 查看命令 | show ip bgp summary / show ip bgp neighbors <ip> |
| 状态历史 | show ip bgp neighbors <ip> 中的 last reset 与 reason |
| 重试机制 | Idle 与 Connect 之间有重试计时器,失败会循环 |
排查顺序
- 先看状态:卡在 Active 时不要急着重启 BGP,先查底层可达性
- 再查双向配置:一端的邻居地址与 AS 号是否与另一端对应
- 检查中间设备:ACL、防火墙是否拦截 TCP 179
- 核对 Open 参数:AS 号、hold time、router-id、认证是否两侧一致
- 最后看前缀:会话已 Established 但前缀数为 0 时转查策略与地址族
状态与含义
| 状态 | 含义 | 常见停留原因 |
|---|---|---|
| Idle | 初始或拒绝重试 | 无路由、被 shutdown、认证配置 |
| Connect | TCP 连接发起中 | 等待 TCP 建立,SYN 无响应 |
| Active | 尝试重连(含监听) | TCP 建不起来(路由或 ACL 对端未配) |
| OpenSent | 已发 Open 等回应 | Open 报文参数不匹配 |
| OpenConfirm | 已收 Open 等 Keepalive | 能力或参数协商、报文丢失 |
| Established | 会话建立正常 | 该状态之后的问题属策略与选路范畴 |
查看状态
查看状态
show ip bgp summary # State/PfxRcd 列显示状态或收到前缀数
show ip bgp neighbors 10.0.0.2 # BGP state 与最近一次复位原因
show ip bgp neighbors 10.0.0.2 | include reset # 查看复位历史与原因码
show log | include BGP # 日志中的建连与通知记录summary 输出里该列显示数字代表已 Established,数字即收到的前缀数;显示状态名则说明会话未建立。
在状态不明时反复 reset 只会掩盖证据:先抓当前状态与日志,再动手,否则复位后现场消失、无从定位。
状态机循环是正常现象:TCP 建连失败时设备会在 Active 与 Connect 之间往复,直到建连成功或超时;看到状态变化不代表协议故障,关键看它是否曾到达 Established。
按状态定位排查方向
按状态定位排查方向
# Idle / Active / Connect → 查底层可达性与 179 可达
# OpenSent / OpenConfirm → 查两端参数:AS 号、hold time、router-id、认证
# Established 但前缀为 0 → 查地址族 activate 与邻居策略
# Established 且前缀正常 → 转入选路与转发排查