區(qū)別SmartNIC 與數(shù)據(jù)處理器(DPU) 的依據(jù)是它的功能,而不是形態(tài)。對稱為 SmartNICs 的一類數(shù)據(jù)中心智能網(wǎng)卡來說,它需要支持硬件傳輸和用于虛擬交換機加速的可編程數(shù)據(jù)路徑。這些功能是必要的,但不足以使 其 成為 DPU 。一個真正的 DPU 還必須包括一個易于擴展的、 C語言編程的 Linux 環(huán)境,使數(shù)據(jù)中心架構(gòu)師能夠虛擬化云中的所有資源,并使它們看起來像本地資源。為了更好地理解為什么需要這樣,讓我們討論一下-創(chuàng)建 DPU 的原因。
為什么世界需要 DPU
世界需要 DPU 的一個最重要原因是,目前的應(yīng)用程序和數(shù)據(jù)中心的設(shè)計讓 CPU 內(nèi)核花費了太多的開銷來支持網(wǎng)絡(luò)功能。隨著網(wǎng)絡(luò)速度的提高(現(xiàn)在每條鏈路的速度高達 200gb / s ), CPU 使用了太多寶貴的內(nèi)核來進行網(wǎng)絡(luò)流量的分類、跟蹤和控制。這些昂貴的 CPU 內(nèi)核是為通用應(yīng)用程序處理而設(shè)計的,最不值得的就是將它們用于網(wǎng)絡(luò)數(shù)據(jù)包的查找和管理。畢竟,用CPU內(nèi)核來分析數(shù)據(jù)并得到結(jié)果才是它們真正的價值所在。
計算虛擬化的引入使這種情況變得更糟,因為無論是在同一臺服務(wù)器上運行的VM 或容器之間, 還是和其他的計算服務(wù)器或存儲服務(wù)器之間,都需要更多的流量。軟件定義存儲( SDS )、超聚合基礎(chǔ)設(shè)施( HCI )和大數(shù)據(jù)等的應(yīng)用程序會增加服務(wù)器之間的東西向的通信流量,另外, RDMA 也通常被用來加速服務(wù)器之間的數(shù)據(jù)傳輸,這使得服務(wù)器對網(wǎng)絡(luò)基礎(chǔ)功能的處理要求更高。
隨著通信量的增加和 VXLAN 、 NVGRE 或 GENEVE 等覆蓋網(wǎng)絡(luò)的使用,公共云和私有云越來越流行。但其需求的多層封裝也進一步增加了網(wǎng)絡(luò)的復(fù)雜性。軟件定義的網(wǎng)絡(luò)( SDN )帶來了額外的數(shù)據(jù)包控制和處理的需求,這讓 CPU 花費珍貴的內(nèi)核來處理openvswitch ( OVS )等更多工作。
DPU 可以比標準 CPU 更快、更高效、更低的成本處理所有這些虛擬化的功能( SR-IOV 、 RDMA 、覆蓋網(wǎng)絡(luò)流量封裝、 OVS 卸載)。
不可忽視的安全隔離
有時,出于安全原因,您需要將網(wǎng)絡(luò)與 CPU 隔離開來。網(wǎng)絡(luò)是黑客攻擊或惡意軟件入侵最有可能的載體,但也是你第一個發(fā)現(xiàn)或阻止黑客攻擊的地方。它同時也是最有可能實現(xiàn)在線加密的地方。
DPU 作為特殊的 網(wǎng)卡 ,是檢查網(wǎng)絡(luò)流量、阻止攻擊和加密傳輸?shù)氖走x,最簡單有效,既有性能優(yōu)勢,又有安全優(yōu)勢,因為它消除了將所有傳入和傳出的數(shù)據(jù)讓CPU處理 并通過 PCIe 總線的頻繁需要。它通過與主機CPU 分開運行來提供安全隔離。如果主機CPU 受損, DPU 仍然可以檢測或阻止惡意活動。 DPU 可以在不立即涉及 CPU 的情況下檢測或阻止攻擊。
虛擬化存儲和云
DPU 的一個較新用例是虛擬化軟件定義的存儲、超聚合基礎(chǔ)設(shè)施和其他云資源。在虛擬化需求爆發(fā)之前,大多數(shù)服務(wù)器只運行本地存儲,這并不總是高效的,但卻很簡單易行。每個操作系統(tǒng)、應(yīng)用程序和 hypervisor 都知道如何使用本地存儲。
然后是網(wǎng)絡(luò)存儲的興起: SAN 、 NAS ,以及最近出現(xiàn)的 NVMe of Fabrics(NVMe-oF)。但是,并不是每個應(yīng)用程序都是原生的并可感知 SAN。另外,一些操作系統(tǒng)和 hypervisor ,比如 Windows 和 VMware ,都還沒有考慮到 NVMe-oF 。 DPU 可以支持虛擬化網(wǎng)絡(luò)存儲,即可以更高效也更易于管理,讓虛擬化網(wǎng)絡(luò)存儲看起來就像本地存儲,非常易于應(yīng)用程序使用。一個 DPU 甚至可以虛擬化 GPU或其他神經(jīng)網(wǎng)絡(luò)處理器,這樣任何服務(wù)器在需要時都可以通過網(wǎng)絡(luò)訪問任意數(shù)量的 GPU。
類似的DPU優(yōu)勢也適用于軟件定義的存儲和超聚合基礎(chǔ)架構(gòu)。兩種架構(gòu)傳統(tǒng)上都使用管理層軟件(通常作為 VM 或 hypervisor的一部分來運行)來虛擬化和抽象本地存儲和網(wǎng)絡(luò),以使其可供集群中的其他服務(wù)器或客戶端使用。這對于服務(wù)器的快速部署,及共享存儲資源帶來了極大的便利。然而,管理層和虛擬化占用了許多本應(yīng)運行應(yīng)用程序的 CPU 資源。更糟糕的是,網(wǎng)絡(luò)帶寬越大,存儲速度越快,需要損耗的CPU 的資源就越多。
這也是智能 DPU 創(chuàng)造效率的地方。首先,它卸載并幫助虛擬化網(wǎng)絡(luò)。它們加速了私有云和公共云,這就是為什么它們有時被稱為 CloudNICs 。它們可以卸載網(wǎng)絡(luò)和大部分甚至全部的存儲虛擬化。 DPU 還可以減輕 SDS 和 HCI 的各種功能,如壓縮、加密、重復(fù)數(shù)據(jù)消除、 RAID 、報告等。這一切都是為了把更昂貴的 CPU 內(nèi)核送回它們最擅長的領(lǐng)域:運行應(yīng)用程序。
圖 1 。 DPU 是一種可編程的、專用的電子電路板,具有數(shù)據(jù)中心計算數(shù)據(jù)處理的硬件加速功能
必須有硬件加速
在介紹了主要的 DPU 用例之后,您應(yīng)該已經(jīng)清楚何時何地使用DPU會帶來最大的好處:加速和卸載網(wǎng)絡(luò)流量,虛擬化存儲資源,通過網(wǎng)絡(luò)共享 GPU, 以及支持 RDMA 和執(zhí)行加解密。
那么 最優(yōu)的DPU 需要具備什么?必須有硬件加速。 硬件加速提供了最好的性能和效率,這也意味著用更少的開銷進行更多的卸載。為某些功能提供專用硬件的能力讓采用DPU 的機會大大增加。
必須可編程
為了獲得最佳性能,大多數(shù)加速功能必須在硬件上運行。為了獲得最大的靈活性,這些功能的控制和編程必須在軟件中運行。
在 DPU 上有許多功能可以編程,通常,特定的卸載方法、加密算法和傳輸機制不會有太大變化,但是路由規(guī)則、流表、加密的密鑰和網(wǎng)絡(luò)地址會一直會變化。前者是數(shù)據(jù)平面,后者是控制平面。數(shù)據(jù)平面規(guī)則和算法經(jīng)過標準化后,可以被固化到芯片中。但控制平面規(guī)則和要求變化太快,無法固化,但可以在 FPGA 上運行(偶爾修改,但很困難),也可以在 支持C語言編程的 Linux 環(huán)境中運行(容易且可以經(jīng)常修改)。
表 1 。 DPU 功能指南
在 DPU 上需要多少編程?
您可以選擇在DPU 上有多少功能要由運行程序完成,也就是說,處理數(shù)據(jù)包的數(shù)據(jù)平面由DPU處理 (硬件加速或/和 開發(fā)的程序),同時, 用于設(shè)置和管理規(guī)則的控制平面,可以由用戶決定是由DPU來全權(quán)處理,還是由位于其他地方的處理器,如 CPU來處理 。
例如,使用 Open vSwitch ,包交換可以在軟件或硬件中完成,而控制平面則可以在 CPU 或 DPU 上運行。如果是常規(guī)的基礎(chǔ)網(wǎng)卡,所有的交換和控制都必須由 CPU 上的軟件完成。 使用 SmartNIC 時,交換在網(wǎng)卡的 ASIC 上運行,但控制仍必須在 CPU 上完成。 只有在真正的 DPU 中,交換是由DPU卡上的 ASIC完成,而控制平面也是在DPU包含的 Arm 內(nèi)核上運行。
圖 2 。 ConnectX-5 SmartNIC 卸載 OVS 切換到 NIC 硬件
DPU 和 SmartNIC 哪一個最好?
為了在數(shù)據(jù)中心充分實現(xiàn)應(yīng)用程序的效率,傳輸卸載、可編程的數(shù)據(jù)平面以及用于虛擬交換的硬件卸載都是至關(guān)重要的功能。根據(jù)定義,支持這些功能是 SmartNIC 的重要部分,。但只是 DPU 的最基本要求之一, 并不能將 SmartNIC 提升到 DPU 的級別。
客戶經(jīng)常告訴我們,他們必須有 DPU,因為他們需要可編程的虛擬交換硬件加速支持。這主要是某些供應(yīng)商的誤導(dǎo)。如果某個供應(yīng)商只能提供昂貴的、幾乎無法編程的產(chǎn)品,他會告訴客戶,“ DPU ”是實現(xiàn)這一目標的唯一方法。對我們來說,這種情況只需要我們的 ConnectX 系列的 SmartNIC 。
我覺得要將 SmartNIC 提升到 DPU 的高度,還需要支持更多的功能,比如能夠運行控制平面,以及在 Linux 環(huán)境下提供 C 語言編程。我們很自豪地提供 BlueField DPU 來支持所有這些,它包括 ConnectX 的所有智能 網(wǎng)卡 功能,以及 4 到 16 個 64 位的 Arm 內(nèi)核,當(dāng)然,所有這些內(nèi)核都運行 Linux ,并且易于編程。
在計劃下一個基礎(chǔ)架構(gòu)的構(gòu)建或更新時,請記住以下要點:
DPU 在卸載網(wǎng)絡(luò)功能和虛擬化存儲、網(wǎng)絡(luò)和 GPU 等資源方面越來越有用
SmartNIC 可以在硬件中加速數(shù)據(jù)平面任務(wù),但必須依靠host CPU來運行控制平面
控制平面軟件和其他管理軟件可以在常規(guī) CPU 或 DPU 上運行。
NVIDIA 提供業(yè)界最佳的SmartNICs ( ConnectX )、 FPGA NIC ( Innova )和完全可編程并支持數(shù)據(jù)平面及控制平面 DPU s ( BlueField 可編程 DPU )。
關(guān)于作者
Kevin Deierling 從 2013 年 3 月開始擔(dān)任 Mellanox 的營銷副總裁。此前,他曾擔(dān)任 Genia Technologies 的技術(shù)副總裁、 Silver Spring Networks 的首席架構(gòu)師,并在 Spans Logic 負責(zé)營銷和業(yè)務(wù)開發(fā)
審核編輯:郭婷
-
cpu
+關(guān)注
關(guān)注
68文章
10781瀏覽量
210531 -
Linux
+關(guān)注
關(guān)注
87文章
11182瀏覽量
208533 -
數(shù)據(jù)中心
+關(guān)注
關(guān)注
16文章
4588瀏覽量
71824
發(fā)布評論請先 登錄
相關(guān)推薦
評論