GPU 提供的高度并行計算可以利用網絡流量的實時處理。在這些類型的應用程序中,優化的數據包獲取或傳輸可以避免瓶頸,并使整體執行能夠跟上高速網絡的步伐。在這種情況下,DOCA GPUNetIO 將 GPU 提升為一個獨立的組件,可以在沒有 CPU 干預的情況下執行網絡和計算任務。
本文提供了一個 GPU 數據包處理應用程序的列表,這些應用程序雖然專注于不同和無關的場景,但都集成了NVIDIA DOCA GPUNetIO以降低延遲并最大限度地提高性能。
NVIDIA DOCA GPUNetIO API
NVIDIA DOCA GPUNetIO 是隨著 NVIDIA DOCA 軟件框架一起發布的新庫之一。DOCA GPUNetIO 庫通過一個或多個 CUDA 內核實現網卡和 GPU 之間的直接通信,從而將 CPU 從關鍵路徑中移除。
使用 DOCA GPUNetIO 庫中的 CUDA 設備函數,CUDA 內核可以直接向 GPU 發送和接收數據包,而無需 CPU 核心或內存。此庫的主要功能包括:
-
GPUDirect 異步內核啟動的網絡(GPUDirect Async Kernel-Initiated Network,GDAKIN):是一種以太網通信,GPU(CUDA 內核)在沒有 CPU 干預的情況下直接與網卡交互,并在 GPU 內存(GPU Direct RDMA)中發送或接收數據包。
-
GPU 內存暴露:在單個函數中結合利用 GDRCopy 庫的基本 CUDA 內存分配功能,無需使用 CUDA API 即可將GPU 內存緩沖區暴露給 CPU 進行直接訪問(讀或寫)。
-
準確的發送調度:可以從 GPU 調度未來數據包突發的傳輸,將時間戳與之關聯,并將此信息提供給網卡,網卡將負責在正確的時間發送數據包。
-
信號量:這是一種有用的消息傳遞對象,可在不同的 CUDA 內核之間,或者在 CUDA 內核和 CPU 線程之間共享信息和進行同步。
如果您想深入了解 DOCA GPUNetIO 的原理和優勢,請參閱使用 NVIDIA DOCA GPUNetIO 進行的內聯 GPU 數據包處理。如需獲取 DOCA GPUNetIO API 的更多詳細信息,請參閱 DOCA GPUNetIO SDK 編程指南。
圖 1:NVIDIA DOCA GPUNetIO 應用程序中接收進程的布局。不涉及 CPU,因為 GPU 可以獨立地接收和處理網絡數據包
與該庫一起,以下 NVIDIA DOCA 應用程序和 NVIDIA DOCA 示例還展示了如何使用該庫提供的功能和特性。
-
NVIDIA DOCA 應用程序:這是一個 GPU 數據包處理應用程序,能夠檢測、管理、過濾和分析 UDP 、 TCP 和 ICMP 流量。此應用程序還實現了 HTTP over TCP 服務器。使用簡單的 HTTP 客戶端(例如 curl 或 wget ),可以建立 TCP 三次握手連接,并通過向 GPU 發出 HTTP GET 請求來獲取簡單的 HTML 頁面。
DOCA GPUNetIO 在實際中的應用
DOCA GPUNetIO 已被用于 NVIDIA Aerial SDK,用于使用 GPU 進行發送和接收,從而無需 CPU 介入。想要了解更多詳細信息,請參閱使用 NVIDIA DOCA GPUNetIO 進行內聯 GPU 數據包處理。下面的部分提供了成功使用 DOCA GPUNetIO 來利用 GDAKIN 技術進行 GPU 數據包獲取的新示例。
NVIDIA Morpheus AI
NVIDIA Morpheus 是一個面向性能的應用程序框架,使網絡安全開發人員能夠創建完全優化的 AI 流水線,用于過濾、處理和分類大量實時數據。該框架通過一個由 Python 和 C ++ API 組成的可訪問編程模型來抽象 GPU 和 CPU 的并行性和并發性。
利用這個框架,開發人員可以快速構建由為下游消費者獲取、變異和發布數據的階段組成任意數據流水線。您可以在不同的環境中應用 Morpheus,包括惡意軟件檢測、網絡釣魚/魚叉式網絡釣魚檢測、勒索軟件檢測等。其靈活性和高性能是實時網絡流量分析的理想選擇。
針對于網絡監控用例,NVIDIA Morpheus 團隊最近集成了 DOCA 框架,以實現高速、低延遲的 GPU 數據包獲取的源階段,并將實時數據包饋送到負責分析數據包內容的 AI 流水線。想要了解更多詳細信息,請訪問GitHub 上的 Morpheus。
圖 2 : DOCA GPUNetIO 和 NVIDIA Morpheus AI 流水線通過 CUDA 內核連接,該內核接收、過濾和分析傳入數據包
如圖 2 所示,GPU 數據包獲取是實時發生的。通過 DOCA Flow,流轉向規則應用于以太網接收隊列,這意味著隊列只能接收特定類型的數據包(例如 TCP )。Morpheus 啟動 CUDA 內核,該內核在一個循環中執行以下步驟:
-
使用 DOCA GPUNetIO 接收功能接收數據包
-
在 GPU 內存中過濾和分析并行數據包
-
復制相關數據包信息到 GPU 內存緩沖區的列表中
-
當緩沖區已經累積了足夠的數據包信息時,相關的 DOCA GPUNetIO 信號量被設置為 READY
-
AI 流水線前面的 CUDA 內核正在輪詢信號量
-
當信號量為 READY 時,由于在緩沖區中的數據包信息已準備就緒, AI 將被解鎖
GTC 會議 Defensive Cyber Operations(DCO)on Edge Newtorks 提供了一個具體的示例,展示了如何使用該架構部署一個高性能的、支持人工智能的 SPAN /網絡 TAP 解決方案。該解決方案由信息技術(IT)和運營技術(OT)網絡中的高數據速率、第 7 層應用程序數據的異構性和邊緣計算的尺寸、重量和功率(SWaP)約束所驅動。
在邊緣計算的情況下,當計算需求增加時,許多組織無法“將突發上云”,尤其是在斷開連接的邊緣網絡上。這個場景需要為應對 I/O 和計算挑戰設計一個架構,以在整個 SWaP 范圍內提供性能。
此 DCO 示例通過一個常見的網絡安全問題來解決這些限制,識別未加密 TCP 流量中的泄露數據(例如,泄露的密碼、密鑰和 PII),并代表了 Morpheus SID 演示的擴展。識別和修復這些漏洞可以減少攻擊面,提高組織的安全狀況。
在該示例中,DCO 解決方案將數據包接收到異構 Morpheus 流水線(用 Python 和 C ++ 混合形式編寫的 GPU 和并發 CPU 階段)中,該流水線應用 transformer 模型來檢測第 7 層應用程序數據中泄漏的敏感數據。它將輸出與 ELK 堆棧集成,包括安全運營中心(SOC)分析師可利用的直觀可視化(圖 3 和圖 4)。
圖 3:Kibana 儀表板顯示 DOCA GPUNetIO
加上 Morpheus 敏感信息檢測的結果,包括每種類型的總檢測數、
成對網絡圖和數據包大小的分布
圖 4:Kibana 儀表板顯示 DOCA GPUNetIO 加上 Morpheus 敏感信息檢測的結果,
包括每秒高達 50K 數據包的過濾和處理的網絡數據包索引,包括帶有泄露密鑰的有效負載表
實驗設置包括在具有 100Gbps NVIDIA BlueField-2 DPU 的虛擬機上運行的云原生 UDP 多播和 REST 應用程序。這些應用程序通過 SWaP 高效的 NVIDIA Spectrum SN2100 以太網交換機進行通信。數據包生成器將敏感數據注入到由這些應用程序傳輸的數據包中。網絡數據包經過 NVIDIA Spectrum SN2100 上的 SPAN 端口聚合和鏡像,然后發送到 NVIDIA A30X融合加速器,為 Morpheus 數據包檢查流水線提供支持,實現了令人印象深刻的吞吐量結果。
-
該流水線包括來自第三方 SIEM 平臺(Elasticsearch)中進行 I/O 、數據包過濾、數據包處理和索引的多個組件。DOCA GPUNetIO 主要關注 I/O 方面,使得 Morpheus 能夠通過單一接收隊列,以高達 100 Gbps 的速度將數據包接收到 GPU 內存中,從而消除了網絡數據包處理應用程序中的一個關鍵瓶頸。
-
利用階段級并發,該流水線將 Elasticsearch 索引吞吐量提高了 60%。
-
在 NVIDIA A30X 融合加速器上運行端到端數據流水線會生成的豐富的數據包,容量約為 Elasticsearch 索引器的 50%。使用兩倍數量的 A30X 將使索引器完全飽和,從而提供一種方便擴展的探索方法。
圖 5:端到端數據包處理應用程序加速敏感信息的檢測
雖然這個用例演示了 Morpheus 的特定應用程序,但它展示了網絡數據包處理應用程序的基本組件。Morpheus 加上 DOCA GPUNetIO 共同為大量延遲敏感和計算密集型數據包處理應用程序提供了性能和可擴展性。
線速雷達信號處理
本節介紹了一個示例,在該示例中,雷達檢測應用程序以 100Gbps 線速從模擬的僅測距雷達系統獲取變頻的 I/Q 樣本,執行將接收到的 I/Q RF 樣本實時轉換為物體檢測所需的所有信號處理。
雷達、激光雷達和光學平臺等遙感應用依賴于信號處理算法,將從測量環境中收集的原始數據轉化為可操作的信息。這些算法通常具有很高的并行性,并且需要很高的計算負載,這使得它們非常適合基于 GPU 的處理。
此外,輸入傳感器會生成大量的原始數據,這意味著處理解決方案的入口/出口能力必須能夠在低延遲下處理非常高的帶寬。
使問題進一步復雜化的是,許多基于邊緣的傳感器系統具有嚴格的 SWaP 約束,限制了可能用于其他高通量網絡方法(如基于 DPDK 的 GPUDirect RDMA)的可用 CPU 核心的數量和功率。
DOCA GPUNetIO 使 GPU 能夠直接處理網絡負載以及成功實現了實時傳感器流應用程序所需的信號處理。
常用的信號處理算法被用于雷達探測應用中。圖 6 中的流程圖顯示了用于將 I/Q 樣本轉換為檢測的信號處理流水線的圖形表示。
圖 6:用于在僅測距雷達系統中從反射 RF 波形計算檢測的信號處理流水線
MTI 濾波是一種在雷達系統中常用的技術,用于消除反射的 RF 波形中的靜止背景雜波(如地面或建筑物)。這里使用的方法被稱為 Three-Pulse Canceler(三脈沖消除器),它是在脈沖維度上的 I/Q 數據與濾波器系數 ‘[+1,-2,+1]’ 的卷積。
脈沖壓縮使接收波形相對于目標存在的信噪比(SNR)最大化。它是通過計算接收到的 RF 數據與發射波形的互相關來實現的。
恒虛警率(CFAR)檢測器計算噪聲的經驗估計,該噪聲被定位于濾波數據的每個距離倉。然后將每個倉的功率與噪聲進行比較,并在給定噪聲估計和分布的情況下,如果在統計上有可能,則宣布為檢測到。
大小為(#波形)x(#信道)x(#樣本)的 3D 緩沖區用于保持正在接收組織好的 RF 數據(注意,在數據包接收時應用 MTI 濾波器將脈沖維度的大小減小到 1)。假設 UDP 數據流式傳輸沒有排序,只是大致按照數據包的波形 ID 升序進行流傳輸。每個數據包傳輸大約 500 個復雜樣本,樣本在 3D 緩沖區中的位置取決于波形 ID、信道 ID 和樣本索引。
此應用程序持續運行兩個 CUDA 內核和一個 CPU 核心。第一個 CUDA 內核負責使用 DOCA GPUNetIO API 將數據包從網卡讀取到 GPU。第二個 CUDA 內核基于數據包頭部中的元數據將數據包數據放入正確的內存位置,并應用 MTI 過濾器,CPU 核心負責啟動處理脈沖壓縮和 CFAR 的 CUDA 內核。使用 cuFFT 庫進行 FFT。
圖 7 顯示了應用程序的圖形表示。
圖 7:基于 GPU 的信號處理流水線的工作分配的圖形表示
雷達探測流水線的吞吐量大 100Gbps。以 100Gbps 的線速運行 100 萬個 16 信道波形,沒有丟棄任何數據包,信號處理從未落后于數據流的吞吐量。從接收到獨立波形 ID 的最后一個數據包開始測量的延遲大約為 3 毫秒。使用 NVIDIA ConnectX-6 Dx 智能網卡和 NVIDIA A100 80GB GPU 。數據是通過以太網上的 UDP 數據包發送的。
未來的工作將評估該架構僅在具有集成 GPU 的 BlueField DPU 上運行時的性能。
GPU 上的實時 DSP 服務
模擬信號無處不在,既有人工信號(例如 Wi-Fi 無線電),也有自然信號(例如太陽輻射和地震)。為了以數字方式捕獲模擬數據,聲波必須使用數模轉換器進行轉換,該轉換器由采樣率和采樣位深度等參數控制。數字音頻和視頻可以使用 FFT 進行處理,使聲音設計師能夠使用均衡器(EQ)等工具來改變信號的一般特性。
此示例說明了 NVIDIA 產品和 SDK 是如何通過網絡使用 GPU 執行實時音頻 DSP 的。為此,該團隊構建了一個客戶端,該客戶端用于解析 WAV 文件,將數據封裝成多個以太網數據包,并通過網絡將其發送到服務器應用程序。該應用程序負責接收數據包、應用 FFT、操縱音頻信號,并最終發回修改后的數據。
客戶端的責任是識別哪個部分應該發送到信號處理鏈的“服務器”,以及在從服務器接收到處理后的樣本時如何處理它們。這種方法支持多種 DSP 算法,如重疊相加和各種采樣窗口選擇。
服務器應用程序使用 DOCA CUDANetIO 從 GPU 內核接收 GPU 內存中的數據包。當已經接收到數據包的子集時,CUDA 內核通過 cuFFTDx 庫并行將 FFT 應用于每個數據包的有效負載。同時,不同的 CUDA 線程對每個數據包應用頻率濾波器,從而降低低頻或高頻的幅度。基本上,它采用低通或高通濾波器。
圖 8:客戶端 – 服務器體系結構旨在演示如何通過網絡使用 GPU 執行實時 DSP 服務
對每個數據包應用逆 FFT。通過 DOCA GPUNetIO,CUDA 內核將修改后的數據包發送回客戶端。客戶端重新排序數據包并重新構建它們,以重新創建應用了音效的可聽且可再現的 WAV 音頻文件。
使用該客戶端,該團隊可以調整參數以優化音頻輸出的性能和質量。可以將流和多路復用流分離到它們的處理鏈中,從而將許多復雜的計算卸載到 GPU 中。通過挖掘該解決方案的潛力,它可以為云 DSP 服務提供商打開新的市場機會。
總結
DOCA GPUNetIO 庫促進了一種以 GPU 為中心的通用方法,用于在進行實時流量分析的網絡應用程序中獲取和傳輸數據包。這篇文章展示了如何在不同上下文的各種應用程序中采用該庫,從而在延遲、吞吐量和系統資源利用率方面提供了巨大的改進。掃描下方二維碼,查看更多有關NVIDIA DOCA 的信息。
?
更多精彩內容 使用 NVIDIA DOCA GPUNetIO 進行內聯 GPU 數據包處理
利用 NVIDIA DOCA 2.0 改變 IPsec 的部署
原文標題:使用 NVIDIA DOCA GPUNetIO 實現實時網絡處理功能
文章出處:【微信公眾號:NVIDIA英偉達】歡迎添加關注!文章轉載請注明出處。
-
英偉達
+關注
關注
22文章
3778瀏覽量
91176
原文標題:使用 NVIDIA DOCA GPUNetIO 實現實時網絡處理功能
文章出處:【微信號:NVIDIA_China,微信公眾號:NVIDIA英偉達】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論