1. 程式人生 > 其它 >SmartNIC 與普通的NIC 有哪些顯著性差異?

SmartNIC 與普通的NIC 有哪些顯著性差異?

http://xilinx.eetrend.com/content/2020/100054808.html

作者:Scott Schweitzer,來源:Xilinx賽靈思官微

普通 NIC 定位於高效遷移伺服器的網路資料包,通常包括不同程度的為優化效能而設計的傳統解除安裝。SmartNIC 整合了多方面的附加計算資源,但是這些架構就像雪花一樣各不相同,因此,我們將深入研究規模最大、最受歡迎的供應商所提供的幾種方法。

普通網路介面卡(NIC)是圍繞單獨的專用積體電路(ASIC)構建的,該積體電路被設計成乙太網控制器。例如,邁絡思的 ConnectX® 系列、博通的 NetXtreme® 系列或賽靈思的 XtremeScale® 系列。通常,這些晶片會圍繞第二個設計目標進行進一步優化;例如,ConnectX 系列也支援 Infiniband,而 XtremeScale 則專注於 Linux 核心旁路。這些控制器的功能非常出色,它們代表了業界最出色的控制器,但它們不能算是 SmartNIC。

在本文中,我們將 SmartNIC 定義為一個允許附加軟體的 NIC,而這些附加軟體可以在購買後的某個時刻被載入到 NIC 中,用於新增新功能或支援其他功能。就像您購買了一部智慧手機,然後從該供應商的應用商店下載並安裝應用一樣。

若要將 NIC 變為 SmartNIC,能夠載入並執行程式碼,需要其配備額外的計算能力和板載儲存器,而這些功能是普通 NIC 所不具備的。SmartNIC 的應用大多數都是從基本的乙太網控制器開始,要麼在晶片上作為韌體,要麼在介面卡上作為單獨的晶片。

以下三種方法均有助於提升計算能力,使得普通的 NIC 變得智慧:

- Arm CPU 核整合,有人稱其為叢集,有些人則稱其為“網格”或“塊”

- 定製網路處理器採用的流處理核(FPC),通常是 P4

- 現場可程式設計門陣列(FPGA),可程式設計邏輯

許多 SmartNIC 通常使用一個或多個 Arm CPU 核來管理 NIC 中的控制平面。有些甚至允許將修改過的 Linux 核心載入到一個或多個核心中。這些 Arm CPU 核通常負責將程式碼載入到其他處理元件中,收集統計資訊和日誌並監測 SmartNIC 的執行狀況和配置。它們不會接觸任何網路資料包,且通常會在“帶外”執行,這就意味著它們無法通過“常規”網路介面或 PCIe 命令進行訪問。此外,他們只應通過先前受保護的介面接受經過正式簽署的韌體包。除了架構草圖以外,我們不會在下面呼叫這些控制平面的 Arm CPU 核,因為它們需要管道,而且它們本身通常不會為 SmartNIC 提供的特性集增加價值。

為了理解 SmartNIC 與普通 NIC 的不同之處,我們需要深入瞭解全球四大 NIC 公司以及兩家初創企業推出的 SmartNIC 產品,看看他們做出了哪些改進。入選的六家公司分別是英特爾、博通、英偉達(前身為邁絡思)、賽靈思、Netronome 和 Pensando。此外,我們還將對目前被稱為 Fungible 的隱形專案提出一些見解。

說到晶片公司,大家都會想到英特爾,因為它是全球規模最大的晶片公司。十多年來,英特爾一直保持著不間斷的高效能 10GbE 乙太網控制器產品線。他們的 XL710 平臺已經出貨數百萬臺,是眾多資料中心伺服器的必備產品。對於其新款 N3000,英特爾 SmartNIC 的電路板採用五塊晶片。

這種方法成本很高,因為大多數廠商都在努力完成單晶片設計。英特爾還將一對 XL710 乙太網控制器和一個使用 48 通道的第三代 PEX8747 PCIe 交換晶片的 Arria 10 FPGA 融合在一起。每個 XL710 有 8 個通道,Arria 有 16 個通道,PCIe 插槽有 16 個通道。第五塊晶片是用於管理 FPGA 的 MAX 10® FPGA 基板管理控制器(BMC),就像在其他 SmartNIC 上使用 Arm 核心來處理控制平面管理一樣。該電路板有兩個直接連線到 FPGA 的 QSFP28 埠。然後 8 條 10G 通道將 FPGA 留給每個 XL710。這是一種典型的 bump-in-the-wire 架構,它使 FPGA 能夠在資料包被傳遞到 XL710 之前處理資料包。

