路由器將外部路由引入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接收,而后者依然能夠計算出外部路由。