资讯动态

OSPF特殊区域与路由汇总实验:Stub、NSSA、LSA类型全面解析

发布时间:2026/10/22 15:28:06 来源:尧图企业网站定制
1. 实验背景与整体设计思路OSPF作为链路状态路由协议里应用最广的一种只要网络规模一上来LSDB的规模、SPF计算频率、路由表条目数就会成为压在心头的三座大山。很多朋友学完基础配置之后单区域跑通了邻居也Full了就以为OSPF已经拿下结果一到多区域、外部路由引入、大规模组网场景就懵了。这个实验的核心目的就是把OSPF的特殊区域Stub、Totally Stub、NSSA、Totally NSSA和路由汇总这两类优化手段放在同一个拓扑里对比验证同时把LSA类型彻底梳理清楚。我个人的习惯是学一个协议不能只记命令得先搞清楚它为什么设计成这样。OSPF的特殊区域本质上是一种“用信息换资源”的妥协方案边界路由器把外部或区域间的路由信息压缩成一条默认路由丢进特殊区域区域内的路由器就不用维护那么多LSA了SPF计算量也下来了。代价是区域内的路由器失去了路径选择的精细度只能跟着默认路由走。这个取舍在什么场景下划算就是实验要回答的问题。整个实验我设计成一条主线先搭一个标准的多区域OSPF拓扑引入外部路由观察普通区域的LSDB和路由表长什么样然后逐个把区域改造成Stub、Totally Stub、NSSA、Totally NSSA每改一次就抓一次LSDB和路由表做对比最后在ABR和ASBR上做路由汇总观察汇总前后的变化。这样一条线走下来特殊区域和汇总的效果就非常直观了。拓扑设计上我用四台路由器串成一条链中间两台做ABR两端一台在普通区域、一台在外部。具体来说R1在Area 1R2做Area 1和Area 0的ABRR3做Area 0和Area 2的ABRR4在Area 2并且作为ASBR引入外部路由。这样Area 1可以做成Stub或Totally StubArea 2可以做成NSSA或Totally NSSA一台设备上能同时观察两种特殊区域的行为。链路地址我统一用10.0.x.0/24的规划Loopback用1.1.1.x/32外部路由用192.168.x.0/24模拟方便后面做汇总。提示eNSP里做OSPF特殊区域实验建议先把所有接口的OSPF配置和邻居关系确认一遍再动特殊区域。因为特殊区域配置一旦下发邻居关系会重建如果基础配置有问题排查起来会混在一起分不清是基础问题还是特殊区域的问题。关于工具选型eNSP虽然是个模拟器但对OSPF的LSA类型、特殊区域支持得相当完整LSDB抓包和display命令的输出跟真机基本一致。唯一需要注意的是eNSP的OSPF进程在某些版本下对NSSA的翻译行为模拟得不够精确比如Type 7转Type 5的P-bit位处理偶尔会有偏差。所以实验结论以eNSP为准但真机部署前最好在物理设备上再验证一遍关键行为。2. OSPF特殊区域的核心原理拆解2.1 Stub区域到底“挡”掉了什么Stub区域的设计目标很明确不让Type 5 LSA外部路由进入这个区域。为什么因为外部路由的数量在大规模网络里可能是几千上万条如果每个区域内的路由器都要维护这些LSA并参与SPF计算资源消耗非常可观。Stub区域的做法是ABR不把Type 5 LSA泛洪进Stub区域而是自动生成一条Type 3 LSA描述的默认路由0.0.0.0/0送进去。区域内的路由器看到这条默认路由就知道“去外部世界走ABR就行”不需要知道具体有哪些外部网段。这里有个关键细节Stub区域的ABR会自动产生默认路由但这个行为依赖于ABR在Area 0里有Full的邻居。如果ABR在骨干区域没有邻居它不会生成默认路由Stub区域内的路由器就会失去外部可达性。这个坑我在实际项目里踩过当时Area 0的链路闪断了一下Stub区域内的设备直接丢了外部路由排查了半天才发现是ABR的默认路由生成条件没满足。Stub区域的另一个约束是不能有ASBR。因为ASBR要引入外部路由产生Type 5 LSA而Stub区域明确不允许Type 5 LSA存在。所以如果一个区域里已经有路由器在做外部引入就不能把它配成Stub否则邻居关系会直接卡在ExStart或者直接Down掉。eNSP里如果强行配置OSPF邻居会反复重建日志里能看到“Mismatched area type”之类的提示。2.2 Totally Stub更激进的“一刀切”Totally Stub区域在Stub的基础上更进一步不仅挡掉Type 5 LSA连Type 3 LSA区域间路由也不让进。区域内的路由器只能看到一条默认路由连其他区域的网段信息都看不到。这个做法听起来很极端但在某些场景下非常合理——比如一个纯接入区域里面的路由器只需要知道“出去走ABR”不需要知道网络里还有哪些其他区域。配置上Totally Stub只需要在ABR上把Stub区域的no-summary参数加上就行。区域内的路由器配置跟Stub一样不需要额外改动。这个细节很多人会搞混以为Totally Stub需要在区域内路由器上也配什么特殊命令其实不用区域类型是由ABR决定的区域内路由器只需要配成Stub就能配合。Totally Stub的代价是路径选择完全依赖默认路由。如果区域内有两条出口路径一条快一条慢Totally Stub区域内的路由器没法根据具体目的网段做选择只能按默认路由的度量值走。所以在有冗余出口且需要精细流量调度的场景下Totally Stub要慎用。2.3 NSSAStub和外部引入的折中方案NSSANot-So-Stubby Area解决的是这样一个矛盾一个区域既想减少外部LSA的数量又需要引入一些外部路由。Stub区域不允许ASBR存在但NSSA允许。NSSA里的ASBR引入外部路由时产生的是Type 7 LSA而不是Type 5 LSA。Type 7 LSA只能在NSSA区域内泛洪到了NSSA的ABR那里ABR会把Type 7翻译成Type 5再送到其他区域。Type 7转Type 5的过程有几个关键点。首先只有P-bit位为1的Type 7 LSA才会被翻译。P-bit位在ASBR产生Type 7时默认置1表示“这个LSA需要被翻译”。如果ABR上配置了no-translate或者P-bit被清零就不会翻译。其次翻译后的Type 5 LSA的Advertising Router会变成ABR的Router ID而不是原来ASBR的Router ID。这个变化会影响路由选择的下一跳计算排查路由问题时要注意。NSSA区域内的路由器会收到ABR产生的默认路由但这个默认路由是通过Type 7 LSA产生的不是Type 3。这是NSSA和Stub的一个显著区别。Stub的默认路由是Type 3 LSANSSA的默认路由是Type 7 LSA。抓LSDB的时候一眼就能看出来。2.4 Totally NSSANSSA的加强版Totally NSSA在NSSA基础上再挡掉Type 3 LSA区域内的路由器只能看到一条默认路由和本区域的路由。配置上跟Totally Stub类似在ABR的NSSA区域配置里加no-summary。这个区域类型适合那种既需要引入少量外部路由又不需要知道其他区域明细的场景。四种特殊区域的对比可以用一张表说清楚区域类型允许Type 3允许Type 4允许Type 5允许Type 7默认路由来源普通区域是是是否无Stub是否否否ABR产生Type 3Totally Stub否否否否ABR产生Type 3NSSA是否否是ABR产生Type 7Totally NSSA否否否是ABR产生Type 7这张表建议背下来实际排查问题时对着看能快速定位是哪种LSA不该出现。3. LSA类型全面梳理与识别技巧3.1 六种常见LSA的核心特征OSPF的LSA类型是理解特殊区域的基础我把实际工作中最常打交道的六种LSA整理一下。Type 1是Router LSA每台路由器都会产生描述自己的接口和链路状态只在所属区域内泛洪。Type 2是Network LSA由DR产生描述广播网段上的路由器列表也只在区域内泛洪。Type 3是Summary LSA由ABR产生描述区域间的网段泛洪范围是除了产生它的区域之外的其他区域。Type 4是ASBR Summary LSA也是ABR产生用来描述ASBR的位置。注意Type 4描述的是“ASBR在哪里”不是“ASBR引入了什么路由”。Type 5是ASBR Summary LSA由ASBR产生描述外部引入的路由泛洪范围是整个OSPF域除了Stub和NSSA区域。Type 7是NSSA External LSA由NSSA区域内的ASBR产生只在NSSA区域内泛洪到了ABR被翻译成Type 5。抓LSDB的时候display ospf lsdb命令会列出所有LSA每个LSA前面的Type字段就是类型编号。我习惯用display ospf lsdb router、display ospf lsdb summary这样按类型过滤输出更清晰。eNSP里还支持display ospf lsdb brief只显示摘要信息快速浏览的时候很方便。3.2 特殊区域对LSA的过滤规则特殊区域的核心机制就是过滤特定类型的LSA。Stub区域过滤Type 4和Type 5Totally Stub额外过滤Type 3NSSA过滤Type 4和Type 5但允许Type 7Totally NSSA额外过滤Type 3。这个过滤是在ABR上执行的ABR不会把这些LSA泛洪进特殊区域。这里有个容易混淆的点Type 4 LSA在Stub和NSSA区域都被过滤了但原因不同。Stub区域没有ASBR所以不需要Type 4NSSA区域虽然有ASBR但ASBR产生的Type 7 LSA已经包含了外部路由信息不需要Type 4来描述ASBR位置。所以两种区域都过滤Type 4但逻辑上是有区别的。验证过滤效果的方法很简单在特殊区域内的路由器上执行display ospf lsdb看输出里有没有对应的LSA类型。如果Stub区域里出现了Type 5 LSA那说明配置有问题要么ABR没配Stub要么区域内有路由器没配Stub导致邻居关系异常。3.3 LSA年龄、序列号与校验和抓LSDB的时候除了看类型还要关注LSA的Age、Seq#和Checksum三个字段。Age是LSA的存活时间单位是秒最大3600秒。如果某个LSA的Age接近3600说明它快要被老化删除了可能是产生它的路由器出了问题。Seq#是序列号每次LSA更新序列号加1如果看到同一个LSA有两个不同序列号的实例说明网络里有LSA冲突通常是路由器ID重复导致的。Checksum是校验和用来验证LSA内容的完整性。如果Checksum错误LSA会被丢弃。实际排查中Checksum错误比较少见但一旦出现通常是软件bug或者内存问题。eNSP里偶尔会出现Checksum异常的LSA重启OSPF进程就能恢复不用太紧张。注意在特殊区域里抓LSDB时如果发现默认路由的LSA类型跟预期不符先检查ABR的配置。Stub区域的默认路由应该是Type 3NSSA区域应该是Type 7。如果Stub区域里出现了Type 7的默认路由说明区域类型配置错了可能配成了NSSA。4. 实验拓扑搭建与基础配置4.1 拓扑规划与地址分配实验拓扑我用四台路由器线性连接具体规划如下R1的Loopback0为1.1.1.1/32属于Area 1R1与R2之间的链路为10.0.12.0/24属于Area 1。R2的Loopback0为2.2.2.2/32属于Area 0R2与R3之间的链路为10.0.23.0/24属于Area 0。R3的Loopback0为3.3.3.3/32属于Area 0R3与R4之间的链路为10.0.34.0/24属于Area 2。R4的Loopback0为4.4.4.4/32属于Area 2R4作为ASBR引入外部路由192.168.1.0/24、192.168.2.0/24、192.168.3.0/24和192.168.4.0/24。R2是Area 1和Area 0的ABRR3是Area 0和Area 2的ABR。Area 1可以配置成Stub或Totally StubArea 2可以配置成NSSA或Totally NSSA。这样一台设备上能同时观察两种特殊区域的行为对比起来很方便。地址规划的原则是链路地址用10.0.x.0/24x对应两台路由器的编号Loopback用x.x.x.x/32x对应路由器编号外部路由用192.168.x.0/24x从1开始递增。这个规划方式清晰好记后面做汇总的时候也方便计算。4.2 基础OSPF配置与邻居验证基础配置我按顺序来先配接口地址再配OSPF进程最后验证邻居关系。R1的配置如下sysname R1 interface LoopBack0 ip address 1.1.1.1 255.255.255.255 interface GigabitEthernet0/0/0 ip address 10.0.12.1 255.255.255.0 ospf 1 router-id 1.1.1.1 area 0.0.0.1 network 1.1.1.1 0.0.0.0 network 10.0.12.0 0.0.0.255R2的配置sysname R2 interface LoopBack0 ip address 2.2.2.2 255.255.255.255 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 ospf 1 router-id 2.2.2.2 area 0.0.0.1 network 10.0.12.0 0.0.0.255 area 0.0.0.0 network 2.2.2.2 0.0.0.0 network 10.0.23.0 0.0.0.255R3和R4的配置类似R3的router-id是3.3.3.3R4的router-id是4.4.4.4。R4上还要加外部路由引入ospf 1 router-id 4.4.4.4 area 0.0.0.2 network 4.4.4.4 0.0.0.0 network 10.0.34.0 0.0.0.255 import-route static ip route-static 192.168.1.0 255.255.255.0 NULL0 ip route-static 192.168.2.0 255.255.255.0 NULL0 ip route-static 192.168.3.0 255.255.255.0 NULL0 ip route-static 192.168.4.0 255.255.255.0 NULL0配置完成后在R1上执行display ospf peer brief应该能看到与R2的邻居关系是Full。在R2上应该能看到两个邻居分别是R1和R3。如果邻居关系卡在2-Way或者ExStart先检查接口的MTU和网络类型是否一致eNSP里默认的MTU是1500一般不会有问题但网络类型如果一边是Broadcast一边是P2P就会卡住。4.3 验证普通区域的LSDB和路由表在改特殊区域之前先在R1上抓一次LSDB和路由表作为基准。display ospf lsdb应该能看到Type 1、Type 2、Type 3、Type 4和Type 5的LSA。Type 5 LSA应该有四条对应R4引入的四个外部网段。路由表里应该能看到192.168.1.0/24到192.168.4.0/24四条外部路由下一跳指向R2。在R4上抓LSDB应该能看到Type 1、Type 2、Type 3和Type 5。注意R4作为ASBR自己产生的Type 5 LSA也会出现在自己的LSDB里。Type 4 LSA在R4上应该看不到因为Type 4是ABR产生的用来描述ASBR位置R4自己就是ASBR不需要Type 4来描述自己。这个基准数据很重要后面每改一次特殊区域都跟这个基准对比就能清楚看到哪些LSA被过滤了哪些路由消失了。5. 四种特殊区域配置与效果验证5.1 Stub区域配置与LSDB变化把Area 1配成Stub区域。R1和R2都要配因为Stub区域的所有路由器都必须配置stub参数否则邻居关系建立不起来。R1的配置ospf 1 area 0.0.0.1 stubR2的配置ospf 1 area 0.0.0.1 stub配置完成后邻居关系会重建等邻居重新Full之后在R1上执行display ospf lsdb。这时候应该看不到Type 4和Type 5的LSA了Type 3 LSA里会多出一条默认路由0.0.0.0/0这是R2产生的。路由表里四条外部路由消失了取而代之的是一条默认路由下一跳指向R2。在R2上抓LSDBType 5 LSA还在因为R2是ABR它需要知道外部路由才能正确转发。但R2不会把Type 5 LSA泛洪进Area 1。这个行为验证了Stub区域的核心机制ABR过滤Type 5产生默认路由。提示Stub区域配置后如果R1上还能看到Type 5 LSA先检查R2的配置。R2的Area 1必须配stub如果R2没配R1配了邻居关系会卡在ExStart不会Full。如果R2配了但R1没配同样邻居关系建立不起来。两边必须一致。5.2 Totally Stub区域配置与效果对比在Stub的基础上把R2的Area 1改成Totally Stub。只需要在R2的Area 1配置里加no-summaryospf 1 area 0.0.0.1 stub no-summaryR1的配置不用改还是stub。配置完成后在R1上抓LSDB应该只能看到Type 1和Type 2的LSAType 3、Type 4、Type 5全部消失。路由表里只剩一条默认路由和本区域的直连路由。这就是Totally Stub的效果区域内的路由器完全不知道其他区域的存在所有跨区域流量都走默认路由。对比Stub和Totally Stub的LSDB区别就在Type 3 LSA。Stub区域里还有Type 3 LSA描述其他区域的网段Totally Stub里这些都没了。这个对比很直观建议两种配置都做一遍抓图保存以后忘了可以翻出来看。5.3 NSSA区域配置与Type 7 LSA观察把Area 2配成NSSA。R3和R4都要配nssa参数。R3的配置ospf 1 area 0.0.0.2 nssaR4的配置ospf 1 area 0.0.0.2 nssa配置完成后在R4上抓LSDB应该能看到Type 7 LSA这是R4自己产生的描述它引入的四个外部网段。Type 5 LSA在R4上应该看不到了因为NSSA区域不允许Type 5 LSA存在。在R3上抓LSDB应该能看到Type 7 LSA同时R3会把Type 7翻译成Type 5送到Area 0。所以在R2上抓LSDB应该能看到Type 5 LSA但看不到Type 7 LSA因为Type 7只在NSSA区域内泛洪。这里有个细节R3上应该能看到两条默认路由一条是Type 7的默认路由R3自己产生的送给NSSA区域一条是Type 3的默认路由如果Area 0里有其他ABR产生默认路由的话。在咱们这个拓扑里Area 0没有其他ABR所以R3上只有Type 7的默认路由。验证Type 7转Type 5的翻译行为可以在R3上执行display ospf lsdb nssa查看Type 7 LSA再执行display ospf lsdb ase查看Type 5 LSA。如果Type 5 LSA的Advertising Router是R3的Router ID3.3.3.3说明翻译成功。如果Type 5 LSA的Advertising Router是R4的Router ID4.4.4.4那说明翻译没生效可能是P-bit位被清零了。5.4 Totally NSSA配置与最终对比在NSSA基础上把R3的Area 2改成Totally NSSA加no-summaryospf 1 area 0.0.0.2 nssa no-summaryR4的配置不用改还是nssa。配置完成后在R4上抓LSDB应该只能看到Type 1、Type 2和Type 7的LSAType 3、Type 4、Type 5全部消失。路由表里应该有一条Type 7的默认路由和四条外部路由通过Type 7 LSA学到的。注意Totally NSSA区域内的路由器还是能看到外部路由的明细因为Type 7 LSA没有被过滤只是Type 3 LSA被过滤了。这个行为跟Totally Stub不同。Totally Stub区域内的路由器完全看不到外部路由只有一条默认路由。Totally NSSA区域内的路由器能看到本区域ASBR引入的外部路由明细但看不到其他区域的路由明细。这个区别在实际选型时很关键如果区域内有服务器需要访问特定的外部网段且需要精细路径选择Totally NSSA比Totally Stub更合适。四种特殊区域都配完之后建议做一张对比表把每种区域下R1或R4的LSDB类型和路由表条目列出来。这个表就是实验的核心产出以后遇到实际项目直接查表就行。6. OSPF路由汇总配置与效果验证6.1 区域间路由汇总在ABR上的配置区域间路由汇总在ABR上配置把某个区域的Type 3 LSA合并成一条。在咱们的拓扑里R2是Area 1的ABR可以把Area 1的Loopback路由汇总。但Area 1只有一条1.1.1.1/32汇总意义不大。更有意义的是在R3上汇总Area 2的路由因为Area 2有R4的Loopback和四条外部路由。不过区域间汇总只能汇总Type 3 LSA也就是ABR自己产生的描述区域间网段的LSA。R4引入的外部路由是Type 5 LSA不能用区域间汇总。所以区域间汇总的配置对象是R3上关于Area 2的Type 3 LSA。R3的Area 2里只有4.4.4.4/32这一条网段汇总成4.4.4.0/24ospf 1 area 0.0.0.2 abr-summary 4.4.4.0 255.255.255.0配置完成后在R2上抓LSDB应该看到4.4.4.0/24的Type 3 LSA而不是4.4.4.4/32。路由表里也变成4.4.4.0/24。这个汇总的效果是把多条明细路由合并成一条减少LSDB和路由表的条目数。6.2 外部路由汇总在ASBR上的配置外部路由汇总在ASBR上配置把Type 5 LSA合并。R4是ASBR引入了192.168.1.0/24到192.168.4.0/24四条外部路由。这四条路由的二进制前缀是192.168.1.0/24 11000000.10101000.00000001.00000000192.168.2.0/24 11000000.10101000.00000010.00000000192.168.3.0/24 11000000.10101000.00000011.00000000192.168.4.0/24 11000000.10101000.00000100.00000000前22位相同第23位开始不同。所以汇总成192.168.0.0/22可以覆盖这四条路由。但192.168.0.0/22的范围是192.168.0.0到192.168.3.255不包括192.168.4.0/24。要覆盖四条需要汇总成192.168.0.0/21范围是192.168.0.0到192.168.7.255。这个汇总范围偏大会引入一些不存在的网段。实际项目中如果外部路由不是连续分配的汇总要谨慎避免引入黑洞路由。在R4上配置外部路由汇总ospf 1 asbr-summary 192.168.0.0 255.255.248.0配置完成后在R2上抓LSDB应该看到一条192.168.0.0/21的Type 5 LSA而不是四条/24的LSA。路由表里也变成一条192.168.0.0/21。这个汇总的效果非常明显四条变一条。注意外部路由汇总的掩码计算要仔细。如果汇总范围覆盖了不存在的网段流量到了ASBR会被丢弃形成黑洞。建议汇总前先用计算器把二进制前缀算清楚确保汇总范围精确覆盖所有明细路由不多不少。6.3 汇总前后的LSDB与路由表对比汇总配置完成后做一次完整的对比。在R2上执行display ospf lsdb汇总前应该看到四条Type 5 LSA192.168.1.0/24到192.168.4.0/24和一条Type 3 LSA4.4.4.4/32。汇总后应该看到一条Type 5 LSA192.168.0.0/21和一条Type 3 LSA4.4.4.0/24。LSDB条目数从五条降到两条效果很明显。路由表的变化同样明显。汇总前R2的路由表里有四条外部路由和一条区域间路由汇总后变成一条外部路由和一条区域间路由。路由表条目数减少查表速度提升内存占用下降。在大规模网络里这个优化效果会放大很多倍。不过汇总也有代价。汇总后R2不知道192.168.1.0/24具体在哪个方向只知道192.168.0.0/21整体走R4。如果R4后面有多个下一跳R2没法做精细的负载分担。所以汇总适合在路由条目多、路径选择要求不高的场景下使用。如果需要对每条外部路由做精细调度就不能汇总。7. 常见问题排查与避坑经验7.1 特殊区域邻居关系建立失败特殊区域配置后邻居关系建立失败是最常见的问题。原因通常有三种一是区域类型不一致一边配了stub一边没配或者一边配了stub一边配了nssa二是区域号不匹配两边接口的area id不一致三是Router ID冲突两台路由器用了同一个Router ID。排查方法先看display ospf peer的输出如果邻居状态卡在ExStart通常是MTU不匹配或者Router ID冲突。如果卡在2-Way通常是网络类型不匹配或者DR选举问题。如果直接Down看display ospf error的输出里面有具体的错误原因。eNSP里还可以开debugging ospf packet hello看Hello包里的区域类型字段是否一致。我踩过的一个坑是在Stub区域里配了stub no-summary但区域内的路由器只配了stub结果邻居关系正常但区域内路由器学不到默认路由。后来发现是ABR上的no-summary导致ABR不产生Type 3的默认路由而区域内路由器又需要Type 3默认路由才能访问外部。解决办法是ABR上配no-summary的同时手动配一条默认路由重分布进OSPF或者把区域内路由器也改成Totally Stub的配置。这个坑在eNSP里不容易发现因为邻居关系是正常的只是路由学不到。7.2 Type 7 LSA不翻译的排查NSSA区域里Type 7 LSA不翻译成Type 5通常有三个原因P-bit位为0、ABR上配了no-translate、或者Type 7 LSA的Forwarding Address不可达。P-bit位为0的情况比较少见通常是ASBR配置了nssa suppress-fa或者类似命令。no-translate是ABR上的配置如果配了nssa no-translateABR就不会翻译Type 7。排查方法在ABR上执行display ospf lsdb nssa看Type 7 LSA的P-bit位。如果P-bit是0检查ASBR的配置。如果P-bit是1但没翻译检查ABR的配置里有没有no-translate。如果配置都正常但还是不翻译检查Forwarding Address是否可达。Forwarding Address通常是ASBR引入外部路由的下一跳地址如果这个地址在NSSA区域内不可达ABR不会翻译。eNSP里有个已知问题某些版本的eNSP在NSSA翻译时Forwarding Address的处理跟真机不一致可能导致翻译失败。如果排查了一圈配置都没问题可以尝试重启OSPF进程或者换一个eNSP版本。7.3 汇总路由黑洞的预防汇总路由黑洞是另一个常见问题。汇总后如果汇总范围覆盖了不存在的网段流量到了ASBR会被丢弃。预防方法是汇总前仔细计算掩码确保汇总范围精确覆盖所有明细路由。如果明细路由不是连续分配的可以考虑多条汇总路由而不是一条大范围汇总。排查汇总黑洞的方法在ASBR上执行display ip routing-table看汇总路由的下一跳是否可达。如果下一跳是NULL0说明是黑洞路由流量会被丢弃。eNSP里可以用ping命令测试汇总范围内的一个不存在网段如果ping不通且没有返回ICMP不可达说明流量被黑洞吸收了。我个人的经验是汇总路由的掩码宁小勿大。如果拿不准先配一条精确汇总观察一段时间没问题再考虑扩大范围。另外汇总路由的度量值要设置合理如果汇总路由的度量值比明细路由大路由器会优先走明细路由汇总就失去意义了。7.4 特殊区域与汇总的配合使用特殊区域和汇总可以配合使用效果更好。比如在NSSA区域里ASBR做外部路由汇总ABR做区域间路由汇总区域内的LSDB和路由表都能大幅精简。但要注意Totally Stub和Totally NSSA区域里区域间汇总的效果会被默认路由覆盖因为区域内路由器只有默认路由看不到汇总后的Type 3 LSA。所以Totally Stub和Totally NSSA区域里做区域间汇总意义不大做外部路由汇总才有意义。在Stub和NSSA区域里区域间汇总和外部路由汇总都能生效。Stub区域里ABR产生的默认路由会覆盖区域间汇总的效果但外部路由汇总还是有效的因为Stub区域里本来就没有外部路由。NSSA区域里两种汇总都能生效因为NSSA允许Type 7 LSA外部路由汇总后的Type 7 LSA会泛洪进NSSA区域。这个配合使用的细节在实际项目里很关键。我见过一个案例某工程师在Totally Stub区域里配了区域间汇总结果发现汇总没生效排查了半天才发现是Totally Stub的默认路由把汇总覆盖了。后来改成Stub区域汇总就生效了。所以配置前先想清楚区域类型和汇总类型的匹配关系能省很多排查时间。8. 实验总结与个人实操体会这个实验做下来最大的收获是把OSPF特殊区域和LSA类型的关系彻底理清了。以前学的时候总是记不住哪种区域过滤哪种LSA做完实验之后LSDB抓出来一看就明白了。Stub区域里没有Type 4和Type 5Totally Stub里连Type 3都没有NSSA里有Type 7没Type 5Totally NSSA里有Type 7没Type 3。这些规律抓一次LSDB就记住了比死记硬背强得多。路由汇总的部分我最大的体会是掩码计算要仔细。外部路由汇总的时候192.168.1.0/24到192.168.4.0/24这四条路由我一开始想汇总成192.168.0.0/22后来算了一下发现/22只覆盖到192.168.3.255不包括192.168.4.0/24。改成/21之后覆盖范围又偏大会引入192.168.5.0到192.168.7.0这些不存在的网段。最后决定不做外部路由汇总只做区域间汇总。这个决策过程让我意识到汇总不是越多越好要权衡覆盖范围和精确度。特殊区域的选择上我个人倾向于在纯接入区域用Totally Stub在需要引入外部路由的区域用NSSA或Totally NSSA。Stub区域现在用得比较少因为Totally Stub的优化效果更好配置也不复杂。NSSA和Totally NSSA的选择取决于区域内的路由器是否需要知道其他区域的明细路由。如果不需要Totally NSSA更优如果需要NSSA更合适。最后分享一个小技巧做特殊区域实验的时候建议每改一次配置就抓一次LSDB和路由表保存成文本文件。这样后面写实验报告或者排查问题时可以直接对比不同配置下的差异不用重新做实验。eNSP里可以用display ospf lsdb lsdb_stub.txt这样的命令把输出保存到文件很方便。另外eNSP的拓扑文件建议多存几个版本每改一次特殊区域就存一个版本万一配错了可以快速回滚到上一个版本不用从头再配一遍。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