路由策略Route-policy详解

数通2022-11-08
  • 概述
  • Route-policy的配置
    • 创建route-policy
    • 配置if-match子句
    • 配置apply子句
  • Route-policy配置示例

路由策略Route-policy详解

一、概述

路由策略Route-policy详解-下一朵云
图1 RIP引入到OSPF

如图1所示,我们要在R2上部署RIP到OSPF的重发布。在执行重发布的命令中,可以关联cost关键字来指定路由注入ospf之后的cost。但是这是针对所有被注入的路由的。另外import-route rip命令会将R2路由表中的RIP路由全都注入OSPF。

如果希望只注入特定的路由,或在注入过程中过滤掉某些路由呢?或者针对不同的路由在注入后设置不同的OSPF cost呢?这个时候就可以使用到route-policy了。

路由策略Route-policy详解-下一朵云
图2 Route-policy RP

Route-policy是一个非常重要的基础性策略工具。可以把它想象成一个拥有多个节点(node)的列表(这些node按照编号大小排序)。在每个节点中,可以定义条件语句和执行语句,如图2所示。

route-policy执行的时候,是自上而下进行计算的。首先看节点1(这里假设编号最小的节点为1),对节点1中的“条件语句”进行计算,如果所有的条件都满足,则执行该节点下的“执行语句”,并且不会再继续往下一个节点进行匹配了。而如果节点1中,有任何一个条件不满足,则继续看下一个节点,到节点2中去匹配条件语句,如果全都满足则执行该节点中定义的执行语句,如果不满足,则继续往下一个节点进行,以此类推。如图3就是一个route-policy:

路由策略Route-policy详解-下一朵云
图3 route-policy举例

二、Route-policy的配置

1.创建route-policy

[Huawei]route-policy name {permit | deny} node node
  • permit关键字指定节点的匹配模式为允许。当该节点下所有的条件都被满足时,将执行该节点的apply子句,不进入下一个节点;如果有任何一个条件不满足,将进入下一个节点继续计算。
  • deny关键字指定节点的匹配模式为拒绝,这时apply子句不会被执行。当该节点下所有的条件都被满足时,将被拒绝通过该节点,不进入下一个节点;如果任何一个条件不满足,将进入下一个节点继续计算。
  • 默认情况下,所有未匹配的路由将被拒绝通过route-policy。如果route-policy中定义了一个以上的节点,则各节点中至少应该有一个节点的匹配模式是permit

2.配置if-match子句

[Huawei-route-policy] if-match ?

acl 匹配ACL
cost 匹配路由信息的cost
interface 匹配路由信息的出接口
ip { next-hop | route-source | group-address }  匹配IPv4的路由信息(下一跳、源地址或组播组地址)
ip-prefix  匹配前缀列表
route-type 匹配各类型路由信息
tag 匹配路由信息的标记域
……
  • 对于同一个route-policy节点,命令if-match acl和命令if-match ip-prefix不能同时配置,后配置的命令会覆盖先配置的命令。
  • 对于同一个Route-Policy节点,在匹配的过程中,各个if-match子句间是“与”的关系,即路由信息必须同时满足所有匹配条件,才可以执行apply子句的动作。但命令if-match route-type和if-match interface除外,这两个命令的各自if-match子句间是“或”的关系,与其它命令的if-match子句间仍是“与”的关系。
  • 如不指定if-match子句,则所有路由信息都会通过该节点的过滤。

3.配置apply子句

[Huawei-route-policy] apply ?
cost  设置路由的cost
cost-type { type-1 | type-2 }  设置OSPF的开销类型
ip-address next-hop  设置IPv4路由信息的下一跳地址
preference  设置路由协议的优先级
tag 设置路由信息的标记域
……

三、Route-policy配置示例

路由策略Route-policy详解-下一朵云
图4 route-policy配置示例
# 定义一个acl2000,用于匹配需要放行的路由:
[R1] acl 2000
[R1-acl-basic-2000] rule permit source 172.16.1.0 0.0.0.0
[R1-acl-basic-2000] quit

# 创建一个route-policy,名字叫RP,同时配置第一个节点,节点编号为10:
[R1] route-policy RP permit node 10
[R1-route-policy] if-match acl 2000  # 在节点10中,定义了一个if-match子句,调用acl 2000
[R1-route-policy] apply cost 20 # 在节点10中,定义了一个apply子句,设置cost为20

[R1] ospf 1
[R1-ospf-1] import-route direct route-policy RP # 在ospf注入直连路由的时候调用这个route-policy

由于route-policy在末尾隐含“拒绝所有”的节点,因此172.16.2.0/24及172.16.3.0/24路由因为没有满足任何节点的if-match语句,从而不被注入到OSPF中。


补充说明:

(1)关于Route-policy中的if-match子句:

  • 在一个路由策略节点中,如果不配置if-match子句,则表示路由信息在该节点匹配成功。
  • 如果配置一条或多条if-match子句,则各个if-match子句之间是“与”的关系,即路由信息必须同时满足所有if-match子句,才算该节点匹配成功。
  • 但命令if-match as-path-filter、if-match community-filter、if-match extcommunity-filter、if-match interface和if-match route-type除外,这五个命令的各自if-match子句间是“或”的关系,与其它命令的if-match子句间仍是“与”的关系。

(2)Route-policy的if-match子句创建匹配规则时,不能匹配BGP的Origin属性,如下图5

路由策略Route-policy详解-下一朵云
图5 if-match匹配BGP属性
版权声明:本文为下一朵云发布文章,转载请附上原文出处链接和本声明。
本文链接:https://www.orcy.net.cn/3251.html

​ 广告:HCIE-Security认证课程辅导资料(付费)

暂无评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注