关于Route-Policy,这篇讲解详细,看一遍就理解!

网络 路由交换
通过本期专题,我们把Route-Policy的组成结构、匹配规则基本上就讲清楚了,也通过一个实例让大家了解了Route-Policy的使用场景和配置方法。

在上一期的​​路由策略​​专题中,我们曾经提到,很多人会把路由策略等同于Route-Policy,虽然这不太准确,但是能够体现出Route-Policy的重要性和普遍性。Route-Policy是一种比较复杂的过滤器,它不仅可以匹配路由信息的某些属性,还可以在条件满足时改变路由信息的属性。这一期我们就详细介绍一下Route-Policy,包括Route-Policy的组成、匹配规则和使用举例等内容。

1. Route-Policy的组成

如图1所示,Route-Policy由节点号、匹配模式、if-match子句(条件语句)和apply子句(执行语句)这四个部分组成。

图1 Route-Policy的组成

(1) 节点号

一个Route-Policy可以由多个节点(node)构成。路由匹配Route-Policy时遵循以下两个规则:

  • 顺序匹配:在匹配过程中,系统按节点号从小到大的顺序依次检查各个表项,因此在指定节点号时,要注意符合期望的匹配顺序。
  • 唯一匹配:Route-Policy各节点号之间是“或”的关系,只要通过一个节点的匹配,就认为通过该过滤器,不再进行其它节点的匹配。

(2) 匹配模式

节点的匹配模式有两种:permit和deny。

  • permit指定节点的匹配模式为允许。当路由项通过该节点的过滤后,将执行该节点的apply子句,不进入下一个节点;如果路由项没有通过该节点过滤,将进入下一个节点继续匹配。
  • deny指定节点的匹配模式为拒绝。这时apply子句不会被执行。当路由项满足该节点的所有if-match子句时,将被拒绝通过该节点,不进入下一个节点;如果路由项不满足该节点的if-match子句,将进入下一个节点继续匹配。

注意事项:通常在多个deny节点后设置一个不含if-match子句和apply子句的permit模式的Route-Policy,用于允许其它所有的路由通过。

(3) if-match子句(条件语句)

if-match子句用来定义一些匹配条件。Route-Policy的每一个节点可以含有多个if-match子句,也可以不含if-match子句。如果某个permit节点没有配置任何if-match子句,则该节点匹配所有的路由。

(4) apply子句(执行语句)

apply子句用来指定动作。路由通过Route-Policy过滤时,系统按照apply子句指定的动作对路由信息的一些属性进行设置。Route-Policy的每一个节点可以含有多个apply子句,也可以不含apply子句。如果只需要过滤路由,不需要设置路由的属性,则不使用apply子句。

2. 路由策略匹配结果

相信大家在使用或者学习Route-Policy的时候都重点关注这样一个问题:对于一条路由,在使用Route-Policy以后,最终结果是允许还是拒绝这条路由呢?这个最终的结果对于业务的影响是非常大的,可能会直接影响某种业务的通与不通。这就涉及到Route-Policy匹配规则的问题了,这里我们详细讨论一下。

Route-Policy每个node节点的过滤结果要综合以下两点:

  • Route-Policy的node节点的匹配模式(permit或deny)。
  • if-match子句(如引用的地址前缀列表或者访问控制列表)中包含的匹配条件(permit或deny)。

对于每一个node节点,以上两点的排列组合会出现表1所示的4种情况。

表1 Route-Policy的匹配规则

注1:Rule表示if-match子句中包含的匹配模式是permit还是deny。

注2:Mode表示Route-Policy中node节点对应的匹配模式permit还是deny。

上述四种组合情况中,前两种比较好理解,也比较常用。后两种相对难理解一点,这里我们以第三种情况为例,举例说明一下:

假设if-match子句中包含的匹配条件是deny,node节点对应的匹配条件permit,配置如下:

#
acl number 2001
rule 5 deny source 172.16.16.0 0 //拒绝172.16.16.0
#
acl number 2002
rule 5 permit source 172.16.16.0 0 //允许172.16.16.0
#
route-policy RP permit node 10 //在这个节点,172.16.16.0这条路由被拒绝,继续往下
if-match acl 2001
#

route-policy RP permit node 20 //在这个节点,172.16.16.0这条路由被允许
if-match acl 2002
#

这种情况下,有一个关键点就是在node 10,172.16.16.0这条路由被拒绝,同时会继续往下匹配,或许下一个节点就允许通过了呢?果然,继续往下走,到node 20这个节点的时候172.16.16.0又被允许了,所以Route-Policy的最终匹配结果是允许172.16.16.0这条路由。

注意事项:

如果Route-Policy中定义了一个以上的节点,应保证各节点中至少有一个节点的匹配模式是permit。因为Route-Policy用于路由信息过滤时:

  • 如果某路由信息没有通过任一节点,则认为该路由信息没有通过该Route-Policy。
  • 如果Route-Policy的所有节点都是deny模式,则没有路由信息能通过该Route-Policy。

3. 路由策略使用案例

通过上面两个小节,我们介绍完了Route-Policy的组成和匹配规则。这个小节中,我们来看一个Route-Policy的使用实例。

图2 使用Route-Policy实现数据分流示例

(1) 用户需求

如图2所示,某园区网络主要划分为生产网段和办公网段。LSW3下挂的终端访问下面的网段的时候流量模型如下:

  • 10.10.1.0/24-----生产网段,优先走LSW1出去,LSW2作为备份链路。(欢迎关注公众号:网络工程师阿龙)
  • 10.10.2.0/24-----办公网段,优先走LSW2出去,LSW1作为备份链路。
  • 10.10.3.0/24-----其他网段,随便走那边都行,负载分担即可。

