4 filter-policy原理与应用

在路由策略专题第一期(初识路由策略)中,我们曾经提到filter-policy也属于路由策略的范畴,但是filter-policy的过滤规则和使用方法与route-policy又有很大的不同,因此这一期我们单独讨论一下filter-policy的原理和应用。

1      filter-policy介绍

filter-policy也是一个很常用的路由信息过滤工具,如图1所示,SwitchASwitchBSwitchC之间运行某种路由协议,路由在各个设备之间传递,当需要根据实际需求过滤某些路由信息的时候可以使用filter-policy实现。

image.png 

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所示,在讨论之前我们有必要回忆一下距离矢量路由协议和链路状态路由协议路由信息传递的区别。

路由类型

路由传递原理

距离矢量路由协议

(例如RIP

各路由设备之间传递的是路由信息。这种路由信息对于报文来说相当于“路标”,设备依靠“路标”来指导报文转发,路标指向哪里报文就转发到哪里。

链路状态路由协议

(例如OSPF

各路由设备之间传递的是LSA信息。LSA信息的集合(LSDB)形成整个网络的拓扑结构,相当于一张地图,设备依靠“地图+最短路径算法”为报文找到最佳的转发路径。

距离矢量路由协议和链路状态路由协议原理对比

如图2所示,在距离矢量路由协议中,设备之间传递的是路由信息,如果需要对这种路由信息进行某种过滤,可以使用filter-policy实现,出方向和入方向的生效位置如图2所示。如果要过滤掉上游设备到下游设备的路由,只要在上游设备配filter-policy export或者在下游设备上配置filter-policy import就可以了。

image.png 

2 filter-policy在距离矢量路由协议中应用

如图3所示,在链路状态路由协议中,各路由设备之间传递的是LSA信息,然后设备根据LSA汇总成的LSDB信息计算出路由表。

OSPF为例,filter-policy生效规则如下:

l  filter-policy import命令实际上是对OSPF计算出来的路由进行过滤,不是对发布和接收的LSA进行过滤。

l  filter-policy export命令用来对引入的路由在发布时进行过滤,只将满足条件的外部路由转换为Type5 LSAAS-external-LSA)并发布出去。这样可以在引入外部路由时进行特定的过滤,防止形成路由环路。

image.png 

3 filter-policy在链路状态路由协议中应用

3      使用filter-policy过滤RIP路由示例

3.1      通过filter-policyRIP发布的路由做过滤

需求描述

如图4所示,三台交换机通过RIP交互路由,在SwitchARIP进程中引入了三条静态路由(作为测试路由),用户要求在SwitchB上部署filter-policy export,将其通告给SwitchC的路由进行过滤,拒绝192.168.3.0/24这条路由,其他路由放行。

image.png 

通过filter-policyRIP发布的路由做过滤

配置方法

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、在SwitchBRIP视图中,部署filter-policy export

[SwitchB]rip

[SwitchB-rip-1] filter-policy ip-prefix huawei export Vlanif20

结果验证

做完上述配置以后,查看SwitchBSwitchC的路由表如下:

[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-policyRIP接收的路由做过滤

需求描述

如图5所示,三台交换机通过RIP交互路由,在SwitchARIP进程中引入了三条静态路由(作为测试路由),用户要求在SwitchB上部署filter-policy import,把192.168.3.0/24这条路由拒绝,其他路由放行。

image.png 

通过filter-policyRIP接收的路由做过滤

配置方法

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、在SwitchBRIP视图中,部署filter-policy import

[SwitchB]rip

[SwitchB-rip-1] filter-policy ip-prefix huawei import Vlanif10

结果验证

做完上述配置以后,查看SwitchBSwitchC的路由表如下:

[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以后,SwitchBSwitchC的路由表中都不存在192.168.3.0/24这条路由了。

由于RIP是距离矢量路由协议,它是将自己的路由表通告给它的邻居路由器,当SwitchB的路由表中192.168.3.0/24这条路由被过滤以后,SwitchC也就无法再通过RIP学习到这条路由。也就是说,对于距离矢量路由协议,如果一台设备的路由表被进行了过滤,那么它会继续影响它下游的设备的路由表。

注意事项:

filter-policy exportfilter-policy import命令在RIP进程下配置,如果基于接口或者协议对路由进行过滤,则一个接口或协议只能配置一个策略;在没有指定接口和协议的情况下,就认为是配置全局过滤策略,同样只能配置一个策略,如果重复配置,新的策略将覆盖之前的策略。

4      使用filter-policy过滤OSPF路由示例

4.1      通过filter-policyOSPF接收的路由过滤(区域内)

需求描述

如图6所示,三台交换机同属于OSPF Area 0区域,SwitchA发布测试网段10.1.1.0/24,要求在SwitchB上部署filter-policy import,使得SwitchB的路由表中不允许出现10.1.1.0/24这条路由。

image.png 

通过filter-policyOSPF接收的路由过滤(区域内)

配置方法

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、在SwitchBOSPF视图中,部署filter-policy import

[SwitchB] ospf

[SwitchB-ospf-1] filter-policy ip-prefix huawei import

结果验证

做完上述配置以后,查看SwitchBSwitchC的路由表如下:

[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

通过SwitchBSwitchC的路由表可以看到,虽然在SwitchB10.1.1.0/24这条路由已经被过滤掉,但是LSA信息会继续传递给SwitchC,所以SwitchC的路由表中继续存在10.1.1.0/24这条路由。这样的结果也验证了我们一开始在注意事项中给出的结论:在链路状态路由协议中,filter-policy只能过滤路由信息,不能过滤LSA信息。

同时SwitchBSwitchCLSDB中仍然存在描述10.1.1.0/24这条路由的LSA信息,为了验证这一点,我们看一下SwitchBSwitchCLSA信息。

[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

可以看到SwitchBSwitchCLSDB中仍然存在描述10.1.1.0/24这条路由的LSA信息。

4.2      通过filter-policyOSPF接收的路由过滤(区域间)

如图7所示,相对于上一个场景,这个场景的区别之处是划分了两个不同的区域,SwitchBSwitchC之间传递的是Type3 LSA,这个Type3 LSASwitchB上根据区域间路由生成的。配置方法跟上一个场景一样,不再赘述,我们直接看一下实验结果。

image.png 

通过filter-policyOSPF接收的路由过滤(区域间)

在部署过滤策略之前我们先看一下SwitchBSwitchC的路由表

[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

可以看到,在部署路由过滤策略之前,SwitchBSwitchC的路由表中都有10.1.1.0/24这条路由。

结果验证

SwitchB上部署filter-policy import以后,查看SwitchBSwitchC的路由表,结果如下:

[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这条路由。

 

 https://forum.huawei.com/enterprise/zh/thread-373371-1-1.html


标签: none

添加新评论