IPDK:可編程基礎(chǔ)設(shè)施時代的開源開發(fā)框架
DPU/IPU正在構(gòu)建強大的可編程基礎(chǔ)設(shè)施,其市場的火熱催生出了一個新的開源項目OPI(Open Programmable Infrastructure,開放可編程基礎(chǔ)設(shè)施)。OPI主張“Unlocking Your Programmable Future”,旨在為基于DPU/IPU等可編程硬件承載的軟件開發(fā)框架培育一個由社區(qū)驅(qū)動的開放生態(tài)。2022年3月,首屆OPI Event行業(yè)會議在線舉行,OPI的子項目IPDK(Infrastructure Programmer Development Kit,基礎(chǔ)設(shè)施程序員開發(fā)工具包)成為了會議亮點之一。
IPDK是一個開源的、與廠商無關(guān)的驅(qū)動程序和API框架,可管理由CPU、IPU、DPU或交換機構(gòu)建的基礎(chǔ)設(shè)施。DPU/IPU應(yīng)該是下一個十年的可編程重要硬件載體,IPDK能否成為DPU/IPU的通用軟件平臺呢?
DPU/IPU軟件生態(tài)
DPU/IPU持續(xù)爆火,引得越來越多的玩家相繼入局,除英偉達(dá)、英特爾和AMD等國外廠商,阿里、騰訊、銳捷、浪潮、芯啟源、星云智聯(lián)等本土廠商也持續(xù)發(fā)力。
但目前市場上DPU/IPU軟件生態(tài)非常復(fù)雜,存在框架多、接口雜、開發(fā)難度高等問題。對最終用戶和供應(yīng)商來說,需要一個統(tǒng)一的開放API來支持業(yè)務(wù)應(yīng)用開發(fā)和基礎(chǔ)設(shè)施管理。
IPDK
IPDK應(yīng)運而生,它屏蔽了底層硬件的差異,可以支持任何定義了相關(guān)接口類型的設(shè)備,并給上層應(yīng)用提供一致性的訪問接口。IPDK將管理基礎(chǔ)設(shè)施的所有功能進行抽象封裝,形成了“接口三明治”(如下圖)。“三明治”底層對接SDK驅(qū)動程序、編譯器后端等,頂部定義了一組RPC接口以支撐不同的應(yīng)用場景。
IPDK在Linux中運行,使用SPDK、DPDK和P4等成熟的開源工具,實現(xiàn)網(wǎng)絡(luò)虛擬化、存儲虛擬化、工作負(fù)載調(diào)配、信任根和平臺中的卸載功能。IPDK為提高性能、優(yōu)化資源和確?;A(chǔ)設(shè)施的安全提供了一個通用平臺。另外,IPDK可以抽象出硬件的壓縮和加密功能,以及底層的存儲加速。
IPDK標(biāo)準(zhǔn)接口
IPDK包括兩大開放接口,一種是Infrastructure Application Interface(基礎(chǔ)設(shè)施應(yīng)用接口),另一種是Target Abstraction Interface (TAI)(目標(biāo)設(shè)備抽象接口),這個概念有點像SDN里的北向接口與南向接口。
基礎(chǔ)設(shè)施應(yīng)用接口
基礎(chǔ)設(shè)施應(yīng)用接口基于以下兩個設(shè)計原則:
- 基于標(biāo)準(zhǔn):根據(jù)基礎(chǔ)設(shè)施應(yīng)用程序使用的現(xiàn)有標(biāo)準(zhǔn)進行開發(fā)設(shè)計
- 基于RPC:應(yīng)用程序可以運行在本地、遠(yuǎn)程或兩者結(jié)合
基礎(chǔ)設(shè)施應(yīng)用接口也可以被認(rèn)為是DPU/IPU容器的北向接口,代表IPDK中支持的不同RPC接口,其中包括:
- P4Runtime : 用于可編程網(wǎng)絡(luò)的數(shù)據(jù)平面
- OpenConfig :用于配置物理端口、虛擬設(shè)備、QoS和IPsec等
- Redfish / REST API : 用于基礎(chǔ)設(shè)施設(shè)備生命周期和平臺管理
- SPDK Storage Protocol : 用于軟件定義存儲的RPC接口
- Managed Kubernetes : 用于控制Kubernetes基礎(chǔ)設(shè)施組件的RPC接口
- Envoy xDS : 用于配置Envoy的RPC接口
基礎(chǔ)設(shè)施應(yīng)用接口的示例實現(xiàn)如下圖所示:
目標(biāo)設(shè)備抽象接口
目標(biāo)設(shè)備抽象接口 (TAI) 是為基礎(chǔ)設(shè)施硬件設(shè)備定義的一個抽象模型,基礎(chǔ)設(shè)施應(yīng)用程序可以通過TAI管理調(diào)度設(shè)備資源。
目標(biāo)抽象接口基于以下三個設(shè)計原則:
- 基于標(biāo)準(zhǔn):根據(jù)可編程目標(biāo)的現(xiàn)有標(biāo)準(zhǔn)進行開發(fā)設(shè)計
- 基于驅(qū)動程序和庫組件:基礎(chǔ)設(shè)施中的應(yīng)用程序與 TAI 的庫組件連接,以對控制平面進行編程。在計算實例和基礎(chǔ)設(shè)施中的應(yīng)用程序都使用設(shè)備驅(qū)動程序進行數(shù)據(jù)平面操作,例如移動數(shù)據(jù)包或存儲數(shù)據(jù)。
- 基于功能:根據(jù)功能接口進行開發(fā)設(shè)計,這樣應(yīng)用程序可以在部署目標(biāo)之前預(yù)先查詢目標(biāo)以了解其功能。
目標(biāo)設(shè)備抽象接口由以下部分組成:
- 虛擬設(shè)備:虛擬設(shè)備使用 PCI 熱插拔與計算實例交互
- 生命周期控制:控制平面接口用于管理運行基礎(chǔ)設(shè)施設(shè)備的更新、監(jiān)控、重置和恢復(fù)。
- 加速器控制:用于加速器的控制平面接口,供基礎(chǔ)設(shè)施應(yīng)用程序使用。
IPDK應(yīng)用場景
IPDK主要的應(yīng)用場景包括:
IaaS:實現(xiàn)跨虛擬機、容器和裸機的虛擬網(wǎng)絡(luò)、存儲和加密技術(shù)等;
IaaS場景下的網(wǎng)絡(luò)虛擬化
IaaS場景下的存儲虛擬化
IaaS場景下的主機虛擬化
PaaS:實現(xiàn)容器網(wǎng)絡(luò)、代理服務(wù)等;
PaaS場景下的CSI & CNI
PaaS場景下的Calico Running on IPU
PaaS場景下的Envoy on IPU
Inline Acceleration:實現(xiàn)防火墻、IDS、網(wǎng)絡(luò)遙測、5G/無線基礎(chǔ)設(shè)施、AI/ML等。
IPDK與DOCA
從前文我們也可以看出,IPDK與DOCA非常相似。
DOCA(Data Center Infrastructure-on-a-Chip Architecture)是英偉達(dá)專為BlueField DPU打造的一個高度可編程的SDK開發(fā)平臺工具,為開發(fā)者提供簡單開發(fā)接口,程序員可以利用 API、庫和示例代碼來創(chuàng)建和加速應(yīng)用程序,從而豐富DPU的應(yīng)用開發(fā)生態(tài)。英偉達(dá)的專家將DOCA類比為數(shù)據(jù)中心服務(wù)器領(lǐng)域的CUDA。
IPDK與DOCA相比,其獨特之處在于它是一個面向DPU/IPU 等硬件進行抽象封裝的公共開發(fā)套件。由于一致的抽象性,它可以在任何硬件上運行,除英特爾的IPU外,還包括英特爾 Xeon服務(wù)器及其他廠商的DPU。例如,Marvell展示了他們在其Octeon DPU上運行的IPDK。但目前IPDK的生態(tài)建設(shè)還處于起步階段,而DOCA在市場上已經(jīng)有一定的用戶量。
展 望
未來IPDK項目能否順利發(fā)展,業(yè)界人士認(rèn)為還要考慮到以下幾點:
- 從技術(shù)角度,后續(xù)IPDK接口封裝是否全面?能否實現(xiàn)向后兼容?
- 項目的發(fā)展還要需求牽引,未來會不會出現(xiàn)一個殺手級應(yīng)用真正引爆IPDK?
- 目前類似軟件堆棧百家爭鳴,如何打動和吸引更多廠家參與到IPDK?如何平衡多方的利益?
IPDK項目的愿景十分宏大,但其最終能否成為像OpenStack、Kubernetes那樣的明星開源項目,甚至成為DPU/IPU的通用軟件平臺,還需多方參與,共同推動,期待IPDK項目早日走向成熟。