| 类型 | 名称 | 描述 |
|---|---|---|
| 1 | 路由器 LSA(Router LSA) | 每个设备都会产生,描述了设备的链路状态和开销。 该 LSA 只能在接口所属的区域内泛洪 |
| 2 | 网络 LSA(Network LSA) | 由 DR 产生,描述该 DR 所接入的 MA 网络中所有与之形成邻接关系的路由器,以及 DR 自己。 该 LSA 只能在接口所属区域内泛洪。 |
| 3 | 网络汇总 LSA(Network Summary LSA) | 由 ABR 产生,描述区域内某个网段的路由,该类 LSA 主要用于区域间路由的传递 |
| 4 | ASBR 汇总 LSA(ASBR Summary LSA) | 由 ABR 产生,描述到 ASBR 的路由,通告给除 ASBR 所在区域的其他相关区域。 |
| 5 | AS 外部 LSA(AS External LSA) | 由 ASBR 产生,用于描述到达 OSPF 域外的路由。 |
| 7 | 非完全末梢区域 LSA(NSSA LSA) | 由 ASBR 产生,用于描述到达 OSPF 域外的路由。 NSSA LSA 与 AS 外部 LSA 功能类似,但是泛洪范围不同。 NSSA LSA 只能在始发的 NSSA 内泛洪,并且不能直接进入 Area0。 NSSA 的 ABR 会将 7 类 LSA 转换成 5 类 LSA 注入到 Area0。 |
・LSA 是 OSPF 进行路由计算的关键依据。
・OSPF 的 LSU 报文可以携带多种不同类型的 LSA。
・各种类型的 LSA 拥有相同的报文头部。

重要字段解释
・LS Age(链路状态老化时间):此字段表示 LSA 已经生存的时间,单位是秒。
・Options(可选项):每一个 bit 都对应了 OSPF 所支持的某种特性。
・LS Type(链路状态类型): 指示本 LSA 的类型。
・Link State ID(链路状态 ID): 不同的 LSA,对该字段的定义不同。
・Advertising Router(通告路由器):产生该 LSA 的路由器的 Router ID。
・LS Sequence Number(链路状态序列号):当 LSA 每次有新的实例产生时,序列号就会增加。
・LS Checksum(校验和):用于保证数据的完整性和准确性。
・Length: 是一个包含 LSA 头部在内的 LSA 的总长度值。
・链路状态类型、链路状态 ID、通告路由器 三元组 唯一地标识了一个 LSA。
・链路状态老化时间 、链路状态序列号 、校验和用于判断 LSA 的新旧。
在链路状态广告(LSA)的比较中,通常会按照以下顺序进行:
- LS Sequence Number :链路状态序列号。序列号越大,表示该 LSA 更新得更频繁,因此是较新的信息。
- LS Checksum :链路状态校验和。如果两个 LSA 的序列号相同,会通过校验和来进一步确认哪个是正确的版本。校验和用于检测数据在传输过程中是否发生了错误。
- LS Age :链路状态年龄。如果序列号和校验和都相同,那么会通过年龄来决定。年龄越小,表示该 LSA 越新。
链路状态协议(如 OSPF)使用这些字段来确保网络中的路由信息是最新的和一致的。当路由器接收到一个 LSA 时,它会按照上述顺序进行比较,以决定是否需要更新自己的数据库中的相应信息。
・Router LSA 只能在所属的区域内泛洪。

・V (Virtual Link) :如果产生此 LSA 的路由器是虚连接的端点,则置为 1。
・E (External ): 如果产生此 LSA 的路由器是 ASBR,则置为 1。
・B (Border ):如果产生此 LSA 的路由器是 ABR,则置为 1。
・links :LSA 中的 Link(链路)数量。Router LSA 使用 Link 来承载路由器直连接口的信息。
・Router LSA 使用 Link 来承载路由器直连接口的信息。
・每条 Link 均包含 “链路类型”、“链路 ID”、“链路数据” 以及 “度量值” 这几个关键信息。
・路由器可能会采用一个或者多个 Link 来描述某个接口。

