News
USB 3.2 Type-C 转 10G SFP+ 网卡项目启动
08/24/2026
实战教程 / RDMA
Broadcom BCM57416 双口 10G RJ45 网卡
Broadcom BCM57416 双口 10G RJ45 网卡
Windows 与 Linux 下 RDMA 配置完整手册
覆盖 Windows Server 2012R2-2022 与 RHEL / Rocky / Ubuntu,含 NVM 硬件开关、SMB Direct、perftest 真流量验收
核心结论:BCM57416 的 RDMA 走 RoCE,硬件层必须先靠 UEFI HII / CCM / niccli 把 NVRAM 里的 support_rdma 打开,操作系统里的设置只是第二层开关。双口分别对应 scope 0 和 scope 1。
零、前置共识(两系统通用)
BCM57416 属于 Broadcom NetXtreme-E 系列,其 RDMA 实现为 RoCE(v1 / v2),由 L2 驱动 bnxt_en + RoCE 驱动 bnxt_re 成对工作。
| 层级 | 作用 | 说明 |
|---|---|---|
| UEFI HII / CCM / niccli NVRAM | support_rdma 全局 + per-PF | 硬件总开关;双口分别对应 --scope 0 与 --scope 1 |
| NVRAM dcbx_mode / lldp_nearest_bridge | 把 ETS/PFC 下发到硬件 | 出厂默认 0x0,Windows 下不设则 QoS 只在 OS 里"看起来绿" |
| 操作系统内开关 | 第二层启用 | 仅当上一层已开才生效 |
注意:很多"命令全跑通但跑不出带宽"的案例,根因都在 NVM 这一层。
一、Windows 篇
全部在 Administrator PowerShell 中执行;Get-NetAdapterRdma 是 Windows 下 RDMA 的官方入口。
1.1 查看当前 RDMA 状态(三步诊断)
# ① 确认双口名称(后面所有命令都用这个 Name)
Get-NetAdapter | Where-Object {$_.InterfaceDescription -match "Broadcom"}
# ② 核心判定命令
Get-NetAdapterRdma
# ③ 微软标准四联体检
Get-NetAdapter
Get-NetAdapterRSS
Get-NetAdapterRdma
Get-NetAdapterHardwareInfo
判读标准:Get-NetAdapterRdma 输出中双口 Enabled = True 表示已就绪;任意一口 False 则进入 1.2 节。
1.2 开启 RDMA
# 替换为你机器上真实的接口名
Enable-NetAdapterRdma -Name "SLOT 5 Port 1"
Enable-NetAdapterRdma -Name "SLOT 5 Port 2"
# 全局兜底
Set-NetOffloadGlobalSetting -NetworkDirect Enabled
| Advanced 项 | 生产推荐值 |
|---|---|
| Network Direct Functionality | Enabled / 1 |
| Network Direct Technology | RoCEv2(v1 仅老环境兼容) |
1.3 关闭 RDMA
Disable-NetAdapterRdma -Name "SLOT 5 Port 1"
Disable-NetAdapterRdma -Name "SLOT 5 Port 2"
1.4 NVRAM 硬件层校验(关键)
niccli -i 1 nvm --getoption support_rdma --scope 0
niccli -i 1 nvm --getoption support_rdma --scope 1
niccli -i 1 nvm --setoption support_rdma --scope 0 --value 1
niccli -i 1 nvm --setoption support_rdma --scope 1 --value 1
1.5 SMB Direct 真流量验收
Get-SmbMultichannelConnection | fl *RDMA*
# 成功标志: ClientRdmaCapable : True 且 ServerRdmaCapable : True
| 编号 | 画面 | 红框标注 |
|---|---|---|
| W-1 | Get-NetAdapterRdma 输出 | 双口 Enabled = True |
| W-2 | 设备管理器 Advanced 页 | Network Direct Technology = RoCEv2 |
| W-3 | niccli support_rdma 两行返回 | 均为 1 |
| W-4 | Get-SmbMultichannelConnection | 两条 *RdmaCapable : True |
二、Linux 篇(RHEL 系 / Ubuntu / Proxmox 通用)
2.1 查看状态
lsmod | grep -E 'bnxt_en|bnxt_re'
rdma link
ibv_devices
ibv_devinfo -d bnxt_re0
2.2 开启 RDMA
# ① 用户态工具
sudo dnf install -y libibverbs-utils infiniband-diags perftest rdma-core
# ② NVM 双口写入
sudo niccli -i 1 nvm --setoption support_rdma --scope 0 --value 1
sudo niccli -i 1 nvm --setoption support_rdma --scope 1 --value 1
sudo reboot
# ③ 重载驱动
sudo modprobe bnxt_en
sudo modprobe bnxt_re
sudo systemctl enable --now rdma
版本坑:RHEL 7.x / 老 inbox bnxt_en 必须先 rpm -e kmod-bnxt_en 再装同源新包,版本不匹配会触发 Couldn't start port。
2.3 关闭 RDMA
sudo modprobe -r bnxt_re
echo "blacklist bnxt_re" | sudo tee /etc/modprobe.d/blacklist-bnxt_re.conf
sudo dracut -f
sudo reboot
2.4 无损网络配套
sudo dcbtool sc eno1np0 pfc up:3 e:1
sudo ip link set eno1np0 mtu 9000
2.5 真流量验收
# 服务端
ib_write_bw -d bnxt_re0 -x 3 -F --report_gbits -p 1800
# 客户端(换真实 IP)
ib_write_bw -d bnxt_re0 -x 3 -F --report_gbits -p 1800 192.168.10.11
| 编号 | 画面 | 红框标注 |
|---|---|---|
| L-1 | lsmod | grep bnxt | bnxt_re 行存在 |
| L-2 | rdma link | 双口 state ACTIVE |
| L-3 | ibv_devinfo | PORT_ACTIVE / Ethernet |
| L-4 | ib_write_bw 收尾 | 稳定 Gb/s 数值 |
三、Windows 与 Linux 运维速查表
| 维度 | Windows | Linux |
|---|---|---|
| 查看命令 | Get-NetAdapterRdma | rdma link + ibv_devices |
| 开启 | Enable-NetAdapterRdma | modprobe bnxt_en && modprobe bnxt_re |
| 关闭 | Disable-NetAdapterRdma | modprobe -r bnxt_re + blacklist |
| NVM 工具 | niccli.exe | niccli / bnxtnvm |
| 业务验证 | Get-SmbMultichannelConnection | ib_write_bw / rping |
四、排障 FAQ
Q1:命令都对,但 ibv_devinfo 一直 PORT_DOWN?
八成是 NVM 里 dcbx_mode 还是 0x0,补写后冷重启一次。
Q2:Ubuntu 24.04 + Kernel 6.8 启动极慢、FW STALL?
bnxt_re 与新内核兼容问题,不需要 RDMA 直接 blacklist。
Q3:Windows SMB 静默回退 TCP?
检查 SmbServerNetworkInterface 是否仍标记 RDMA Capable;2012 R2 需补 KB2919355。
Q4:对端是 Mellanox?
BCM57416 两端统一锁 RoCEv2 + DSCP 26 / Pri 3,不要混 v1。