通信人家园
标题: 【华为网络技术连载】路由策略全揭秘,看完再也不蓝瘦香菇 [查看完整版帖子] [打印本页]
时间: 2016-11-30 20:14
作者: nanyou2009boy
标题: 【华为网络技术连载】路由策略全揭秘,看完再也不蓝瘦香菇
第1期 初识路由策略
对于IP网络工程师来说,路由策略的部署随处可见,无论在运营商IP网络还是在企业网中,路由策略的应用都是非常普遍的。同时,在网络规划中,路由策略的规划也是一个核心的内容。为了方便大家更好的掌握和应用路由策略,我们推出了路由策略这个专题,希望这个专题能够抛砖引玉引导各位一起讨论、共同学习。
1 路由策略概述1.1 什么是路由策略?我们讨论某个东西一般都回避不了这样一个问题:“XXX是什么?”这里我们也尝试对路由策略下一个定义,来回答:“路由策略是什么?”这个问题。
很多人会把路由策略等同于route-policy,也有人会可能会说filter-policy也属于路由策略的范畴,其实这些理解都有点不太准确。实际上,路由策略不是一个特定的技术,也不是一个特定的特性。
路由策略是通过一系列工具或方法对路由进行各种控制的“策略”。这种策略能够影响到路由产生、发布、选择等,进而影响报文的转发路径。这些工具包括ACL、route-policy、ip-prefix、filter-policy等,这些方法包括对路由进行过滤,设置路由的属性等。
1.2 路由策略各工具之间的调用关系当讨论到路由策略的时候,我们经常会碰到很多种工具,比如ACL、route-policy、ip-prefix、filter-policy等等,不一一列举了。很多人都会被他们之间的调用关系搞昏了头,总感觉他们之间有说清道不明的关系。这里我们通过一张图来给大家介绍他们之间的关系。
图1 路由策略各工具之间的调用关系
如图1所示,我们把所有的工具划分成三类:
l 条件工具:用于把需要的路由“抓取”出来。
l 策略工具:用于把“抓取”出来的路由执行某个动作,比如允许、拒绝、修改属性值等。
l 调用工具:用于将路由策略应用到某个具体的路由协议里面,使其生效。
调用工具中的filter-policy和peer又自带策略工具的功能,因此这两个东西又可以直接调用条件工具。其他的调用工具都必须通过route-policy来间接的调用条件工具。
需要注意peer不能调用ACL,可以调用其他的所有条件工具。
1.3 路由策略有什么用?在IP网络中,路由策略的用途主要包括两个方面:1)对路由信息进行过滤。2)修改路由的属性。详细请见表1:
| | |
| 如果某条路由符合XX条件,那么就接收这条路由 如果某条路由符合XX条件,那么就发布这条路由 如果某条路由符合XX条件,那么就引入这条路由 | |
| 如果某条路由符合XX条件,那么将这条路由的某个属性值修改为XXX | |
表1 路由策略的作用
如果各位觉得这样介绍路由策略的作用还是有点抽象的话,没关系,下面我们再来个实际的例子来介绍一下你就明白了。
通过路由策略对路由信息进行过滤
图1 通过路由策略对路由信息进行过滤
如图1所示,SwitchA属于双上行的组网结构,SwitchA会从SwitchB和SwitchC那里分别接收到路由。如果SwitchA仅希望接收来自SwitchB的路由,而不希望接收来自SwitchC的路由,此时应该怎么办呢?这种情况下就可以考虑在SwitchA上配置路由策略,允许来自SwitchB的路由,拒绝来自SwitchC的路由。
通过路由策略修改路由的属性
图2 通过路由策略修改路由的属性
如图2所示,SwitchA也是双上行的网络结构,但是,由于SwitchB这边的链路稳定性更好一点,带宽更大一点,因此用户想用SwitchB这边的链路作为主用链路,SwitchC这边的链路作为备用链路,当主用链路故障的时候流量自动切换至备用链路。这种场景下,可以使用路由策略,将来自SwitchB这边的路由开销值调小,将来自SwitchC这边的路由开销值调大,这样流量就会自动选取SwitchB这边的链路作为主用链路,SwitchC这边的链路作为备用链路,实现路由的主备份。
2 路由策略和策略路由2.1 路由策略和策略路由的区别我在第一次接触路由策略和策略路由的时候也是抓耳挠腮,分不清楚,老觉得为什么协议的开发者给他们起这么容易混淆的名字,改一个名字不就不容易混淆了嘛!但是既然名字叫了这么多年了,各位虽然分不清楚,但已经耳熟了。虽然策略路由这个特性不作为本专题的讨论范畴,我们在这里也把这对孪生兄弟做一个对比分析,让大家不再混淆。
路由策略
路由策略的操作对象是路由信息。路由策略主要实现了路由过滤和路由属性设置等功能,它通过改变路由属性(包括可达性)来改变网络流量所经过的路径。
策略路由
策略路由的操作对象是数据包,在路由表已经产生的情况下,不按照路由表进行转发,而是根据需要,依照某种策略改变数据包转发路径。
所以这样可以看出,策略路由是在路由表之前起作用,如果报文匹配了策略路由,那么这个报文就不会再去查路由表了,而是直接按照策略路由的“指引”进行转发。所以策略路由是一个不太按照套路出牌的“家伙”,也正因为这样,策略路由的应用会更加灵活一点。
2.2 路由策略和策略路由对比分析为了更加具体的对比路由策略和策略路由,我们通过表2对两者进行一个全方位的对比。
| | |
| | |
| | |
| | |
| l 基于ACL过滤 l 基于地址前缀列表 l 基于路由属性过滤 l 基于路由类型过滤 …… | |
| l 静态路由 l 直连路由 l RIP/RIPng l OSPF/OSPFv3 l ISIS l BGP/BGP4+ | |
表2 路由策略和策略路由对比分析
3 路由策略牛刀小试上面在宏观上介绍了关于路由策略的一些基础知识,各位是不是还是觉得有点不过瘾?是不是还感觉不到路由策略究竟有什么洪荒之力?没关系,接下来我们来看一个通过路由策略实现路由过滤的举例,算作牛刀小试。这个举例中会涉及ACL、ip-prefix、route-policy、filter-policy等概念,我们会在后面几期的专题中详细展开介绍,各位就先了解一下路由策略究竟能干什么就行,先不要研究太深,以免走火入魔!
图3 通过路由策略实现路由过滤示例
如图3所示,运行OSPF协议的网络中,SwitchA从Internet网络接收路由,并为OSPF网络提供了Internet路由, 现在用户希望OSPF网络仅接收172.16.16.0/24、172.16.17.0/24和172.16.18.0/24这三条外部路由,其他的外部路由都不接收。
上述用户需求可以通过多种方式去实现,接下来我们给出两个比较常见的实现方式供各位参考。
下面的实验中我们通过在SwitchA中配置黑洞路由做为测试路由,在OSPF中引入静态路由来模拟从Internet网络接收路由。SwitchA上的关键配置如下:
#
ospf 1
import-route static
area 0.0.0.0
network 192.168.1.0 0.0.0.255
#
ip route-static 172.16.16.0 255.255.255.0 NULL0
ip route-static 172.16.17.0 255.255.255.0 NULL0
ip route-static 172.16.18.0 255.255.255.0 NULL0
ip route-static 172.16.19.0 255.255.255.0 NULL0
ip route-static 172.16.20.0 255.255.255.0 NULL0
#
3.1 通过ACL+route-policy实现路由过滤1、定义一个ACL 2000,用于匹配需要放行的路由。
[SwitchA] acl 2000
[SwitchA-acl-basic-2000] rule 5 permit source 172.16.16.0 0
[SwitchA-acl-basic-2000] rule 10 permit source 172.16.17.0 0
[SwitchA-acl-basic-2000] rule 15 permit source 172.16.18.0 0
[SwitchA-acl-basic-2000] quit
2、创建一个route-policy,名字叫RP,同时配置一个编号为10的节点,调用ACL2000。
[SwitchA] route-policy RP permit node 10
[SwitchA -route-policy] if-match acl 2000
3、在OSPF引入静态路由的时候调用这个route-policy
[SwitchA] ospf 1
[SwitchA-ospf-1] import-route static route-policy RP
[SwitchA-ospf-1] quit
由于route-policy默认隐含deny节点,因此172.16.19.0及172.16.20.0路由由于没有满足if-match语句,从而不被引入到OSPF中。
配置完上述路由策略以后SwitchB的路由表如下:
[SwitchB]display ip routing-table
Route Flags: R - relay, D - download to fib
-----------------------------------------------------------------------------
Routing Tables: Public
Destinations : 7 Routes : 7
Destination/Mask Proto Pre Cost Flags NextHop Interface
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
172.16.16.0/24 O_ASE 150 1 D 192.168.1.1 Vlanif10
172.16.17.0/24 O_ASE 150 1 D 192.168.1.1 Vlanif10
172.16.18.0/24 O_ASE 150 1 D 192.168.1.1 Vlanif10
192.168.1.0/24 Direct 0 0 D 192.168.1.2 Vlanif10
192.168.1.2/32 Direct 0 0 D 127.0.0.1 Vlanif10
可以看到在SwitchA上配置完路由策略以后,SwitchB的IP路由表里面只有172.16.16.0/24、172.16.17.0/24和172.16.18.0/24这三条外部路由,其他的外部路由都没有了。
3.2 通过ip-prefix+filter-policy实现路由过滤1、定义一个地址前缀列表,用于匹配需要放行的路由。
[SwitchA] ip ip-prefix huawei index 10 permit 172.16.16.0 24
[SwitchA] ip ip-prefix huawei index 20 permit 172.16.17.0 24
[SwitchA] ip ip-prefix huawei index 30 permit 172.16.18.0 24
2、在SwitchA的OSPF视图中,通过filter-policy对发布的路由进行过滤。
[SwitchA] ospf 1
[SwitchA -ospf-1] filter-policy ip-prefix huawei export
[SwitchA-ospf-1] quit
由于ip-prefix默认隐含deny节点,因此172.16.19.0及172.16.20.0路由由于不在ip-prefix允许的范围内,所以在SwitchA向SwitchB发布路由的时候,仅发布在ip-prefix允许的范围内的路由,其他的所有路由都不发布。
配置完上述配置以后SwitchB的路由表如下:
[SwitchB] display ip routing-table
Route Flags: R - relay, D - download to fib
-----------------------------------------------------------------------------
Routing Tables: Public
Destinations : 7 Routes : 7
Destination/Mask Proto Pre Cost Flags NextHop Interface
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
172.16.16.0/24 O_ASE 150 1 D 192.168.1.1 Vlanif10
172.16.17.0/24 O_ASE 150 1 D 192.168.1.1 Vlanif10
172.16.18.0/24 O_ASE 150 1 D 192.168.1.1 Vlanif10
192.168.1.0/24 Direct 0 0 D 192.168.1.2 Vlanif10
192.168.1.2/32 Direct 0 0 D 127.0.0.1 Vlanif10
可以看到在SwitchA上配置完路由filter-policy以后,SwitchB的IP路由表里面只有172.16.16.0/24、172.16.17.0/24和172.16.18.0/24这三条外部路由,其他的外部路由都没有了。
从实验结果来看,上述两种方法使用的工具和方法不同,但是结果是一样的。相信各位是不是已经看到路由策略确实不能直接等同于route-policy了吧?实际上,路由策略是一系列对路由进行控制的手段,路由策略的使用过程中可能是ACL、route-policy、ip-prefix、filter-policy等多个工具的不同组合,上述举例仅仅列举了其中两种比较常见的组合而已。在后面几期的专题中,我们会深入分析各种工具的使用方法,相信各位全部掌握这些工具之后就会对路由策略的使用做到游刃有余、随心所欲了。
时间: 2016-11-30 20:18
作者: nanyou2009boy
第2期-Route-Policy详解
在上一期的路由策略专题中,我们曾经提到,很多人会把路由策略等同于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种情况。
| | |
| | l 匹配该节点if-match子句的路由在本节点允许通过Route-Policy,匹配结束。 l 不匹配if-match子句的路由进行Route-Policy下一个节点的匹配。 |
| | l 匹配该节点if-match子句的路由在本节点不允许通过Route-Policy,匹配结束。 l 不匹配if-match子句的路由进行Route-Policy下一个节点的匹配。 |
| | l 匹配该节点if-match子句的路由在本节点不允许通过Route-Policy,继续进行Route-Policy下一个节点的匹配。 l 不匹配if-match子句的路由进行Route-Policy下一个节点的匹配 |
| | 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。 |
表1 Route-Policy的匹配规则
上述四种组合情况中,前两种比较好理解,也比较常用。后两种相对难理解一点,这里我们以第三种情况为例,举例说明一下:
假设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这条路由。
注意事项:
华为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路由表,确认流量模型是否正确。
<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)在“抓取”路由方面会更精确一点,这个我们将会在下一期的路由策略专题中详细介绍。
时间: 2016-11-30 20:54
作者: nanyou2009boy
第3期 地址前缀列表
想对接收的路由/发布的路由/引入的路由进行过滤,或者设置相关的路由属性?第一步当然要先筛选出想要的路由,通过ACL或者地址前缀列表(ip ip-prefix)都可以实现。在上一期route-policy的介绍中我们就是采用ACL来筛选路由的,ACL大家平时接触的也比较多,但地址前缀列表是什么、怎么用?地址前缀列表和ACL有什么区别?这一期的路由策略专题我们将会详细介绍这些内容。
1 地址前缀列表与ACL的区别让我们先来看两个具体的例子。
示例1-通过ACL对引入的路由进行过滤如图1所示,通过ACL实现将RIP中的2条路由引入到OSPF中,并设置路由的开销值。
图1 通过ACL对引入的路由进行过滤
查看SwitchB上的路由表,有2条RIP路由192.168.2.0/24和192.168.3.0/24,想将这2条路由重发布到OSPF中,并将192.168.2.0/24这条路由的开销值设置为10,192.168.3.0/24这条路由的开销值设置为20。
[SwitchB] display ip routing-table
Route Flags: R - relay, D - download to fib
-----------------------------------------------------------------------------
Routing Tables: Public
Destinations : 8 Routes : 8
Destination/Mask Proto Pre Cost Flags NextHop Interface
10.1.1.0/24 Direct 0 0 D 10.1.1.1 Vlanif20
10.1.1.1/32 Direct 0 0 D 127.0.0.1 Vlanif20
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.1.0/24 Direct 0 0 D 192.168.1.2 Vlanif10
192.168.1.2/32 Direct 0 0 D 127.0.0.1 Vlanif10
192.168.2.0/24 RIP 100 1 D 192.168.1.1 Vlanif10
192.168.3.0/24 RIP 100 1 D 192.168.1.1 Vlanif10
1. 配置ACL,过滤出想要的路由
# 配置基本ACL 2001,匹配路由网络号192.168.2.0。
[SwitchB] acl 2001
[SwitchB-acl-basic-2001] rule permit source 192.168.2.0 0
[SwitchB-acl-basic-2001] quit
# 配置基本ACL 2002,匹配路由网络号192.168.3.0。
[SwitchB] acl 2002
[SwitchB-acl-basic-2002] rule permit source 192.168.3.0 0
[SwitchB-acl-basic-2002] quit
2. 配置route-policy,并对引入的路由应用route-policy
# 配置route-policy RP的节点10,如果匹配基本ACL 2001,则设置路由开销值为10。
[SwitchB] route-policy RP permit node 10
[SwitchB-route-policy] if-match acl 2001
[SwitchB-route-policy] apply cost 10
[SwitchB-route-policy] quit
# 配置route-policy RP的节点20,如果匹配基本ACL 2002,则设置路由开销值为20。
[SwitchB] route-policy RP permit node 20
[SwitchB-route-policy] if-match acl 2002
[SwitchB-route-policy] apply cost 20
[SwitchB-route-policy] quit
# 配置在OSPF路由中引入通过route-policy RP过滤的RIP路由。
[SwitchB] OSPF
[SwitchB-ospf-1] import-route rip 1 route-policy RP
[SwitchB-ospf-1] quit
配置完成后,在SwitchC上查看路由表,发现已经成功引入了2条RIP路由,并且路由开销值已进行了相应的设置。
<SwitchC> display ip routing-table
Route Flags: R - relay, D - download to fib
-----------------------------------------------------------------------------
Routing Tables: Public
Destinations : 6 Routes : 6
Destination/Mask Proto Pre Cost Flags NextHop Interface
10.1.1.0/24 Direct 0 0 D 10.1.1.2 Vlanif20
10.1.1.2/32 Direct 0 0 D 127.0.0.1 Vlanif20
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.2.0/24 O_ASE 150 10 D 10.1.1.1 Vlanif20
192.168.3.0/24 O_ASE 150 20 D 10.1.1.1 Vlanif20
示例2-通过地址前缀列表对引入的路由进行过滤如图2所示,SwitchB上有2条静态路由,如果只想将192.168.0.0/16这1条路由引入OSPF中,该怎么配置呢?
图2 通过地址前缀列表对引入的路由进行过滤
查看SwitchB上的路由表,有2条静态路由192.168.0.0/16和192.168.0.0/24,只想将192.168.0.0/16这1条路由重发布到OSPF中。
[SwitchB] display ip routing-table
Route Flags: R - relay, D - download to fib
-----------------------------------------------------------------------------
Routing Tables: Public Destinations : 6 Routes : 6
Destination/Mask Proto Pre Cost Flags NextHop Interface
10.10.12.0/24 Direct 0 0 D 10.10.12.1 Vlanif10
10.10.12.1/32 Direct 0 0 D 127.0.0.1 Vlanif10
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.0.0/16 Static 60 0 D 0.0.0.0 NULL0
192.168.0.0/24 Static 60 0 D 0.0.0.0 NULL0
首先我们尝试用ACL来实现。
1. 配置基本ACL 2001
[SwitchB] acl 2001
[SwitchB-acl-basic-2001] rule permit source 192.168.0.0 0.0.255.255
[SwitchB-acl-basic-2001] quit
2. 配置route-policy,并对引入的路由应用route-policy
# 配置route-policy RP的节点10,如果匹配基本ACL 2001,则允许通过。其他所有未匹配成功的路由都被拒绝通过。
[SwitchB] route-policy RP permit node 10
[SwitchB-route-policy] if-match acl 2001
[SwitchB-route-policy] quit
# 配置在OSPF路由中引入通过route-policy RP过滤的静态路由。
[SwitchB] OSPF
[SwitchB-ospf-1] import-route static route-policy RP
[SwitchB-ospf-1] quit
配置完成后,在SwitchC上查看路由表,发现有2条192.168.0.0网段的路由,2条路由都被引入了。这是由于ACL2001规则rule permit source 192.168.0.0 0.0.255.255中,0.0.255.255实际上是通配符,而不是掩码长度。
所谓通配符,就是指换算成二进制后,“0”表示需要匹配,“1”表示不需要匹配。例如192.168.0.0 0.0.255.255表示匹配网络号192.168.0.0~192.168.255.255,192.168.0.0/16和192.168.0.0/24都能匹配成功ACL2001,因此这2条路由匹配了route-policy RP的节点10,都被引入了。ACL无法实现只匹配192.168.0.0/16或者只匹配192.168.0.0/24,ACL只能匹配网络号,无法匹配掩码。
<SwitchC> display ip routing-table
Route Flags: R - relay, D - download to fib
-----------------------------------------------------------------------------
Routing Tables: Public
Destinations : 6 Routes : 6
Destination/Mask Proto Pre Cost Flags NextHop Interface
10.10.12.0/24 Direct 0 0 D 10.10.12.2 Vlanif10
10.10.12.2/32 Direct 0 0 D 127.0.0.1 Vlanif10
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.0.0/16 O_ASE 150 1 D 10.10.12.1 Vlanif10
192.168.0.0/24 O_ASE 150 1 D 10.10.12.1 Vlanif10
接下来,我们试试看用地址前缀列表对引入的路由进行过滤,看是否能实现引入192.168.0.0/16这1条路由,过滤掉192.168.0.0/24。
1. 配置地址前缀列表,过滤出想要的路由
# 地址前缀列表为huawei,节点号10,允许192.168.0.0/16的路由通过。
[SwitchB] ip ip-prefix huawei index 10 permit 192.168.0.0 16
2. 配置route-policy,并对引入的路由应用route-policy
# 配置route-policy RP的节点10,如果匹配地址前缀列表huawei,则允许通过;其他所有未匹配上的路由都将默认拒绝。
[SwitchB] route-policy RP permit node 10
[SwitchB-route-policy] if-match ip-prefix huawei
[SwitchB-route-policy] quit
# 配置在OSPF路由中引入通过route-policy RP过滤的静态路由。
[SwitchB] OSPF
[SwitchB-ospf-1] import-route static route-policy RP
[SwitchB-ospf-1] quit
配置完成后,在SwitchC上查看路由表,成功实现了只引入192.168.0.0/16这1条路由。
<SwitchC> display ip routing-table
Route Flags: R - relay, D - download to fib
-----------------------------------------------------------------------------
Routing Tables: Public
Destinations : 5 Routes : 5
Destination/Mask Proto Pre Cost Flags NextHop Interface
10.10.12.0/24 Direct 0 0 D 10.10.12.2 Vlanif10
10.10.12.2/32 Direct 0 0 D 127.0.0.1 Vlanif10
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.0.0/16 O_ASE 150 1 D 10.10.12.1 Vlanif10
总结一下上面的两个示例,ACL和地址前缀列表都可以对路由进行筛选,ACL匹配路由时只能匹配路由的网络号,但无法匹配掩码,也就是前缀长度;而地址前缀列表比ACL更为灵活,可以匹配路由的网络号及掩码,增强了路由匹配的精确度。 2地址前缀列表原理及应用2.1地址前缀列表的过滤规则一个地址前缀列表中可以创建多个索引项,每个索引对应一条过滤规则。如图3所示,待过滤路由按照索引号从小到大的顺序进行匹配:
² 当匹配上某一索引项时,如果该索引项是permit,则这条路由被允许通过;如果该索引项是deny,则这条路由被拒绝通过。
² 当遍历了地址前缀列表中的所有索引项,都没有匹配上,那么这条路由就被拒绝通过。
图3 地址前缀列表原理
地址前缀列表过滤路由的原则可以总结为:顺序匹配、唯一匹配、默认拒绝。
顺序匹配:按索引号从小到大顺序进行匹配。同一个地址前缀列表中的多条表项设置不同的索引号,可能会有不同的过滤结果,实际配置时需要注意。
唯一匹配:待过滤路由只要与一个表项匹配,就不会再去尝试匹配其他表项。
默认拒绝:默认所有未与任何一个表项匹配的路由都视为未通过地址前缀列表的过滤。因此在一个地址前缀列表中创建了一个或多个deny模式的表项后,需要创建一个表项来允许所有其他路由通过。
2.2地址前缀列表中掩码的匹配地址前缀列表与ACL相比的一大优势就是可以对路由的掩码进行匹配,在前面的示例中我们已经用到了精确匹配路由中的掩码。不仅如此,地址前缀列表还可以匹配一个掩码范围。
地址前缀列表通过ip ip-prefix命令进行配置,常用格式如下:
ip ip-prefix ip-prefix-name [ index index-number ] { permit | deny } ipv4-address mask-length [ greater-equal greater-equal-value ] [less-equal less-equal-value ]
其中ipv4-address mask-length [ greater-equal greater-equal-value ] [ less-equal less-equal-value ] 用于限定过滤路由的网络号及掩码范围,参数含义如表1所示。
| |
| |
| |
greater-equal greater-equal-value | 可以理解为掩码≥greater-equal-value |
less-equal less-equal-value | |
表1 地址前缀列表中地址范围的表示
当待过滤的路由已匹配当前表项的网络号时,掩码长度可以进行精确匹配或者在一定掩码长度范围内匹配。
Ø 若不配置greater-equal和less-equal,则进行精确匹配,即只匹配掩码长度为mask-length的路由。
Ø 若只配置greater-equal,则匹配的掩码长度范围为[greater-equal-value,32]。
Ø 若只配置less-equal,则匹配的掩码长度范围为[mask-length,less-equal-value]。
Ø 若同时配置greater-equal和less-equal,则匹配的掩码长度范围为[greater-equal-value,less-equal-value]。
2.3地址前缀列表匹配示例好啦,学了这么多的理论,接下来让我们实际操练一下试试。假设有这么几条路由10.1.1.0/24、10.1.1.0/26、10.1.1.1/32、10.2.2.0/24和10.1.0.0/16,你们有没有办法用地址前缀列表筛选出想要的路由呢?
1. 只想permit某1条路由?例如只permit 10.1.1.0/24这1条路由。
2. 只想permit网络号相同,掩码不同的某几条路由,其他路由都deny?例如只permit 10.1.1.0/24、10.1.1.0/26、10.1.1.1/32这3条路由。
3. 只想deny某1条路由,其他路由都permit?例如只deny10.1.1.0/24这1条路由。
答案请在下面示例中找~
------------------------------------示例1为单节点精确匹配示例---------------------------------------------
ü 示例1:
ip ip-prefix test index 10 permit 10.1.1.0 24
匹配结果:只有路由10.1.1.0/24被permit,其他路由都被deny
说明:只有网络号、掩码完全相同的路由才会匹配成功。
------------------------------------示例2-4为指定掩码匹配范围示例---------------------------------------
ü 示例2:
ip ip-prefix test index 10 permit 10.1.1.0 24 less-equal 32
匹配结果:路由10.1.1.0/24、10.1.1.0/26、10.1.1.1/32被permit,其他路由被deny。
说明:网络号为10.1.1.0,掩码长度在24-32之间的路由会被permit。
ü 示例3:
ip ip-prefix test index 10 permit 10.1.1.0 24 greater-equal 26
匹配结果:路由10.1.1.0/26、10.1.1.1/32被permit,其他路由被deny。
说明:网络号为10.1.1.0,掩码长度在26-32之间的路由会被permit。
ü 示例4:
ip ip-prefix test index 10 permit 10.1.1.0 24 greater-equal 26 less-equal 32
匹配结果:路由10.1.1.0/26、10.1.1.1/32被permit,其他路由被deny。
说明:网络号为10.1.1.0,掩码长度在26-32之间的路由会被permit。此示例效果与示例3相同。
--------------------------------示例5-6为通配地址(0.0.0.0)匹配示例--------------------------------------
通配地址0.0.0.0表示不限定网络号,只需要匹配掩码范围即可。表2中列出了几种特殊的通配地址。
| |
| |
| |
0.0.0.0 0 greater-equal 32 | |
表2 特殊的通配地址
说明:地址前缀列表采用默认拒绝的匹配原则,在创建了一个或多个deny模式的表项后,需要创建一个permit 0.0.0.0 0 less-equal 32表项,允许所有其他路由通过。
ü 示例5:
ip ip-prefix test index 10 permit 0.0.0.0 8 less-equal 32
匹配结果:5条路由均被permit。
说明:所有掩码长度在8-32之间的路由都被permit
ü 示例6:
ip ip-prefix test index 10 deny 10.1.1.0 24
ip ip-prefix test index 20 permit 0.0.0.0 0 less-equal 32
匹配结果:只有路由10.1.1.0/24被deny,其他路由都被permit。
说明:路由10.1.1.0/24匹配前缀列表test中索引10节点,但匹配模式是deny,因此结果是deny;索引20节点permit 0.0.0.0 0 less-equal 32表示允许所有路由通过,因此未匹配上索引节点10的路由都匹配上了索引20节点,均被permit。
叨叨了这么多,能看到这里的都是学霸哟,是不是已经信心满满,掌握了地址前缀列表啦!地址前缀列表(ip ip-prefix)能过滤出想要的路由,但是要实现对路由的控制,例如控制路由信息的接收、发布、引入等,还需要在filter-policy或者route-policy中调用地址前缀列表才能实现。下一期我们将介绍如何通过filter-policy实现路由过滤,敬请期待~
时间: 2016-11-30 21:05
作者: nanyou2009boy
第4期 filter-policy原理与应用
在路由策略专题第一期(初识路由策略)中,我们曾经提到filter-policy也属于路由策略的范畴,但是filter-policy的过滤规则和使用方法与route-policy又有很大的不同,因此这一期我们单独讨论一下filter-policy的原理和应用。
1 filter-policy介绍filter-policy也是一个很常用的路由信息过滤工具,如图1所示,SwitchA、SwitchB、SwitchC之间运行某种路由协议,路由在各个设备之间传递,当需要根据实际需求过滤某些路由信息的时候可以使用filter-policy实现。
图1 filter-policy的应用场景
filter-policy使用注意事项:
l filter-policy是常用于控制路由接收、发布的一个工具。
l filter-policy只能过滤路由信息,无法过滤LSA。
l filter-policy只能过滤路由信息,不能修改路由属性值。
在路由策略专题第一期(初识路由策略)中,我们说过路由策略的主要功能有两个,1)过滤路由信息,2)修改路由属性值。从上面的注意事项来看,其实filter-policy只具备过滤路由信息这个功能。
2 filter-policy过滤路由信息的规则由于距离矢量路由协议(例如RIP)和链路状态路由协议(例如OSPF)原理上的差异,filter-policy应用在这两种路由协议的时候过滤规则也有所不同。如表1所示,在讨论之前我们有必要回忆一下距离矢量路由协议和链路状态路由协议路由信息传递的区别。
| |
| 各路由设备之间传递的是路由信息。这种路由信息对于报文来说相当于“路标”,设备依靠“路标”来指导报文转发,路标指向哪里报文就转发到哪里。 |
| 各路由设备之间传递的是LSA信息。LSA信息的集合(LSDB)形成整个网络的拓扑结构,相当于一张地图,设备依靠“地图+最短路径算法”为报文找到最佳的转发路径。 |
表1 距离矢量路由协议和链路状态路由协议原理对比
如图2所示,在距离矢量路由协议中,设备之间传递的是路由信息,如果需要对这种路由信息进行某种过滤,可以使用filter-policy实现,出方向和入方向的生效位置如图2所示。如果要过滤掉上游设备到下游设备的路由,只要在上游设备配filter-policy export或者在下游设备上配置filter-policy import就可以了。
图2 filter-policy在距离矢量路由协议中应用
如图3所示,在链路状态路由协议中,各路由设备之间传递的是LSA信息,然后设备根据LSA汇总成的LSDB信息计算出路由表。
以OSPF为例,filter-policy生效规则如下:
l filter-policy import命令实际上是对OSPF计算出来的路由进行过滤,不是对发布和接收的LSA进行过滤。
l filter-policy export命令用来对引入的路由在发布时进行过滤,只将满足条件的外部路由转换为Type5 LSA(AS-external-LSA)并发布出去。这样可以在引入外部路由时进行特定的过滤,防止形成路由环路。
图3 filter-policy在链路状态路由协议中应用
3 使用filter-policy过滤RIP路由示例3.1 通过filter-policy对RIP发布的路由做过滤需求描述
如图4所示,三台交换机通过RIP交互路由,在SwitchA的RIP进程中引入了三条静态路由(作为测试路由),用户要求在SwitchB上部署filter-policy export,将其通告给SwitchC的路由进行过滤,拒绝192.168.3.0/24这条路由,其他路由放行。
图4 通过filter-policy对RIP发布的路由做过滤
配置方法
1、在SwitchB上定义一个地址前缀列表,“抓取”符合条件的路由。
[SwitchB] ip ip-prefix huawei index 10 deny 192.168.3.0 24 //拒绝这条
[SwitchB] ip ip-prefix huawei index 20 permit 0.0.0.0 0 less-equal 32//允许所有
2、在SwitchB的RIP视图中,部署filter-policy export。
[SwitchB]rip
[SwitchB-rip-1] filter-policy ip-prefix huawei export Vlanif20
结果验证
做完上述配置以后,查看SwitchB和SwitchC的路由表如下:
[SwitchB] display ip routing-table
Route Flags: R - relay, D - download to fib
-----------------------------------------------------------------------------
Routing Tables: Public
Destinations : 9 Routes : 9
Destination/Mask Proto Pre Cost Flags NextHop Interface
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.1.0/24 RIP 100 1 D 192.168.10.1 Vlanif10
192.168.2.0/24 RIP 100 1 D 192.168.10.1 Vlanif10
192.168.3.0/24 RIP 100 1 D 192.168.10.1 Vlanif10
192.168.10.0/24 Direct 0 0 D 192.168.10.2 Vlanif10
192.168.10.2/32 Direct 0 0 D 127.0.0.1 Vlanif10
192.168.20.0/24 Direct 0 0 D 192.168.20.1 Vlanif20
192.168.20.1/32 Direct 0 0 D 127.0.0.1 Vlanif20
[SwitchC] display ip routing-table
Route Flags: R - relay, D - download to fib
-----------------------------------------------------------------------------
Routing Tables: Public
Destinations : 7 Routes : 7
Destination/Mask Proto Pre Cost Flags NextHop Interface
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.1.0/24 RIP 100 2 D 192.168.20.1 Vlanif20
192.168.2.0/24 RIP 100 2 D 192.168.20.1 Vlanif20
192.168.10.0/24 RIP 100 1 D 192.168.20.1 Vlanif20
192.168.20.0/24 Direct 0 0 D 192.168.20.2 Vlanif20
192.168.20.2/32 Direct 0 0 D 127.0.0.1 Vlanif20
从上面的实验结果来看,在SwitchB上部署filter-policy export以后,SwitchB仍然拥有完整的路由表,而SwitchC已经不能通过RIP学习到192.168.3.0/24这条路由,因为这条路由在SwitchB上发布的时候已经被过滤掉。
3.2 通过filter-policy对RIP接收的路由做过滤需求描述
如图5所示,三台交换机通过RIP交互路由,在SwitchA的RIP进程中引入了三条静态路由(作为测试路由),用户要求在SwitchB上部署filter-policy import,把192.168.3.0/24这条路由拒绝,其他路由放行。
图5 通过filter-policy对RIP接收的路由做过滤
配置方法
1、在SwitchB上定义一个地址前缀列表,“抓取”符合条件的路由。
[SwitchB] ip ip-prefix huawei index 10 deny 192.168.3.0 24 //拒绝这条
[SwitchB] ip ip-prefix huawei index 20 permit 0.0.0.0 0 less-equal 32//允许所有
2、在SwitchB的RIP视图中,部署filter-policy import。
[SwitchB]rip
[SwitchB-rip-1] filter-policy ip-prefix huawei import Vlanif10
结果验证
做完上述配置以后,查看SwitchB和SwitchC的路由表如下:
[SwitchB] display ip routing-table
Route Flags: R - relay, D - download to fib
-----------------------------------------------------------------------------
Routing Tables: Public
Destinations : 8 Routes : 8
Destination/Mask Proto Pre Cost Flags NextHop Interface
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.1.0/24 RIP 100 1 D 192.168.10.1 Vlanif10
192.168.2.0/24 RIP 100 1 D 192.168.10.1 Vlanif10
192.168.10.0/24 Direct 0 0 D 192.168.10.2 Vlanif10
192.168.10.2/32 Direct 0 0 D 127.0.0.1 Vlanif10
192.168.20.0/24 Direct 0 0 D 192.168.20.1 Vlanif20
192.168.20.1/32 Direct 0 0 D 127.0.0.1 Vlanif20
[SwitchC] display ip routing-table
Route Flags: R - relay, D - download to fib
-----------------------------------------------------------------------------
Routing Tables: Public
Destinations : 7 Routes : 7
Destination/Mask Proto Pre Cost Flags NextHop Interface
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.1.0/24 RIP 100 2 D 192.168.20.1 Vlanif20
192.168.2.0/24 RIP 100 2 D 192.168.20.1 Vlanif20
192.168.10.0/24 RIP 100 1 D 192.168.20.1 Vlanif20
192.168.20.0/24 Direct 0 0 D 192.168.20.2 Vlanif20
192.168.20.2/32 Direct 0 0 D 127.0.0.1 Vlanif20
从上面的实验结果来看,在SwitchB上部署filter-policy import以后,SwitchB和SwitchC的路由表中都不存在192.168.3.0/24这条路由了。
由于RIP是距离矢量路由协议,它是将自己的路由表通告给它的邻居路由器,当SwitchB的路由表中192.168.3.0/24这条路由被过滤以后,SwitchC也就无法再通过RIP学习到这条路由。也就是说,对于距离矢量路由协议,如果一台设备的路由表被进行了过滤,那么它会继续影响它下游的设备的路由表。
注意事项:
filter-policy export和filter-policy import命令在RIP进程下配置,如果基于接口或者协议对路由进行过滤,则一个接口或协议只能配置一个策略;在没有指定接口和协议的情况下,就认为是配置全局过滤策略,同样只能配置一个策略,如果重复配置,新的策略将覆盖之前的策略。
4 使用filter-policy过滤OSPF路由示例4.1 通过filter-policy对OSPF接收的路由过滤(区域内)需求描述
如图6所示,三台交换机同属于OSPF Area 0区域,SwitchA发布测试网段10.1.1.0/24,要求在SwitchB上部署filter-policy import,使得SwitchB的路由表中不允许出现10.1.1.0/24这条路由。
图6 通过filter-policy对OSPF接收的路由过滤(区域内)
配置方法
1、在SwitchB上定义一个地址前缀列表,“抓取”符合条件的路由。
[SwitchB] ip ip-prefix huawei index 10 deny 10.1.1.0 24 //拒绝这条
[SwitchB] ip ip-prefix huawei index 20 permit 0.0.0.0 0 less-equal 32//允许所有
2、在SwitchB的OSPF视图中,部署filter-policy import。
[SwitchB] ospf
[SwitchB-ospf-1] filter-policy ip-prefix huawei import
结果验证
做完上述配置以后,查看SwitchB和SwitchC的路由表如下:
[SwitchB] display ip routing-table
Route Flags: R - relay, D - download to fib
-----------------------------------------------------------------------------
Routing Tables: Public
Destinations : 6 Routes : 6
Destination/Mask Proto Pre Cost Flags NextHop Interface
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.12.0/24 Direct 0 0 D 192.168.12.2 Vlanif12
192.168.12.2/32 Direct 0 0 D 127.0.0.1 Vlanif12
192.168.23.0/24 Direct 0 0 D 192.168.23.1 Vlanif23
192.168.23.1/32 Direct 0 0 D 127.0.0.1 Vlanif23
[SwitchC] display ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 6 Routes : 6
Destination/Mask Proto Pre Cost Flags NextHop Interface
10.1.1.0/24 OSPF 10 3 D 192.168.23.1 Vlanif23
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.12.0/24 OSPF 10 2 D 192.168.23.1 Vlanif23
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
通过SwitchB和SwitchC的路由表可以看到,虽然在SwitchB上10.1.1.0/24这条路由已经被过滤掉,但是LSA信息会继续传递给SwitchC,所以SwitchC的路由表中继续存在10.1.1.0/24这条路由。这样的结果也验证了我们一开始在注意事项中给出的结论:在链路状态路由协议中,filter-policy只能过滤路由信息,不能过滤LSA信息。
同时SwitchB和SwitchC的LSDB中仍然存在描述10.1.1.0/24这条路由的LSA信息,为了验证这一点,我们看一下SwitchB和SwitchC的LSA信息。
[SwitchB] display ospf lsdb router
OSPF Process 1 with Router ID 10.10.10.2
Area: 0.0.0.0
Link State Database
………
Type : Router
Ls id : 10.10.10.1
Adv rtr : 10.10.10.1
Ls age : 139
Len : 48
Options : E
seq# : 80000005
chksum : 0x41c4
Link count: 2
* Link ID: 10.1.1.0
Data : 255.255.255.0
Link Type: StubNet
Metric : 1
Priority : Low
* Link ID: 192.168.12.2
Data : 192.168.12.1
Link Type: TransNet
Metric : 1
[SwitchC] display ospf lsdb router
OSPF Process 1 with Router ID 10.10.10.3
Area: 0.0.0.0
Link State Database
…………
Type : Router
Ls id : 10.10.10.1
Adv rtr : 10.10.10.1
Ls age : 81
Len : 48
Options : E
seq# : 80000005
chksum : 0x41c4
Link count: 2
* Link ID: 10.1.1.0
Data : 255.255.255.0
Link Type: StubNet
Metric : 1
Priority : Low
* Link ID: 192.168.12.2
Data : 192.168.12.1
Link Type: TransNet
Metric : 1
可以看到SwitchB和SwitchC的LSDB中仍然存在描述10.1.1.0/24这条路由的LSA信息。
时间: 2016-11-30 21:06
作者: nanyou2009boy
4.2 通过filter-policy对OSPF接收的路由过滤(区域间)如图7所示,相对于上一个场景,这个场景的区别之处是划分了两个不同的区域,SwitchB和SwitchC之间传递的是Type3 LSA,这个Type3 LSA是SwitchB上根据区域间路由生成的。配置方法跟上一个场景一样,不再赘述,我们直接看一下实验结果。
图7 通过filter-policy对OSPF接收的路由过滤(区域间)
在部署过滤策略之前我们先看一下SwitchB和SwitchC的路由表
[SwitchB] display ip routing-table
Route Flags: R - relay, D - download to fib
-----------------------------------------------------------------------------
Routing Tables: Public
Destinations : 7 Routes : 7
Destination/Mask Proto Pre Cost Flags NextHop Interface
10.1.1.0/24 OSPF 10 2 D 192.168.12.1 Vlanif12
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.12.0/24 Direct 0 0 D 192.168.12.2 Vlanif12
192.168.12.2/32 Direct 0 0 D 127.0.0.1 Vlanif12
192.168.23.0/24 Direct 0 0 D 192.168.23.1 Vlanif23
192.168.23.1/32 Direct 0 0 D 127.0.0.1 Vlanif23
[SwitchC] display ip routing-table
Route Flags: R - relay, D - download to fib
-----------------------------------------------------------------------------
Routing Tables: Public
Destinations : 6 Routes : 6
Destination/Mask Proto Pre Cost Flags NextHop Interface
10.1.1.0/24 OSPF 10 3 D 192.168.23.1 Vlanif23
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.12.0/24 OSPF 10 2 D 192.168.23.1 Vlanif23
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
可以看到,在部署路由过滤策略之前,SwitchB和SwitchC的路由表中都有10.1.1.0/24这条路由。
结果验证
在SwitchB上部署filter-policy import以后,查看SwitchB和SwitchC的路由表,结果如下:
[SwitchB] display ip routing-table
Route Flags: R - relay, D - download to fib
-----------------------------------------------------------------------------
Routing Tables: Public
Destinations : 6 Routes : 6
Destination/Mask Proto Pre Cost Flags NextHop Interface
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.12.0/24 Direct 0 0 D 192.168.12.2 Vlanif12
192.168.12.2/32 Direct 0 0 D 127.0.0.1 Vlanif12
192.168.23.0/24 Direct 0 0 D 192.168.23.1 Vlanif23
192.168.23.1/32 Direct 0 0 D 127.0.0.1 Vlanif23
[SwitchC] display ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 5 Routes : 5
Destination/Mask Proto Pre Cost Flags NextHop Interface
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.12.0/24 OSPF 10 2 D 192.168.23.1 Vlanif23
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
由于现在划分不同的区域,SwitchC上的10.1.1.0/24这条路由是由SwitchB根据自身学习的路由产生的Type3-LSA描述的,而SwitchB上的这条路由被过滤掉了,因此不能够再产生描述区域间路由的这个Type3-LSA,因此SwitchC上不会再学习到10.1.1.0/24这条路由。
时间: 2016-12-13 23:56
作者: zbaichuan
花一个多小时就能写出这么高质量的讲解 膜拜
时间: 2018-6-1 17:03
作者: battleagle
太厉害了 谢谢
时间: 2019-1-8 11:02
作者: city_mouse
厉害了,顶
时间: 2019-1-9 11:16
作者: ybjll
牛啊,虽然我看不大懂
时间: 2020-1-10 21:26
作者: hljltht9209
讲的非常详细,谢谢分享!
通信人家园 (https://www.txrjy.com/) |
Powered by C114 |