DPU简介
DPU是Data Processing Unit的简称,它是近几年发展起来的专用处理器,是CPU、GPU之后,数据中心场景中的第三颗重要的算力芯片,为诸如云平台等需要高带宽、低延迟、数据密集的计算场景提供计算能力。
为什么需要DPU
传统的云计算主机上,CPU除了负担客户购买的计算能力之外,还需要负担云平台中必要的支撑组件的运行,典型例子如云平台VPC网络数据转发平面的常见组件OVS。一般场景下,OVS运行在云计算主机上,基于VXLAN技术实现云平台VPC网络。在转发网络数据包的过程中,需要处理大量的计算工作,如流表匹配,数据包的封装与解封,checksum计算等,这些工作必然要消耗云主机大量的CPU资源。那么是否可以有一个额外的处理单元,替CPU分担这些支撑组件的运行工作呢?DPU就是这个额外的处理单元。DPU在物理上体现为一个插在主机上的PCIe设备,通过PCI总线与主机进行交互。DPU存在一个ARM架构的片上系统(SoC),SoC上可运行基础的Linux,如此类似OVS这样的云平台中的支撑组件则不必运行在主机中,而是运行在DPU的SoC上。这样主机上的CPU则可专注于处理客户的计算任务,使得CPU能够发挥其最大的计算能力为客户提供服务。
DPU的发展历程
Fungible最先于2016年提出DPU的概念,也是第一家专注于设计DPU的创业公司。Mellanox在2019年率先推出了基于BlueField的DPU,后Nvidia于2020年在收购Mellanox),同年提出BlueField 2.0 DPU,自此,DPU开始活跃起来,并吸引了大量国内外知名活创业公司的加入。国外公司的典型代表有Marvell、Pensando、Broadcom、Intel,国内的公司集中在创业团队,他们凭借自身的技术积累入局DPU,如中科驭数、星云智联等。2021年Nvidia退出了基于BlueField 3.0的DPU。
DPU的工作内容
DPU的角色类似于CPU的“小秘书”,主机将一些需要重复计算或者计算量大的“杂活”“累活”卸载给DPU进行处理。DPU卸载的内容常见的有:数据中心网络服务,比如前文提到的OVS虚拟交换、虚拟路由;数据中心存储服务,比如RDMA、NVMe(一种远程存储技术);数据中心的安全服务,比如防火墙、加解密等等。
DPU有自己的处理单元和硬件设备,前面提到的加密和虚拟交换等通常使用软件实现,并在CPU里运行。而DPU可以使用硬件实现并运行这些支撑组件,这样比在CPU运行要快好几个数量级,这也就是我们常常会听到的“硬件加速”。
此外,由于将支撑组件运行在了DPU中,而客户的应用则在CPU里运行,这样就把二者隔离开了,会带来很多安全和性能上的好处。
DPU在网络上的应用
DPU的前身是Smart NIC,Smart NIC是没有SoC的,运行不能脱离主机CPU,且其对网络的卸载主要是在数据面上,控制面仍然是主机CPU上的工作。Smart NIC在网络方面的可卸载的工作内容是由硬件设定好的,内容不可变,而DPU中引入了可编程硬件,使用方可根据自身需要自行决定硬件行为,而无需再受限于固定化程式化的硬件处理流程。在诸如云计算等数据中心不断提高对带宽要求的背景下,DPU相比于Smart NIC的灵活性使得其在网络上的应用更加的宽泛。典型的应用场景包括:
-
像OVS一样对数据包进行解析、匹配和处理
-
基于RoCE的RDMA数据传输加速
-
通过GPU-Direct加速器绕过CPU,将来自存储和其他GPU的数据通过网络直接传给GPU
-
TCP通信加速,包括RSS、LRO、checksum等操作
-
网络虚拟化的VXLAN和Geneve Overlay卸载和VTEP卸载
-
面向多媒体流、CDN和新的4K/8K IP视频的“Packet Pacing” 流量整形加速
-
电信Cloud RAN的精准时钟加速器,例如5T for 5G (精准时钟调度5G无线报文传输技术)功能
-
在线IPSEC和TLS加密加速,但不影响其它正在运行的加速操作
-
支持SR-IOV、VirtIO 和PV(Para-Virtualization)等虚拟化
-
安全隔离:如信任根、安全启动、安全固件升级以及基于身份验证的容器和应用的生命周期管理等