非原厂光模块:链路每隔几小时翻转

交换机万兆链路每隔几小时 down/up 一次,业务短暂丢包。根因是非原厂光模块 DDM 温度越界触发端口保护性重置,换回原厂模块并改善散热后恢复稳定。

问题背景

园区网是两层架构:两台核心交换机、八台接入交换机,接入到核心走万兆光纤上联。今年新增一批接入交换机时,采购为了控制成本,没有买原厂光模块,而是从渠道买了一批“兼容 Cisco/Huawei”的第三方 SFP+ 模块,单价只有原厂的三分之一。上架时链路都能起来,测速也正常,验收就过了。

运行两个月后,其中一台机柜里的几条万兆链路开始出现规律性的闪断:每隔两三个小时,接口 down 几秒再 up,服务器和接入交换机短暂丢包。监控上能看到端口状态抖动,但业务侧只是偶尔卡一下,一开始没人太在意。

故障现象

  • 同一机柜内 6 个第三方光模块所在的端口,每隔 2–4 小时出现一次 link down/up,持续 5–10 秒。
  • 其他机柜的原厂模块链路稳定,运行几个月零翻转。
  • 交换机日志里有 SFP temperature alarm 和 unsupported transceiver 提示,但端口没有被彻底禁用。
  • show interfaces transceiver detail 显示故障模块温度在 75–80°C,正常模块只有 45–55°C;部分模块 Tx power 也在缓慢漂移。
  • 把故障模块拔下来插到另一个正常端口,几小时后同样的翻转跟着模块走;把原厂模块插到原端口,则不再翻转。
  • 机柜环境温度偏高,但原厂模块在同一机柜里温度正常。

排查过程

第一步确认是链路层还是上层。接口计数器没有大量 CRC 错误,但 link flap 计数持续增长;每次翻转时服务器侧网卡也记录 link down,说明是物理链路真的断了,不是 STP、LACP 或路由协议导致的逻辑震荡。

第二步看光模块诊断数据。show interfaces transceiver detail 能读到温度、电压、Tx bias、Tx power、Rx power。故障模块的温度明显高于同类原厂模块,且越接近 80°C 翻转越频繁;有几个模块的 Tx power 比标称值低 1–2dB。这个形态很像模块自身的热保护或校准异常,而不是光纤脏污或衰减——如果是链路衰减,Rx power 会低,但温度不会异常。

第三步做替换实验。把疑似故障模块换到另一个端口,翻转跟着模块走;把原厂模块换到原端口,稳定。变量唯一,问题在模块,不在端口、不在光纤、也不在交换机板卡。

第四步查兼容性。交换机日志里的 unsupported transceiver 说明模块 EEPROM 里的厂商信息不在官方支持列表里;进一步对比固件版本,这批第三方模块的 DDM 校准数据与交换机固件预期的格式不完全一致,温度读数可能被放大,交换机按保护策略在温度越界时复位端口。也就是说,模块不是“完全不能用”,而是“能用,但交换机会在特定条件下把它踢掉”。

第五步看环境。机柜在弱电间角落,空调回风不畅,柜内温度 35°C 左右;第三方模块没有原厂那种散热鳍片,长期工作在高温下,DDM 温度很快冲到阈值。原厂模块散热设计更好,同一环境下温度低 20 多度,所以没触发。

第六步验证。把 6 个故障模块全部换成原厂模块,连续观察 30 天,端口零翻转;再把其中一个第三方模块插到测试交换机上,在常温下运行一周没事,放进高温箱后几小时就复现翻转,确认温度是触发条件。

解决方案

  1. 更换模块:故障批次的第三方模块全部换下,改用原厂或厂商认证的兼容模块;采购时把“厂商兼容列表 + 固件版本”写进技术要求,不再只看“能亮灯”。
  2. 改善散热:清理机柜滤网、调整弱电间空调回风、在机柜内增加盲板引导气流;光模块工作温度每降 10°C,寿命和稳定性都会明显改善。
  3. 不要长期依赖跳过检查:部分交换机可以用 service unsupported-transceiver 强制接受第三方模块,但这只是关闭告警,不解决 DDM 校准和热设计问题,生产环境不建议作为长期方案。
  4. 补监控:采集光模块温度、Tx/Rx power、bias 和端口 flap 计数,设置温度阈值(例如 70°C 预警)和 flap 告警;不要等业务报丢包才查。
  5. 批次管理:同一批次模块集中上架前先做 24 小时烤机,记录 DDM 曲线;不同批次、不同厂商的模块不要混插在同一机柜,便于定位。
  6. 验证:更换后连续观察一个月,端口 flap 为 0,模块温度回到 55°C 以下,业务无感知丢包。

根因分析

直接根因是 非原厂光模块的 DDM 校准与散热设计不满足交换机固件的预期,在机柜高温环境下温度读数越界,交换机按保护策略复位端口,导致链路周期性 down/up。

更深一层,是把光模块当成了“被动配件”。光模块是有 EEPROM、有校准数据、有激光器和温控的主动器件,厂商兼容性不只是“接口能插上、链路能起来”,还包括 DDM 精度、告警阈值、固件交互和热设计。采购只比了价格和“能不能通”,验收只测了带宽,等于把兼容性风险留给了运行期。

还有一层是环境与监控的缺位。弱电间温度偏高、机柜气流组织差,原厂模块靠散热余量扛住了,第三方模块没有余量;而监控只看端口 up/down,没有看光模块温度和光功率,所以问题反复出现却一直定位不到根因。

预防措施

  • 光模块纳入选型管理:要求厂商提供兼容性矩阵和固件版本,优先原厂或官方认证的第三方模块,禁止无来源的渠道货。
  • 到货批次做 24 小时烤机与 DDM 基线测试,记录温度、Tx/Rx power、bias,超出阈值的批次整批退回。
  • 监控光模块 DDM 与端口 flap:温度 70°C 预警、flap 次数每分钟增长即告警,纳入网络设备基础监控。
  • 弱电间和机柜做热评估,保证进风温度与气流组织;高温区域优先使用散热更好的模块。
  • 备件按型号和批次管理,故障更换时整批排查,避免同批次隐患继续留在网里。

总结

“链路能起来”只是光模块的最低要求,不是兼容性的全部。模块里的 EEPROM、DDM 校准和散热设计,决定了它在高温、长运行、固件交互下还能不能稳定工作;采购省下的单价,可能会以周期性闪断和排障成本还回来。把光模块当成有寿命、有温度、有固件的器件来管,把 DDM 纳入监控,链路才不会在半夜自己翻一次。

延伸阅读

使用 Hugo 构建
主题 Stack 由 Jimmy 设计