從大廠與新秀技術揭密SmartNIC市場趨勢

作者 : Scott Schweitzer,賽靈思(Xilinx)技術傳播者

若要讓NIC變成SmartNIC,能在未來載入、執行程式碼,需要配備額外的運算能力和板載記憶體,這些功能是普通NIC不具備的。大多數SmartNIC方案是從基本的乙太網路控制器開始,若不是韌體,就是轉接器上的單獨晶片。

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

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

若要讓NIC變成SmartNIC,能在未來載入、執行程式碼,需要配備額外的運算能力和板載記憶體,這些功能是普通NIC不具備的。大多數SmartNIC方案是從基本的乙太網路控制器開始,若不是韌體,就是轉接器上的單獨晶片。以下三種方案都有助於提升運算能力,使普通NIC變「智慧」:

  • 集合眾多Arm CPU核心,有人稱為叢集(clustering),有些人則使用「網格」(grida)或「區塊」(tiles)等名詞;
  • 客製化網路處理器採用的流程處理核心(Flow processing cores,FPC),通常是P4 (Programming Protocol-independent Packet Processors)高階控制語言;
  • 採用FPGA,可程式化邏輯元件。

許多SmartNIC通常使用一個或多個Arm CPU核心來管理NIC中的控制平面。有些甚至允許將修改過的Linux核心載入到一個或多個處理器核心中。這些Arm CPU核心通常負責將程式碼載入其他處理元件,收集統計資訊和日誌,並監測SmartNIC的運作狀況和配置。

它們不會接觸任何網路封包,通常會在「頻外」(out-of-band)運作,這意味著它們無法透過「正常」網路介面或PCIe指令進行存取。此外它們只應透過先前受保護的介面接收經過正式簽署的韌體套件。除了架構草圖,我們不會在下面調用這些控制平面的Arm CPU核心,因為它們需要管道(plumbing),而且它們本身通常不會為SmartNIC提供的功能集增加價值。

為了理解SmartNIC與普通NIC的差異,以下讓我們來看看市場上主流NIC業者以及新創公司推出的SmartNIC產品。

Intel

晶片龍頭Intel十多年來一直維持著高性能10GbE乙太網路控制器產品線,其XL710平台出貨量達數百萬,是眾多資料中心伺服器不可或缺的元件。其新款N3000 SmartNIC電路板內含5顆晶片,這種方法成本很高,而大多數廠商都在尋求單晶片設計。

 

 

Intel將一對XL710乙太網路控制器和一個使用48通道的第三代PEX8747 PCIe交換晶片Arria10 FPGA融合在一起。每個XL710有8個通道,Arria有16個通道,PCIe插槽有16個通道。第5個晶片是用於管理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 (Application Onload Engine)平台。這是N3000的前身,讓Solarflare為金融業客戶提供了令人印象深刻的即時交易結果,耗時僅為350ns。8年後的今天,該記錄為24.2ns。

Intel的方法支援FPGA在XL710之前進行封包處理,其FPGA具備115萬個可程式化邏輯單元和兩個4GB的DDR4記憶體庫(bank),為處理以下SmartNIC任務提供了充足的空間:虛擬寬頻網路閘道器(vBNG),分層服務品質(HQoS),封包分類、監控、調度和成形,虛擬化演進分組核心(vEPC),5G新一代核心網路(NGCN),網際網路協議安全(IPSec),IPv6分段路由(SRv6),向量封包處理(VPP),虛擬無線電接入網路(vRAN)。

儘管Intel已將上述工作負載用N3000平台,但目前還不清楚他們是否已提供所有必要的軟體來分擔該SmartNIC上的每個應用。SmartNIC的使用者會發現,軟體才是癥結所在,所有這些公司在硬體方面都很出色,但是軟體供應完全是另一回事。

Xilinx

SmartNIC領域中另一家傑出的FPGA供應商是Xilinx,它是在1980年代中期第一家實現FPGA商業化的公司,如今則是FPGA領域霸主。Xilinx於2019年秋季收購Solarflare Communications,自2012年以來,Solarflare一直在為電子交易打造以ASIC和FPGA為基礎的NIC。來自英國劍橋的SolarFarre工程團隊是Xilinx Alveo U25 SmartNIC的研發主力,如下圖所示。

 

Xilinx的成功得益於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萬個邏輯單元,是Intel提供的邏輯單元數的一半,但是提供的四核Arm足以彌補減少的可用閘數。

