在 OSPF 协议中,5 类 LSA(AS-External-LSA)与 7 类 LSA(NSSA LSA)的处理是理解 OSPF 区域类型和协议操作的核心。根据 RFC 3101(OSPF NSSA Option),这种转换机制旨在平衡“自治系统外部路由引入”与“区域拓扑保护”之间的矛盾。
以下是关于 5 类与 7 类 LSA 在 NSSA 区域转换的底层细节:
1. 7 类 LSA 的产生与传播限制
在 NSSA(Not-So-Stubby Area)区域中,为了允许存在 ASBR,OSPF 定义了 7 类 LSA。
- 产生背景 :NSSA 区域不允许 5 类 LSA 进入。因此,当 NSSA 区域内的 ASBR 引入外部路由时,它会生成 7 类 LSA。
- 泛洪范围 :7 类 LSA 的泛洪范围严格限制在 产生它的 NSSA 区域内部 。
- 关键字段 - P-bit (Propagate bit) :
- 这是 7 类 LSA 头部 Options 字段中的关键位。
- 只有 P-bit 置位为 1 的 7 类 LSA 才有资格在 ABR 处被转换成 5 类 LSA。
- 如果 ABR 兼任 ASBR 并在 NSSA 内部引入路由,其生成的 7 类 LSA 的 P-bit 通常置为 0,防止环路。
2. 7 转 5 (Translator) 的转换细节
当 7 类 LSA 到达 NSSA 区域的 ABR 时,由 ABR 执行 7-to-5 Translator 动作,将其转换为 5 类 LSA 并向 Area 0 及其他普通区域泛洪。
谁负责转换?
- 如果 NSSA 区域有多个 ABR,为了避免重复生成 5 类 LSA,系统会选举 Router ID 最大的 ABR 作为 Translator。
- 通过
display ospf nssa可以观察到当前的 Translator 状态。
转换过程中的字段变化
在转换过程中,报文内容会发生以下精确映射:
| 字段名称 | 7 类 LSA (NSSA) | 转换后的 5 类 LSA (AS-External) |
|---|---|---|
| Link State ID | 外部网络的 IP 地址 | 保持不变 |
| Advertising Router | ASBR的 Router ID | **ABR(Translator)**的 Router ID |
| Network Mask | 外部网络的掩码 | 保持不变 |
| Forwarding Address (FA) | 必须是非 0 地址 (通常是 ASBR 的接口地址) | 继承 7 类的 FA 地址 |
| External Route Tag | 路由标记 | 保持不变 |
3. Forwarding Address (FA) 的核心作用
在 7 转 5 的过程中,FA 地址的处理是防止次优路径的关键:
- 7 类 LSA 的 FA 原则 :7 类 LSA 的 FA 字段通常不为 0。如果 ASBR 满足特定条件(如接口开启 OSPF 且非 P2P 链路),FA 会指向 ASBR 的具体接口地址。
- 5 类 LSA 的计算依赖 :当 5 类 LSA 进入骨干区域后,其他路由器在计算路径时,会优先查找如何到达该 FA 地址 ,而不是查找如何到达 Advertising Router(ABR)。
- 注意 :如果 7 类 LSA 的 FA 为 0.0.0.0,ABR 将不会对其进行 7 转 5 操作。
4. 为什么没有 5 转 7?
这是一个常见的概念误区。
- 5 类 LSA 无法进入 NSSA 区域 :这是 NSSA 的定义决定的。
- 替代方案 :ABR 会通过 3 类 LSA(由
nssa default-information-originate触发)或特殊的 7 类 LSA 向 NSSA 区域下发一条 缺省路由 (0.0.0.0/0) ,以允许 NSSA 内部节点访问外部网络,而不是将成千上万条 5 类 LSA 转换回 7 类。
总结
7 类转 5 类的过程本质上是 ABR 代理了 ASBR 的通告职责。在 HCIE 故障排查中,如果发现外部路由无法进入骨干区域,应重点检查:
- ABR 是否成功选举为 Translator 。
- 7 类 LSA 的 P-bit 是否为 1。
- FA 地址是否在 OSPF 路由表中可达(如果 FA 不可达,路由将不会加入本地 IP 路由表)。