数据通信中路由策略的匹配模式
2020-07-29魏春燕李军华
魏春燕 李军华
本文结合实例对route-policy的各种匹配模式进行研究探讨,总结出匹配模式对比表,并针对各个匹配模式给出可以实施的方案。
1路由策略的实现方式
随着网络设备的多元化,现代数据网的路由规划也是越来越复杂,对大中型网络配置路由策略是对工程师能力的一个重要考验,也是考验网络能否灵活运行的一个重要技术要点。常用的路由策略工具包括acl,route-policy,ip-prefix等,这些工具中route-policy的性能比较强大,它可以配合acl对路由条目进行过滤甚至修改路由属性,但由于acl本身和route-policy都有匹配模式,二者结合起来就形成复合的匹配规则,这样理解起来就有一定的困难。本文就通过route-polciy为例来对路由策略的复合匹配进行研究和探讨。
2路由策略的匹配模式
我们采用实例验证的方式对路由策略的复合匹配进行探索并采用华为的Ensp软件搭建实验环境如图1所示。
图中AR1和AR2运行OSPF路由协议,AR1配置4条下一跳接口为NULL0的静态路由来模拟从Internet网络接收的路由,例如:ip route-static 172.16.16.0 255.255.255.0 NULL0。在AR1上设置路由策略来对接受的静态路由条目进行过滤,过滤后的路由由OSPF协议再引入到AR2,在AR2上查看路由条目来验证AR1采用策略的效果。测试采用acl加route-policy的方法进行。如果AR1不进行路由过滤则查看AR2的路由表里会显示有4条外部路由,现在假设希望OSPF网络只接收16、17网段路由,其他网段例如18、19网段的路由要被滤掉,则可以探索路由策略的多种匹配模式去实现要求。
(1)route-policy的节点匹配模式为permit,条件语句acl的匹配模式为permit
第一种模式实现的方法是在AR1上做acl和路由策略,在AR1的OSPF进程里面做路由引入同时引入路由策略RP,即路由引入的同时执行名字为RP的route-policy过滤。具体AR1上的关键代码如下所示:
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
acl number 2000#定义acl语句
rule 5 permit source 172.16.16.0 0 #制定规则允许16、17 2个网段通过acl
rule 10 permit source 172.16.17.0 0
ospf 1
import-route static route-policy RP #在ospf协议里引入策略route-policy RP permit node 10#制定策略并与acl2000关连if-match acl 2000
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
观察AR2的路由表则可发现18、19网段的路由被过滤掉,原因是route-policy默认隐含deny节点。
(2)route-policy的节点匹配模式为deny,条件语句acl匹配模式为permit
修改模式1中的acl2000的规则为:rule 5 permit source 172.16.18.0 0;rule 10 permit source 172.16.19.0 0,节点匹配模式修改为:route-policy RP deny node 10。此时查看AR2路由表,发现4条路由都被过滤了,这是因为:18、19网段匹配上acl后被node10过滤掉从而结束匹配。16、17网段虽然匹配不上acl但是也被route-policy的默认规则deny掉,这样是不能满足实验要求的。改进的方法是在RP里面再增加一条node为20的匹配语句:route-policy RP permit node 20,这样修改后16、17网段路由会继续进行node20节点的匹配,在node 20里通过了规则从而进入到AR2的路由表里,实现了实验要求。
(3)route-policy节点的匹配模式为permit,条件语句acl的匹配模式为deny
在方式2的代码的基础上修改acl为deny模式,例如:rule 5 deny source 172.16.18.0 0; rule 10 deny source 172.16.19.0 0,节点匹配设置为permit模式,其余代码不变。此时查看AR2的路由表发现有4条路由,出现了不想要的18和19网段路由。原因是:通过acl被deny的路由或没被acl匹配上的路由,会继续进行下一个节点node20的匹配,导致所有的4条路由都会进入路由表。但如果删掉node20节点,此时查看AR2的路由表会发现4条路由一条没有。
那如何实现要求呢?方法是增加一个acl语句(命名为2001),代码同模式1的acl相同:rule 5 permit source 172.16.16.0 0;rule 10 permit source 172.16.17.0 0。修改node 20为如下配置:route-policy RP permit node 20;if-match acl 2001。这样18、19网段被第一个acl滤掉以后,会继续匹配node20,由于不能匹配acl2001而仍然被拒之门外,而16和17网段路由可以通过node20的acl2001的匹配而进入路由表,达到了实验的要求。
3路由策略的匹配模式总结
路由策略的复合匹配有多种模式,我们通过实验研究了其中典型的3种。根据测试的结果,可看到一条路由在策略中是允许还是拒绝,除了要看节点和条件语句的匹配模式以外还要综合以下几个关键点来分析:
①Route-policy用于路由策略时有一个隐含的规则为deny all;
②匹配某节點条件子句的路由会结束匹配;
③被前一个节点条件子句拒绝或没被匹配上的路由会进行下一个节点的匹配。