IPDK是一个开源的、与厂商无关的驱动程序和API框架,可管理由CPU、IPU、DPU或交换机构建的基础设施。DPU/IPU应该是下一个十年的可编程重要硬件载体,IPDK能否成为DPU/IPU的通用软件平台呢?
DPU/IPU软件生态
DPU/IPU持续爆火,引得越来越多的玩家相继入局,除英伟达、英特尔和AMD等国外厂商,阿里、腾讯、锐捷、浪潮、芯启源、星云智联等本土厂商也持续发力。
但目前市场上DPU/IPU软件生态非常复杂,存在框架多、接口杂、开发难度高等问题。对最终用户和供应商来说,需要一个统一的开放API来支持业务应用开发和基础设施管理。
IPDK
IPDK应运而生,它屏蔽了底层硬件的差异,可以支持任何定义了相关接口类型的设备,并给上层应用提供一致性的访问接口。IPDK将管理基础设施的所有功能进行抽象封装,形成了“接口三明治”(如下图)。“三明治”底层对接SDK驱动程序、编译器后端等,顶部定义了一组RPC接口以支撑不同的应用场景。
IPDK在Linux中运行,使用SPDK、DPDK和P4等成熟的开源工具,实现网络虚拟化、存储虚拟化、工作负载调配、信任根和平台中的卸载功能。IPDK为提高性能、优化资源和确保基础设施的安全提供了一个通用平台。另外,IPDK可以抽象出硬件的压缩和加密功能,以及底层的存储加速。
IPDK标准接口
IPDK包括两大开放接口,一种是Infrastructure Application Interface(基础设施应用接口),另一种是Target Abstraction Interface (TAI)(目标设备抽象接口),这个概念有点像SDN里的北向接口与南向接口。
基础设施应用接口
基础设施应用接口基于以下两个设计原则:
- 基于标准:根据基础设施应用程序使用的现有标准进行开发设计
- 基于RPC:应用程序可以运行在本地、远程或两者结合
基础设施应用接口也可以被认为是DPU/IPU容器的北向接口,代表IPDK中支持的不同RPC接口,其中包括:
- P4Runtime : 用于可编程网络的数据平面
- OpenConfig :用于配置物理端口、虚拟设备、QoS和IPsec等
- Redfish / REST API : 用于基础设施设备生命周期和平台管理
- SPDK Storage Protocol : 用于软件定义存储的RPC接口
- Managed Kubernetes : 用于控制Kubernetes基础设施组件的RPC接口
- Envoy xDS : 用于配置Envoy的RPC接口
基础设施应用接口的示例实现如下图所示:
目标设备抽象接口
目标设备抽象接口 (TAI) 是为基础设施硬件设备定义的一个抽象模型,基础设施应用程序可以通过TAI管理调度设备资源。
目标抽象接口基于以下三个设计原则:
- 基于标准:根据可编程目标的现有标准进行开发设计
- 基于驱动程序和库组件:基础设施中的应用程序与 TAI 的库组件连接,以对控制平面进行编程。在计算实例和基础设施中的应用程序都使用设备驱动程序进行数据平面操作,例如移动数据包或存储数据。
- 基于功能:根据功能接口进行开发设计,这样应用程序可以在部署目标之前预先查询目标以了解其功能。
目标设备抽象接口由以下部分组成:
- 虚拟设备:虚拟设备使用 PCI 热插拔与计算实例交互
- 生命周期控制:控制平面接口用于管理运行基础设施设备的更新、监控、重置和恢复。
- 加速器控制:用于加速器的控制平面接口,供基础设施应用程序使用。
IPDK应用场景
IPDK主要的应用场景包括:
IaaS:实现跨虚拟机、容器和裸机的虚拟网络、存储和加密技术等;
IaaS场景下的网络虚拟化
IaaS场景下的存储虚拟化
IaaS场景下的主机虚拟化
PaaS:实现容器网络、代理服务等;
PaaS场景下的CSI & CNI
PaaS场景下的Calico Running on IPU
PaaS场景下的Envoy on IPU
Inline Acceleration:实现防火墙、IDS、网络遥测、5G/无线基础设施、AI/ML等。
IPDK与DOCA
从前文我们也可以看出,IPDK与DOCA非常相似。
DOCA(Data Center Infrastructure-on-a-Chip Architecture)是英伟达专为BlueField DPU打造的一个高度可编程的SDK开发平台工具,为开发者提供简单开发接口,程序员可以利用 API、库和示例代码来创建和加速应用程序,从而丰富DPU的应用开发生态。英伟达的专家将DOCA类比为数据中心服务器领域的CUDA。
IPDK与DOCA相比,其独特之处在于它是一个面向DPU/IPU 等硬件进行抽象封装的公共开发套件。由于一致的抽象性,它可以在任何硬件上运行,除英特尔的IPU外,还包括英特尔 Xeon服务器及其他厂商的DPU。例如,Marvell展示了他们在其Octeon DPU上运行的IPDK。但目前IPDK的生态建设还处于起步阶段,而DOCA在市场上已经有一定的用户量。
展 望
未来IPDK项目能否顺利发展,业界人士认为还要考虑到以下几点:
- 从技术角度,后续IPDK接口封装是否全面?能否实现向后兼容?
- 项目的发展还要需求牵引,未来会不会出现一个杀手级应用真正引爆IPDK?
- 目前类似软件堆栈百家争鸣,如何打动和吸引更多厂家参与到IPDK?如何平衡多方的利益?
IPDK项目的愿景十分宏大,但其最终能否成为像OpenStack、Kubernetes那样的明星开源项目,甚至成为DPU/IPU的通用软件平台,还需多方参与,共同推动,期待IPDK项目早日走向成熟。