HCIP-Datacom备考最绕不开的一个板块就是IGP高级特性实验。很多朋友在学OSPF、IS-IS基础的时候觉得没问题,一碰到路由汇总、虚链接、特殊区域、路由过滤这类高级特性就开始犯迷糊,原因很简单:基础实验只要照抄命令,而高级特性实验必须把“为什么这么配”想明白。这篇东西不聊考试大纲,直接讲我做完整套IGP高级特性实验之后的完整复盘,覆盖设计思路、关键配置点、实操验证方法和踩坑记录,打算备考HCIP或者正在学IGP高级特性的朋友可以对照着操作一下。
1. 实验方案的整体设计与思路拆解
1.1 这套实验到底在考察什么
先说清楚IGP高级特性实验解决的实际问题。真实的园区网或者企业骨干网里,IGP协议不可能只是简单地把所有路由全撒出去,一定会涉及区域的划分、路由条目的精简、链路开销的调整、协议间互引的过滤等等。HCIP-Datacom考试里把这部分单独立成实验,本质上是想考察你在一个相对复杂的拓扑里,能不能合理规划OSPF和IS-IS的部署方式,并且能处理协议运行过程中的各种边界情况。
我拿到这个实验时做的第一件事不是敲命令,而是画拓扑、写规划表。原因很简单:高级特性实验和基础实验最大的区别,在于基础实验是“配完就能通”,高级实验是“配完能通,但是通得对不对需要验证”。比如你给一个NSSA区域下发缺省路由,要是summarize方向不对,路由表里出现一条没用的Type-7 LSA,内网流量路径直接就歪掉。这种问题不靠静态分析根本发现不了。
完整的实验目标一般包含以下几个维度:
- OSPF多区域部署下的LSA类型与路由传播路径控制
- 路由汇总与过滤机制的配合,控制路由表条目数量
- 特殊区域(Stub、NSSA)对LSA泛洪范围的影响
- IS-IS的NET地址规划、路由泄漏和认证机制
- 双协议(OSPF + IS-IS)之间的路由引入与方向性过滤
- 网络收敛或故障场景下,路由优先级和选路策略的验证
每一个维度都不是孤立的知识点,它们会交织在同一台设备、同一条链路上。比如你既要在OSPF区域边界做路由汇总,又要让汇总后的路由能正常进入IS-IS域,那涉及的就是ABR上的LSA过滤、路由引入策略、双点双向引入防环路这三个层面。如果只按实验手册顺序敲命令,不把每一条命令背后的协议行为想透,后期的post检查会非常痛苦。
1.2 实验拓扑规划与设备选型的逻辑
实验拓扑我个人建议不要用太小的规模。至少用四台路由器起步:两台做OSPF骨干区域,一台做普通区域,一台做特殊区域,再加一台独立运行IS-IS的路由器作为协议边界。模拟环境我习惯用eNSP,虽然模拟器跑IS-IS或者复杂路由策略时的性能和真机相比有所差距,但应付HCIP级别实验完全没问题。
拓扑规划上要留意几个关键点。接口地址段不要乱写,建议按区域进行编码。比如骨干区域用10.0.0.x/30的掩码,普通区域用172.16.x.0/24,IS-IS区域用192.168.x.0/24,这样后期在路由表里看到网段就能立刻判断出它的来源。Loopback地址也要单独规划,最好用比如1.1.1.1、2.2.2.2这样有识别度的地址,方便验证路由可达性和router-id选择。
设备角色的划分同样很重要:
- R1、R2作为骨干区域成员,R2同时作为ABR连接普通区域;
- R3作为普通区域内的一台骨干设备,R4可以放在特殊区域里;
- R5单独运行IS-IS,通过与R2之间的一条链路上做OSPF和IS-IS的相互引入。
这样一来,所有高级特性都能在同一个拓扑里完成验证,不会出现“这个实验配完了没法确认效果对不对”的情况。很多人在实验室里设备少,就两台路由器硬凑,结果OSPF虚链接根本没有条件搭,路由渗透也没法测试,实验价值大幅度缩水。
2. 核心配置点拆解与实操细节
2.1 OSPF路由汇总与LSA泛洪控制
OSPF路由汇总分为区域内汇总和区域间汇总。区域内汇总我之前见过不少同学操作出错,因为他们以为只要在任何一台路由器上配置summary就能生效,这是理解上的误区。OSPF的区域内汇总实际上没有意义,因为区域内路由是通过SPF算法直接计算出最短路径,而不是像距离矢量协议那样逐跳传递路由条目,汇总不会改变区域内所有路由器对该路由的认知。只有ABR和ASBR上的汇总才真正有意义。
在ABR上做区域间汇总的命令大家应该很熟悉:
ospf 1 area 1 abr-summary 172.16.0.0 255.255.252.0这里的核心在于掩码的设计。如果你把172.16.1.0/24、172.16.2.0/24、172.16.3.0/24三段汇总成172.16.0.0/22,ABR发往骨干区域的Type-3 LSA就只有一条,其他区域的设备看到的就是一条聚合路由。
但有一个细节坑非常典型:OSPF汇总路由默认情况下不会自动生成一条指向null0的静态路由。这意味着如果骨干区域有数据包访问172.16.4.0/24这个不存在的地址,路由器会用那条汇总路由匹配并继续转发,形成路由黑洞。所以实验操作中,配置完abr-summary之后必须立刻检查是否产生了指向Null0的直连路由,如果没有,就要通过手工方式处理。
ASBR上的外部路由汇总稍微不太一样:
ospf 1 asbr-summary 30.0.0.0 255.255.0.0这里要注意的是汇总只能影响Type-5 LSA,如果你用的是NSSA区域,外部路由是以Type-7 LSA进入OSPF域的,那么在NSSA区域ABR上就需要配合特殊处理。很多人做完这一节后display ospf lsdb发现还是有一堆Type-5条目,就是因为把asbr-summary配在了NSSA区域的ABR上,而没有意识到必须通过NSSA的translator机制来聚合和转换。这是考试和项目中的双重高频考点。
2.2 特殊区域Stub与NSSA的配置与验证
Stub区域的设计目标是减少区域内路由器维护的LSA数量。配置时ABR和区域内的所有路由器都需要声明该区域为stub,缺一不可。区域内不能存在ASBR,也不允许注入Type-4和Type-5 LSA。配置命令是:
ospf 1 area 2 stubABR上为了确保区域内的路由能够到达外部网络,会自动下发一条缺省路由(Type-3 LSA),但这里就涉及一个策略选择点:缺省路由的cost值默认为1,如果你希望引导流量走特定路径,需要手工调整:
ospf 1 area 2 default-route-advertise cost 10很多人以为Stub配置完之后就万事大吉,实际上还要仔细验证区域内收到的LSA类型。一个常见的错误是:ABR没有配置完全Stub,导致区域内路由器还是能看到部分Type-3 LSA,路由表不够“干净”,失去了部署Stub区域的意义。
NSSA区域是另一个高频考察点。NSSA区域允许ASBR存在,但又不愿意接收外部Type-5 LSA,于是通过Type-7 LSA承载外部路由。配置时需要在区域内所有路由器上启用nssa关键字:
ospf 1 area 2 nssaNSSA里容易混淆的细节是:Type-7 LSA进入OSPF骨干域时,必须由NSSA的ABR转换成Type-5 LSA,这一过程由ABR自动完成。但如果你希望NSSA区域内也能存在缺省路由,需要单独配置:
ospf 1 area 2 nssa default-route-advertise这个命令的作用是在NSSA ABR上下发一条Type-7缺省路由。我见过有同学在这个地方踩坑:配置了nssa default-route-advertise之后,区域内所有路由器的默认路由下一跳都指向ABR,但如果ABR本身没有缺省路由来源,这条Type-7 LSA是一条无效路由,流量直接断掉。所以配置前要先确认ABR的缺省来源,比如写一条静态默认路由并引入OSPF进程。
2.3 OSPF虚链接的配置与触发条件
虚链接可能是整套实验中让人最头疼的配置,因为它不像普通邻接那样一配就通,它需要在特定的条件下才会激活。
虚链接的用途就是解决非骨干区域必须直接跟骨干区域相连这个约束。实际中可能存在某个区域因为物理链路故障或规划问题,无法直接连接到Area 0,通过虚链接可以将该区域与骨干区域在逻辑上连接起来。配置方式是在两台ABR上分别指定:
ospf 1 area 1 vlink-peer 2.2.2.2注意这里的2.2.2.2是指对端ABR的router-id,而不是接口IP。另外还要注意vlink必须在两台设备上同时配置,本质上它们是区域间建立OSPF邻接关系,只有两端都具备vlink配置才能正常工作。
虚链接建立的核心条件有两个,这两个条件缺任何一个都会导致vlink无法形成:
- 两端设备必须同时具有通往对方router-id的可达路由。
- 两端必须具有共同的非骨干区域(也就是虚链接所要经过的那个区域)。
我在实际验证中发现,很多人配置完vlink-peer之后马上display ospf vlink,发现显示down,原因经常是对端的router-id没有写对。哪怕两台设备已经配置了相同区域,只要router-id不一致,vlink就是无法建立。所以配置完毕后,第一步必须检查router-id。
排查命令方面,普通的display ospf peer只能看到物理链路邻居,看不到vlink邻居,需要用专门的命令确认虚拟邻居:
这里有个非常有效的验证顺序:先在两端分别display ospf vlink,看是否active和up,再看display ospf routing,确认虚链接是否出现在OSPF路由表中。如果vlink是up状态但路由没有通过虚链路传递,那要么是区域配置不一致,要么是cost计算出现环路。这种问题单纯看现象很难定位,一定要打开调试输出并结合LSA分析,逐个区域查看Type-1和Type-2 LSA的传播范围。
2.4 IS-IS的路由渗透与NET地址规划
IS-IS和OSPF不同,它天然支持大规模网络的扁平化设计,但L1和L2路由的分层机制在实验中同样有很多细节。IS-IS默认情况下,L1区域内的路由器只维护本区域内的路由,对区域外的路由通过L1/L2路由器发布一条缺省路由来感知,这样的好处是节省L1路由器的内存资源。但这样就造成一个问题:L1区域内如果想做基于前缀的精细选路,比如某些目的地址走A出口,某些走B出口,缺省路由根本无法满足。这时候就需要用到路由渗透(Route Leaking),把L2的路由信息有选择地引入到L1区域。
配置思路大概是这样:
isis 1 is-name R5 network-entity 49.0001.0010.0500.5005.00先规划好NET地址,这里注意区域地址是49.0001,system ID是0010.0500.5005,最后的00是N-SEL。整个NET地址必须是偶数位,每个字节用16进制表示,系统ID一定是12位长度。这些细节很容易被忽略但又是考试必考项。
开启路由渗透的方式是通过路由策略配合:
isis 1 import-route isis level-2 into level-1这样做有一条隐含的问题需要特别小心:不加过滤的全量路由渗透,实际上会破坏IS-IS原有的层次设计,区域内的路由表条目数会显著增加,违背了部署L1/L2分层的初衷。所以最优实践是配合filter-policy,只允许指定网段从L2渗透到L1。比如只把骨干网段的Loopback路由渗透进L1区域,普通业务网段不放行,这样既能实现精细选路又不至于撑爆路由表。
IS-IS认证也是高级特性实验里常见的配置需求。区域认证和路由域认证分别配置在不同层级:
isis 1 area-authentication-mode md5 cipher 自定义密码 domain-authentication-mode md5 cipher 自定义密码实际测试中你会发现,如果只做area-authentication,L2报文不会做校验;如果只做domain-authentication,L1报文不受影响。两者用途完全不同,千万不要混。配置完毕后用display isis lsdb verbose来验证收到的LSP里是否带有正确的认证信息。
2.5 双协议互引与路由策略的配合
实验拓扑中最后一块内容通常落在OSPF和IS-IS之间做路由互引,也就是双向引入。很多人在这里会犯一个特别经典的低级错误:直接在OSPF进程里import-route isis,又在IS-IS进程里import-route ospf,两头都没做过滤和优先级调整,结果所有路由器都同时收到了指向对端域的路由,最坏情况下会形成路由环路。
正确的做法一定是在路由引入的两侧都加上route-policy。以引入方向为例:
route-policy DENY-LOOP permit node 10 if-match ip-prefix NHH # 先拒绝匹配特定前缀集合的路由,避免OSPF和IS-IS里相同的网络互相来回打转然后:
ospf 1 import-route isis route-policy DENY-LOOP isis 1 import-route ospf route-policy DENY-LOOP另外一个需要考虑的点是路由优先级。OSPF的内部路由优先级默认是10,IS-IS是15。在互引的场景下,原来直连或静态路由的优先级必须综合考虑。如果某条链路同时运行两个协议,一般来说需要把优先级设置成一致,避免后续排查时候出现路由飘忽不定的现象。比如通过preference命令调整IS-IS内部路由的优先级,让两条路径都在可控范围内。
双协议边界往往还会出现次优路径问题。比如OSPF内部访问某个网段,原本可以直达,但因为引入了IS-IS的同名路由,导致路由表里最优路径跳到了IS-IS侧。这个问题的排查方法也很简单,检查路由表优先级的来源,再对照route-policy的放行范围,看是哪条命令放得过宽了。多花几分钟整理clear routing table后的路径状态,比闷头看配置强很多。
3. 实操过程与核心环节验证
3.1 实验环境搭建与基础参数初始化
我在搭建完拓扑之后,会先把所有设备的基础配置全部敲完,包括主机名、接口IP、loopback地址和router-id。接口的MTU值建议统一,OSPF的接口MTU不一致会导致邻居状态卡在Exstart阶段,这是大家实验室里经常被折磨的一个点。华为设备默认MTU是1500,但如果中间设备对接口做了调整,两台设备不匹配,OSPF协商就会出问题。这种情况在eNSP里也可能出现,因为模拟器有时不会自动协商MTU,所以实验开始前先批量检查一遍接口的mtu配置。
Router-id的规划我在前面提到过,这里再强调一次。很多人的router-id和loopback地址用的不是同一个值,导致查看路由表时不知道设备是谁。我一般会强制设置router-id为loopback地址,这样在display ospf peer、display isis lsdb的输出里,只需一眼就能对应上设备身份。配置方法很简单:
router id 1.1.1.1 ospf 1 router-id 1.1.1.1对于IS-IS,NET地址里已经包含system id,所以不用额外设置router-id,系统会自动取system id作为动态主机名。
基础网络通断验证也很重要,不要急着进入高级特性配置。先用ping测试各设备loopback之间的连通性,确认底层链路没有故障后再开始OSPF和IS-IS的配置。这一步能帮你把问题的排查范围缩小很多,否则后面配置完高级特性发现不通,你很难判断到底是底层问题还是上层策略问题。
3.2 OSPF多区域与特殊区域的完整配置流程
整个OSPF部分我建议按这个顺序操作:
第一步,配置骨干区域。在R1、R2、R3上创建OSPF进程并进入area 0,宣告骨干接口网段和loopback地址:
ospf 1 area 0 network 10.0.0.0 0.0.0.3 network 1.1.1.1 0.0.0.0第二步,在R2上创建area 1,宣告R2连接R3的接口网段和R3的loopback地址(前提是这些地址能力都在R2上)。然后到R3上创建area 1,确保邻接能建立起来:
ospf 1 area 1 network 172.16.0.0 0.0.0.3第三步,配置特殊区域。如果R3连接R4的链路上运行OSPF,且R4所在区域定义为Stub或者NSSA,那R3上需要进入area 2,执行stub或nssa命令,R4上也执行相同的配置。
这里配置顺序有一个坑:区域内所有设备必须同时配置为同一个区域类型,只要有一台不匹配,邻居关系就变成down。我习惯于从区域边界路由器开始配置,然后逐台往末端设备推进,这样即使邻接中断也能快速定位是哪台设备没同步配置。
第四步,在ABR上配置路由汇总和缺省路由。
按照这个顺序走下来,能避免很多局部命令冲突。如果你一上来就在R4上配特殊区域,然后在R2上做汇总,中间如果链路状态发生变化,很多LSA会被重复计算,OSPF的收敛时间会明显拉长。
3.3 关键验证命令与输出分析
配置完成后,我习惯用一套固定的验证命令组。OSPF部分最核心的是:
- display ospf peer:检查邻接状态是否Full,这个是最基础的他验;
- display ospf lsdb:查看LSA的类型和数量,确认特殊区域和汇总策略是否生效;
- display ip routing-table:确认路由条目是否符合预期,重点观察汇总路由和缺省路由的下一跳;
- display ospf vlink:专门查看虚链接状态。
以Stub区域验证为例,正常情况下R4的路由表里只能看到区域内直连路由、一条缺省路由和可能的一条Type-3汇总路由。如果你发现R4的路由表出现了O IA条目,说明Stub区域的配置没有完全生效,或者有路由器没有同步配置stub命令。这个问题非常高频,而且看起来很像“路由学了但没学全”,本质上是区域类型定义不统一。
NSSA区域验证时则注意Type-7 LSA的字段。在R4上display ospf lsdb后,确认有一条Type-7 LSA,并且转发地址是合理可达的地址。如果Type-7 LSA的P-bit位置不正确,NSSA ABR就不会把它转换成Type-5 LSA,外部路由就传不出去了。
IS-IS部分验证重点用:
- display isis lsdb:查看LSP是否全部同步;
- display isis route:查看L1和L2路由是否存在,路由渗透后L1区域应能看到指定渗透的L2前缀;
- display isis interface:确认接口的circuit type,防止配错level级别。
我在实验中还喜欢清空路由表后进行重新收敛测试,因为这样可以更清楚地看到哪些路由是稳定出现的。reset ospf process和reset isis process这两个命令能帮助做这种收敛验证。不要在业务设备上乱用,但实验环境里这是很好的习惯。
3.4 双协议互引的配置示例
双协议互引的配置示例以R2作为边界路由器。假设R5上运行IS-IS,R2和R5之间跑物理互联,网段是192.168.0.0/30。R2上同时运行OSPF和IS-IS,需要OSPF域的用户能够通过R5访问某个外部网络。
R2上的IS-IS基础配置:
isis 1 is-name R5 network-entity 49.0001.0010.0500.5005.00 interface GigabitEthernet0/0/0 isis enable 1R2上的OSPF引入IS-IS路由:
route-policy IMPORT-ISIS permit node 10 if-match ip-prefix IMPORT-FROM-ISIS然后在OSPF进程里导入。另一边也一样:
isis 1 import-route ospf 1 route-policy IMPORT-OSPF这里特别提醒,route-policy如果没有建立任何node,默认行为是拒绝全部。很多人配置完import-route后忘了创建route-policy,结果路由完全没引入进去,然后又花很多时间查链路状态。这个坑几乎每个做互引实验的人都会踩一遍。
配置完成后,在R2上display ip routing-table protocol ospf和display ip routing-table protocol isis,分别确认引入过来的路由条目是否存在,再在R1上ping R5的loopback地址验证端到端可达。
4. 常见问题与排查技巧实录
4.1 OSPF邻居状态无法进入Full
邻居状态卡在Init或Two-Way,是很常见的现象。第一个检查点是网络类型是否两端一致。如果一边是P2P,一边是Broadcast,DR和BDR的选举就会出现问题,邻接始终无法完成。解决办法是手动配置网络类型一致:比如在接口下统一配置ospf network-type p2p或broadcast。
第二个检查点是区域ID是否一致。区域ID不一致会导致hello报文被丢弃,display ospf peer的输出里什么都看不到。第三个原因是接口MTU不一致,上面已经说过,不再重复。
比较隐蔽的一个点是指纹认证和区域认证的密码不一致。实验中配置了认证后就容易忘记同步密码,尤其是有多台设备时,明文密码和密文密码的编码方式不同也会导致认证失败。检查认证配置时,一定要在两台设备上分别display current-configuration interface,逐一对比认证模式的参数。
4.2 虚链接显示UP但路由不可达
虚链接up不代表转发路径可用,这是个非常迷惑人的问题。vlink状态up时,只代表LSA交换已经完成,但实际流量要走的路径可能经过多个中间区域,如果中间区域某台路由器没有返回路由,转发就会失败。
我在实验里碰到过这种情况:R1和R2之间经过Area 1建立虚链接,Area 1内部看似正常,但实际上某台非ABR设备的loopback没有宣告进Area 1,导致虚链接建立时缺少必要的Type-1 LSA。检查的时候我建议把重点放在vlink对端的路由表上,确认虚链接需要穿越的所有链路的对端IP是否都能在OSPF路由表里找到。
另外虚链接的cost也值得关注。默认Cost是在链路上自动计算的,但如果链路带宽不同,可能出现从R1到R2的虚链接路径绕远的问题,导致骨干区域出现次优路径。实验操作时可以通过display ospf routing查看,如果确实绕路,就在vlink接口下手工调整cost值。
4.3 路由汇总后出现黑洞路由
黑洞路由是静态路由场景中常见的问题,但OSPF汇总也会产生类似现象。原因是汇总路由生成后,明细路由被抑制,如果被汇总的网段实际上某个地址不存在,数据包到达ABR后找不到具体出接口,就会按汇总路由转发到null0接口。
实验中的处理思路是:汇总路由生成之后,必须有对应的指向null0的防环路由存在。华为设备在某些版本型号上abr-summary会自动生成,有些则不会。确认方法很简单,看路由表里是否存在一条指向Null0的同掩码直连路由。如果没有,可以手工加一条静态路由,比如ip route-static 172.16.0.0 255.255.252.0 NULL0。这种方式能有效防止路由环路,也是项目里经常采用的做法。
4.4 IS-IS LSP不同步与过时路由残留
IS-IS的LSP同步问题和OSPF不同步的表现有明显差异。OSPF里出了故障会表现为邻接down,而IS-IS里经常出现的是邻接up但数据库不一致。排查时可以在每台设备上display isis lsdb,然后用system id对比各设备上的LSP序列号。如果序列号不一致,说明LSP在传输过程中发生了错误,或者不同设备的刷新周期有偏移。
另外一个常见问题是过时路由残留。如果你把某条IS-IS接口的网段撤销掉,但LSP里的旧路由信息没有被及时刷新,其他设备会继续保留这条路由一段时间。如果网络里存在环路,这个现象会被放大。解决办法是手动触发一次IS-IS的LSP刷新:
reset isis all这个命令会让整个IS-IS进程重新泛洪LSP,适用于实验环境,但在生产环境里一定要谨慎,会导致短暂的网络中断。
在实际操作中,我这个实验做下来最大的体会是:配置命令本身不难,难的是理解每条命令如何影响整个协议状态机,并且在多条配置叠加的时候不把逻辑搞混。IGP高级特性的实验价值,不在于把题目做完、把分数拿到,而在于你真的理解了路由表里每一条路由为什么存在、为什么不存在,以及流量在你的网络中会走哪条路、绕开哪条路。搞清楚这些之后,后面再做BGP、MPLS甚至SR相关的复杂实验,底子会扎实很多。
最后再分享一个细节经验:做高级特性实验时,每完成一个配置小节我都习惯立刻备份一次配置文件,并且命名带上序号和功能标签,比如r2_abr_summary.cfg、r5_isis_l2.cfg。这个习惯帮我省了很多次回滚的麻烦,尤其是当实验做到后期、改动叠加过多的时候,能够快速定位到问题出在哪一步。也建议所有备考的朋友把实验笔记写成“现象+原因+解法”三段式,不要只记命令,这样复习的时候直接看现象反推配置,效率会比重新敲一遍配置高得多。