Network LSA 记录了该网段内所有与 DR 建立了邻接关系的 OSPF 路由器,同时携带了该网段的网络掩码。

・Link State ID:DR 的接口 IP 地址。
・Network Mask:MA 网络的子网掩码。
・Attached Router:连接到该 MA 网络的路由器的 Router-ID(与该 DR 建立了邻接关系的邻居的 Router-ID,以及 DR 自己的 Router-ID),如果有多台路由器接入该 MA 网络,则使用多个字段描述。
▫ 路由器将自己作为最短路径树的树根,根据 Router-LSA 和 Network-LSA 中的拓扑信息,依次将 Cost 值最小的路由器添加到 SPF 树中。路由器以 Router ID 或者 DR 标识。
▫ 广播网络中 DR 和其所连接路由器的 Cost 值为 0。
▫ SPF 树中只有单向的最短路径,保证了 OSPF 区域内路由计算不会出现环路。
▫ 将 Router-LSA、Network-LSA 中的路由信息以叶子节点形式附加在对应的 OSPF 路由器上,计算最优路由。
▫ 已经出现的路由信息不会再添加到 SPF 树干上。
via: huawei
1.0.0 路由 OSPF LSA 介绍、1~7 类 LSA 详细介绍
OSPF LSA 链路状态通告 (Link status announcement),作用于 向其它邻接 OSPF 路由器 传递拓扑信息与路由信息。
LSA 如何去描述拓扑信息与路由信息的呢?
其实是基于不同类型 LSA 进行描述,而常见的 LSA 类型有 1 类、2 类、3 类、4 类、5 类、7 类。
OSPF 路由器通过不同类型的 LSA 组建成一下 LSDB 数据库(链路状态数据库)再通过 SPF 算法进行计算出最优的 OSPF 路由加入到路由表中。
路由器 LSA,描述设备的直连拓扑信息、路由信息。
该 LSA 只能在接口所属的区域内泛洪。
解释(接口所属的区域):在 OSPF 中以接口划分区域,故每个接口都可以属于不同的区域。
1 类 LSA 只会在区域内泛洪 / 传递,不会泛洪到其它区域中。

[DR 连接了谁],与 DR 广播网络的路由信息 [DR 广播网络是什么]。

ASBR 汇总 LSA,由 ABR 产生,描述到 ASBR 的路由,服务于 5 类 LSA。
通告给除 ASBR 所在区域的其它区域。
这里需要进行图形的解释:
5 类 LSA 在传递过程中下一跳是不可改变的,故 AR5 想访问 AR1 就需要去往 AR2 的 2.2.2.2。
1、首先 AR2 的 router-id=2.2.2.2 并没有发布到 OSPF 网络中,故 AR5 不会学习到去 2.2.2.2 的路由。
2、由于 AR3 与 AR2 在同一个区域中,通过 1 类 LSA 就可以知道如何去 2.2.2.2。
【唉?不是说 2.2.2.2 是 RID 吗?不是没有发布到 OSPF 吗?AR3 如何知道去 2.2.2.2 的呢?】
【答案就是在 1 类 LSA 的子类型中可以得知去往 RID 的拓扑信息,往后会详细讲解 1 类 LSA 的其它子类型】
- Ls id : 2.2.2.2 【该 LSA 由谁产生?因为 1 类描述自己的直连接口信息,当然是自己】 Adv rtr : 2.2.2.2 【谁通告的?1 类 LSA 由自己产生,当然是自己】 Ls age : 623 Len : 36 Options : ASBR E seq# : 80000007 chksum : 0x2ec3 Link count: 1 * Link ID: 10.1.23.3【基于 TransNet 子类型可知该地址表示广播网络的 DR 地址】 Data : 10.1.23.2【谁通告的该 LSA 信息?基于该地址我们就知道如何去 2.2.2.2 了】 Link Type: TransNet Metric : 1 该 LSA 由 2.2.2.2 通告过来给 AR3 的,其中产生了 1 条拓扑信息,可通过 10.1.23.2 访问到。 故同样的也可以访问到 2.2.2.2。 ``` 3、由于 1 类只能在区域中传递,故 AR5 无法学习到去往 2.2.2.2 的路由信息。这个时候就需要用到ABR(AR3) 发布的 4 类 LSA(去 2.2.2.2 来找 AR3 准没错了)



