OSPF 协议详解
3254 字
16 分钟
OSPF 协议详解
OSPF 协议详解
一、协议概述
1.1 OSPF 定义
OSPF(Open Shortest Path First,开放最短路径优先)是基于链路状态的内部网关协议(IGP),使用 Dijkstra 的最短路径优先(SPF)算法计算最优路由。
- 协议号:89(IP 头部中的 Protocol 字段)
- 组播地址:
224.0.0.5:AllSPFRouters,所有 OSPF 路由器监听224.0.0.6:AllDRouters,DR/BDR 监听
- 封装方式:直接封装在 IP 报文中,不使用 TCP/UDP
1.2 OSPF 三大特点
| 特点 | 说明 |
|---|---|
| 无环路 | 基于 SPF 算法计算无环拓扑 |
| 收敛快 | 链路状态变化触发立即更新,无需整张表周期性交换 |
| 支持区域划分 | 通过分层区域设计减少 LSA 泛洪和路由表规模 |
1.3 OSPF 路由器角色
| 角色 | 说明 |
|---|---|
| IR(Internal Router) | 所有接口都属于同一个区域 |
| BR(Backbone Router) | 至少有一个接口属于 Area 0 |
| ABR(Area Border Router) | 连接多个区域,至少一个接口在 Area 0 |
| ASBR(AS Boundary Router) | 引入外部路由的路由器 |
1.4 RID 选举规则
RID(Router ID)是 OSPF 路由器在 AS 中的唯一标识,选举优先级从高到低:
- 手动配置:
router-id命令指定的 IP 地址 - Loopback 接口最大 IP:选择最大的 Loopback 接口 IP
- 物理接口最大 IP:选择最大的物理接口 IP
选举顺序:手动配置 > Loopback 最大 IP > 物理接口最大 IP
二、OSPF 区域划分 🏷️高频考点
2.1 区域划分目的
- 减少 LSA 泛洪范围
- 降低路由表规模
- LSDB 只需同步区域内信息
- 简化管理和故障排查
2.2 区域类型
| 区域类型 | 说明 |
|---|---|
| 骨干区域(Area 0) | 核心区域,所有非骨干区域必须与之相连 |
| 非骨干区域 | Area 1、Area 2 等,承载本区域内路由 |
| 特殊区域 | Stub、Totally Stub、NSSA、Totally NSSA |
2.3 区域间路由规则
- 所有非骨干区域必须与骨干区域直接相连(物理或逻辑相连)
- ABR 负责在区域间传递路由信息(Type 3 LSA)
- 跨区域路由必须经过 Area 0 转发
2.4 区域划分拓扑图
ABR 同时连接 Area 0 和非骨干区域,负责区域间路由转发。
三、OSPF 报文类型 🏷️高频考点
3.1 五种报文详解
| 报文类型 | 类型号 | 名称 | 作用 |
|---|---|---|---|
| Hello | 1 | 发现邻居、维护邻接关系 | 周期性发送,用于邻居发现和 DR/BDR 选举 |
| DD | 2 | Database Description | 描述本地 LSDB 摘要 |
| LSR | 3 | Link State Request | 请求缺失的 LSA |
| LSU | 4 | Link State Update | 发送具体的 LSA |
| LSAck | 5 | Link State Acknowledgment | 确认收到的 LSA |
3.2 报文发送时机与方式
| 报文 | 发送方式 | 发送时机 |
|---|---|---|
| Hello | 组播 224.0.0.5(P2P/广播)/ 单播(NBMA) | 周期性发送(P2P 10s,广播 10s,NBMA 30s) |
| DD | 组播 224.0.0.5 | 进入 ExStart 后发送,主从协商后发送摘要 |
| LSR | 组播/单播 | Exchange 阶段发现缺失后请求 |
| LSU | 组播 224.0.0.6(DR/BDR)/ 单播 | 收到 LSR 后发送对应 LSA |
| LSAck | 组播 224.0.0.5 | 收到 LSU 后确认 |
3.3 五种报文对比表
| 对比项 | Hello | DD | LSR | LSU | LSAck |
|---|---|---|---|---|---|
| 类型号 | 1 | 2 | 3 | 4 | 5 |
| 携带 LSA | 否 | 摘要 | LSA 头部 | 完整 LSA | 否 |
| 可靠传输 | 否 | 是 | 是 | 是 | 否 |
| 触发方式 | 周期 | 状态触发 | 状态触发 | 状态触发 | 收到 LSU 后 |
四、OSPF 邻居状态机 🏷️高频考点
4.1 邻居状态详解
| 状态 | 触发条件 | 动作 |
|---|---|---|
| Down | 初始状态 | 未收到任何 Hello |
| Init | 收到 Hello 但未包含自己 RID | 对方看到了我,但我还未确认对方 |
| 2-Way | 收到的 Hello 中包含自己 RID | 邻居关系建立,进行 DR/BDR 选举 |
| ExStart | 邻接关系开始 | 主从关系选举(比较 RID,大者为主) |
| Exchange | 主从确定后 | 交换 DD 报文,描述 LSDB 摘要 |
| Loading | 发现缺失 LSA | 发送 LSR 请求,接收 LSU 更新 |
| Full | LSDB 完全同步 | 邻接关系完全建立 |
注意:2-Way 和 Full 是稳定状态,其他为过渡状态。广播网中 DR Other 之间只到 2-Way。
4.2 关键状态说明
- 2-Way 状态:DR/BDR 选举在此状态后进行。广播网中 DR Other 之间保持 2-Way,不进入后续状态。
- ExStart 状态:主从关系选举,比较 RID,RID 大者为主(Master)。Master 控制序号。
- Exchange 状态:主从双方交换 DD 报文,携带 LSDB 摘要。
- Loading 状态:发现本地缺失的 LSA 后,发送 LSR 请求。
4.3 状态机流程图
五、DR 与 BDR 选举 🏷️高频考点
5.1 选举场景
| 网络类型 | 是否选举 DR/BDR |
|---|---|
| 广播(Broadcast) | 是 |
| NBMA | 是 |
| P2P(点到点) | 否 |
| P2MP(点到多点) | 否 |
5.2 选举规则
- 先比优先级:默认 1,范围 0-255,大者优先
- 再比 RID:优先级相同时,RID 大者优先
- 优先级为 0:表示不参与 DR/BDR 选举(成为 DR Other)
5.3 选举过程
- 接口 OSPF 启用后进入 Waiting 状态(等待 40s = Dead Interval)
- Waiting 结束后,检查收到的 Hello 中的 DR/BDR 字段
- 优先级最高的为 DR,次高为 BDR
- 若优先级相同,比较 RID
5.4 DR/BDR 不可抢占性
- DR/BDR 选举完成后,即使有更高优先级的路由器加入,也不会重新选举
- DR 故障后,BDR 升级为 DR,重新选举 BDR
- DR Other 只与 DR/BDR 建立 Full 邻接关系,与其他 DR Other 保持 2-Way
OSPF DR 选举与 IS-IS DIS 选举的核心区别:OSPF DR 不可抢占,IS-IS DIS 可抢占。
六、LSA 类型详解 🏷️高频考点(最重要章节)
6.1 LSA 类型总表
| LSA 类型 | 名称 | 产生者 | 传播范围 | 内容 | Link ID |
|---|---|---|---|---|---|
| Type 1 | Router LSA | 每台路由器 | 区域内 | 路由器接口链路状态 | 产生者 RID |
| Type 2 | Network LSA | DR | 区域内 | 伪节点连接的路由器 | DR 接口 IP |
| Type 3 | Network Summary LSA | ABR | 区域间 | 区域间路由 | 目标网段地址 |
| Type 4 | ASBR Summary LSA | ABR | 区域间(除 ASBR 所在区域) | 指向 ASBR 的路由 | ASBR 的 RID |
| Type 5 | AS External LSA | ASBR | 全 AS | 外部路由 | 外部网段地址 |
| Type 6 | Group Membership LSA | - | - | 组播 OSPF 使用 | 不常用 |
| Type 7 | NSSA External LSA | NSSA 区域内 ASBR | NSSA 区域内 | NSSA 外部路由 | 外部网段地址 |
6.2 各 LSA 详细说明
Type 1 Router LSA
- 产生者:区域内每台路由器
- 传播范围:仅在产生区域内泛洪
- 内容:路由器所有接口的链路状态(P2P、Transit、Stub)
- Link ID:产生该 LSA 的路由器 RID
Type 2 Network LSA
- 产生者:广播/NBMA 网络中的 DR
- 传播范围:仅在产生区域内泛洪
- 内容:DR 所在网段上所有路由器的 RID
- Link ID:DR 接口 IP 地址
Type 3 Network Summary LSA
- 产生者:ABR
- 传播范围:区域间泛洪
- 内容:本区域内路由的汇总信息
- Link ID:目标网段地址
Type 4 ASBR Summary LSA
- 产生者:ABR(ASBR 所在区域的 ABR)
- 传播范围:除 ASBR 所在区域外的所有区域
- 内容:指向 ASBR 的路由
- Link ID:ASBR 的 RID
Type 5 AS External LSA
- 产生者:ASBR
- 传播范围:整个 AS(除特殊区域外)
- 内容:从其他协议引入的外部路由
- Link ID:外部网段地址
- 外部路由类型:
- Type 1:开销 = 外部开销 + 内部开销
- Type 2:开销 = 仅外部开销(默认)
Type 7 NSSA External LSA
- 产生者:NSSA 区域内的 ASBR
- 传播范围:仅在 NSSA 区域内泛洪
- 内容:NSSA 区域引入的外部路由
- Link ID:外部网段地址
- 转换机制:ABR 将 Type 7 转换为 Type 5 后泛洪到其他区域
七、OSPF 特殊区域 🏷️高频考点
7.1 四种特殊区域对比
| 特殊区域 | 不接受的 LSA | ABR 下发默认路由 | 允许引入外部路由 | 说明 |
|---|---|---|---|---|
| Stub | Type 4、Type 5 | 是(Type 3) | 否 | 区域内不能有 ASBR |
| Totally Stub | Type 3、Type 4、Type 5 | 是(Type 3) | 否 | 只保留区域内路由 + 默认路由 |
| NSSA | Type 4、Type 5 | 否(需手动配置) | 是(Type 7) | 允许引入外部路由,不下发默认 |
| Totally NSSA | Type 3、Type 4、Type 5 | 是(Type 3) | 是(Type 7) | 最特殊:只保留区域内 + 默认 + 外部 |
7.2 Stub 区域
- 不接受 Type 4 和 Type 5 LSA
- ABR 自动下发默认路由(Type 3 LSA,cost 为本区域到 ABR 的开销)
- 区域内所有路由器必须配置为 Stub
- 不能存在 ASBR
- 不能是 Area 0
7.3 Totally Stub 区域
- 在 Stub 基础上,进一步不接受 Type 3 LSA
- 只保留区域内路由和 ABR 下发的默认路由
- 只需在 ABR 上配置
stub no-summary,其他路由器配置stub
7.4 NSSA 区域
- 不接受 Type 4 和 Type 5 LSA,但允许引入外部路由(Type 7 LSA)
- ABR 默认不下发默认路由,需手动配置
- Type 7 LSA 由 ABR 转换为 Type 5 后泛洪到其他区域
- 适合需要引入外部路由但不接受外部路由的区域
7.5 Totally NSSA 区域
- 在 NSSA 基础上,进一步不接受 Type 3 LSA
- ABR 自动下发默认路由
- 只需在 ABR 上配置
nssa no-summary
八、OSPF 路由汇总
8.1 ABR 汇总(区域间汇总)
- 配置位置:ABR 上
- 汇总对象:Type 3 LSA
- 作用:将多个区域间路由汇总为一条
# 在 Area 1 的 ABR 上汇总 10.1.1.0/24 和 10.1.2.0/24 为 10.1.0.0/16[Router-ospf-1] area 1[Router-ospf-1-area-0.0.0.1] abr-summary 10.1.0.0 255.255.0.08.2 ASBR 汇总(外部路由汇总)
- 配置位置:ASBR 上
- 汇总对象:Type 5/Type 7 LSA
- 作用:将多个外部路由汇总为一条
# 在 ASBR 上汇总外部路由[Router-ospf-1] asbr-summary 172.16.0.0 255.255.0.08.3 汇总配置命令示例
# 进入 OSPF 进程[Router] ospf 1 router-id 1.1.1.1
# ABR 区域间汇总[Router-ospf-1] area 1[Router-ospf-1-area-0.0.0.1] abr-summary 10.1.0.0 255.255.0.0 cost 10[Router-ospf-1-area-0.0.0.1] quit
# ASBR 外部路由汇总[Router-ospf-1] asbr-summary 172.16.0.0 255.255.0.0 tag 100九、OSPF 开销与参考带宽 🏷️高频考点
9.1 开销计算公式
- 默认参考带宽:100 Mbit/s
- 计算示例:
- 100M 接口:100M / 100M = 1
- 10M 接口:100M / 10M = 10
- 1G 接口:100M / 1000M = 0.1 → 向下取整 → 1(注意:实际上取最小值 1)
9.2 参考带宽修改
修改参考带宽需在所有 OSPF 路由器上统一修改,否则可能导致次优路径。
[Router-ospf-1] bandwidth-reference 10009.3 OSPF Cost 配置命令
# 方法一:接口下直接配置 cost 值[Router-GigabitEthernet0/0/0] ospf cost 50
# 方法二:修改参考带宽[Router-ospf-1] bandwidth-reference 1000十、华为设备配置命令示例
10.1 基础 OSPF 配置
# 创建 OSPF 进程并指定 RID[Router] ospf 1 router-id 1.1.1.1
# 配置区域并宣告接口[Router-ospf-1] area 0[Router-ospf-1-area-0.0.0.0] network 10.0.0.0 0.0.0.255[Router-ospf-1-area-0.0.0.0] quit
[Router-ospf-1] area 1[Router-ospf-1-area-0.0.0.1] network 192.168.1.0 0.0.0.255[Router-ospf-1-area-0.0.0.1] quit10.2 特殊区域配置
# Stub 区域配置(所有路由器)[Router-ospf-1] area 1[Router-ospf-1-area-0.0.0.1] stub[Router-ospf-1-area-0.0.0.1] quit
# Totally Stub 区域配置(ABR 上加 no-summary,其他路由器只需 stub)[Router-ospf-1] area 1[Router-ospf-1-area-0.0.0.1] stub no-summary[Router-ospf-1-area-0.0.0.1] quit
# NSSA 区域配置[Router-ospf-1] area 1[Router-ospf-1-area-0.0.0.1] nssa[Router-ospf-1-area-0.0.0.1] quit
# Totally NSSA 区域配置(ABR 上加 no-summary)[Router-ospf-1] area 1[Router-ospf-1-area-0.0.0.1] nssa no-summary[Router-ospf-1-area-0.0.0.1] quit10.3 路由汇总配置
# ABR 区域间汇总[Router-ospf-1] area 1[Router-ospf-1-area-0.0.0.1] abr-summary 10.1.0.0 255.255.0.0[Router-ospf-1-area-0.0.0.1] quit
# ASBR 外部路由汇总[Router-ospf-1] asbr-summary 172.16.0.0 255.255.0.010.4 引入外部路由
# 引入直连路由[Router-ospf-1] import-route direct
# 引入静态路由[Router-ospf-1] import-route static
# 引入其他协议路由(如 BGP),并设置开销类型和值[Router-ospf-1] import-route bgp type 1 cost 50
# 引入 OSPF 进程间路由[Router-ospf-1] import-route ospf 210.5 接口开销配置
# 接口下配置 OSPF Cost[Router-GigabitEthernet0/0/0] ospf cost 5010.6 参考带宽修改
[Router-ospf-1] bandwidth-reference 100010.7 静默接口配置
# 配置 Silent Interface(只接收不发 Hello,不建邻居)[Router-ospf-1] silent-interface GigabitEthernet0/0/0十一、OSPF 常见故障排查
11.1 邻居关系无法建立
| 排查项 | 说明 | 诊断方法 |
|---|---|---|
| 区域 ID | 两端必须一致 | display ospf interface |
| 认证 | 两端认证模式和密钥必须一致 | display ospf interface |
| 掩码 | 两端必须一致(P2P 除外) | display ip interface |
| Hello/Dead 间隔 | 两端必须一致 | display ospf interface |
| 网络类型 | 两端必须一致 | display ospf interface |
| RID 冲突 | 全网 RID 必须唯一 | display ospf brief |
| 被动接口 | 检查是否配置了 silent-interface | display current-configuration |
11.2 邻居卡在 ExStart/Exchange 状态
| 排查项 | 说明 |
|---|---|
| MTU 不一致 | 两端接口 MTU 必须一致 |
| RID 冲突 | 两台路由器 RID 相同,无法选出主从 |
11.3 路由学习不全
| 排查项 | 说明 |
|---|---|
| 特殊区域配置 | Stub/NSSA 区域不接受特定 LSA |
| ABR 连接 | ABR 必须连接 Area 0 |
| 过滤策略 | 检查是否配置了路由过滤 |
11.4 常用诊断命令
# 查看 OSPF 邻居关系display ospf peer
# 查看 OSPF 链路状态数据库display ospf lsdb
# 查看 OSPF 路由表display ospf routing
# 查看 OSPF 接口信息display ospf interface
# 查看 OSPF 错误信息display ospf error
# 查看 OSPF 进程概要display ospf brief
# 查看 OSPF 报文统计display ospf packet总结:OSPF 是 HCIP-Datacom 考试的核心内容之一,重点掌握 LSA 类型、邻居状态机、DR/BDR 选举、特殊区域及开销计算。
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!
相关文章智能推荐
1
BGP 协议详解
网络2026-08-05
2
IS-IS 协议详解
网络2026-08-05
3
IPv6 技术详解
网络2026-08-05
4
VLAN 技术详解
网络2026-08-05
5
ACL技术详解
网络2026-08-05
随机文章随机推荐



