route-policy 的匹配条件
华为 VRP 的 route-policy 用 if-match 描述「什么样的路由命中本节点」,可用维度包括前缀范围、AS_PATH 正则、社区取值、标记与路由类型等。规则与 route-map 类似但表达更集中:同一节点内的多条 if-match 需要同时满足,节点命中后执行该节点的动作;如果所有节点都没命中,通常按平台默认行为处理,因此实际策略末尾往往要留一条放行的兜底节点。
基本信息
| 匹配前缀 | if-match ip-prefix <名>,按网段与掩码范围匹配 |
|---|---|
| 匹配来源 | if-match as-path-filter <名>,按 AS_PATH 正则匹配 |
| 匹配标签 | if-match community-filter <名>,按社区取值匹配 |
| 匹配标记 | if-match tag <值>,用于重分发防环 |
| 组合语义 | 同节点内多条 if-match 为「与」,全部满足才命中 |
典型使用场景
- 入向策略:只对业务前缀叠加来源 AS 条件,避免误伤其他路由
- 出口精细化:按业务类型前缀与社区标签同时限定,做定向发布
- 重分发防环:用 tag 条件拒掉回流路由
- 多来源区分:不同上游用不同 AS_PATH 条件分别处理
- 策略拆分:条件过多时拆成多个节点,提升可读性与可维护性
组合示例
组合示例
route-policy RP-IN permit node 10
if-match ip-prefix PL-BIZ
if-match community-filter CF-CUST
apply local-preference 150
#
route-policy RP-IN permit node 20 # 兜底:其余路由不打优先级
#
bgp 65001
ipv4-family unicast
peer 10.0.0.2 route-policy RP-IN import
# 核对
display bgp routing-table 10.1.1.0常用 if-match 条件
| 条件 | 匹配对象 | 典型场景 |
|---|---|---|
| ip-prefix | 网段与掩码范围 | 只对业务前缀做动作 |
| as-path-filter | AS_PATH 正则 | 按来源 AS 过滤或区分上游 |
| community-filter | 社区取值 | 按标签执行差异化策略 |
| tag | 路由标记 | 重分发防环 |
| route-type | 路由类型或协议来源 | 只对特定来源的路由生效 |
节点命中后节点内的 apply 动作会一起执行;条件堆得太多时,拆成若干节点比把五个 if-match 塞进一个节点更容易被人读懂,也更容易在排障时定位是哪一条在起作用。
评审时把每个节点读成一句人话,例如「带客户社区的 10.0.0.0/8 范围路由,入向优先级设为 150」。读不成通顺句子的节点,通常就是条件写错或漏写的地方。