Nvidia_BF_DPU简介
随着摩尔定律的减弱,加速计算和人工智能是较经济实惠的方式实现数据中心能源效率所需的工具。 让我们一起跟随和了解 NVIDIA Grace CPU、NVIDIA L4 GPU 和 NVIDIA BlueField DPU 如何推动数据中心迈向更高效的未来。
NVIDIA® BlueField® DPU 软件基于 BlueField BSP(主板支持包)构建,其中包括操作系统和 DOCA 框架。BlueField BSP 包括引导加载程序以及加载和设置软件组件的其他必需组件。BSP 将官方 BlueField 操作系统(Ubuntu 参考 Linux 发行版)加载到 DPU。DOCA 是用于开发应用程序和基础设施服务的软件框架和 SDK。DOCA 包括运行时库;Arm 的 DOCA 运行时堆栈支持各种存储、网络和安全加速。因此,客户可以在 BlueField 软件环境中无缝运行任何基于 Linux 的应用程序
术语
BFB: BlueField 引导程序
BF2功能图
NVIDIA 提供的软件使用户能够充分利用 NVIDIA® BlueField® DPU 并享受其提供的丰富功能集。使用 BlueField 软件包,用户可以:
- 在您的开发板上快速轻松地启动初始 Linux 映像
- 将现有应用程序移植到 BlueField 并为 BlueField 开发新应用程序
- 修补、配置、重建、更新或以其他方式自定义您的映像
- 利用开源开发工具,充分利用多样化且充满活力的 Arm 生态系统,调试、分析和调整其开发系统
与 NVIDIA® ConnectX® 互连相结合,BlueField 系列 DPU 设备包含一系列 Arm 内核,具体如下:
- 适用于 BlueField-2 DPU 的 64 位 Armv8 A72
- 适用于 BlueField-3 DPU 的 64 位 Armv8 A78
标准 Linux 发行版在 Arm 内核上运行,允许使用常见的开源开发工具。开发人员应该会发现编程环境熟悉且直观,这反过来又使他们能够快速有效地设计、实现和验证其控制平面和数据平面应用程序。
BlueField SW 附带 NVIDIA ® BlueField ® 参考平台。BlueField SW 是一个基于 Ubuntu Server 发行版的参考 Linux 发行版,扩展后包含适用于 Arm 的 MLNX_OFED 堆栈和支持 NVMe-oF 的 Linux 内核。该软件发行版可以无缝运行所有基于客户的 Linux 应用程序。
以下是 BlueField DPU 附带的其他软件元素:
- 适用于 BlueField 的 Arm 可信固件 (ATF)
- BlueField 的 UEFI
- 开发板上发现 OpenBMC for BMC (ASPEED 2500)
- MLNX_OFED 堆栈
- Mellanox MFT (迈络思固件工具集)
调试工具
BlueField DPU 包括对 Arm DS5 套件以及 CoreSight™ 调试的硬件支持。因此,各种商用现成 Arm 调试工具应与 BlueField 无缝协作。CoreSight 调试器接口可以通过 RSim 接口(如果使用 DPU,则为 USB 或 PCIe)访问,也可用于使用 OpenOCD 等开源工具进行调试。
BlueField DPU 还支持无处不在的 GDB。
基于 BlueField 的存储设备
BlueField 软件为构建 JBOF(Just a Bunch of Flash)存储系统提供了基础,包括 NVMe-oF 目标软件、PCIe 交换机支持、NVDIMM-N 支持和 NVMe 磁盘热插拔支持。
BlueField SW 允许启用 ConnectX 卸载,例如 RDMA/RoCE、T10 DIF 签名卸载、纠删码卸载、iSER、存储空间直通等。
BF架构
BlueField 架构是两个预先存在的标准现成组件: Arm AArch64 处理器和ConnectX-6 Dx(用于 BlueField-2)、ConnectX-7(用于 BlueField-3)或网络控制器的组合,每个组件都有其拥有丰富的软件生态系统。因此,BlueField 中几乎所有程序员可见的软件接口都来自各个组件的现有标准接口。
Interfaces_on_BlueField-version-1-modificationdate-1702597769530-api-v2.png
Arm 相关接口(包括与启动过程、PCIe 连接和加密操作加速相关的接口)是标准 Linux on Arm 接口。这些接口由 NVIDIA 提供的驱动程序和低级代码启用,作为 BlueField 软件的一部分,该软件已交付并上游到相应的开源项目(例如 Linux)。
ConnectX 网络控制器相关接口(包括用于以太网和 InfiniBand 连接、RDMA 和 RoCE、以及存储和网络操作加速的接口)与支持 ConnectX 独立网络控制器卡的接口相同。这些接口利用 MLNX_OFED 软件堆栈和基于 InfiniBand 动词的接口来支持软件。
系统连接
BlueField DPU 有多个连接(见下图)。用户可以通过不同的控制台、网络连接和 JTAG 连接器连接到系统。
System_Connections-version-1-modificationdate-1702597768883-api-v2.png
系统控制台
BlueField DPU 具有多个控制台接口:
- 串行控制台 0(Arm 内核上的/dev/ttyAMA0 )
- 需要电缆连接至 DPU 25G 上的 NC-SI 连接器
- 需要串行电缆连接到 DPU 100G 上的 3 针连接器
- 连接BF1200平台BMC串口
- 串行控制台 1(Arm 内核上的/dev/ttyAMA1 ,但仅适用于 BF1200 参考平台)
- ttyAMA1 是 BF1200 前面板上的控制台连接
- 虚拟 RSim 控制台(Arm 内核上的/dev/hvc0 )由以下驱动驱动
- RSim PCIe 驱动程序(不需要电缆,但系统无法处于隔离模式,因为隔离模式会禁用所需的 PCIe 设备)
- RSim USB 驱动程序(需要 USB 电缆)
- 无法同时使用 PCIe 和 USB RShim 接口
rshim驱动:
systemctl status rshim
rshim设备:
网络接口
DPU 具有多个网络接口。
- ConnectX 以太网/InfiniBand 接口
- RSim 虚拟以太网接口(通过 USB 或 PCIe)虚拟以太网接口对于调试、安装或基本管理非常有用。主机 DPU 服务器上的接口名称取决于主机操作系统。Arm 内核上的接口名称通常为“tmfifo_net0”。虚拟网络接口只能以大约 10MB/s 的速度运行,不应考虑用于生产网络流量。
- OOB 以太网接口基于 BlueField-2 的平台具有 OOB 1GbE 管理端口。该接口提供与 Arm 内核的 1Gb/s 全双工连接。接口名称通常为“oob_net0”。该接口支持与 Arm 内核的 TCP/IP 网络连接(例如,用于文件传输协议、SSH 和 PXE 启动)。OOB 端口不是 BlueField-2 引导流的路径(即,将 BFB 推送到此端口的任何尝试都将不起作用)。
操作模式
NVIDIA® BlueField® DPU 有多种操作模式:
- DPU 模式,或嵌入式功能 (ECPF) 所有权,其中嵌入式 Arm 系统控制 NIC 资源和数据路径(默认)
- 零信任模式是 ECPF 所有权的延伸,对主机端有额外的限制
- 从外部主机的角度来看,DPU 的行为与适配器卡完全相同的NIC 模式
内核表示模型
参考: NVIDIA 文档中心 NVIDIA 网络 网络软件 NVIDIA BlueField DPU BSP v4.5.0 内核表示模型
警告: 该模式仅适用于DPU工作在DPU模式下
BlueField® DPU 使用 netdev 表示器来映射每一项主机端物理和虚拟功能。
- 作为隧道,将Arm核上运行的虚拟交换机或应用程序的流量传递到主机侧的相关PF或VF。
- 作为通道来配置嵌入式开关的规则到相应的代表功能。
这些表示器用作连接到 OVS 或在 Arm 内核上运行的任何其他虚拟交换机的虚拟端口。
当在DPU 模式下运行时,我们看到 DPU 的每个网络端口都有 2 个表示器:一个用于上行链路(P0),另一个用于主机端 PF(pf0hpf, 即使在主机端未探测 PF,也会创建 PF 表示器)。对于在主机端创建的每个 VF,将在 Arm 端创建相应的表示器。代表者的命名约定如下:
- 上行链路代表:p<port_number>
- PF 代表:pf<port_number>hpf
- VF 表示:pf<端口号>vf<功能号>
下图展示了主机端暴露的 PCIe 功能与表示器之间的映射。为了简单起见,显示了单个端口模型(为第二个端口重复)。
Kernel_Representors_Model-version-1-modificationdate-1702597804603-api-v2.png
红色箭头演示了通过表示器的数据包流,而绿色箭头演示了将转向规则卸载到嵌入式交换机时的数据包流。有关更多详细信息,请参阅交换机卸载部分。
警告: 主机功能 (PF/VF) 的 MTU 必须小于上行链路和相应 PF/VF 表示器的 MTU。例如,如果主机 PF MTU 设置为 9000,则上行链路和 PF 表示器都必须设置为高于 9000。
典型应用场景(卸载)
物理主机与虚拟功能VF以及DPU网络设备代表间的映射结果如下
参考
DPU软件概述: https://docs.nvidia.com/networking/display/bluefielddpuosv450/bluefield+software+overview
DOCA文档: https://docs.nvidia.com/networking/dpu-doca/index.html#dpu-os
安装DPU操作系统: https://docs.nvidia.com/networking/display/bluefielddpuosv450/deploying+bluefield+software+using+bfb+from+host
BF驱动列表: https://docs.nvidia.com/networking/display/bluefielddpuosv450/installing+popular+linux+distributions+on+bluefield
主机端的配置参考(带有DPU的主机): https://docs.nvidia.com/networking/display/bluefielddpuosv450/host-side+interface+configuration
DPU操作模式: https://docs.nvidia.com/networking/display/bluefielddpuosv450/modes+of+operation
在 NVIDIA BlueField-2 DPU 上使用 OpenShift 进行 OVN/OVS 卸载: https://access.redhat.com/articles/6804281#masthead
DPU演化: https://zhuanlan.zhihu.com/p/402706136
史上最全DPU厂商大盘点(完整版)https://cloud.tencent.com/developer/article/2055768
使用 NVIDIA BlueField DPU 和 DPDK 开发应用程序: https://developer.nvidia.com/blog/developing-applications-with-nvidia-bluefield-dpu-and-dpdk/
DPU简介(历史): https://blog.csdn.net/gongtxy/article/details/128740434
晓兵(ssbandjl)
博客: https://cloud.tencent.com/developer/user/5060293/articles | https://logread.cn | https://blog.csdn.net/ssbandjl
晓兵技术杂谈(系列)
https://cloud.tencent.com/developer/user/5060293/video