自上世紀(jì)80 年代中期首批 PC 機(jī)面市后不久,網(wǎng)絡(luò)接口卡 (NIC) 就已經(jīng)進(jìn)入了市場(chǎng)。然而,在過(guò)去的幾年里,我們看到了 SmartNIC 的興起。什么是 SmartNIC?按照最基本的定義,SmartNIC 就是可編程NIC。很多廠(chǎng)商只是順應(yīng) SmartNIC 這一概念在自身實(shí)現(xiàn)中堆砌冗繁的芯片與固件。
一個(gè)比較準(zhǔn)確的定義是SmartNIC 是包含客戶(hù)可用的額外計(jì)算資源和使用這些資源所需的開(kāi)源工具的NIC。這些額外的計(jì)算資源用來(lái)處理進(jìn)出服務(wù)器時(shí)的網(wǎng)絡(luò)流量,以及在應(yīng)用層面卸載主機(jī)CPU。
計(jì)算單元
SmartNIC在同一張卡上融合有線(xiàn)網(wǎng)絡(luò)和計(jì)算資源。這些計(jì)算資源的構(gòu)成可包含下列一種或數(shù)種類(lèi)型的資源:傳統(tǒng)x86 CPU,如 Arm 核;數(shù)字信號(hào)處理器 (DSP) 專(zhuān)用核;人工智能 (AI);網(wǎng)絡(luò)處理單元 (NPU);或現(xiàn)場(chǎng)可編程門(mén)陣列 (FPGA)。一個(gè)SmartNIC 上含有多個(gè)上述計(jì)算單元的情況并不罕見(jiàn)。
服務(wù)器與NIC 連接
每個(gè)服務(wù)器使用NIC 連接到網(wǎng)絡(luò)。有時(shí)也使用通常用來(lái)支持?jǐn)z像頭和恒溫器等物聯(lián)網(wǎng) (IoT) 設(shè)備的嵌入式無(wú)線(xiàn)連接,但大多數(shù)服務(wù)器還是以有線(xiàn)方式連接到網(wǎng)絡(luò)。采用有線(xiàn)聯(lián)網(wǎng)的原因較多,不過(guò)兩個(gè)最重要的原因是性能和可用性。
在可用性方面,有線(xiàn)網(wǎng)絡(luò)只有在電纜受損或拆除的情況下才中斷。至于網(wǎng)絡(luò)性能方面,我們重點(diǎn)關(guān)注兩個(gè)指標(biāo):一個(gè)是帶寬,可通過(guò)網(wǎng)絡(luò)傳輸?shù)臄?shù)據(jù)量;另一個(gè)是時(shí)延,即傳輸數(shù)據(jù)所用的時(shí)間。
提升算力
雖然今天的數(shù)據(jù)中心聯(lián)網(wǎng)采用的是25 GbE,并且正在迅速升級(jí)到 50 GbE 和 100 GbE,但仍需要認(rèn)真地考慮為 SmartNIC 添加額外的計(jì)算資源。對(duì)于傳統(tǒng)的 CPU 核(比如 Arm 的 CPU 核),最高效的使用方式是將它們預(yù)留給控制平面管理。例如,一個(gè)雙核或四核Arm 核組常被用于控制平面管理任務(wù),如將軟件卸載到其他計(jì)算單元和記錄日志。
今天的數(shù)據(jù)中心NIC 每秒要處理數(shù)百萬(wàn)乃至超過(guò)一億個(gè)網(wǎng)絡(luò)數(shù)據(jù)包。即便主頻在3GHz 的 Arm 核,也不能勝任每秒檢查和處理數(shù)百萬(wàn)個(gè)數(shù)據(jù)包的工作,更別說(shuō)數(shù)千萬(wàn)個(gè)數(shù)據(jù)包了。每秒的指令數(shù)根本不夠應(yīng)付這樣大數(shù)量的數(shù)據(jù)包。處理這樣大數(shù)量的數(shù)據(jù)包,需要使用專(zhuān)用計(jì)算資源,如專(zhuān)用網(wǎng)絡(luò)處理器、FPGA或 GPU 核。
FPGA 的并行處理和可編程邏輯特性,常常使其成為這種任務(wù)的最佳選擇。FPGA 可以通過(guò)重配置快速解析網(wǎng)絡(luò)數(shù)據(jù)包報(bào)頭,甚至是數(shù)據(jù)包本體。然后采取必要的處理,如丟棄數(shù)據(jù)表、包裝數(shù)據(jù)包或以線(xiàn)速率修改數(shù)據(jù)包內(nèi)容。賽靈思 Alveo SN1000 SmartNIC 就是包含一個(gè) Arm 核組和一個(gè)網(wǎng)絡(luò)處理器的基于 FPGA 的 SmartNIC 的典型示例。
卸載
CPU卸載是 SmartNIC的一個(gè)關(guān)鍵用途。區(qū)塊鏈散列和視頻轉(zhuǎn)碼等計(jì)算密集型任務(wù)交由SmartNIC 單獨(dú)處理即可,從而釋放了寶貴的服務(wù)器 CPU 資源。
區(qū)塊鏈依賴(lài)的是求解工作量證明。網(wǎng)絡(luò)上完成求解的第一個(gè)節(jié)點(diǎn)會(huì)得到獎(jiǎng)勵(lì),并允許在鏈上捆綁并發(fā)布下一個(gè)區(qū)塊。SmartNIC能在計(jì)算下一個(gè)解時(shí),將區(qū)塊鏈和待完成事項(xiàng)保存在存儲(chǔ)器中。如果求解成功,SmartNIC就公布這個(gè)區(qū)塊并開(kāi)始處理下一個(gè)區(qū)塊。
視頻轉(zhuǎn)碼是另一種非常適合SmartNIC 從主機(jī) CPU卸載的任務(wù)。使用自適應(yīng)比特率 (ABR) 壓縮支持移動(dòng)設(shè)備的視頻轉(zhuǎn)碼,是另一種 CPU 密集型任務(wù)(特別是對(duì)于實(shí)時(shí)視頻應(yīng)用而言)。這些壓縮任務(wù)極度線(xiàn)性,在移植到基于 FPGA 的加速器上后,被證明效率較通用 CPU 提高 10 倍到 20 倍。
此外,SmartNIC 還內(nèi)置基本的 Netfilter 防火墻,從主機(jī) CPU 卸載過(guò)濾出入站數(shù)據(jù)包的任務(wù)。Netfilter 是一種新版本的 IP 信息包過(guò)濾系統(tǒng),為過(guò)濾網(wǎng)絡(luò)流量提供了非常可靠的架構(gòu)。將這個(gè)防火墻卸載到 SmartNIC,每秒可為主機(jī) CPU節(jié)省數(shù)百萬(wàn)條指令,以支持于在服務(wù)器上運(yùn)行的其它應(yīng)用。
我們也提供數(shù)據(jù)包封裝,也就是封包功能。一旦我們對(duì)虛擬化或容器化系統(tǒng)使用疊加網(wǎng)絡(luò),我們就需要封裝網(wǎng)絡(luò)數(shù)據(jù)表,讓它們?cè)谶@些疊加網(wǎng)絡(luò)間正確路由。疊加網(wǎng)絡(luò)處理的例子如 Open vSwitch (OvS)。它有非常高的 CPU 占用率,因此將這個(gè)任務(wù)卸載到 SmartNIC 可釋放大量主機(jī) CPU 周期。
最后,我們還可以卸載通常運(yùn)行在 DNS 等服務(wù)器上或內(nèi)存數(shù)據(jù)庫(kù)上的主要網(wǎng)絡(luò)應(yīng)用。完全在 SmartNIC 內(nèi)處理 DNS 查詢(xún)是一種典型的 SmartNIC 應(yīng)用,因?yàn)槭聞?wù)較小而且查找表處理速度較快。
采用 SmartNIC 進(jìn)行存儲(chǔ)控制
SmartNIC 也能兼用作存儲(chǔ)控制器。像賽靈思 Alveo U25 這樣的一些 SmartNIC,自己的本地存儲(chǔ)擁有千兆字節(jié)片上和板載存儲(chǔ)器(比如 U25 有 6GB)。這種存儲(chǔ)可兼用作服務(wù)器自己的 NVMe 磁盤(pán)的緩存。這種做法很有意義,因?yàn)?Compute Express Link (CXL) 等協(xié)議能讓未來(lái)的 SmartNIC 直接管理與 NVMe 驅(qū)動(dòng)器的關(guān)系。
此外,SmartNIC 也能在硬件中進(jìn)行抹除編碼,還可以為存儲(chǔ)加密。對(duì)于驅(qū)動(dòng)器加密,SmartNIC 提供了一種獨(dú)特的安全機(jī)制。如果使用 SmartMIC 為存放到NVMe存儲(chǔ)的數(shù)據(jù)進(jìn)行加密或解密,要破解這種加密,就需要同時(shí)擁有這兩個(gè)設(shè)備。如果管理員拆下 NVMe 驅(qū)動(dòng)器到其他地方去解密,他們只能使用暴力破解法,猜測(cè)被留在 SmartNIC 上的缺失的加密密鑰。
SmartNIC 可以方便地采用密碼術(shù)保障上電周期間密鑰的安全性,進(jìn)一步提高系統(tǒng)的可靠性和安全性。例如,被賽靈思收購(gòu)的Solarflare在 NIC 上保持著一個(gè)硬件安全隔離區(qū),過(guò)去幾年一直在其 X2 芯片上存儲(chǔ) NIC 密鑰。未來(lái)的 SmartNIC 安全隔離區(qū)將有望為 SSL/TLS 端點(diǎn)加密保存數(shù)十萬(wàn)個(gè)安全密鑰并保障它們的安全。
電子交易
最后,SmartNIC 還在另外一個(gè)領(lǐng)域里大有前途。那就是超低時(shí)延電子交易。我們?cè)谏衔睦镎務(wù)撨^(guò)在幾百億分之一秒內(nèi)傳輸網(wǎng)絡(luò)數(shù)據(jù)包。今天,高性能25-GbE NIC的時(shí)延在1,000ns左右。采用正確架構(gòu)的系統(tǒng)、正確的軟件和調(diào)試到位的 SmartNIC,能在收到網(wǎng)絡(luò)數(shù)據(jù)包的同時(shí)完成分析,一次四個(gè)字節(jié)。響應(yīng)數(shù)據(jù)包則能以令人驚奇的 22ns 內(nèi)注入到網(wǎng)絡(luò)中。這比傳統(tǒng)的高性能 NIC 速度提高了 40 多倍。當(dāng)用于電子交易時(shí),這些 SmartNIC 的投資回報(bào) (ROI) 有時(shí)可以不到一秒就能測(cè)得。
市場(chǎng)采用日益攀升
隨著云服務(wù)提供商不斷擴(kuò)大容量,他們也在增加 SmartNIC 的部署,以將寶貴的 CPU 核心釋放給業(yè)務(wù)應(yīng)用,優(yōu)化服務(wù)器利用率。今天的服務(wù)器往往把 30% 的 CPU 周期用在管理網(wǎng)絡(luò)上。即相當(dāng)于每三部生產(chǎn)服務(wù)器中就有一部用于組網(wǎng)。SmartNIC 支持系統(tǒng)架構(gòu)師將高性能計(jì)算資源部署在服務(wù)器的邊緣,也就是網(wǎng)絡(luò)上。然后 SmartNIC就能用于保護(hù)服務(wù)器,進(jìn)而保護(hù)企業(yè),同時(shí)有力地從成本高昂得多的服務(wù)器 CPU 上卸載任務(wù)。
根據(jù)市場(chǎng)研究公司 Dell’Oro Group,到 2024 年,SmartNIC 的市場(chǎng)規(guī)模預(yù)計(jì)將超過(guò) 6 億美元,占全球以太網(wǎng)適配器市場(chǎng)的23%。我們已經(jīng)看到博通、英特爾、邁絡(luò)思和賽靈思等公司紛紛推出新一代 SmartNIC。因此,當(dāng)您設(shè)計(jì)您的新一代數(shù)據(jù)中心部署的時(shí)候,也許可以考慮將 SmartNIC 納入到您的計(jì)劃中, 而不是單純將標(biāo)準(zhǔn) NIC當(dāng)作服務(wù)器的默認(rèn)配置。
編輯:jq
-
FPGA
+關(guān)注
關(guān)注
1626文章
21671瀏覽量
601900 -
cpu
+關(guān)注
關(guān)注
68文章
10826瀏覽量
211160 -
DNS
+關(guān)注
關(guān)注
0文章
217瀏覽量
19795 -
IOT
+關(guān)注
關(guān)注
186文章
4180瀏覽量
196242
原文標(biāo)題:基于FPGA的SmartNIC技術(shù)及其在數(shù)據(jù)中心的應(yīng)用
文章出處:【微信號(hào):FPGA-EETrend,微信公眾號(hào):FPGA開(kāi)發(fā)圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論