关键词:OSPF、路由选路、优先级、区域内路由、区域间路由、外部路由、Metric
第64篇:OSPF 路由选路:区域内 > 区域间 > 外部
一、引言
当 OSPF 路由器通过不同途径学习到到达同一目的网络的多条路由时,必须有一套明确的选路规则来确定最优路径。OSPF 的路由选路遵循严格的优先级顺序:区域内路由优先于区域间路由,区域间路由优先于外部路由。
这种优先级设计体现了 OSPF 分层架构的核心思想:尽可能在最小的拓扑范围内做出最优的转发决策。理解 OSPF 的选路规则,不仅有助于理解 OSPF 的路由行为,也是进行路径调优和故障排查的基础。
二、核心概念
2.1 OSPF 路由选路优先级
OSPF 路由类型的优先级从高到低:
| 优先级 | 路由类型 | 标记符号 | LSA 来源 |
|---|---|---|---|
| 1 | 区域内路由(Intra-Area) | O | Type 1 + Type 2 |
| 2 | 区域间路由(Inter-Area) | O_* | Type 3 |
| 3 | 第1类外部路由(External Type 1) | O_E1 | Type 5 (E1) / Type 7 (E1) |
| 4 | 第2类外部路由(External Type 2) | O_E2 | Type 5 (E2) / Type 7 (E2) |

2.2 同类型路由的选路规则
当多条路由属于同一类型时,选路规则细化为:
区域内路由(Intra-Area): 1. 比较 SPF 计算得出的最短路径 Cost,Cost 小的优先 2. Cost 相同时,多条路由形成等价负载分担(ECMP)
区域间路由(Inter-Area): 1. 比较总 Cost(到达 ABR 的 Cost + Type 3 中的 Cost) 2. 总 Cost 相同,比较 ABR 的 Router ID,大的优先
E1 外部路由: 1. 比较总 Cost(外部 Cost + 到达 ASBR 的内部 Cost) 2. 总 Cost 相同,比较 ASBR 的 Router ID
E2 外部路由: 1. 比较外部 Cost(仅 Type 5 中的 Cost) 2. 外部 Cost 相同,比较 Type 5 LSA 中的 Advertising Router(ASBR 的 Router ID) 3. 仍相同,比较到达 ASBR 的内部 Cost,小的优先
2.3 选路优先级的设计原理
OSPF 选路优先级体现了以下设计原则:
| 原则 | 说明 |
|---|---|
| 精确性优先 | 区域内路由基于完整拓扑计算,路径最精确 |
| 收敛速度 | 区域内变化触发 SPF,区域间变化仅更新路由表 |
| 防环保证 | 区域内 SPF 天然无环;区域间通过 Area 0 中转防环 |
| 外部隔离 | 外部路由优先级最低,避免外部路径影响内部最优路径 |
三、技术细节
3.1 区域内路由的计算
区域内路由通过 SPF(Dijkstra)算法计算,基于完整的拓扑视图:
- SPF 以本路由器为根节点
- 使用 Type 1(Router LSA)和 Type 2(Network LSA)构建拓扑图
- 计算到达每个目的节点的最短路径树
- 路径 Cost 为沿途所有接口 Cost 的累加和
示例:

R1 到达 R3: - 路径1(R1→R2→R3):Cost = 10 + 20 = 30 - 路径2(R1→R4→R3):Cost = 50 + 5 = 55 - 选择路径1(Cost 30)
3.2 区域间路由的计算
区域间路由的计算不运行 SPF,而是基于 Type 3 LSA:
到达目标网络的Cost = 到达ABR的Cost + Type3 LSA中的Cost
其中"到达 ABR 的 Cost"通过区域内 SPF 计算得出,Type 3 LSA 中的 Cost 是生成该 LSA 的 ABR 到达目标网络的距离。
3.3 外部路由的计算
E1 外部路由:
总Cost = Type5中的外部Cost + 到达ASBR的内部Cost
E2 外部路由:
总Cost = Type5中的外部Cost
E2 类型忽略到达 ASBR 的内部代价,适用于所有 ASBR 到达外部网络的代价近似相等的场景(如多出口接入同一上游 ISP)。
3.4 路由表中的 OSPF 路由标识
在华为设备的 IP 路由表中,OSPF 路由的标识如下:
| 标记 | 含义 | 路由类型 |
|---|---|---|
| O | OSPF 区域内路由 | Intra-Area |
| O_* | OSPF 区域间路由 | Inter-Area |
| O_E1 | OSPF E1 外部路由 | External Type 1 |
| O_E2 | OSPF E2 外部路由 | External Type 2 |
| O_NSSA1 | NSSA E1 外部路由 | NSSA External Type 1 |
| O_NSSA2 | NSSA E2 外部路由 | NSSA External Type 2 |
# 查看OSPF路由表
display ospf routing
display ip routing-table protocol ospf
# 输出示例
Destination/KMask Pre Cost NextHop Interface
10.1.1.0/24 10 10 10.0.0.2 GE0/0/0 O (区域内)
10.2.0.0/16 10 20 10.0.0.2 GE0/0/0 O_* (区域间)
172.16.0.0/16 10 10 10.0.0.2 GE0/0/0 O_E2 (外部)
四、实战配置/案例分析
4.1 查看路由选路详情
# 查看特定路由的选路详情
display ip routing-table 10.1.1.0 verbose
# 显示该路由的来源、Cost、下一跳、出接口等详细信息
# 查看所有OSPF路由及其类型
display ospf routing
# 按区域查看路由
display ospf routing area 0.0.0.0
display ospf routing asbr
# 查看路由选路统计
display ip routing-table statistics
4.2 案例分析:区域内路由优先于区域间路由
拓扑:

场景:R1 到达 192.168.1.0/24 有两条路径: - 区域内路径:R1→R3,Cost = 10 - 区域间路径:R1→ABR→R2,Cost = 100 + 1 = 101
选路结果:尽管区域间路径的 Cost 看起来更小(如果只看 Cost),但由于区域内路由优先级高于区域间路由,R1 选择通过 R3 的路径。
注意:如果区域内路径的 Cost 非常大,OSPF 仍然优先选择区域内路径。这是 OSPF 的设计特性,确保区域内拓扑的精确性。
4.3 案例分析:E1 与 E2 选路差异
场景:

E2 选路结果: - 两条 E2 路由的外部 Cost 均为 10 - 比较 ASBR 的 Router ID,Router ID 大的胜出
若改为 E1: - ASBR1 路径:10 + 2 = 12 - ASBR2 路径:10 + 20 = 30 - 选择 ASBR1 路径(Cost 12)
五、总结
| 优先级 | 路由类型 | 标记 | 选路依据 |
|---|---|---|---|
| 最高 | 区域内 | O | SPF计算的最短路径Cost |
| 次高 | 区域间 | O_* | 到达ABR的Cost + Type3中的Cost |
| 次低 | E1外部 | O_E1 | 外部Cost + 到达ASBR的Cost |
| 最低 | E2外部 | O_E2 | 外部Cost |
思考
- 为什么 OSPF 规定区域内路由的优先级高于区域间路由?即使区域间路由的 Cost 更小,也优先选择区域内路由,这样设计的好处和代价分别是什么?
- 当 OSPF 路由与其他协议(如静态路由、BGP)学习到同一目的网络时,OSPF 路由是否一定优先?为什么?
- E1 和 E2 外部路由的选路规则差异在什么场景下会产生明显不同的选路结果?
下篇预告:第65篇:OSPF 开销计算与带宽参考值