作为减少OSPF LSDB和OSPF路由表的有效手段,OSPF路由汇总与BGP等其他路由协议有很大不同。
在这篇文章中,将介绍 OSPF 路由汇总。
什么是路由汇总?
路由汇总是指设备将学习到的部分路由网段按照一定的规则聚合成单个路由的操作,一般来说,路由汇总可以大大减少设备路由表项和转发表项。一方面可以减轻设备的负担,另一方面也可以让设备保存更多不同地址的路由。
虽然路线摘要看起来很棒,但它也有缺陷,最大的问题是它会导致黑洞路由。
例如下面的例子,
图 1:路由汇总导致的环路
R2 将学习到的路由 10.1.1.0/28
发送给 R1,R1 将这条路由汇总为 10.1.1.0/24
。如果R2配备了到R1的默认路由,此时如果R1收到发往10.1.1.128
的数据包,就会转发给R2,而R2上没有到10.1.1.128
的路由,就会发送数据数据包返回到 R1,在这种情况下,会生成一个循环。
因此,在配置路由汇总的过程中,需要慎重考虑是否会导致此类问题。
为什么我们需要 OSPF 路由汇总?
我们知道对于OSPF边缘路由器,我们可以配置stub area、total stub area、NSSA area或total NSSA area来减少其存储的LSDB和OSPF路由表项。但是如果骨干路由器上的LSDB表项太多,或者不是骨干但不能配置为特殊区域的区域,如何减少这些路由器上的LSDB和OSPF路由数量呢?
从前面的描述可以知道,可以通过路由汇总来实现。
由于 OSPF 是一种链路状态路由协议,因此 OSPF 路由器不传输路由,而是传输链路状态信息。因此,OSPF 路由通过汇总 LSA 来控制链路状态信息的传输,从而减小 LSDB 数据库的大小,进而控制路由的汇总。
由于OSPF路由分为区域内路由、区域间路由和外部路由(即引入OSPF进程的路由),所以区域内路由不需要汇总。
因此,OSPF 路由聚合包括两种类型:
- 区域间路由聚合
- 外部路由聚合
OSPF 区域间路由汇总
OSPF区域间路由聚合是指当OSPF LSA在不同区域间扩散时,通过在ABR上配置,将多条LSA聚合为一个LSA,然后进行扩散操作。
图 2:OSPF 区域间路由汇总
如上图,假设R1和R2之间的网段是10.1.1.0/24
,R2和R3之间的网段是10.1.0.0/24
网段,那么在R4和R5上,你会学到两条 OSPF 路由,即 10.1.1.0/24
和 10.1.0.0/24
。如果我们把R1上的这两个网段汇总起来,汇总成10.1.0.0/23
,那么R4和R5上就只有一个OSPF网段,即10.1.0.0/23
。
需要注意的是,在ABR上配置路由聚合时,需要在区域下进行配置。比如本例中,我们要汇总区域1中的两个网段10.1.0.0/24
和10.1.1.0/24
,那么,我们需要在R1的区域1下配置聚合。
观察 R1 和 R4 上的 LSDB 数据,我们可以看到 R1 将 10.1.1.0/24
和 10.1.0.0/24
两条路由聚合成一个 LSA 发送到区域 0。
图 3:OSPF 区域间路由汇总
OSPF 外部路由汇总
除了OSPF区域间路由汇总,OSPF引入外部路由时,我们还可以在ASBR上配置路由聚合。
图 4:OSPF 外部路由汇总
与OSPF 区域间路由聚合类似,OSPF 外部路由聚合也是在路由聚合完成后根据聚合路由生成LSA 进行扩散。
查看 R2 上的 LSDB,可以看到聚合的 LSA。
图 5:OSPF 外部路由汇总 LSDB
配置 OSPF 路由汇总
配置OSPF路由聚合分为配置OSPF域间路由聚合和配置OSPF外部路由聚合。
注意:OSPF 区域间路由聚合只能在 ABR 上配置,OSPF 外部路由聚合只能在 ASBR 上配置。
配置区域间路由汇总
[R1] ospf 1
[R1-ospf-1] area 1
[R1-ospf-1-area-0.0.0.1] abr-summary 10.1.0.0 255.255.254.0
配置外部路由汇总
[R3] ospf 1
[R3-ospf-1] asbr-summary 1.1.0.0 255.255.252.0