Xilinx將U25推向市場,最初是為了滿足那些需要開放虛擬交換機(OvS)分擔功能的客戶。該公司已經宣佈於不久的將來增加IPSec、機器學習(ML)、深度封包檢測(DPI)、視訊轉碼和分析等分擔功能。兩年前,Xilinx在收購Solarflare的準備階段,兩家公司以合作夥伴形式在OCP峰會上公開展示了X2控制器邏輯作為「軟NIC」在更大型FPGA中的運作情況。

 

 

如同Intel,Xilinx也擁有數條運算晶片產品線,如Kintex、Virtex、Zynq和Versal。Kintex和Virtex都是純FPGA,該系列中某些型號採用的邏輯單元數量巨大,大約有近300萬個,幾乎是Intel在其N3000中使用數量的三倍。此外,Xilinx還透過矽中介層創在Virtex晶片上分層放置了高達16GB的高頻寬記憶體(HBM)。所有四條產品線的其他晶片也採用了該技術。

Zynq是SoC晶片系列,包括FPGA可程式化邏輯、四核心Arm處理器、即時Arm核心、DDR控制器以及用於乙太網路和PCI Express的連結邏輯。Versal超越了SoC,是採用7奈米製程的自適應運算加速平台(ACAP)。ACAP透過添加數百個AI核心和DSP引擎來擴展Zynq架構。AI核心在某種程度上是新的,但本質上屬於單精確度運算引擎。最終,Xilinx將把其公開展示的SoftNIC與Versal結合起來。

Broadcom

Broadcom是乙太網路NIC控制器商品市場上無可爭議的領導者,他們的Stingray SmartNIC採用單晶片架構,與其他競爭對手採用多晶片的板卡相較,單晶片SmartNIC解決方案的成本總是更具優勢。Broadcom以NetXtreme E系列控制器的邏輯為基礎,設計了位於Stingray核心的NetXtreme-S BCM58800晶片,然後在叢集配置中部署了主頻為3Ghz的8個Arm v8 A72核心。接下來,他們加入了一些邏輯,以高達90Gbps的速度分擔加密功能,以及抹除編碼和RAID等儲存處理。

Broadcom還採用了具有神秘色彩的TruFlow技術。這是一個可配置的流程加速器,用於將常見的網路流程轉移到硬體;我們相信該公司是使用P4,這有助於釋放Arm核心,從而專注於流程和封包層級的更多可程式化任務。從其公開內容來看,TruFlow能夠在硬體中分擔像Open vSwitch (OvS)這樣的任務。

Broadcom還聲稱TruFlow在硬體中實現了眾多經典的軟體定義網路(SDN)概念,例如分類、匹配和操作。因此,Stingray配備了兩個可程式化元件,即TruFlow和一個由4個3Ghz雙核心Arm v8 A72複合體組成的叢集。了解到他們所提供之產品的複雜性後,Broadcom為SmartNIC應用開發和儲存控制器開發提供了Stingray工具套件。

Nvidia-Mellanox

Nvidia是繪圖處理單元(GPU)領域公認的領導者,GPU已經成為高性能運算(HPC)的首選加速器。今年初,Nvidia最終以70億美元的價格完成了對Mellanox的收購。為攻佔HPC市場,Nvidia選擇了這家Infiniband互連領導供應商,好為HPC客戶提供完整的解決方案。這與超級電腦業者Cray過去的做法非常相似。

Nvidia最近還收購了Cumulus Networks,後者是開放源碼乙太網路交換機作業系統的領導業者。軟體一直是Mellanox的弱點,而Nvidia顯然很早就意識到了這一點。關於SmartNIC,Nvidia還透過收購Mellanox得到了一個意外驚喜──Mellanox是最早進入SmartNIC領域的公司之一,但這也是透過收購實現的;他們的Bluefield 2解決方案藉由2015年透過收購EZchip取得Tilera所誕生。

Tilera擁有利用IP實現的高度平行SmartNIC方案,更早之前是一個美國麻省理工學院(MIT)的研究專案。基本上Tilera將處理核心以區塊形式排列在晶片上,每個核心都有一條高速匯流排連接到周圍的4個核心。他們的旗艦產品早在2013年就可支援多達72個MIPS核心、記憶體控制器、加密模組、PCIe區塊和mPipe,這是透過SFP和連接器連接到多個MAC的一組通道。

 

 

