在 NVIDIA BlueField DPU 上使用 DOCA 加速解決方案開發

作者 NVIDIA Developer

DOCA 是一款在 BlueField DPU 上開發應用程式的軟體框架。使用 DOCA,可以從主機 CPU 上卸載基礎設施工作負載,以及透過 BlueField DPU 加速執行。如此一來,即可獲得一個軟體定義且同時具有硬體加速特色的基礎設施,以極大化資料中心的效能與靈活性。

DOCA 來了!

NVIDIA 在 2020 年 10 月首度發表 DOCA。現在,NVIDIA BlueField-2 DPU 已經全面上市,且 DOCA 為早期可用版本階段,可以利用 BlueField 的能力卸載、加速和隔離基礎設施的各項工作負載,包括網路、安全、儲存及管理,輕鬆地開發並強化解決方案。在本文中,我們將討論 DOCA 的具體內容,以及開發人員與獨立軟體開發商(ISV)可以如何運用 DOCA 建立以 DPU 為基礎的解決方案。

首先,我們將會快速簡單地介紹什麼是 BlueField DPU 及其功能。BlueField DPU 內含一個具備高速 Ethernet 或 InfiniBand 介面的強大 SmartNIC、一組 Arm 核心、DRAM 及一個 PCIe Switch 晶片,且皆可透過一個高速網狀 Fabric 網路進行連接。嵌入式 ConnectX SmartNIC 包含許多加速器(如網路、雲端、儲存、加密、串流、時間同步等),且 BlueField 加入了額外的加速器,以及安全、儲存虛擬化、硬體隔離和遠端管理等功能。

圖 1:BlueField DPU 和 DOCA 框架可以將基礎設施的服務移動至 DPU,以卸載和加速執行這些服務。DOCA 允許使用者在應用程式及基礎設施服務領域中進行開發。
圖 1:BlueField DPU 和 DOCA 框架可以將基礎設施的服務移動至 DPU,以卸載和加速執行這些服務。DOCA 允許使用者在應用程式及基礎設施服務領域中進行開發。

使用 DOCA 的優點

BlueField 中的許多獨立功能和加速器,皆可透過特定的 API、開放源碼 SDK 或現有的驅動程式存取,因此您或許會問為什麼要使用 DOCA。DOCA 的主要優點是可以簡化開發和部署使用 DPU 之基礎設施應用程式和功能的過程。不僅能縮短推出應用程式的時間,且還可以獲得其它優點:

  • 統一存取所有的 DPU 功能-無須追蹤和使用多種工具。
  • 在低階 DPU API 上具有抽象層的高階函式庫-可以進行高階整合,以便能更輕鬆快速地進行開發,並可調整至獲得最佳效能,或進行低階整合,以進行更精細的控制。
  • 向前/向後相容性-使用 DOCA 進行開發,即代表應用程式可以在更新版本的 BlueField DPU 上流暢運行,同時能獲得更高的效能和擴充性。
  • DPU 配置與部署容器化服務-DOCA 包括簡化 DPU 設置、配置和服務協調的工具。

開發人員的 DOCA 1.0 旅程

DOCA 包括一個 SDK 軟體開發套件及一個 DPU 的執行階段(runtime)平台。SDK 包含 API、開發函式庫、開發人員工具與參考應用程式源碼,而其執行階段則包括服務、參考應用程式可執行檔和執行階段工具。驅動程式支援 DOCA 函式庫,可以支援 DOCA 1.0 內的參考應用程式。同時有 DOCA 服務,例如發送過濾後遙測數據的能力、DPU 和 SDK 的管理工具,以及在資料平面(在此版本中是由 DPDK 加速)或控制平面編寫軟體定義網路(SDN)程式碼的介面。

使用 DOCA 的旅程是從選擇在 DPU 上運行,或與 DPU 進行整合的應用程式類型開始。下一步是判斷是否應在主機 CPU、DPU 本身或兩者的組合上運行應用程式。在主機上運行的應用程式必須針對主機 CPU(通常是 X86)進行編譯,而在 DPU 上運行的應用程式則必須針對 Arm 進行編譯。無論採用哪一種方式,應用程式都能使用 DOCA 取得 DPU 上的卸載和加速器,且您可以選擇使用哪些 DOCA 樣本應用程式、函式庫及 API 進行開發。如果主應用程式繼續在主機 CPU 上運行時,可以建立一個在 DPU Arm 核心上運行的小型代理程式,以啟動 BlueField 硬體卸載,而無須大幅改變現有的應用程式。

圖 2:開發人員使用 DOCA 從開發到部署的旅程。
圖 2:開發人員使用 DOCA 從開發到部署的旅程。

DOCA 程式設計選項

在編寫 DPU 的程式碼時,多數情況下可以直接存取驅動程式。通常需要較深入瞭解驅動程式,但只需要進行微量的程式設計作業。在大多數情況下編寫 DOCA 函式庫的程式碼相對簡單,且可以讓使用者以更高階、更抽象的方式看待驅動程式。最大的好處是它已經針對每一個使用案例進行調整,以取得最佳的加速效能。參考應用程式提供了實際可用的程式碼與使用 DOCA 函式庫的範例。在某些情況下,可以使用或修改參考應用程式,做為在 DPU 上運行之應用程式和解決方案的基礎。

舉例來說,假設將要建立一個在 DPU 上運行的加速負載平衡器,或整合分散式防火牆的代理程式。即可採用使用 DOCA 深度封包檢測(deep packet inspection,DPI)函式庫的參考應用程式。相反地,這些函式庫是在 DPDK 函式庫的基礎上運行,並使用 DPU 內部的狀態連接追蹤與正規表示式(regex)對比引擎。

