十一、OSPF聚合(汇总)
1、路由聚合(汇总)
路由汇总是一种重要的思想,在大型的项目中是必须考虑的一个重点事项。随着网络的规模越来越大,网络中的设备所需维护的路由表项也就会越来越多,路由表的规模也就会逐渐变大,而路由表是需要占用设备的内存空间的,路由的查询也是需要占用设备的资源的。
因此需要考虑(尤其在一些大型的网络中)在保证网络中路由畅通的同时,减小路由表的规模。在不使用路由汇总的情况下,每个链路的LSA会发送到OSPF骨干一级其他区域中,这就造成了不必要的网络流量和路由开销。假如使用路由汇总,只有汇总的路由会传播到骨干区域,避免了大量LSA占用带宽,CPU以及内存资源。即便链路出现了故障,这种变化也不会传播到骨干网络中,使得骨干网络更加稳定。
几乎所有的路由协议都支持路由汇总。RIP、EIGRP等协议支持自动及手工路由汇总,而OSPF只支持手工路由汇总。
路由聚合(Route Aggregation or Route Summarization,路由汇总): 是指ABR可以将学习到的具有相同前缀的路由信息,按照一定的规则聚合到一起,只发布一条路由到其它区域。
一般来说,路由汇总可以大大减少设备路由表项和转发表项。一方面可以减轻设备的负担,另一方面也可以让设备保存更多不同地址的路由。
**作用:**通过汇总路由的方式减小路由表规模以及优化设备资源利用率。
**缺陷:**最大的问题是它会导致黑洞路由。
(上图)R2将学习到外网10.1.1.0/28的路由发送给R1,R1将这条路由汇总为10.1.1.0/24。如果R2配备了到R1的默认路由,此时如果R1收到发往10.1.1.1/28的数据包,就会转发给R2,而R2上没有到10.1.1.1/28的路由,就会发送数据数据包返回到R1,在这种情况下,会生成一个循环。因此,在配置路由汇总的过程中,需要慎重考虑是否会导致此类问题。
(1)路由聚合的优/缺点
1)针对明细路由做汇总可以有效地减少OSPF路由器的数据库条目也就是路由表条目,合理的节省了设备性能。
2)可以隐藏明细路由不稳定所造成的路由震荡问题。
3)在双出口做路由聚合时,有一个做,有一个没做会影响到路由选路。
(2)OSPF汇总的使用场景
当OSPF域内某台ASBR(自治域边界路由器)设备重分布了大量的路由进入OSPF域内,而这些路由条目又是连续的,可以汇总成几条子网掩码更大的路由条目的时候,就可以考虑在ASBR设备上做路由汇总,以便向OSPF域内传递的时候只通告这些汇总的路由,减少OSPF域内的路由数量,节约设备资源。
当OSPF域内某台ABR(区域边界路由器)设备学习到了普通区域传递过来的大量的路由,而这些路由条目又是连续的,可以汇总成几条子网掩码更大的路由条目的时候,就可以考虑在这台ABR设备上做路由汇总,以便这些路由条目经过骨干区域(area 0)传递到其他普通区域的时候只通告这些汇总的路由,减少OSPF域内的路由数量,节约设备资源。
(3)为什么我们需要OSPF路由汇总?
对于OSPF边缘路由器,我们可以配置stub area、total stub area、NSSA area或total NSSA area来减少其存储的LSDB和OSPF路由表项。但是如果骨干路由器上的LSDB表项太多,或者不是骨干但不能配置为特殊区域的区域,如何减少这些路由器上的LSDB和OSPF路由数量呢?
从前面的描述可以知道,可以通过路由汇总来实现。
OSPF是一种链路状态路由协议,因此OSPF路由器不传输路由,而是传输链路状态信息。因此,OSPF路由通过汇总LSA来控制链路状态信息的传输,从而减小LSDB数据库的大小,进而控制路由的汇总。
由于OSPF路由分为区域内路由、区域间路由和外部路由(即引入OSPF进程的路由),所以区域内路由不需要汇总。
概念: 将多条具有相同前缀的路由聚合成一条,通告到其他区域
目的: 1.减少维护数据库的规模 2.减少路由表维护数量 3.减少其他区域不稳定链路的影响
2、聚合机制
与RIP不同,OSPF不支持自动路由聚合,仅支持手动路由聚合。
(1)OSPF路由聚合方式
**域间汇总(区域间路由聚合) :**可以减少路由信息,从而减小路由表的规模,提高设备的性能。
区域间路由聚合,必须配置在ABR路由器上。ABR把与自己直接相连区域(Area)的路由进行聚合,把Type-1和Type-2 LSA转换成Type-3 LSA时,对生成的Type-3 LSA进行聚合。从而减少传播至与自己直接相连的其他区域的Type-3 LSA的数量。
需要特别强调的是,区域间路由只能聚合由Type-1 LSA或Type-2 LSA产生的路由;如果路由是由外部或其他区域传到本区域的(或者说路由是由Type-5 LSA或 Type-3 LSA生成的),则对于这样的路由ABR是不能够进行聚合的。
域外汇总(外部路由聚合): 必须配置在ASBR路由器上,在ASBR路由器上,针对引入OSPF网络的外部路由进行的聚合,目的是减少在OSPF网络中的Type-5 LSA的数量。
对于NSSA区域,当该区域的ABR将Type-7 LSA转换为Type-5 LSA时,该ABR也可以充当ASBR的角色,并对Type-5 LSA进行聚合。需要注意的是,当NSSA区域存在多台ABR时,必须由Router-ID最大的ABR进行Type-7 LSA到Type-5 LSA的转换操作。
NSSA区域的外部路由聚合有两种方式:
1)在NSSA区域的ASBR上直接对外部路由进行聚合,
2)在NSSA区域中Router-ID最大的、负责将Type-7 LSA转成Type-5 LSA的ABR上进行聚合。
1)OSPF区域间路由汇总(ABR聚合)
仅针对本区域域内路由(以O开头的域内路由)做汇总,本区域的OIA的域间路由没有办法汇总。
ABR向其它区域发送路由信息时,以网段为单位生成Type3 LSA。如果该区域中存在一些连续的网段,则可以通过命令将这些连续的网段聚合成一个网段。这样ABR只发送一条聚合后的LSA,所有属于命令指定的聚合网段范围的LSA将不会再被单独发送出去。(如下右图)
OSPF区域间路由聚合是指当OSPF LSA在不同区域间扩散时,通过在ABR上配置,将多条LSA聚合为一个LSA,然后进行扩散操作。
(如上左图)假设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。
[R1]display ospf lsdb
OSPF Process 1 with Router ID 10.1.14.1
Link State Database
Area:0.0.0.0
Type LinkStateID AdvRouter Age Len Sequence Metric
Router 10.1.14.1 10.1.14.1 1353 36 88888886 1
Router 10.1.14.4 10.1.14.4 1362 36 80088083 1
Network 10.1.14.1 10.1.14.1 1353 32 80880002 0
Sum-Net 10.1.0.0 10.1.14.1 1130 28 80888882 2
Area:0.0.0.1
Type LinkStateID AdvRouter Age Len Sequence Metric
Router 10.1.0.2 10.1.0.2 1366 48 88888885 1
Router 10.1.14.1 10.1.14.1 1396 36 88888885 1
Network 10.1.1.1 10.1.14.1 1396 32 88888882 0
Sum-Net 10.1.14.0 10.1.14.1 1438 28 80888881 1
[R4]display ospf lsdb
OSPF Process 1 with Router ID 10.1.14.4
Link State Database
Area:0.0.0.0
Type LinkStateID AdvRouter Age Len Sequence Metric
Router 10.1.14.1 10.1.14.1 1393 36 808868861 1
Router 10.1.14.4 10.1.14.4 1488 36 800000031 1
Network 10.1.14.1 10.1.14.1 1393 32 800660820 0
Sum-Net 10.1.0.0 10.1.14.1 1170 28 80000002 2
2)OSPF外部路由汇总(ASBR聚合)
配置路由聚合后,如果本地设备是自治系统边界路由器ASBR,将对引入的聚合地址范围内的Type5 LSA进行聚合。当配置了NSSA区域时,还要对引入的聚合地址范围内的Type7 LSA进行聚合。
如果本地设备既是ASBR又是ABR,则对由Type7 LSA转化成的Type5 LSA进行聚合处理。
对于NSSA区域,当该区域的ABR将Type-7LSA转换为Type-5LSA时,该ABR也可以充当ASBR的角色,并对Type-5LSA进行聚合。
**ASBR:**针对重分发进来的外部路由做路由汇总
除了OSPF区域间路由汇总,OSPF引入外部路由时,我们还可以在ASBR上配置路由聚合。
与OSPF 区域间路由聚合类似,OSPF 外部路由聚合也是在路由聚合完成后根据聚合路由生成LSA 进行扩散。
查看R2上的LSDB,可以看到聚合的LSA。
3、汇总(聚合)计算方法
(1)简单的,同一子网的汇总
(下左图)判断第几位发生变化,转换成二进制,将不变的位,保留下来作为子网掩码的位数=16+5=21。也可以算变化的位24-3=21,变化的位全部值为0,那么这个时候的网络地址就是汇总后的地址。
192.168.00000000.0/21=192.168.0.0/21(255.255.248.0)
案例1:
|-----------------|--------------------|
| IP地址 | 二进制 |
| 172.18.129.0/24 | 129:10000001 |
| 172.18.130.0/24 | 130:10000010 |
| 172.18.132.0/24 | 132:10000100 |
| 172.18.133.0/24 | 133:10000101 |
| | 前5位相同(10000),后3位不同 |
相同的前缀有21位,保留相同位数,将相同比特后面的数(到末尾)填充为0将不相同的3个001比特填充为0,得到10000000,根据8\4\2\1法计算出,十进制为128。
**结果:**路由汇聚的Ip地址就是172.18.128.0,172.18.128.0/21。掩码=8+8+5,前21位比特为1不能变,变化为后11位。
**不变的10000:**128+64+32+16+8=128+80+40=248掩码为255.255.248.0。
案例2:
|-------------------|---------------|
| IP地址 | 二进制 |
| 202.113.79.128/27 | 128:1000 0000 |
| 202.113.79.160/27 | 160:1010 0000 |
| 202.113.79.192/27 | 192:1100 0000 |
| 202.113.79.224/27 | 133:1110 0000 |
相同的前缀有25位,保留相同位数,将不相同比特后面的数(到末尾)填充为0。
将不相同的比特填充为0,得到10000000,根据8\4\2\1法计算出,十进制为128。
**结果:**路由汇聚的Ip地址就是202.113.79.128。202.113.79.128/25。掩码=8+8+8+1,前25位比特为1不能变,变化为后7位。可用地址数为2^7-2=126。
(2)复杂的,不同子网的汇总
首先判断是第几段的地址位发生变化,后面的可以忽略,汇总成这个段的地址的主网络号,其次使用上面简单的处理方法 ,汇总后子网为8+1=9 或者16-7=9
4、配置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
(1)OSPF路由汇总案例(一)
(上图所示)R1、R2、R3、R4及R5运行OSPF,OSPF区域的规划如图。
R5将三个直连网段(172.16.1.0/24、172.16.2.0/24、172.16.3.0/24)都network到OSPF。
R1将三个直连网段(10.1.1.0/24、10.1.2.0/24、10.1.3.0/24)都重发布到OSPF。
完成上述配置后,所有的路由器应该都能学习到全网的路由。在ABR上执行路由汇总(下图所示)
在R3(ABR)上对Area2内的路由执行汇总:
[R3]router ospf 1
[R3]area 2 range 172.16.0.0 255.255.0.0 cost ?
注意,这种汇总方式(area range)只能在ABR上配置,而且只能对ABR直接连接的区域中的Intra-Area路由(区域内部路由)执行汇总。
R3执行汇总后,R1及R2的路由表中将出现172.16.0.0/16的汇总路由,而不会再学习到明细路由。如此一来,R1及R2的路由表就精简了,而且当它们需要访问R5下挂的那三个网段时,可以通过这条汇总路由到达。
要强点的是,如果不是在R3,而是在R2上对R5下挂的网段进行汇总,则无法实现。因此此时R3作为ABR,已经将描述这些网段的3类LSA注入到了Area0,而在R2上,是无法对这些3类LSA进行路由汇总的。 在ASBR上执行路由汇总(下图所示)
在R1上对其自己重发布进OSPF的路由执行汇总:
router ospf 1
summary-address 10.1.0.0 255.255.0.0
完成上述配置后,R2、R3、R4及R5都会学习到一条10.1.0.0/16的汇总路由(使用Type-5 LSA描述),而不会再学习到10.1.1.0/24、10.1.2.0/24以及10.1.3.0/24这三条明细路由。
在NSSA的ABR上执行路由汇总
将网络做一点小小的变更,Area1被配置为NSSA。R1将三条直连路由引入NSSA,R2会学习到这三条外部路由(Type-7 LSA),并执行Type-7 LSA转Type-5 LSA的动作,因此其实R2既是ABR又是ASBR,这些Type-5 LSA是由其产生的,那么R2也能执行路由汇总:
router ospf 1
summary-address 10.1.0.0 255.255.0.0
OSPF汇总路由的防环设计
在上图所示的场景中,R3将R5下挂的三个子网汇总成172.16.0.0/16并向R2通告这条汇总路由。R1则下发一条OSPF默认路由到整个OSPF域。此时R5下挂的某个子网里有PC中毒,疯狂扫描一个并不存在的子网的IP地址(如172.16.222.0/24子网),这些数据包被发给网关R5,R5通过路由表查询,最终将这些报文依照默认路由进行转发,也就是发送给R4,而R4也一样,将报文依照默认路由转发给R3,R3再转给R2,而R2由于已经收到R3传递过来的汇总路由(172.16.0.0/16),因此经过路由表查询后,数据包的目的地址匹配上了这条汇总路由,于是它又把这些数据包丢回去给R3,数据包的目的地址在R3处匹配了默认路由,又被丢回R2,如此反复,直到报文的TTL递减为0。这就出现了环路。
OSPF为了解决这个问题,在执行路由汇总时,会在本地自动产生一条指向Null0的路由。例如在R3处执行了路由汇总,则它会自动产生一条指向Null0的路由:
O 172.16.0.0/16 is a summary, 00:00:02, Null0
这样一来当再有类似事件发生,数据包将在R3这就被丢弃(匹配Null0路由)。
实际上,当执行路由汇总时,自动在本地路由表产生一条指向Null0的路由是一种非常常规的防环手段,许多动态路由协议都具备这个特征。
(2)OSPF路由汇总案例(二)
域间汇总,在ABR上进行
R1配置:
router ospf 100
router-id 1.1.1.1
network 1.1.1.1 0.0.0.0 area 0
network 12.1.1.0 0.0.0.255 area 0
R2配置:
router ospf 100
router-id 2.2.2.2
network 2.2.2.2 0.0.0.0 area 0
network 12.1.1.0 0.0.0.255 area 0
network 23.1.1.0 0.0.0.255 area 1
network 24.1.1.0 0.0.0.255 area 2
R3配置:
router ospf 100
router-id 3.3.3.3
network 3.3.3.3 0.0.0.0 area 1
network 192.168.20.1 0.0.0.255 area 1
network 192.168.21.1 0.0.0.255 area 1
network 192.168.22.1 0.0.0.255 area 1
network 192.168.23.1 0.0.0.255 area 1
network 23.1.1.0 0.0.0.255 area 1
R4配置:
router ospf 100
router-id 4.4.4.4
network 4.4.4.4 0.0.0.0 area 2
network 192.168.32.0 0.0.0.255 area 2
network 192.168.33.0 0.0.0.255 area 2
network 192.168.34.0 0.0.0.255 area 2
network 192.168.35.0 0.0.0.255 area 2
network 192.168.36.0 0.0.0.255 area 2
network 192.168.37.0 0.0.0.255 area 2
network 192.168.38.0 0.0.0.255 area 2
network 192.168.39.0 0.0.0.255 area 2
network 24.1.1.0 0.0.0.255 area 2
show ip route 查看路由表可以看见,由于域间路由的传播,R1上多达进20条路由,有R3宣告的4个。R4宣告的8个192.68网段的路由如果不进行汇总,会泛洪到全网,所以我们应该在Area 1和Area 2的ABR,也就是R2上进行汇总操作,具体操作如下:
R2(config)#router ospf 100
R2(config-router)#area 1 range 192.168.20.0 255.255.252.0
R2(config-router)#area 2 range 192.168.32.0 255.255.248.0
此时查看R1的路由表,发现
O IA 192.168.20.0/22 [110/21] via 12.1.1.2
O IA 192.168.32.0/21 [110/12] via 12.1.1.2
可以看见,Area 1和Area 2上的192.168网段已经完成了汇总。这样会节省很多资源,拓扑发生变化也不会影响Area 0的路由表。
域外汇总,在ASBR上进行
拓扑图不变,但将Area 2变为EIGRP
R2更改配置
router ospf 100
no network 24.1.1.0 0.0.0.255 area 2
router eigrp 90
no auto-summary
network 24.1.1.0 0.0.0.255
R4更改配置
no router ospf 100
router eigrp 90
no auto-summary
network 24.1.1.0 0.0.0.255
network 4.4.4.4 0.0.0.0
network 192.168.32.0 0.0.0.255
network 192.168.33.0 0.0.0.255
network 192.168.34.0 0.0.0.255
network 192.168.35.0 0.0.0.255
network 192.168.36.0 0.0.0.255
network 192.168.37.0 0.0.0.255
network 192.168.38.0 0.0.0.255
network 192.168.39.0 0.0.0.255
之后在R2上进行双向重分发
router ospf 100
redistribute eigrp 90 subnets
router eigrp 90
redistribute ospf 100 metric 1000 1 255 1 1500
可以看见O E2标记的为外部的EIGRP路由,并没有汇总。
在R2上进行域间路由汇总
router ospf 100
summary-address 192.168.32.0 255.255.248.0
然后查看R1的路由表
O IA 192.168.20.0/22 [110/21] via 12.1.1.2
O E2 192.168.32.0/21 [110/20] via 12.1.1.2
已经完成汇总。
整个华为数通学习笔记系列中,本人是以网络视频与网络文章的方式自学的,并按自己理解的方式总结了学习笔记,某些笔记段落中可能有部分文字或图片与网络中有雷同,并非抄袭。完处于学习态度,觉得这段文字更通俗易懂,融入了自己的学习笔记中。如有相关文字涉及到某个人的版权利益,可以直接联系我,我会把相关文字删除。【VX:czlingyun 暗号:CSDN】