第54篇:OSPF 区域设计——骨干区域与非骨干区域的约束
关键词
OSPF、Area、骨干区域、非骨干区域、ABR、路由传递规则、区域设计
一、为什么需要区域?
OSPF 如果运行在单区域中,所有路由器都要维护整个网络的 LSDB。当网络规模变大时,会带来三个问题:
- LSDB 太大——每台路由器都要存储全网所有 LSA,内存消耗大
- SPF 计算频繁——任何拓扑变化都会触发全网 SPF 重算
- LSA 泛洪范围广——一条 LSA 要在全网泛洪,占用带宽
解决方案:多区域划分。
每个区域内部维持独立的 LSDB,区域之间通过 ABR(Area Border Router) 传递路由信息。
二、骨干区域 Area 0
2.1 什么是骨干区域
Area 0(骨干区域)是所有非骨干区域的"枢纽"。 OSPF 要求,所有非骨干区域必须直接与 Area 0 相连。
2.2 骨干区域的作用
- 连接所有非骨干区域
- 负责区域间的路由传递
- 保证整网路由的连通性
Area 1 Area 0 Area 2RouterA (ABR) ───── RouterC (Backbone) ───── RouterE (ABR) │ │ RouterB RouterF --- --- ---
在上图中: - RouterC 连接 Area 0 和各非骨干区域——它是 ABR - RouterA 也是 ABR(连接 Area 1 和 Area 0) - Area 1 和 Area 2 之间不能直接通信,必须经过 Area 0
2.3 骨干区域的连续性
骨干区域必须保持物理或逻辑上的连续性。如果骨干区域被分割,OSPF 路由将中断。
三、非骨干区域
3.1 普通区域(Standard Area)
- 接收区域内 LSA(Type1/Type2)
- 接收 ABR 注入的 Type3 Summary LSA
- 接收 ASBR 注入的 Type5 External LSA
3.2 特殊区域(Stub / NSSA)
将在后续文章中详细介绍。这里先列出分类:
| 区域类型 | 接收 Type3 | 接收 Type5 | 接收 Type7 | 默认路由 |
|---|---|---|---|---|
| 普通区域 | ✅ | ✅ | ❌ | 无 |
| Stub 区域 | ✅ | ❌ | ❌ | ✅(由 ABR 自动注入) |
| Totally Stub | ❌(除默认) | ❌ | ❌ | ✅ |
| NSSA | ✅ | ❌ | ✅ | 可选 |
| Totally NSSA | ❌(除默认) | ❌ | ✅ | ✅ |
四、路由传递规则
4.1 核心规则
- 区域内部路由(Intra-Area)> 区域间路由(Inter-Area)> 外部路由(External)
- 所有非骨干区域必须与 Area 0 相连
- 非骨干区域之间不能直接交换路由
- ABR 将区域内部 LSDB 转换成 Type3 LSA 注入其他区域
4.2 路由传递流程
Area 0(骨干)
| ┌───────── └──────────┘ | ABR-1 | ─────────┐ |
|---|---|---|
| ▼ ▼ | ||
| ┌──────────┐ ┌──────────┐ | ||
| Area 1 10.1.0.0/16 | Area 2 20.1.0.0/16 |
【路由传递过程】 1. Area 1 内的 10.1.0.0/16 作为 Type1 LSA 在 Area 1 内泛洪 2. ABR-1 收到后,转化为 Type3 LSA 注入 Area 0 3. ABR-2 从 Area 0 收到 Type3,注入 Area 2 4. Area 2 内的路由器学习到 10.1.0.0/16,下一跳指向 ABR-2
五、区域设计原则
5.1 基本原则
- Area 0 必须连续
- 所有非骨干区域必须直连 Area 0(如果不能直连,需要用 Virtual Link)
- ABR 不能跨区域(ABR 只能连接两个区域——Area 0 和一个其他区域)
- 建议每个区域的设备数量不超过 50~100 台(视设备性能而定)
- 尽量利用特殊区域减小 LSDB
5.2 设计案例:大型企业网
Area 0
┌──────────────────────────┐
│ 核心路由器 ── 核心路由器 │
└────┬──────┬──────┬──────┘
│ │ │
| ▼ ▼ ▼ | ||||
|---|---|---|---|---|
| ┌──────┐┌──────┐┌──────┐ | ||||
| ABR-1 | ABR-2 | ABR-3 | ||
| │ │ │ | ||||
| ▼ ▼ ▼ | ||||
| --- | --- | --- | --- | --- |
| ┌──────┐┌──────┐┌──────┐ | ||||
| Area 1 (Stub) | Area 2 (NSSA) | Area 3 (普通) |
设计要点: - 核心层在 Area 0 - 汇聚层设备作为 ABR - 接入层划分不同区域 - 不需要引入外部路由的区域设 Stub
六、区域设计常见错误
错误 1:区域没有直连 Area 0
Area 1 ─── Area 2 ─── Area 0
这样不行!Area 1 和 Area 0 之间隔着 Area 2,路由无法传递。必须让 Area 1 直连 Area 0,或者通过 Virtual Link。
错误 2:ABR 连接三个区域
OSPF 标准中,ABR 连接到 Area 0 和最多一个其他区域(某些实现支持多区域连接,但不推荐)。
错误 3:骨干区域被分割
Area 0(左)─── Area 1 ─── Area 0(右)
Area 0 被 Area 1 分割成两段。需要 Virtual Link 连接两个 Area 0 部分。
七、验证命令
# 查看 OSPF 区域信息
display ospf brief
# 查看 OSPF ABR/ASBR 信息
display ospf abr-asbr
# 查看路由表(关注路由类型)
display ip routing-table protocol ospf
# 查看 LSDB 按区域
display ospf lsdb
八、总结
| 概念 | 要点 |
|---|---|
| Area 0 | 骨干区域,所有非骨干区域必须与之相连 |
| 非骨干区域 | 普通区域、Stub、NSSA 等 |
| ABR | 连接 Area 0 与其他区域的路由器 |
| 路由传递 | 区域内 > 区域间(Type3)> 外部(Type5) |
| 设计原则 | Area 0 连续、非骨干直连 Area 0、合理使用特殊区域 |
九、思考
- 为什么 OSPF 要求所有非骨干区域必须与 Area 0 相连?
- 什么是 ABR?ABR 在处理 Type1 和 Type3 LSA 时做了什么转换?
- 骨干区域被分割了怎么办?
- 为什么要使用 Stub 或 NSSA 区域?
- 在一个三层网络架构(核心-汇聚-接入)中,如何划分 OSPF 区域比较合理?
下篇预告:第55篇《OSPF 虚链接(Virtual Link)解决区域分割》——当骨干区域不再连续时,如何用 Virtual Link 救场。