缺省动作怎么理解
route-map 挂到应用点之后,未命中任何条目的路由按该应用点的缺省规则处理:邻居入向默认拒绝、出向默认不发布、重分发默认不引入。这意味着「只写精确条目」等于把其余路由全部丢弃,因此生产环境中通常要在末尾加一条空的 permit 作为兜底。
基本信息
| 入向未命中 | 拒绝该路由,不进入 BGP 表 |
|---|---|
| 出向未命中 | 不向该邻居发布该前缀 |
| 重分发未命中 | 不重分发该路由 |
| 兜底写法 | 末尾加空 permit 条目(无 match 无 set) |
| 条目顺序 | 按序号从小到大,命中即执行并结束 |
| 验证 | show route-map <名称> 查看条目与引用计数 |
典型使用场景
- 按业务设置属性时保留其余路由:末尾加空 permit 兜底
- 严格过滤场景:故意不加兜底,只放行明确允许的集合
- 重分发只引入指定前缀:未命中的不引入,本身就是过滤
- 变更前评估影响面:确认哪些路由会因为未命中被丢弃
- 策略审计:检查是否存在只写精确条目却未考虑兜底的情况
兜底写法
兜底写法
route-map RM-SAFE permit 10
match ip address prefix-list PL-CRIT
set local-preference 200 # 关键业务前缀抬高优先级
route-map RM-SAFE permit 999 # 兜底:放行其余路由且不修改属性
!
router bgp 65001
neighbor 10.0.0.2 route-map RM-SAFE in
!
show route-map RM-SAFE # 查看条目与引用计数
show ip bgp 10.1.1.0/24 | include locPrf # 核对关键前缀是否被抬高有兜底与无兜底的差别
| 场景 | 无兜底条目 | 有兜底条目 |
|---|---|---|
| 入向按前缀设属性 | 其余前缀被拒,接收集合骤减 | 其余前缀照常接收且属性不变 |
| 出向按前缀改属性 | 其余前缀不再发布给该邻居 | 其余前缀照常发布 |
| 重分发限范围 | 符合预期的过滤行为 | 会引入本不该引入的路由 |
| 应急收窄发布 | 故意不留兜底以快速收窄 | 保留兜底则收窄无效 |
空 permit 条目表示放行其余路由且不修改属性,这是最常见的兜底写法;空 deny 条目则等同于拒绝全部剩余路由。
只写精确条目不加兜底,等于把策略变成了白名单:变更瞬间就可能让对端收不到任何路由,上线前务必确认这是有意为之。