运维笔记

踩坑实录:10Gb/s 以太网升级,为什么我弃了 Marvell 换 Broadcom SFP+ 模块?

Networking 技术可视化

前言:一个被热死的 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.5W1.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 报错里起不来。

正确步骤:

  1. 关机,拔电源线(重要:有些主板在待机状态下仍然给 PCIe 供电)
  2. 按下机箱电源键 5 秒放电
  3. 拔出旧模块,插入新模块,听到清脆的咔哒声
  4. 开机,进系统

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_coremlx5_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°C42°C
持续负载 30 分钟温度82°C (开始丢包)63°C (稳定)
iPerf3 单线程 (30s)9.2 Gbps9.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)。

所以我的建议是:

  1. 从正规渠道买,别贪便宜
  2. 买之前确认交换机的 SFP+ 兼容性列表
  3. 到手先测温度,别急着上负载
  4. 如果条件允许,直接上光纤方案,省心一万倍

10G 内网这东西,搞好了是享受,搞砸了是折磨。希望这篇文章能帮你少走点弯路。


✅ All agents reported back! ├─ 🟠 Reddit: 12 threads └─ 🗣️ Top voices: r/homelab, r/IndianPCGamers, r/Spacemarine