从零部署NVIDIA BlueField-3 DPU:硬件安装与DOCA环境搭建实战

1. 认识NVIDIA BlueField-3 DPU

如果你第一次接触NVIDIA BlueField-3 DPU(以下简称BF3),可能会被它"数据处理器"的定位搞懵。简单来说,它就像服务器里的"瑞士军刀"——既是智能网卡,又能当微型服务器用。我在实际项目中用它做过网络加速、安全隔离,甚至替代传统服务器跑轻量级应用。

BF3的核心优势在于卸载:把CPU不擅长的网络、存储、安全任务交给它处理。比如一个典型应用场景:在虚拟化环境中,用BF3处理网络虚拟化(OVS offload),能让宿主机的CPU负载从80%降到20%。硬件规格上,它集成了16核Arm CPU、100Gbps网络吞吐,以及NVIDIA的加速引擎。

DOCA(Data Center Infrastructure-on-a-Chip Architecture)则是它的"操作系统"。最新DOCA 2.5版本对Ubuntu 18.04的支持最稳定——这也是为什么我们选择这个组合,而不是盲目追新。我见过有人强行用DOCA 2.6配Ubuntu 20.04,结果光驱动兼容性问题就折腾了一周。

2. 硬件安装避坑指南

2.1 安全准备

第一次安装BF3时,我犯过直接热插拔的错误——结果导致主板PCIe槽烧毁。必须先给服务器断电!具体步骤:

  1. 通知业务方停机窗口
  2. 通过IPMI或物理开关彻底断电(不是软关机)
  3. 等待至少30秒让电容放电
  4. 佩戴防静电手环

2.2 物理安装

BF3采用标准PCIe 3.0 x16接口,但要注意:

  • 优先选择直连CPU的插槽(避免通过PCH芯片组)
  • 确保机箱有足够散热空间(建议保留相邻槽位空闲)
  • 双端口100G网卡需要接QSFP28光纤(建议用NVIDIA原厂线缆)

安装后先别急着上电,检查三个关键点:

  1. 金手指完全插入(我遇到过没插到底导致链路训练失败)
  2. 辅助供电接口接牢(部分型号需要8pin电源)
  3. 散热片无遮挡(温度过高会触发降频)

3. 宿主机环境配置

3.1 彻底清理旧驱动

很多问题都源于驱动残留。执行这些命令前,建议先备份/etc/modprobe.d/下的配置文件:

# 移除所有DOCA相关包 for f in $(dpkg --list | grep doca | awk '{print $2}'); do apt remove --purge $f -y done # 清理Mellanox驱动 ./ofed_uninstall.sh --force apt-get autoremove # 导入密钥 wget http://www.mellanox.com/downloads/ofed/RPM-GPG-KEY-Mellanox-SHA256 apt install rpm rpm --import RPM-GPG-KEY-Mellanox-SHA256

3.2 安装DOCA 2.5

Ubuntu 18.04必须用DOCA 2.5系列。下载时注意区分host和DPU的安装包:

# 安装host端repo sudo dpkg -i doca-host-repo-ubuntu1804_2.5.0-0.0.1.2.5.0108.1.23.10.1.1.9.0_amd64.deb # 更新并安装工具链 sudo apt-get update sudo apt install doca-tools

验证安装时,我最常检查两个服务:

  1. mst status -v应该能看到PCI设备
  2. systemctl status rshim需显示active

4. DPU系统部署实战

4.1 网络配置

RShim是连接host和DPU的虚拟通道,配置时容易踩两个坑:

  • IP地址必须在192.168.100.0/30子网
  • 子网掩码必须是255.255.255.252
ifconfig tmfifo_net0 192.168.100.1 netmask 255.255.255.252 up

如果ping不通192.168.100.2,尝试重置DPU配置:

sudo mlxconfig -d /dev/mst/mt41692_pciconf0.1 -y reset

4.2 烧录BFB镜像

选择镜像时要注意:

  • DOCA 2.5对应BSP 4.5.0
  • Ubuntu 22.04是DPU上的系统(与host无关)

用pv命令可以显示烧录进度:

sudo apt-get install pv sudo bfb-install --rshim rshim0 \ --bfb DOCA_2.5.0_BSP_4.5.0_Ubuntu_22.04-1.23-10.prod.bfb \ --config bf.cfg | pv -pet

烧录完成后,通过ssh登录DPU:

ssh ubuntu@192.168.100.2

默认密码通常在镜像文档里,记得首次登录后立即修改。

5. 验证与调试

5.1 基础检查

登录DPU后运行这些命令:

# 查看内核版本 uname -a # 检查DOCA服务 systemctl list-units | grep doca # 测试网络带宽 iperf3 -s & # 在DPU上运行 iperf3 -c 192.168.100.2 -t 60 # 在host运行

5.2 常见问题处理

我遇到过最棘手的三个问题及解法:

  1. DPU无法启动:检查host的BIOS设置,确保PCIe链路速度设为Auto
  2. RShim服务异常:重新加载驱动modprobe -r rshim; modprobe rshim
  3. DOCA应用崩溃:检查/var/log/syslog,通常是因为lib版本不匹配

建议把DPU的串口日志接出来(通过IPMI或物理串口),启动时按ESC进入uboot可以查看详细错误。

6. 进阶配置技巧

6.1 性能调优

/etc/doca/doca.conf中调整这些参数:

# 增加DPU内存预留(默认4GB) dma_memory_pool_size=8192 # 启用RDMA加速 enable_rdma=1

6.2 安全加固

DPU的Arm核心也需要防护:

# 安装基础安全工具 sudo apt install fail2ban unattended-upgrades # 配置防火墙 sudo ufw allow from 192.168.100.1 proto tcp to any port 22 sudo ufw enable

最后提醒:每次升级DOCA前,一定要备份/etc/doca目录。我吃过亏,重写一遍配置真的很费时间。现在我的BF3集群已经稳定运行半年,处理着每秒百万级的网络包——当初部署时的折腾都是值得的。