文章目录
1 背景
随着AI时代的爆发,在数据中心对高性能数据通信需求极大激发,尤其是随着2019 Mellanox被NVIDIA收购后,NVIDIA进一步结合DPU和GPU的战略布局越来越强烈。DOCA之于DPU,就相当于CUDA之于GPU。2007年NVIDIA发布CUDA架构,现在生态壁垒之高,可想NVIDIA在DPU上的雄心。本文是针对NVIDIA在DPU上的软件框架DOCA的一个面面观,争取通过本文,看看DOCA是什么?他的三件套?以及背后软件定义硬件加速的理解和对NVIDIA构建DPU生态有一个体感和概念上的认识。更多关于DOCA的文章后期逐渐更新。
2 要点
- DOCA: Data Center-on-a-Chip Architecture,片上数据中心架构。片上的表层意思就是将数据中心放到一个芯片上,代表NVIDIA对数据中心的心得一种架构。主要是针对DPU提出的一种架构概念。是NVIDIA在DPU生态上的布局,DOCA之于DPU,就相当于CUDA之于GPU。2007年NVIDIA发布CUDA架构,现在生态壁垒之高,可想NVIDIA在DPU上的雄心。本质是一种架构。软件定义数据中心的架构。
- DOCA SDK:是2021年NVIDIA 发布的 NVIDIA DOCA的SDK(软件开发工具),目的是为开发人员提供了一种对 BlueField DPU 进行编程的简单方法。并且兼容。 实际就是在HOST上和DPU上运行的软件框架。分为DOCA-Host 软件包和BlueField DPU软件包,前者为主机提供NV网卡和DPU所有必需的库和驱动程序,后者提供在BlueField DPU的包。
- 传统的软件定义数据中心方法会带来巨大的性能负担,很容易消耗 30% 或更多的服务器 CPU 内核。为了解决这个问题,NVIDIA BlueField 数据处理单元 (DPU) 卸载、加速和隔离数据中心基础设施,同时实现突破性的网络、安全性和存储性能。DPU对应的软件框架便是DOCA SDK。
3 DOCA的几个视角查看
3.1 在纯BlueField DPU上的视角看DOCA
下图是BlueField DPU上的架构图,主要分成了3层, BPS+DOCA+APPS。
其中BPS是平台软件,就是标准系统的三件套(ATF+Bootloader+OS)外加DPU上的网卡的固件。
3.1.1 先看BPS层
BPS层其实就是一个标准的服务器的底层软件架构:
ATF是arm trust firmware是 ARM多级启动流程中的EL1启动的bootrom。 然后拉起UEFI的bootloader,然后bootloader拉起OS。
其中Customer OS和BlueField OS是二选一,可以使用官方提供的OS(默认是Ubuntu)也包括有Centos等多个,也可以是用户自定义的OS,官方提供了bfb-build工具来编译os,比如国产麒麟系统都可以移植上去,他的本质是一个arm芯片的服务器,只是需要搭配一些驱动程序。
另外底层还有其他几个Firmware是因为DPU还有其他几个硬件,比如BF2上实际包含了ConnectX6, BF3上的CX7,BF4上的CX8。还有就是BlueField的DPU有BMC,有的是板载的,有的是集成的,BMC也有相关的芯片。比如BF2使用的是Aspeed的2500的BMC芯片,那么就需要这个2500的Firmware,NV官网也提供了BMC的固件,可以通过bfb升级,值得注意的是BMC的版本需要和NIC版本这些配合。上面提到的EROT是External Root of Trust,是NVIDIA提供的一个安全flash和启动机制的硬件单元,是BMC的一部分。
3.1.2 再看APPs层
APPs层其实就是基于DOCA构建的用户态程序,值得注意的是,这个图中是运行在DPU上的。这里就不详细说明,后期会更新关于DOCA的各种应用。
3.1.3 最后来看DOCA层
可以看到DOCA层是在OS上的一层,他提供了一种软件抽象,将硬件和OS的差异屏蔽,提供一套统一的框架,让应用层可以以一种类似服务或者接口或者库的方式,来构建应用。DOCA的功能结合DPU的硬件能力,在不断地迭代,可以在官网上看到DOCA版本迭代非常快。
可以看到这张架构图中DOCA包括了最上层对外提供的服务,中间层为支撑服务提供的库libs,以及为了支撑库和硬件结合的Drivers。由此可以看到DOCA本质是一个软件定义,硬件加速的典范,并且把这个硬件加速后的硬件设备又用软件框架定义出来给用户态使用,并构建出生态。
3.2 从软件包角度看DOCA
DOCA 框架包括 DOCA-Host 包和用于 BlueField Arm 的 BlueField 软件包。
其中DOCA-Host 是安装在主机服务器上的软件包,其中包括不同的 DOCA 安装配置文件。
其中BlueField 软件包 是安装在 BlueField Arm 内核上的软件包,也叫BF-Bundle(捆绑),不过这不是以后会经常见到的BFB(那个是BlueField bootstream)。
比如在DOCA下载页面(https://developer.nvidia.com/doca-downloads)可以看到选择DOCA Host后一路选择下去,最终选择对应的HOST上的DOCA HOST软件包
同理如果选择BF-bundle也就是DPU上的软件,图中其他几个BF-FW-Bundle BF-BMC以后文章介绍,这个还涉及到对DPU上硬件模块了解后再熟悉。先暂且了解就是天面提到的BF-Bundle
3.3 再从DOCA提供的服务器、库、驱动细节看DOCA
下面第二张图是DOCA提供的服务器、库、驱动细节(基于2.8)。要看这张图之前,需要先看第一张硬件模块图。可以看到第二张硬件图(图中是BlueField 3的DPU)中由周边的BMC、PCIe的Switch(为什么有他?因为PF、VF、SF以及devEmulate等一系列功能需求,psw硬件至于pcie,就好比设备上的eswitch硬件之于ovs),还有DPA是一个数据路径加速单元也是最核心的点,用来做各种卸载的主要模块,猜测是上百个独立的核(不知是RISC-V还是其他?),然后就是各种可编程硬件加速单元,比如ovs加速的ASAP2。以及各种硬件加速器比如加解密,比如正则。 在网上看就是ARM核心(比如图中应该是BF3常见的arm A78的16核配置)以及跑在上面的OS和DOCA。
再来看DOCA的这张细节图,就比较明确了。其实本质就是一个软件定义硬件加速,再软件实现的模式。
可以看到DOCA三件套:服务、库、驱动。
- 其中Serviers提供了DPU管理、OVS、P4等(其中Orchestration配合K8s等编排软件、Firefly事件同步服务、HBN是Host-based Networking)
- Libs是对硬件能力的抽象,比如有加速、PCC可编程的,DPA数据路径加速的,存储,通用通道,其中RiverMax等模块还没涉及过以后有机会再写文章介绍。
- Drivers更是对硬件驱动起来的实现,比如网络部分的ASAP2(Mellanox Accelerated Switching and Packet Processing),DPDK和XLIO对tcp和udp的加速。包括安全部分,存储部分,UCX(Unified Communication X)的p2p通信框架,UCC(Unified Collective Communication )的统一集合通信,以及最常用的RDMA,还有对DPA编程框架的FlexIO框架等各个模块。
再来几张子模块的架构图作为一个参考,更多子模块以后逐渐分析。
比如DPA编程框架Flexio:
比如UCX:
比如HBN模块:
各个模块参考:
ASAP2:
https://network.nvidia.com/files/doc-2020/sb-asap2.pdf
CUX:
https://docs.nvidia.com/doca/sdk/doca+ucx/index.html
Firefly:
https://catalog.ngc.nvidia.com/orgs/nvidia/teams/doca/containers/doca_firefly
HBN:
https://catalog.ngc.nvidia.com/orgs/nvidia/teams/doca/containers/doca_hbn
https://docs.nvidia.com/doca/sdk/nvidia+doca+hbn+service+guide/index.html
FlexIO:
http://nvidia.zhidx.com/content-6-3209.html
https://docs.nvidia.com/doca/archive/doca-v1.5.1/pdf/flexio-samples.pdf
https://docs.nvidia.com/doca/archive/doca-v1.5.0/flexio-sdk-programming-guide/index.html
4. DOCA HOST的三种配置
因为DOCA的功能如前面提到本质是软件定义硬件加速,所以依赖硬件。所以DOCA的功能在不同硬件上支持各异。
为了支持不同的用例,DOCA 中涵盖了 DOCA-Host 的各种安装配置文件,主要是3种:
- doca-all 包括全部DOCA包,除了包括doca-netowrk和ofed外,还包括了doca的2件套:dirve如何lib。所有 DOCA 库、驱动程序和工具都包含在 doca-all 中。在主机上安装 doca-all 时,BlueField 平台可以使用所有 DOCA 库和驱动程序,而 ConnectX 设备只能使用 doca-all 超集中的 doca-ofed 和 doca-networking 子集,具体取决于网卡设备的功能。
- doca-networking DOCA网络相关的包,除了包括DOCA-OFED,还有mlnx-dpdk、ovs等。
- doca-ofed 包括DOCA OFED驱动相关的包,也就是以前的MLNX-OFED。包括驱动和工具(比如mft等)。
具体实际场景如何选择doca profiles呢?
一个简单的组合可以是: - Bluefiled DPU上选择DOCA all,因为他的硬件能够支持全。
- 如果只是ConnectX网卡,选择DOCA networking,如果未来要替换可以直接使用doca all,只是有些功能不能用,比如DPA
具体使用那种,参考官网上对不同OS的支持情况。参考:https://docs.nvidia.com/doca/sdk/nvidia+doca+profiles/index.html
5. 综述
本文是针对NVIDIA在DPU上的软件框架DOCA的一个面面观,争取通过本文,看看DOCA是什么?他的三件套?以及背后软件定义硬件加速的理解和对NVIDIA构建DPU生态有一个体感和概念上的认识。更多关于DOCA的文章后期逐渐更新。
参考:
https://developer.nvidia.com/blog/nvidia-delivers-doca-sdk-to-accelerate-and-secure-next-generation-data-center/