问题背景
某生产核心交换机采用两台 S6860 堆叠组成双主控平面,承载全网核心路由与 VLAN 间转发。堆叠成员 A(主)与成员 B(备)各上联 2 条 40G 光模块至上游核心,配置 LACP 动态聚合(mode active)。日常运行稳定。
2026-09-14 凌晨 03:17,成员 B 因风扇模块告警触发「热插拔重启」。重启完成后,监控发现 VLAN 10(办公网)与 VLAN 30(开发测试)出现间歇性单通:从成员 B 下联的服务器 ping 网关正常,但反向或跨 VLAN 访问时丢包率 15-40% 不等;成员 A 下联的服务器则完全正常。现象持续约 47 分钟后自行恢复。
故障现象
- 单通特征明显:成员 B 下联服务器 → 网关(VLAN 10 SVI)双向正常;但成员 B → 成员 A(跨堆叠链路)或成员 B → 上游核心方向,VLAN 10/30 的 TCP 连接经常超时,UDP 单向可达。
- LACP 状态异常:
display lacp显示成员 B 的 Eth-Trunk 10 中,端口 GE1/0/25(上联 40G-1)处于Selected、Collecting、Distributing,但 GE1/0/26(上联 40G-2)处于Selected、Collecting、Not Distributing。 - MAC 漂移告警:上游核心收到来自同一 MAC(成员 B 的系统 ID)在两个不同端口的 LACP PDU,触发 MAC 漂移告警。
- 恢复无规律:故障期间多次执行
shutdown/no shutdown端口或重启 LACP 进程,状态短暂正常后再次漂移;最终在 04:04 自动恢复正常。
排查过程
步骤 1:确认物理链路与光模块
- 成员 B 重启后所有端口
up,光功率正常(-2.3 dBm / -1.8 dBm),排除物理层。 display interface brief显示 Eth-Trunk 10 的两个成员口均为up,但display eth-trunk 10中「工作模式」显示LACP,「链路状态」为up,与预期一致。
步骤 2:抓 LACP PDU 对比协商状态
在成员 B 的两个上联口分别做 display packet capture interface:
|
|
关键差异:GE1/0/26 的 Actor State 缺少 Distributing 标志位,导致该链路虽然被 LACP 选中(Selected),但不会向该端口发送数据(Not Distributing)。
步骤 3:检查堆叠成员重启后的配置同步
堆叠配置本应在成员重启后自动同步,但检查发现:
|
|
成员 B 的 Eth-Trunk 10 配置中,lacp system-id 字段显示为默认值(由系统 MAC 生成),而成员 A 的配置中明确指定了 lacp system-id 00e0-fc00-0001。
进一步 display current-configuration | section eth-trunk 发现:成员 B 的配置文件中 Eth-Trunk 10 的 mode lacp-static 配置在重启后丢失,回退到默认的 mode lacp-dynamic,导致两端协商参数不一致。
步骤 4:根因定位——堆叠配置漂移
- 堆叠成员 B 重启时,配置文件同步机制因风扇告警中断,部分配置(包括 Eth-Trunk 的 LACP mode)未正确加载。
- 成员 A 仍使用
lacp-static+ 显式system-id,成员 B 回退到lacp-dynamic+ 默认 system-id,导致 LACP 协商状态漂移。 - 部分链路因状态不一致被 LACP 置为
Not Distributing,形成单通。
解决方案
- 立即恢复配置:在成员 B 上重新执行 Eth-Trunk 10 的完整 LACP 配置(含
mode lacp-static与lacp system-id),强制触发重新协商。 - 验证状态一致:确认两个成员口的 Actor/Partner State 均包含
Distributing标志位,MAC 漂移告警清除。 - 固化配置同步检查:在堆叠配置中增加「配置一致性巡检」脚本,每日 02:00 执行
display current-configuration | diff并告警。 - 修改 LACP 超时策略:将上游核心的 LACP
timeout从fast改为slow,降低因成员重启导致的瞬态协商失败概率。
根因分析
根本原因:堆叠成员重启后,配置文件同步机制中断,导致 Eth-Trunk 的 LACP mode 配置漂移,从 lacp-static 回退到 lacp-dynamic,与对端(成员 A + 上游核心)协商参数不一致,部分链路被 LACP 置为 Not Distributing,形成 VLAN 单通。
触发条件:成员 B 风扇模块告警触发「热插拔重启」+ 配置同步窗口被中断。
为什么只影响部分 VLAN:LACP 状态漂移仅发生在成员 B 的上联链路,VLAN 10/30 的流量恰好走该路径,而成员 A 的链路正常,故只出现间歇性单通。
预防措施
- 堆叠配置一致性门禁:在 Zabbix/云监控中增加「堆叠配置 diff」告警项,任意成员配置与主控不一致立即短信告警。
- LACP 状态基线监控:对核心 Eth-Trunk 的每个成员口增加「Actor State 中 Distributing 位」监控,缺失即告警。
- 配置版本化与回滚:堆叠配置变更前先
save并打标签,成员重启后若配置漂移可快速回滚。 - 风扇模块告警阈值收紧:将风扇转速告警阈值从 30% 提升至 50%,避免低级别告警触发不必要的成员重启。
- 定期演练堆叠成员重启:每季度执行一次「计划内成员重启 + 配置一致性验证」,检验配置同步机制的健壮性。
总结
本次故障的本质是堆叠成员重启后的配置同步失败,导致 LACP 协商状态漂移,形成单通。排查过程通过抓取 LACP PDU 对比 Actor State 标志位,精准定位到「Distributing 位缺失」这一关键异常,最终通过重新下发配置收敛。
经验教训:
- 堆叠/集群类设备,重启后的配置一致性是比链路状态更重要的监控项。
- LACP 的
Not Distributing状态是典型的「链路 up 但业务不通」场景,需纳入基线监控。 - 真实项目中「热插拔重启」往往伴随配置漂移,建议在变更窗口增加「配置一致性验证」这一道门禁。