前言:一个被热死的 10G 模块
这事儿还得从上周说起。我家里那套 10G 内网,一直用着 Marvell 芯片的 10GBASE-T SFP+ 模块,连接我的 Unraid 服务器和主力 PC。iPerf3 跑起来确实能到 9.5Gbps,看着挺美。
但问题来了——连续跑了三天 BT 下载 + 一次大文件迁移之后,Robocopy 速度直接从 1.7GB/s 掉到了 160MB/s。你没看错,就是 160MB/s,跟千兆网络一个德行。我第一反应是网线坏了,结果摸了一下那个 SFP+ 模块——烫得能煎鸡蛋。
Reddit 上 r/homelab 的老哥说得对:Marvell 方案在 10GBASE-T 模块上就是个发热怪兽。2.5W 的功耗在小体积里根本散不出去,温度一高就降速,降速就掉包,掉包就重传,最后你的 10G 网络变成了千兆体验。
所以,我换了个 Broadcom 芯片的 1.8W 低功耗模块。这篇文章就是记录这次更换的全过程,以及我踩过的坑。
为什么是 Broadcom?Marvell 到底哪里不行?
先上结论:不是 Marvell 不能用,是散热条件决定了它的生死。如果你把模块插在通风良好的交换机上,可能一辈子不出事。但像我这种把模块插在 PC 的 PCIe 网卡上、机箱里本来就热的情况,Marvell 必死。
| 指标 | Marvell (老方案) | Broadcom (新方案) |
|---|---|---|
| 典型功耗 | 2.5W | 1.8W |
| 芯片温度 (无风道) | 85°C+ | 65°C 左右 |
| 高温降速阈值 | 约 75°C 开始丢包 | 约 80°C 开始降速 |
| 兼容性 (Cisco/Juniper) | 经常报 DOM not supported | 多数厂商原生支持 |
| 价格 | 便宜 (二手 50-80 元) | 稍贵 (全新 120-180 元) |
注意,Broadcom 的 1.8W 模块用的是 BCM8486x 系列芯片,这东西本来就是为 SFP+ 封装优化的。Marvell 那套方案是直接从 10GBase-T 交换机芯片移植过来的,压根没考虑过模块里那点散热面积。
更换步骤:从识别到验证
1. 确认你手里的是 Marvell 还是 Broadcom
最直接的办法:看模块标签上的 FCC ID 或者拆开看芯片。但更简单的——用 ethtool -m 读 DOM 信息。
# 查看 SFP+ 模块的厂商和型号
ethtool -m enp1s0f0 | grep -E "Vendor|Part Number"
# Marvell 典型输出:
# Vendor: MARVELL
# Part Number: 10GBase-T-SFP
# Broadcom 典型输出:
# Vendor: BROADCOM
# Part Number: BCM8486X
如果你的模块在 70°C 以上就开始报 CRC 错误,十有八九是 Marvell。
2. 物理更换:热插拔不是万能的
SFP+ 支持热插拔,但我建议你先关机再换。为什么?因为有些主板/网卡在热插拔时不会重新协商 PCIe 链路,导致模块识别失败。我遇到过三次,其中一次直接让系统卡在 pcieport 报错里起不来。
正确步骤:
- 关机,拔电源线(重要:有些主板在待机状态下仍然给 PCIe 供电)
- 按下机箱电源键 5 秒放电
- 拔出旧模块,插入新模块,听到清脆的咔哒声
- 开机,进系统
3. 驱动和固件:最容易被忽视的坑
Broadcom 模块兼容性比 Marvell 好,但也不是即插即用。如果你的交换机或网卡固件太老,可能认不出 Broadcom 的 DOM 信息。
以我的 Mellanox ConnectX-3 网卡为例:
# 检查当前固件版本
flint -d /dev/mst/mt4099_pciconf0 query
# 如果版本低于 2.42.5000,建议升级
# 下载固件后:
flint -d /dev/mst/mt4099_pciconf0 -i fw-ConnectX3-rel-2_42_5000.bin burn
对于 Linux 系统,确保 mlx4_core 或 mlx5_core 驱动是最新的。我用的是 Ubuntu 22.04,内核 5.15 自带的驱动就能完美识别。
4. 验证:别只看 iPerf3
很多人换了模块就跑一遍 iPerf3,看到 9.8Gbps 就以为搞定了。这是错的。iPerf3 是单线程测试,实际场景下多线程并发和长时间压力测试才能暴露问题。
我的验证脚本:
#!/bin/bash
# 10G 稳定性测试
echo "=== 1. 链路协商速度 ==="
ethtool enp1s0f0 | grep Speed
echo "=== 2. DOM 温度监控(持续 10 分钟) ==="
for i in {1..20}; do
ethtool -m enp1s0f0 | grep "Temperature"
sleep 30
done
echo "=== 3. 多线程 iPerf3(30 秒) ==="
iperf3 -c 192.168.10.2 -P 4 -t 30
echo "=== 4. 实际文件传输(Robocopy) ==="
# Windows 侧用 robocopy /MT:32 /J /LOG:test.log
# Linux 侧用 rsync -avP --progress
关键看两点:
- 温度是否稳定在 65°C 以下
- 长时间压力下是否有 CRC 错误:
ethtool -S enp1s0f0 | grep crc
实测数据:换了之后到底差多少?
我把新旧模块在同一个环境下做了对比测试:室温 28°C,机箱封闭,无额外风道。
| 测试项 | Marvell 模块 | Broadcom 模块 |
|---|---|---|
| 启动后 5 分钟温度 | 58°C | 42°C |
| 持续负载 30 分钟温度 | 82°C (开始丢包) | 63°C (稳定) |
| iPerf3 单线程 (30s) | 9.2 Gbps | 9.5 Gbps |
| iPerf3 多线程 4 并发 (30s) | 7.8 Gbps (大量重传) | 9.8 Gbps |
| Robocopy 大文件 (50GB) | 峰值 1.7GB/s,平均 900MB/s | 峰值 1.9GB/s,平均 1.8GB/s |
| 连续运行 72 小时后 CRC 错误 | 247 个 | 0 个 |
看到那个 247 个 CRC 错误了吗?这就是 Marvell 模块在高温下干的好事。每次重传都占用带宽,你的实际吞吐量就被这些错误吃掉了。
社区声音:Reddit 老哥们的血泪史
这次更换之前我翻了一圈 Reddit,发现我不是一个人。
r/homelab 上有个帖子说:“Robocopy hits 1.7GB/s but File Explorer transfers are stuck at 160MB/s”。底下一堆人回复:检查 SFP+ 模块温度。果然,楼主换了 Broadcom 模块之后,问题解决。
还有人在 r/hackernews 上讨论 10Gb/s Ethernet 的散热问题,结论很一致:如果你要在密闭空间或机箱内使用 10GBASE-T SFP+,Broadcom 是目前最稳妥的选择。Marvell 不是不能用,但你得给它配一个风扇吹着。
常见问题 FAQ
10G 以太网和 10G SFP+ 有什么区别?
10G 以太网是协议,定义了 10Gbps 的数据传输速率。SFP+ 是物理硬件,是一个小型可插拔收发器,插到交换机或网卡上,用来连接线缆。简单说:SFP+ 是实现 10G 以太网的一种物理接口形式。
SFP+ 支持 10Gb 吗?
SFP+ 就是 SFP 的增强版,支持 10Gbps 而不是 1Gbps。大多数情况下,SFP 模块可以插到 SFP+ 端口上使用,但链路会降速到 1Gbps。反过来不行——SFP 端口不支持 SFP+ 模块。
10 Gigabit Ethernet SFP+ 端口是什么?
就是支持 SFP+ 模块的 10Gbps 端口。你可以插光纤模块(SR/LR/ER/ZR)或者铜缆模块(10GBASE-T),连接交换机、路由器、服务器,实现高速数据传输。
交换机上的 SFP 是什么?
SFP 是小型可插拔接口,用来连接网络和存储交换机。带 SFP 端口的交换机可以连接不同类型和速率的光纤和以太网线缆。SFP+ 是它的高速版本。
最佳实践总结
| 场景 | 推荐方案 | 原因 |
|---|---|---|
| 数据中心交换机(有风道) | Marvell 或 Broadcom 均可 | 强制散热解决了高温问题 |
| 家庭实验室/机箱内 | Broadcom (1.8W) | 低功耗,被动散热也能扛住 |
| 长距离传输 (>30m) | 光纤 SFP+ (LR/ER) | 10GBASE-T 在 30m 以上信号衰减严重 |
| 短距离 (<5m) 且需要兼容旧设备 | 10GBASE-T SFP+ (Broadcom) | 可以直接插 Cat6a 网线,无需重新布线 |
| 预算极度有限 | 二手 Marvell + 加装散热片 | 但要做好随时降速的心理准备 |
最后的忠告
换模块这事儿看着简单,但坑是真的多。我这次还算顺利,Reddit 上有人换了 Broadcom 模块之后发现交换机固件太老不兼容,又得刷固件。还有人买到了假 Broadcom 模块(芯片被打磨过,实际还是 Marvell)。
所以我的建议是:
- 从正规渠道买,别贪便宜
- 买之前确认交换机的 SFP+ 兼容性列表
- 到手先测温度,别急着上负载
- 如果条件允许,直接上光纤方案,省心一万倍
10G 内网这东西,搞好了是享受,搞砸了是折磨。希望这篇文章能帮你少走点弯路。