DPU/IPU正在构建强大的可编程基础设施,其火热的市场催生了一个新的开源项目OPI(OpenProgrammableInfrastructure,开放可编程基础设施)。OPI倡导“UnlockingYourProgrammableFuture”,旨在为基于DPU/IPU等可编程硬件的软件开发框架培育社区驱动的开放生态系统。2022年3月,首届OPIEvent行业大会在线召开,OPI的子项目IPDK(InfrastructureProgrammerDevelopmentKit,基础设施程序员开发工具包)成为大会亮点之一。IPDK是一种开源、供应商中立的驱动程序和API框架,用于管理从CPU、IPU、DPU或交换机构建的基础设施。DPU/IPU应该是未来十年重要的可编程硬件载体。IPDK能否成为DPU/IPU的通用软件平台?DPU/IPU软件生态DPU/IPU持续爆发,吸引着越来越多的玩家,除了英伟达、英特尔、AMD等国外厂商外,阿里、腾讯、锐捷、浪潮、启源、星云智联等本土厂商也在不断发力。然而,目前市场上的DPU/IPU软件生态非常复杂,存在框架多、接口复杂、开发难度高等问题。对于最终用户和供应商,需要一个统一的开放API来支持业务应用开发和基础设施管理。IPDKIPDK应运而生,它屏蔽了底层硬件的差异,可以支持任何定义了相关接口类型的设备,为上层应用提供一致的访问接口。IPDK将管理基础设施的所有功能进行抽象和封装,形成一个“接口三明治”(如下图所示)。“三明治”底层连接SDK驱动、编译后端等,顶层定义了一套RPC接口,支持不同的应用场景。IPDK运行在Linux上,使用SPDK、DPDK、P4等成熟的开源工具实现网络虚拟化、存储虚拟化、工作负载配置、信任根、平台内卸载等功能。IPDK为提高性能、优化资源和保护基础架构提供了一个通用平台。另外,IPDK可以抽象出硬件的压缩和加密功能,以及底层的存储加速。IPDK标准接口IPDK包括两个开放接口,一个是InfrastructureApplicationInterface(基础设施应用接口),另一个是TargetAbstractionInterface(TAI)(目标设备抽象接口)。这个概念有点像SDN中的北向接口和南向接口。基础架构API基础架构API基于两个设计原则:基于标准:根据基础架构应用程序使用的现有标准进行开发和设计基于RPC:应用程序可以在本地、远程或两种基础架构API的组合运行它也可以被视为DPU/IPU容器的北向接口,代表IPDK支持的不同RPC接口,包括:P4Runtime:可编程网络的数据平面OpenConfig:用于配置物理端口、虚拟设备、QoS和IPsec等。基础设施设备生命周期和平台管理SPDKStorageProtocol:软件定义存储的RPC接口ManagedKubernetes:控制Kubernetes基础设施组件的RPC接口EnvoyxDS:配置Envoy的RPC接口基础设施应用接口示例实现如下图所示:目标设备抽象接口目标设备抽象接口rface(TAI)是为基础设施硬件设备定义的抽象模型,基础设施应用程序可以通过它来管理和调度设备资源。目标抽象接口基于以下三个设计原则:基于标准:设计是根据可编程目标的现有标准开发的基于驱动程序和库组件:基础设施中的应用程序与TAI的库组件接口以对控制平面进行编程。计算实例和基础设施中的应用程序使用设备驱动程序进行数据平面操作,例如移动数据包或存储数据。基于功能:基于功能接口开发设计,以便应用程序可以在部署之前预先查询目标以了解其功能。目标设备抽象接口由以下组件组成:虚拟设备:虚拟设备使用PCI热插拔与计算实例交互生命周期控制:控制平面接口用于管理正在运行的基础设施设备的更新、监控、重置和恢复。加速器控制:加速器的控制平面接口,由基础设施应用程序使用。IPDK应用场景IPDK的主要应用场景包括:IaaS:实现跨虚拟机、容器和裸机的虚拟网络、存储和加密技术;IaaS场景网络虚拟化、IaaS场景存储虚拟化、IaaS场景主机虚拟化PaaS:实现容器网络、代理服务等;PaaS场景中的CSI&IPaaS场景中运行在IP上的CalicoPaaS场景中IPUInlineAcceleration上的Envoy:实现防火墙、IDS、网络遥测、5G/无线基础设施、AI/ML等。IPDK和DOCA我们从之前的文章中也可以看出IPDK和DOCA非常相似。DOCA(DataCenterInfrastructure-on-a-ChipArchitecture)是Nvidia专门为BlueFieldDPU打造的高度可编程的SDK开发平台工具。它为开发者提供了一个简单的开发界面。程序员可以使用API、库和示例代码来创建和加速应用程序,从而丰富DPU应用程序开发生态系统。Nvidia专家在数据中心服务器领域将DOCA与CUDA进行了比较。与DOCA相比,IPDK的独特之处在于它是对DPU/IPU等硬件进行抽象封装的公共开发包。由于一致的抽象,它可以在任何硬件上运行,除了英特尔的IPU之外,还包括英特尔至强服务器和其他供应商的DPU。例如,Marvell展示了他们的IPDK在他们的OcteonDPU上运行。但目前IPDK的生态建设还处于起步阶段,而DOCA已经在市场上拥有一定数量的用户。展望IPDK项目未来能否顺利发展,业内人士认为还需要考虑以下几点:从技术角度看,后续IPDK接口包是否全面?能否实现向后兼容?一款杀手级应用的出现真的引爆了IPDK?目前,关于类似软件堆栈的思想流派有数百种。如何打动并吸引更多厂商参与IPDK?如何平衡多方利益?IPDK项目的愿景非常宏伟,但能否最终成为明星开源项目,甚至成为DPU/IPU的通用软件平台,还需要多方的参与共同推动。期待IPDK项目早日成熟。
