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