第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,其他路由器也有externallsa,但由于没有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

CautionConfiguring this feature causes the router to be noncompliant with RFC 1587. Also, suboptimal routing

我司目前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 exportarea[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
/在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命令。