LSDB 链路状态数据库,是存放各类 LSA 的地方,在路由设备上通过命令:display ospf lsdb 查看数据库信息。
Type表示 LSA 的类型(1 类 Router、2 类 Network、3 类 Sum-Net、4 类 )
Linkstate通常表示谁产生的 LSA
AdvRouter表示谁通告的 LSA
Age表示 LSA 的年龄,也是老化时间。
Len为 LSA 的大小
Sequence为 LSA 序列号
Metric表示去往该 LSA 的开销。
display ospf lsdb OSPF Process 1 with Router ID 3.3.3.3【OSPF 路由设备的 router-id】 Link State Database 【以下就是关于 AR3 的 LSDB 数据库信息】 Area: 0.0.0.0【区域 0 的 LSA】 Type LinkState ID AdvRouter Age Len Sequence Metric Router 4.4.4.4 4.4.4.4 1240 36 80000005 1 Router 3.3.3.3 3.3.3.3 834 36 80000005 1 Network 10.1.34.4 4.4.4.4 1240 32 80000002 0 Sum-Net 10.1.45.0 4.4.4.4 1277 28 80000001 1 Sum-Net 10.1.23.0 3.3.3.3 834 28 80000002 1 Area: 0.0.0.1【区域 1 的 LSA】 Type LinkState ID AdvRouter Age Len Sequence Metric Router 2.2.2.2 2.2.2.2 585 36 80000007 1 Router 3.3.3.3 3.3.3.3 785 36 80000005 1 Network 10.1.23.3 3.3.3.3 785 32 80000001 0 Sum-Net 10.1.45.0 3.3.3.3 834 28 80000001 2 Sum-Net 10.1.34.0 3.3.3.3 834 28 80000001 1 NSSA 0.0.0.0 3.3.3.3 834 36 80000001 1 NSSA 10.1.23.0 2.2.2.2 585 36 80000002 1 NSSA 192.168.1.0 2.2.2.2 585 36 80000002 1 NSSA 10.1.12.0 2.2.2.2 585 36 80000002 1 AS External Database【外部路由的 LSA】 Type LinkState ID AdvRouter Age Len Sequence Metric External 192.168.1.0 3.3.3.3 584 36 80000002 1 External 10.1.12.0 3.3.3.3 584 36 80000002 1 话说网络中的 LSA 如此之多,OSPF 路由器是如何进行判断哪些是新的 LSA,哪些是旧的 LSA 呢?
对于 LSA,有三个重要的字段。通过这三个字段可以判断出 LSA 的新旧:序列号 seq、校验 chksum、年龄 Age。
OSPF 报文中的校验和并不简简单单是用来判断报文有没有出错的,该值的计算不仅仅需要 LSA 报文的信息,还需要上一次计算出的校验和,并且每次计算校验和,都会比之前的校验和更大,因此校验和被认为是 OSPF LSA 消息新旧的第二个标准。
红字部分借鉴 CSDN 博主「永远是少年啊」:在OSPF网络中,如何判断LSA的新旧 ?
https://blog.csdn.net/weixin_40228200/article/details/118497166
通过命令:display ospf lsdb LSA 类型 LSA 条目 ID,如查看 2.2.2.2 的 1 类 LSA 详细信息:display ospf lsdb router 2.2.2.2
display ospf lsdb router 2.2.2.2 OSPF Process 1 with Router ID 3.3.3.3 Area: 0.0.0.0 Link State Database Area: 0.0.0.1【查询的 1 类 LSA 所属区域】 Link State Database Type : Router Ls id : 2.2.2.2 Adv rtr : 2.2.2.2 Ls age : 455 【新旧 LSA 判断依据 3】 Len : 36 Options : ASBR seq# : 80000007 【新旧 LSA 判断依据 1】 chksum : 0x4ca7 【新旧 LSA 判断依据 2】 Link count: 1 * Link ID: 10.1.23.3 Data : 10.1.23.2 Link Type: TransNet Metric : 1 了解 LSA 的产生,什么情况下产生 LSA,产生什么样的 LSA。
查看并了解其 LSA 内部信息所表示的含义。
产生:运行了 OSPF 的设备并配置活动接口使用之后,必然会产生 1 条 1 类 LSA 描述该直连链路信息。
display ospf lsdb router 4.4.4.4 Type : Router 【LSA 的类型】 Ls id : 4.4.4.4 【该 LSA 由谁产生?因为 1 类描述自己的直连接口信息,当然是自己】 Adv rtr : 4.4.4.4 【谁通告的?1 类 LSA 由自己产生,当然是自己】 Ls age : 1521 【该 LSA 活了多久?1521 秒】 Len : 36 【LSA 的大小,36Byte】 Options : ABR E 【ABR 身份,E 表示可接收 OSPF 外部 LSA 的能力】 seq# : 80000007 chksum : 0xab1e Link count: 1 【直连链路信息数量】 * Link ID: 10.1.34.4 Data : 10.1.34.4 Link Type: TransNet【子类型】 Metric : 1 不同的子类型,其 LinkID、Data 所表示的含义也不同。
| Link Type | Link ID | Data |
|---|---|---|
| P2P(P2P 接口网络中产生) | 邻居的 RID | 宣告该 LSA 的路由器接口的 IP 地址 |
| StubNet(广播网络中产生) | 路由器接口的网络 IP 地址 | 该 Stub 网络的网络掩码 |
| TransNet(广播网络中产生) | DR 的接口地址 | 宣告该 LSA 的路由器接口的 IP 地址 |
| Virtual(虚链路路由器产生) | 邻居的 RID | 宣告该 LSA 的路由器接口的 IP 地址 |
P2P、TransNet、virtual 三类都是一类 LSA 用于描述拓扑信息,StubNet 则用于描述路由信息。
疑惑:为什么都是通过 network 宣告网络,有时候产生的是 1 类的 Transnet、有时候产生的是 StubNet 呢?


