在高性能網絡、數據中心和智能網卡加速領域,硬件與軟件協同設計已成為提升網絡處理效率的關鍵。Liberouter 提供的 Network Development Kit(NDK) 就是這樣一套專門用來快速開發 FPGA 加速網絡應用的開源框架,是連接高速網絡接口、FPGA 邏輯與主機處理器的工程級利器。

什么是 Liberouter NDK?
NDK 全稱 Network Development Kit,是由 Liberouter 研究團隊開發的一套框架,用于在 FPGA 加速卡上快速實現高性能網絡應用。它并不是一個簡單的示例或庫,而是一個 可直接用來推進復雜網絡硬件開發的平臺。
這個套件支持包括 10 GbE、100 GbE 和 400 GbE 在內的高速以太網標準,同時提供了配套的 Linux 驅動、用戶態庫、示例程序等工具,大幅降低了網絡加速 FPGA 設計的門檻。
核心功能和特點
基于標準以太網硬IP的網絡模塊,支持10 GbE、100 GbE、400 GbE等速度。
基于 PCIe Gen5 x16 或 2x PCIe Gen4 x16 接口的超高速 DMA 模塊,吞吐量達 400 Gbps。
易于使用的內存接口,可對卡進行單獨的讀取/寫入操作。
用于完整設計綜合的自動化腳本。只需運行一條 make 命令即可創建整個 FPGA 比特流。
Linux 內核驅動程序、DPDK 支持、用戶空間庫和配置工具。
通過用戶友好的 API 輕松創建自定義應用程序,實現組件訪問和 DMA 傳輸。

用戶應用程序
NDK 專為創建具有深度流水線式高速數據包處理的新型網絡應用而設計。應用核心是 FPGA 芯片上專用于用戶應用的區域,它可以利用 NDK 從網絡接口捕獲數據包,并通過超高速 DMA 傳輸將數據發送到主機 CPU。網絡模塊(NDK 的一部分)負責網絡數據包的接收和發送。網絡模塊通過數據流總線(兼容 AXI4-Stream/Avalon-ST)將接收到的數據包發送到應用核心。然后,同一數據總線用于將數據傳輸到主機 CPU。整個 NDK 的可擴展性從數十 Gbps 到數百 Gbps 不等。它的設計目標是在每個時鐘周期內發送和處理多個數據包。NDK 的標準數據總線經過優化,可以同時傳輸大量數據包,從而進一步提高吞吐量。上述數據總線包括 MFB (多幀總線)和MVB(多值總線)。就吞吐量而言,幾乎唯一的限制是可用的 FPGA 資源。
許多網絡應用需要大型數據結構或緩沖區。因此,NDK 提供了一個易于使用的接口,用于與外部存儲器(通常是 DRAM)通信。用戶可以使用該接口快速開發連接跟蹤表、流緩存或數據緩沖區。
在FPGA中實現的用戶應用程序可以通過對指定地址范圍的讀/寫請求進行控制。這些請求通過與Intel Avalon-MM兼容的CSR總線從軟件傳輸到應用程序核心。軟件用戶應用程序可以通過簡單的軟件API生成這些讀/寫請求。
超高速DMA傳輸(DMA Medusa IP)
提供與廠商無關的FPGA架構和開源Linux驅動程序,用于采用逐包方式的高速DMA傳輸。該DMA設計吞吐量為400 Gbps,并采用多通道架構以支持CPU內核間的數據分發。該架構具有高度靈活性,支持各種高端FPGA系列和PCIe總線配置(最高可達PCIe Gen5 x16)。DMA IP可以利用更多PCI端點模塊,將吞吐量擴展到100、200和400 Gbps。

已在 Intel Stratix 10 DX 開發套件上演示了 DMA 架構的 400 Gb 吞吐量。然而,同樣的 DMA 引擎也能為 Xilinx UltraScale+ 和 Intel Agilex 器件提供極高的吞吐量。NDK Linux 驅動程序允許單獨控制所有 DMA 通道。它還提供了一個用戶友好的 API,可將應用程序內核直接連接到 DMA IP。此外,還可以通過 DPDK 驅動程序處理 DMA 傳輸。
示例設計
作為 NDK 的一部分,該項目提供了一個最小化(參考)應用程序的示例設計,該設計可以輕松擴展,為用戶應用程序提供硬件加速。該示例設計基于 NDK 框架構建。由于架構設計精良,最小化應用程序核心僅包含連接網絡接口和 DMA 模塊所需的連接線。此外,最小化示例設計還包含一個用于向 DMA 通道分發數據的單元。
實施、驗證和運行
示例設計可作為創建目標應用程序的靈感來源??梢暂p松地使用加速引擎或其他獨特功能擴展應用程序核心。提供NDK Minimal(參考)應用程序的文檔,其中包含應用程序接口的詳細描述??梢詫W⒂趹贸绦蚝诵?,并利用 NDK 控制網絡接口和 PCIe,實現快速 DMA 傳輸。
所有網絡應用都需要進行精確的驗證和測試。因此,NDK 提供了一個 UVM 驗證環境,用于檢查應用的功能是否正常。該驗證環境包含一組適用于所有應用接口的總線功能模型 (BFM)。所有 BFM 和整個驗證環境的詳細描述請參見 NDK Minimal App 文檔。成功驗證應用核心后,可以通過一條 make 命令生成新的 FPGA 比特流,并在 FPGA 卡上運行該應用。

支持的FPGA卡
NDK 目前支持多種 FPGA 卡,并且可以輕松擴展以支持任何其他帶有網絡接口和 PCIe 連接器的 FPGA 卡。NDK 中使用的絕大多數組件都已準備好支持各種高端 FPGA,包括 Intel Agilex、Intel Stratix 10、Xilinx UltraScale+ 等。

小結
Liberouter 的 NDK 是一套工程級 FPGA 網絡加速開發框架,它把底層復雜的高速網絡收發、DMA 傳輸、 FPGA bitstream 生成等通用功能都封裝好,開發者可以更專注于業務邏輯和加速算法本身。
對從事 FPGA 網絡加速、智能 NIC 設計或高性能系統工程的開發者來說,NDK 提供了一條更快、更可靠、更可復用的硬件加速設計路線。
-
FPGA
+關注
關注
1660文章
22394瀏覽量
635356 -
網絡接口
+關注
關注
0文章
96瀏覽量
18695 -
dma
+關注
關注
3文章
581瀏覽量
105820 -
網絡開發
+關注
關注
0文章
15瀏覽量
8901
原文標題:從網絡接口到 DMA,一套面向工程師的 FPGA 網絡開發框架
文章出處:【微信號:HXSLH1010101010,微信公眾號:FPGA技術江湖】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
從網絡接口到 DMA,一套面向工程師的 FPGA 網絡開發框架
評論