本文是 OSPF 技术解析系列的第三篇,将深入剖析 OSPF 运行中至关重要的三大表项和五种报文。如果你对 OSPF 的基础概念尚不熟悉,建议先回顾本系列的前序文章。
在深入理解 OSPF 动态路由协议的过程中,掌握其内部维护的关键数据结构是至关重要的一步。OSPF 运行的核心围绕着三张表:邻居表、LSDB(链路状态数据库)和 OSPF路由表。理解它们的作用与联系,是掌握 OSPF 工作原理的基础。
邻居表
我们知道,OSPF 路由器在交换链路状态信息(LSA)之前,必须首先与邻居建立可靠的关系。这一关系是通过周期性交互 Hello报文 来建立和维护的。为了存储和管理这些邻居关系,OSPF 引入了邻居表。
邻居表的主要作用就是记录所有启用了 OSPF 的接口所发现的邻居路由器及其状态信息。在华为设备上,我们可以使用 display ospf peer 命令来查看邻居表的详细信息。

从上图的命令输出中,我们可以清晰地看到邻居的 Router ID、IP地址、状态(State)、优先级(Priority)、DR/BDR角色以及失效计时器等关键信息。当状态显示为“Full”时,表示邻接关系已完全建立,可以同步链路状态数据库。
LSDB(链路状态数据库)
LSDB,全称 Link State Database,即链路状态数据库。它是 OSPF 的“地图存储器”,用于存放本地路由器产生的,以及从所有建立了完全邻接关系的邻居那里收到的 LSA(链路状态通告)。
LSDB 是区域内所有路由器对网络拓扑认知的集合。每台路由器基于相同的 LSDB,独立运行 SPF(最短路径优先)算法,从而计算出一致的、无环的路由表。在华为设备上,可通过 display ospf lsdb 命令查看其内容。

命令输出中包含了多个关键字段:
- Type:指 LSA 的类型,不同类型的 LSA 描述了不同范围的拓扑信息。
- LinkStateID:也可称为 LSID,其具体含义因 LSA 类型而异。
- AdvRouter:通告路由器(Advertising Router),即产生这条 LSA 的源路由器的 Router ID。
后续我们会有专门的文章详解 OSPF 中常用的 6 类 LSA 的格式与作用。
OSPF 路由表
这里需要区分一个概念:OSPF 路由表 并非我们通常用 display ip routing-table 命令看到的全局 IP 路由表。
OSPF 路由表是 OSPF 协议专属的,它存放了通过 SPF 算法计算出的、通往区域内所有网络的最短路径。华为设备上使用 display ospf routing 命令查看此表。之后,协议会将这些优选的路由条目安装到全局 IP 路由表中。

上图中的几个字段解释如下:
- Destination:目的网络地址。
- Cost:到达该目的网络的 OSPF 路径开销值,开销越小路径越优。
- NextHop:到达该目的网络的下一跳 IP 地址。
- AdvRouter:目的网络所属的始发路由器的 Router ID。
- Area:该路由条目所属的 OSPF 区域。
OSPF 的报文格式
OSPF 协议通过交互特定的报文来完成邻居发现、数据库同步和拓扑更新等一系列操作。OSPF 共定义了五种类型的报文:
Hello报文
DD报文 (Database Description)
LSR报文 (Link State Request)
LSU报文 (Link State Update)
LSACK报文 (Link State Acknowledgment)

如上图所示,所有 OSPF 报文都采用 IP 协议进行封装,其协议号为 89。它们共享一个相同的 OSPF 报文头部,通过头部中的 Type 字段来区分具体是哪种报文,从而执行不同的功能。这种设计使得报文格式既统一又高效。
Hello 报文
功能:发现并维护邻居关系。
说明:当接口启用 OSPF 后,路由器会周期性地从该接口发送 Hello 报文。收到对端发来的、参数匹配的 Hello 报文后,双方即建立起邻居关系。Hello 报文还用于在邻居之间进行保活,确保连接的有效性。
DD 报文(数据库描述报文)
功能:在建立邻接关系的过程中,同步双方链路状态数据库(LSDB)的摘要目录。
说明:邻居关系建立后,需要进一步建立邻接关系以同步 LSDB。DD 报文就像一本书的目录,交互双方通过比较“目录”,来了解对方有哪些 LSA 是自己缺失的或更新的。
LSR 报文(链路状态请求报文)
功能:请求特定的、本地缺失或过时的链路状态信息。
说明:在交换 DD 报文后,路由器会明确知道自己需要哪些 LSA 来同步数据库。此时,它会向邻居发送 LSR 报文,明确指出需要请求的 LSA 列表。
LSU 报文(链路状态更新报文)
功能:用于发送详细的链路状态信息,以响应 LSR 请求,或在网络拓扑发生变化时主动发起更新。
说明:当路由器收到 LSR 请求时,它会用 LSU 报文来“回答”,其中包含了对方所请求的完整 LSA 内容。此外,当本地拓扑发生变化(如接口状态改变)时,路由器也会立即生成包含更新信息的 LSU 报文,洪泛到区域内,确保所有路由器 LSDB 的同步。
LSACK 报文(链路状态确认报文)
功能:确认已收到 LSU 报文,提供可靠的洪泛机制。
说明:为确保 LSU 报文被可靠地接收,OSPF 要求接收方在收到 LSU 后必须发送 LSACK 报文进行确认。这类似于 TCP/IP 协议中的确认机制,是保证 OSPF 链路状态信息可靠同步的关键一环。
总结
OSPF 协议的稳定运行,依赖于 邻居表、LSDB 和 OSPF路由表 这三张表的有序协作,而五种报文则是实现这些表项建立、同步和更新的通信语言。从 Hello 报文的邻居发现,到 DD、LSR、LSU 报文的数据库同步,再到 LSACK 的可靠确认,整个过程构成了 OSPF 链路状态路由协议的精妙逻辑。
理解这些基础组件,是后续分析复杂网络故障、进行 OSPF 高级特性配置的基石。希望本文能帮助你更清晰地把握 OSPF 的核心机制。如果你想深入了解网络工程师日常工作中的其他协议或故障案例,欢迎在云栈社区继续交流探讨。