这种流量模型,可以保证生产网络与办公网络的流量分离,便于维护和故障定位。同时,这种流量模型有利于流量均衡的分配到两条链路上,同时互相作为备份链路,有利于网络的稳定性。

(2) 配置过程

  • LSW1、LSW2、LSW3三个设备之间建立OSPF邻居关系。
  • LSW1和LSW2上配置到达上述网段的静态路由,并引入OSPF,从而通告给LSW3。
  • LW1和LSW2上配置路由策略,调整流量模型满足用户规划的需求。(欢迎关注公众号:网络工程师阿龙)

这里仅给出涉及路由策略的关键配置:

LSW1关键配置:

#
acl number 2000
rule 5 permit source 10.10.1.0 0 //用于匹配生产网段路由
#
acl number 2001
rule 5 permit source 10.10.2.0 0 //用于匹配办公网段路由
#
route-policy RP permit node 10
if-match acl 2000
apply cost 10 //设置生产网段路由的cost值为10

#
route-policy RP permit node 20
if-match acl 2001
apply cost 20 //设置办公网段路由的cost值位20

#
route-policy RP permit node 30 //剩余网段的路由允许进来,不做任何处理
#
ip route-static 10.10.1.0 255.255.255.0 192.168.14.2
ip route-static 10.10.2.0 255.255.255.0 192.168.14.2
ip route-static 10.10.3.0 255.255.255.0 192.168.14.2
#

LSW2关键配置:

#
acl number 2000
rule 5 permit source 10.10.1.0 0 //用于匹配生产网段路由
#
acl number 2001
rule 5 permit source 10.10.2.0 0 //用于匹配办公网段路由

#
route-policy RP permit node 10
if-match acl 2000
apply cost 20 //设置生产网段路由的cost值为20

#
route-policy RP permit node 20
if-match acl 2001
apply cost 10 //设置办公网段路由的cost值为10
#
route-policy RP permit node 30 //剩余网段的路由允许进来,不做任何处理
#
ip route-static 10.10.1.0 255.255.255.0 192.168.25.2
ip route-static 10.10.2.0 255.255.255.0 192.168.25.2
ip route-static 10.10.3.0 255.255.255.0 192.168.25.2
#

() 结果验证


完成上述配置以后,可以在LSW3上查看IP路由表,确认流量模型是否正确。

<LSW3> display ip routing-table 

Route Flags: R - relay, D - download to fib

------------------------------------------------------------------------------
Routing Tables: Public

Destinations : 9 Routes : 10


Destination/Mask Proto Pre Cost Flags NextHop Interface


10.10.1.0/24 O_ASE 150 10 D 192.168.13.1 Vlanif13
10.10.2.0/24 O_ASE 150 10 D 192.168.23.1 Vlanif23
10.10.3.0/24 O_ASE 150 1 D 192.168.23.1 Vlanif23
O_ASE 150 1 D 192.168.13.1 Vlanif13
127.0.0.0/8 Direct 0 0 D 127.0.0.1 InLoopBack0
127.0.0.1/32 Direct 0 0 D 127.0.0.1 InLoopBack0
192.168.13.0/24 Direct 0 0 D 192.168.13.2 Vlanif13
192.168.13.2/32 Direct 0 0 D 127.0.0.1 Vlanif13
192.168.23.0/24 Direct 0 0 D 192.168.23.2 Vlanif23
192.168.23.2/32 Direct 0 0 D 127.0.0.1 Vlanif23

从LSW3的路由表中可以看到,到达生产网段10.10.1.0/24的流量优先走LSW1,到达办公网段10.10.2.0/24的流量优先走LSW2,到达其他网段的流量在LSW1和LSW2两条链路上进行负载分担。流量模型符合预期。

通过本期专题,我们把Route-Policy的组成结构、匹配规则基本上就讲清楚了,也通过一个实例让大家了解了Route-Policy的使用场景和配置方法。本期专题中,我们主要使用了ACL来“抓取”需要的路由,实际上地址前缀列表(ip ip-prefix)在“抓取”路由方面会更精确一点,这个我们将会在下一期的路由策略专题中详细介绍。

责任编辑:赵宁宁 来源: 网络工程师阿龙
相关推荐

2021-08-12 10:36:18

order byMySQL数据库

2021-12-01 07:26:13

IO模型异步

2021-06-15 07:15:15

Oracle底层explain

2022-01-17 20:59:37

开发group by思路

2021-10-07 20:12:03

MVCC事务原理

2024-03-26 07:59:32

IO模型多路复用

2024-03-12 08:20:57

零拷贝存储开发

2020-02-09 17:30:54

反转链表程序员节点

2019-03-19 14:11:44

VLANLANMAC

2022-08-26 10:41:03

指针C语言

2023-09-12 07:31:45

HashMap线程

2019-09-19 08:04:40

网络七层模型TCPUDP

2021-10-08 07:53:01

事务隔离级别

2023-08-14 07:49:42

AI训练

2017-12-26 14:17:24

润乾报表

2023-01-10 19:47:47

Redis原理多线程

2020-04-21 23:14:08

数据并发控制

2021-11-25 08:16:46

Wi-FiWi-Fi 6路由Wi-Fi 5

2021-03-11 07:14:01

Epoll原理线程

2015-10-10 11:10:24

重敲代码拷贝粘贴
点赞
收藏

51CTO技术栈公众号