你是否了解过OSPF协议?是否为各种类型的LSA感到困惑?时常分不清它们的作用和传播范围?今天,我们就结合华三模拟器上的实践,深入浅出的来了解一下OSPF协议的LSA类型。
OSPF(开放最短路径优先)协议。通过多种类型的LSA(链路状态通告)来描述网络拓扑和路由信息。每种LSA都有其特定的作用和明确的传播范围。以下是常见LSA类型的详细介绍及其作用范围。
常见OSPF LSA类型概览
| LSA类型 | 名称 | 主要作用 | 生成者 | 传播(泛洪)范围 |
|---|---|---|---|---|
| Type 1 | 路由器LSA (Router LSA) | 描述路由器的本地信息,最基本的LSA。 | 每台OSPF路由器 | 所在区域内部 |
| Type 2 | 网络LSA (Network LSA) | 描述多路访问网络(如以太网)中,连接到该网段的所有路由器 | DR | 所在区域内部 |
| Type 3 | 网络汇总LSA (Network Summary LSA) | 通告区域间的路由信息。 | ABR(区域边界路由器) | 整个自治系统内(特殊区域如Stub区域除外) |
| Type 4 | ASBR汇总LSA (ASBR Summary LSA) | 通告ASBR的位置。 | ABR(区域边界路由器) | 整个自治系统内(特殊区域如Stub区域除外) |
| Type 5 | AS外部LSA (AS External LSA) | 描述到达OSPF外部的路由 | ASBR(自治系统边界路由器) | 整个自治系统内(特殊区域如Stub区域、NSSA区域除外) |
| Type 7 | NSSA外部LSA (NSSA External LSA) | 在NSSA(非纯末梢区域)中通告外部路由。 | NSSA区域内的ASBR | NSSA区域内部(在ABR上可转换为Type5后继续传播) |
| Type 9/10/11 | 不透明LSA (Opaque LSA) | 用于OSPF的扩展功能 | 支持扩展功能的路由器 | 根据类型不同:链路本地(Type9)、本地区域(Type10)、自治系统内(Type11) |
Type1 LSA
即 Router LSA 。
正如字面意思,它代表了一个Router(路由器)。
实际意义是,描述自身(Router id)及包含的所有接口。
通俗的理解,Router LSA就像一个路由器的"身份证",它包含了路由器的基本信息(如Router id)和接口信息(如接口状态、成本、邻居)。
这里所说的自身是从OSPF角度说的,而不是设备角度。
即,没有宣告的接口,不会产生LSA。
如下所示,宣告了loopback接口, Router LSA中包含了loopback接口的信息。
[H3C-R1]interface LoopBack 0
[H3C-R1-LoopBack0]ip add 10.20.1.1 32
[H3C-R1-LoopBack0]quit
[H3C-R1]ospf 1
[H3C-R1-ospf-1]ar 0
[H3C-R1-ospf-1-area-0.0.0.0]network 10.20.1.1 0.0.0.0
[H3C-R1-ospf-1-area-0.0.0.0]dis this
#
area 0.0.0.0
network 10.20.1.1 0.0.0.0
#
return
[H3C-R1]dis ospf ls
[H3C-R1]dis ospf lsdb
OSPF Process 1 with Router ID 10.20.1.1
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 10.20.1.1 10.20.1.1 10 36 80000002 0
[H3C-R1]
下面我们尝试宣告一个接口,查看Router LSA中是否包含该接口的信息。
似乎并没有包含GigabitEthernet0/1接口的信息,依然只有loopback接口的信息。
[H3C-R1]interface g 0/1
[H3C-R1-GigabitEthernet0/1]ip add 10.20.2.1 30
[H3C-R1-GigabitEthernet0/1]quit
[H3C-R1]ospf 1
[H3C-R1-ospf-1]ar 0
[H3C-R1-ospf-1-area-0.0.0.0]net 10.20.2.1 0.0.0.3
[H3C-R1-ospf-1-area-0.0.0.0]dis this
#
area 0.0.0.0
network 10.20.1.1 0.0.0.0
network 10.20.2.0 0.0.0.3
#
return
[H3C-R1]dis ospf lsdb
OSPF Process 1 with Router ID 10.20.1.1
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 10.20.1.1 10.20.1.1 160 36 80000002 0
我们查看一下OSPF接口状态。我们看到接口GigabitEthernet0/1的OSPF状态是Down。这是因为我们没有配置对端设备。
准确的说,我在模拟器中目前只有一台设备,没有对端设备。
[H3C-R1]dis ospf interface
OSPF Process 1 with Router ID 10.20.1.1
Interfaces
Area: 0.0.0.0
IP Address Type State Cost Pri DR BDR
10.20.2.1 Broadcast Down 1 1 0.0.0.0 0.0.0.0
10.20.1.1 PTP Loopback 0 1 0.0.0.0 0.0.0.0
下面我们将对端接口也配置IP地址并宣告,查看Router LSA中是否包含该接口的信息。
在R2上配置IP,并宣告接口。我们看看R1的Router LSA中是否包含该接口的信息。
[H3C-R1]dis ospf lsdb
OSPF Process 1 with Router ID 10.20.1.1
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 10.20.1.2 10.20.1.2 67 48 80000006 0
Router 10.20.1.1 10.20.1.1 66 48 80000006 0
Network 10.20.2.1 10.20.1.1 65 32 80000002 0
[H3C-R1]
我们看到,R1接收到了R2 loopback接口(10.20.1.2)的Router LSA的信息。
但是R1宣告的接口GigabitEthernet0/1并不是Router LSA,而是Type2 LSA,即Network LSA。
下面我们来了解下Network LSA。
Type1 LSA小结
- Router LSA包含了Router自身的信息及所有接口的信息。
- Router LSA的Age字段表示该LSA的年龄,单位是秒。Age字段的值越小,表示该LSA越新。
- Router LSA的Metric字段表示该接口到目的网络的成本。
- Router LSA在OSPF中是一种单播LSA,只能在本地区域范围泛洪。
Type2 LSA(网络中的)
即 Network LSA。
正如字面意思,它代表了一个网络。如果我们把Router LSA看作是一个个的点,那么Network LSA就由多个点组成的网络。从Type1到Type2,以及到后面的Type3 LSA......,可以把OSPF的LSA看作是一个从点到面不断扩展的过程。
Network LSA,它由DR(Designated Router)生成,描述所在(MA多路访问)网络(如以太网)中所有邻接关系的路由器,包括DR本身。
这便解释了为什么在上节中,R1宣告的接口GigabitEthernet0/1不是Router LSA,而是Network LSA。因为R1的GigabitEthernet0/1默认是一个Broadcast接口。
正如我们看到的拓扑结构,R1和R2是点对点连接的,没有其他设备。所以它们之间并不需要DR,BDR选举,这完全可以避免,加快OSPF的收敛速度。
现在我们尝试将R1,R2的互联接口配置为Point-to-Point。看看是否还有Network LSA。
以R1为例,R2过程也类似。
[H3C-R1-GigabitEthernet0/1]ospf net
[H3C-R1-GigabitEthernet0/1]ospf network-type p2p
[H3C-R1]dis ospf lsdb
OSPF Process 1 with Router ID 10.20.1.1
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 10.20.1.2 10.20.1.2 123 60 8000000D 0
Router 10.20.1.1 10.20.1.1 122 60 8000000C 0
可以看到,R1接收到了R2的Router LSA,且仅有Router LSA,没有Network LSA。
在R2上,拥有和R1相同的LSDB。
再深入一点
再增加一个R3,且与R2使用默认的Broadcast互联。
在为R2,R3配置完成后,我们看看R1上的LSDB变化。
[H3C-R1]dis ospf lsdb
OSPF Process 1 with Router ID 10.20.1.1
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 10.20.1.3 10.20.1.3 56 48 80000007 0
Router 10.20.1.2 10.20.1.2 55 72 80000011 0
Router 10.20.1.1 10.20.1.1 1106 60 8000000C 0
Network 10.20.2.6 10.20.1.3 50 32 80000002 0
[H3C-R1]
可以看到,在R1的LSDB中,多了一个Network LSA,它的LinkState ID是10.20.2.6,即R3的GigabitEthernet0/1接口的IP地址,宣告者AdvRouter是R310.20.1.3。
有一个细节,LinkState ID是R3的接口IP,为什么不是R2的接口IP呢?
R2的OSPF接口状态。
[H3C-R2]dis ospf interface
OSPF Process 1 with Router ID 10.20.1.2
Interfaces
Area: 0.0.0.0
IP Address Type State Cost Pri DR BDR
10.20.2.5 Broadcast BDR 1 1 10.20.2.6 10.20.2.5
10.20.2.2 PTP P-2-P 1 1 0.0.0.0 0.0.0.0
10.20.1.2 PTP Loopback 0 1 0.0.0.0 0.0.0.0
[H3C-R2]
R3的OSPF接口状态。
[H3C-R3]dis ospf interface
OSPF Process 1 with Router ID 10.20.1.3
Interfaces
Area: 0.0.0.0
IP Address Type State Cost Pri DR BDR
10.20.2.6 Broadcast DR 1 1 10.20.2.6 10.20.2.5
10.20.1.3 PTP Loopback 0 1 0.0.0.0 0.0.0.0
[H3C-R3]
正是因为R3的接口是DR,R2的接口是BDR,所以在R1看到的Network LSA的LinkState ID是R3的接口IP。
准确的说,你在本地网络内所有设备上看到的这条Network LSA的LinkState ID都是R3的接口IP。因为本地网络范围内,所有设备都有相同的LSDB。
Type2 LSA小结
- Network LSA包含了所在(MA)网络中所有邻接关系的路由器,包括DR本身。
- Network LSA只能在本地区域范围泛洪。
- 在Point-to-Point网络中,没有Network LSA,只有Router LSA。
Type3 LSA(网络间的)
即 Network Summary LSA 。
正如字面意思,它代表了一个网络的汇总。
它由区域边界路由器ABR(Area Border Router)生成,描述一个区域内的网络信息,并将该信息通告给其他区域。它会根据收到的Network LSA,生成Network Summary LSA,以减少区域内的LSA数量,提高OSPF的效率。
前面我们说,Type1相当于点,很多个点组使用Type2构成了面,如此我们便拓展出了一个网络。而Type3 LSA,就相当于把这个网络继续扩大,拓展,将Type1和2汇总一下,实现面与面之间的连接,即区域与区域之间的连接。
我们在之前的拓扑上,构建一个Area 1的OSPF域。
图中R4,R6并不是ABR,是命名失误。R1,R3才是ABR。
配置过程与前面的相似。看一下各设备上的LSDB内都有什么类型的LSA。
可以看到,R1作为Area 1的ABR,Area 1的LSDB中,存在Router LSA、Network LSA、Network Summary LSA三种LSA类型。
[H3C-R1]dis ospf lsdb
OSPF Process 1 with Router ID 10.20.1.1
Link State Database
Area: 0.0.0.0
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 10.20.1.3 10.20.1.3 138 48 80000005 0
Router 10.20.1.2 10.20.1.2 140 72 80000007 0
Router 10.20.1.1 10.20.1.1 1139 60 80000004 0
Network 10.20.2.6 10.20.1.3 138 32 80000003 0
Sum-Net 10.20.3.4 10.20.1.1 977 28 80000001 2
Sum-Net 10.20.3.0 10.20.1.1 1118 28 80000001 1
Sum-Net 10.20.1.5 10.20.1.1 892 28 80000001 2
Sum-Net 10.20.1.4 10.20.1.1 977 28 80000001 1
Area: 0.0.0.1
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 10.20.1.5 10.20.1.5 902 48 80000006 0
Router 10.20.1.4 10.20.1.4 901 60 80000009 0
Router 10.20.1.1 10.20.1.1 983 36 80000005 0
Network 10.20.3.5 10.20.1.4 899 32 80000002 0
Network 10.20.3.1 10.20.1.1 977 32 80000002 0
Sum-Net 10.20.2.4 10.20.1.1 1118 28 80000001 2
Sum-Net 10.20.2.0 10.20.1.1 1118 28 80000001 1
Sum-Net 10.20.1.1 10.20.1.1 1118 28 80000001 0
Sum-Net 10.20.1.3 10.20.1.1 1118 28 80000001 2
Sum-Net 10.20.1.2 10.20.1.1 1118 28 80000001 1
[H3C-R1]
- Area 0.0.0.0 内,除了原来的
TYPE1、TYPE2 LSA,还多了4条TYPE3 LSA,分别是Area 1中Aear1-R4,R5的loopback接口,Aear1-R4的2个互联接口。 - Area 0.0.0.1 内,包含了区域内3台路由器自身的
TYPE1 LSA,R4上2个接口的TYPE2 LSA,同最初的Area 0一样,区域1作为一个网络(Network),它包含区域内所有路由器的信息TYPE1、TYPE2 LSA。 - Area 1中剩下的5条
Sum-Net LSA,则是区域0和区域1之间的连接,分别是区域0的2个网络(Network)和3台路由器(Router)。
如下图所示,区域0中3个TYPE1,2个TYPE2 共计5条以TYPE3 LSA的形式通告给了区域1。
同样区域1中,3个TYPE1(包含R1),2个TYPE2 共计"5"条以TYPE3 LSA的形式通告给了区域0。那为什么区域0中只有4条Sum-Net LSA? 因为R1作为Area 1的ABR,没必要把自己通告自己了,所以只需要4条Sum-Net LSA即可。
Aear1-R4和R5的LSDB是什么样的呢?无需查看,肯定和R1中区域1的LSDB是一样的。
例如下面是R4的LSDB,和R1的区域1的LSDB是一样的。
<Aear1-R4>dis ospf lsdb
OSPF Process 1 with Router ID 10.20.1.4
Link State Database
Area: 0.0.0.1
Type LinkState ID AdvRouter Age Len Sequence Metric
Router 10.20.1.5 10.20.1.5 1388 48 80000007 0
Router 10.20.1.4 10.20.1.4 1388 60 8000000A 0
Router 10.20.1.1 10.20.1.1 1472 36 80000006 0
Network 10.20.3.5 10.20.1.4 1388 32 80000003 0
Network 10.20.3.1 10.20.1.1 1468 32 80000003 0
Sum-Net 10.20.2.4 10.20.1.1 1608 28 80000002 2
Sum-Net 10.20.2.0 10.20.1.1 1608 28 80000002 1
Sum-Net 10.20.1.1 10.20.1.1 1608 28 80000002 0
Sum-Net 10.20.1.3 10.20.1.1 1608 28 80000002 2
Sum-Net 10.20.1.2 10.20.1.1 1608 28 80000002 1
<Aear1-R4>
区域间的路由传递
下面我们把Area 2也加入到OSPF域中。看看LSDB中都有什么类型的LSA。
拓扑如下所示。
图中R4,R6并不是ABR,是命名失误。R1,R3才是ABR。
R1作为Area 1的ABR,看看有什么类型的LSA。
可以看到:
- R1的区域0的LSDB中,除了原来的LSA,又新增了4条与Area 3的域间
TYPE3 LSA。 - R1的区域1的LSDB中,除了原来的LSA,又新增了4条与Area 3的域间
TYPE3 LSA。
那Area 3的LSDB中会有哪些LSA呢?对于下面的结果,想必你也能猜到。
三个区域的LSA通告示意图如下。
Type3 LSA小结
- Network Summary LSA由ABR生成,描述一个区域内的网络信息,并将该信息通告给其他区域。
- Network Summary LSA对外代表的是本区域内的Type1,Type2 LSA。
- 非0域的Network Summary LSA,需要通过0域来通告。(文中未体现,可通过实验验证)
- 0域可以和任何域的Network Summary LSA互相通告。
思考这个网络
Type1 LSA就像是众多的点(Router),这些点通过Type2 LSA组成网(Network),TYPE3 LSA将这些网(Network)组成更大的网。
由此,我们使用这3种LSA,便可以组建出一个健壮性极高的大型网络。
关于这个网络存在什么问题吗?当网络更大时,会有什么问题?
- 0域包含了所有区域的网络信息,未来LSDB会非常庞大。
- 0域中的路由器需要处理来自所有区域的LSA,压力会非常大。
- 非0域包含了其它所有域的Network Summary LSA,未来LSDB也会非常庞大。
- ABR需要处理两个域中的大量的LSA,压力会非常大。
- 巨大的LSDB会增加路由计算的时间,导致路由收敛时间增加。
- 全网任意一条路由的变动更新,都会被广播到全网所有区域,所有路由器。
- ......
关于这些问题如何解决我们后续会继续探讨。
总结
- OSPF通过多种类型的LSA来描述网络拓扑和路由信息,每种LSA都有其特定的作用和传播范围。
- LSDB是OSPF路由选择的基础,它包含了所有区域的LSA,是OSPF路由选择的依据。
- OSPF通过LSDB来计算路由,路由选择算法是Dijkstra算法。
- OSPF的路由选择是基于LSDB的,LSDB的大小直接决定了路由选择的效率。