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

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

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

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

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

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