HCIP-Datacom考试里的OSPF部分,公认的难点之一是特殊区域。我备考那会儿,光是把Stub、完全Stub、NSSA、完全NSSA这几类区域在eNSP上跑明白,就折腾了好几个晚上。网上讲原理的文章不少,但真正把配置命令、验证思路、排错方法串在一起、特别是把Stub和NSSA放在同一个拓扑里对比着做的,确实不多见。这篇就把我完整跑通的实验整理出来。
实验覆盖的内容包括:两种特殊区域对LSA的过滤规则、默认路由的产生差异、NSSA区域里7类LSA转换成5类LSA的完整过程,还有HCIP考试里最喜欢考的“Stub区域和NSSA区域到底有哪些本质区别”。另外也把华为设备上和标准协议不太一样的地方单独拎出来说了。适合正在备考HCIP-Datacom的人,也适合做网络规划时需要对大网OSPF区域做设计的朋友参考。
1. 实验场景与整体规划
1.1 为什么需要Stub和NSSA特殊区域
先聊一个很实际的问题:OSPF划分区域,本来就是为了减少LSA泛洪。区域间通过ABR交换3类LSA,已经能挡住很大一部分链路状态更新。但有一个东西挡不住,就是ASBR产生的5类LSA。只要网络里有一台路由器引入外部路由,这条5类LSA就会在OSPF整个自治系统内泛洪,所有区域的路由器都得把它收进LSDB。
如果你的某个区域里根本没有ASBR,也不关心外部网络的明细路由,那5类LSA对这个区域来说就纯粹是资源浪费。机房里的老设备CPU和内存本就紧张,LSDB里塞着一堆和本区域毫无关系的外部LSA,没任何收益。Stub区域就是为这个场景设计的:把4类和5类LSA挡在区域外面,区域内部路由器只保留区域内的明细路由和一条ABR下发的默认路由,外部流量统一走默认路由出去。
但Stub区域有个硬性限制:区域内不能存在ASBR。也就是说,如果你在一个区域里用import-route引进了外部路由,这个区域就没有资格做Stub。实际工程里经常遇到一种情况——某个边缘区域本身连接着外部网段,内部路由器确实不需要知道全网的5类外部明细,但边界设备又要把自己直连的外部路由通告进OSPF。Stub满足不了,于是IETF设计了NSSA。
NSSA的特殊之处在于引入了一种新的LSA类型,也就是7类LSA。外部路由在NSSA区域内以7类LSA形式存在,只在区域内泛洪,到ABR后被转换成5类LSA再发往其他区域。这样既保留了区域内引入外部路由的能力,又不会让5类LSA污染整个区域。用一个不太严谨但很形象的说法:Stub是彻底隔离外部路由,NSSA是外部路由在区域内部用另一种“包装”传递,出区域时再换回标准包装。
1.2 拓扑设计与地址规划
为了把Stub和NSSA的差异完整呈现出来,我用了4台路由器。R1在Area 0里作为ASBR,引入一条模拟外网的静态路由;R2是ABR,一边连着Area 0,一边连着Area 1;R3和R4都在Area 1里,R4在NSSA实验阶段也会作为ASBR引入另一条外部路由。这样设计的好处是:同一个区域,先配置成Stub跑一遍,再切换成NSSA跑一遍,两台ASBR分别产生5类LSA和7类LSA,所有差异都可以直接用display命令看到。
Area 0 Area 1 R1(ASBR)------R2(ABR)------R3------R4(ASBR) 1.1.1.1 2.2.2.2 3.3.3.3 4.4.4.4 外部: 外部: 192.0.2.0/24 198.51.100.0/24设备型号我用的是eNSP里的AR系列路由器,接口采用GigabitEthernet0/0/0这类命名。地址规划如下表:
| 设备 | 接口 | 对端 | 网段 | 所属区域 |
|---|---|---|---|---|
| R1 | GE0/0/0 | R2 GE0/0/0 | 10.0.12.0/24 | Area 0 |
| R1 | LoopBack0 | - | 1.1.1.1/32 | Area 0 |
| R2 | GE0/0/0 | R1 GE0/0/0 | 10.0.12.0/24 | Area 0 |
| R2 | GE0/0/1 | R3 GE0/0/0 | 10.0.23.0/24 | Area 1 |
| R2 | LoopBack0 | - | 2.2.2.2/32 | Area 0 |
| R3 | GE0/0/0 | R2 GE0/0/1 | 10.0.23.0/24 | Area 1 |
| R3 | GE0/0/1 | R4 GE0/0/0 | 10.0.34.0/24 | Area 1 |
| R3 | LoopBack0 | - | 3.3.3.3/32 | Area 1 |
| R4 | GE0/0/0 | R3 GE0/0/1 | 10.0.34.0/24 | Area 1 |
| R4 | LoopBack0 | - | 4.4.4.4/32 | Area 1 |
Router ID直接取环回口地址,四台设备分别为1.1.1.1、2.2.2.2、3.3.3.3、4.4.4.4。所有设备都运行OSPF进程1,注意进程号是本地概念,不同设备即使进程号不同也能正常建立邻居,真正决定邻居关系的是Router ID、区域号、网络类型、认证这些参数。网上经常有人问“OSP F进程号和区域号有什么区别”,这里先说清楚:进程号只在本机有意义,区域号则是两台路由器建立邻居时必须一致的参数。
1.3 实验目标拆解
这个实验跑完之后,你应该能回答下面几个问题,这也是HCIP考试常见的考核点:
- Stub区域里LSDB中哪几类LSA消失了?完全Stub又额外过滤了什么?
- NSSA区域通过什么LSA承载外部路由?ABR下发默认路由的命令是什么?
- 一台引入外部路由的ASBR,为什么能存在于NSSA却不能存在于Stub?
- 完全Stub和完全NSSA在ABR的配置命令上差在哪里?
带着这些问题去操作,比单纯照着命令敲一遍有用得多。每改一处配置,都要用display命令观察LSA和路由表的变化,实验做完,原理自然就牢固了。
2. 原理速览:LSA类型与区域边界行为
2.1 必须吃透的LSA类型
特殊区域实验本质上是LSA类型的管理实验。HCIP考试对LSA类型的要求非常明确,我先把核心的几类列出来。
- Type-1 Router LSA:每台路由器都会产生,在所属区域内泛洪,描述路由器接口的链路状态。
- Type-2 Network LSA:广播网络中由DR产生,描述该网段内有哪些路由器,只在区域内泛洪。
- Type-3 Summary LSA:ABR产生,用于通告区域间路由。ABR把某个区域内的网段汇总后,以3类LSA通告给其他区域。
- Type-4 ASBR-Summary LSA:ABR产生,用于通告ASBR的位置。其他区域的路由器要访问外部路由,必须先知道ASBR在哪,Type-4就是干这个的。
- Type-5 AS-External LSA:ASBR产生,通告OSPF域外的路由,在整个OSPF域内泛洪。
- Type-7 NSSA External LSA:NSSA区域内的ASBR产生,只在NSSA区域内泛洪,到达ABR后会被转换成Type-5 LSA并通告到其他区域。
其中Type-4和Type-5在Stub与NSSA区域中都会被过滤掉,区别在于NSSA可以用Type-7代替Type-5承载外部路由,而Stub干脆什么都不留,只保留ABR下发的一条默认路由。
2.2 Stub与NSSA的过滤规则对照
这张表建议直接抄到笔记里,考试前翻一遍:
| 比较项 | Stub区域 | NSSA区域 |
|---|---|---|
| Type-3 LSA(区域间路由) | 允许(完全Stub时除默认路由外被过滤) | 允许(完全NSSA时除默认路由外被过滤) |
| Type-4 LSA(ASBR位置信息) | 不允许 | 不允许 |
| Type-5 LSA(外部路由) | 不允许 | 不允许 |
| Type-7 LSA(NSSA外部路由) | 不允许 | 允许 |
| 区域内ASBR | 不允许存在 | 允许存在 |
| 默认路由 | ABR自动下发Type-3默认路由 | ABR默认不下发,需配置default-route-advertise产生Type-7默认路由 |
注意一个容易忽略的细节:NSSA区域里没有Type-4 LSA,那区域内的路由器怎么知道ASBR的位置?答案是Type-7 LSA的LSA头里已经携带了Advertising Router字段,也就是ASBR的Router ID,所以不需要单独的Type-4来定位ASBR。而当ABR把Type-7转换成Type-5后,在区域外还是要通过Type-4来通告这个ASBR的位置信息,不过Type-4里描述的是ABR自己,因为外部区域需要通过ABR才能到达那个ASBR。
2.3 默认路由的产生机制差异
Stub和NSSA在默认路由上的差异,是实验里最能直观感受到的部分。Stub区域因为完全隔离了外部路由,区域内路由器去往OSPF域外的唯一出口就是ABR,所以ABR配置stub后会自动向区域内下发一条Type-3默认路由。区域内路由器不需要知道外部世界任何细节,只要数据包目的地址不在本地路由表里,统统扔给默认路由指向的ABR。
NSSA不是这样。NSSA区域允许ASBR存在,外部路由可以通过Type-7在区域内自行传播,所以ABR没有理由强制给区域下发默认路由。如果你希望NSSA区域内的路由器也能访问那些没有明细的外部网段,必须在ABR上手动配置nssa default-route-advertise,这条命令会让ABR向NSSA区域内产生一条Type-7默认路由。
这个差异在实验里很容易验证:配置NSSA但不配default-route-advertise,R3的OSPF路由表里只有一条NSSA外部明细,没有默认路由,去往R1那台ASBR引入的网段是空路由,ping不通。一旦配上default-route-advertise,R3立刻出现Type-7默认路由,再去访问就能通了。很多教程直接说“NSSA会自动产生默认路由”,这个说法不准确,准确的描述是:完全NSSA模式下ABR会自动下发Type-3默认路由用于区域间互访,而NSSA区域内用于访问外部网络的Type-7默认路由,需要手动配置。
3. 一步步配置:从基础OSPF到两种特殊区域
3.1 基础OSPF配置(含外部路由引入)
先把四台设备的基础OSPF和外部路由引入都配好,这个阶段所有区域都是普通常规区域,用来作为后续改造的基准。
R1的配置:
sysname R1 # interface GigabitEthernet0/0/0 ip address 10.0.12.1 255.255.255.0 # interface LoopBack0 ip address 1.1.1.1 255.255.255.255 # ospf 1 router-id 1.1.1.1 area 0.0.0.0 network 10.0.12.0 0.0.0.255 network 1.1.1.1 0.0.0.0 # ip route-static 192.0.2.0 24 NULL0 ospf 1 import-route staticR2的配置:
sysname R2 # interface GigabitEthernet0/0/0 ip address 10.0.12.2 255.255.255.0 # interface GigabitEthernet0/0/1 ip address 10.0.23.2 255.255.255.0 # interface LoopBack0 ip address 2.2.2.2 255.255.255.255 # ospf 1 router-id 2.2.2.2 area 0.0.0.0 network 10.0.12.0 0.0.0.255 network 2.2.2.2 0.0.0.0 area 0.0.0.1 network 10.0.23.0 0.0.0.255R3的配置:
sysname R3 # interface GigabitEthernet0/0/0 ip address 10.0.23.3 255.255.255.0 # interface GigabitEthernet0/0/1 ip address 10.0.34.3 255.255.255.0 # interface LoopBack0 ip address 3.3.3.3 255.255.255.255 # ospf 1 router-id 3.3.3.3 area 0.0.0.1 network 10.0.23.0 0.0.0.255 network 10.0.34.0 0.0.0.255 network 3.3.3.3 0.0.0.0R4的配置(基础阶段先不引入外部路由,留到NSSA阶段再操作):
sysname R4 # interface GigabitEthernet0/0/0 ip address 10.0.34.4 255.255.255.0 # interface LoopBack0 ip address 4.4.4.4 255.255.255.255 # ospf 1 router-id 4.4.4.4 area 0.0.0.1 network 10.0.34.0 0.0.0.255 network 4.4.4.4 0.0.0.0配置完成后,分别在四台设备上执行display ospf peer查看邻居状态,应能看到R1-R2、R2-R3、R3-R4的邻居状态全部是Full。在R3上执行display ospf routing,应该能看到R1引入的192.0.2.0/24这条外部路由,同时还能看到1.1.1.1/32、2.2.2.2/32这些来自Area 0的3类LSA路由。这是后续改动前的基准状态。
引入静态路由时,我故意把下一跳写成NULL0,也就是黑洞接口。这样做的好处是模拟一条“存在但不指向具体物理出口”的外部网段,不会对实验环境的实际转发产生干扰,又能为OSPF提供一条可引入的外部路由。实际项目中做import-route时,静态路由的下一跳指向具体接口或对端地址,原理是一样的。
3.2 Stub区域配置与切换
基础状态确认无误后,把Area 1改造成Stub区域。注意一个铁律:同一个区域内的所有路由器必须配置相同的区域属性,否则邻居关系根本建立不起来。也就是说,R2、R3、R4三台设备在Area 1中都要配置stub,不只是R2一个ABR配就行。
在三台设备上分别执行:
ospf 1 area 0.0.0.1 stub配置完成后邻居会重新收敛,再次查看R3的LSDB,会看到Type-5 LSA和Type-4 LSA彻底消失,取而代之的是一条Sum-Net 0.0.0.0的Type-3默认路由。这条默认路由就是ABR R2自动下发到Stub区域内的。R3上再去查看OSPF路由表,192.0.2.0/24的明细条目已经不存在了,剩下的是一条默认路由,下一跳指向R2。
这个现象说明Stub区域完成了两件事:挡住了不需要的外部LSA,同时为区域内部路由器保留了唯一的出口路径。区域里的路由器虽然看不到外部明细,但去往任何外部目的地的流量都会被默认路由引导到ABR,再由ABR根据自己掌握的完整路由信息继续转发。
3.3 完全Stub进阶配置
Stub配置完成后,在R2这台ABR上再增加一条命令,把普通Stub升级成完全Stub:
ospf 1 area 0.0.0.1 stub no-summaryR3和R4不需要做任何修改,仍然保持stub配置即可。no-summary这个关键参数只加在ABR上,效果是ABR不再向区域内通告除默认路由之外的其他Type-3 LSA。
配置完再看R3的LSDB,会发现一个明显变化:之前还能看到的关于1.1.1.1/32、2.2.2.2/32等网段的Sum-Net条目全部消失,只保留了唯一一条Sum-Net 0.0.0.0默认路由。在路由表层面,R3去往任何区域外网段都只能走这条默认路由。
完全Stub的实用价值在于:区域内路由器连其他区域的明细路由都不需要知道了,只要知道自己区域的内部网段和一条默认路由。对性能较差的路由器来说,这种模式最省资源。考试里经常考“完全Stub和普通Stub的区别”,答案就是:普通Stub过滤4类和5类,完全Stub额外过滤了除默认路由以外的3类。
3.4 NSSA区域配置与外部路由引入
Stub实验做完,接下来把Area 1从Stub切换到NSSA。切换时要先在R2、R3、R4上把stub参数撤销,再配置nssa。如果直接改成nssa不撤销也是可以的,但为了逻辑清楚,我习惯于分开操作:
ospf 1 area 0.0.0.1 undo stub nssa三台设备都完成切换后,在R4上执行外部路由引入,R4就变成了NSSA区域内的ASBR:
ip route-static 198.51.100.0 24 NULL0 ospf 1 import-route static此时在R4上执行display ospf lsdb nssa,能看到一条Type-7 LSA,LinkState ID是198.51.100.0/24,AdvRouter是4.4.4.4。这正是R4自己作为NSSA ASBR产生的7类外部路由。
再到R1上看display ospf lsdb external,会发现一条Type-5 LSA,LinkState ID是198.51.100.0/24,但AdvRouter是2.2.2.2。这说明R2作为ABR,已经把NSSA区域内的Type-7 LSA转换成了Type-5 LSA,并通告到了Area 0。转换不是简单改个LSA类型,而是由ABR重新生成了一条5类LSA,所以AdvRouter变成了ABR自己的Router ID。
与此同时,R3和R4的LSDB里再也看不到R1引入的192.0.2.0/24这条5类LSA了。因为NSSA区域边界会过滤5类LSA,外部路由的明细进不来。如果此时R3上既没有配default-route-advertise,Area 1又是普通NSSA而不是完全NSSA,R3就没有任何默认路由,去往192.0.2.0/24这个网段完全是黑洞。这一点正好验证了前面原理部分的差异:NSSA不会自动给区域内下发默认路由。
要让NSSA区域内能访问外部网络,在ABR R2上执行:
ospf 1 area 0.0.0.1 nssa default-route-advertise执行后R3的LSDB里会出现一条Type-7默认路由,LinkState ID是0.0.0.0,AdvRouter是2.2.2.2,类型标记为NSSA。路由表里也多了一条默认路由,访问192.0.2.0/24就此畅通。
3.5 完全NSSA进阶配置
最后做完全NSSA。在R2的Area 1视图下追加no-summary参数:
ospf 1 area 0.0.0.1 nssa no-summary执行之后,R2作为ABR不再向Area 1通告除默认路由外的其他Type-3 LSA,同时会自动产生一条Type-3默认路由。R3的LSDB里,之前残留的那些区域间明细Sum-Net条目都消失了,但会同时看到一条Type-3默认路由和一条Type-7默认路由(如果前面配置了default-route-advertise还保留着)。
这里有个很值得观察的细节:两条默认路由同时存在时,OSPF怎么选?按照路由优先级,区域内路由最优,其次是区域间路由,最后才是外部路由。Type-3默认路由属于区域间路由,Type-7默认路由属于外部路由,所以去往同一个目的地址时,Type-3默认路由是首选。这也解释了为什么完全NSSA在没配default-route-advertise的情况下,区域内路由器也能通过ABR访问外部网络——ABR下发的Type-3默认路由已经把流量引导过去了。
完全NSSA和完全Stub的配置差异就体现在这里:完全Stub在ABR上用stub no-summary,完全NSSA在ABR上用nssa no-summary;区域内其他路由器分别用stub和nssa。两条命令的作用都是过滤除默认路由以外的3类LSA,只是所属区域类型不同。
4. 验证方法与命令回显分析
4.1 通过display命令观察LSDB与路由表
实验过程中,我最常用的验证命令有这么几条:
display ospf peer:查看邻居状态是否Full。display ospf lsdb:查看LSDB整体情况。display ospf lsdb external:单独查看Type-5 LSA。display ospf lsdb nssa:单独查看Type-7 LSA。display ospf lsdb summary:单独查看Type-3 LSA。display ospf routing:查看OSPF路由表。display ip routing-table:查看全局路由表,确认默认路由是否落地。
以完全Stub阶段为例,R3上执行display ospf lsdb,典型输出大概是这样的:
OSPF Process 1 with Router ID 3.3.3.3 Area: 0.0.0.1 Link State Database Type LinkState ID AdvRouter Age Len Sequence Metric Router 3.3.3.3 3.3.3.3 189 48 80000005 1 Router 2.2.2.2 2.2.2.2 189 60 80000005 1 Router 4.4.4.4 4.4.4.4 188 48 80000005 1 Network 10.0.34.3 3.3.3.3 189 32 80000003 0 Network 10.0.23.2 2.2.2.2 189 32 80000003 0 Sum-Net 0.0.0.0 2.2.2.2 189 28 80000001 0从这段回显能看到,LSDB里只有Router、Network、Sum-Net这三种类型,完全没有External和ASBR条目,而且Sum-Net只有0.0.0.0这一条。这就是完全Stub区域LSDB最典型的形态。
4.2 7类LSA到5类LSA的转换观测
NSSA阶段最值得做的验证,是同时观察R4和R1的LSDB来理解ABR的转换行为。
在R4上执行display ospf lsdb nssa:
OSPF Process 1 with Router ID 4.4.4.4 Area: 0.0.0.1 Link State Database Type LinkState ID AdvRouter Age Len Sequence Metric NSSA 198.51.100.0 4.4.4.4 24 36 80000001 1在R1上执行display ospf lsdb external:
OSPF Process 1 with Router ID 1.1.1.1 Area: 0.0.0.0 Link State Database Type LinkState ID AdvRouter Age Len Sequence Metric External 198.51.100.0 2.2.2.2 20 36 80000001 1对比这两段输出可以得出三个结论:第一,7类LSA和5类LSA描述的网段是同一个198.51.100.0/24;第二,7类LSA的AdvRouter是R4,5类LSA的AdvRouter变成了R2;第三,Type-5 LSA只在Area 0中出现,没有进入Area 1。这个转换就是ABR在NSSA区域边界做的事情。
4.3 Stub与NSSA路由表差异对比
在R3上观察不同阶段的OSPF路由表,可以把Stub、NSSA、NSSA+默认路由、完全NSSA这几种情况放到一起对照。下面这张表是我实验时整理出来的:
| 验证项 | 完全Stub | 普通NSSA | NSSA+default-route-advertise | 完全NSSA+default-route-advertise |
|---|---|---|---|---|
| LSDB中4/5类LSA | 无 | 无 | 无 | 无 |
| LSDB中7类LSA | 无 | 有(R4产生) | 有 | 有 |
| 区域内是否有默认路由 | 有(Type-3) | 无 | 有(Type-7) | 有(Type-3+Type-7) |
| 能否学到192.0.2.0/24明细 | 否 | 否 | 否 | 否 |
| 访问192.0.2.0/24 | 通,走默认 | 不通 | 通,走默认 | 通,走Type-3默认 |
这个对比非常直观地解释了为什么NSSA不能完全替代Stub:NSSA引入外部路由需要7类LSA和ABR转换,配置上更复杂;而Stub结构简单、默认路由自动下发,适合纯粹的末端区域。实际工程里,如果某个区域既没有ASBR需求,又不关心外部明细,选Stub就够了;只有区域边界存在外部路由引入需求时,才需要上NSSA。
5. 排错经验与考试高频考点
5.1 常见配置错误与症状
实验过程中最容易踩的坑,我整理成了一张速查表:
| 错误操作 | 现象 | 原因与解决方法 |
|---|---|---|
| 只给ABR配置stub,区域内其他路由器没配 | 邻居状态卡在ExStart/Exchange,无法Full | Stub属性必须区域内所有路由器一致,所有设备都要配置 |
| Stub区域内的ASBR引入外部路由 | 外部路由学不到,或邻居反复震荡 | Stub区域不允许ASBR存在,必须改用NSSA |
| NSSA区域不配default-route-advertise还指望有默认路由 | 区域内路由器无法访问外部网段 | NSSA默认不下发默认路由,需在ABR上手动配置 |
| 普通NSSA和完全NSSA的配置位置搞混 | 3类LSA过滤不符合预期 | no-summary参数只在ABR上配置,区域内其他路由器只配nssa |
| 区域类型切换后不重置OSPF进程 | LSDB里残留旧LSA,验证结果不准确 | 切换后执行reset ospf process,让协议重新收敛 |
| 外部路由引入后忘记检查路由是否可达 | 路由表里有OSPF外部路由,但ping不通 | 确认静态路由的下一跳配置正确,NULL0黑洞路由只能用于模拟网段,实际项目要指向真实出口或对端地址 |
这里特别强调一下区域类型切换后的操作。我从Stub切到NSSA时,一开始没有重置OSPF进程,R3的LSDB里残留了一堆旧LSA,害我一度以为NSSA区域没有过滤5类LSA。后来在每台设备上执行reset ospf process,逼着所有路由器重新建立邻居关系并重新同步LSDB,观察结果一下子就干净了。做这类实验,改完配置建议养成“重置进程再验证”的习惯。
5.2 华为设备实现与协议标准的差异点
华为设备在特殊区域的实现细节上,有几个地方和纯标准RFC行为不完全一致,这些差异点恰好也是考试喜欢出题的地方。
第一,完全Stub和完全NSSA中ABR自动产生的默认路由,严格来说属于厂商增强行为。RFC里对完全Stub的建议是ABR向区域内通告一条默认路由,但具体实现方式各家略有不同。华为设备在配置stub no-summary或nssa no-summary后,会自动向区域内下发Type-3默认路由,不需要手写一条静态默认路由再通过network宣告进OSPF。这个特性让配置过程简单很多。
第二,华为的nssa default-route-advertise命令在ABR上会产生Type-7默认路由,且这条默认路由不会再被该ABR转换回Type-5。原因是华为设备避免环路的策略:ABR自己产生并注入NSSA区域的Type-7默认路由,本身就是“区域内部件”,不需要再转成5类通告回骨干区域。如果你在考试里遇到这个场景,要记得默认路由的LSA类型是Type-7,而不是Type-5。
第三,关于Router ID在转换中的变化:R4产生Type-7 LSA后,ABR R2转换Type-5 LSA时,Type-5的AdvRouter字段是R2,不是R4。很多刚接触NSSA的朋友会误以为“转换就是把LSA类型字段改掉、其他信息原封不动”,实际上ABR是重新生成一条新的5类LSA,通告者自然变成ABR自己。理解了这个机制,才算真正理解ABR在特殊区域边界承担的角色。
5.3 实验心得与答题建议
备考HCIP的时候,我逐步养成了一个比较高效的学习方式:每做一个实验,都坚持“先看现象、再倒推原理”。特殊区域这个实验尤其适合这种学法。不要上来就把状态表背下来,而是先在eNSP里把Stub和NSSA配置跑通,用display观察LSA的变化,然后在脑子里把“为什么ABR要这么做”想明白。一旦理解了设计动机,配置命令和考试题目自然就不难了。
考试答题有几个判断技巧可以分享:题目问你某个区域能不能引入外部路由,先看这个区域是什么类型,如果是Stub,直接排除;如果再问你外部路由以什么LSA类型存在,NSSA就是Type-7,进入骨干区域变成Type-5。题目如果涉及默认路由,看到“自动下发”这类字眼,优先想到Stub和完全NSSA的Type-3默认路由;看到default-route-advertise,直接对应NSSA的Type-7默认路由。把这些一一对应起来,选择题基本不会错。
写在最后
做完这个实验,我对OSPF特殊区域的最大感受是:区域类型设计不是为了增加配置复杂度,而是为了给不同类型的网络边界提供合适的信息隔离手段。Stub适合纯粹的末端区域,结构简单、开销低;NSSA适合既要隔离外部明细又需要本地引入外部路由的折中场景。两者没有绝对的好坏之分,关键看区域内部的实际需求。
最后再分享一个我踩过几次坑后养成的小习惯:每次对照实验做验证时,不要只盯着一台设备的输出,要同时在ABR和区域内部路由器上分别查看LSDB。ABR视角能看到区域间和区域外的信息,内部路由器视角能看到区域内的信息,两边一对比,特殊区域到底过滤了什么、允许了什么、转换了什么,就一目了然了。这个习惯对理解OSPF其他高级特性同样适用。