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口(靠近电源接口的端口),并检查外部主机防火墙