LSA更新规则
序列号(sequence)
内容
- LSDB中的每个LSA都有一个序列号
- 4个字节的数字
- 以0x80000001开始
- 以7FFFFFFF结束
- OSPF每30分钟泛洪一次LSA
- 每一次,序列号增加1
- 具有更高(更新)序列号的表示最新的LSA
- 最后,序列号会返回到0x80000001
- 现有LSA的生存时间提前到达最大生存时间MAX Age(一小时),并且已经刷新
序列号判断重复的LSA
图示
分析
- 路由器收到其他路由器发送的LSA,判断该LSA是否在LSDB中,如果不在,则添加到LSDB中并发送LS ACK给其他路由器,泛洪LSA,运行SPF算法计算路由,形成新的路由表
- 如果收到其他路由器发送的LSA的序列号与之前已有的LSA序列号重复,忽略该LSA
- 如果没有重复,则判断其他路由器发送的LSA与路由器原有的LSA哪个的序列号高,序列号高的代表LSA较新,如果其他路由器发送来的LSA的序列号高,添加该LSA到LSDB
- 如果路由器原有的LSA的序列号高,则将原有的LSA发送给其他路由器
过期时间
刷新时间Refresh Age
内容
- LS Age的单位是S,随时间而增长,越小代表LSA越新
- 一条LSA在向外泛洪之前,LS Age的值需要增加Inf Trans Delay(该值可以在端口上设置,缺省为1s,表示在链路上传输的延迟)
- 如果一条LSA的LS Age达到LS Refresh Time(30分钟),重新生成该LSA(Age重新计算,序列号+1)
验证
R4中宣告一条路由
R1中会出现一条新的LSA
Max Age
内容
- 如果一条LSA的LS Age达到了Max Age(1小时),这条LSA将会被删除
- 如果路由器希望将某条自己此前生成的LSA删除,则可以重新生成这条LSA实例,并将LS Age设置成MAX Age
- 如果路由器收到一条LS Age为MAX Age的LSA,则从LSDB中删除此LSA(前提是LSDB中存在此LSA)
验证
R4删除一条路由
抓包看
引入外部路由
外部路由类型
图表
Type | Cost |
---|---|
第一类外部路由 (External Type 1) |
AS内部Cost+AS外部Cost |
第二类外部路由 (External Type 2) |
AS外部Cost |
图示
区别
当路由Cost相同的时候,外部路由的Type1 优于 Type 2
实验
拓扑
命令
图表
命令 备注 import-route static/rip/ospf/bgp/isis
limit:配置引入外部路由的最大数量
cost:配置外部路由的开销,默认为1
route-policy:配置路由策略
tag:配置标签,用于路由策略,默认为1
type:配置引入外部路由的类型,默认为2引入外部路由的命令
上面路由器的配置
R1配置
1
2
3
4
5
6
7sys
sys R1
int g0/0/0
ip add 10.0.1.1 24
ospf 1 router-id 1.1.1.1
area 1
net 10.0.1.1 0.0.0.0
R2配置
1
2
3
4
5
6
7
8
9
10
11
12sys
sys R2
int g0/0/0
ip add 10.0.1.2 24
int g0/0/1
ip add 10.0.2.1 24
ospf 1 router-id 2.2.2.2
area 1
net 10.0.1.2 0.0.0.0
area 0
net 10.0.2.1 0.0.0.0
R3配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30sys
sys R3
int g0/0/0
ip add 10.0.2.2 24
int g0/0/1
ip add 10.0.3.1 24
q
ip rpute-static 4.4.4.4 32 10.0.3.2
[R3]acl 2000
[R3-acl-basic-2000]rule 1 per
[R3-acl-basic-2000]rule 1 permit sr
[R3-acl-basic-2000]rule 1 permit sour
[R3-acl-basic-2000]rule 1 permit source 10.0.3.0 0.0.0.255
[R3-acl-basic-2000]rule 2 permit so
[R3-acl-basic-2000]rule 2 permit source 4.4.4.4 0.0.0.0
[R3-acl-basic-2000]q
[R3]rout
[R3]route-p
[R3]route-policy wuchao permit node 10
Info: New Sequence of this List.
[R3-route-policy]if-ma
[R3-route-policy]if-match acl 2000
ospf 1 router-id 3.3.3.3
import-route direct route-policy wuchao
import-route static
area 0
net 10.0.2.2 0.0.0.0
R4配置
1
2
3
4
5
6sys
sys R4
int g0/0/0
ip add 10.0.3.2 24
int lo 1
ip add 4.4.4.4 32
修改Cost
1
[R3-ospf-1]import-route static cost 10
修改Type
1
[R3-ospf-1]import-route direct route-policy wuchao type 1
验证
此时R1中会有两条外部路由,且开销都是1
修改引入外部路由的Cost
修改外部路由器引入的类型
Forwarding Address(次优外部路由)
产生原因
图示
解释
- A与B之间跑OSPF协议
- B与C之间跑RIP协议
- A、B、C属于同一个局域网
- A到C的数据包:A把数据包发送B,又从B的同一个接口将数据包发给C;而A可以直接将数据包发给C,就用到Forwarding Address
内容
- 如果引入OSPF的外部路由的下一跳与引入外部路由的路由器(OSPF协议)接口在同一个局域网
- 则在描述该外部路由的AS-External LSA中
- Forwarding Address 应该被设置成ADBR路由表中该路由的下一跳
图示
实验
拓扑
命令
R1配置
1
2
3
4
5
6
7sys
sys R1
int g0/0/0
ip add 192.168.1.1 24
ospf 1 router-id 1.1.1.1
are 0
net 192.168.1.1 0.0.0.0
R2配置
1
2
3
4
5
6
7
8
9sys
sys R2
int g0/0/1
ip add 192.168.1.2 24
ip route-static 3.3.3.3 32 192.168.1.3
ospf 1 router-id 2.2.2.2
import-route static
are 0
net 192.168.1.2 0.0.0.0
R3配置
1
2
3
4
5
6sys
sys R3
int g0/0/0
ip add 192.168.1.3 24
int lo 1
ip add 3.3.3.3 32
验证
R1中有外部路由3.3.3.3
R1的外部路由详细信息中有Forwarding Address 指向R3
汇总
概述
内容
- 将路由表中的多条路由汇总成一条路由,从而减少路由表的规模,提高性能和扩展性
- OSPFF的汇总只能在ABR和ASBR中配置
命令
命令 | 备注 |
---|---|
area 0 (需要在ABR所要宣告的路由的区域内配置) abr-summary 192.168.0.0 255.255.252.0 advertise :发布汇总路由,默认 not-advertise:不发布汇总路由(可以屏蔽某段路由) cost:开销 (多条路由汇总,默认用Cost最大的值作为汇总后的Cost) |
ABR区域间路由汇总 |
asbr-summary 192.168.0.0. 255.255.252.0 | ASBR外部路由汇总 |
区域间路由汇总
外部路由汇总
实验
拓扑
配置
R1配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20sys
sys R1
int g0/0/0
ip add 12.0.0.1 24
int lo 1
192.168.0.1/24
int lo 2
192.168.1.1/24
int lo 3
192.168.2.1/24
int lo 4
192.168.3.1/24
ospf 1 router-id 1.1.1.1
area 0
net 12.0.0.1 0.0.0.0
net 192.168.0.1 0.0.0.255
net 192.168.1.1 0.0.0.255
net 192.168.2.1 0.0.0.255
net 192.168.3.1 0.0.0.255
R2配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28sys
sys R2
int g0/0/0
ip add 12.0.0.2 24
int g0/0/1
ip add 23.0.0.1 24
#路由器策略
q
acl 2000
rule 1 permit source 3.3.3.3 0.0.0.0
q
route-policy wuchao permit node 10
if-match acl 2000
q
ip route-static 3.3.3.3 32 23.0.0.2
ospf 1 router-id 2.2.2.2
import-route static route-policy wuchao
area 0
net 12.0.0.2 0.0.0.0
#路由汇总
abr-summay 192.168.0.0 255.255.252.0 # 后面可以加参数
# Cost 修改汇总后的Cost
# advertise 宣告汇总路由(默认)
# not-advertise 不宣告汇总路由(可以屏蔽一些路由)
area 1
net 23.0.0.1 0.0.0.0
R3配置
1
2
3
4
5
6
7
8
9
10sys
sys R3
int g0/0/0
ip add 23.0.0.2 24
int lo 1
ip add 3.3.3.3 32
ospf 1 router-id 3.3.3.3
area 1
net 23.0.0.2 0.0.0.0
验证
没有汇总之前的LSDB
汇总之后的LSDB
特殊区域
stub区域与Totally Stub区域
图示
图表
特殊区域 | 备注 |
---|---|
Stub | 末节区域,屏蔽LSA 4/5 区域内不能有ASBR、不能是区域0(核心区域)、不能有虚连接 由ABR向该区域发送一条LSA 3类型的缺省路由 |
Totally Stub | 完全末节区域,屏蔽LSA 3/4/5类型 区域内不能是ASBR、不能是区域0(核心区域)、不能有虚连接 由ABR向该区域发送一条LSA 3类型的缺省路由 |
stub区域
内容
- 末节区域
- 屏蔽LSA 4/5类型
- 不能是核心区域
- 不能有ASBR
- 不能有虚连接
- 由ABR发送一条LSA 3类型的缺省路由
图示
实验
拓扑
配置
R1配置
1
2
3
4
5
6
7
8
9
10sys
sys R1
int g0/0/0
ip add 12.0.0.1 24
ospf 1 router-id 1.1.1.1
area 1
net 12.0.0.1 0.0.0.0
# 设置成末节区域
stub
R2配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15sys
sy R2
int g0/0/0
ip add 12.0.0.2 24
int g0/0/1
ip add 23.0.0.1 24
ospf 1 router-id 2.2.2.2
area 1
net 12.0.0.2 0.0.0.0
# 设置成末节区域
stub
area 0
net 23.0.0.1 0.0.0.0
R3配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16sys
sys R3
int g0/0/0
ip add 23.0.0.2 24
int lo 1
ip add 192.168.11.1 24
int lo 2
ip add 192.168.12.1 24
int lo 3
ip add 192.168.13.1 24
int lo 4
ip add 192.168.14.1 24
ospf 1 router-id 3.3.3.3
area 0
net 23.0.0.2 0.0.0.0
验证
没有特殊区域之前的LSDB
设置Stub之后的LSDB
路由表
Totally Stub 区域
内容
- 完全末节区域
- 屏蔽LSA 3/4/5类型
- 不能是核心区域
- 不能有ASBR
- 不能有虚连接
- 由ABR发送一条LSA 3类型的缺省路由
图示
实验
拓扑
配置
area1 内部路由器R1
1
2
3
4
5
6
7
8
9
10
11sys
sys R1
int g0/0/0
ip add 12.0.0.1 24
ospf 1 router-id 1.1.1.1
area 1
# 配置Stub区域
stub
net 12.0.0.1 0.0.0.0
area 1 边界路由ABR配置(R2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14sys
sy R2
int g0/0/0
ip add 12.0.0.2 24
int g0/0/1
ip add 23.0.0.1 24
ospf 1 router-id 2.2.2.2
area 1
# 配置Totaly Stub
stub no-summary
net 12.0.0.2 0.0.0.0
area 0
net 23.0.0.1 0.0.0.0
验证
3类、4类、5类LSA被一条3类LSA的缺省路由代替
没有设置Totally Stub
路由表
Stub与Totally Stub区域的问题
问题描述
- OSPF的area被定义为Stub或Totally区域后,无法作为ASBR引入外部路由
- 会出现次优路由
问题图示
NSSA与Totally NSSA
图表
特殊区域 | 备注 |
---|---|
NSSA Not-So-Stubby-Area | 不是那么末节的区域,屏蔽LSA 4/5类 区域内允许有ASBR 为了传递外部路由,该区域内使用LSA7类代替LSA5类 该区域的外部路由去往其他区域需要将LSA7类转化成LSA5类 该区域ABR会发送一条LSA 7的缺省路由 |
Totally NSSA | 完全不是那么末节的区域,屏蔽LSA 3/4/5类 区域内允许有ASBR 为了传递外部路由,该区域使用LSA7类代替LSA5类 该区域的外部路由去往其他区域需要将LSA7类转化成LSA5类 该区域的ABR会发送一条LSA 3类和LSA7类的缺省路由 |
图示
NSSA(Not So Stubby Area)
内容
- 不是那么末节的区域,屏蔽LSA 4/5类LSA
- 允许该区域有ASBR,外部路由
- 因为Stub区域不允许有4类和5类LSA,此时这个区域使用LSA7类代替LSA5类
- 为了传递该区域的外部路由到其他区域,ABR会将LSA7类转化成LSA5类
- 该区域会发布一条LSA7类的缺省路由
图示
实验
拓扑
配置
末节路由器配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14sys
sys R1
int g0/0/0
ip add 12.0.0.1 24
int lo 1
ip add 9.9.9.9 32
ospf 1 router-id 1.1.1.1
import-route direct
area 1
# 配置NSSA区域
nssa
net 12.0.0.1 0.0.0.0
ABR路由器配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14sys
sy R2
int g0/0/0
ip add 12.0.0.2 24
int g0/0/1
ip add 23.0.0.1 24
ospf 1 router-id 2.2.2.2
area 1
# 配置NSSA
nssa no-summary
net 12.0.0.2 0.0.0.0
area 0
net 23.0.0.1 0.0.0.0
验证
不配置特殊区域的LSDB
配置Stub的LSDB
配置NSSA的LSDB
末节区域内全部路由器配置NSSA后的LSDB
Totally NSSA
内容
- 完全不那么末节的区域,屏蔽LSA 3/4/5类LSA
- 允许末节区域内有外部路由
- 末节区域内外部路由是LSA7类
- 末节区域内的外部路由宣告给其他区域,需要将LSA7类转化成LSA5类
- 末节区域内发送一条LSA3类缺省路由和LSA7类缺省路由
图示
实验
拓扑
配置
末节区域ABR的配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14sys
sy R2
int g0/0/0
ip add 12.0.0.2 24
int g0/0/1
ip add 23.0.0.1 24
ospf 1 router-id 2.2.2.2
area 1
# 配置Totally NSSA
NSSA no-summary
net 12.0.0.2 0.0.0.0
area 0
net 23.0.0.1 0.0.0.0
末节区域引入外部路由的路由器配置
1
2
3
4
5
6
7
8
9
10
11
12
13
14sys
sys R1
int g0/0/0
ip add 12.0.0.1 24
int lo 1
ip add 9.9.9.9 32
ospf 1 router-id 1.1.1.1
import-route direct
area 1
# 配置NSSA区域
nasa
net 12.0.0.1 0.0.0.0
验证
没有配置特殊区域
配置Totally NSSA区域
总结
类型 | LSA3 | LSA4 | LSA5 | LSA7 | 自动发布缺省路由 |
---|---|---|---|---|---|
Stub | √ | ⅹ | ⅹ | ⅹ | √ |
Totally Stub | ⅹ | ⅹ | ⅹ | ⅹ | √ |
NSSA | √ | ⅹ | ⅹ | ⅹ | ⅹ/√ |
Totally NSSA | ⅹ | ⅹ | ⅹ | ⅹ | ⅹ/√ |