震荡排查从时间规律开始
邻居反复 Up/Down 时,最有价值的信息是「多久断一次、断在哪一秒、同时还有什么告警」。是固定周期(可能是 Keepalive 或老化时间相关)、还是随机分布(更像链路抖动或资源竞争)、还是集中在一个时间段(可能对端维护),这三种规律直接指向不同的排查方向。
原因速查
| 类别 | 线索 | 动作 |
|---|---|---|
| 链路抖动 | 接口频繁 Up/Down 日志 | 检查光模块、线路与错包计数 |
| 定时器超时 | Hold timer expired 记录 | 查丢包、时延、CPU 与 BFD 状态 |
| 前缀超限 | maximum-prefix 触发 | 核对对端发布范围与阈值余量 |
| 路由大量撤销 | 更新风暴与 TblVer 频繁变化 | 查对端策略变更与下一跳抖动 |
| 参数不匹配 | Notification 错误码 | 核对 AS、认证、能力与版本 |
| 对端维护 | 对端主动关闭记录 | 与对端确认是否存在计划操作 |
| 资源紧张 | CPU 高、内存不足、进程重启 | 查看进程与硬件资源趋势 |
基本信息
| 第一手证据 | 邻居状态变化日志与接口日志的时间戳对照 |
|---|---|
| 量化指标 | 单位时间内的断开次数与持续时长 |
| 关键命令 | show ip bgp summary、show logging、show interface |
| 辅助手段 | 抓包与 BFD 状态,用于区分「链路断」与「会话断」 |
| 记录要求 | 设备需开启 NTP,多设备日志才可对齐 |
典型使用场景
- 业务间歇性中断:先定位是否与 BGP 断链时间点重合
- 割接后异常:确认是变更引入还是既有问题被触发
- 对端交涉:用日志事实说明断开方向与原因,减少互相推诿
- 长期治理:把断开频次纳入监控,形成趋势数据
- 扩容评估:判断震荡是否与邻居数量或表项规模增长相关
排查命令序列
排查命令序列
# 1) 看状态与计时器
show ip bgp summary
# 2) 看历史断开原因
show ip bgp neighbors 10.0.0.2 | include Last
# 3) 看日志时间线
show logging | include BGP
show logging | include GigabitEthernet0/1
# 4) 看接口错误计数
show interface GigabitEthernet0/1 | include error|drops
# 5) 看设备资源
show processes cpu | include BGP固定周期震荡的判断
固定周期震荡的判断
# 若每隔固定时间断开一次,优先怀疑:
# 1) 中间设备会话老化时间短于 Keepalive 间隔
# 2) Hold Time 协商值过小,对丢包敏感
# 3) 存在会定期刷新的策略或探测导致链路瞬断
show ip bgp neighbors 10.0.0.2 | include hold|keepalive
tcpdump -i eth0 -nn 'tcp port 179' -w bgp.pcap
# 用抓包对比断开前的最后几个报文不要只在本端找原因:对端维护、对端设备资源不足、对端策略变更都会表现为本端「邻居有问题」。列出断开的主动方(Last reset by 字段)能快速判断是本地还是远端触发。