Mellanox藉由以Arm核心替換,並將mPipe換成ConnectX邏輯繼續演進,目前的核心數量為8個Arm v8 A72核心,但它們被排列成由4個雙核心Arm構成的叢集。這種方法與Broadcom的Stingray十分類似,它們不僅使用相同的核心,而且速度相同,但是它缺少Broadcom架構的核心組成部分,即平行P4處理器。

P4是每家公司的目標,只不過並非每家公司都公開表明此發展方向或已經達成。Broadcom、Xilinx和Pensando都很關注P4。這也是Cumulus Networks的用武之地,他們在P4程式設計方面有著豐富的經驗。因此,為了替未來的Bluefield產品系列提供前端服務,Nvidia設計了P4封包處理引擎也就不足為奇了。

Pensando

Pensando是一家SmartNIC新創公司,由一群分別貢獻了Cisco關鍵技術(他們創立的公司都曾被Cisco收購)的菁英共同創辦;Cisco前執行長John Chambers目前擔任該公司董事會主席。考量到創辦人們的經驗,業界咸認當Pensando向主要客戶證明了他們的技術是可行的,就會將公司打包賣給Cisco──Cisco擁有一些通用NIC技術,但並不是SmartNIC等級,Pensando正能填補這一空白。

Pensando最初提供兩種產品,但最近又降為單一產品,即分散式服務卡(Distributed Services Card) DSC-25(這聽起來甚至有點像Cisco的產品名稱?)。它像是一款單一的P4處理器晶片,並具備支援輔助處理的Arm核心處理器,產品規格表顯示這兩種處理器都可支援高達4GB的板載記憶體。

 

 

該處理器稱為Capri,是具備多個平行階段(stages)的P4可程式化單元;但確切的平行處理程度尚不清楚,因為封包性能、時延和抖動未公佈。由於快取記憶體失誤(cache miss)導致的指令記憶體提取會影響所有指標的性能,所以Pensando妥善管控P4應用程式,將它們保留在Capri快取記憶體中。其他被稱為服務處理分擔(Service Processing Offloads)的運算單元則負責處理加密、儲存流程和其他任務。Pensando聲稱Capri能夠提供線速(wire-rate)性能。

Fungible

Fungible是一家還在隱身模式的後起之秀,在募得近3億美元的三輪融資(其中2億美元來自去年C輪募資由Softbank Vision提供的資金)後,他們宣佈即將推出新產品。他們有180名員工,沒有產品、還沒有營收,也沒有可見客戶。Fungible聲稱將生產資料處理單元(DPU),但實際的架構和組成尚不明朗(如以下該公司提供的架構圖)。

 

 

 

很多報導都提及他們將在2020年夏天發表新產品,或許大家可以密切關注。他們的創辦人之一暨首席架構師曾在Chelsio Communications任職10年,專長以儲存為中心的乙太網路NIC。此外,他們的軟體和韌體工程副總裁也曾任職Chelsio任職,年資有13年。

因此,儘管Chelsio過去是一家ASIC導向的公司,如今要從頭打造一款領先的SmartNIC乙太網路控制器ASIC,很容易就會消耗掉超過5,000萬美元的寶貴資本。有人推測,他們將採取阻力最小的方法來獲得收益,並利用FPGA平台開發他們的初始產品,同時將特有的ASIC設計載入到該平台。隨後,他們可以在開始追求客戶和收益的同時推出設計方案。

將設計載入到FPGA有助於Fungible輕鬆地修復設計缺陷,並可以根據客戶要求快速改善。如今,FPGA的應用越來越廣泛,我們已經開始看到像RISC-V這樣成熟的處理器架構被載入到這些平台上。

SmartNIC vs. NIC

那麼,SmartNIC與普通NIC有哪些顯著差異?運算能力、記憶體以及最重要的軟體設計都是為了減輕主機CPU的負擔,以完成更高等級的網路處理任務。SmartNIC將推動運算能力逐漸擴展到網路邊緣,從而釋放伺服器CPU的算力,重點關注複雜的業務關鍵型處理任務。

研究表明,在高度虛擬化的環境中,網路可以消耗主機CPU週期的多達30%來處理OvS事務等任務。試想一下,在SmartNIC中能夠完成存儲功能、加密、深度包檢測和複雜路由嗎?這可能會將通常花費在處理這些工作負載上的大部分CPU週期傳遞回主機CPU。

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

 

本文原刊於《電子工程專輯》簡體中文版雜誌2020年9月刊與EE Times China網站;編譯:Judith Cheng

 

掃描或點擊QR Code立即加入 “EETimes技術論壇” Line 群組 !

 EET-Line技術論壇-QR

發表評論