H3C 交换机 IRF 堆叠配置与故障排查 - 夜莺博客

H3C 交换机 IRF 堆叠配置与故障排查

IRF(Intelligent Resilient Framework)是 H3C 交换机的核心高可用技术:多台物理设备虚拟成一台逻辑设备,管理面、控制面、转发面统一,配合链路聚合即可实现跨设备冗余。配置本身不复杂,但成员编号、IRF 端口绑定、MAD 检测这些环节任何一个出错,堆叠就起不来。本文以两台交换机为例,演示 IRF 堆叠的完整配置流程,并整理堆叠失败的常见排查命令。

IRF 的工作原理与适用场景

IRF 把多台物理交换机合并成一台逻辑设备后,对外只呈现一个管理 IP、一套配置文件、一份路由表。堆叠内的成员承担不同角色:一台作为 Master 负责控制平面(协议运算、转发表下发、配置管理),其余作为 Standby/Slave 只负责转发;堆叠链路(IRF 端口)承载成员间的心跳与转发流量。这样做的收益有三个:一是接入层双上行不再依赖 STP 收敛,链路利用率从"一半闲置"变成"全部可用";二是管理设备数量从 N 台降到 1 台;三是网关、VRRP 之类的高可用机制在堆叠内部用跨设备链路聚合即可替代。

代价同样明确:堆叠是一条"共同命运链",IRF 链路故障且没有 MAD 检测时会出现双主(脑裂),两台设备都认为自己是 Master,管理 IP、网关地址冲突,网络出现间歇性丢包和 MAC 漂移。所以本文的配置顺序永远是:先建堆叠,再配 MAD,最后才接入业务。

拓扑与规划

两台 H3C 交换机(A/B)配置 IRF:交换机 A 的万兆口 Ten-GigabitEthernet1/0/47、1/0/48 用于 IRF 互联链路,1/0/46 用于 BFD MAD(分裂检测)链路;交换机 B 同样使用 47、48、46 三个口。成员编号规划:A 为 member 1,B 为 member 2。

规划上有几条经验值值得先定下来:

  • 成员编号即接口命名。设备是 member 2 时,它的第一个千兆口在全局视角下叫 GigabitEthernet2/0/1。编号改动必须重启才生效,因此一定要在接入业务之前做完。
  • IRF 物理口要交叉互联。A 的 47 连 B 的 48、A 的 48 连 B 的 47,任一根线断开堆叠都还能维持,只断一根不至于分裂。
  • 堆叠链路建议用万兆/四万兆。堆叠口本身不承受业务流量(除非跨框转发),但带宽不足会拖慢成员间的转发表同步。
  • MAD 链路要独立。MAD 检测口必须走与 IRF 链路不同的物理路径,否则 IRF 链路断的同时 MAD 也断,检测等于没配。
  • 优先级决定谁是 Master。主设备希望稳定,把它的 member priority 调高,避免重启后角色反复切换。

配置步骤

1. 设置成员编号并重启

# 交换机 B 上(需要先改编号,重启生效)
[H3C-B] irf member 1 renumber 2
[H3C-B] save force
[H3C-B] reboot

2. 绑定 IRF 端口

# 交换机 A:irf-port 1/1 绑定物理口 1/0/47、1/0/48
[H3C-A] interface Ten-GigabitEthernet1/0/47
[H3C-A-Ten-GigabitEthernet1/0/47] irf-port 1/1
[H3C-A] irf-port 1/1
[H3C-A-irf-port1/1] port group interface Ten-GigabitEthernet1/0/47
[H3C-A-irf-port1/1] port group interface Ten-GigabitEthernet1/0/48

交换机 B 对应绑定 irf-port 2/2,物理口与 A 交叉连接(A 的 1/0/47 连 B 的 2/0/48,A 的 1/0/48 连 B 的 2/0/47)。

这里有两个高频错误。第一,把物理口放进 irf-port 视图之前必须先执行 irf-port 1/1 让接口退出二层业务,否则会把业务口误纳管、丢配置。第二,绑定完成后必须执行 irf-port-configuration active(见第 4 步),只绑定不激活,成员之间不会建立堆叠,display irf link 里看到的仍是 down 状态。

3. 配置 BFD MAD 防止脑裂

# IRF 链路故障导致堆叠分裂时,MAD 让冲突配置的一方自动 shutdown 业务口
[H3C-A] bfd multi-hop template mad
[H3C-A] interface Ten-GigabitEthernet1/0/46
[H3C-A-Ten-GigabitEthernet1/0/46] bfd mad bind-template mad

更规范的做法是先划分 MAD 域(irf domain 10),再在 MAD 检测接口上启用检测。BFD MAD 的检测速度最快,适合对收敛时间敏感的场景;LACP MAD 无需额外接口但依赖中间设备支持 H3C 私有扩展;ARP MAD 兼容性最好但收敛较慢。三选一,选完记得两侧对称配置。

