HCIP OSPF精讲:ABR/ASBR、特殊区域与现网联动排错
发布时间:2026/10/9 5:56:10 锦皓数字建站

备考HCIP或者刚毕业进项目组被拉去配核心网的那段时间很多人对OSPF的印象都停留在“建立邻居、选DR、看路由表”。真到了现场发现问得最多的反而是三个地方ABR/ASBR到底干了什么、特殊区域的默认路由怎么就缺了、以及生产环境里OSPF和VRRP、MSTP叠在一起的时候为什么出了故障谁也说不清。这篇就当“HCIP OSPF基础知识二”来写把这些绕不开的细节按我自己的理解捋一遍配合华为/H3C设备上的实际操作给准备考试和准备上项目的朋友一个能照着查的参考。1. ABR和ASBR搞懂这两个角色区域间路由的“翻译逻辑”就通了一半1.1 ABR为什么是区域间路由的必经之路区域边界路由器ABRArea Border Router从定义上讲是同时连接骨干区域Area 0和非骨干区域的路由器。很多人把这个概念背下来了但不理解为什么OSPF非要让区域间流量从ABR走。OSPF整个设计是一个分层的骨干网络结构——所有非骨干区域的流量必须经过Area 0中转。这就好比一个城市的各区分局之间通信不直接拉专线而是全部通过市中心的总局转一圈。为什么要这样直接在各区域间拉线不行吗不行。如果每个区域之间都能直连互通区域拓扑信息就会网状交织区域划分就失去了边界SPF计算的复杂度会指数上升而且很容易出现环路。OSPF用“非骨干区域必须与骨干区域相连、区域间路由必须经ABR转发”的规则把环路问题从设计层面就解决掉了。从LSA的角度再深入一层ABR是三类LSANetwork Summary LSA区域间路由摘要的“产地”。ABR把Area 1内部通过一类LSA和二类LSA计算出来的路由整理成三条/三条以上的三类LSA通告进Area 0Area 0里的其他ABR收到后再以本区域为起点重新生成三类LSA通告给各自连接的非骨干区域。注意“重新生成”这个动作三类LSA每经过一个区域边界都会被ABR重新包装一次源路由器换成新的ABR自己cost也要重新累加。这条逻辑后面排查路由时经常用到。1.2 ASBR是外部路由进入OSPF的入口ASBR自治系统边界路由器负责把外部路由引进来。所谓外部可能是静态路由、直连网段也可能是RIP、BGP等其他协议的路由甚至是一条默认路由。ASBR会把它们转换成五类LSAAS External LSA在整个OSPF自治系统内泛洪特殊区域除外。这里有一个初学者很容易忽略的细节外部路由进了OSPF之后非ASBR所在区域里的路由器要怎么找到ASBR答案是靠四类LSAASBR Summary LSA。四类LSA同样由ABR产生内容很简单——就是一条信息“ASBR在哪个网段从我这里到它还有多远”。这个设计很容易被当成边角料跳过但实际上没有四类LSA普通区域的路由器即使收到了五类LSA也不知道把去外部网络的流量交给谁。举一个实际拓扑ASBR在Area 1内部网络在Area 2。Area 2的路由器收到从Area 0泛洪过来的五类LSA同时也会收到Area 0的ABR生成的四类LSA。它需要先看四类LSA找到去往ASBR的路径再把这条路径作为外部路由的转发路径之一。这就是为什么“五类描述网络四类描述源头”。1.3 ABR和ASBR的区别记忆对比项ABRASBR位置连接Area 0与非骨干区域可以位于任意区域核心功能区域间路由汇总与转发引入外部路由进入OSPF主要产生LSA三类LSA、四类LSA五类LSA、七类LSANSSA区域是否必须与Area 0相连是否如果你在设备上执行display ospf abr-asbr结果里会分两列列出当前设备认识的所有ABR和ASBR。如果某个外部路由不可达先查这台命令看看去往ASBR的四类LSA有没有问题往往比直接在路由表里猜要快得多。2. 特殊区域不是越小越好Stub/NSSA的路由行为与选型思路2.1 先分清这几类LSA的泛洪边界谈特殊区域之前必须把LSA类型过一遍否则后面配置容易出事故。以HCIP考试和现网排障最常用的几个为例LSA类型名称产生者泛洪范围一类Router LSA每台路由器本区域内二类Network LSADR本区域内三类Network Summary LSAABR整个OSPF域逐区域传递四类ASBR Summary LSAABR整个OSPF域逐区域传递五类AS External LSAASBR整个OSPF域特殊区域除外七类NSSA External LSAASBRNSSA内NSSA区域内部一二类LSA是SPF算法算路的地图只能在区域内传播三类LSA是区域间的路标四类LSA是查找ASBR的路标五类LSA是外部世界的入口。特殊区域做的事情本质上是对“路标”的数量做减法。2.2 Stub区域把外部路由挡在门外Stub区域的标准定义是不允许四类和五类LSA进入但允许三类LSA。区域里的路由器不需要知道外部路由长什么样只要有一条默认路由能把流量抛出去就行。在实际配置中ABR会自动向Stub区域内通告一条三类默认路由这个动作是自动的不需要额外配置。区域内其他路由器看到这条默认路由就知道去外部网络走ABR。Stub区域适合“该区域没有ASBR、也不需要引入外部路由、内部只想快速收敛”的纯leaf区域。配置命令很简单ospf 1 area 0.0.0.1 stub如果想把Stub再收紧一点可以在区域内所有路由器接口下配置stub no-summary这就是完全Stub区域Totally Stub。此时ABR不仅屏蔽四类五类连三类的明细路由也全部挡掉只保留一条三类默认路由。区域内的路由表会非常干净。实际项目里接入层设备上我通常用Totally Stub因为接入路由器不需要知道核心以外任何细节路由一条默认路由就能覆盖绝大多数需求。2.3 NSSA区域既要少学路由又要引入外部路由NSSANot-So-Stubby Area的出现是因为Stub区域有个硬限制区域内不允许存在ASBR。如果某区域既想减少外部路由的骚扰又需要用一种特殊方式把本地产生的少量外部路由引出去Stub做不到NSSA可以。NSSA区域内允许五类LSA被屏蔽但允许七类LSA存在。七类LSA由NSSA区域内部的ASBR生成泛洪范围仅限本NSSA区域。当七类LSA走到ABR时ABR会把七类LSA转成五类LSA再向OSPF其他区域通告。这一转换动作是理解NSSA的核心。配置NSSA区域时第一坑是默认路由不会自动出现。Stub区域的ABR会自动发三类默认路由NSSA区域的ABR默认不产生默认路由。如果NSSA区域内没有其他外部路由区域内的路由器会因为没有默认路由而无法访问外部网络。华为/H3C设备上需要显式配置nssa default-route-advertiseABR才会向区域内通告一条七类默认路由。ospf 1 area 0.0.0.1 nssa default-route-advertise如果还希望过滤掉普通三类明细路由可以加上no-summary变成完全NSSA区域只保留默认路由通常是一条三类默认路由 一条七类默认路由其他区域间明细路由都不进NSSA。2.4 特殊区域的选型对照场景推荐类型说明普通接入区域无外部路由引入Stub / Totally Stub减少外部LSA简化路由表接入区域但需要本地引入一条静态/默认路由NSSA / Totally NSSA用七类LSA引外部路由不污染整网区域内有其他协议如BGP重分布进OSPF不能用Stub只能NSSAStub内禁ASBR虚链路经过的区域不能配特殊区域虚链路需要三类四类五类LSA齐全我在项目里最常用的组合是核心区域Area 0全量路由接入区域用Totally NSSA或Totally Stub。区别只在于接入层设备是否需要自己往OSPF里扔路由。如果接入层只做纯二层只是把上行口接入OSPF那直接Totally Stub如果接入层还要发布一条本地管理网段或一条去往第三方专线的静态路由就用Totally NSSA配default-route-advertise。3. NSSA转换与默认路由特殊区域排错里最容易翻车的两个点3.1 7转5的转换者选举谁Router ID大谁干活NSSA区域里如果有多个ABR七类LSA转五类LSA这个动作到底由谁执行答案是默认情况下NSSA区域中Router ID最大的ABR担任转换者Translator其他ABR不转换。这个选举很容易被忽略但造成的现象很隐蔽。想象一个双核心的网络两台核心交换机都是NSSA区域的ABR。区域里的一台接入设备引入了七类外部路由。此时Router ID较大的A设备会转换这条路由通告五类LSA到Area 0B设备虽然也是ABR但它不主动转换只是负责把区域内的七类LSA兜住。一旦A设备故障或重启B设备接过转换者的角色开始生成五类LSA。转换者切换的瞬间区域内部和外部对这条外部路由的选路路径会发生一次跳变如果业务对路径敏感现场就会有人喊“网络抖动了一下”。这个问题的排障入口是命令display ospf nssa-translator能看到当前谁是转换者、状态是Translator还是Not Translator。在需要稳定路径的组网里可以指定某台设备固定担任转换者ospf 1 area 0.0.0.1 nssa translator-always但同时也要注意如果配置了translator-always这台设备即使不是ABR也会争当转换者。位置放错了反而可能把路径引到一条次优链路上所以我的建议是只在主核心ABR上配置备份核心不要配。3.2 默认路由的三种来源别搞混特殊区域排错中,默认路由的来源常常让人绕晕。梳理清楚就是三条来源Stub/Totally Stub的ABR自动生成的三类默认路由。这个动作无需任何额外命令区域内部路由器默认就有一条指向ABR的默认路由。NSSA区域里通过nssa default-route-advertise注入的七类默认路由。它由ABR生成泛洪范围只在NSSA内部。真正的外部默认路由通常由ASBR通过五类LSA或七类LSA引入。这条路由直接影响整个OSPF域对默认路由的选路。一个容易踩的坑某企业出口路由器上有一条指向运营商的对端接口的静态默认路由同时核心交换机上OSPF又把这条静态默认路由重分布进了Area 0。接入层设备一查路由表发现下一条指向核心交换机觉得“既然是默认路由往核心扔就完了”。结果核心交换机之间做的是VRRP只有Master有真实网关转发能力默认路由被指到Backup设备上流量出去绕一圈又回到Master或者直接掉进黑洞。这就是“默认路由来源不清晰”和“VRRP联动没做好”叠加出来的经典事故。排查时先用display ospf lsdb看三类、五类、七类默认路由分别来自哪里再对照VRRP主备状态基本就能定位。3.3 一个真实的NSSA路由不可达案例我给朋友排过一个现场某分支的接入交换机接入到总部核心接入交换机在NSSA区域总部核心是ABR。分支设备上display ospf routing能看到一条外部路由但 ping 不通对端。当时我第一反应是查五类LSA的Forwarding Address转发地址。五类LSA里如果携带非零的Forwarding Address数据包会被直接转发到该地址而不是先到ASBR。这个地址一旦在NSSA区域内不可达就会出现“路由有、数据不通”。查完之后发现那条外部路由是分支的ASBR引入的下一跳是分支上网关而ABR在转换七类转五类时把Forwarding Address原样带了出来但该地址在总部核心的路由表里根本没有对应条目。根源是分支侧网关网段没有以任何形式出现在Area 0里。解决办法要么在ASBR上引入外部路由时不带转发地址把下一跳改成自身loopback要么在核心上把分支网关网段直连或静态引入OSPF。这个案例说明看外部路由不能只看路由条目本身要把五类LSA里的每个字段当排障线索用。4. OSPF和MSTP/VRRP联动现网最常见的“路由黑洞”是怎么发生的4.1 VRRP主备切换后OSPF为什么还按老路走很多园区网是核心交换机两台一个VLAN跑VRRP提供网关冗余三层接口跑OSPF提供路由互通。正常情况下Master设备既当网关又做主转发路径Backup设备处于待命状态。但VRRP主备切换有一个容易忽略的事实主备切换改变的是网关实体的响应状态不改变OSPF的拓扑和cost。两台核心交换机之间通常有一条互联链路OSPF会把这条互联链路当成普通OSPF邻居关系来处理不会因为VRRP角色变化而自动调整路由。假设用户访问一个内部服务器的流量OSPF计算出的最优路径是经过核心A这台设备而VRRP实际工作的Master是核心B用户网关在B上OSPF路径却把流量导到A然后流量又在核心间绕一圈。更糟的情况是A和B之间的互联带宽很小甚至只是备份链路流量直接拥塞或不通。解决思路有两种方向。第一种是让OSPF路径跟随VRRP状态Master设备的OSPF下发cost小于Backup设备强制流量走主设备。这需要配合track或路由策略调整cost。第二种是让VRRP和OSPF之间建立一种“联动开关”当某台设备VRRP退居Backup时自动把OSPF接口cost加大或者把相关网段从OSPF撤回。H3C设备上可以通过路由策略track实现但配置复杂度会上升。我个人的偏好是在核心设备的关键互联接口上启用OSPF的BFD检测同时确保VRRP主备切换时网络本身是收敛的至于OSPF路径要不要跟着VRRP走先在L3拓扑里把路径规划好不依赖主备角色否则运维时每次切换都要脑内推演一遍路由容易出低级错误。4.2 MSTP阻塞端口与OSPF邻居的隐形冲突再来看MSTP和OSPF的联动。典型组网接入交换机双链路上联两台汇聚交换机为了防环STP会把其中一条链路阻塞掉。OSPF跑在三层VLAN接口上但这个三层接口对应的是二层VLAN数据链路是否真正可用取决于MSTP最终把哪个端口置为Forwarding。这里有一个非常隐蔽的坑OSPF建立邻居依赖Hello报文而Hello报文是组播发出的组播报文在部分硬件实现里不受生成树阻塞端口限制或者OSPF邻居建在一个三层接口上但实际业务流量走的二层路径却被STP阻塞了。结果就是OSPF邻居显示Full但数据包转发不过去形成典型的路由黑洞。排查这类现象光看OSPF邻居和路由表没用必须到接口下看STP状态。我的经验是在双归接入的组网里不要把“OSPF邻居是Full的”当成链路健康的唯一标准。排查时先要display stp brief看端口角色和状态再配合BFD检测穿透二层路径。BFD在这里的价值在于能够感知真实的端到端转发能力OSPF邻居Full但BFD Session Down时OSPF可以快速把该邻居置为Down避免了黑洞窗口。4.3 H3C/华为设备上的联动配置思路现在把两个典型的联动配置思路写出来供参考。思路一核心接口启用OSPF与BFD联动快速感知数据链路故障。ospf 1 bfd all-interfaces enableinterface GigabitEthernet1/0/1 ospf bfd enable思路二VRRP主备状态与接口cost联动让OSPF跟随网关角色。H3C里可以通过track接口状态、再结合路由策略修改cost实现。示例逻辑如下track 1 interface GigabitEthernet1/0/2 line-protocol然后在OSPF路由策略里把该track作为条件当track变为negative时给指定网段下发更高的cost值。整体配置代码量较长遇到需要时再展开。这里最重要的是先建立“VRRP和OSPF不是天然同步的”这个认知否则配置了半天也不知道自己在联动什么。我实际项目中还常用一招把三层互联全部做成点到点OSPF网络类型。二层广播网络上会牵扯DR/BDR选举中间交换机震荡时邻居建立要等Dead Time而改成ospf network-type p2p之后邻居关系更稳定、收敛更快链路状态LSA也简化了。在双核心加双汇聚的组网里把OSPF网络类型规划成p2p会大幅降低“多DR选举导致路由振荡”的概率。5. H3C上的OSPF配置模板与排错命令速查5.1 一份可直接参考的多区域配置模板以H3C/华为Comware风格为例配置一个常规的多区域组网核心区域Area 0接入区域Area 1接入区域配Totally NSSA并下发默认路由。核心ABR设备配置ospf 1 router-id 1.1.1.1 area 0.0.0.0 network 10.0.0.0 0.0.0.255 network 10.0.255.0 0.0.0.255 area 0.0.0.1 network 172.16.0.0 0.0.255.255 nssa default-route-advertise no-summary接入侧路由器配置ospf 1 router-id 2.2.2.2 area 0.0.0.1 network 172.16.0.0 0.0.255.255 nssa注意接入侧也必须把该区域配置为NSSA两边区域类型不一致会导致邻居关系停留在Exchange状态路由反复震荡这是配置特殊区域最经典的错误。还有一点Router ID必须先全局配置或由loopback地址自动选举出来否则修改Router ID后需要重启OSPF进程才能生效。5.2 一张排错命令速查表想看什么命令邻居状态display ospf peer brief本设备认识的ABR/ASBRdisplay ospf abr-asbr区域内一类二类LSAdisplay ospf lsdb router / network三类区域间路由display ospf lsdb summary五类外部路由display ospf lsdb aseNSSA七类路由display ospf lsdb nssaOSPF路由表中的明细路由display ospf routing当前NSSA转换者display ospf nssa-translator邻居ID是否冲突display ospf peer verbose重置OSPF进程reset ospf process一张表里最容易被忽略的是display ospf peer verbose。它能看到邻居的Router ID、状态机的变化次数、DR/BDR角色。如果两台设备配了相同的Router ID邻居会反复震荡单看peer brief只会看到一条down很难第一时间锁定是Router ID冲突。多执行一次verbose能看到对方Router ID与自己相同立刻就能定位。5.3 配置和排障里值得养成的三个习惯第一静态路由重分布进OSPF之前想清楚这条路由的下一跳设备是否也会被别的区域以“外部路由”的方式再次引入。外部路由防环不靠OSPF内部机制完全靠network范围规划和路由策略去守住边界。边界路由器上顺手加一条路由过滤策略是避免外部路由互相打架的最简单手段。第二特殊区域的所有路由器必须保持相同的区域类型。配置Stub或NSSA时如果区域里某一台路由器没有同步配置会出现邻居Full但不交换路由的奇怪现象。验证方法还是display ospf lsdb看对方通告的一类LSA里是否携带了E-bit外部路由能力位。E-bit不一致邻居就会卡住或路由不通。第三凡是OSPF和二层冗余协议共存的组网上线前一定要做一次端口震荡测试。拨掉一根关键互联光纤观察OSPF收敛时间、STP重新收敛时间、VRRP主备切换时间三条时间轴之间有没有“空窗”。很多人配置完看静态状态全都是对的但一发生真实故障三条时间轴一旦交叉错位就会出现“网关在主设备、路由走备设备”的诡异现象。这种问题在设计阶段预防的成本远低于上线后半夜两点被叫起来处理的成本。最后说一个我自己的习惯每配完一个OSPF区域我都会在接入设备上用display ip routing-table完整看一遍路由表确认里面既没有多余的外部明细路由也没有缺该有的默认路由。这几秒的确认能挡掉后来一整个晚上的故障排查。
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。