首页/网络/BGP 与广域网速查/OpenConfirm:等待 Keepalive 确认
BGP 基础与邻居89 条

OpenConfirm:等待 Keepalive 确认

OpenConfirm:双方 Open 已互认,等待 Keepalive 完成最终确认:此时参数已定,问题多在报文级(丢弃/超时)。

BGP 与广域网速查网络更新于 2026-10-13

OpenConfirm 处于流程的哪一步

BGP 邻居状态机依次经过 Idle、Connect、Active、OpenSent、OpenConfirm、Established。进入 OpenConfirm 意味着 TCP 已建立、双方的 Open 报文都已互认且参数协商成功,此时只剩最后一步:等待对方发来第一个 Keepalive。收到 Keepalive 后立即转为 Established 并开始交换路由。

基本信息

正常表现收到 Keepalive 后进入 Established,通常只停留毫秒到数秒
停留原因Keepalive 被丢弃、超时、对端进程异常或参数问题
观察窗口show ip bgp summary 反复刷新看到状态短暂出现
核对项协商后的 Hold Time 是否过小、路径是否存在丢包
失败指向若持续停留或反复重连,问题多在报文级而非配置级

典型使用场景

  • 新建邻居卡在这一步:确认 Open 已互认,重点转向报文传输与定时器
  • 邻居反复在 OpenConfirm 与 Idle 之间跳动:怀疑 MTU 或丢包导致 Keepalive 丢失
  • 排查对端进程异常:对端 BGP 进程重启时会表现为短暂停留后重建
  • 验证 Hold Time 配置:协商值过小时 Keepalive 间隔也随之缩短,对丢包更敏感
  • 借助抓包确认最后一步:看到双方 Keepalive 往返即可确认状态即将收敛

观察与验证

观察与验证
# 快速循环刷新观察状态迁移
show ip bgp neighbors 10.0.0.2 | include BGP state
# 打开邻居状态变化日志,避免肉眼刷新错过瞬间状态
router bgp 65001
 bgp log-neighbor-changes
!
show logging | include BGP
#
# 抓包确认 Keepalive 往返(Open 类型 1,Keepalive 类型 4)
tcpdump -i eth0 -nn 'tcp port 179' -c 20

各阶段与检查重点

状态已完成的事检查重点
OpenSentOpen 已发出,等待对端 Open版本、AS、Router ID、能力协商
OpenConfirm双方 Open 互认,等待 Keepalive报文是否可双向通行、Hold Time 是否合理
EstablishedKeepalive 已收到,开始交换路由前缀计数、收发策略
Idle/Active未建立 TCP 或重试中底层可达性与 179 放行

持续停留时的排查顺序

持续停留时的排查顺序
# 1) 看 Hold Time 协商结果
show ip bgp neighbors 10.0.0.2 | include hold
# 2) 查链路是否丢包或存在中间设备
ping 10.0.0.2 repeat 100 size 1500
# 3) 抓包看 Keepalive 是否双向出现
tcpdump -i eth0 -nn 'tcp port 179'
# 4) 查 CPU 与进程状态,排除设备繁忙
show processes cpu | include BGP
OpenConfirm 是一个极短的过程状态,正常网络中几乎看不到。能稳定观察到它,通常意味着 Keepalive 在路径上被丢弃或对端处理异常,此时抓包比反复敲命令更有效。

易错点

  • 抓包只看单向:本端 Keepalive 发出但没确认对端是否回复,无法判断丢包方向
  • 按本端配置的 Hold Time 分析超时:实际运行值由协商决定,分析前先看邻居详情中的运行值
  • 把状态短暂出现当成故障:该状态本就瞬时,需要日志或抓包才能准确判断停留时间
  • 忽略 MTU 与分片问题:大尺寸报文受阻时,握手成功而后续更新失败,表现为建立后立刻断开

数据来源与参考

  • RFC 4271: OpenConfirm 状态
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