1、路由聚合
OSPF 是一种链路状态路由协议,因此 OSPF路由器不传输路由,而是传输链路状态信息。因此,OSPF 路由通过汇总 LSA 来控制链路状态信息的传输,从而减小 LSDB 数据库的大小,进而控制路由的汇总。
由于OSPF路由分为区域内路由、区域间路由和外部路由(即引入OSPF进程的路由),所以区域内路由不需要汇总。
路由聚合是指ABR可以将具有相同前缀的路由信息聚合到一起,只发布一条路由到其它区域。
区域间通过路由聚合,可以减少路由信息,从而减小路由表的规模,提高设备的性能。
OSPF有两种路由聚合方式:
1、ABR聚合
ABR向其它区域发送路由信息时,以网段为单位生成Type3 LSA。如果该区域中存在一些连续的网段,则可以通过命令将这些连续的网段聚合成一个网段。这样ABR只发送一条聚合后的LSA,所有属于命令指定的聚合网段范围的LSA将不会再被单独发送出去。
![在这里插入图片描述](https://img-blog.csdnimg.cn/a928057704aa4e1c90586a980eb4fbd6.png#pic_center =600x200
2、ASBR聚合
配置路由聚合后,如果本地设备是自治系统边界路由器ASBR,将对引入的聚合地址范围内的Type5 LSA进行聚合。当配置了NSSA区域时,还要对引入的聚合地址范围内的Type7 LSA进行聚合。
如果本地设备既是ASBR又是ABR,则对由Type7 LSA转化成的Type5 LSA进行聚合处理。
对于NSSA区域,当该区域的ABR将Type-7LSA转换为Type-5LSA时,该ABR也可以充当ASBR的角色,并对Type-5LSA进行聚合。
1.1、路由聚合算法:
案例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。
案例3:
IP地址 | 相同位 | 不同位 |
---|---|---|
172.16.12.0/24 | 10101100 00010000 000011 | 00 00000000 |
172.16.13.0/24 | 10101100 00010000 000011 | 01 00000000 |
172.16.14.0/24 | 10101100 00010000 000011 | 10 00000000 |
172.16.15.0/24 | 10101100 00010000 000011 | 11 00000000 |
聚合路由 | 172.16.12 | 0/22 22=8+8+6 |
1.2、案例:
交换机配置:
vlan batch 2 3 4 5
int Vlanif 2
ip add 172.16.1.100 24
int vlanif 3
ip add 172.16.2.100 24
int vlanif 4
ip add 172.16.3.100 24
int vlanif 5
ip add 172.16.4.1 24
int g0/0/1
port link-type access
port default vlan 2
int g0/0/2
port link-type access
port default vlan 3
int g0/0/3
port link-type access
port default vlan 4
int g0/0/4
port link-type access
port default vlan 5
OSPF配置:
R1
ospf router-id 172.16.6.6
area 1
network 172.16.1.0 0.0.0.255
network 172.16.2.0 0.0.0.255
network 172.16.3.0 0.0.0.255
network 172.16.4.0 0.0.0.255
network 172.16.6.6 0.0.0.0
R2
ospf router-id 10.0.2.2
area 0
network 10.0.12.0 0.0.0.255
area 2
network 10.0.24.0 0.0.0.255
network 10.0.2.2 0.0.0.0
R3
ospf router-id 10.0.3.3
area 0
network 10.0.13.0 0.0.0.255
area 2
network 10.0.3.3 0.0.0.0
network 10.0.34.0 0.0.0.255
R4
ospf router-id 10.0.4.4
area 2
network 10.0.4.4 0.0.0.0
network 10.0.24.0 0.0.0.255
network 10.0.46.0 0.0.0.255
network 10.0.34.0 0.0.0.255
network 10.0.45.0 0.0.0.255
配置area2为NSSA区域
[R2]ospf 1
[R2-ospf-1]area 2
[R2-ospf-1-area-0.0.0.2]nssa
[R3]ospf 1
[R3-ospf-1]area 2
[R3-ospf-1-area-0.0.0.2]nssa
[R4]ospf 1
[R4-ospf-1]area 2
[R4-ospf-1-area-0.0.0.2]nssa
配置去往外部网络的静态路由,并进行引入。
R4
ip route-static 10.100.5.1 32 10.0.46.6
ip route-static 10.100.5.2 32 10.0.46.6
ip route-static 10.100.5.3 32 10.0.46.6
ospf
import-route static
查看DR和BDR及邻接关系
<R1>dis ospf peer
OSPF Process 1 with Router ID 10.0.1.1
Neighbors
Area 0.0.0.0 interface 10.0.12.1(GigabitEthernet0/0/1)'s neighbors
Router ID: 10.0.2.2 Address: 10.0.12.2
State: Full Mode:Nbr is Master Priority: 1
DR: 10.0.12.1 BDR: 10.0.12.2 MTU: 0
Dead timer due in 40 sec
Retrans timer interval: 5
Neighbor is up for 00:36:52
Authentication Sequence: [ 0 ]
查看R1上路由表
<R1>dis ip rou
Destination/Mask Proto Pre Cost Flags NextHop Interface
10.0.12.0/24 Direct 0 0 D 10.0.12.1 G0/0/1
10.0.12.1/32 Direct 0 0 D 127.0.0.1 G0/0/1
10.0.13.0/24 Direct 0 0 D 10.0.13.1 G0/0/2
10.0.13.1/32 Direct 0 0 D 127.0.0.1 G0/0/2
10.0.24.0/24 OSPF 10 2 D 10.0.12.2 G0/0/1
10.0.34.0/24 OSPF 10 2 D 10.0.13.3 G0/0/2
10.0.46.0/24 OSPF 10 3 D 10.0.13.3 G0/0/2
10.100.5.1/32 O_ASE 150 1 D 10.0.13.3 G0/0/2
10.100.5.2/32 O_ASE 150 1 D 10.0.13.3 G0/0/2
10.100.5.3/32 O_ASE 150 1 D 10.0.13.3 G0/0/2
172.16.1.0/24 OSPF 10 2 D 172.16.4.1 G0/0/0
172.16.2.0/24 OSPF 10 2 D 172.16.4.1 G0/0/0
172.16.3.0/24 OSPF 10 2 D 172.16.4.1 G0/0/0
172.16.4.0/24 Direct 0 0 D 172.16.4.2 G0/0/0
172.16.4.2/32 Direct 0 0 D 127.0.0.1 G0/0/0
查看LSA
<R2>dis ospf lsdb
Type LinkState ID AdvRouter Age Len Sequence Metric
一类LSA
Router 10.0.3.3 10.0.3.3 1742 36 80000006 1
Router 10.0.2.2 10.0.2.2 1793 36 80000006 1
Router 10.0.1.1 10.0.1.1 437 48 8000000D 1
二类LSA
Network 10.0.13.1 10.0.1.1 437 32 80000004 0
Network 10.0.12.1 10.0.1.1 522 32 80000004 0
三类LSA
Sum-Net 10.0.34.0 10.0.3.3 1742 28 80000003 1
Sum-Net 10.0.24.0 10.0.2.2 1793 28 80000003 1
Sum-Net 10.0.24.0 10.0.3.3 1704 28 80000002 2
Sum-Net 172.16.3.0 10.0.1.1 229 28 80000004 2
Sum-Net 172.16.2.0 10.0.1.1 1380 28 80000001 2
Sum-Net 172.16.1.0 10.0.1.1 1712 28 80000005 2
Sum-Net 172.16.4.0 10.0.1.1 646 28 80000003 1
Sum-Net 10.0.46.0 10.0.3.3 1001 28 80000001 2
AS External Database
Type LinkState ID AdvRouter Age Len Sequence Metric
External 10.100.5.1 10.0.3.3 296 36 80000001 1
External 10.100.5.3 10.0.3.3 295 36 80000001 1
External 10.100.5.2 10.0.3.3 299 36 80000001 1
案例中ABR聚合
只有在ABR上才能经行区域间路由聚合。
R1上使用abr-summary配置区域间路由聚合
172.16.1.0 00000001
172.16.2.0 00000010
172.16.3.0 00000011
172.16.0.0/22
配置:
ospf
area 1
abr-summary 172.16.0.0 255.255.252.0
R2查看路由表:
<R2>dis ip rou
Destination/Mask Proto Pre Cost Flags NextHop Interface
172.16.0.0/22 OSPF 10 3 D 10.0.12.1 G0/0/1
172.16.4.0/24 OSPF 10 2 D 10.0.12.1 G0/0/1
案例中ASBR聚合
配置外部路由聚合
[R4]ospf 1
[R4-ospf-1]a 2
[R4-ospf-1-area-0.0.0.2]asbr-summary 10.100.5.0 255.255.255.252
查看R2数据库表:
<R2>dis ospf lsdb
OSPF Process 1 with Router ID 10.0.2.2
Link State Database
Area: 0.0.0.2
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 10.0.2.2 10.0.2.2 368 36 80000005 1
Sum-Net 10.0.34.0 10.0.2.2 13 28 80000004 3
Sum-Net 10.0.13.0 10.0.2.2 67 28 80000004 2
Sum-Net 10.0.12.0 10.0.2.2 67 28 80000004 1
Sum-Net 172.16.0.0 10.0.2.2 473 28 80000001 3
Sum-Net 172.16.4.0 10.0.2.2 67 28 80000004 2
Sum-Net 10.0.46.0 10.0.2.2 1074 28 80000002 4
NSSA 0.0.0.0 10.0.2.2 67 36 80000004 1
AS External Database
Type LinkState ID AdvRouter Age Len Sequence Metric
External 10.100.5.0 10.0.3.3 45 36 80000001 2
R2的LSDB中没有明细Type-5LSA和Type-7LSA,只有聚合后的Type-5LSA和Type-7LSA,R2的路由表中没有外部网络的明细路由,只有聚合后的路由。
在NSSA区域的ABR上配置外部路由聚合
由于区域2 是NSSA区域,该区域的ABR路由器会将Type-7LSA转换为Type-5LSA,并泛洪到区域0。
先删除R4上的路由聚合配置,然后再区域2的ABR路由器R2上配置外部路由聚合。
[R4-ospf-1]undo asbr-summary 10.100.5.0 255.255.255.252
[R2-ospf-1]asbr-summary 10.100.5.0 255.255.255.252
[R3-ospf-1]asbr-summary 10.100.5.0 255.255.255.252
注意:
R2和R3都ABR,这时是选取Router-ID较大的路由器作为ABR路由器,R3的上聚合才能生效,但是人我们还是会在R2配置asbr-summary,是作为备份使用,一旦R3路由发生中断事故,R2将作为ABR。
1.3、OSPF 缺省路由
通常企业网与ISP(互联网服务提供商)相连访问外部网络。通常情况下企业网络设备与ISP设备之间不会运行某种动态交换路由信息。企业无需知道和维护外部网络,而是通过缺省路由的方式来实现对外网的访问,这样可以精简路由表规模,同时当外部网络发生故障时,企业内部网络也不会受到影响,从而增强企业网络的安全性。
缺省路由是指目的地址和掩码都是0的路由。当设备无精确匹配的路由时,就可以通过缺省路由进行报文转发。由于OSPF路由的分级管理,Type3缺省路由的优先级高于Type5或Type7路由。
Type3缺省路由> Type5缺省路由or Type7缺省路由。
OSPF动态注入缺省路由通常应用于下面两种情况:
发布者 | 描述 |
---|---|
区域边界路由器(ABR) | 发布Type3缺省Summary LSA,用来指导区域内设备进行区域之间报文的转发。 |
自治系统边界路由器(ASBR) | 发布Type5外部缺省ASE LSA,或者Type7外部缺省NSSA LSA,用来指导自治系统(AS)内设备进行自治系统外报文的转发。 |
OSPF缺省路由的发布原则如下:
- OSPF路由器只有具有对区域外的出口时,才能够发布缺省路由LSA。
- 如果OSPF路由器已经发布了缺省路由LSA,那么不再学习其它路由器发布的相同类型缺省路由。即路由计算时不再计算其它路由器发布的相同类型的缺省路由 LSA,但数据库中存有对应LSA。
- 外部缺省路由的发布如果要依赖于其它路由,那么被依赖的路由不能是本OSPF路由域内的路由,即不是本进程OSPF学习到的路由。因为外部缺省路由的作用是用于指导报文的域外转发,而本OSPF路由域的路由的下一跳都指向了域内,不能满足指导报文域外转发的要求。
1.3.1、向普通区域注入缺省路由
[R4]ip route-static 0.0.0.0 0.0.0.0 202.103.68.1
[R4]ospf 100
[R4-ospf-100]import-route static
LSDB没有出现0.0.0.0的LSA,表示OSPF网络规定不允许通过import-router static命令注入缺省路由。
在ASBR已经有缺省路由,执行default-route-advertise命令,将在整个OSPF区域中通告缺省路由0.0.0.0。
在R4上使用default-route-advertise命令注入一条缺省路由。
命令用来将缺省路由通告到普通OSPF区域。
[R4-ospf-100]default-route-advertise
查看LSA
[R4]dis ospf lsdb
这里可以看到LSDB引入了0.0.0.0的Type-5 LSA的缺省路由,因为Type-5的泛洪范围是整个OSPF网络,说明default-route-advertise命令注入缺省路由的方法已经生效了。
但是,在实际场景中,R4 与R5之间的链路出现故障,就会导致R4的静态缺省路由失效,那么R4路由表就会失去这条缺省路由,进而导致default-route-advertise发布的缺省路由也随之失效.当恢复之后,静态缺省路由又会出现在路由表中,而表示这条缺省路由大的Type-5 LSA又会再次被发布到OSPF中,这样链路不稳定,会造成缺省路由和路由表的不稳定。
为了避免链路不稳定带来的影响,提高网络的可靠性,我们希望R4上是否已经存在缺省路由,R4都能够向整个OPF网络注入缺省路由。
[R4]ospf 100
[R4-ospf-100]default-route-advertise always //总是将缺省路由通告到普通OSPF区域。
OSPF可以配置多种下发方式:
- 在ABR上下发
- 在ASBR上下发
- 强制下发
- 非强制下发
OSPF下属非自动强制路由:
区域类型 | 配置命令 | 产生者 | LSA类型 | 范围 | 有没有缺省路由 |
---|---|---|---|---|---|
普通 | default-route-advertise | ASBR | 5 | 路由域 | 有 |
普通 | default-route-advertise always | ASBR | 5 | 路由域 |
缺省情况下,在普通OSPF区域内的OSPF设备不产生缺省路由。
import-route (OSPF)命令不能引入外部路由的缺省路由。当需要引入其他协议产生的缺省路由时,必须在ASBR上配置default-route-advertise命令,发布缺省路由到整个普通OSPF区域。
ASBR已经有缺省路由,执行default-route-advertise命令,将在整个OSPF区域中通告缺省路由0.0.0.0。
配置always参数,无论ASBR是否有缺省路由都将在整个OSPF区域中通告缺省路由0.0.0.0,并且不再计算来自其他设备的缺省路由。
1.3.2、Stub区域ABR动态生成发布Type3缺省Summary LSA。
Area 2区域 R2、R3为Stub区域。ABR动态生成发布Type3缺省Summary LSA。
查看LSA
[R3]dis ospf lsdb
Sum-Net 0.0.0.0 10.0.3.3 1742 28 80000003 1
Sum-Net 10.0.34.0 10.0.3.3 1793 28 80000003 1
Area 2区域配置成为Totally STUB区域
[R3]ospf 100
[R3-ospf-100]area 2
[R3-ospf-100-area-0.0.0.1]stub no-summary
查看LSA
[R3]dis ospf lsdb
Sum-Net 0.0.0.0 10.0.3.3 53 28 80000024 1
其它三类LSA不存在,只剩一条Type3缺省Summary LSA。
区域类型 | 配置命令 | 产生者 | LSA类型 | 范围 | 有没有缺省路由 |
---|---|---|---|---|---|
STUB | 自动产生 | ABR | 3 | STUB域 | |
Totally STUB | 自动产生 | ABR | 3 | STUB域 |
1.3.3、NSSA区域或Totally-NSSA区域生成缺省路由。
配置NSSA区域或Totally NSSA区域时,该区域会自动向该区域注入表示缺省路由的Type-7LSA。
[R1]ospf 100
[R1-ospf-100]area 1
[R1-ospf-100-area-0.0.0.2]nssa
[R3]ospf 100
[R3-ospf-100]area 1
[R3-ospf-100-area-0.0.0.2]nssa
[R3]dis ospf lsdb
NSSA 0.0.0.0 10.0.3.3 67 36 80000004 1
配置区域2为Totally NSSA区域
[R3-ospf-100-area-0.0.0.2]nssa no-summary
结果是和上面Nssa是一样的。
1、Totally NSSA区域
Totally NSSA区域不允许携带区域间路由,ABR会自动生成一条第3类的缺省路由在完全NSSA区域内传播。
2、NSSA区域内两种缺省路由:
- ABR产生的第三类缺省路由;
- ASBR产生的第七类缺省路由。
1)、NSSA区域七类缺省路由:如果想让外部路由只通过本区域的NSSA ASBR到达,可以在ASBR上配置产生一条Type 7类的缺省路由0.0.0.0,该缺省路由的传播区域是整个NSSA区域内部。
- 外部路由只通过NSSA ASBR到达NSSA区域内部。
[R3]ospf 100
[R3-ospf-100]area 1
[R3-ospf-100-area-0.0.0.2]nssa
[R3-ospf-100-area-0.0.0.2]nssa default-route-advertise //在ASBR上配置产生缺省的Type7 LSA到NSSA区域
nssa default-route-advertise(ASBR)
注意:需要在本路由器上已存在一条其他路由协议产生或静态配置的缺省路由时,才会发布Type 7类缺省路由。
- 非自治系统的外部路由,NSSA ASBR的其它外部路由通过ABR传入其它区域。NSSA ABR上配置产生Type 7类的缺省路由0.0.0.0通告给整个NSSA区域内的路由器。
nssa default-route-advertise(ABR)
不论是否存在其他路由协议产生或静态配置的缺省路由,都会发布Type 7类的缺省路由。
2)、NSSA区域上ABR的缺省路由:
nssa no-summary(ABR)
自动产生第三类缺省路由。
在NSSA区域配置产生的是Type 7类或Type 3类缺省路由,传播的区域是整个NSSA区域。如果同时收到第三类缺省路由和Type 7类缺省路由,将会优选Type 3类缺省路由加入路由表。
区域类型 | 配置命令 | 产生者 | LSA类型 | 范围 | 有没有缺省路由 |
---|---|---|---|---|---|
NSSA | nssa default-route-advertise | ASBR | 7 | NSSA域 | 有 |
NSSA | nssa default-route-advertise | ABR | 7 | NSSA域 | |
Totally-NSSA | 自动产生 | ABR | 3 | NSSA域 |
3)、NSSA区域缺省路由配置错误可能产生的路由环路。
在NSSA区域的ABR在发布第三类缺省路由的同时也会学习其它ASBR发布的第七类缺省路由,配置时如果不注意将会在NSSA区域产生路由环路。
如上图,在ABR上配置NSSA区域为完全NSSA区域,因此ABR会自动在NSSA区域内发布Type 3类缺省路由;在ASBR上配置一条静态路由指向外部,同时配置nssa default-route-advertise命令发布Type 7类缺省路由。
对于R2来说,它会同时收到R1发来的ABR发布的Type 3类缺省路由和R3ASBR发布的Type 7类缺省路由,Type 3类优先,因此它会选择Type 3类缺省路由加入它的路由表,R3的路由表中缺省路由0.0.0.0的下一跳指向ABR。
对于R1来说,由于ABR会接收ASBR发布的Type 7类缺省路由,所以它会把Type 7类的缺省路由加入自己的路由表中,R1ABR到R3ASBR的下一跳是R2,因此R1的路由表中缺省路由0.0.0.0的下一跳指向R2;
这样在R1和R2之间就存在一条由缺省路由0.0.0.0产生的环路,导致R1和R2到外部区域的数据均不能正确转发。