Winyao
Blogs

Broadcom BCM57416 · 查看与开启 RDMA / RoCE 完整实操教程 (Windows Server & Linux 分轨 · 含状态判定命令)

05/25/2026

Broadcom BCM57416 双口 10G RJ45 网卡 RDMA 配置完整手册

Broadcom BCM57416 双口 10G RJ45 网卡 RDMA 配置完整手册

Windows Server 2012R2-2022 RHEL / Rocky / Alma / Ubuntu RoCE v1/v2 SMB Direct / perftest 发布日期: 2026-10-20 | 编码: UTF-8 | 字体: Arial

〇、前置共识(两系统通用,务必先读)

BCM57416 属于 Broadcom NetXtreme-E 系列,其 RDMA 实现为 RoCE(v1 / v2),由 L2 驱动 bnxt_en + RoCE 驱动 bnxt_re 成对工作。

层级作用说明
UEFI HII / CCM / niccli NVRAMsupport_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 节。

附加全局开关核对:

Get-NetOffloadGlobalSetting        # NetworkDirect 应为 Enabled
Get-WindowsOptionalFeature -Online -FeatureName SMBDirect   # State = Enabled

1.2 开启 RDMA(推荐 PowerShell,可批量)

# 替换为你机器上真实的接口名
Enable-NetAdapterRdma -Name "SLOT 5 Port 1"
Enable-NetAdapterRdma -Name "SLOT 5 Port 2"

# 等效旧写法(老驱动也认)
Set-NetAdapterAdvancedProperty -Name "SLOT 5 Port 1" `
    -RegistryKeyword *NetworkDirect -RegistryValue 1
Set-NetAdapterAdvancedProperty -Name "SLOT 5 Port 2" `
    -RegistryKeyword *NetworkDirect -RegistryValue 1

# 全局兜底
Set-NetOffloadGlobalSetting -NetworkDirect Enabled

图形界面路径(截图备选):设备管理器 → 网络适配器 → Broadcom NetXtreme-E ×× → 属性 → Advanced

Advanced 项生产推荐值
Network Direct FunctionalityEnabled / 1
Network Direct TechnologyRoCEv2(v1 仅老环境兼容)

1.3 关闭 RDMA

# 干净关闭(不停网卡可加 -NoRestart)
Disable-NetAdapterRdma -Name "SLOT 5 Port 1"
Disable-NetAdapterRdma -Name "SLOT 5 Port 2"

# 或整体关闭 NetworkDirect
Set-NetOffloadGlobalSetting -NetworkDirect Disabled

1.4 NVRAM 硬件层校验(关键)

使用 Broadcom 驱动包内 niccli.exe:

niccli --list_devices                                    # 拿 PCI index
niccli -i 1 nvm --getoption rdma_capable                 # 全局能力,必须 = 1
niccli -i 1 nvm --getoption support_rdma --scope 0      # 口1
niccli -i 1 nvm --getoption support_rdma --scope 1      # 口2
# 若返回 0,写入并重启:
niccli -i 1 nvm --setoption support_rdma --scope 0 --value 1
niccli -i 1 nvm --setoption support_rdma --scope 1 --value 1

同步检查 DCBX/LLDP(Windows 必做):

niccli -i 1 nvm --getoption dcbx_mode
niccli -i 1 nvm --getoption lldp_nearest_bridge
# 任一仍为 0x0 → QoS 不会下发到硬件

1.5 SMB Direct 真流量验收

# 两端都开
Enable-WindowsOptionalFeature -Online -FeatureName SMBDirect
Set-SmbServerConfiguration -EnableMultiChannel $true
Set-SmbClientConfiguration -EnableMultiChannel $true

# 拷大文件期间看这一行
Get-SmbMultichannelConnection | fl *RDMA*
# 成功标志: ClientRdmaCapable : True 且 ServerRdmaCapable : True

Windows 截图清单

编号画面红框标注
W-1Get-NetAdapterRdma 输出双口 Enabled = True
W-2设备管理器 Advanced 页Network Direct Technology = RoCEv2
W-3niccli … support_rdma 两行返回均为 1
W-4Get-SmbMultichannelConnection两条 *RdmaCapable : True
W-5perfmon → RDMA Activity 计数器ActiveConnections 非零

二、Linux 篇(RHEL 系 / Ubuntu / Proxmox 通用)

2.1 现状查看(五条命令定生死)

lsmod | grep -E 'bnxt_en|bnxt_re|ib_core|ib_uverbs'   # 四条全在才算驱动层 OK
rdma link                                              # 现代发行版首选
ibv_devices                                            # verbs 视图
ibv_devinfo -d bnxt_re0                                # 看 port 1 state
ethtool -i eno1np0                                     # 核对 bnxt_en 版本

判读:rdma link 显示 bnxt_re0/1 state ACTIVE physical_state LINK_UP 即成功;ibv_devices 为空但 ethtool 正常,几乎一定是 NVM support_rdma 未开。

2.2 开启 RDMA(完整干净流程)

# ① 用户态工具
# RHEL/Rocky/Alma
sudo dnf install -y libibverbs-utils infiniband-diags perftest rdma-core
# Ubuntu / Proxmox
sudo apt install -y ibverbs-utils infiniband-diags perftest rdma-core

# ② NVM 双口写入(Broadcom 驱动包自带 niccli)
sudo niccli --list_devices
sudo niccli -i 1 nvm --setoption support_rdma --scope 0 --value 1
sudo niccli -i 1 nvm --setoption support_rdma --scope 1 --value 1
# 提示 Reboot required → 必须重启宿主机

sudo reboot

重启后重载驱动对(会瞬时断口所属链路,建议在带外控制台操作):

sudo modprobe -r bnxt_re
sudo modprobe -r bnxt_en
sudo modprobe bnxt_en
sudo modprobe bnxt_re
lsmod | grep bnxt      # 再次确认四条
sudo systemctl enable --now rdma
版本坑:RHEL 7.x / 老 inbox bnxt_en 必须先 rpm -e kmod-bnxt_en 再装同源新包,bnxt_en 与 bnxt_re 版本不匹配会触发 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

# RHEL 系
sudo dracut -f
# Debian / Ubuntu / Proxmox
sudo update-initramfs -u && sudo update-grub
sudo reboot

2.4 无损网络配套(两端 + 交换机必须一致)

# 例:RoCEv2 走 Priority 3 / DSCP 26
sudo dcbtool sc eno1np0 pfc up:3 e:1
sudo ip link set eno1np0 mtu 9000

双口同子网测试注意:Linux 下两口同子网 perftest 可能撞 ARP flux,测试时建议分两个子网或临时 ip link set eno2np1 down。

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

或用 rping -s / rping -c -a <server_ip> 做无依赖握手。

Linux 截图清单

编号画面红框标注
L-1lsmod | grep bnxtbnxt_re 行存在
L-2rdma link双口 state ACTIVE
L-3ibv_devinfoPORT_ACTIVE / link_layer: Ethernet
L-4niccli … support_rdmascope 0 / 1 均 1
L-5ib_write_bw 收尾稳定 Gb/s 数值,无 CM timeout

三、Windows ↔ Linux 运维速查表

维度WindowsLinux
查看命令Get-NetAdapterRdmardma link + ibv_devices
开启Enable-NetAdapterRdmamodprobe bnxt_en && modprobe bnxt_re
关闭Disable-NetAdapterRdmamodprobe -r bnxt_re + blacklist
NVM 工具niccli.exeniccli / bnxtnvm
双口寻址两次传不同 -Name--scope 0 / --scope 1
业务验证Get-SmbMultichannelConnectionib_write_bw / rping
QoS 下发前提dcbx_mode + lldp ≠ 0bnxt_setupcc.sh 或 dcbtool

四、排障 FAQ(来自社区高频工单)

Q1:命令都对,但 ibv_devinfo 一直 PORT_DOWN?

八成是 NVM 里 dcbx_mode 还是 0x0,按 1.4 / 2.2 节补写后 冷重启 一次,热重置不够。

Q2:Ubuntu 24.04 / Proxmox 8.2 + Kernel 6.8 启动极慢、FW STALL?

已知 bnxt_re 与新内核 infiniband 栈兼容问题,不需要 RDMA 直接走 2.3 节 blacklist 即可。

Q3:Windows 跑着跑着 SMB 静默回退 TCP?

先 Get-SmbServerNetworkInterface / Get-SmbClientNetworkInterface 看是否还标记 RDMA Capable;Server 2012 R2 需补 KB2919355,2016/2019 避开同时开 SMB Encryption。

Q4:对端是 Mellanox?

BCM57416 两端统一锁 RoCEv2 + DSCP 26 / Pri 3,不要混 v1。

本文档由系统自动生成,适用于企业内网知识库 / CMS 新闻发布 / 技术博客归档。如需拆分为 Windows 单独版与 Linux 单独版,请联系管理员。