上期我们详细讲解了OSPF的六种LSA类型,理解了每类LSA的作用和泛洪范围。但在实际网络部署中,随着网络规模的扩大,LSDB(链路状态数据库)会急剧膨胀,给设备带来沉重的计算和存储负担。
为了解决这一问题,OSPF引入了特殊区域(Special Area)的概念。特殊区域通过对LSA泛洪范围的限制,大幅减少区域内LSDB的大小,同时通过下发缺省路由来保证网络连通性,实现了性能与功能的平衡。
在深入特殊区域之前,先快速回顾OSPF的区域划分:
✦ 骨干区域(Area 0):OSPF网络的中心,所有非骨干区域必须直接连接到骨干区域
✦ 非骨干区域(Area非0):连接在骨干区域上的普通区域
特殊区域正是由非骨干区域配置而成,骨干区域不能配置为特殊区域。
特殊区域的本质
特殊区域的本质就是拦截特定类型的LSA,并通过ABR(区域边界路由器)下发缺省路由来替代被拦截的LSA,从而保证该区域内的路由器依然能够访问区域外的网络。
OSPF共支持四种特殊区域:Stub区域、Totally Stub区域、NSSA区域、Totally NSSA区域。
1.Stub区域(末梢区域)
定义与机制
✦ 允许泛洪:1类LSA、2类LSA、3类LSA
✦ 禁止泛洪:4类LSA、5类LSA
✦ ABR行为:自动下发缺省的3类LSA(指向ABR自身)
✦ ASBR:区域内不允许存在ASBR
典型问题:等价缺省路由导致的次优路径

Stub区域等价缺省路由导致次优路径
场景描述:如上图所示拓扑:
✦ Area 1配置为Stub区域
✦ AR2和AR3都是连接Area 0和Area 1的ABR
✦ AR1在Area 0中引入外部路由1.1.1.1/32
✦ 链路开销:AR1-AR2=100,AR1-AR3=10,AR2-AR4=1,AR3-AR4=1
问题分析:
由于Stub区域禁止4、5类LSA泛洪,AR4无法直接学习到外部路由1.1.1.1/32的明细信息。AR2和AR3作为ABR,都会向Area 1下发缺省的3类LSA(开销分别为100+1=101和10+1=11?实际上缺省路由的开销就是ABR自身计算的开销值)。
在默认情况下,AR4会学到两条等价的缺省路由(如果开销相同),或者虽然开销不同但选路后依然可能产生次优路径。当AR4访问1.1.1.1/32时,如果选择经过AR2的路径:
✦ AR4 → AR2 → AR1(实际开销:1 + 100 = 101)
✦ 而最优路径应为:AR4 → AR3 → AR1(实际开销:1 + 10 = 11)
解决方案:

最佳实践:在Stub区域规划时,建议只保留一个ABR或通过精心设计链路开销来避免等价缺省路由带来的次优路径问题。
2. Totally Stub区域(完全末梢区域)
定义与机制
✦ 允许泛洪:1类LSA、2类LSA、缺省3类LSA
✦ 禁止泛洪:3类LSA(普通区域间路由)、4类LSA、5类LSA
✦ ABR行为:下发缺省的3类LSA,用于访问所有区域外网络
✦ ASBR:区域内不允许存在ASBR
与Stub区域的对比
✦ Stub区域:允许3类LSA泛洪,可学习到其他区域的路由明细
✦ Totally Stub区域:禁止3类LSA泛洪,通过一条缺省路由访问所有其他区域
适用场景
✦ 网络规模大,希望最大化减少LSDB
✦ 区域内设备性能有限
✦ 区域内设备只需访问外部网络,不关心具体路由细节
3. NSSA区域(Not-So-Stubby Area,非纯末梢区域)
定义与机制
✦ 允许泛洪:1类LSA、2类LSA、3类LSA、7类LSA
✦ 禁止泛洪:4类LSA、5类LSA
✦ ABR行为:自动下发缺省的7类LSA
✦ ASBR:区域内允许存在ASBR,外部路由以7类LSA形式引入
7转5机制
NSSA区域的核心机制是7类LSA与5类LSA的转换:
1.区域内:ASBR引入外部路由,以7类LSA形式在NSSA区域内泛洪
2.跨区域传递:ABR将7类LSA转换为5类LSA,泛洪到其他区域
3.多ABR场景:由Router ID最大的ABR执行7转5操作
4.ADV Router变化:转换后,5类LSA的Advertising Router改为执行转换的ABR的RID
典型问题一:多ABR场景下的次优路径