宣告的网络未进行建立邻居时,宣告的网络子类型为 Stubnet;当宣告的网络建立邻居之后,子类型就会变为 Transnet。
为了避免区域间的环路,OSPF 规定不允许直接在两个非骨干区域之间传递路由信息。

但是非骨干区域与非骨干区域之间还是可以通过 hello 报文建立邻居关系,并学习到对方自己产生的路由。
即:非骨干区域之间不能传递其它区域的路由,但是可以传递自己产生的路由。

非骨干区域之间建立邻居后可传递自己的路由信息给对方,但无法把从其它区域(包括骨干区域)学习到的路由,传递给其它非骨干区域。
为了实现以上区域 2 与区域 5 之间的路由传递,让区域 5 也能学习到其它区域的路由信息,就需要建立 Vlink 虚链路。
Vlink 实现非骨干区域之间能够交互路由信息的逻辑是什么?
因为非骨干区域与非骨干区域无法交互路由信息,只有非骨干区域与骨干区域之间可以。
基于上面的环境,AR4 与 AR5 建立 Vlink(区域 0 与区域 2 的两台边界路由器),实现逻辑上将骨干区域 0 扩展到 AR5 上。
建立完成之后就会和下图一样的:由于 AR5 逻辑上属于骨干区域,故区域 5 的 AR10 就会与 AR5 交互路由了。

首先观察环境,因为区域 5 与区域 0 之间相隔了区域 2,需要做的就是将区域 2 打通,实现区域 5 与区域 0 的通信。
AR4 是区域 0 与区域 2 的边界、AR5 是区域 2 与区域 5 的边界,在这两台上配置 Vlink 是最优的。
配置 Vlink 的时候通常都是指定对端的 router-id。
为什么虚链路不直接指定对端 IP 地址,而是指定对端的 router-id 呢?
从实用性上看,如果单独指定其接口地址,那么这个时候去往目标时并不一定是最优的。
而使用 router-id,OSPF 将会基于 OSPF 路由进行最优路由的转发。
从可靠性上看,如果单独指定其接口地址,如果该接口断开了,那么该虚链路就断开了。
而使用 router-id,只要还有路由能到 router-id 该虚链路就不会断开。

