ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

OSPF特殊区域实战:Stub与NSSA配置对比及HCIP备考指南

OSPF特殊区域实战:Stub与NSSA配置对比及HCIP备考指南 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 1R3和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这类命名。地址规划如下表设备接口对端网段所属区域R1GE0/0/0R2 GE0/0/010.0.12.0/24Area 0R1LoopBack0-1.1.1.1/32Area 0R2GE0/0/0R1 GE0/0/010.0.12.0/24Area 0R2GE0/0/1R3 GE0/0/010.0.23.0/24Area 1R2LoopBack0-2.2.2.2/32Area 0R3GE0/0/0R2 GE0/0/110.0.23.0/24Area 1R3GE0/0/1R4 GE0/0/010.0.34.0/24Area 1R3LoopBack0-3.3.3.3/32Area 1R4GE0/0/0R3 GE0/0/110.0.34.0/24Area 1R4LoopBack0-4.4.4.4/32Area 1Router 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 LSAABR产生用于通告区域间路由。ABR把某个区域内的网段汇总后以3类LSA通告给其他区域。Type-4 ASBR-Summary LSAABR产生用于通告ASBR的位置。其他区域的路由器要访问外部路由必须先知道ASBR在哪Type-4就是干这个的。Type-5 AS-External LSAASBR产生通告OSPF域外的路由在整个OSPF域内泛洪。Type-7 NSSA External LSANSSA区域内的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 LSAASBR位置信息不允许不允许Type-5 LSA外部路由不允许不允许Type-7 LSANSSA外部路由不允许允许区域内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-advertiseR3的OSPF路由表里只有一条NSSA外部明细没有默认路由去往R1那台ASBR引入的网段是空路由ping不通。一旦配上default-route-advertiseR3立刻出现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升级成完全Stubospf 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区域内的ASBRip route-static 198.51.100.0 24 NULL0 ospf 1 import-route static此时在R4上执行display ospf lsdb nssa能看到一条Type-7 LSALinkState ID是198.51.100.0/24AdvRouter是4.4.4.4。这正是R4自己作为NSSA ASBR产生的7类外部路由。再到R1上看display ospf lsdb external会发现一条Type-5 LSALinkState 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-advertiseArea 1又是普通NSSA而不是完全NSSAR3就没有任何默认路由去往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.0AdvRouter是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 nssaOSPF 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 externalOSPF 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是R45类LSA的AdvRouter变成了R2第三Type-5 LSA只在Area 0中出现没有进入Area 1。这个转换就是ABR在NSSA区域边界做的事情。4.3 Stub与NSSA路由表差异对比在R3上观察不同阶段的OSPF路由表可以把Stub、NSSA、NSSA默认路由、完全NSSA这几种情况放到一起对照。下面这张表是我实验时整理出来的验证项完全Stub普通NSSANSSAdefault-route-advertise完全NSSAdefault-route-advertiseLSDB中4/5类LSA无无无无LSDB中7类LSA无有R4产生有有区域内是否有默认路由有Type-3无有Type-7有Type-3Type-7能否学到192.0.2.0/24明细否否否否访问192.0.2.0/24通走默认不通通走默认通走Type-3默认这个对比非常直观地解释了为什么NSSA不能完全替代StubNSSA引入外部路由需要7类LSA和ABR转换配置上更复杂而Stub结构简单、默认路由自动下发适合纯粹的末端区域。实际工程里如果某个区域既没有ASBR需求又不关心外部明细选Stub就够了只有区域边界存在外部路由引入需求时才需要上NSSA。5. 排错经验与考试高频考点5.1 常见配置错误与症状实验过程中最容易踩的坑我整理成了一张速查表错误操作现象原因与解决方法只给ABR配置stub区域内其他路由器没配邻居状态卡在ExStart/Exchange无法FullStub属性必须区域内所有路由器一致所有设备都要配置Stub区域内的ASBR引入外部路由外部路由学不到或邻居反复震荡Stub区域不允许ASBR存在必须改用NSSANSSA区域不配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其他高级特性同样适用。
返回列表