
使用 Agilex FPGA 的 Arkville DPDK 數據行動器
BittWare Webinar Arkville PCIe Gen4 Data Mover Using Intel® Agilex™ FPGAs Webinar The Arkville IP from Atomic Rules was recently updated to support Intel Agilex
BittWare的SmartNIC Shell和BittWare的Loopback示例的功能之一是數據包解析器/分類器,它從數據包中提取協定欄位。通過本白皮書,我們不僅想描述我們的解析器,還想解釋如何使用HLS來構建和配置它,從而比使用P4語言實現得更好。解析器代碼可在 BittWare 開發者網站上免費提供給 Xilinx UltraScale+ 擁有者,作為我們的環回示例的一部分(2020 年 1 月可用)
如今,BittWare 的 SmartNIC Shell 的解析器元件是使用 Xilinx HLS C++開發環境構建的。但是BittWare的SmartNIC Shell的早期版本通過Xilinx SDNet工具使用了P4語言。
使用P4的一個原因是,它是一種新興標準,在商用英特爾伺服器上採用軟體定義網路(SDN)的人群中很受歡迎。然而,Xilinx後來限制了SDNet的可用性。我們使用P4是專門針對SmartNIC Shell的最終使用者的,因此這一限制促使我們尋找更開放的解決方案。在使用 HLS 成功實施 RSS 之後,我們被激勵使用相同的 HLS 方法(特別是 Xilinx HLS C++環境)重新實現 SmartNIC Shell 解析器。
通過乙太網使用的協議對於硬體來說很難利用。之所以存在此挑戰,是因為協定具有許多可選欄位。例如,這些選項使得查找IP標頭的開頭變得複雜。為什麼?在IP標頭情況下,其前面可以有零個、一個或兩個VLAN標記。也可以有 MPLS 標記。因此,硬體需要了解協定,以找到IP標頭。硬體需要IP標頭才能查找經常在硬體篩選器和表中使用的IP位址。下一級也存在類似的問題,因為IP標頭本身具有可選欄位。
BittWare的HLS C++數據包解析器可以處理:
它假定埠ID位於以下IP協定中:TCP、UDP、DCCP和 STCP
在基本上創建了數據包解析器的兩個版本之後,我們注意到使用P4與HLS C++之間存在一些差異。總體而言,HLS流程不如P4抽象,但該工具要成熟得多。
資源使用方式的詳細資訊在表中:
特徵 | P4/SDNet | HLS C++ |
---|---|---|
斷續器 | 3,185 | 3,391 |
布拉姆 | 22 | 0 |
寄存 器 | 10,361 | 5,975 |
代碼行 | 206 | 1,154 |
您可以看到,在所有 FPGA 資源中,HLS 要麼相似,要麼更好。雖然原始碼確實需要更多的行,但其中一部分受到註釋和格式的影響。但是,HLS C++實現確實總是需要比P4更多的代碼行。不過,這是針對數據包解析器/分類器的,它屬於P4可以描述的範圍 - HLS C++可以做更多的事情。HLS是非常通用的,幾乎可以做任何事情。P4非常專業。
更好的是,既然HLS實現已經存在,任何修改它以消化乙太網協定變體的後續工作都與在P4語言中進行修改大致相同。這是因為我們的 HLS C++實現的結構是對我們創建的低級解析器函數的一系列調用。此方法類似於直接操作位於 P4 下的運行時。
如前所述,Loopback 示例的原始程式碼(包括其解析器塊)可通過 BittWare Developer 網站免費提供給 Ultrascale++ 擁有者。它很好地說明瞭如何在 HLS C++代碼中使用 AXI 介面。想看一看,但沒有 BittWare FPGA 卡?請與我們聯繫,瞭解在哪裡購買。
通過乙太網使用的協議對於硬體來說很難利用。之所以存在此挑戰,是因為協定具有許多可選欄位。例如,這些選項使得查找IP標頭的開頭變得複雜。為什麼?在IP標頭情況下,其前面可以有零個、一個或兩個VLAN標記。也可以有 MPLS 標記。因此,硬體需要了解協定,以找到IP標頭。硬體需要IP標頭才能查找經常在硬體篩選器和表中使用的IP位址。下一級也存在類似的問題,因為IP標頭本身具有可選欄位。
BittWare的HLS C++數據包解析器可以處理:
它假定埠ID位於以下IP協定中:TCP、UDP、DCCP和 STCP
創建P4語言是為了使用軟體定義「數據包轉發數據平面」(或網路交換機)。該語言與硬體供應商Barefoot Networks特別相關。P4語言與Google幫助推廣的“P4運行時”不同。P4 運行時提供了一個標準的運行時 API,該 API 允許操作由 P4 編譯的解決方案的控制平面。
P4 確實可以輕鬆為新協定定義數據包分類器/解析器。P4 還指定了一組完整的表查找函數,並且可以重寫流經的數據包,例如消除 VLAN 標記。
這是否意味著P4的靈活性將導致FPGA的採用?我們看到反對這種情況發生的原因有幾個。
在FPGA硬體上提供P4子集的商業選擇存在,但它們目前範圍有限。此外,如前所述,商業條款使BittWare難以利用這些條款來創建我們可以隨產品免費提供的示例程式。
需要注意的是,沒有實際的FPGA應用程式可以專門用P4編寫。例如,在某些範例中,我們的解析器後面的接收器端縮放 (RSS) 塊無法在 P4 中創作。但是,HLS C++可用於創作塊,甚至是組合這兩個函數的單個塊。
此外,P4 表查找函數基本上是用 RTL 或 HLS C++編寫的特定於硬體的運行時庫的包裝器。程式師可以直接從HLS調用這樣的運行時C++而不會受到任何懲罰。
底線是,在使用P4和HLS C++實現解析器之後,我們實際上更喜歡HLS C++方法。目前尚不清楚FPGA對P4的需求是否會增長到足以支援成熟工具的程度。HLS C++可以做得更多,也更成熟。
我們希望對 FPGA 上數據包解析器的兩種實現(一種是 P4 語言,另一種是使用 HLS C++)的解釋有助於您評估正確的方法。
最後一點是關於我們的FPGA卡之間的便攜性。在我們基於 Xilinx FPGA 的卡之間,HLS 提供了一種簡單的方法,幾乎不需要進行任何更改。要遷移到基於英特爾的卡,例如我們的520N-MX,則需要更改原始程式碼,特別是在編譯器編譯指示方面。但是,基本概念是相同的。在這兩種情況下,我們都根據我們對FPGA翻譯挑戰的了解來構建C++。任意C++代碼在FPGA中的運行速度非常差。但是,C++代碼重組並用編譯指示進行塗膏,效果非常好。Xilinx 或 Intel 所需的更改非常相似,只是表達略有不同。
作為BittWare的SmartNIC Shell的一部分,我們的解析器可以幫助團隊快速掌握在我們的FPGA卡上構建網路數據包處理應用程式的速度。瞭解更多關於SmartNIC的卡或與我們聯繫,討論您的應用需求。
BittWare的Loopback示例重新部署了SmartNIC shell的一個子集,我們可以免費提供。該子集包括我們的解析器庫。
您在此頁面上看到的是解析器的基本概述,解析器是 SmartNIC Shell 的一部分。在SmartNIC Shell的完整應用程式說明中還有更多詳細資訊,最重要的是,它可以免費下載!填寫表單以請求訪問完整 App Note 的 PDF 版本。
“*”表示必填欄位
BittWare Webinar Arkville PCIe Gen4 Data Mover Using Intel® Agilex™ FPGAs Webinar The Arkville IP from Atomic Rules was recently updated to support Intel Agilex
Introducing the IA-420F: A Powerful Low-Profile FPGA Card Powered by Intel Agilex Tap Into the Power of Agilex The new Intel Agilex FPGAs are more
Go Back to IP & Solutions Corundum Open-Source 100G NIC IP Core Jump-start your SmartNIC project with the open-source Corundum IP core! It’s got the