第64篇:OSPF 路由选路——区域内 > 区域间 > 外部
关键词
OSPF、路由选路、优先级、Intra-Area、Inter-Area、External、Type1、Type2
一、OSPF 路由的三种类型
OSPF 将路由分为三个层级,优选顺序为:
区域内路由(Intra-Area)> 区域间路由(Inter-Area)> 外部路由(External)
Area 1 Area 0(骨干) 外部网络
| RouterA 10.0.1.0/24 Cost=1 | ────── | RouterB Type5 | ──────── 172.16.0 Cost=20 | ASBR |
|---|---|---|---|---|
| │ │ | ||||
| │ OSPF 优选顺序 │ | ||||
| │ Intra-Area (O) → 优先 │ | ||||
| │ Inter-Area (O-IA) → 次之 │ | ||||
| └── External (O-E2) → 最后 │ |
二、完整优先顺序
| 优先级 | 路由类型 | 路由表中标记 | 说明 |
|---|---|---|---|
| 1(最高) | Intra-Area(区域内) | O | 本区域内通过 SPF 计算得出 |
| 2 | Inter-Area(区域间) | O-IA | 通过 Type 3 LSA 学习 |
| 3 | Type 1 External(E1) | O-ASE | 外部路由,累加内部 Cost |
| 4(最低) | Type 2 External(E2) | O-ASE | 外部路由,不累加内部 Cost |
三、区域内路由(Intra-Area)
3.1 特征
- 路由表标记:O
- 优先级(Preference):10
- 来源:Type 1 + Type 2 LSA 通过 SPF 计算
- 可信度:最高
3.2 示例
display ip routing-table protocol ospf
Destination/Mask Proto Pre Cost NextHop Interface
10.0.1.0/24 OSPF 10 1 10.0.12.1 GE0/0/0
10.0.2.0/24 OSPF 10 2 10.0.12.2 GE0/0/1
四、区域间路由(Inter-Area)
4.1 特征
- 路由表标记:O-IA
- 优先级(Preference):10(与区域内相同)
- 来源:Type 3 LSA
- 选路:比较 Type 3 中的 Cost 值
4.2 区域内与区域间的优先关系
虽然协议优先级相同(都是 10),但 OSPF 在内部逻辑上优先选择区域内路由。
路由器同时学到 10.0.1.0/24:
方式 1:区域内(O)→ 下一跳直连,Cost=1
方式 2:区域间(O-IA)→ 下一跳经 ABR,Cost=5
选择:区域内路由(O)→ Cost 更小更优
4.3 查看区域间路由
display ip routing-table protocol ospf
Destination/Mask Proto Pre Cost NextHop Interface
10.0.3.0/24 O-OSPF 10 20 10.0.0.2 GE0/0/0
五、外部路由(External)
5.1 E1 与 E2 的选择
外部路由的选路规则稍微复杂一些:
E2 选路规则(默认):
1. 先比较外部 Cost(Type 5 中的 Metric)
2. 外部 Cost 相同 → 比较到达 ASBR 的内部 Cost
E1 选路规则:
总 Cost = 外部 Cost + 内部 Cost
选择总 Cost 最小的路径
5.2 E1 vs E2 选路对比
┌──── ASBR1 ──── 172.16.0.0/16 (E2 Cost=20)
│ 内部 Cost=10
Router ─── ABR ───┤
│ 内部 Cost=20
└──── ASBR2 ──── 172.16.0.0/16 (E2 Cost=20)
E2 选路:
ASBR1:Cost=20(只看外部)
ASBR2:Cost=20(相同)
→ 负载分担
E1 选路:
ASBR1:20 + 10 = 30
ASBR2:20 + 20 = 40
→ 优选 ASBR1
5.3 外部路由的优先级
display ip routing-table protocol ospf
Destination/Mask Proto Pre Cost NextHop Interface
172.16.0.0/16 O-ASE 150 20 10.0.0.2 GE0/0/0
注意:外部路由的协议优先级为 150,远高于区域内/区域间路由的 10。
六、完整选路决策树
收到到达同一目的地的多条 OSPF 路由:
- 先按 OSPF 路由类型排序 区域内(O) > 区域间(O-IA) > E1 > E2 ↓
- 同类型比 Cost Cost 越小越优先 ↓
- Cost 相同 → 负载分担(ECMP) 等价路由加入路由表
七、实际案例
7.1 拓扑
172.16.0.0/16
│
┌───┴───┐
│ ASBR │
└───┬───┘
│
Area 0 ┌────┴────┐
│ │
ABR1 ABR2
Cost=5 Cost=15
│ │
Area 1 └────┬────┘
│
RouterC
7.2 RouterC 的路由表
# 情况 1:外部路由使用 E2
display ip routing-table 172.16.0.0
Destination/Mask Proto Pre Cost NextHop Interface
172.16.0.0/16 O-ASE 150 20 10.0.0.1 GE0/0/0
← 两条等价,负载分担
172.16.0.0/16 O-ASE 150 20 10.0.0.2 GE0/0/1
# 情况 2:外部路由使用 E1
display ip routing-table 172.16.0.0
Destination/Mask Proto Pre Cost NextHop Interface
172.16.0.0/16 O-ASE 150 25 10.0.0.1 GE0/0/0
← 优选 Cost=20+5=25
八、常见误解澄清
误解 1:OSPF 路由优先级都是 10
纠正:区域内和区域间的协议优先级是 10,但外部路由是 150。
# 可以通过 preference 命令修改
ospf 1
preference 15 # 修改所有 OSPF 路由的优先级
preference ase 160 # 单独修改 ASE 路由的优先级
误解 2:E1 一定比 E2 优先
纠正:E1 在选路优先级上高于 E2,但这不是比较 Cost,而是路由类型优先级。哪怕 E2 的 Cost 为 1,E1 的 Cost 为 1000,仍然优选 E1。
误解 3:Cost 相同一定负载分担
纠正:仅当路由类型相同且 Cost 相同时才会负载分担。区域间 O-IA 与区域内 O 即使 Cost 相同,也只会选 O。
九、总结
| 路由类型 | 标记 | 优先级(Preference) | 选路顺序 |
|---|---|---|---|
| 区域内 | O | 10 | 1 |
| 区域间 | O-IA | 10 | 2 |
| 外部 E1 | O-ASE | 150 | 3 |
| 外部 E2 | O-ASE | 150 | 4 |
一句话记住:内 > 间 > E1 > E2,同类型比 Cost,Cost 相同负载分担。
十、思考
- OSPF 区域内路由和区域间路由的协议优先级是否相同?实际上哪个优先?
- 如果一条外部路由同时以 E1 和 E2 的方式存在,路由器会选择哪一个?
- 路由器上有 10.0.1.0/24 的区域内路由(Cost=5)和区域间路由(Cost=3),会选择哪个?为什么?
- 在多 ASBR 场景中,E2 路由选路时是先比外部 Cost 还是内部 Cost?
- 如何通过命令修改 OSPF 路由的默认优先级?
下篇预告:第65篇《OSPF 开销计算与带宽参考值》——深入理解 Cost 的计算方式和调优方法。