4. 保存并激活

[H3C-A] save force
[H3C-A] irf-port-configuration active

执行 irf-port-configuration active 后,成员设备会按优先级选举 Master,落选的一方自动重启并以成员身份加入堆叠。此时堆叠尚未成型,直到 B 重启完成、display irf 中两台设备都在列表中才算成功。

5. 验证堆叠是否成型

[H3C-A] display irf
[H3C-A] display irf topology
[H3C-A] display mad verbose

判定标准很直接:display irf 里两个成员都是 Up 且只有一个是 Master;display irf topology 显示拓扑为链式或环形,没有孤立成员;display mad verbose 显示 MAD 状态为正常(未进入 Recovery 状态)。三项全过,堆叠才算真正可用,此时再开始配业务 VLAN 和链路聚合。

IRF 与 MAD:为什么必须配

IRF 链路是一条物理链路,会断。断了以后会怎样,完全取决于有没有 MAD。没有 MAD 时,两台设备都认为对方下线、自己转正,于是出现两个 Master:同一个管理 IP 被两个 MAC 抢占、同一个网关地址被两边同时宣告,结果是"网络时通时断、ARP 表来回覆盖",比彻底断网更难排查。有了 MAD,检测到双主后,其中一方(通常是优先级低的一方)会进入 Recovery 状态,自动关闭除保留端口外的所有业务口,把"不可预测的间歇故障"降级为"一半带宽暂时不可用"——这是可控的故障。

需要记住 MAD 的动作是 shutdown 业务口而非关闭设备,所以修复后:先恢复 IRF 链路,确认堆叠重新合并,再用 undo mad 类命令或重启恢复被关闭的接口,最后核对配置有没有在分裂期间被改乱(两边各自的改动不会自动合并,这一点常被忽略)。

堆叠失败的排查命令

  • display irf:查看成员设备状态、IRF 模式是否生效。
  • display irf link:IRF 物理端口状态——Interface 为 disable 说明未绑定,Status DOWN 检查光模块/光纤/线缆。
  • display irf-port:查看端口绑定是否对称,irf-port 1/1 与 irf-port 2/2 必须匹配。
  • display irf topology:查看拓扑信息。
  • display mad verbose:查看 MAD 检测状态,判断当前是否处于分裂/恢复状态。
  • display irf configuration:查看当前成员编号、优先级与堆叠口配置。
  • 一致性检查:IRF 成员的路由配置(max-ecmp-num、ecmp mode)、ACL 硬件模式、VXLAN 硬件资源模式(hardware-resource vxlan)必须一致,否则无法组堆叠。报 STM stackability check: Product xxx is inconsistency 时按此逐项核对。
  • 独立运行模式的设备需先在系统视图执行 chassis convert mode irf 切换到 IRF 模式。

排查有一条固定的顺序,按它走能省一半时间:先看物理层(display irf link 是否 Up)→ 再看绑定是否对称(display irf-port)→ 再看是否激活(有没有执行 irf-port-configuration active)→ 再看一致性检查是否通过(成员间硬件模式、软件版本、License 是否一致)→ 最后看 MAD 是否误判。绝大多数"堆叠起不来"卡在前两步:光纤插错口、或者绑定后忘了激活。

升级、重启与维护窗口注意事项

  • 升级前先保存并备份。IRF 升级是一次整体重启,save force 之外还应把配置文件导到服务器,详见 H3C 交换机恢复出厂设置方法(CLI 与 BootWare)。
  • 成员软件版本必须一致。版本不一致时堆叠可能建立但功能异常,升级应让所有成员同时完成。
  • 重启顺序影响角色。希望原 Master 继续当 Master,就先重启非 Master 成员,并给 Master 配高优先级。
  • MAD Recovery 不是自动恢复。修复堆叠链路后通常需要手工重启或恢复接口,别指望它自己回来。
  • 维护窗口内不要同时动 IRF 链路和 MAD 链路。两条链路同时断,等于主动制造一次脑裂。

IRF 与其它堆叠技术的对比

IRF 在 H3C 内部是通用方案;华为对应的是 iStack 堆叠(盒式)与 CSS(框式),分裂后的多主检测在华为侧叫 MAD,思路与本文一致,详见 华为交换机堆叠分裂与多主检测 MAD 配置排查;Cisco 侧则是 StackWise / StackWise Virtual,可参考 Catalyst 9300 StackWise-480 与 StackWise Virtual 的对比。三家的配置命令差别不小,但"成员编号 + 堆叠口绑定 + 分裂检测"这三件套是一样的,掌握了 IRF 再去看其它厂商会快很多。命令层面的对照可以看 H3C 与华为交换机 Comware/VRP 对比,CLI 基础语法见 H3C Comware 命令行基础。

更多交换机排障知识见 华为交换机配置宝典 与 园区网络 Leaf/Spine 架构。

原文链接:https://www.cnblogs.com/vincentmu/p/h3c-sw-irf.html