NSSA区域多ABR导致的次优路径
场景描述:如上图所示:
✦ Area 1配置为NSSA区域
✦ AR4作为ASBR,引入外部路由4.4.4.4/32
✦ AR2和AR3都是连接Area 0和Area 1的ABR
✦ AR3的Router ID大于AR2,负责执行7转5
问题分析:
由于AR3执行7转5,5类LSA的Advertising Router变为AR3的RID。当AR1访问4.4.4.4/32时:
✦ 根据5类LSA计算到ASBR(AR3)的路径
✦ 实际最优路径应为:AR1 → AR2 → AR4
✦ 但由于ASBR被“隐藏”为AR3,AR1可能选择:AR1 → AR3 → AR4(次优)
解决方案:转发地址(Forwarding Address)
7类LSA在产生时携带转发地址,7转5后转发地址继续保留。转发地址的取值规则(详见上期LSA文章):
✦ 正常情况:FA = ASBR到达外部路由的下一跳地址(当满足特定条件时)
✦ 转发地址的作用:其他区域路由器优先通过FA访问外部路由,绕过隐藏ASBR带来的次优路径
典型问题二:FA缺失导致的环路

7转5后FA缺失导致的环路
场景描述:如上图所示:
✦ AR1引入外部路由192.168.1.0/24
✦ AR3执行7转5时,通过命令清除了转发地址
✦ AR2在骨干区域学习到不携带FA的5类LSA,在NSSA区域学习到7类LSA
✦ AR2修改了到达AR1的开销(使AR2到AR1的路径更优)
问题分析:
当AR2需要访问192.168.1.0/24时:
1.AR2查询路由表,选择不携带FA的5类LSA(因为5类LSA优先级高于7类)
2.5类LSA指向ASBR(AR3),下一跳指向AR4
3.报文到达AR3后,AR3查询路由表,发现7类LSA指向ASBR(AR1),下一跳指向AR2
4.环路形成:AR2 → AR4 → AR3 → AR2
根本原因:7转5后FA缺失,导致不同区域的路由器对外部路由的下一跳认知不一致。
7类LSA的FA规则(重要!)

关键原则:7转5后必须确保FA存在,否则可能引发路由环路!
4. Totally NSSA区域(完全非纯末梢区域)
定义与机制
✦ 允许泛洪:1类LSA、2类LSA、缺省3类LSA、7类LSA
✦ 禁止泛洪:3类LSA(普通区域间路由)、4类LSA、5类LSA
✦ ABR行为:同时下发缺省的3类LSA和缺省的7类LSA
✦ ASBR:区域内允许存在ASBR
缺省路由来源
Totally NSSA区域内的路由器会学到两种缺省路由:
1.缺省的3类LSA:用于访问其他区域的区域间路由
2.缺省的7类LSA:用于访问其他区域的外部路由
与其他区域的对比

Stub区域配置(华为设备)

Totally Stub区域配置

NSSA区域配置NSSA区域配置

Totally NSSA区域配置

决策流程图
是否需要区域内引入外部路由?
├─ 否 → 设备性能是否充足?
│ ├─ 是 → 普通区域
│ └─ 否 → 是否需要其他区域路由明细?
│ ├─ 是 → Stub区域
│ └─ 否 → Totally Stub区域
└─ 是 → 是否需要其他区域路由明细?
├─ 是 → NSSA区域
└─ 否 → Totally NSSA区域
选择建议

05 最佳实践与避坑指南
1. Stub/Totally Stub区域
✅ 推荐:只保留一个ABR,避免等价缺省路由
✅ 推荐:合理规划链路开销,确保缺省路由选路最优
⚠️ 注意:区域内不能配置ASBR,否则邻居无法建立
2. NSSA/Totally NSSA区域
✅ 推荐:确保7转5后的5类LSA携带转发地址
✅ 推荐:多ABR场景下,关注Router ID大小对7转5的影响
⚠️ 注意:ABR上引入外部路由不会产生FA,需特别关注
⚠️ 注意:缺省的7类LSA不携带FA,需评估影响
3. 通用原则
✦ 骨干区域不能配置为特殊区域
✦ 虚链路不能穿越特殊区域
✦ 特殊区域内的所有路由器必须统一配置(否则邻居无法建立)
06 排错命令速查

特殊区域是OSPF协议在大规模网络部署中的重要优化手段:
1.Stub区域:拦截外部路由,通过缺省3类LSA访问外部网络
2.Totally Stub区域:进一步拦截区域间路由,最大化减少LSDB
3.NSSA区域:在Stub基础上支持ASBR,通过7类LSA引入外部路由
4.Totally NSSA区域:在NSSA基础上拦截区域间路由,进一步优化
核心要点:
✦ 特殊区域的本质是用缺省路由换取LSDB精简
✦ 转发地址(FA) 是多ABR场景下避免次优路径和环路的关键
✦ 7转5机制 是NSSA区域的核心,需确保FA正确携带
下期预告:我们将深入探讨OSPF的高级特性,包括路由汇总、虚链路、以及各种认证方式的配置与应用。



