三个状态各代表什么
BGP 邻居建立要经过 Idle、Connect、Active、OpenSent、OpenConfirm、Established 六个状态,卡在前三个通常意味着 TCP 连接都没建起来,后面的参数协商根本还没开始。Idle 是最初状态,也可能是邻居被 shutdown 或等待重试计时;Connect 表示本端已发出 TCP SYN,正在等握手完成;Active 的名字容易误导,它表示本端在主动重试连接但没收到对端的有效响应,也就是「一直在敲门没人应」。理解这三者的区别,能把排查方向直接锁定在可达性与 TCP 179 上,而不是去比对 BGP 参数。
基本信息
| Idle | 初始态,或被管理关闭、等待重试 |
|---|---|
| Connect | TCP 三次握手进行中 |
| Active | 主动重试连接但无有效响应 |
| OpenSent 起 | TCP 已建立,进入参数协商 |
| 默认端口 | TCP 179,双向都需要放行 |
| 被动侧 | 配置 passive 后不主动发起,需对端先连 |
典型使用场景
- 邻居长期不建立:先看状态判断是否属于 TCP 层问题
- 双端都是被动:两端互相等待,邻居永远停在 Idle 或 Connect
- 直连可达但邻居仍 Active:检查 ACL 或防火墙是否拦了 179
- 一端带源地址连接另一端不带:单方向可达会造成只有一侧能发起
- 邻居刚配置完处于 Idle:确认是否仍在重试等待窗口内,不要过早下结论
分层排查顺序
分层排查顺序
# 1. 指定源地址验证三层可达性
ping 203.0.113.2 source 198.51.100.1
# 2. 看邻居状态与最近一次原因
show ip bgp neighbors 203.0.113.2
show ip bgp summary
# 3. 确认 TCP 179 是否被本地 ACL 拦截
show ip access-lists | include 179
# 4. 华为侧对照
display bgp peer
display acl all状态与常见原因
| 状态 | 含义 | 常见原因与处置 |
|---|---|---|
| Idle | 未开始连接 | 邻居 shutdown、无路由、重试等待中 |
| Connect | TCP 握手中 | 路径不通或中间设备拦截 SYN |
| Active | 反复重试无响应 | 对端未监听 179、ACL 拦截、源地址错误 |
| OpenSent | 已发 OPEN | 进入参数协商,问题转向 AS 号与能力 |
| Established | 邻居就绪 | 仍不通则查通告与路由策略 |
Active 与 Connect 会来回切换,这不是新问题而是重试周期在起作用;看状态时要结合 uptime 与日志时间戳判断持续了多久。
两端都用 passive 属于常见自锁:只要有一侧配置了被动,另一侧就必须主动发起,否则邻居永远建不起来。