首页/网络/BGP 与广域网速查/Open 报文字段要点
BGP 基础与邻居89 条

Open 报文字段要点

Open 报文携带版本、本地 AS、Hold Time、BGP Identifier 与可选能力:两端协商后按较严结果运行。

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

Open 报文承载什么

TCP 建连完成后,双方各发一个 Open 报文,把会话必需参数摆到桌面上:协议版本、本端 AS 号、Hold Time、BGP Identifier(Router ID)以及可选参数中的能力列表。参数协商失败时对端直接回 Notification 并拆会话,所以 OpenSent 阶段卡住或反复重置,第一件事就是看这五个字段。

基本信息

版本1 字节,BGP-4 固定为 4
本端 AS2 字节,使用 4 字节 ASN 时向老对端发送 AS_TRANS(23456)
Hold Time2 字节,取值 0 或 3 秒以上;两端取较小值运行
BGP Identifier4 字节,即 Router ID,两端不能相同且不能为 0
可选参数能力通告(Capabilities),如 MP-BGP、Route-Refresh、GR、Add-Path

典型使用场景

  • 会话停在 OpenSent:核对版本、AS、Router ID 与能力四项,多数问题出在这里
  • 4 字节 ASN 与老设备对接:查看是否出现 AS_TRANS,判断对端是否支持 ASN4 能力
  • Hold Time 不一致引起的抖动:确认实际运行值是按协商的小值还是被调成 0
  • 能力缺失定位:会话 Up 但某地址族没有路由,先看能力段落里有没有对应族
  • 抓包复盘:Open 报文里能看到对端真实参数,不受本地配置描述的影响

协商计算示例

协商计算示例
# 本端 Hold=90,对端 Hold=180
协商结果 Hold = 90(取较小值)
Keepalive 建议值 = Hold/3 = 30 秒

# 本端 Hold=0 表示不发 Keepalive、不因超时断开
# 与对端 90 秒协商后仍为 0,会话不会因 Keepalive 超时中断

字段异常对照

字段常见异常表现与处理
版本对端为非 4 版本回 Open Message Error 子码 1,老设备互联时偶见
AS 号与本端 remote-as 不匹配回 Bad Peer AS(子码 2),先核对两端 AS 配置
BGP Identifier为 0 或与对端相同回 Bad BGP Identifier(子码 3),改 Router ID 后重启会话
Hold Time一端配 2 秒这类非法值取值范围违规会被拒绝,需改成 0 或 3 秒以上
能力缺少 MP-BGP 或 ASN4会话能 Up,但对应地址族不通或 AS 号显示为 23456

查看与抓包

查看与抓包
show ip bgp neighbors 10.0.0.2
# 关注段落:BGP version / remote AS / BGP state = OpenSent
#          Hold time / keepalive interval / 能力列表
!
# 抓包直接看 Open 原文(Wireshark 过滤器)
bgp.type == 1
BGP Identifier 在 BGP-4 中通常取本机 Router ID,取值来源优先看 bgp router-id 配置,其次取最大的环回地址,最后才取物理接口地址。同一设备上多个进程或 RR 场景要保证全网唯一。

易错点

  • 按本端配置的 Hold Time 排查超时:实际运行值可能被协商调小,必须看邻居详情里的运行值
  • 两端 Router ID 相同:Open 阶段就被拒绝,表现为会话无法进入 Established,改完 ID 还需重置会话才生效
  • 只关注版本与 AS 而忽略能力协商:出现「会话正常、路由不交换」时容易查错方向
  • 误以为 AS_TRANS 是配置错误:它是 4 字节 ASN 与老对端互通的桥梁,真正要查的是对端是否支持 ASN4 能力

数据来源与参考

  • RFC 4271: Open 报文格式
  • RFC 5492: 能力协商
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