使用現成的乙太網控制器和 FPGA 構建 NIC 並不是什麼新鮮事。早在 2012 年,Solarflare Communications 就在 NIC 的兩個 QSFP 埠與其乙太網控制器之間放置了一個 FPGA,用於建立其應用載入引擎( AOE )平臺。這是上述英特爾 N3000 設計的先驅,它幫助 Solarflare 為金融客戶提供了令人印象深刻的即時交易結果,耗時僅為 350 納秒。8 年後的今天,該記錄為 24.2 納秒。英特爾的方法支援 FPGA 在 XL710 之前進行資料包處理。

英特爾的 FPGA 具有 115 萬個可程式設計邏輯單元和兩個 4GB 的 DDR4 儲存器組,這為它處理以下 SmartNIC 任務提供了充足的空間:

- 虛擬寬頻網路閘道器(vBNG)

- 層級服務質量(HQoS)

- 資料包分類、監控、排程和成形

- 虛擬化演進分組核心(vEPC)

- 5G 新一代核心網路(NGCN)

- 網際網路協議安全(IPSec)

- IPv6 分段路由(SRv6)

- 向量資料包處理(VPP)

- 虛擬無線電接入網(vRAN)

儘管英特爾已將上述工作負載用於其 N3000 平臺,但目前還不清楚他們是否已交付所有必要的軟體來解除安裝該 SmartNIC 上的每個應用。SmartNIC 的消費者會發現,軟體才是癥結所在,所有這些公司在硬體方面都很出色,但是軟體交付又完全是另一回事。

SmartNIC 領域中另一家傑出的 FPGA 供應商是賽靈思,它是上世紀 80 年代中期首家實現 FPGA 商業化的公司。現如今,賽靈思已經是 FPGA 領域的霸主,英特爾則被遠遠地甩在後面。賽靈思於 2019 年秋季收購了 Solarflare Communications,自 2012 年以來,Solarflare 一直在為電子交易構建基於 ASIC 和 FPGA 的 NIC。來自英國劍橋的 SolarFarre 工程團隊是賽靈思 Alveo U25 SmartNIC 的研發主力,如圖所示。賽靈思的成功得益於 Solarflare 工程團隊在這個市場中將近十年的經驗積累。

Alveo U25 將雙 SFP28 埠直接連線到 Zynq 系列晶片。Zynq 實際上是一種片上系統(SoC),因為它不僅包括 FPGA,還包括用於資料包處理的四核 Arm A53。然後,Zynq 通過第三代 PCIe 提供的 8 個通道直接連線到主機伺服器,或是通過 SerDes 連線到 X2 乙太網控制器晶片,後者也可以通過第三代 PCIe 8 個通道連線到主機。這種方法使得 Zynq 能夠在資料包被傳遞到 X2 晶片之前對其進行處理,或者完全繞過 X2 晶片。此外,U25 還包括 6GB 的 DDR4 儲存器,可以通過執行在該晶片上的程式訪問 Zynq 的 FPGA 和 Arm 核心。FPGA 具有 52 萬個邏輯單元,是英特爾提供的邏輯單元數的一半,但是提供的四核 Arm 足以彌補減少的可用門數。

賽靈思將 U25 推向市場,最初是為了滿足那些需要開放虛擬交換機(OvS) 解除安裝功能的客戶。賽靈思已經宣佈,在不久的將來將增加 IPSec、機器學習(ML)、深度包檢測(DPI)、視訊轉碼和分析的解除安裝數量。賽靈思大概是 SmartNIC 領域中發展最為全面的企業。兩年前,在收購 Solarflare 的準備階段,賽靈思與 Solarflare 作為合作伙伴在 OCP 峰會上公開展示了 X2 控制器邏輯作為軟 NIC 在更大型 FPGA 中的執行情況。

如同英特爾一樣,賽靈思也擁有數條可盈利的計算晶片產品線,如 Kintex、Virtex、Zynq 和 Versal。Kintex 和 Virtex 都是純 FPGA,該系列中某些型號採用的邏輯單元數量巨大,大約有近 300 萬個,幾乎是英特爾在其 N3000 中使用數量的三倍。此外,賽靈思還通過矽中介層創造了奇蹟,並在 Virtex 晶片上分層放置了高達 16GB 的高頻寬儲存器(HBM)。所有四條晶片生產線的其他晶片也採用了這項技術。Zynq 是他們的 SoC 晶片系列,包括 FPGA 可程式設計邏輯、四核 Arm、實時 Arm 核心、DDR 控制器以及用於乙太網和 PCI Express 的連線邏輯。

Versal 超越了 SoC,成為一個基於七奈米晶片技術的自適應計算加速平臺(ACAP)。ACAP 通過新增數百個人工智慧(AI)核心和數字訊號處理(DSP)引擎來擴充套件 Zynq 架構。AI 核心在某種程度上是新器件,但它們在本質上屬於單精度計算引擎。最終,賽靈思將把其公開展示的 SoftNIC 與 Versal 結合起來,使其成為 SmartNIC 平臺中的佼佼者。

