BGP 基础与邻居89 条

BGP 五类报文

BGP 会话依赖五类报文:Open(协商)、Update(更新路由)、Notification(错误通知)、Keepalive(保活)、Route-Refresh(请求重发)。

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

五类报文

BGP 会话依赖五类报文:Open 用于参数协商,Update 用于携带路由更新,Notification 用于报告错误并关闭会话,Keepalive 用于保活,Route-Refresh 用于请求对端重新发送路由。排障时按报文类型过滤抓包,比全量看包高效得多。

基本信息

承载协议TCP 179
Open协商版本、AS 号、hold time、能力
Update携带 NLRI 与路径属性,一次可带多条
Notification错误码与子码指出具体失败原因
Keepalive默认 60 秒发送一次,内容为空
Route-Refresh需能力协商支持,是软重置的前提

典型使用场景

  • 抓包排障:按报文类型判断会话停在哪一步
  • 定位断连原因:查看会话关闭前的 Notification 错误码
  • 验证策略是否生效:观察 Update 是否携带了预期属性
  • 会话抖动分析:核对 Keepalive 间隔与超时是否匹配
  • 变更前后对比:记录 Update 数量与内容变化

报文一览

报文用途要点
Open参数协商版本、AS 号、hold time 与能力字段
Update路由更新NLRI 加路径属性,一次可带多条前缀
Notification错误与关闭错误码定位原因,是断连排查的关键
Keepalive保活默认 60 秒,内容为空,仅维持会话
Route-Refresh请求重通告支持软重置的前提,需能力协商

抓包与查看

抓包与查看
# 设备侧查看报文计数与收发统计
show ip bgp neighbors 10.0.0.2            # 输出含消息收发计数与队列
show ip bgp summary                       # 会话级状态与前缀数
# 抓包时按端口与报文类型过滤
tcpdump -i eth0 -nn 'tcp port 179'        # 全量抓取
tcpdump -i eth0 -nn 'tcp port 179 and tcp[tcpflags] & tcp-push != 0'   # 只看带数据的报文
Notification 报文的错误码与子码是断连原因的直接证据:会话消失前的那一条通知,比事后猜测配置问题可靠得多。
Route-Refresh 只是请求对端重发,不等于重新协商:它依赖双方都宣告了该能力,未协商时该机制不可用。

按报文类型排障

观察到的现象相关报文排查方向
会话建立后立即断开Notification读错误码与子码,定位参数不匹配项
路由迟迟不到Update检查策略过滤与收发计数
会话周期性中断Keepalive核对 hold time 与实际链路质量
软重置无效Route-Refresh确认双方是否协商该能力

易错点

  • 忽略 Notification:会话断开前的原因码都写在里面
  • 把 Route-Refresh 当重传:它只是请求对端重发,需要能力协商支持
  • 只看 Update 不看保活:Keepalive 异常会导致会话超时中断,不体现在路由变化上
  • 抓包不做过滤:全量抓取会淹没关键报文,先按端口与类型收窄再看内容

数据来源与参考

  • RFC 4271: 报文类型
  • RFC 2918: Route Refresh
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