从 RIB 到 FIB 逐层核对
一条路由收不到或不生效,按层查最快:对端是否真的通告(Adj-RIB-In)、本地入方向策略是否拦下、选路是否败给其它路径、最终是否装入转发表。顺着这条链走,比翻全表或重启会话有效得多,每一步也都能留下可验证的证据。
基本信息
| 第一层 | Adj-RIB-In:对端是否真的通告了该前缀 |
|---|---|
| 第二层 | 入方向策略是否把它过滤掉 |
| 第三层 | 选路是否被更优路径击败 |
| 第四层 | 是否装入 FIB、下一跳是否可达 |
| 取证原则 | 每层都要有证据,不要靠推测跳层 |
典型使用场景
- 业务不通,怀疑某网段没学到:逐层核对收到、过滤、选路与装载
- 扩容或割接后路由缺失:区分是对端收敛慢还是本地策略拦截
- 策略审计:把每一层的过滤条件写清楚,便于定位
- 与运营商对账:先确认对端通告内容,再讨论本地处理
- 故障复盘:固化分层排查动作,缩短下次定位时间
逐层命令
逐层命令
# Cisco
show ip bgp neighbors 203.0.113.2 received-routes | include 10.2.2.0 # 收到了吗
show ip bgp 10.2.2.0 # 进了 BGP 表吗,为什么没被选上
show ip route 10.2.2.0 # 进 FIB 了吗
# 华为
display bgp routing-table 10.2.2.0 24
display ip routing-table 10.2.2.0逐层判断
| 层 | 命令 | 缺失说明 |
|---|---|---|
| 收到 | received-routes | 对端未通告或会话未完成同步 |
| 过滤 | 入方向策略检查 | 被前缀列表或 route-map 拦下 |
| 选路 | show ip bgp <前缀> | 存在更优路径或下一跳不可达 |
| 装载 | show ip route | 未装入转发表或递归解析失败 |
received-routes 需要本端具备软重配置或对端支持路由刷新,条件不具备时命令可能不可用;不能把它作为对端没发的证据。
BGP 表项上的状态标记能直接说明问题:带下一跳不可达标记的路由不会被安装进转发表,属于选路之后的问题。
分层取证的价值在于把「谁的责任」变成可验证的事实:对端是否发出可由收到的集合证明,本地是否过滤可由策略与表项比对。