Vlink 虚链路只能在同区域建立连接,无法跨域建立虚链路。
1、2 类 LSA 无法跨区域传递,导致 Vlink 无法跨区域寻邻居。1、通过在 AR2、AR3 上查看 lsdb 可以知道 1 类的 LSA 只会在区域内传递 (因为除了在区域 1 中可以看到 1 类的 2.2.2.2,其它区域都不会有 1 类的 2.2.2.2)
2、1 类 2.2.2.2 中只有一条信息,也就是 transnet 子类型的 LSA,表示的是 AR2 与 AR3 相连的拓扑信息 (10.1.23.0)
3、其它区域想要学习到该 1 类的 LSA,只能通过 3 类的 LSA 学习。(如:AR4 需要学习区域 1 中的 1 类 2.2.2.2 的路由信息,只能通过 AR3 产生的 3 类学习到)
4、为什么 AR4 收到的 3 类是 10.1.23.0 呢?为什么不是 2.2.2.2?因为 3 类是统一汇总通告 1 类 2 类的拓扑信息、路由信息。故只会将 1 类 2.2.2.2 中的拓扑信息(10.1.23.0)通告出去。



产生:在广播类型的接口运行 OSPF 时,由选出的 DR 设备产生。
display ospf lsdb network 10.1.34.4 Type : Network Ls id : 10.1.34.4【DR 的地址】 Adv rtr : 4.4.4.4【该 LSA 由谁宣告的?】 Ls age : 1297 Len : 32 Options : E seq# : 80000001 chksum : 0xf903 Net mask : 255.255.255.0【与 LS id 结合,表示 DR 所在的广播网络】 Priority : Low Attached Router 4.4.4.4【表示与 DR 相连的设备】 Attached Router 3.3.3.3【表示与 DR 相连的设备】 通过上面的报文可以绘制一个逻辑拓扑:
配合 1 类的 LSA,我们就可以知道 4.4.4.4 与 3.3.3.3 互联接口为这个链路中的 DR。以及这个链路连接有哪些设备。

产生:由 ABR 边界路由器产生
dis ospf lsdb summary 10.1.23.0 OSPF Process 1 with Router ID 4.4.4.4 Area: 0.0.0.0 Link State Database Type : Sum-Net Ls id : 10.1.23.0【某条 1 类或 2 类的路由信息】 Adv rtr : 3.3.3.3 【下一跳找谁】 Ls age : 1557 Len : 28 Options : E seq# : 80000002 chksum : 0x8ca0 Net mask : 255.255.255.0【Lsid 的掩码,与 Lsid 结合就知道了路由信息】 Tos 0 metric: 1 Priority : Low 产生:由 ABR 边界路由器产生
4 类 LSA 主要的作用就是通过头部的 Ls id 与 Adv rtr 了解如何去往 ASBR。
display ospf lsdb asbr 3.3.3.3 Type : Sum-Asbr Ls id : 3.3.3.3【ASBR 的 router-id】 Adv rtr : 4.4.4.4【去往 ASBR 找我】 Ls age : 1716 Len : 28 Options : E seq# : 80000002 chksum : 0x62db Tos 0 metric: 1 123456789101112 产生:由 ASBR 区域自治边界路由器产生
5 类与 7 类都是一样的 LSA,只不过 Type 类型不一样。
display ospf lsdb ase 192.168.1.0 OSPF Process 1 with Router ID 4.4.4.4 Link State Database Type : External Ls id : 192.168.1.0【5 类外部路由】 Adv rtr : 3.3.3.3 【去往该路由的下一跳】 Ls age : 95 Len : 36 Options : E seq# : 80000003 chksum : 0xa68d Net mask : 255.255.255.0【路由掩码】 TOS 0 Metric: 1 E type : 2【外部路由开销的计算类型】 Forwarding Address : 10.1.23.2 【转发地址】 Tag : 1 【Tag 标签】 Priority : Low External Type 外部路由类型
OSPF 外部路由默认优先级为 150

