一文看懂OSPF:基础概念、工作原理和应用场景
OSPF(Open Shortest Path First,开放式最短路径优先)是 IETF 组织开发的一个基于链路状态的内部网关协议(IGP)。目前针对 IPv4 协议使用的是 OSPF Version 2(RFC2328);针对 IPv6 协议使用的是 OSPF Version 3(RFC2740)。
在 OSPF 出现前,网络上广泛使用 RIP(Routing Information Protocol)作为内部网关协议。由于 RIP 是基于距离矢量算法的路由协议,存在以下缺陷:
- 收敛慢:网络拓扑变化后需较长时间才能完成路由收敛
- 路由环路:距离矢量算法本身容易产生环路问题
- 可扩展性差:受限于跳数限制(最大 15 跳),无法适应大规模网络
OSPF 作为基于链路状态的协议,能够有效解决 RIP 所面临的诸多问题,同时具备以下优势:
| 优势 | 说明 |
|---|---|
| 组播收发报文 | 采用组播形式(224.0.0.5/224.0.0.6)收发报文,减少对其它非 OSPF 路由器的影响 |
| 支持 CIDR | 支持无类型域间选路(Classless Inter-Domain Routing),有效减少路由表规模 |
| 等价负载分担 | 支持对等价路由进行负载分担,提升链路利用率 |
| 报文加密 | 支持报文认证与加密,增强网络安全性 |
凭借以上优势,OSPF 作为优秀的内部网关协议被快速接收并广泛使用。
一、OSPF 基础概念
Router ID
Router ID 是一个 32 比特无符号整数,是一台路由器在自治系统中的唯一标识。如果要运行 OSPF 协议,必须存在 Router ID。
Router ID 的设定方式:
| 方式 | 说明 |
|---|---|
| 手动配置(推荐) | 通过命令行手工指定,有利于协议稳定 |
| 自动选取 | 优先从 Loopback 地址中选择最大的 IP 地址;若无 Loopback 接口,则在接口地址中选取最大的 IP 地址 |
稳定性说明:路由器运行 OSPF 并确定 Router ID 后,即使该 Router ID 对应的接口 Down 或消失,OSPF 仍将保持原 Router ID。只有重新配置 Router ID 并重启 OSPF 进程后,才会重新选取。
链路状态(Link State)
OSPF 是一种链路状态协议。链路可以理解为路由器的接口,链路状态是对接口及接口与相邻路由器关系的描述,包括:接口的 IP 地址、掩码、所连接的网络类型、连接的邻居等信息。所有链路状态的集合形成链路状态数据库(LSDB)。
COST(开销)
OSPF 使用 cost 作为路由度量值。
| 计算规则 | 说明 |
|---|---|
| 接口 cost | OSPF 接口 cost = 100M / 接口带宽(100M 为参考带宽) |
| 路由 cost | 由该路由从起源到达本地的所有入接口 cost 值总和 |
注意事项:
- 默认参考带宽为 100M,高于 100M 的接口会计算出小于 1 的分数值(四舍五入为 1),导致高带宽链路 cost 计算不精确
- 可通过 bandwidth-reference 命令修改参考带宽,一旦修改建议全网 OSPF 路由器统一配置
OSPF 报文类型
OSPF 共使用五种报文类型来完成邻居发现、数据库同步和路由更新:
| 报文类型 | 作用 |
|---|---|
| Hello 报文 | 周期性发送,用于发现和维持 OSPF 邻居关系 |
| DD 报文(Database Description) | 描述本地 LSDB 的摘要信息,用于两台设备进行数据库同步 |
| LSR 报文(Link State Request) | 用于向对方请求所需的 LSA(在成功交换 DD 报文后发送) |
| LSU 报文(Link State Update) | 用于向对方发送其所需要的 LSA |
| LSAck 报文(Link State Acknowledgment) | 用来对收到的 LSA 进行确认 |
LSA 类型
LSA(Link State Advertisement,链路状态通告)是 OSPF 的核心数据结构,不同类型 LSA 承担不同功能:
| LSA 类型 | 名称 | 产生者 | 传播范围 | 作用 |
|---|---|---|---|---|
| Type 1 | Router-LSA | 每台设备 | 所在区域 | 描述设备的链路状态和开销 |
| Type 2 | Network-LSA | DR | 所在区域 | 描述本网段的链路状态 |
| Type 3 | Network-summary-LSA | ABR | 非 Totally STUB/NSSA 区域 | 描述区域内某网段路由 |
| Type 4 | ASBR-summary-LSA | ABR | 除 ASBR 所在区域外 | 描述到 ASBR 的路由 |
| Type 5 | AS-external-LSA | ASBR | 所有区域(除 STUB/NSSA) | 描述到 AS 外部的路由 |
| Type 7 | NSSA LSA | ASBR | NSSA 区域内 | 描述到 AS 外部的路由(仅 NSSA 区域) |
| Type 9/10/11 | Opaque LSA | 各设备 | Type9(网段)/Type10(区域)/Type11(自治域) | 扩展机制,用于 GR、TE 等 |
各区域 LSA 传播支持情况
| 区域类型 | Type1 | Type2 | Type3 | Type4 | Type5 | Type7 |
|---|---|---|---|---|---|---|
| 普通区域(标准/骨干) | ✓ | ✓ | ✓ | ✓ | ✓ | ✗ |
| Stub 区域 | ✓ | ✓ | ✓ | ✗ | ✗ | ✗ |
| Totally Stub 区域 | ✓ | ✓ | ✗ | ✗ | ✗ | ✗ |
| NSSA 区域 | ✓ | ✓ | ✓ | ✗ | ✗ | ✓ |
| Totally NSSA 区域 | ✓ | ✓ | ✗ | ✗ | ✗ | ✓ |
路由器类型
OSPF 协议中常用到的路由器类型如图所示:

| 路由器类型 | 含义 |
|---|---|
| 区域内路由器(Internal Router) | 所有接口都属于同一个 OSPF 区域 |
| 区域边界路由器(ABR) | 同时属于两个以上区域,其中至少一个是骨干区域,用于连接骨干区域和非骨干区域 |
| 骨干路由器(Backbone Router) | 至少有一个接口属于骨干区域(包括所有 ABR 和 Area0 内部设备) |
| 自治系统边界路由器(ASBR) | 与其他 AS 交换路由信息,引入外部路由的设备(可在区域内或 ABR) |
路由类型
OSPF 将路由按优先级从高到低分为以下类型:
| 路由类型 | 优先级 | 说明 |
|---|---|---|
| Intra Area(区域内路由) | 最高 | 同一区域内的路由 |
| Inter Area(区域间路由) | 中 | 不同区域间的路由 |
| 第一类外部路由(Type1 External) | 较低 | 可信度高,开销=本设备到 ASBR 开销+ASBR 到目的开销 |
| 第二类外部路由(Type2 External) | 最低 | 可信度低,开销=ASBR 到目的开销(仅考虑外部开销) |
区域类型
| 区域类型 | 特点 | 缺省路由产生方式 |
|---|---|---|
| 普通区域(标准/骨干) | 传输区域内、区域间和外部路由。骨干区域(Area0)连接所有其他区域 | ASBR 手动配置产生 Type5 缺省路由 |
| STUB 区域 | 不允许 Type5 LSA,只允许区域内和区域间路由 | ABR 自动产生 Type3 缺省路由 |
| Totally STUB 区域 | 不允许 Type5 和 Type3 LSA,只允许区域内路由 | ABR 自动产生 Type3 缺省路由 |
| NSSA 区域 | 允许引入外部路由(Type7),但不接收其他区域 Type5 | ABR 可产生 Type7 缺省路由;或 ASBR 手动产生 Type7 缺省路由 |
| Totally NSSA 区域 | 不允许 Type5 和 Type3 LSA,但允许引入外部路由(Type7) | ABR 自动产生 Type3 缺省路由 |
区域配置注意事项:
- 骨干区域(Area0)不能配置为 STUB 或 NSSA 区域;
- 区域内所有路由器必须统一配置相同的区域类型属性;
- STUB/NSSA 区域内不能存在 ASBR(NSSA 除外);
- 虚连接不能穿过 STUB 或 NSSA 区域。
OSPF 支持的网络类型
| 网络类型 | 默认链路层协议 | 报文发送方式 | DR/BDR 选举 |
|---|---|---|---|
| Broadcast(广播) | Ethernet、FDDI | Hello/LSU/LSAck 组播(224.0.0.5);DD/LSR 单播 | 需要 |
| NBMA(非广播多路访问) | 帧中继、X.25 | 全部单播发送 | 需要 |
| P2MP(点到多点) | 无默认,需手动配置 | Hello 组播(224.0.0.5);其他单播 | 不需要 |
| P2P(点到点) | PPP、HDLC、LAPB | 全部组播(224.0.0.5) | 不需要 |
DR 和 BDR
DR(Designated Router)指定路由器和 BDR(Backup Designated Router)备份指定路由器用于解决广播和 NBMA 网络中邻接关系数量过多的问题。

选举机制:
- 所有路由器只将信息发送给 DR,由 DR 统一广播 LSA;
- DR Other 之间不建立邻接关系,仅维持邻居关系;
- BDR 是 DR 的备份,DR 失效后 BDR 立即接管。
选举规则(优先级数值越大越优先):
- DR 优先级最高的路由器当选 DR,次高者为 BDR;
- 优先级相等时,Router ID 大者胜出;
- 优先级为 0 的路由器不具备选举资格,只能作为 DR Other。
;邻居状态机
OSPF 邻居状态机描述了邻居关系建立的完整过程:
| 状态 | 说明 |
|---|---|
| Down | 初始状态,未收到邻居的 Hello 报文 |
| Attempt | 仅 NBMA 网络,向对端发送 Hello 但未收到回应 |
| Init | 收到 Hello 报文,但报文中的 Neighbors Seen 字段不含本端 Router ID |
| 2-way | 收到包含本端 Router ID 的 Hello 报文,双向通信建立 |
| Exstart | 开始协商主从关系,确定 DD 报文序列号 |
| Exchange | 主从协商完成,开始交换 DD 报文 |
| Loading | DD 报文交换完成,正在请求缺失的 LSA |
| Full | LSR 重传列表为空,邻接关系完全建立 |
二、OSPF 高级特性
报文认证
OSPF 支持报文验证功能,只有通过验证的 OSPF 报文才能接收,否则无法正常建立邻居。
| 验证方式 | 说明 |
|---|---|
| 区域验证方式 | 区域内的所有接口统一使用该验证方式 |
| 接口验证方式 | 仅在特定接口上启用验证(优先级高于区域验证) |
当两种验证方式同时存在时,优先使用接口验证方式。
路由聚合
路由聚合可以减小路由表规模,提高设备性能。OSPF 支持两种聚合方式:
| 聚合类型 | 配置位置 | 作用 |
|---|---|---|
| ABR 聚合 | ABR | 将多个连续网段聚合成一个网段,只发送一条聚合后的 Type3 LSA |
| ASBR 聚合 | ASBR | 对引入的 Type5 LSA(或 NSSA 区域的 Type7 LSA)进行聚合;若设备同时是 ABR 和 ASBR,还对 Type7 转 Type5 的 LSA 进行聚合 |
缺省路由
OSPF 缺省路由(0.0.0.0/0)的优先级规则:Type3 缺省路由优先级高于 Type5 或 Type7 路由。
发布原则:
- 路由器只有具有区域外出口时,才能发布缺省路由 LSA;
- 已发布缺省路由 LSA 的路由器不再学习同类型的缺省路由;
- 外部缺省路由发布不能依赖于本 OSPF 路由域内的路由。
各区域缺省路由发布方式:
| 区域类型 | 发布方式 |
|---|---|
| 普通区域 | ASBR 手动配置产生 Type5 缺省 LSA(需存在其他路由进程产生的缺省路由) |
| STUB 区域 | ABR 自动产生 Type3 缺省 LSA |
| Totally STUB 区域 | ABR 自动产生 Type3 缺省 LSA |
| NSSA 区域 | 方式一:ABR 自动产生 Type7 缺省 LSA;方式二:ASBR 手动产生 Type7 缺省 LSA(需路由表存在缺省路由) |
| Totally NSSA 区域 | ABR 自动产生 Type3 缺省 LSA |
路由过滤
OSPF 支持使用路由策略对路由信息进行过滤(缺省不进行过滤):
| 过滤方式 | 应用位置 | 作用 |
|---|---|---|
| 路由引入过滤 | 引入路由时 | 只引入满足条件的路由 |
| 引入路由发布过滤 | ASBR 向邻居发布时 | 过滤向邻居发布的引入路由 |
| 路由学习过滤 | 本地路由表添加时 | 仅作用于路由表项的添加,但所有路由仍存在于 OSPF 路由表 |
| 区域间 LSA 学习过滤 | ABR 进入区域时 | 直接过滤进入区域的 Summary LSA(与路由学习过滤的区别见下表) |
区域间 LSA 学习与路由学习的差异:
| 对比项 | 区域间 LSA 学习 | 路由学习 |
|---|---|---|
| 过滤对象 | 直接过滤进入区域的 LSA | 不过滤 LSA,只过滤 LSA 计算出的路由 |
| LSA 状态 | 被过滤的 LSA 不进入 LSDB | LSA 仍完整存在于 LSDB |
OSPF 多进程
在同一台路由器上可以运行多个不同的 OSPF 进程,互不影响,彼此独立。不同 OSPF 进程间的路由交互相当于不同路由协议间的路由交互。
约束:路由器的一个接口只能属于某一个 OSPF 进程。
典型应用:VPN 场景中,PE 和 CE 之间运行 OSPF 协议,同时 VPN 骨干网 IGP 也采用 OSPF,两者使用不同进程,互不影响。
RFC1583 兼容特性
| 兼容状态 | 路由计算规则 |
|---|---|
| 使能 RFC1583 兼容(缺省) | 采用 RFC1583 的路由计算规则 |
| 不使能 RFC1583 兼容 | 采用 RFC2328 的路由计算规则(避免路由环路) |
该特性主要影响:选择到达 ASBR/转发地址的路径,以及选择到达相同目的地的外部路径。
三、OSPF 工作原理
OSPF 协议路由的计算过程可分为两大阶段:建立邻接关系和路由计算。
建立邻接关系
在不同网络类型中,邻接关系的建立过程有所不同。
广播网络中的邻接建立

第一阶段:建立邻居关系
- RouterA 激活 OSPF,发送 Hello 报文(组播 224.0.0.5),宣称自己为 DR;
- RouterB 收到后回应 Hello 报文,在 Neighbors Seen 中填入 RouterA 的 Router ID,状态变为 Init;
- RouterA 收到回应后,状态变为 2-way。
注:两个 DR Other 之间在此步骤停留,不继续建立邻接关系。
第二阶段:主/从关系协商与 DD 报文交换
- RouterA 发送 DD 报文,宣称自己是 Master(MS=1),设定序列号 Seq=X;
- RouterB 回应 DD 报文(Router ID 较大者成为 Master),重新设定序列号 Seq=Y;
- RouterA 同意 RouterB 为 Master,使用序列号 Y 发送包含 LSA 摘要的 DD 报文(MS=0);
- RouterB 继续发送 DD 报文,序列号递增为 Y+1,直至最后一个 DD 报文(M=0)。
第三阶段:LSDB 同步
- 双方进入 Loading 状态,通过 LSR 请求缺失的 LSA;
- 接收方用 LSU 回应,发送方用 LSAck 确认;
- LSDB 完全同步后,状态变为 Full,邻接关系建立完成。
NBMA 网络中的邻接建立
NBMA 网络与广播网络的差异仅在于建立邻居关系阶段:
在 NBMA 网络中,所有路由器只与 DR 和 BDR 之间形成邻接关系。
- RouterB 向 RouterA 发送 Hello 报文后,状态为 Attempt(非 Down)
- RouterA 收到后回复 Hello 报文,状态变为 Init
- 后续的主从协商、DD 交换和 LSDB 同步过程与广播网络相同
点到点/点到多点网络中的邻接建立
过程与广播网络基本一致,但有以下区别:
- 无需选举 DR 和 BDR
- DD 报文以组播方式发送
路由计算(SPF 算法)
OSPF 采用 SPF(Shortest Path First)算法计算路由,可实现快速收敛。
计算步骤:
第一步:计算区域内路由
- 根据 Router LSA 和 Network LSA 精确描述区域内部网络拓扑;
- 使用 SPF 算法计算到各路由器的最短路径;
- 根据 Router LSA 描述到达各网段的具体路径;
- 存在多条等价路由时,所有等价路径均保留在 LSDB 中。
第二步:计算区域外路由
- 将相邻区域的路由视为直接连接在 ABR 上;
- 检查 Network Summary LSA 得到这些网段的最短路径;
- ASBR 也被视为连接在 ABR 上,ASBR 最短路径在此阶段计算;
- ABR 执行 SPF 计算时,只需检查骨干区域的 Network Summary LSA。
第三步:计算自治系统外路由
- 将自治系统外部路由视为直接连接在 ASBR 上
- 逐条检查 AS External LSA 得到各外部网络的最短路径
SPF 计算间隔:缺省情况下为 5 秒,可通过调节 SPF 计算间隔抑制频繁网络变化带来的资源占用。
四、OSPF 应用场景
在大型企业网络中,OSPF(开放式最短路径优先)协议通常被部署用于实现各个楼宇或分支机构之间的路由可达。典型的网络架构采用分层设计,将 OSPF 区域划分与网络层次结构相结合:

- 核心层与汇聚层部署在 OSPF 骨干区域(Area 0):核心层路由器作为网络的高速交换 backbone,负责跨区域的数据转发;汇聚层路由器则承担策略实施和区域间路由聚合的功能,二者共同构成 OSPF 的骨干区域,确保整个网络的路由信息高效交换。
- 接入层部署在 OSPF 非骨干区域(Area 1 至 Area N):各楼宇或部门的接入层交换机/路由器被划分到独立的非骨干区域中。这种区域化设计有效隔离了链路状态数据库(LSDB)的规模,减少了路由计算开销,同时通过区域边界路由器(ABR)将各非骨干区域与骨干区域互联,实现全网路由互通。
- 外部网络接入:核心层通过防火墙或边界路由器连接 Internet,实现企业内部网络与外部公网的安全访问。
这种分层分区域的 OSPF 部署方式,既满足了大型企业网络对高可用性和可扩展性的需求,又通过区域划分有效控制了路由协议的计算复杂度和网络收敛时间,是园区网和大型企业内部网络的经典实践方案。
以上关于一文看懂OSPF:基础概念、工作原理和应用场景的文章就介绍到这了,更多相关内容请搜索码云笔记以前的文章或继续浏览下面的相关文章,希望大家以后多多支持码云笔记。
如若内容造成侵权/违法违规/事实不符,请将相关资料发送至 admin@mybj123.com 进行投诉反馈,一经查实,立即处理!
重要:如软件存在付费、会员、充值等,均属软件开发者或所属公司行为,与本站无关,网友需自行判断
码云笔记 » 一文看懂OSPF:基础概念、工作原理和应用场景
微信
支付宝