博通是乙太網 NIC 控制器商品市場上無可爭議的領導者。因此,當他們裝配 Stingray SmartNIC 並加入競爭時,博通採用了單晶片方法。與其他競爭對手的眾多晶片板相比,單晶片 SmartNIC 解決方案的板級生產成本始終保持在較低水平。博通以 NetXtreme E 系列控制器的邏輯為基礎,設計了位於 Stingray 核心的 NetXtreme-S BCM58800 晶片。然後,他們在叢集配置中部署了主頻為 3Ghz 的 8 個 Arm v8 A72 核心。

接下來,他們加入了一些邏輯,以高達 90 千兆/秒的速度解除安裝加密,同時解除安裝擦除編碼和 RAID 等儲存處理。最後,博通還採用了具有神祕色彩的 TruFlow® 技術。這是一個可配置的流加速器,用於將常見的網路流過程轉移到硬體中;我們相信使用 P4 語言會取得很好的效果。這有助於釋放 Arm 核心,從而專注於流程和資料包級別上的更多可程式設計任務。

從釋出的內容來看,TruFlow 能夠在硬體中分擔像 Open vSwitch(OvS)這樣的任務。此外,博通還聲稱 TruFlow 在硬體中實現了眾多經典的軟體定義網路(SDN)概念,例如分類、匹配和操作。因此,Stingray 配備了兩個可程式設計元件,即 TruFlow 和一個由四個 3Ghz 雙核 Arm v8 A72 複合體組成的叢集。瞭解到他們所提供產品的複雜性後,博通為 SmartNIC 應用開發和儲存控制器開發提供了 Stingray 開發套件。這確實出乎大家的意料。

英偉達在圖形處理單元(GPU)領域是公認的領導者,GPU 已經成為高效能運算(HPC)領域的首選加速器。今年年初,英偉達最終以 70 億美元的價格完成了對邁絡思的收購。為了佔領 HPC 市場,英偉達選擇了領先的無限頻寬技術互聯供應商,以便為 HPC 客戶提供完整的解決方案。這與克雷過去的做法非常相似。英偉達最近還收購了 Cumulus Networks,後者是開源乙太網交換機作業系統的領導者。軟體一直是邁絡思的弱點,而英偉達顯然很早就意識到了這一點。關於 SmartNIC,英偉達還通過收購邁絡思得到了一個意外驚喜。

邁絡思是最早進入 SmartNIC 領域的公司之一,但這是通過收購實現的。他們當前的 Bluefield 2 解決方案是在 2015 年通過收購 EZchip 收購 Tilera 而完成構建的。Tilera 擁有首個申請智慧財產權的高度並行 SmartNIC 實現方案,它是從更早的 MIT 研究專案逐步發展起來的。Tilera 將處理核心作為晶片上的塊進行排列,每個核心都有一條高速匯流排連線到周圍的四個核心。他們的旗艦產品早在 2013 年就可支援多達 72 個 MIPS 核心、記憶體控制器、加密模組、PCIe 塊和 mPipe,這是通過 SFP 和聯結器連線到多個 MAC 的一組通道。

邁絡思通過用 Arm 替換核心並將 mPipe 換成 ConnectX 邏輯來推進這一程序。當前的核心數量為 8 個 Arm v8 A72 核心,但它們被排列成由 4 個雙核心 Arm 構成的群集。這種方法與博通的 Stingray 十分類似,它們不僅使用相同的核心,而且速度相同,但是它缺少 Broadcom 架構的核心組成部分,即並行 P4 處理器。P4 是每家公司的目標,只不過並不是每家公司都對此公開表明。下面提到的博通、賽靈思和 Pensando 都很關注 P4。這也是 Cumulus Networks 的用武之地,他們在 P4 程式設計方面有著豐富的經驗。因此,為了向未來的 Bluefield 產品系列提供前端服務,英偉達設計了 P4 資料包處理引擎也就不足為奇了。

最新的 SmartNIC 初創企業是 Pensando,由思科前執行長 John Chambers 創立。John 帶領他的夢之隊(六名前思科員工)創辦了這家公司。這些人的公司過去都曾被思科收購。考慮到他們的聲譽和以往的經驗,人們普遍認為 Pensando 正在向一些主要客戶證明他們的技術是可行的,然後他們會將其打包賣給思科。思科擁有一些通用的 NIC 技術,但它不是 SmartNIC 級別的,Pensando 顯然是想填補這一空白。

