OSPF(Open Shortest Path First)是一种链路状态路由协议,属于内部网关协议(IGP),主要用于自治系统(AS)内部的路由选择。它基于Dijkstra 算法(最短路径优先算法)计算最优路由,具有收敛速度快、无路由环路、支持大型网络等特点,广泛应用于企业网和运营商网络中。

链路状态协议
每个路由器会收集网络中所有链路的状态信息(如接口 IP、子网掩码、带宽、开销等),并生成链路状态通告(LSA),通过泛洪(Flooding)机制同步到整个 OSPF 区域内的所有路由器。最终,每个路由器都会基于这些信息构建完整的链路状态数据库(LSDB),并独立计算路由。
无类别路由协议(CIDR 支持)
支持可变长子网掩码(VLSM)和无类别域间路由(CIDR),能更高效地利用 IP 地址空间,适合复杂网络的地址规划。
层次化设计
通过划分区域(Area) 实现层次化架构,减少路由信息传递的开销,提高网络稳定性。核心区域为骨干区域(Area 0),所有非骨干区域必须直接与骨干区域相连。
路由度量(Metric)
以链路开销(Cost) 作为路由度量标准,默认基于链路带宽计算:Cost = 100Mbps / 接口带宽(单位为 Mbps)。例如,100Mbps 链路的 Cost 为 1,10Mbps 链路的 Cost 为 10。管理员也可手动修改 Cost 值。
快速收敛
当网络拓扑变化时,仅泛洪变化的链路状态信息,而非完整路由表,大幅缩短收敛时间。
支持等价路由
当存在多条到达同一目标网络的路径且开销相等时,OSPF 会自动实现负载均衡。
OSPF 根据数据链路层协议的不同,定义了多种网络类型,影响邻居发现和 LSA 泛洪方式:
OSPF 邻居关系的建立需经过以下状态机转换:
LSA 是 OSPF 传递路由信息的核心载体,不同类型的 LSA 用于传递不同范围的路由信息:
| LSA 类型 | 名称 | 作用范围 | 描述 |
|---|---|---|---|
| Type 1 | 路由器 LSA | 单个区域内 | 描述路由器在本区域内的接口和链路状态,由所有路由器生成。 |
| Type 2 | 网络 LSA | 单个区域内 | 由 DR 生成,描述广播型或 NBMA 网络中所有路由器的连接关系。 |
| Type 3 | 网络汇总 LSA | 区域间 | 由 ABR(区域边界路由器)生成,将区域内路由汇总后发布到其他区域。 |
| Type 4 | ASBR 汇总 LSA | 区域间 | 由 ABR 生成,用于定位 ASBR(自治系统边界路由器)的位置。 |
| Type 5 | AS 外部 LSA | 整个 AS(除 Stub/NSSA) | 由 ASBR 生成,描述引入 OSPF 的外部路由(如静态路由、RIP 路由等)。 |
| Type 7 | NSSA 外部 LSA | NSSA 区域内 | 由 NSSA 区域的 ASBR 生成,传递外部路由,进入骨干区域后转为 Type 5 LSA。 |
启用 OSPF 进程
bash
router ospf <进程号> # 进程号仅本地有效,不同设备可不同
配置 Router ID(可选,建议手动指定)
bash
router ospf 100
router-id 192.168.1.1 # 通常使用环回接口IP
在接口上激活 OSPF
bash
interface GigabitEthernet0/0
ip address 10.0.0.1 255.255.255.0
ip ospf 100 area 0 # 关联到OSPF进程100和Area 0
配置被动接口(避免在非 OSPF 网络中发送 Hello 报文)
bash
router ospf 100
passive-interface GigabitEthernet0/1 # 该接口不发送OSPF Hello
引入外部路由(如需引入静态路由或其他协议路由)
bash
router ospf 100
redistribute static subnets # 引入静态路由,携带子网信息
验证配置
bash
show ip ospf neighbor # 查看邻居关系
show ip ospf database # 查看链路状态数据库
show ip route ospf # 查看OSPF路由表
OSPF 的选路基础是链路状态数据库(LSDB),每个路由器通过洪泛 LSA(链路状态通告)同步全网拓扑信息,再基于 SPF 算法计算以自身为根的最短路径树(SPT),最终生成路由表。
当存在多条到达同一目标网络的路径时,OSPF 按以下优先级顺序选择最优路径:
Cost = 参考带宽(Reference Bandwidth) / 接口实际带宽
OSPF 定义了不同类型的路由(按优先级从高到低排序):
** intra-area (域内路由)**:目标网络与本地路由器在同一 OSPF 区域(Area),优先级最高。
** inter-area (域间路由)**:目标网络在其他 OSPF 区域,需通过区域边界路由器(ABR)转发,优先级次之。
** external type 1 (外部类型 1 路由)**:来自 OSPF 域外的路由(如重分发自 RIP、静态路由),总开销 = 外部开销 + 域内 / 域间开销,优先级高于 Type 2。
** external type 2 (外部类型 2 路由)**:来自 OSPF 域外的路由,总开销 = 外部开销(忽略域内 / 域间开销),优先级最低。
例:若一条 Intra-area 路由与一条 Inter-area 路由开销相同,OSPF 会优先选择 Intra-area 路由。
对于外部路由(Type 1/Type 2),若存在多条路径且路由类型和开销均相同,会比较 LSA 中携带的转发地址(FA):
若多条路径的开销、路由类型、转发地址、Router ID均相同,则 OSPF 会将这些路径加入路由表,实现等值负载均衡,流量会按一定策略(如逐包、逐流)分配到多条路径。
OSPF 通过链路状态算法和层次化区域设计,成为大型 IP 网络中最主流的 IGP 之一。掌握其核心概念(如 LSA、区域、邻居关系)和配置要点,对于网络工程师规划、部署和排障至关重要。在实际应用中,需根据网络规模合理划分区域、优化路由汇总,并关注 DR/BDR 选举、LSA 泛洪等关键过程,确保网络高效稳定运行。