HCIP题库深度解析:OSPF、BGP与IS-IS高频考点精讲
简介这是一份面向华为HCIP认证备考人群的考试题库PDF内容对应H12-221、H12-222、H12-223三个科目收录大量模拟单选练习题覆盖OSPF、BGP、IGMP等数通核心知识点适合考前集中刷题、对照复习和知识巩固。资源包仅含1个PDF文档大小6.26MB可离线阅读或打印使用轻便。目前已有18190人浏览/学习是HCIP备考资料中热度较高的一个选择。题库不仅提供正确答案还对每道题附有注释说明尤其针对BGP路由起源属性、OSPF对未知LSA的处理方式、BGP状态机与Update报文等高频易混淆考点给出了容易理解的讲解题目数据更新至2021年5月可作为系统复习、考前冲刺与查漏补缺时的参考。注释内容能帮助读者理解对错原因而不只是记忆答案对提升协议理解有实际作用。1. 为什么手里有 HCIP 题库 PDF 还不够这份更新于 2021 年 5 月的华为认证 HCIP 考试题库 PDF覆盖 221、222、223 三门笔试的 139 道真题每道题都带答案和注释注释直接跟在题干后边不是单独成页的解析册。这个细节对备考节奏影响很大因为你在手机上翻 PDF 时不需要来回跳页。完整刷一遍之后会发现真正有价值的不是答案本身而是答案解析里关于华为 VRP 实现细节的结论比如 OSPF 收到一条不存在于本地数据库的 LSA 时要先检查 Age 是否过期才决定是否接收再比如 BGP 的 Hold time 两端不一致时协商取小值Keepalive 按 1/3 周期发送。这些结论在 eNSP 模拟器上可以复现也能直接迁移到真实设备排障。适合两类人一类是准备考 HCIP 但想先摸清考点分布的考生另一类是日常维护华为设备、想补协议细节的工程师。需要提醒的是题库里的命令行以 VRP5 平台为主到了 2025 年考试要注意版本差异命令和默认参数可能已经调整。2. 从真题拆 OSPFLSA 处理、STUB 区域与过滤的常见误判2.1 收到陌生 LSA 时先看 Age而不是立即泛洪题库第 4 题问的是「当一台运行了 OSPF 的路由器收到一条 LSA且该 LSA 不存在于链路状态数据库中时路由器会如何处理」。正确答案是检查该 LSA 的 Age查看是否过期。这个结论反直觉的地方在于很多人以为 OSPF 收到新 LSA 会直接放进 LSDB 然后泛洪实际上路由器要先判断这条 LSA 是否已经老化。当 Age 接近 MaxAge3600 秒时这条 LSA 会被认为不可信不会进入数据库。在华为设备上可以通过display ospf lsdb查看数据库中 LSA 的 Age 分布判断是否存在老化异常的条目。Huawei display ospf lsdb OSPF Process 1 with Router ID 10.0.0.1 Link State Database Area 0.0.0.0 Type LinkState ID AdvRouter Age Seq# Checksum Router 10.0.0.1 10.0.0.1 567 80000002 0x00a1b2 Network 192.168.1.1 10.0.0.2 893 80000001 0x005a1cAge 字段在华为 VRP 上是从 1800 递减到 0 的数值越小代表这条 LSA 越新。它和 RFC 2328 里从 0 递增到 3600 的表示方式不同在核对抓包结果时容易看反。排障时如果发现 LSDB 里大量 LSA 的 Age 接近 MaxAge通常说明邻居之间的泛洪或确认机制出了问题。另外OSPF 依靠 LSAck 报文做可靠确认不需要 TCP 承载这一点和 BGP 完全不同题库第 8 题的考点就在这里。2.2 完全 STUB 区域的默认路由是 ABR 自动下发的关于 OSPF 完全 STUB 区域题库里的错误描述是「ABR 需要手工向区域内下发一条默认路由」。实际上 ABR 会自动产生一条表示默认路由的 3 类 LSA 并泛洪到区域内不需要手工 network 任何网段。STUB 区域本身是为了减少区域内路由器维护的外部路由数量完全 STUB 则进一步连区域间的 3 类 LSA 也过滤掉只保留一条默认路由。各种特殊区域的 LSA 约束和默认路由来源可以整理成对照表方便考前集中记忆区域类型3 类 LSA4 类 LSA5 类 LSA7 类 LSA默认路由来源STUB允许区域内禁止禁止禁止ABR 手工下发 3 类默认路由完全 STUB仅默认路由禁止禁止禁止ABR 自动下发 3 类默认路由NSSA允许区域内禁止禁止允许ASBR 产生 7 类默认路由完全 NSSA仅默认路由禁止禁止允许ABR 自动下发 3 类默认路由完全 STUB 的配置命令是stub no-summary注意no-summary关键字只在 ABR 上配置才生效。实际项目中如果骨干区域设备性能较弱把非骨干区域配置成完全 STUB 可以明显降低 LSDB 规模和 SPF 计算压力。[Huawei] ospf 1 [Huawei-ospf-1] area 1 [Huawei-ospf-1-area-0.0.0.1] stub no-summary [Huawei-ospf-1-area-0.0.0.1] quitstub命令把该区域标记为 STUBno-summary让 ABR 不再向这个区域泛洪 3/4/5 类 LSA只生成一条 3 类默认路由。区域内其他路由器只需要配置stub不要加no-summary否则 ABR 没有收到区域内的默认路由通告路由表中可能缺少默认路由。还要注意STUB 区域里不能配置 virtual-link也不能存在 ASBR这是设计约束。2.3 filter-policy 过滤的是路由表不是链路状态数据库题库第 26 题说「filter-policy 在入方向过滤路由可以阻断链路状态信息的传递」这是错误描述。OSPF 和 IS-IS 这类链路状态协议邻居之间先同步 LSDB再各自运行 SPF 算法计算路由。filter-policy 作用在路由表之前匹配通过的条目才被写入路由表但 LSA 的泛洪和 LSDB 同步完全不受影响。也就是说被过滤的路由仍然存在于 LSDB 里甚至可能被其他邻居学到只是本设备不放进路由表。[Huawei] acl number 2000 [Huawei-acl-basic-2000] rule 5 deny source 192.168.1.0 0.0.0.255 [Huawei-acl-basic-2000] rule 10 permit [Huawei-acl-basic-2000] quit [Huawei] ospf 1 [Huawei-ospf-1] filter-policy 2000 importACL 2000 匹配 192.168.1.0/24 网段并拒绝filter-policy 2000 import在 OSPF 计算出的路由写入 IP 路由表前执行过滤。注意 ACL 里的rule 10 permit一定不能省否则所有路由都会被拒绝。这个命令只能控制本设备的路由表不会影响邻居的数据库同步。如果你想让某条路由不出现在任何设备上需要配合接口下的过滤或对端出方向策略而不是只做入方向过滤。OSPF 多进程的考点经常和 filter-policy 混在一起。进程号只在本地有意义同一台路由器上不同进程彼此独立接口只能属于一个进程进程间交互必须通过import-route方式相当于两个不同协议互相引入。所以「OSPF 多进程这一概念具有全局意义」这个说法是错误的多进程是本地路由器的逻辑隔离手段。3. BGP 状态机、Update 报文与选路的反直觉结论3.1 Hold time 协商取小值Keepalive 按 1/3 周期发送BGP 邻居建立过程中双方在 OPEN 报文里携带自己的 Hold time协商规则是取较小值。如果 PeerA 通告 90 秒PeerB 通告 30 秒那么协商结果是 30 秒Keepalive 消息的发送周期是 Hold time 的 1/3也就是 10 秒。很多人在这里会算成 30 秒实际上 Keepalive 周期是协商后 Hold time 除以 3不是两端各自按自己的 Hold time 发。BGP 的完整状态机转换关系如下状态核心行为进入下一状态的条件Idle拒绝任何进入的连接启动 ConnectRetry 定时器本地发起 TCP 连接Connect等待 TCP 连接完成失败则进入 ActiveTCP 连接建立成功Active主动尝试建立 TCP 连接连续失败则回到 ConnectTCP 连接建立成功OpenSent已发送 OPEN等待对方 OPEN 报文收到合法 OPENOpenConfirm等待 Keepalive 或 Notification收到 KeepaliveEstablished可以交换 Update / Keepalive / Route-Refresh / Notification收到 Notification 回到 Idle排障时最常用的是display bgp peer重点关注 State 字段只要不是 Established 就需要往下查 TCP 连通性。Huawei display bgp peer BGP local router ID : 10.0.0.1 Local AS number : 100 Total number of peers : 2 Peer V AS MsgRcvd MsgSent OutQ Up/Down State PrefRcv 10.0.0.2 4 200 1234 1230 0 01:23:45 Established 456State 为 Established 时Up/Down 字段记录邻居保持该状态的时间MsgRcvd 和 MsgSent 分别统计收发的 BGP 报文总数。如果状态卡在 Active优先检查两端 TCP 179 端口是否可达比如防火墙是否放行了 TCP 179。如果状态在 Connect 和 Active 之间反复横跳通常是本端无法收到对端的 TCP SYN-ACK重点看源地址和源接口是否配置正确。3.2 network 注入、next-hop-local 与聚合的 as-set题库第 2 题问 network 命令注入的 BGP 路由的 Origin 属性正确答案是 IGP。用network宣告时前提是这条路由已经存在于本设备的 IP 路由表Origin 属性为 IGP用import-route引入的路由Origin 属性是 Incomplete。如果题目里出现 EGP那是 BGP 早期版本遗留的 Origin 类型现在基本不会遇到。还有一个高频考点是 IBGP 的下一跳问题。默认情况下BGP 路由器向 IBGP 邻居通告路由时不会修改下一跳地址这会导致 IBGP 邻居收到的路由下一跳不可达。标准做法在华为设备上是peer 10.0.0.2 next-hop-local。[Huawei] bgp 100 [Huawei-bgp] peer 10.0.0.2 as-number 200 [Huawei-bgp] ipv4-family unicast [Huawei-bgp-af-ipv4] network 192.168.1.0 255.255.255.0 [Huawei-bgp-af-ipv4] peer 10.0.0.2 next-hop-localnetwork命令后面跟的是前缀和掩码掩码不能省略。next-hop-local只对 IBGP 对等体有意义对 EBGP 邻居配置了也不会生效因为 EBGP 场景下下一跳本来就是对端的更新源地址。BGP 路由聚合的考点集中在aggregate命令的as-set关键字上。默认情况下聚合路由会丢失所有明细路由的 AS_PATH 属性加上as-set之后聚合路由会继承明细路由的 AS_PATH 信息但这些 AS 号会合并成无序的 AS 集合。题目里说「AS 号是有序的」是错误的AS_SET 本身就表示无序集合这也是它和 AS_SEQUENCE 的本质区别。[Huawei] bgp 100 [Huawei-bgp] ipv4-family unicast [Huawei-bgp-af-ipv4] aggregate 168.32.0.0 255.255.0.0 as-set detail-suppressedas-set让聚合路由携带所有明细的 AS_PATH 信息detail-suppressed抑制明细路由向邻居通告只发布聚合路由。这样做能减少路由表条目但注意聚合路由的 AS_PATH 变长之后可能会影响对端 AS 的选路因为 BGP 选路时 AS_PATH 越短越优先。3.3 下一跳不可达的路由会被接收但不参与选路题库第 41 题问「BGP 路由器收到下一跳不可达的路由时如何处理」这个场景在真实网络中很常见。路由器会把这条路由接收进 BGP 路由表也就是 BGP 数据库但不会参与 BGP 选路也不会写入 IP 路由表。原因很简单BGP 是距离矢量协议的升级版它依赖于 IGP 提供下一跳的可达性如果下一跳在 IP 路由表中不存在这条 BGP 路由无法实际转发数据。做题时容易混淆的是「接收并加入 BGP 路由表」和「被优选并加入 IP 路由表」的差别。BGP 路由表里的条目可能处于无效状态显示为invalid而 IP 路由表只存放通过选路的有效条目。处理这种问题的标准做法是在 IBGP 邻居上配置next-hop-local让路由器把自身地址作为下一跳通告给对等体。BGP 选路规则优先级从高到低依次是 Preferred Value、Local Preference、AS_PATH 长度、Origin 类型、MED 值、EBGP 优于 IBGP 等。题库第 37 题给的两条路由M 的 MED 是 30N 的 MED 是 20但 N 的 AS_PATH 是 100/200iM 的 AS_PATH 是 100iM 更短所以最终选择 M。这个题容易误判成选 N因为 MED 数值小实际上 AS_PATH 在 MED 之前参与比较。3.4 软复位命令 refresh bgp 的适用场景修改 BGP 策略后如果直接用reset bgp重置邻居TCP 连接会中断所有路由重新学习一遍影响较大。华为 VRP 提供了出向软复位命令可以在不中断 BGP 连接的情况下触发路由重新通告。Huawei refresh bgp all external Huawei refresh bgp 10.0.0.2 exportrefresh bgp all external刷新所有 EBGP 邻居的对外通告refresh bgp 10.0.0.2 export只刷新指定邻居。执行后本端会重新运行出向策略并将变化后的路由通过 Update 报文发送给对等体。入向方向一般不需要手动执行因为 BGP 支持 Route-Refresh 报文本端发送该报文要求对端重新通告全部路由即可。注意旧版本 VRP 里部分命令写作neighbor ... refresh新版本统一在用户视图下执行。如果路由器不支持软复位则必须使用reset bgp但要评估业务中断风险。还有一个常见误区是refresh bgp与reset bgp混用如果遇到「BGP 邻居迟迟不重新通告路由」先确认执行的是哪条命令再检查对端是否支持 Route-Refresh 能力。4. IS-IS DIS、组播模型与交换防环考点4.1 IS-IS DIS 的 3.3 秒 Hello 与组播 MACIS-IS 在广播网络中有 DIS 选举机制和 OSPF 的 DR/BDR 不同IS-IS 的 DIS 可以抢占而且优先级为 0 的接口依然能参与选举。题库里说「接口优先级为 0 的 IS-IS 路由器不能参与 DIS 选举」是错误的这点和 OSPF 有明显区别OSPF 接口优先级为 0 时设备会放弃 DR/BDR 选举IS-IS 没有这个规则。DIS 发送 Hello 报文的周期是普通路由器的 1/3普通 IS-IS 路由器发送 Hello 间隔是 10 秒DIS 则是 3.3 秒。这是因为 DIS 需要维护广播网络上所有邻居的邻居状态更短的 Hello 间隔能更快检测到邻居故障。在华为设备上可以查看接口的 DIS 信息。Huawei display isis interface Interface Type CircId L1/L2 Hello Timer DR GE0/0/0 L1/L2 0x01 10/10 - GE0/0/1 L1/L2 0x02 3.3/3.3 DRCircId是 DIS 选举出的电路 IDDR 列显示DR的接口表示该接口上的路由器是 DIS。L1/L2 Hello Timer分别显示 Level-1 和 Level-2 的 Hello 周期DIS 接口显示 3.3 秒普通接口显示 10 秒。IS-IS 报文直接封装在二层头部后面使用组播 MAC 而非组播 IP这是它和 OSPF、RIPv2 最大的不同。常见协议组播地址对照如下协议目的地址类型用途OSPF224.0.0.5 / 224.0.0.6组播 IP所有 OSPF 路由器 / DR 和 BDRRIPv2224.0.0.9组播 IP所有 RIPv2 路由器IS-IS Level-10180-c200-0014组播 MACLevel-1 路由器之间交互 IIHIS-IS Level-20180-c200-0015组播 MACLevel-2 路由器之间交互 IIH做题时注意区分IS-IS 的报文目的地址是 MAC 地址不能直接填组播 IP。0180-c200-0015 是 Level-2 的组播 MAC如果题目考 Level-1 则对应 0180-c200-0014两者不能混淆。4.2 PIM 工作模式与 MSDP 的边界PIM 协议分为密集模式和稀疏模式PIM-DM 适合组播组成员密集的小型网络PIM-SM 通过 RP 和 Join 消息构建共享树。题目里说「PIM-ASM」是工作模式的一种这是错误选项ASM 不是 PIM 的工作模式而是组播服务模型。PIM-SM 可以支持 ASM 模型和 SSM 模型SSM 模型通过指定源组播实现PIM-SSM 是 PIM-SM 的一个子集不需要 RP。在华为设备上查看 PIM 接口信息时重点核对PIM mode和PIM DR两个字段。题库第 40 题的输出中接口 IP 是 10.1.1.1但 PIM DR 显示为 10.1.1.2那本接口就不是 DR。PIM DR 是通过 Hello 报文中的优先级和 IP 地址选举出来的和接口自身 IP 没有必然关系。Huawei display pim interface GigabitEthernet0/0/0 verbose VPN Instance: public net Interface: GigabitEthernet0/0/0, 10.1.1.1 PIM version: 2 PIM mode: Sparse PIM state: up PIM DR: 10.1.1.2 PIM DR Priority (configured): 1 PIM neighbor count: 1 PIM hello interval: 30sPIM DR显示为 10.1.1.2 表示该网段上的 DR 是 10.1.1.2优先级相同的情况下 IP 地址大的获胜。PIM hello interval默认 30 秒在多路访问网络中靠 Hello 报文选举 DRDR 负责向 RP 发送 Join 消息。MSDP 的考点在题库里只有一题但容易出错。MSDP 可以部署在不同 AS 之间但它的作用是发现组播源而不是传播组播路由条目。题目说「MSDP 能够跨越 AS 传播组播路由」是错误的。MSDP 在 AS 之间传递的是 SA 消息也就是组播源的活动信息实际的组播数据转发路径仍然由 PIM 协议建立。4.3 STP TC 保护与 MUX VLAN 的配置约束STP 的 TC 保护功能默认是开启的很多人在配置时会忽略这一点。TC 保护的作用是防止攻击者伪造 TC 类型 BPDU 报文导致交换设备频繁删除 MAC 地址表项和 ARP 表项。启用后单位时间内设备处理 TC 类型 BPDU 的次数是可配置的。[Huawei] stp tc-protection enable [Huawei] stp tc-protection threshold 5stp tc-protection enable使能 TC 保护threshold 5表示默认时间内最多处理 5 个 TC BPDU。题目里的错误选项是「缺省情况下交换设备的 TC 保护功能处于未使能状态」实际上华为交换机的 TC 保护默认开启。MUX VLAN 的考点比较集中。端口使能 MUX VLAN 功能后不能同时用于 VLAN Mapping 和 VLAN Stacking 配置。MUX VLAN 分为 Principal VLAN、Group VLAN 和 Separate VLAN 三层结构企业网络里常见做法是 Principal VLAN 连接服务器Group VLAN 连接员工Separate VLAN 连接访客。[Huawei] vlan batch 10 20 30 [Huawei] mux-vlan [Huawei-mux-vlan] principal-vlan 10 [Huawei-mux-vlan] subordinate group 20 [Huawei-mux-vlan] subordinate separate 30 [Huawei-mux-vlan] quit [Huawei] interface GigabitEthernet0/0/1 [Huawei-GigabitEthernet0/0/1] port link-type access [Huawei-GigabitEthernet0/0/1] port default vlan 10 [Huawei-GigabitEthernet0/0/1] port mux-vlan enable接口下执行port mux-vlan enable后该接口就不能再配置 VLAN Mapping 或 VLAN Stacking 功能这是 MUX VLAN 的一个硬性约束。实际部署时注意Principal VLAN 下不能配置 VLANIF 接口、Super VLAN 或 Sub VLAN 的复用如果 VLAN ID 已经用于 Principal VLAN就不能再用于这些场景。5. 用 Python 把 PDF 题库按考点重新切分生成可检索的错题清单原始 PDF 是按题目顺序排列的OSPF、BGP、IS-IS 的题混在一起刷完一遍之后难以统计薄弱点。常见做法是用 pdfplumber 提取文本再用正则表达式匹配题号和答案按考点聚合统计。这样可以把 139 道题重组成按协议分类的结构化数据输出 JSON 或 Markdown 表格。import re import pdfplumber def parse_hcip_pdf(pdf_path): qa_list [] current_q None with pdfplumber.open(pdf_path) as pdf: for page in pdf.pages: text page.extract_text() if not text: continue for line in text.split(\n): line line.strip() # 匹配 1、【单选题】... 格式的题头 m re.match(r^(\d)、【(\S?)】(.)$, line) if m: if current_q: qa_list.append(current_q) current_q { no: int(m.group(1)), type: m.group(2), question: m.group(3), answer: None, note: } else: if current_q is None: continue ans re.search(r【正确答案】([A-D]), line) if ans: current_q[answer] ans.group(1) note re.search(r【答案解析】(.*), line) if note: current_q[note] note.group(1) if current_q: qa_list.append(current_q) return qa_listpdfplumber.open打开本地 PDF 文件page.extract_text()提取当前页的纯文本。正则(\d)、【(\S?)】匹配题号、题型和题干标题【正确答案】匹配答案选项。注意这里的简化版本只抓取与题干同一行的答案解析内容实际上 PDF 里的答案解析经常跨多行需要加一个if line.startswith(【答案解析】)的判断来拼接后续行。提取完成后按考点聚合统计给每个协议分配一组关键词命中即计入对应主题。from collections import Counter def group_by_topic(qa_list): topics { OSPF: [OSPF, LSA, STUB, NSSA, DR, BDR], BGP: [BGP, UPDATE, OPEN, KEEPALIVE, AS_PATH, MED, AGGREGATE, NEXTHOP], IS-IS: [IS-IS, DIS, IIH, 0180-C200], 组播: [PIM, IGMP, MSDP, 组播], 交换: [STP, VLAN, MUX, LACP] } counter Counter() for q in qa_list: text (q[question] (q[note] or )).upper() for topic, keys in topics.items(): if any(k.upper() in text for k in keys): counter[topic] 1 break return counter qa parse_hcip_pdf(HCIP-221.pdf) print(group_by_topic(qa))题干和答案解析合并后统一转大写避免大小写干扰匹配。break保证一道题只计入第一个命中的主题防止 OSPF 和 LSA 同时命中时重复计数。输出结果是每个主题的题目数量比如 BGP 可能占 30 道以上OSPF 占 25 道左右这样就能把刷题精力优先分配到占比高的协议。聚合结果导出 JSON 后可以直接导入 Notion 或飞书表格做错题追踪。本文还有配套的精品资源点击获取