第54篇:OSPF 区域设计——骨干区域与非骨干区域的约束

关键词

OSPF、Area、骨干区域、非骨干区域、ABR、路由传递规则、区域设计


一、为什么需要区域?

OSPF 如果运行在单区域中,所有路由器都要维护整个网络的 LSDB。当网络规模变大时,会带来三个问题:

  1. LSDB 太大——每台路由器都要存储全网所有 LSA,内存消耗大
  2. SPF 计算频繁——任何拓扑变化都会触发全网 SPF 重算
  3. LSA 泛洪范围广——一条 LSA 要在全网泛洪,占用带宽

解决方案:多区域划分。

每个区域内部维持独立的 LSDB,区域之间通过 ABR(Area Border Router) 传递路由信息。


二、骨干区域 Area 0

2.1 什么是骨干区域

Area 0(骨干区域)是所有非骨干区域的"枢纽"。 OSPF 要求,所有非骨干区域必须直接与 Area 0 相连。

2.2 骨干区域的作用

  • 连接所有非骨干区域
  • 负责区域间的路由传递
  • 保证整网路由的连通性
     Area 1           Area 0           Area 2
    
    RouterA (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 核心规则

  1. 区域内部路由(Intra-Area)> 区域间路由(Inter-Area)> 外部路由(External)
  2. 所有非骨干区域必须与 Area 0 相连
  3. 非骨干区域之间不能直接交换路由
  4. 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 基本原则

  1. Area 0 必须连续
  2. 所有非骨干区域必须直连 Area 0(如果不能直连,需要用 Virtual Link)
  3. ABR 不能跨区域(ABR 只能连接两个区域——Area 0 和一个其他区域)
  4. 建议每个区域的设备数量不超过 50~100 台(视设备性能而定)
  5. 尽量利用特殊区域减小 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、合理使用特殊区域

九、思考

  1. 为什么 OSPF 要求所有非骨干区域必须与 Area 0 相连?
  2. 什么是 ABR?ABR 在处理 Type1 和 Type3 LSA 时做了什么转换?
  3. 骨干区域被分割了怎么办?
  4. 为什么要使用 Stub 或 NSSA 区域?
  5. 在一个三层网络架构(核心-汇聚-接入)中,如何划分 OSPF 区域比较合理?

下篇预告:第55篇《OSPF 虚链接(Virtual Link)解决区域分割》——当骨干区域不再连续时,如何用 Virtual Link 救场。