1、route-policy:路由策略
1.1、概念:
控制层流量:路由协议传递路由信息产生的流量
数据层流量:设备访问目标地址时产生的流量
1.2、定义:
路由策略是一种为了改变网络流量所经过的途径而修改路由信息的技术。它可以根据用户定义的规则,对路由信息进行过滤、修改属性等操作,从而实现对网络路由的精细控制:控制层流量
1.3、作用:
- 路由过滤:通过设置特定的匹配条件,对路由信息进行筛选,决定哪些路由可以通过,哪些需要被拒绝。
- 修改路由属性:可以对匹配到的路由信息的属性进行修改,如度量值、优先级、标记等,从而影响路由的选择和传播。
1.4、做路由策略的思路:
(1)抓取流量
这是路由策略的第一步,通过 ACL 或前缀列表(ip prefix)来实现。
ACL 可以根据源地址、目的地址等数字特征对流量进行匹配,而前缀列表则可以更精确地匹配 IP 地址前缀和掩码长度。
(2)做策略:对流量进行修改或者不转发
对抓取到的流量进行处理,根据需求对流量进行修改或者不转发。
例如,可以修改路由的度量值,使其在路由选择中更具优势,或者直接拒绝某些不符合条件的路由信息。
练习1:
前缀匹配列表:
ip ip-prefix aa permit 10.1.1.0 24
route-policy policy_a permit node 10
if-match ip-prefix aa
apply cost 100
在这个示例中,首先定义了一个前缀列表 ip - prefix aa
,允许 10.1.1.0/24 这个网络地址通过。然后创建了一个路由策略 policy_a
,在节点 10 中,使用 if - match
语句匹配前缀列表 aa
,如果匹配成功,则使用 apply
语句将匹配到的路由的度量值设置为 100。
练习2:
匹配ACL:
acl 2002
rule permit source 10.2.2.0 0.0.0.255
route-policy policy_a permit node 20
if-match acl 2002
apply tag 20
这里先创建了一个 ACL 2002,允许源地址为 10.2.2.0/24 的流量通过。然后在路由策略 policy_a
的节点 20 中,使用 if - match
语句匹配 ACL 2002,如果匹配成功,则使用 apply
语句给匹配到的路由打上标记 20。
练习3:
route-policy policy_a deny node 30
在这个节点中,没有 if - match
语句,这意味着匹配所有路由,并且由于是 deny
模式,所有路由都会被拒绝。
没有写任何的apply,则不对任何路由进行属性修改
练习4:
route-policy policy_a deny node 30
if-match acl 2002
apply cost 30
思考apply cost 30有意义吗?
在这个节点中,虽然使用了 apply cost 30
语句,但由于该节点是 deny
模式,路由不会通过,所以 apply cost 30
没有实际意义。
匹配规则:
(1)路由信息到达时,检查是否配置了路由策略,如果配置,则进入节点匹配;否则放行;
(2)检查路由策略第一个节点的if-match条件,匹配则检查节点动作是permit还是deny,如果是permit则进一步检查apply子句,有apply子句则执行路由属性修改并放行。没有apply子句则不修改属性并放行;如果是deny则不能通过。如果没有匹配该节点的if-match条件,则检查下一个节点
(3)最后一个节点仍不匹配,则拒绝该路由信息通过。
1.5、基本配置:
a.创建一个route-policy节点
route-policy route-policy-name { permit | deny } node node编号
节点之间的关系是“或”的关系,如果通过了其中一个节点,就意味着通过该路由策略,不再对其他节点进行匹配
b.配置if-match语句,使用if-match命令可定义匹配条件,所匹配的对象是路由信息的一些属性,例如路由的目的网络地址或掩码长度、度量值、标记或下一跳IP地址等
节点的匹配规则表:
练习1:
if-match语句之间是“与”的关系,需要同时满足要求:
route-policy aaa permit node 10
if-match acl 2000
if-match acl 2001
练习2:
如果两个 ACL 之间没有交集,如下面的例子:
acl 2000
rule permit source 192.168.1.0 0.0.0.255
acl 2001
rule permit source 192.168.2.0 0.0.0.255
route-policy aaa permit node 10
if-match acl 2000
if-match acl 2001
不可能有一条路由同时满足这两个acl,两个acl之间毫无交集。所以练习2这个路由策略写的毫无意义。
c.配置apply 语句,执行语句
在 Route-Policy的节点视图下,使用apply命令指定需执行的动作,这些动作主要是对所匹配的路由的某些属性进行修改
apply执行动作表
设置路由的度量值:apply cost cost
设置OSPF的度量值类型:apply cost-type { type-1 / type-2 }
设置路由的标记:apply tag tag
注:一个节点中可以不包含任何 apply语句,此时该节点只被用于执行路由过滤,而不用于设置路由的属性
1.6、注意事项
- 当 route - policy 用于路由过滤时,不用配置空节点。
- 当 route - policy 仅用于属性修改时,需要配置空节点。
- route - policy 能够配置的位置包括:IGP 路由引入时、BGP 宣告时、BGP 路由引入、BGP 邻接关系上。
1.7、route-policy的应用
(1)用route-policy来控制路由接收和发布时的属性
通过路由策略,可以对接收和发布的路由信息的属性进行修改,如调整度量值、优先级等,从而影响路由的选择和传播。
(2)用route-policy来控制路由的引入
在不同的路由协议之间进行路由引入时,使用路由策略可以对引入的路由信息进行过滤和属性修改,确保引入的路由符合网络的需求。