<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>SFP&#43; on Zero Day Notes</title>
        <link>https://blog.5772447.xyz/tags/sfp&#43;/</link>
        <description>Recent content in SFP&#43; on Zero Day Notes</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh</language>
        <lastBuildDate>Thu, 05 Nov 2026 09:00:00 +0800</lastBuildDate><atom:link href="https://blog.5772447.xyz/tags/sfp+/index.xml" rel="self" type="application/rss+xml" /><item>
            <title>非原厂光模块：链路每隔几小时翻转</title>
            <link>https://blog.5772447.xyz/posts/7dcbd1b1/</link>
            <pubDate>Thu, 05 Nov 2026 09:00:00 +0800</pubDate>
            <guid>https://blog.5772447.xyz/posts/7dcbd1b1/</guid>
            <description>&lt;h2 id=&#34;问题背景&#34;&gt;&lt;a href=&#34;#%e9%97%ae%e9%a2%98%e8%83%8c%e6%99%af&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;问题背景&#xD;&#xA;&lt;/h2&gt;&lt;p&gt;园区网是两层架构：两台核心交换机、八台接入交换机，接入到核心走万兆光纤上联。今年新增一批接入交换机时，采购为了控制成本，没有买原厂光模块，而是从渠道买了一批“兼容 Cisco/Huawei”的第三方 SFP+ 模块，单价只有原厂的三分之一。上架时链路都能起来，测速也正常，验收就过了。&lt;/p&gt;&#xA;&lt;p&gt;运行两个月后，其中一台机柜里的几条万兆链路开始出现规律性的闪断：每隔两三个小时，接口 down 几秒再 up，服务器和接入交换机短暂丢包。监控上能看到端口状态抖动，但业务侧只是偶尔卡一下，一开始没人太在意。&lt;/p&gt;&#xA;&lt;h2 id=&#34;故障现象&#34;&gt;&lt;a href=&#34;#%e6%95%85%e9%9a%9c%e7%8e%b0%e8%b1%a1&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;故障现象&#xD;&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;同一机柜内 6 个第三方光模块所在的端口，每隔 2–4 小时出现一次 link down/up，持续 5–10 秒。&lt;/li&gt;&#xA;&lt;li&gt;其他机柜的原厂模块链路稳定，运行几个月零翻转。&lt;/li&gt;&#xA;&lt;li&gt;交换机日志里有 &lt;code&gt;SFP temperature alarm&lt;/code&gt; 和 &lt;code&gt;unsupported transceiver&lt;/code&gt; 提示，但端口没有被彻底禁用。&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;show interfaces transceiver detail&lt;/code&gt; 显示故障模块温度在 75–80°C，正常模块只有 45–55°C；部分模块 Tx power 也在缓慢漂移。&lt;/li&gt;&#xA;&lt;li&gt;把故障模块拔下来插到另一个正常端口，几小时后同样的翻转跟着模块走；把原厂模块插到原端口，则不再翻转。&lt;/li&gt;&#xA;&lt;li&gt;机柜环境温度偏高，但原厂模块在同一机柜里温度正常。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;排查过程&#34;&gt;&lt;a href=&#34;#%e6%8e%92%e6%9f%a5%e8%bf%87%e7%a8%8b&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;排查过程&#xD;&#xA;&lt;/h2&gt;&lt;p&gt;第一步确认是链路层还是上层。接口计数器没有大量 CRC 错误，但 &lt;code&gt;link flap&lt;/code&gt; 计数持续增长；每次翻转时服务器侧网卡也记录 link down，说明是物理链路真的断了，不是 STP、LACP 或路由协议导致的逻辑震荡。&lt;/p&gt;&#xA;&lt;p&gt;第二步看光模块诊断数据。&lt;code&gt;show interfaces transceiver detail&lt;/code&gt; 能读到温度、电压、Tx bias、Tx power、Rx power。故障模块的温度明显高于同类原厂模块，且越接近 80°C 翻转越频繁；有几个模块的 Tx power 比标称值低 1–2dB。这个形态很像模块自身的热保护或校准异常，而不是光纤脏污或衰减——如果是链路衰减，Rx power 会低，但温度不会异常。&lt;/p&gt;&#xA;&lt;p&gt;第三步做替换实验。把疑似故障模块换到另一个端口，翻转跟着模块走；把原厂模块换到原端口，稳定。变量唯一，问题在模块，不在端口、不在光纤、也不在交换机板卡。&lt;/p&gt;&#xA;&lt;p&gt;第四步查兼容性。交换机日志里的 &lt;code&gt;unsupported transceiver&lt;/code&gt; 说明模块 EEPROM 里的厂商信息不在官方支持列表里；进一步对比固件版本，这批第三方模块的 DDM 校准数据与交换机固件预期的格式不完全一致，温度读数可能被放大，交换机按保护策略在温度越界时复位端口。也就是说，模块不是“完全不能用”，而是“能用，但交换机会在特定条件下把它踢掉”。&lt;/p&gt;&#xA;&lt;p&gt;第五步看环境。机柜在弱电间角落，空调回风不畅，柜内温度 35°C 左右；第三方模块没有原厂那种散热鳍片，长期工作在高温下，DDM 温度很快冲到阈值。原厂模块散热设计更好，同一环境下温度低 20 多度，所以没触发。&lt;/p&gt;&#xA;&lt;p&gt;第六步验证。把 6 个故障模块全部换成原厂模块，连续观察 30 天，端口零翻转；再把其中一个第三方模块插到测试交换机上，在常温下运行一周没事，放进高温箱后几小时就复现翻转，确认温度是触发条件。&lt;/p&gt;&#xA;&lt;h2 id=&#34;解决方案&#34;&gt;&lt;a href=&#34;#%e8%a7%a3%e5%86%b3%e6%96%b9%e6%a1%88&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;解决方案&#xD;&#xA;&lt;/h2&gt;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;更换模块&lt;/strong&gt;：故障批次的第三方模块全部换下，改用原厂或厂商认证的兼容模块；采购时把“厂商兼容列表 + 固件版本”写进技术要求，不再只看“能亮灯”。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;改善散热&lt;/strong&gt;：清理机柜滤网、调整弱电间空调回风、在机柜内增加盲板引导气流；光模块工作温度每降 10°C，寿命和稳定性都会明显改善。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;不要长期依赖跳过检查&lt;/strong&gt;：部分交换机可以用 &lt;code&gt;service unsupported-transceiver&lt;/code&gt; 强制接受第三方模块，但这只是关闭告警，不解决 DDM 校准和热设计问题，生产环境不建议作为长期方案。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;补监控&lt;/strong&gt;：采集光模块温度、Tx/Rx power、bias 和端口 flap 计数，设置温度阈值（例如 70°C 预警）和 flap 告警；不要等业务报丢包才查。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;批次管理&lt;/strong&gt;：同一批次模块集中上架前先做 24 小时烤机，记录 DDM 曲线；不同批次、不同厂商的模块不要混插在同一机柜，便于定位。&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;验证&lt;/strong&gt;：更换后连续观察一个月，端口 flap 为 0，模块温度回到 55°C 以下，业务无感知丢包。&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;根因分析&#34;&gt;&lt;a href=&#34;#%e6%a0%b9%e5%9b%a0%e5%88%86%e6%9e%90&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;根因分析&#xD;&#xA;&lt;/h2&gt;&lt;p&gt;直接根因是 &lt;strong&gt;非原厂光模块的 DDM 校准与散热设计不满足交换机固件的预期，在机柜高温环境下温度读数越界，交换机按保护策略复位端口，导致链路周期性 down/up&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;p&gt;更深一层，是把光模块当成了“被动配件”。光模块是有 EEPROM、有校准数据、有激光器和温控的主动器件，厂商兼容性不只是“接口能插上、链路能起来”，还包括 DDM 精度、告警阈值、固件交互和热设计。采购只比了价格和“能不能通”，验收只测了带宽，等于把兼容性风险留给了运行期。&lt;/p&gt;&#xA;&lt;p&gt;还有一层是环境与监控的缺位。弱电间温度偏高、机柜气流组织差，原厂模块靠散热余量扛住了，第三方模块没有余量；而监控只看端口 up/down，没有看光模块温度和光功率，所以问题反复出现却一直定位不到根因。&lt;/p&gt;&#xA;&lt;h2 id=&#34;预防措施&#34;&gt;&lt;a href=&#34;#%e9%a2%84%e9%98%b2%e6%8e%aa%e6%96%bd&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;预防措施&#xD;&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;光模块纳入选型管理：要求厂商提供兼容性矩阵和固件版本，优先原厂或官方认证的第三方模块，禁止无来源的渠道货。&lt;/li&gt;&#xA;&lt;li&gt;到货批次做 24 小时烤机与 DDM 基线测试，记录温度、Tx/Rx power、bias，超出阈值的批次整批退回。&lt;/li&gt;&#xA;&lt;li&gt;监控光模块 DDM 与端口 flap：温度 70°C 预警、flap 次数每分钟增长即告警，纳入网络设备基础监控。&lt;/li&gt;&#xA;&lt;li&gt;弱电间和机柜做热评估，保证进风温度与气流组织；高温区域优先使用散热更好的模块。&lt;/li&gt;&#xA;&lt;li&gt;备件按型号和批次管理，故障更换时整批排查，避免同批次隐患继续留在网里。&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;总结&#34;&gt;&lt;a href=&#34;#%e6%80%bb%e7%bb%93&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;总结&#xD;&#xA;&lt;/h2&gt;&lt;p&gt;“链路能起来”只是光模块的最低要求，不是兼容性的全部。模块里的 EEPROM、DDM 校准和散热设计，决定了它在高温、长运行、固件交互下还能不能稳定工作；采购省下的单价，可能会以周期性闪断和排障成本还回来。把光模块当成有寿命、有温度、有固件的器件来管，把 DDM 纳入监控，链路才不会在半夜自己翻一次。&lt;/p&gt;&#xA;&lt;h2 id=&#34;延伸阅读&#34;&gt;&lt;a href=&#34;#%e5%bb%b6%e4%bc%b8%e9%98%85%e8%af%bb&#34; class=&#34;header-anchor&#34;&gt;&lt;/a&gt;延伸阅读&#xD;&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.5772447.xyz/posts/e0440e03/&#34; &gt;光衰超标：链路 UP 却间歇丢包&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://blog.5772447.xyz/posts/953d9b4c/&#34; &gt;BPDU Guard 误触发：边缘端口 errdisable&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
        </item></channel>
</rss>
