首页/网络/BGP 与广域网速查/BGP 报文头部与常见计数含义
BGP 基础与邻居89 条

BGP 报文头部与常见计数含义

报文头部含长度、类型与标记:抓包最常见的异常是长度异常与类型序列不符,看懂头部结构能快速识别伪造与错帧。

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

BGP 报文头部与计数

所有 BGP 报文共享一个 19 字节固定头:16 字节 Marker、2 字节 Length、1 字节 Type,报文最大长度为 4096 字节。Marker 在全 1 时表示未使用认证机制,使用认证时其取值由认证算法决定。Type 字段直接标识报文种类,抓包时最常见的异常是长度与实际内容不符、以及类型序列不符合协议预期——后者往往意味着中间设备或实现有问题。

基本信息

固定头长度19 字节(Marker 16 + Length 2 + Type 1)
Length 范围最小 19,最大 4096
Marker未使用认证时为全 1;使用认证时取值由算法决定
Type 取值1 OPEN、2 UPDATE、3 NOTIFICATION、4 KEEPALIVE、5 ROUTE-REFRESH
解析工具抓包工具自带 BGP 解析器,可展开到每个字段

典型使用场景

  • 抓包排查:确认报文类型序列是否符合协议预期
  • 长度异常:判断是否存在错帧或中间设备改写
  • 会话建立过程分析:按 OPEN、KEEPALIVE 的先后顺序核对协商流程
  • 计数核对:把抓到的报文数与设备计数交叉验证
  • 教学与评审:说明头部结构,便于理解后续字段的含义

抓包与过滤

抓包与过滤
# 只抓 BGP 报文
tcpdump -ni eth0 'tcp port 179' -c 40
# Wireshark 显示过滤器:只看 UPDATE
# bgp.type == 2
# 保存后按类型统计
 tshark -r /tmp/bgp.pcap -Y bgp -T fields -e bgp.type | sort | uniq -c
# 对照设备侧计数
show ip bgp neighbors 10.0.0.2 | include messages

头部字段读法

字段长度含义与异常
Marker16 字节未使用认证时为全 1;异常取值需确认是否启用认证
Length2 字节含头部总长度,19~4096;与实际内容不符说明错帧或实现问题
Type1 字节1~5 对应五类报文;出现未知值需警惕
内容部分变动OPEN 含能力协商,UPDATE 含路由信息,NOTIFICATION 含错误码
直接对着十六进制手工解析头部效率很低,用抓包工具的 BGP 解析器展开字段即可;核对时重点关注长度与类型序列,这两处异常最能说明问题。
UPDATE 是最值得细看的一类:它承载路由信息,长度与内容不符通常出现在这里。OPEN 则包含能力协商结果,是判断「为什么某个地址族没有交换路由」的第一手材料。

易错点

  • 手工解析十六进制:效率低且容易读错偏移,浪费窗口时间
  • 忽略 Length 与实际内容不符:这种不一致通常指向错帧或中间改写
  • 不看类型序列:报文顺序异常是协议层问题的直接证据,错过就只剩猜
  • 混淆类型编号含义:NOTIFICATION 是错误通告,看到它就说明协商或会话已出问题

数据来源与参考

  • RFC 4271: 报文格式
  • Wireshark: BGP 解析器
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