IPDK:可編程基礎設施時代的開源開發框架
DPU/IPU正在構建強大的可編程基礎設施,其市場的火熱催生出了一個新的開源項目OPI(Open Programmable Infrastructure,開放可編程基礎設施)。OPI主張“Unlocking Your Programmable Future”,旨在為基于DPU/IPU等可編程硬件承載的軟件開發框架培育一個由社區驅動的開放生態。2022年3月,首屆OPI Event行業會議在線舉行,OPI的子項目IPDK(Infrastructure Programmer Development Kit,基礎設施程序員開發工具包)成為了會議亮點之一。
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項目早日走向成熟。