抓包能看到什么
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)保存到本地再分析抓包会捕获业务流量的报文内容,包含路由信息与可能的敏感字段。文件传输与分析应限定在受控环境内,分析结束后及时清理,避免长期留存在共享目录中。