1. 从21到30题:这套题到底在考什么能力
HCIP-Datacom的H12-821卷子里,第21到30题这一段,很多人刷题时容易一带而过,觉得前面几题是送分、后面几题才是硬骨头。实际做下来你会发现,这十道题恰好卡在一个很微妙的位置:它不再考你“这个协议叫什么名字”,而是开始考“这个协议在什么条件下会出问题、出了问题你怎么判断”。换句话说,从这一区间开始,题目从记忆层往判断层走了。
我把这十道题反复过了几遍,也对照着实验环境逐条验证过,最大的感受是:它们集中覆盖了路由控制、OSPF细节、BGP选路与状态机、以及一些基础但容易记混的排错逻辑。这些点单独拎出来都不算冷门,但组合在一起,考的就是你对网络行为“因果链”的理解——一个参数改了,下游会发生什么连锁反应。
这篇内容适合两类人看。一类是正在备考、想把这十道题吃透而不是背答案的;另一类是已经过了考试、但实际排障时发现“题是题、活是活”,想把题目背后的机制重新捋一遍的。我会按题目涉及的知识块来拆,不按题号流水账式地讲,因为按知识块拆你才能看出出题人的意图。每道题我会说清楚它考的是什么、为什么这么考、实际环境里怎么验证,以及我踩过的那些“看着对其实错”的坑。
需要先说明一点:下面涉及的具体题目描述,我按常见考法做了合理还原,重点放在机制和判断逻辑上,而不是让你去对某一个选项。考试题会变,机制不会变。
2. 路由控制与过滤:这十题里最容易“想当然”的部分
2.1 路由过滤的三个作用点,别混着用
这一段里涉及路由过滤的题目,核心就一句话:过滤发生在哪个方向、哪个协议、哪个位置,决定了你用什么工具。很多人一看到“过滤”两个字就条件反射想到ACL,结果在BGP场景里用ACL去匹配掩码长度,直接翻车。
我把常见的过滤手段按作用点整理了一下,这个表建议你记牢,考试和实战都用得上:
| 作用场景 | 常用工具 | 匹配能力 | 典型误用 |
|---|---|---|---|
| 距离矢量协议收/发路由 | 分发列表(filter-policy) | 基于ACL或前缀列表 | 用ACL匹配掩码长度 |
| 链路状态协议区域间 | 区域间过滤 | 基于前缀列表 | 在区域内做过滤以为能生效 |
| BGP邻居收/发 | 前缀列表、路由策略 | 前缀+掩码+属性 | 只写前缀不写掩码范围 |
| 重分发引入 | 路由策略 | 全属性匹配 | 忘了默认拒绝所有 |
这里有个特别容易错的点:OSPF是链路状态协议,区域内所有路由器拿到的是同样的拓扑,你在区域内做路由过滤,本质上是过滤不掉LSA的。题目里如果出现“在OSPF区域1内过滤某条路由”,你要立刻警觉——区域内过滤通常只能影响本地路由表计算,不能阻止LSA泛洪。真正要控制区域间路由,得在ABR上对Type-3 LSA做过滤。这个区别,题目很喜欢拿来设陷阱。
我实际验证过一次:在区域内的普通路由器上挂filter-policy,本机路由表里那条路由确实没了,但邻居的LSDB里照样有对应的LSA。也就是说,你只是让自己“看不见”,没让别人“不知道”。这个认知如果没建立起来,做题时看到“过滤后全网不可达”这种选项就会犹豫。
2.2 前缀列表的掩码匹配,那个“大于等于”到底怎么算
前缀列表(ip-prefix)是这十题里出现频率很高的工具,而它最容易错的地方就是掩码范围参数。很多人记得“greater-equal”和“less-equal”,但一到具体数字就懵。
我教你一个不会错的算法:前缀列表里写的网络地址本身带一个掩码长度,这个叫“基础长度”;greater-equal和less-equal限定的是被匹配路由的掩码长度范围,而且这个范围必须包含基础长度,否则这条规则永远匹配不上。
举个例子,ip-prefix test index 10 permit 10.1.0.0 16 greater-equal 24 less-equal 28。这条规则的意思是:路由的网络部分前16位必须是10.1,同时掩码长度在24到28之间。注意,它匹配的是10.1.0.0/24、10.1.1.0/25这类,而不是10.1.0.0/16本身。如果你想让/16也被匹配,得单独写一条或者把范围下限设成16。
题目里常见的坑是给你一个“只写前缀不写范围”的配置,然后问能匹配哪些路由。默认情况下,不写greater-equal和less-equal,就只精确匹配基础长度那一条。这个默认行为一定要刻在脑子里。
提示:前缀列表末尾隐含一条拒绝所有的规则,写规则时如果只写了permit,别忘了其他流量会被默认deny。做实验时我见过有人只配了一条permit,结果发现其他路由全没了,排查半天才想起来这个隐含拒绝。
2.3 路由策略里的“空节点”与匹配顺序
路由策略(route-policy)的题目,考的不是你会不会写,而是你懂不懂它的执行顺序和节点匹配逻辑。这十题里有一道就是围绕“多个节点、permit和deny混用”展开的。
路由策略从上到下按节点号从小到大匹配,一旦某个节点匹配成功,就执行该节点的动作(permit或deny),并且不再往下走。这里的关键是:permit节点如果只写了if-match没写apply,那它就是“允许通过但不修改属性”;deny节点匹配成功则直接拒绝。而如果所有节点都没匹配上,默认是拒绝。
我踩过的一个坑是:以为permit节点里没写apply就会“继续往下匹配找有没有要改属性的节点”。错。匹配到permit就停了,后面的节点根本不看。所以如果你既想匹配某类路由、又想在不同条件下做不同修改,必须把条件写细,或者用多个节点配合,而不是指望“穿透”。
实际配置时我的习惯是:每个节点只做一件事,节点号留出间隔(10、20、30),方便后面插规则。这个习惯在做题时也管用,因为题目经常问“在节点10和20之间插入一条规则,节点号该是多少”,你只要知道节点号是升序匹配的,答案自然就出来了。
3. OSPF那些“看起来会其实不会”的细节
3.1 邻居卡在ExStart,问题往往不在Hello
OSPF邻居建立过程是这十题里的常客,尤其是卡在某个状态怎么排查。很多人背了状态机:Down、Init、2-Way、ExStart、Exchange、Loading、Full。但题目不会只问你状态名,它会问“卡在ExStart说明什么”。
我的经验是:卡在ExStart,八成是MTU不匹配。因为ExStart阶段双方要协商主从关系并确定DD报文序列号,这个阶段开始携带完整的DD报文,而DD报文大小受接口MTU影响。如果两边MTU不一致,大的那个发的DD报文对方收不下,就会一直停在ExStart反复重传。
对比一下其他常见卡点:卡在Init说明只收到对方Hello但对方没收到自己的(单向通信或认证问题);卡在2-Way在广播网络里其实是正常稳定态(DR/BDR选举完,非DR/BDR之间就停在2-Way);卡在Exchange或Loading多半是LSA请求响应有问题。把这些对应关系理清楚,题目怎么变你都能推。
我实际排查过一次ExStart卡死,两边配置看起来一模一样,最后发现是一边接口下改了MTU做测试忘了改回来。所以现在我做OSPF实验,第一件事就是确认两端接口MTU一致,这个习惯帮我省了很多时间。
3.2 DR选举:不是“优先级高就一定当DR”
DR/BDR选举的题目,坑在于“选举是抢占式的吗”和“优先级相同怎么办”。先说结论:DR选举不是抢占式的。也就是说,如果DR已经选出来了,后来加入一台优先级更高的路由器,它不会抢走DR位置,除非原来的DR失效。
优先级相同的时候,比较Router ID,大的当DR。优先级为0的路由器不参与选举。这些是基础,但题目喜欢在“先后顺序”上做文章。比如先有两台路由器选出DR,再接入第三台高优先级的路由器,问最终DR是谁——答案是原来的DR,因为不抢占。
还有一个细节:广播网络里等待时间是40秒(死亡间隔的四倍关系里,选举等待是Dead Interval),如果这段时间内没选出来会怎样。实际环境中这个等待是为了收集所有Hello。做题时如果看到“立即选举”这种表述,要判断它是否符合协议行为。
注意:DR和BDR的选举是基于接口的,不是基于路由器的。一台路由器在不同接口上可能是不同角色。题目如果说“某路由器的DR状态”,你要看它指的是哪个接口。
3.3 区域间路由与虚连接的真实用途
虚连接(Virtual Link)这个知识点,题目考的角度通常是“什么场景下需要它”。标准答案是:骨干区域被分割,或者某个非骨干区域没有直接连接到骨干区域。但我要补充一个实战理解:虚连接本质是通过一个传输区域(transit area)把两端的ABR逻辑上连起来,让它们看起来像直连骨干。
这里有个容易混淆的点:虚连接配置在两端的ABR上,中间穿过的区域必须是普通区域,不能是末梢区域(Stub)或完全末梢区域(Totally Stub),因为这些区域不允许Type-5 LSA通过,而虚连接需要传输区域能承载必要的LSA。
题目里如果问“虚连接能否跨越Stub区域”,答案是不能。我见过有人在实际项目里想用虚连接解决一个隔离区域的问题,结果那个区域被配成了Stub,虚连接死活起不来,最后改成普通区域才通。这个教训说明:协议特性之间是有依赖的,不能孤立地记“虚连接解决骨干分割”。
4. BGP:选路、状态机与那几道绕人的题
4.1 BGP选路原则,别只背顺序要懂“为什么这个顺序”
BGP选路是这十题里分量很重的部分。选路原则一长串:权重、本地优先级、本地始发、AS路径长度、起源类型、MED、EBGP优于IBGP、IGP度量、Router ID……很多人背得滚瓜烂熟,但题目一给具体场景就乱。
我的建议是:把选路原则分成“可控”和“兜底”两组来理解。权重和本地优先级是本地可控的,优先级最高,因为它们是你自己说了算的;AS路径长度、起源类型是路径层面的;MED是给邻居看的“建议”;最后那几项(EBGP优于IBGP、IGP度量、Router ID)基本是前面都分不出胜负时的兜底。
理解了这个分组,题目问“管理员想影响选路,最直接改哪个属性”,你就知道优先考虑权重或本地优先级,而不是去动MED——MED只在同一邻居的多个入口间比较,跨AS比较时默认不生效(除非配了compare-different-as-med)。
还有一个高频坑:权重(Weight)是本地有效,不传递;本地优先级(Local Preference)在IBGP内传递,不出AS;MED可以传给EBGP邻居但默认只在同一AS的邻居间比较。这三个属性的传播范围,题目特别喜欢交叉着考。
4.2 BGP状态机:Idle到Established,每一步卡住意味着什么
BGP邻居状态比OSPF少,但每一步的排错含义更集中。我按“卡在哪、查什么”整理一下:
| 状态 | 含义 | 卡住常见原因 |
|---|---|---|
| Idle | 初始状态,尝试发起TCP | 路由不可达、没有去往邻居的路由 |
| Connect | 正在建立TCP连接 | TCP被阻断、端口179不通 |
| Active | 尝试重新建立TCP | 对端未响应、源地址不对 |
| OpenSent | 已发Open报文 | 版本、AS号、Hold Time不匹配 |
| OpenConfirm | 收到对方Open并回应 | 认证、能力协商问题 |
| Established | 邻居建立完成 | 能到这一步说明底层通了 |
题目常问“卡在Active说明什么”。Active不是“正在活动”这么简单,它其实是连接失败后在重试。所以看到Active,第一反应应该是TCP层没通——查路由、查ACL、查源地址。这个理解比背状态名有用得多。
我实际遇到过一次卡Active,两边配置都对,最后发现是其中一台的Loopback地址没有路由可达,BGP用Loopback建邻居但底层IGP没通。所以建IBGP邻居前,先确认IGP能通Loopback,这是基本功。
4.3 路由反射器与联盟:解决IBGP全互联的两种思路
这十题里有一道涉及路由反射器(RR)。核心逻辑是:IBGP默认要求全互联,因为IBGP学到的路由不会再传给其他IBGP邻居(防环)。RR的作用是打破这个限制,让RR把路由反射给它的客户端。
RR的规则里,题目爱考的是Cluster ID和Originator ID的防环。RR给反射的路由加上Cluster ID(默认是RR的Router ID)和Originator ID(原始发起者的Router ID)。客户端收到后如果发现Cluster ID里有自己的,就丢弃——防止环路。
对比联盟(Confederation),联盟是把一个大AS拆成多个子AS,子AS之间用类似EBGP的方式交互。两种方案都能减少IBGP连接数,但RR配置更简单、更常用。题目如果问“哪种方案不需要改变AS号结构”,答案是RR。
我的实战体会是:RR的客户端配置要成对出现(RR上指客户端,客户端上指RR),漏一边邻居就起不来。而且RR的Cluster ID在同一集群内要一致,跨集群要不同,这个细节题目偶尔会考。
5. 排错类题目的通用拆解套路
5.1 从“现象”倒推“层次”,别一上来就抓配置
这十题里有那么两三道是给一个现象让你判断原因。这类题最忌讳的是直接去猜配置。我的套路是:先定位到协议层次,再定位到具体机制。
比如“两台路由器直连,OSPF邻居起不来”,先分:物理层通不通(看接口up没up)→ 网络层通不通(ping直连地址)→ OSPF层(Hello参数、区域号、认证、网络类型、MTU)。一层层往下筛,而不是一上来就怀疑认证。
这个分层思路对应到题目里,就是看选项描述的是哪一层的问题。如果选项说“区域号不匹配”,那是OSPF层;说“接口被shutdown”,那是物理层。你只要能把现象和层次对上,很多干扰项自然排除。
5.2 那些“配置看起来对但不生效”的经典原因
我总结了几个这十题里反复出现的“配置对但不生效”场景,都是实战中真实会遇到的:
- ACL方向搞反:在接口上应用ACL,inbound和outbound过滤的流量方向不同。题目给一个“想过滤进入接口的流量”却配了outbound,就是不生效。
- 路由策略没被调用:写了route-policy但没在协议里引用,等于白写。这个在重分发场景特别常见。
- network命令的通配符掩码写错:OSPF的network后面跟的是反掩码,不是子网掩码。0.0.0.255对应/24,写成255.255.255.0就全错了。
- BGP的network必须精确匹配路由表:BGP的network命令要求路由表里存在完全一致的前缀(掩码也一致)才会宣告。你network一个/24但路由表里是/25,宣告不出去。
这些点单独看都是小知识,但组合在排错题里就是区分“真懂”和“背题”的分水岭。我建议每一条都在模拟器上亲手验证一遍,比看十遍书管用。
5.3 用“最小复现”验证你的判断
做排错题和实际排错一样,最有效的方法是构造最小复现环境。题目给的是一个复杂拓扑,但你要验证的往往只是其中一条链路、一个协议交互。把无关的配置剥掉,只留出问题的那一对邻居或那一条路由,问题会暴露得非常快。
我在准备这类题时,习惯在模拟器里搭一个“两路由器直连”的最小环境,把题目描述的现象复现出来,然后逐项改参数看现象怎么变。这个过程看起来费时间,但它建立的是“参数-现象”的直觉,考试时看到描述就能反应出原因,比死记硬背强太多。
提示:最小复现时,记得把日志打开(比如OSPF的debug或BGP的邻居状态变化日志)。很多问题的答案就藏在日志的第一条报错里,比你在配置里大海捞针快得多。
6. 把这十题吃透之后,我建议你回头补的三件事
刷完这一段,如果你的错题集中在某几个知识块,别急着往下刷。我个人的做法是回头补三样东西,这三样补完,21到30题这类“判断型”题目会顺很多。
第一件是把每个协议的“默认行为”列成清单。题目里大量的坑都来自默认值:OSPF默认网络类型、BGP默认Hold Time、路由策略默认拒绝、前缀列表默认精确匹配。这些默认值你不需要推导,但必须条件反射般准确。我当初是把它们写在一张纸上贴在显示器边,看多了就记住了。
第二件是动手验证每一个“我以为”。这十题里我错的每一道,事后复盘几乎都是“我以为它会这样,实际不是”。比如我以为区域间过滤能阻止LSA泛洪,实际不能;我以为permit节点没写apply会继续往下匹配,实际不会。这些认知偏差只能靠动手纠正,看书看不出来。
第三件是建立“现象-层次-机制”的三段式笔记。每做错一道排错题,不要只记正确答案,而是记下:现象是什么、属于哪一层、背后的机制是什么。这个笔记积累到二三十条,你会发现很多题其实是同一个机制换了层皮。
最后分享一个我自己的小习惯:做这类题时,我会在草稿纸上先画一个极简拓扑,把题目里的关键设备、关键链路、关键协议标上去,然后对着图推。纯靠脑子想容易漏条件,画出来之后,哪个方向的路由、哪个区域的LSA,一目了然。这个习惯在考场上帮我省了不少反复读题的时间。