FPGA智能網卡綜述(4): 開源DMA


https://zhuanlan.zhihu.com/p/359754525

 

Corundum

原版見FCCM2020

代碼見: 

這個專題主要對基於FPGA的智能網卡技術進行介紹,上篇介紹了NanoPU、PANIC、Tonic等,這次介紹“Corundum: An Open-Source 100-Gbps NIC ”,完全開源的100Gbps網卡,主要設計實現了一種可配置的DMA。高山留存閱讀點滴。

網絡接口控制器(NIC)是計算機與網絡進行交互的關口。網卡在軟件棧和網絡之間形成一個橋梁,即定義了網絡接口。網絡接口的功能以及這些功能的實現都在迅速發展變化。這些變化是由不斷增長的帶寬/速率和支持高性能分布式計算和虛擬化的NIC功能的雙重需求推動的,不斷增長的帶寬導致許多NIC功能必須用硬件而不是軟件來實現。另一方面,為了實現高級的協議和網絡體系結構,需要新的網絡功能,例如對多個隊列的精確傳輸控制。

為了滿足新的網絡協議和架構的開放式開發平台的需求,設計開發一個基於FPGA的高性能開放源碼NIC原型平台Corundum,能夠運行至少94Gbps,是完全開源的,連同它的驅動程序,可以使用在一個完整的網絡協議棧。這種設計既具有好的移植型又緊湊,支持許多不同的設備,同時也為進一步定制(即使在較小的設備上)留下了充足的硬件資源。Corundum模塊化設計和可擴展性允許協同優化的硬件/軟件解決方案在系統中開發和測試高級網絡應用程序。

動機和相關工作

現有NIC的網絡接口功能設計關鍵在於硬件和軟件之間進行功能划分。硬件NIC功能分為兩大類。第一類由簡單的卸載功能組成,這些功能可以從CPU中移除一些逐包的處理,例如校驗和/哈希計算和分段卸載,這些功能使網絡協議棧能夠批量處理數據包。第二類包括必須在NIC上硬件中實現的功能,以實現高性能和公平性,這些特性包括流控制、速率限制、負載均衡和時間戳。

(1)ASIC NIC

傳統的NIC的硬件功能實現於專有的專用集成電路(ASIC)中。再加上規模經濟,這使得ASIC網卡具有高性能低成本特點。然而,這些ASIC可擴展性是有限的,添加新硬件功能的開發成本高周期長。為了克服這些限制,開發了各種智能NIC和軟件NIC。智能網卡通常通過提供大量可編程處理核心和硬件原語,在網卡上提供強大的可編程性。這些資源可用於從主機上卸載各種應用程序、網絡和虛擬化操作。然而,智能NIC不一定能很好地擴展到高性能,並且硬件功能可能受到限制。

(2)軟件NIC

軟件NIC通過在軟件中實現網絡功能,提供了最大的靈活性,繞過了大多數硬件卸載功能。因此,可以快速開發和測試新功能,但需要進行各種權衡,包括占用主機CPU周期和不一定支持線速處理。此外,由於軟件固有的隨機中斷特性,開發需要精確傳輸控制的網絡應用程序是不可行的。盡管如此,許多研究項目通過修改網絡協議棧或使用內核旁路框架(如數據平面開發套件(DPDK))在軟件中實現了新的NIC功能。

(3)FPGA NIC

基於FPGA的NIC結合了基於ASIC的NIC和軟件NIC的優點:能夠以線速運行,提供低延遲和精確計時,同時具有相對較短的功能開發周期。高性能、專有、基於FPGA的NIC也已有很多。例如,阿里巴巴開發了完全定制的基於FPGA的RDMA專用NIC,用於運行精確擁塞控制協議(HPCC)。商業產品也存在,包括Exablaze和Netcope等產品。

基於FPGA的數據包處理解決方案包括Catapult,它實現了網絡應用程序卸載,FlowBlaze,它在FPGA上實現了可重構的匹配動作引擎。然而,這些平台將標准NIC功能留給了一個單獨的基於ASIC的NIC,並且完全作為一個“bump-in-the-wire”模式來運行,不提供對NIC調度器或隊列的顯式控制。

其他項目使用軟件實現或部分硬件實現。Shoal描述了一種網絡體系結構,它使用自定義NIC和快速鏈路層交叉開關執行單元路由。Shoal是在硬件中構建的,但是只使用合成流量進行評估,沒有與主機連接。SENIC描述了基於可伸縮NIC的速率限制。調度器的硬件實現是單獨評估的,但系統級評估是在帶有定制排隊規程(qdisc)模塊的軟件中執行的。PIEO描述了一個靈活的NIC調度器,它是在硬件中單獨評估的。NDP是數據中心應用程序的接收端驅動的拉模式傳輸協議。使用DPDK軟件NICs和基於FPGA的交換機對NDP進行評估。Loom描述了一種高效的NIC設計,並用BESS軟件對其進行了評估。

與基於ASIC的NIC類似,商用的基於FPGA的NIC往往是專有的,具有不能修改的基本“黑盒”功能。基本NIC功能的不能升級,嚴重限制了開發新網絡應用程序的實用性和靈活性。

商用高性能DMA組件,如Xilinx XDMA核心和QDMA核心,以及Atomic Rules Arkville DPDK 加速核心,沒有提供完全可配置的硬件來控制傳輸數據流。Xilinx DMA內核是為計算卸載應用程序而設計的,因此提供了非常有限的排隊功能,並且沒有簡便方法來控制傳輸調度。Xilinx QDMA核心和Atomic Rules Arkville DPDK加速核心通過支持少量隊列和提供DPDK驅動程序面向網絡應用程序。然而,XDMA核心支持的隊列數量是的2K隊列,Arkville核心的隊列達128個隊列,這兩個核心都沒有提供精確控制數據包傳輸的簡單方法。

NetFPGA等開源項目只為基於FPGA的數據包處理提供了一個功能庫和平台,並不是專門為NIC開發而設計的。此外,NetFPGA NIC參考設計使用了Xilinx XDMA內核,它不是為網絡應用而設計的。將NetFPGA板的參考NIC設計中的Xilinx-XDMA內核替換為Corundum,可以獲得更強大、更靈活的原型平台。

Corundum別於所有這些項目,因為它是完全開源的,可以運行在一個標准的主機網絡棧,在實際的物理鏈路。它提供了數千個傳輸隊列和可擴展的傳輸調度程序,用於流的細粒度控制。這就為開發結合了硬件和軟件功能的網絡應用程序提供了一個強大而靈活的開源平台。

智能網卡專題:

FPGA智能網卡專題回顧:

SoC智能網卡綜述(8):Lynx - 極術社區 - 連接 AIoT 開發者與生態服務

FPGA智能網卡介紹(7)FairNIC

FPGA智能網卡介紹(6)HostSDN

FPGA智能網卡介紹(5):NICA

FPGA智能網卡介紹(4):Corundum

FPGA智能網卡介紹(3):Tonic

FPGA智能網卡介紹(2):Panic

FPGA智能網卡介紹(1):NanoPU

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM