1. DPU环境搭建与基础配置

任务目标

在x86服务器上完成BlueField-3 DPU的固件更新、网络接口识别与基础连通性测试,建立可用的DPU开发环境。本案例覆盖从物理安装后到P0/P1端口可通信的完整最小闭环。

环境与依赖

  • 服务器:x86_64架构,已安装BlueField-3 DPU(本文以BF3-PN为例),通过PCIe连接
  • 操作系统:Ubuntu 22.04 LTS(宿主机),内核≥5.15
  • 工具包:MLNX_OFED(版本≥23.10)或NVIDIA DOCA SDK(版本≥2.5),二者选一即可
  • 固件包:BlueField-3固件镜像(.zip格式,从NVIDIA官网获取对应型号版本)

实施步骤

1. 确认DPU识别状态

物理安装DPU并开机后,首先确认PCIe设备已被系统识别:

lspci -d 15b3: | grep -i bluefield
# 预期输出示例(实际以安装型号为准):
# 01:00.0 Ethernet controller: Mellanox Technologies BlueField-3 SmartNIC
# 01:00.1 Ethernet controller: Mellanox Technologies BlueField-3 SmartNIC

若输出为空,请检查PCIe插槽供电与BIOS中PCIe枚举设置。

2. 固件更新

固件更新需在宿主机上使用mlxup工具完成。从NVIDIA固件下载页获取对应固件zip包并解压:

# 安装mlxup(若OFED已安装则跳过)
wget https://www.mellanox.com/downloads/tools/mlxup
chmod +x mlxup

# 执行固件更新(需root权限)
sudo ./mlxup -i /path/to/firmware/BF3-PN_fw_xxx.zip
# 更新完成后必须重启服务器使固件生效
sudo reboot

固件更新期间DPU的ARM子系统会重启,请勿断电。更新完成后通过mlxup -q查询确认固件版本已变更。

3. 网络接口识别与命名

固件更新并重启后,确认DPU的两个物理端口在宿主机侧的网络接口名称:

# 查看Mellanox设备对应的网络接口
ls /sys/bus/pci/devices/0000:01:00.0/net/
ls /sys/bus/pci/devices/0000:01:00.1/net/
# 通常输出为enp1s0f0np0和enp1s0f1np1(实际名称取决于PCIe地址)

记录两个接口名称,后续配置将使用enp1s0f0np0和enp1s0f1np1作为示例。

4. 配置IP地址并测试连通性

为两个端口配置静态IP(示例使用192.168.100.0/24网段),然后通过外部设备进行连通性测试:

# 配置IP(以root执行)
sudo ip addr add 192.168.100.1/24 dev enp1s0f0np0
sudo ip link set enp1s0f0np0 up
sudo ip addr add 192.168.100.2/24 dev enp1s0f1np1
sudo ip link set enp1s0f1np1 up

# 查看接口状态
ip link show enp1s0f0np0
# 确认state UP且link detected yes

使用外部测试主机(IP设为192.168.100.10/24)通过网线连接DPU的P0端口,执行连通性测试:

# 在外部测试主机上执行
ping -c 4 192.168.100.1
# 预期输出:4 packets transmitted, 4 received, 0% packet loss

5. 验证DPU ARM子系统

通过SSH登录DPU的ARM系统,确认带外管理通道正常:

# 默认ARM IP为192.168.100.1(与P0口共享IP),使用ubuntu用户登录
ssh ubuntu@192.168.100.1
# 密码默认为ubuntu(首次登录需修改)
# 登录后确认系统信息
uname -a
# 预期输出包含aarch64架构信息

验证方法与判定标准

验证项操作通过条件
PCIe识别lspci -d 15b3:能看到BlueField-3设备条目
固件版本mlxup -q固件版本与下载版本一致
接口链路ip link show两个端口均显示state UP
数据通路外部主机ping 192.168.100.1丢包率0%
ARM子系统SSH登录192.168.100.1成功登录且uname显示aarch64

常见问题

  • 固件更新失败:确认zip包完整且与DPU型号匹配;更新期间保持电源稳定
  • 接口未识别:检查PCIe链路是否正常(lspci -vvv查看LinkSta),必要时重新插拔DPU
  • ping不通:确认网线连接的是P0口(靠近电源接口的端口),并检查外部主机防火墙