可学习到外部的开销为:ASBR 到外部路由部开销+本路由器到 ASBR 之间的路由部开销= 该外部路由的总开销
通过 LSA 可以知道访问 192.168.1.0 就需要经过 3.3.3.3、2.2.2.2 最终到 192.168.1.0,故开销为 3。

5 类 LSA 的外部路由开销为:(ASBR 到外部路由的总开销)

因为 5 类 LSA 默认 Type=2,故 5 类路由开销只会计算 ASBR 到外部路由的开销,中间经过设备多少都不会增加其 5 类开销。
当网络中有多个 ASBR 都引入同一条外部路由时,如果用默认的 Type2 方式引入,则去往该外部路由时必然是负载分担的。
如下图,AR14 学习到的外部路由开销都是 1,故 AR14 会认为该路由负载分担流量。
但很明显,走 AR13 是次优的路径,故在多个 ASBR 引入同一条外部路由的时候需要考虑使用 Type1 类型。


转发地址作用:解决广播型网络中 OSPF 路由次优路径问题
引入外部路由时,连接其他协议的接口运行了 OSPF 协议并且网络类型为广播类型,则 FA 地址为重发布之前路由的下一跳地址,若网络类型为 P2P,则不会产生 FA 地址。
ASBR 与外部路由交互的接口,启用了 OSPF 协议(即接口运行了 OSPF 协议,还运行了其它外部路由协议)
链接外部的接口不能配置 Slient-interface(类似边缘端口,禁止设备向该接口发送 OSPF 报文)
只有广播型网络的接口才会置位,P2P 只有单一的一条路无法置位。
AR5 的 G0/0/0 接口与 AR7 建立 OSPF、并且 G0/0/0 还与 AR6 建立 ISIS
路由引入操作:AR5 将 ISIS 与 OSPF 进行双向的路由引入,即 OSPF 引入 ISIS、ISIS 引入 OSPF 中。
这时 AR7 就能通过 AR5 学习到 AR6 的 ISIS 相关路由,但是访问 AR6 的网络时会优先通过 AR5 进行中转,在该环境中明显是不合适的,因为 AR7 明显可以直接与 AR6 进行通信。
为此,OSPF 的 FA 地址生效了。该环境满足了 FA 地址置位的要求。
AR5 会将引入的 AR6 路由相关 SLA 的 FA 地址设置为去往 AR6 网络的下一跳接口地址(192.168.1.2),这样 AR7 需要访问 AR6 的时候就直接访问 AR6 即可。

用于区分路由,将特定的路由打上 tag 之后,可以通过路由策略选择性的接收和拒绝指定的路由。ISIS 与路由策略相关知识在后面几章介绍到
双点双向引入时、环路就是通过 tag 解决的。
查看所有类型 LSA 的汇总信息,LSDB 数据库
display ospf lsdb 查看指定类型的 LSA
1 类
display ospf lsdb router 2 类
display ospf lsdb network 3 类
display ospf lsdb summary 4 类
display ospf lsdb asbr 5 类
display ospf lsdb ase 7 类
display ospf lsdb nssa 查看指定类型的 LSA 详细信息,如查看 1 类 1.1.1.1 的详细 LSA 信息
display ospf lsdb router 1.1.1.1 查看 ospf 网络中哪些是 ABR、ASBR
dis ospf abr-asbr OSPF Process 1 with Router ID 3.3.3.3 Routing Table to ABR and ASBR RtType Destination Area Cost Nexthop Type Intra-area 4.4.4.4 0.0.0.0 1 10.1.34.4 ABR Intra-area 5.5.5.5 0.0.0.0 2 10.1.34.4 ABR Intra-area 2.2.2.2 0.0.0.1 1 10.1.23.2 ASBR via:
路由 OSPF LSA 介绍、1~7 类 LSA 详细介绍_ospf lsa 类型详解 - CSDN 博客 Hades_Ling 于 2023-01-14 14:43:13 发布
https://blog.csdn.net/qq_45443704/article/details/128684966