Pensando 最初提供兩種產品,但最近又降為單一產品,即分散式服務卡 DSC-25,這聽起來甚至像是思科產品的名稱。它像是一款單一的 P4 處理器晶片,帶有用於一些輔助處理的 Arm,資料表聲稱這兩種處理器都可支援高達 4GB 的板載儲存器。該處理器稱為 Capri,它是帶有多個並行級的 P4 可程式設計單元;但確切的並行處理程度尚不清楚,因為資料包效能、時延和抖動尚未公佈。由於快取未命中而導致的指令記憶體提取會影響所有指標的效能,所以 Pensando 妥善管控 P4 應用,將它們保留在 Capri 快取中。其他被稱為服務處理解除安裝(Service Processing Offloads)的計算單元則負責處理加密、儲存流程和其他任務。

Pensando 聲稱 Capri 能夠提供線速效能。Fungible 是頗具潛力的後起之秀。在獲得了近 3 億美元的三輪融資(其中 2 億美元來自去年的 C 輪軟銀集團願景基金)後,他們宣佈即將推出一款新產品。目前,他們有 180 名員工,沒有產品,沒有收入,也沒有可見客戶。Fungible 聲稱將生產資料處理單元(DPU),但實際的架構和組成尚不明朗。他們提供了下面所示的圖片,但如同架構圖不具備重要意義一樣沒有突出重點。

很多文章都提到他們的產品將在今年夏天釋出,因此我想提醒大家關注這家公司。他們的創始人之一兼首席架構師是曾在 Chelsio Communications 積累了 10 年經驗的資深人士,專門從事以儲存為中心的乙太網 NIC 方面的研究。此外,他們的軟體和韌體工程副總裁也曾在 Chelsio 任職,而且他的工作經驗有 13 年之久。因此,儘管 Chelsio 過去的核心產品是 ASIC,但如今從頭開始生產一款領先的 SmartNIC 乙太網控制器 ASIC 很容易就會消耗掉他們超過 5000 萬美元的寶貴資本。

有人推測,他們將採取阻力最小的方法來獲得收益,並利用 FPGA 平臺開發他們的初始產品,同時將特有的 ASIC 設計載入到該平臺。隨後,他們可以在開始追求客戶和收益的同時推出設計方案。將設計載入到 FPGA 中有助於 Fungible 輕鬆地修復設計缺陷,並可以根據客戶要求快速改善。如今,FPGA 的應用越來越廣泛,我們已經開始看到像 RISC-V 這樣成熟的處理器架構被載入到這些平臺上。

那麼,SmartNIC 與普通的 NIC 有哪些顯著性差異?計算能力、儲存器以及最重要的軟體設計都是為了減輕主機 CPU 的負擔,以完成更高階的網路處理任務 SmartNIC 將推動計算能力逐漸擴充套件到網路邊緣,從而釋放伺服器 CPU 的算力,重點關注複雜的業務關鍵型處理任務。研究表明,在高度虛擬化的環境中,網路可以消耗主機 CPU 週期的多達 30% 來處理 OvS 事務等任務。試想一下,在 SmartNIC 中能夠完成儲存功能、加密、深度包檢測和複雜路由嗎?這可能會將通常花費在處理這些工作負載上的大部分 CPU 週期傳遞迴主機 CPU。

為了保持領先地位,Pensando 和 Fungible 這樣的新興公司將繼續向 SmartNIC 市場注入創新特性和功能。與此同時,像賽靈思、英特爾、博通和英偉達這樣的技術領先者也開始著手改進基礎計算核心和專用 P4 處理引擎。SmartNIC 市場正在升溫,而這只是從 GPU 技術開始興起的加速器浪潮的邊緣領域,但它將改變計算技術的發展方向。

作者介紹:

姓名:Scott Schweitzer

職位:賽靈思技術佈道者

個人簡介:

自從當年通過 TRS-80 計算機入門程式設計的世界,Scott 便成為了一名忠實的科技信徒。他曾為 IBM、NEC、Solarflare 以及現在的賽靈思編寫過產品級的軟體產品,構建過硬體產品,並擔任過程式管理職務。在從事單插槽計算平臺工作 20 年後,Scott 於 2003 年加入 NEC,管理其新推出的英特爾安騰(Itanium)多核 64 位超級計算伺服器。自此,他一直都在該領域繼續深耕。

2005 年,Scott 開始重點研究超級計算與超高效能聯網聚類這兩大領域。隨著 10GbE 的普及,他推出了廣受歡迎的 10GbE.net 部落格。在 2017 年市場風雲變幻之際,Scott 將 10GbE.net 打造成了一個每月擁有數千次頁面瀏覽量的技術傳播部落格,同時還附帶一個播客。Scott 在賽靈思的職責是與合作伙伴一起探尋新的加速機遇並定義創新解決方案。