第1章 OSPF LSA過濾簡述
OSPF的過濾有兩種,一種是對路由表的過濾,這種方式只對配置過濾的路由器起作用,不能阻止LSA的泛洪,因此也不能影響其他路由器生成路由,filter-policy import(VRP) /distribute-list in(IOS);另一種是對LSA的過濾,這種方式其實並不是對LSA過濾,只是阻止LSA的生成,沒有了LSA,相應也會影響其他同區域或同自治域的路由器。
對路由表的過濾,適用所有運行OSPF的路由器;其他命令都是阻止LSA的生成,只能過濾原本應該是本路由器產生的LSA,這種過濾只能在LSA生成者上做過濾,ASBR是ASE/NSSA LSA的生成者,ABR是SUMMARY LSA的生成者,NSSA區域的ABR是NSSA轉ASE的生成者,所以我們很容易想到這種方式的過濾只能在ABR,ASBR和NSSA區域的ABR上。
第2章 OSPF中6種過濾方式
2.1 filter-policy import(OSPF)
只能用來過濾OSPF有效路由表裏的路由,並不能阻止LSA的泛洪。(除此之外,以下的過濾方式均是對LSA的過濾),被過濾的路由在路由表中爲inactive狀態。
對應IOS命令爲Router(config-router)# distribute-list 1 in/distribute-list prefix 1 in
Users can define a route map to prevent OSPF routes from being added to the routing table.
對應Junos命令爲import policy。IOS並不認爲這是一種真正的OSPF過濾。
R1路由器上配置兩條靜態路由,然後import到ospf中。
ip route-static 11.11.11.11 255.255.255.255 NULL0
ip route-static 111.111.111.111 255.255.255.255 NULL0
查看R2的路由表
<R2>dis ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 13 Routes : 13
Destination/Mask Proto Pre Cost Flags NextHop Interface
11.11.11.11/32 O_ASE 150 1 D 100.0.12.1 Serial0/0/0
111.111.111.111/32 O_ASE 150 1 D 100.0.12.1 Serial0/0/0
然後在R2上配置filter-policy import過濾掉11.11.11.11/32的路由不讓其加入到R2的路由表中。
ospf 1
filter-policy ip-prefix huawei import
#
ip ip-prefix huawei index 10 deny 11.11.11.11 32
ip ip-prefix huawei index 20 permit 0.0.0.0 0 less-equal 32
配置後查看R2的路由表:
<R2>dis ip routing-table
Route Flags: R - relay, D - download to fib
------------------------------------------------------------------------------
Routing Tables: Public
Destinations : 13 Routes : 13
Destination/Mask Proto Pre Cost Flags NextHop Interface
111.111.111.111/32 O_ASE 150 1 D 100.0.12.1 Serial0/0/0
可以看到路由表中已經沒有了11.11.11.11/32的路由,但是LSDB中還是有的。
[R2]dis ospf lsdb
OSPF Process 1 with Router ID 2.2.2.2
Link State Database
AS External Database
Type LinkState ID AdvRouter Age Len Sequence Metric
External 11.11.11.11 111.111.111.111 200 36 80000001 1
External 111.111.111.111 111.111.111.111 189 36 80000001 1
2.2 filter-policy export[acl/ip-prefix]/import-route(OSPF)[route-policy]
該命令用來在ASBR上對ASE/NSSA過濾,可以對本臺路由器引入而產生的ASE/NSSA LSA做過濾,過濾徹底,所有OSPF域的路由器將不會收到被過濾的ASE/NSSA LSA。
對應IOS命令爲Router(config-router)#distribute-list x out [rip]/ redistribute rip route-map
在R1上配置filter-policy export的策略,拒絕11.11.11.11/32的lsa進入到ospf中。
ospf 1
filter-policy ip-prefix huawei export
import-route static
#
ip ip-prefix huawei index 10 deny 11.11.11.11 32
ip ip-prefix huawei index 20 permit 0.0.0.0 0 less-equal 32
配置後在R1上查看lsdb,發現已經沒有了11.11.11.11/32的ase lsa。
[R1]dis ospf lsdb
OSPF Process 1 with Router ID 111.111.111.111
Link State Database
AS External Database
Type LinkState ID AdvRouter Age Len Sequence Metric
External 111.111.111.111 1.1.1.1 10 36 80000001 1
R2、R3也同樣沒有了11.11.11.11/32的ase lsa,當然也無法計算出路由來。
2.3 asbr-summary not-advertise(OSPF)
該命令用來在ASBR 上可以對自身產生的ASE/NSSA做過濾,阻止本路由器產生符合特定條件的ASE/NSSA,以及在NSSA區域的ABR上可以對7轉5的LSA做過濾,阻止本路由器根據NSSA產生符合特定條件的ASE。
對應IOS命令爲Router(config-router)#summary-address 10.0.0.0 255.255.25.0 no advertise
NSSA區域的ABR可以在ABR上對Type7轉5的LSA進行二次過濾
在R1上配置[R1-ospf-1]asbr-summary 11.11.11.11 255.255.255.255 not-advertise
配置後,查看R1的lsab發現已經沒有了11.11.11.11/32的ase lsa,其他路由器也沒有11.11.11.11/32的ase lsa,同樣無法計算出路由,過濾徹底。
[R1-ospf-1]dis ospf lsdb
AS External Database
Type LinkState ID AdvRouter Age Len Sequence Metric
External 111.111.111.111 1.1.1.1 142 36 80000001 1
對於在ABR上配置7轉5時過濾時需要注意以下特性:
ABR全局路由表中只有存在FA地址的路由時,纔會將nssa-external轉換成external lsa,其他路由器收到這個external的lsa後,還要檢查是否有到達fa地址的路由,如果沒有,不會參與計算,所以在ABR上如果對fa地址路由(該種過濾無法通過配置suppress-fa來搞定,因爲在ABR上根本沒有執行nssa-external轉external)或lsa進行過濾,都會導致骨幹區其他路由器無法計算該路由。如果確實需要進行過濾,那麼需要在ABR上配置R2(config-router)#area 100 nssa translate type7 suppress-fa命令。
在上圖的組網中,如果想在ABR上做Area 2區域的ASBR地址的LSA過濾,(我司VRP5命令爲aera視圖下abr-summary 100.0.15.0 255.255.255.0not-advertise,此時在ABR上仍舊有ASBR FA地址的路由和nssa-external路由,該路由器也會將nssa-external lsa轉換成external lsa,其他路由器也有external的lsa,但由於沒有FA地址的路由,因此該external lsa不會參與計算,無法生成路由)或者(配置distribute-list in過濾掉FA的路由,此時ABR的路由表上由於沒有asbr FA地址的路由,也算不出來nssa-external的路由,同時ABR不會將nssa-external轉換成external,這樣其他路由器根本都不會再有external的lsa),那麼會導致Area0的路由器無法到達AS1的網絡,因爲Area 2中ASBR的地址被寫進了Type 7 LSA的FA中,沒有到達這個FA地址的路由,Area0中的路由器無法使用這些Type5(7轉5)的LSA計算路由。
注:主要原因是在ABR上將FA地址的LSA聚合了,導致Area0中沒有這個FA地址路由無法迭代。
This problem is solved by suppressing the forwarding address on the ABR so that the forwarding address is set to 0.0.0.0 in the Type-5 LSAs that were translated from Type-7 LSAs. A forwarding address set to 0.0.0.0 indicates that packets for the external destination should be forwarded to the advertising OSPF router, in this case, the translating NSSA ABR
配置命令:Router(config-router)# area 10 nssa translate type7 suppress-fa
Caution:Configuring this feature causes the router to be noncompliant with RFC 1587. Also, suboptimal routing might result because there might be better paths to reach the destination’s forwarding address. This feature should not be configured without careful consideration and not until the network topology is understood.
我司目前VRP5.5仍不支持此特性, VRP5.6版本開始支持該特性;Cisco在12.2(15)T版本之後提供此特性。
注:在我司VRP5.6之前有一種解決方案,如果在ABR上配置了abr-summary not-advertise對ASBR的路由做了過濾,那麼可以在ABR上配置asbr-summary對ase路由進行一次聚合,這樣FA地址會改爲0,就不會再去查FA地址,保證網絡可通。(asbr-sunmary x.x.x.x聚合的網段可以和原來的網段一致,這樣也能夠發佈ase路由,並將FA置0)
2.4 filter import(area) [acl/ip-prefix/route-policy]
該命令用來在ABR上作summary lsa過濾, 如果是骨幹區域(非骨幹區域),就防止從其他非骨幹區域(骨幹區域)轉換到該區域符合特定條件的summary lsa生成,過濾徹底。
對應IOS命令爲Router(config-router)# area area-id filter-list prefix prefix-list-name in
filter export(area)[acl/ip-prefix/route-policy]命令用來在ABR上作summary lsa過濾,如果是骨幹區域(非骨幹區域),就阻止從該區域轉換到其他非骨幹區域(骨幹區域)符合特定條件的summary lsa生成,過濾徹底。
對應IOS命令爲Router(config-router)# area area-id filter-list prefix prefix-list-name out
配置summary lsa過濾前,在R3上查看summary lsa的條目:
<R3>dis ospf lsdb
OSPF Process 1 with Router ID 3.3.3.3
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Sum-Net 100.0.12.0 2.2.2.2 298 28 80000001 1562
Sum-Net 1.1.1.1 2.2.2.2 282 28 80000001 1563
在R2路由器上過濾100.0.12.0/30的summary lsa不傳遞到area 0,配置命令如下:
ospf 1
area 0.0.0.0
network 2.2.2.2 0.0.0.0
network 100.0.23.0 0.0.0.3
area 0.0.0.100
filter ip-prefix huawei export //在area 0中配置filter ip-prefix huawei import作用相同
network 100.0.12.0 0.0.0.3
#
ip ip-prefix huawei index 10 deny 100.0.12.0 30
ip ip-prefix huawei index 20 permit 0.0.0.0 0 less-equal 32
配置後查看R3的summary lsa條目,發現已經沒有了100.0.12.0的條目:
<R3>dis ospf lsdb
OSPF Process 1 with Router ID 3.3.3.3
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Sum-Net 1.1.1.1 2.2.2.2 149 28 80000001 1563
2.5 abr-summary not-advertise(area)
用來在ABR上summary lsa做過濾,如果是骨幹區域(非骨幹區域),就防止從該區域轉換到其他非骨幹區域(骨幹區域)符合特定條件的summary lsa生成,類似filter-policy export(area)命令的作用,但又有點區別,該命令只對本區域的區域內路由作過濾不對區域間路由做過濾。(原因是:這條命令是聚合命令,目前我們VRP和IOS的聚合命令的實現是隻對本區域的路由做聚合而不對區域間路由做聚合,所以說abr-summary not-advertise這條命令實際只是對本區域的區域內路由起過濾作用。)
對應IOS命令爲:Router(config-router)#area 10 range 1.1.1.0 255.255.255.0 no-advertise
在R2上配置abr-summary過濾1.1.1.1/32的summary lsa。
[R2-ospf-1-area-0.0.0.100]abr-summary 1.1.1.1 255.255.255.255 not-advertise
配置後在R3上查看lsa,發現已經沒有了1.1.1.1的lsa信息。
<R3>dis ospf lsdb
OSPF Process 1 with Router ID 3.3.3.3
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Sum-Net 100.0.12.0 2.2.2.2 39 28 80000001 1562
2.6 ospf filter-lsa-out
該命令用來在廣播、NBMA、P2P以及P2MP網絡中,配置對特定OSPF接口出方向的LSA進行過濾。有以下參數:
all:對所有的LSA(除了Grace LSA)都進行過濾。
summary:對Network Summary LSA(Type3)進行過濾。
acl acl-number:指定基本訪問控制列表編號。整數形式。
ase:對AS External LSA(Type5)進行過濾。
nssa:對NSSA LSA(Type7)進行過濾。
通過對特定OSPF接口出方向的LSA進行過濾可以不向鄰居發送無用的LSA,從而減少鄰居LSDB的大小,提高網絡收斂速度。
當兩臺路由器之間存在多條鏈路時,通過配置本地路由器可以在某些鏈路上過濾LSA的傳送,減少不必要的重傳,節省帶寬資源。
在P2MP網絡中配置對指定鄰居發送的LSA進行過濾時,需要使用filter-lsa-out peer命令。