路由器将外部路由引入OSPF时,可以使用Filter-Policy对引入的路由在向OSPF发布前进行过滤。如此一来,该路由器只会将未被过滤的路由引入OSPF。
Filter-Policy对于向OSPF发布的路由进行过滤只适用于上述场景,如果在OSPF域内的路由器上执行Filter-Policy,试图对于向OSPF发布的区域内或者区域间路由进行过滤,这是无法生效的,因为OSPF区域内部路由、区域间路由的计算是通过Type-1、Type-2及Type-3 LSA来完成的,Filter-Policy无法对向OSPF发布的LSA进行过滤。
在图1中,R1、R2及R3运行了OSPF。R1将三条外部路由引入OSPF,初始情况下,OSPF域内的路由器都能学习到这三条外部路由。现在,我们希望R1在引入外部路由时,不向OSPF域通告172.16.2.0/24路由,这可以通过在R1上部署Filter-Policy实现。
图1 Filter-Policy对OSPF发布的路由进行过滤
R1的关键配置如下:
完成上述配置后,R2的路由表如下:
R2的路由表中,172.16.2.0/24这条OSPF外部路由已经消失了,实际上这是由于R1部署了出方向(Export)的Filter-Policy后,R1不再产生描述这条外部路由的Type-5 LSA,因此整个OSPF域内的路由器都不会学习到这条外部路由。
需要再次强调的是,如果不在R1上部署Filter-Policy,而是等待R1将外部路由引入OSPF之后,在R2上部署出方向的Filter-Policy,试图使R3无法学习到172.16.2.0/24路由,这是无法实现的。
正如前文所述,Filter-Policy无法对LSA进行过滤,当外部路由被R1引入OSPF时,R1将在OSPF域内注入Type-5 LSA用于描述这些外部路由,因此在R2上执行出方向的Filter-Policy试图对这些外部路由进行过滤是行不通的,Type-5 LSA依然会被R3接收,而后者依然能够计算出外部路由。