加速負載平衡器 NGFW 代理程式 彈性存儲
DOCA 參考
應用程式
負載平衡器 防火牆代理程式 <即將推出>
DOCA 函式庫 DOCA 流程與 DPI DOCA 流程與 DPI SPDK
低階 API/函式庫 FTE_FLOW, DPDK SFT, DPDK REGEX, DPDK RTE_FLOW, DPDK RegEx SPDK, BlueField SNAP
DPU 硬體特色 eSwitch、連線追蹤、RegEx eSwitch、連線追蹤、RegEx RDMA, BlueField SNAP, PCIe switch
表 1:說明在低階 API/函式庫上運行 DOCA 與存取使用 API/函式庫之方式,以及 DPU 之硬體特色的三個範例。

在大多數情況下,可以針對低階 API/函式庫編寫程式碼,而非 DOCA 函式庫,不過其實編寫 DOCA 函式庫的程式碼,甚至是修改 DOCA 參考應用程式的方式更簡單,只要在可以使用情況下。對於某些 DOCA 函式庫,例如 SPDK,目前沒有任何 DOCA 參考應用程式,但是函式庫在 DOCA 1.0 中可以立即使用。預計之後會在 DOCA 中加入一個儲存參考應用程式。現在,在其他情況下,例如時間同步或 IPSec 加密功能,已可透過 BlueField 作業系統的最新更新內容,取得各項 API 和功能。在未來的版本中,將通過 DOCA 函式庫取得功能。

DOCA 工具的兩大面向

從開發人員的角度來看,DOCA 可以分為兩個主要領域:

  • SDK 組件,有助於建立在 DPU 上運行或使用 DPU 的應用程式。
  • DOCA 執行階段集,是由在 DPU 上運行應用程式時需要的組件組成。

SDK 包含開發函式庫、驅動程式與工具包,以及參考應用程式的文件和參考源碼。

執行階段則包括二進位形式函式庫、執行階段二進位檔案、編譯器工具、安裝實用程式、基準及多項 DOCA 服務代理程式。您可以使用不同的 DPU API 和 功能設置 DPU 卡、安裝適當的作業系統,並在 DPU 上運行軟體。執行階段集合同時包括管理工具,可以配置和支援伺服器與整體網路中的 DPU 卡,並能針對容器化及加速服務進行協調。

DOCA 中的參考應用程式

DOCA 1.0 包括使用 DPI 的加速負載平衡器,以及使用 DPI 和 regex 模式對比下一代防火牆代理程式的參考應用程式。這些參考應用程式是利用 DOCA 函式庫及 DPU 上的特殊功能。它們包括源碼檔案,且無須在 DPU 上編寫程式碼。但是,可以透過提供使用 DPU API 和函式庫的範例,簡化開發及整合應用程式的作業。在未來的 DOCA 版本中,可能會加入更多的參考應用程式。

DPU 管理工具與其它功能

  • SDK 管理器協助在運行 DPU 的機器上,安裝和更新 BlueField SDK。它可以在主機上安裝 DOCA SDK 及執行階段,以及在主機上安裝更新 BlueField 上之作業系統與 DOCA 的開發容器。
  • 配置工具-可以簡化和自動管理整個資料中心的許多 DPU 卡,且能搭配腳本與管理工具。DOCA 1.0 中還未包含這些工具,但是預計很快就會加入 DOCA。
  • 遙測-在 DPU 上可以選擇性地取得與分享關鍵的網路及伺服器遙測資料,然後與日誌管理、資料分析或網路安全工具分享或收集遙測資料。

在 DOCA 1.0 SDK 中不支援部分 BlueField DPU 功能,但是 DOCA 執行階段可支援。這些功能可以透過 BlueField DPU 軟體或 Mellanox OFED 函式庫取得,且將會在未來版本中加入 DOCA SDK:

  • 網路流量加密,使用 IPSec 或 TLS
  • 支援時間同步之資料中心,超精準的精確時間協定(Precision Time Protocol,PTP)
  • 高效能運算/人工智慧集體卸載
  • 支援 NVIDIA GPUDirect Storage
  • 等等…

同樣地,BlueField SNAP 也是利用 DPU,將網路儲存虛擬化為本地 NVMe SSD 或 virtio-blk(區塊儲存)裝置。現在,SNAP 功能已包含在 DOCA 執行階段中,高階開發人員 SDK 可以透過 SPDK 函式庫進行存取,之後將會在 DOCA SDK 加入更多的 SNAP 功能。

DOCA 的未來展望

DOCA 的發展藍圖包括使用 DOCA 存取BlueField DPU 的幾乎所有功能。圖 3 為計畫中的 DOCA 堆疊,包括支援的多類高階應用程式,這些應用程式是在不斷擴大的 DOCA 服務、函式庫及驅動程式集上運行。

圖 3:DOCA 不斷發展,幾乎能夠全面支援 BlueField DPU 的所有功能。
圖 3:DOCA 不斷發展,幾乎能夠全面支援 BlueField DPU 的所有功能。

NVIDIA 希望您能存取 DPU 的所有功能,同時簡化您在 DPU 上建立新的應用程式,或將 BlueField DPU 與現有應用程式進行整合的工作。一系列持續發布的 DOCA 版本,將會在 DOCA 中增加驅動程式、函式庫、服務及範例應用程式。您將可以利用 NVIDIA DPU 建立更複雜高效的解決方案,以加速基礎設施服務。利用 DOCA 提高資料中心的效能、效率、安全性和可管理性。歡迎您立即申請使用 DOCA

若需要更多資訊,請參閱以下資源: