BGP 的三张路由视图
BGP 把路由数据分三层存放:从每个邻居收到的原始路由叫 Adj-RIB-In,它是策略处理前的样子;经过入策略、选路之后确定的最优结果进入 Loc-RIB;准备发给各邻居的集合是 Adj-RIB-Out,受出策略约束。排障时判断「收到但没选」还是「压根没收」靠的就是这三层的对比。
基本信息
| Adj-RIB-In | 某邻居发来的全部路由,未过滤前 |
|---|---|
| Loc-RIB | 本机最优路由集合,供转发表使用 |
| Adj-RIB-Out | 本机打算发给某邻居的路由,已过出策略 |
| Cisco 查看 | neighbors x routes / show ip bgp / neighbors x advertised-routes |
| 华为查看 | display bgp routing-table peer x received-routes 与 advertised-routes |
典型使用场景
- 对端称已发送而本端没有:先看 Adj-RIB-In 是否有该前缀,判断是被拒还是没收到
- 排除入策略误伤:查看策略生效前后的差异,定位是哪条过滤把路由挡掉
- 确认发布范围:用 advertised-routes 核对本端实际对某邻居发出的前缀
- 前缀数量异常排查:对比收发表与最优表,识别大量被策略拒绝的情况
- 变更前后留证:变更前保存三层视图输出,作为回退与验收依据
三层视图查看命令
三层视图查看命令
# Adj-RIB-In:该邻居发来的原始路由
show ip bgp neighbors 10.0.0.2 routes
#
# Loc-RIB:本机最优路由集合
show ip bgp
show ip bgp 10.100.0.0/16
#
# Adj-RIB-Out:本机准备发给该邻居的路由
show ip bgp neighbors 10.0.0.2 advertised-routes
#
# 邻居收到的路由(部分平台支持,可反向核对)
show ip bgp neighbors 10.0.0.2 received-routes差异定位
| 对比 | 含义 | 后续动作 |
|---|---|---|
| 收发表有、最优表无 | 被入策略拒绝或选路未胜出 | 查入 route-map 与属性比较 |
| 收发表也没有 | 对端未发送或发送被中间过滤 | 在对端执行 advertised-routes 核对 |
| 本端要发、对端没收到 | 路上被过滤或对端入策略拒绝 | 核查路径过滤与对端策略 |
| 两表都有但不通 | 下一跳不可达或转发表未安装 | 查下一跳与 CEF/转发表 |
排错记录模板
排错记录模板
# 变更前留档
show ip bgp summary > pre-change.txt
show ip bgp neighbors 10.0.0.2 routes > pre-in.txt
#
# 变更后比对
show ip bgp neighbors 10.0.0.2 routes
# 重点关注条目增减与属性变化,而不是只看会话是否 Up未开启保存原始副本时,部分平台无法直接查看入策略前的路由,此时可临时启用或依靠对端 advertised-routes 与抓包来间接确认。判断依据要写清楚,避免把推断当成事实。