首页/网络/BGP 与广域网速查/抓包观察 BGP 建邻过程
BGP 基础与邻居89 条

抓包观察 BGP 建邻过程

用抓包观察 TCP 握手与 BGP 报文序列:建邻卡壳时能看到 SYN 重传、Open 参数与 Notification,是定位最快的手段之一。

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

抓包能看到什么

BGP 建邻过程中的每一层都能在报文里看到:TCP 三次握手的完成情况、双方 Open 报文的参数、Keepalive 是否往返、以及出错时 Notification 的错误码。当厂商之间对问题归属有分歧时,抓包是唯一不带立场的证据。抓包点通常选在本端设备与对端设备各一次,用于区分「发出去了」与「收到了」。

基本信息

过滤器tcp port 179,必要时加上 host 限定
正常序列SYN → SYN/ACK → ACK → Open → Open → Keepalive → Established
报文类型1 Open、2 Update、3 Notification、4 Keepalive、5 Route-Refresh
抓包位置两端各抓一次,中间设备故障时还需在路径中间抓
分析工具Wireshark 追踪 TCP 流,可直接解析 BGP 字段

典型使用场景

  • 会话卡在中间状态:确认是哪一方没有再发下一个报文
  • Notification 溯源:读取错误码与子码,定位参数、能力或策略问题
  • 丢包定位:看同一报文在一端发出、在另一端是否出现
  • 中间设备嫌疑排查:确认丢包发生在入向还是出向路径
  • 批量更新失败:观察大报文是否重复重传,判断 MTU 相关故障

抓包命令

抓包命令
# Linux 侧抓包并保存
tcpdump -i eth0 -nn 'tcp port 179' -w bgp.pcap
# 限定单一邻居,避免噪声
tcpdump -i eth0 -nn 'host 10.0.0.2 and tcp port 179' -w bgp.pcap
#
# 回读分析
tcpdump -r bgp.pcap -nn | head -50
#
# Wireshark:追踪流并只看 BGP 报文
# 过滤器:tcp.stream eq 0 && bgp

现象与结论

抓包现象指向的问题下一步
只有 SYN 反复重传对端未响应,可能被 ACL 拦截或无回程路由核对两端策略与路由
立即收到 RST对端未监听 179 或策略拒绝确认对端 BGP 已启用
双方 Open 后无 Keepalive路径丢包或对端处理异常检查链路质量与设备负载
出现 Notification参数、能力或前缀超限问题按错误码定位
Update 反复重传同一段MTU 不匹配或丢包导致分片异常检查 MTU 与 MSS

双端对照的方法

双端对照的方法
# 本端抓包:确认是否发出 SYN 与 Open
tcpdump -i eth0 -nn 'host 10.0.0.2 and tcp port 179' -c 30
#
# 对端抓包:确认是否收到、是否回复
# 若本端发出 3 个 SYN、对端只看到 1 个 → 路径丢包
# 若对端看到 SYN 并回复但本端未收到 → 回程被拦
#
# 设备侧也可用内置抓包功能(如 Cisco monitor capture)保存到本地再分析
抓包会捕获业务流量的报文内容,包含路由信息与可能的敏感字段。文件传输与分析应限定在受控环境内,分析结束后及时清理,避免长期留存在共享目录中。

易错点

  • 只抓单侧:无法判断丢包方向,证据链不完整,容易得出错误结论
  • 过滤条件过宽:抓取的无关流量淹没 BGP 报文,关键片段被冲掉
  • 抓包时长过短:震荡类问题需要覆盖完整周期,短时抓包往往抓不到失败时刻
  • 只看 TCP 层不看 BGP 字段:Notification 的应用层错误码才是根因线索
  • 忽略抓包点的位置:在错误链路上抓包,看到的现象与真实路径无关

数据来源与参考

  • Wireshark: BGP 协议解析
  • RFC 4271: 报文序列
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