网
工
圈
网络工程师阿龙 圈内最早的公益公众号,本号已有HCIE认证!学网络关注我一个就够了!(关注近5w+)关注 听说 99%的 网工都来这里充电吖 很多人会把路由策略等同于Route-Policy,虽然这不太准确,但是能够体现出Route-Policy的重要性和普遍性。Route-Policy是一种比较复杂的过滤器,它不仅可以匹配路由信息的某些属性,还可以在条件满足时改变路由信息的属性。这一期我们就详细介绍一下Route-Policy,包括Route-Policy的组成、匹配规则和使用举例等内容。1 Route-policy的组成 如图 1 所示, Route-Policy 由节点号、匹配模式、 if-match 子句(条件语句)和 apply 子句(执行语句)这四个部分组成。
图1 Route-Policy的组成
l 节点号
一个 Route-Policy 可以由多个节点( node )构成。路由匹配 Route-Policy 时遵循以下两个规则: 1 ) 顺序匹配:在匹配过程中,系统按节点号从小到大的顺序依次检查各个表项,因此在指定节点号时,要注意符合期望的匹配顺序。 2 ) 唯一匹配: Route-Policy 各节点号之间是“或”的关系,只要通过一个节点的匹配,就认为通过该过滤器,不再进行其它节点的匹配。l 匹配模式
节点的匹配模式有两种: permit 和 deny 。 1 ) permit 指定节点的匹配模式为允许。当路由项通过该节点的过滤后,将执行该节点的 apply 子句,不进入下一个节点;如果路由项没有通过该节点过滤,将进入下一个节点继续匹配。 2 ) deny 指定节点的匹配模式为拒绝。这时 apply 子句不会被执行。当路由项满足该节点的所有 if-match 子句时,将被拒绝通过该节点,不进入下一个节点;如果路由项不满足该节点的 if-match 子句,将进入下一个节点继续匹配。注意事项:
通常在多个 deny 节点后设置一个不含 if-match 子句和 apply 子句的 permit 模式的 Route-Policy ,用于允许其它所有的路由通过。 l if-match 子句(条件语句) if-match 子句用来定义一些匹配条件。 Route-Policy 的每一个节点可以含有多个 if-match 子句,也可以不含 if-match 子句。如果某个 permit 节点没有配置任何 if-match 子句,则该节点匹配所有的路由。 l apply 子句(执行语句) apply 子句用来指定动作。路由通过 Route-Policy 过滤时,系统按照 apply 子句指定的动作对路由信息的一些属性进行设置。 Route-Policy 的每一个节点可以含有多个 apply 子句,也可以不含 apply 子句。如果只需要过滤路由,不需要设置路由的属性,则不使用 apply 子句。2 路由策略匹配结果 相信大家在使用或者学习 Route-Policy 的时候都重点关注这样一个问题:对于一条路由,在使用 Route-Policy 以后,最终结果是允许还是拒绝这条路由呢?这个最终的结果对于业务的影响是非常大的,可能会直接影响某种业务的通与不通。这就涉及到 Route-Policy 匹配规则的问题了,这里我们详细讨论一下。 Route-Policy 每个node 节点的过滤结果要综合以下两点: 1、 Route-Policy 的 node 节点的匹配模式( permit 或 deny )。 2、 if-match 子句(如引用的地址前缀列表或者访问控制列表)中包含的匹配条件( permit 或 deny )。 对于每一个 node 节点,以上两点的排列组合会出现表 1 所示的 4 种情况。
Rule | Mode | 匹配结果 |
permit | permit | l 匹配该节点if-match子句的路由在本节点允许通过Route-Policy,匹配结束。 l 不匹配if-match子句的路由进行Route-Policy下一个节点的匹配。 |
permit | deny | l 匹配该节点if-match子句的路由在本节点不允许通过Route-Policy,匹配结束。 l 不匹配if-match子句的路由进行Route-Policy下一个节点的匹配。 |
deny | permit | l 匹配该节点if-match子句的路由在本节点不允许通过Route-Policy,继续进行Route-Policy下一个节点的匹配。 l 不匹配if-match子句的路由进行Route-Policy下一个节点的匹配 |
deny | deny | l 匹配该节点if-match子句的路由在本节点不允许通过Route-Policy,继续进行Route-Policy下一个节点的匹配。 l 不匹配if-match子句的路由进行Route-Policy下一个节点的匹配 |
注1:Rule表示if-match子句中包含的匹配模式是permit还是deny。 注2:Mode表示Route-Policy中node节点对应的匹配模式permit还是deny。 |
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 这条路由。 注意事项: 华为 S 交换机默认所有未匹配的路由将被拒绝通过 Route-Policy 。如果 Route-Policy 中定义了一个以上的节点,应保证各节点中至少有一个节点的匹配模式是 permit 。因为 Route-Policy 用于路由信息过滤时: l 如果某路由信息没有通过任一节点,则认为该路由信息没有通过该 Route-Policy 。 l 如果 Route-Policy 的所有节点都是 deny 模式,则没有路由信息能通过该 Route-Policy 。 3 路由策略使用案例通过上面两个小节,我们介绍完了 Route-Policy 的组成和匹配规则。这个小节中,我们来看一个 Route-Policy 的使用实例。
图2 使用Route-Policy实现数据分流示例
用户需求 如图 2 所示,某园区网络主要划分为生产网段和办公网段。 LSW3 下挂的终端访问下面的网段的时候流量模型如下: 10.10.1.0/24----- 生产网段,优先走 LSW1 出去, LSW2 作为备份链路。 10.10.2.0/24----- 办公网段,优先走 LSW2 出去, LSW1 作为备份链路。 10.10.3.0/24----- 其他网段,随便走那边都行,负载分担即可。 这种流量模型,可以保证生产网络与办公网络的流量分离,便于维护和故障定位。同时,这种流量模型有利于流量均衡的分配到两条链路上,同时互相作为备份链路,有利于网络的稳定性。 配置过程 1、 LSW1 、 LSW2 、 LSW3 三个设备之间建立 OSPF 邻居关系。 2、 LSW1 和 LSW2 上配置到达上述网段的静态路由,并引入 OSPF ,从而通告给 LSW3 。 3、 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路由表,确认流量模型是否正确。
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 )在“抓取”路由方面会更精确一点,后续有机会可以和大家一起分享一下。来源:
https://forum.huawei.com/enterprise/zh/thread-372283.html