在 HCIP-Datacom 的学习过程中,OSPF 是动态路由协议部分的核心内容。本文将通过介绍 OSPF 的工作过程、报文类型和状态机等知识,来帮助你快速建立OSPF基础框架。
一、从静态路由到动态路由
静态路由由管理员手工配置,通过给自己添加路由的方式生成。它的优点是简单、可控,但缺点也很明显:容易出错,并且当网络拓扑发生变化时,无法自动适应。动态路由则不同。路由器可以自动获取对方的路由信息,不需要手动逐条添加,并且能够根据网络拓扑变化自动调整。对于规模较大、变化频繁的网络,动态路由协议显然更合适。
按照工作原理,动态路由协议大致可以分为两类:
1. 距离矢量路由协议(RIP、BGP)
这类协议不关心路径如何,只关心能否到达目的地。发送报文时,主要交互路由信息,不交互拓扑信息。路由信息通常包括目的网段和掩码。
2. 链路状态路由协议(ospf、isis)
这类协议既关心路径,也关心目的地,会综合选择最优路径。发送报文时,不仅交互路由信息,还交互拓扑信息。
二、OSPF 的三大工作过程
OSPF 的工作过程可以概括为三个阶段:
1. 建立邻居关系
路由器运行 OSPF 后,会通过 Hello 报文发现邻居。双方能够收到对方的 Hello 报文,并且参数匹配,就可以建立邻居关系。
2. 建立邻接关系,同步 LSDB
邻居关系建立后,并不一定立刻进入完全同步状态。OSPF 需要进一步建立邻接关系,并同步 LSDB。
LSDB 是链路状态数据库。每台运行 OSPF 的路由器都有一个 LSDB,里面存放自身的 LSA 信息。
LSA 是链路状态通告信息,携带自身的路由信息和拓扑信息。
同步 LSDB 时,邻居双方相互发送自身 LSDB 中的 LSA,对方收到后放入自己的 LSDB,直到双方 LSDB 完全一致。
3. 根据 LSDB 进行 SPF 计算
当 LSDB 同步完成后,路由器会根据 LSDB 中的 LSA 进行 SPF 计算,得出全网拓扑路径,并计算出去往每个网段的最优路径,最终加入路由表。
也就是说,OSPF 不是直接“听别人说怎么走”,而是让每台路由器掌握一张全网地图,然后自己用 SPF 算法算出最短路径树。
三、OSPF 报文封装与头部字段
OSPF 工作在网络层,协议号为 89。它使用组播方式发送报文,常用组播地址为:
- 224.0.0.5:所有 OSPF 路由器
- 224.0.0.6:DR 和 BDR
OSPF 头部中的关键字段包括:
1. Version 版本
OSPFv2 工作在 IPv4 网络,OSPFv3 工作在 IPv6 网络。
2. Router ID
唯一标识一台 OSPF 路由器,不允许重复,格式为 x.x.x.x,大小与 IP 地址一致。
Router ID 可以手工配置,例如:
[AR1] ospf 1 router-id 1.1.1.1如果修改了 Router ID,需要重启 OSPF 进程才能生效:
<AR1> reset ospf process查看 OSPF 简要信息可以使用:
display ospf brief自动选举 Router ID 时,通常优先从 Loopback 接口中选择 IP 地址最大的一个;如果没有 Loopback 接口,则从物理接口中选择 IP 地址最大的一个。工程中建议手工指定 Router ID,避免因接口变化导致 Router ID 改变。
3. Area ID
标识发送该报文的接口属于哪个区域。区域 0 是骨干区域,非 0 区域是非骨干区域。
4. 认证信息
没有设置认证时为空。
四、OSPF 五类报文
OSPF 通过不同类型的报文完成邻居发现、数据库同步和确认。常见报文如下:
| 报文类型 | 作用 |
| Hello | 发现、建立和维护邻居关系 |
| DD | 描述自身 LSDB 中的 LSA 摘要信息 |
| LSR | 向对端请求自身缺少的 LSA |
| LSU | 携带请求的 LSA 详细信息 |
| LSACK | 确认收到对应的 LSA 信息 |
- 发送者掩码:发送该 Hello 报文接口 IP 地址的掩码
- Interval:发送 Hello 报文的间隔,默认 10 秒,超时时间 40 秒
- DR 优先级、DR 和 BDR 字段
- 邻居列表:记录当前邻居关系,填充邻居的 Router ID
五、OSPF 状态机
OSPF 邻居建立和邻接同步的过程,可以通过状态机来理解。主要状态包括:| 状态 | 含义 |
| Down | 刚运行OSPF时的状态,向对端发送OSPF报文 |
| Init | 收到对端Hello报文,但里面没有自己的RouterID |
| 2-Way | 收到对端Hello报文,里面有自己Router ID;双方都处于2-Way时,邻居关系建立完成 |
| Exstart | 选举主/从路由器,发送第一份DD报文,保证同步有序性 |
| Exchange | 发送第二份及更多DD报文,描述LSDB |
| Loading | 发送LSR、LSU、LSACK,进行LSA同步 |
| Full | 双方LSDB同步完成,邻接关系建立完成 |
在 2-Way 状态之后,会进行 DR 和 BDR 的选举。Exstart 阶段会选举主/从路由器,Router ID 大的一方成为主路由器,从而保证数据库同步过程有序进行。
当双方进入 Full 状态时,表示邻接关系建立完成,LSDB 已经同步。此时路由器就可以基于 LSDB 进行 SPF 计算,生成路由表。
六、HCIP-Datacom 备考要点
对于 HCIP-Datacom 学习者来说,OSPF 部分需要重点掌握以下内容:- 静态路由与动态路由的区别;
- 距离矢量与链路状态协议的核心差异;
- OSPF 三大工作过程:邻居关系、邻接关系与 LSDB 同步、SPF 计算;
- OSPF 五类报文:Hello、DD、LSR、LSU、LSACK;
- OSPF 状态机:Down、Init、2-Way、Exstart、Exchange、Loading、Full;
- Router ID 的选举与手工配置;
- Area ID、骨干区域与非骨干区域;
- DR/BDR 选举过程;
- LSDB、LSA、SPF 之间的关系。
七、总结
OSPF 是链路状态路由协议的典型代表。它通过 Hello 报文建立邻居关系,通过 DD、LSR、LSU、LSACK 完成 LSDB 同步,再通过 SPF 计算生成最优路由。理解 OSPF,不仅要记住报文类型和状态机,更要理解它“先同步拓扑,再独立计算”的核心思想。对于 HCIP-Datacom 备考者而言,OSPF 是必须打牢的基础。掌握本文梳理的工作过程、报文交互和状态机,再结合实验观察 display ospf brief、邻居状态和 LSDB,就能逐步把 OSPF 从“概念”变成“可排障、可设计、可优化”的真实能力。
HarmonyOS开发|ArkTS UI颜色API通用规则
