递归查找为何要控制
BGP 只携带下一跳地址,不携带到达下一跳的完整路径;设备要拿这个下一跳去 IGP 或静态路由里做递归查找,找到出接口和真正的邻接地址才能装表。麻烦在于查找结果取决于路由表里存在什么样的路由:如果到下一跳的只有一条主机路由(比如点对点链路的 32 位路由),或者下一跳需要通过隧道迭代,默认行为可能认为不可解析,路由就不会被优选。华为设备提供开关控制递归查找能否接受主机路由、能否按隧道迭代,这类场景在承载网与隧道组网里很常见。
基本信息
| 适用平台 | 华为 VRP,系统视图下配置 |
|---|---|
| 主机路由 | route recursive-lookup host-route |
| 隧道迭代 | route recursive-lookup tunnel |
| 作用 | 控制下一跳能否解析成功,影响路由优选 |
| 风险 | 放开后可能出现非预期路径,需评估 |
| 核对 | display ip routing-table 与 display bgp routing-table 对照 |
典型使用场景
- 点对点链路对端为 32 位主机路由:BGP 下一跳无法解析
- 隧道承载组网:下一跳需通过隧道迭代才能找到出口
- VPN 场景中下一跳在 VRF 内解析:需要确认查找范围
- 排障时确认是否「路由收到了但没装表」
- 割接前后对比路由表与 BGP 表条目数量是否一致
配置与核对
配置与核对
system-view
# 允许递归到主机路由,解决点对点链路下一跳无法解析
route recursive-lookup host-route
# 隧道承载场景按需启用
# route recursive-lookup tunnel
quit
# 对照两张表,确认路由是否已装表
display ip routing-table 10.0.0.2
display bgp routing-table 10.1.0.0
# 查看路由有效标志位
display bgp routing-table 10.1.0.0 verbose现象与处置
| 现象 | 常见原因 | 处置 |
|---|---|---|
| BGP 表有路由但不装表 | 下一跳无法解析 | 检查递归查找开关与到下一跳的路由 |
| 路由时有时无 | 下一跳依赖的路由不稳定 | 确认底层路由来源与抖动原因 |
| 误选非预期路径 | 递归放得过宽 | 收窄开关或加策略限定 |
| 隧道场景不优选 | 未启用隧道迭代 | 按需开启并观察转发路径 |
同一现象在不同厂商设备上表现不同:有的默认接受主机路由,有的需要显式开启;跨厂商组网时以各设备文档为准,不要直接套用命令。
排查这类问题时,先看是否收到了路由,再看是否装进了路由表,最后看出接口与下一跳,三步能把问题定位到具体环节。