主流DPU架构实现及技术对比
本文参考自“未来网络:SmartNIC DPU技术白皮书”,DPU是以数据为中心 IO密集的专用处理器。DPU对现有的SmartNIC 做了整合,能看到很多以往 SmartNIC 的影子,但明显高于之前任何一个 SmartNIC 的定位。DPU可以实现多种功能。以 Nvidia BlueField 架构为例,其功能模块如下图。
(1)接口与驱动
对于每个 BlueField DPU 网络端口,都开放了 2 个物理 PCIe 网络功能:一个供嵌入式 Arm 子系统使用,一个供 PCIe 上的 Host 使用。mlx5 驱动程序及其相应的软件堆栈必须加载到两台主机(Arm和 Host 服务器)上。每台主机上运行的操作系统都会探测驱动程序。
(2)工作模式
DPU 模式或嵌入式功能(ECPF)所有权,其中嵌入式 Arm 系统控制 NIC 资源和数据路径(默认)。受限模式是 ECPF 所有权的扩展,对主机端有额外限制。NIC 模式是从外部主机的角度来看,DPU 的行为与适配卡完全一样。分离模式将网络功能分配给 Arm 内核和 x86主机内核。
(3)内核表示模型
BlueField DPU 使用 netdev 表示器来映射每个主机端物理和虚拟功能:作为隧道将运行在 Arm 内核上的虚拟交换机或应用程序的流量传递到 Arm 侧的相关 PF 或 VF;作为通道将嵌入式交换机配置为相应的代表功能的规则。这些表示器用作连接到 OVS 或在 Arm 内核上运行的任何其他虚拟交换机的虚拟端口。
(4)多主机
在多主机模式下,每个主机接口最多可划分为 4 个独立的 PCIe接口。所有接口将共享同一个物理端口,并由同一个多物理功能交换机(multi-physical function switch,MPFS)管理。每个主机都有自己的电子交换机(e-switch)并控制自己的流量。
(5)Virtual Switch on DPU
NVIDIA BlueField 支持 ASAP技术。它利用了上面提到的表示器。BlueField SW package 包括已经支持 ASAP2的 OVS 安装。在 Arm内核上运行的虚拟交换机允许通过 Arm 内核传递进出主机功能的所有流量,同时执行 OVS 支持的所有操作。ASAP2允许通过对 NIC 嵌入式交换机进行编程来卸载数据路径,并避免需要通过 Arm 内核传递每个数据包。控制平面与使用标准 OVS 保持相同。
(6)Virtual Switch on DPU
网络绑定可以将两个或多个网络接口组合成一个接口。如果其中一个接口发生故障,它会增加网络吞吐量、带宽并提供冗余。BlueField DPU 可以选择以对主机透明的方式在 Arm 端配置网络绑定。在这种配置下,主机只能看到一个 PF。
(7)配置上行 MTU
要在 SmartNIC 模式下运行时配置端口 MTU,需要限制 BlueField DPU 的 host。一旦 host 受到限制,端口 MTU 可以通过更改上行链路表示器(p0 或 p1)的 MTU 进行配置。
(8)链路聚合
网络绑定可以将两个或多个网络接口组合成一个接口。如果其中一个接口发生故障,它会增加网络吞吐量、带宽并提供冗余。BlueField DPU 可以选择以对主机透明的方式在 Arm 端配置网络绑定。在这种配置下,主机只能看到一个 PF。
(9)可扩展功能(scalable function,SF)
SF 是一种轻量级功能,具有部署它的父 PCIe 功能。一个 mlx5 SF 有自己的功能能力和自己的资源。这意味着 SF 有自己的专用队列(txq、rxq、cq、eq),这些队列既不共享也不从父 PCIe 功能中抢占。使用 SF 不需要系统 BIOS 的特殊支持。SF 与 PCIe SR-IOV 虚拟功能共存。SF 不需要启用 PCIe SR-IOV。
(10)主机和 Arm 系统上的 RDMA 堆栈支持
Arm Linux 系统上预装了完整的 RDMA 堆栈。BlueField DPU 在Separate Host Mode 和 Embedded CPU Mode 中支持 RDMA(RoCE 或InfiniBand)。
(11)控制 host PF 和 VF 参数
1)设置 hostPF 和 VF 默 MAC 地址,从 Arm 中,用户可以配置主机中物理功能的 MAC 地址。发送命令后,用户必须在主机中重新加载 NVIDIA 驱动才能看到新配置的 MAC 地址。系统重启后 MAC地址恢复到 FW 中的默认值;
2)设置主机 PF 和 VF 链路状态,Port状态可以配置为 Up、Down 或 Follow。
3)查询配置,PF 和 VF 的配置可以通过一定指令查询。
(12)BlueField DPU 支持 DPDK
DPDK 是一组快速处理数据包的开发平台及接口(Data Plane Development Kit,DPDK)。BlueField DPU 支持 DPDK 以使用其提供的开发平台和接口。
(13)BlueField DPU 上的 SNAP
NVIDIA BlueField SNAP(软件定义网络加速处理)技术支持NVMe 存储的硬件加速虚拟化。BlueField SNAP 将网络存储呈现为本地 NVMe SSD,模拟 PCIe 总线上的 NVMe 驱动器。主机OS/Hypervisor 使用其标准 NVMe 驱动程序不知道通信终止,不是由物理驱动器,而是由 BlueField SNAP。任何逻辑都可以通过 BlueField SNAP 框架应用于数据,并通过以太网或 InfiniBand 协议通过网络传输到存储目标。BlueField SNAP 将独特的硬件加速存储虚拟化与 DPU的高级网络和可编程能力相结合。BlueField SNAP 与 DPU 一起实现了解决存储和网络效率和性能的应用世界。
(14)正则表达式加速
BlueField-2 DPU 支持高速 RegEx 加速。这允许主机将多个RegEx 作业卸载到 DPU。此功能可从主机或 Arm 端使用。使用此功能的应用程序通常会将已编译的规则集加载到 BlueField RegEx 引擎并发送作业进行处理。对于每个作业,RegEx 引擎将返回一个匹配列表(例如匹配规则、偏移量、长度)。用于加载规则和发送 RegEx 作业的示例和标准 API 可通过 DPDK 获得。
(15)压缩加速(Compression Acceleration)
(16)公钥加速
NVIDIA BlueField DPU 集成了多个公钥加速(PKA)引擎来卸载Arm 主机的处理器,提供 PK 算法的高性能计算。BlueField 的 PKA可用于广泛的安全应用。它可以协助 SSL 加速,或安全的高性能 PK签名生成器/检查器和证书相关操作。
(17)IPsec 功能
BlueField DPU 可以透明地从主机 CPU 卸载 IPsec 操作。这意味着主机不需要知道网络流量在接入线路之前是加密的,或者在离开线路之后是解密的。IPsec 操作可以在 DPU 的软件(Arm 内核或加速器块中)中运行。
(18)QoS 配置
BlueField DPU 支持限速 Host PF 和 VF、限速 SF、限速 VF 组来实现配置 QoS 组、SF QoS、VF QoS 和 PF QoS。
(19)VirtIO-net 模拟设备(Emulated Devices)
此功能使用户能够在连接了 BlueField-2 DPU 的系统中创建VirtIO-net 模拟 PCIe 设备。这是由 DPU 中的 virtio-net-controller 软件模块完成的。Virtio-net 模拟设备允许用户在插入 DPU 的主机系统中热插拔多达 16 个 virtio-net PCIe PF 以太网 NIC 设备或 504 个 virtio-net PCIe VF 以太网 NIC 设备。
(20)深度报文检测
深度包检测(Deep packet inspection,DPI)是一种在数据包通过受监控的网络检查点时检查其全部内容的方法。DPI 是用于 NVIDIA BlueField-2 DPU 的 DOCA SDK 软件解决方案的一部分。DPI 提供了一种更强大的机制来执行网络数据包过滤,因为它可用于识别和阻止隐藏在网络数据流中的一系列复杂威胁,例如,恶意应用程序,恶意软件数据泄露尝试,内容政策违规,应用识别和负载均衡。
(21)共享 RQ 模式
在创建 1 个发送队列(SQ)和 1 个接收队列(RQ)时,每个表示器每个通道消耗约 3MB 内存。将其缩放到所需的 1024 个表示器(SF 和/或 VF)将需要约 3GB 的单通道内存。3MB 的主要部分是由RQ 分配(接收缓冲区和 SKB)贡献的。因此,为了有效利用内存,实现了共享 RQ 模式,以便 PF/VF/SF 表示器共享上行链路表示器拥有的接收队列。
微信扫码关注该文公众号作者