什么是有路由但没装载
BGP 表里能看到某条前缀,主表里却找不到它,这类现象叫 rib-failure。最常见的原因是同一前缀已经存在管理距离更优的路由(静态路由或 IGP 路由)占用主表,BGP 学到的路径因此没有被安装。它与「策略把路由过滤掉了」表现不同:前者在 BGP 表中可见,后者根本查不到。
基本信息
| 命令 | show ip bgp rib-failure [detail] |
|---|---|
| 常见原因 | 存在管理距离更优的同前缀路由 |
| 表现 | BGP 表有条目但主表未装载 |
| 与过滤的区别 | 过滤导致 BGP 表中查不到该前缀 |
| 处理 | 核对来源与 distance 设计后再调整 |
| 适用设备 | Cisco IOS 命令;其他平台有相似诊断输出 |
典型使用场景
- 业务不通但 BGP 表里能看到路由:优先排查此类问题
- 迁移期间静态路由与 BGP 同时存在,确认谁在生效
- 双协议共存环境:IGP 与 BGP 学习到同一前缀时的冲突
- 变更后验收:确认选出的路径确实已进入主表
- 排查下一跳不可达:与 rib-failure 一起确认装载状态
排查命令
排查命令
show ip bgp rib-failure # 列出未装载的 BGP 路由及原因
show ip bgp rib-failure detail # 更详细的拒绝原因
show ip route 10.1.1.0 # 主表当前生效的来源与管理距离
show ip bgp 10.1.1.0/24 # BGP 表视角的候选路径两个方向的现象对照
| 现象 | BGP 表 | 主表 | 排查方向 |
|---|---|---|---|
| 策略过滤 | 查不到该前缀 | 无 | 入向策略与邻居配置 |
| rib-failure | 能看到该前缀 | 无 | 管理距离与冲突来源 |
| 下一跳不可达 | 能看到且为最优 | 可能无 | IGP 可达性与下一跳 |
| 正常 | 能看到且为最优 | 有且来源为 BGP | 无需处理 |
这是「BGP 有路由但不通」的常见原因,与策略过滤导致的缺路由表现不同:前者的前缀在 BGP 表中可见。
不要直接用调整管理距离覆盖冲突:先确认占用的那条路由是否属于设计所需,改动可能影响其他前缀的转发。
判断业务为何不通,先区分三个层次:BGP 表里有没有该前缀、主表有没有装载、下一跳是否可达。三层都确认后再看转发路径,能避免大量无效排查。