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上。
只能用来过滤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
该命令用来在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,当然也无法计算出路由来。
该命令用来在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)
该命令用来在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
用来在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
该命令用来在广播、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命令。