关键词:OSPF、NSSA、Type7 LSA、Not-So-Stubby Area、特殊区域、Type7转Type5
第63篇:NSSA 区域与 Type7 LSA 的转换
一、引言
Stub 区域是 OSPF 特殊区域的一种,它通过禁止 Type 5 LSA 进入来减少区域内的 LSDB 规模。然而,Stub 区域的限制过于严格——区域内不能有 ASBR,也就不能引入外部路由。
NSSA(Not-So-Stubby Area,不太Stub的区域)是对 Stub 区域的增强。它在保留 Stub 区域基本优势(禁止 Type 5 LSA 进入)的同时,允许区域内存在 ASBR 并通过 Type 7 LSA 引入外部路由。Type 7 LSA 在 NSSA 区域内泛洪,到达 NSSA 的 ABR 后被转换为 Type 5 LSA,注入整个 OSPF 域。
二、核心概念
2.1 NSSA 区域的设计动机
| 需求 | Stub 区域 | NSSA 区域 |
|---|---|---|
| 禁止 Type 5 LSA 进入 | ✓ | ✓ |
| 减少 LSDB 规模 | ✓ | ✓ |
| ABR 注入默认路由 | ✓ | ✓ |
| 区域内引入外部路由 | ✗ | ✓ |
| 使用特殊 LSA 类型 | N/A | Type 7 |
NSSA 的适用场景: - 区域需要通过本地链路接入外部网络(如专线、MSTP 等) - 同时希望保持区域的 Stub 属性,减少外部 LSA 的数量 - 区域内只有一台路由器作为 ASBR 引入少量外部路由
2.2 Type 7 LSA 的基本特征
Type 7 LSA 是 NSSA 区域专属的外部路由 LSA 类型:
| 特征 | 说明 |
|---|---|
| 产生者 | NSSA 区域内的 ASBR |
| 泛洪范围 | 仅在 NSSA 区域内泛洪 |
| 外部路由类型 | 支持 E1 和 E2 两种类型 |
| 转换机制 | NSSA 的 ABR 将 Type 7 转换为 Type 5 |
| 结构 | 与 Type 5 LSA 基本相同,增加了 Forwarding Address 字段 |
2.3 NSSA 区域的类型
NSSA 区域也支持 Totally 模式:
| 类型 | 阻止的 LSA | 注入的路由 |
|---|---|---|
| NSSA | Type 5 | 默认路由(Type 7) |
| Totally NSSA | Type 3、Type 4、Type 5 | 默认路由(Type 3) |
Totally NSSA 是华为等厂商的扩展特性,在 NSSA 基础上进一步阻止 Type 3 和 Type 4 LSA,只注入一条默认路由。
三、技术细节
3.1 Type 7 到 Type 5 的转换过程
Type 7 LSA 到 Type 5 LSA 的转换是 NSSA 的核心机制:

转换规则: 1. 只有 NSSA 区域的 ABR 才能执行 Type 7 到 Type 5 的转换 2. 转换时保留外部路由的网络地址、掩码、Cost 和类型(E1/E2) 3. 转换后的 Type 5 LSA 的 Advertising Router 为执行转换的 ABR 的 Router ID 4. 如果有多台 ABR 连接同一 NSSA,只有 Router ID 最大的 ABR 执行转换(防止重复)
3.2 NSSA 默认路由的注入
NSSA 区域的 ABR 会向区域内注入默认路由:
| NSSA 类型 | 默认路由类型 | LSA 类型 |
|---|---|---|
| 普通 NSSA | Type 7 默认路由 | Type 7 LSA |
| Totally NSSA | Type 3 默认路由 | Type 3 LSA |
# 普通NSSA:ABR产生Type 7默认路由
# LS Type: NSSA-External-LSA
# Link State ID: 0.0.0.0
# Totally NSSA:ABR产生Type 3默认路由
# LS Type: Summary-LSA
# Link State ID: 0.0.0.0
3.3 P-bit(Propagation Bit)
Type 7 LSA 中包含一个 P-bit 字段,控制是否执行 Type 7 到 Type 5 的转换:
- P-bit = 1:ABR 将 Type 7 转换为 Type 5(默认)
- P-bit = 0:ABR 不执行转换,该外部路由仅在 NSSA 区域内有效
P-bit 为 0 的场景: - 某些外部路由不需要传播到整个 OSPF 域 - 仅在 NSSA 区域内使用的外部路由(如区域内专线回退地址)
四、实战配置/案例分析
4.1 NSSA 区域配置
# 配置NSSA区域
ospf 1
area 0.0.0.3
nssa # 普通NSSA
# 或
nssa no-summary # Totally NSSA
# 在NSSA区域内重分发外部路由
ospf 1
import-route static nssa # 以NSSA外部路由形式引入
# 查看NSSA区域的LSDB
display ospf lsdb nssa-external
4.2 案例分析:NSSA 外部路由未能传播到整个域
故障现象:NSSA 区域内的 ASBR 引入了外部路由,但该路由未能出现在其他区域的路由器上。
排查过程:
- 检查 NSSA 区域内 ASBR 是否产生了 Type 7 LSA:
[ASBR] display ospf lsdb nssa-external self-originate
# 确认Type 7 LSA已产生
- 检查 NSSA 的 ABR 是否收到了 Type 7 LSA:
[ABR] display ospf lsdb nssa-external
# 确认Type 7 LSA已到达ABR
- 检查 ABR 是否产生了 Type 5 LSA:
[ABR] display ospf lsdb as-external self-originate
# 检查是否有转换后的Type 5 LSA
- 发现 P-bit 为 0,ABR 未执行转换:
[ASBR] display ospf lsdb nssa-external
P-bit: 0 # 不传播到AS外部
- 修复:在重分发时设置 P-bit 为 1:
ospf 1
import-route static nssa propagate
4.3 案例分析:多 ABR 的 Type 7 转换冲突
场景:NSSA 区域连接了两台 ABR,两台 ABR 都尝试将同一 Type 7 LSA 转换为 Type 5 LSA,导致出现两条指向同一外部网络但 Cost 不同的 Type 5 LSA。
分析:按照 OSPF 标准,只有 Router ID 最大的 ABR 应该执行转换。但如果两台 ABR 对"最大 Router ID"的判断不一致,可能出现重复转换。
解决: - 确保 NSSA 区域内所有路由器对 Router ID 的认知一致 - 使用路由策略控制特定 ABR 执行转换 - 或仅配置一台 ABR 连接 NSSA 区域
五、总结
| 特性 | Stub | NSSA | Totally NSSA |
|---|---|---|---|
| 阻止 Type 5 | ✓ | ✓ | ✓ |
| 阻止 Type 3 | ✗ | ✗ | ✓ |
| 阻止 Type 4 | ✗ | ✗ | ✓ |
| 允许外部路由引入 | ✗ | ✓(Type 7) | ✓(Type 7) |
| 默认路由类型 | Type 3 | Type 7 | Type 3 |
| Type 7→Type 5 转换 | N/A | ABR执行 | ABR执行 |
思考
- NSSA 区域与普通 Stub 区域的核心区别是什么?在什么场景下应该选择 NSSA 而非 Stub?
- 为什么 Type 7 LSA 不能直接泛洪到非 NSSA 区域?Type 7 到 Type 5 的转换必须在 ABR 上执行的原因是什么?
- 如果 NSSA 区域中有两台 ASBR 产生了相同外部路由的 Type 7 LSA,会发生什么?ABR 如何处理?
下篇预告:第64篇:OSPF 路由选路:区域内 > 区域间 > 外部