RDMA簡介7之RoCE v2可靠傳輸

? ? ? 可靠傳輸技術旨在通過多種方法確保數據包在傳輸過程中不會丟失或損壞,同時保證數據包按發送順序到達接收端,其要求在鏈路發生丟包或網絡發生擁塞等情況下能夠完全保證數據包的正確性同時盡可能地提高傳輸速率。RoCE v2協議實現可靠傳輸的技術手段共有三種,分別為:丟包重傳機制、流量控制及擁塞管理。接下來將就這三種技術手段進行詳細分析。

(1)丟包重傳機制

為了簡化設計同時降低成本,RoCE v2協議使用了后退N幀(go-back-N)重傳算法處理數據傳輸過程中產生的丟包。后退N幀重傳算法的工作流程如圖1所示。

圖1?后退N幀重傳算法工作流程圖

在RoCE v2協議數據包發送過程中,基礎傳輸報文頭(Base Transformation Head,BTH)中包含一個唯一包序列編號(Packet Serial Number,PSN),同時接收端也會為每條鏈路維護一個期望包序列編號(expect Packet Serial Number,ePSN),每當接收端接收到一個數據包,對比其包頭中的PSN與本地ePSN,來判斷鏈路上是否存在數據包丟失或數據包亂序等現象。如圖1所示,再一次傳輸過程中PSN為2的數據包丟失,當接收端在接收到PSN為3的數據包后感知到丟包,立即發送包含PSN為2的NACK包,當發送端收到該NACK包后,無論在這之前已經正常發送了多少數據包,都會從丟失的PSN開始重新發送數據。這樣的丟包重傳機制將導致在丟包率較高的網絡環境下,會反復重傳大量數據包,性能會隨著丟包率的提升急速下滑。這也就是為什么要求RoCE v2工作在二三層無損網絡下。

(2)流量控制及擁塞管理

為了保證二層網絡無損,需要進行嚴格的流量控制和擁塞管理。流量控制指通過調整發送端的發送速率,確保接收端能夠處理并接收所有數據包。RoCE v2使用了IEEE 802.11Qbb中提出的基于優先級的流量控制算法(PFC)。

在PFC算法中,將網絡接口分為八個虛擬通道,如圖2所示,每個網卡的邏輯端口被分為八個隊列并分別對應一條鏈路上八個不同優先級。在通信過程中,數據包將根據優先級被分配到八個虛擬隊列上。同時PFC算法為每一個優先級的隊列設置了相同或不同的ON/OFF閾值,當接收端某個隊列的緩沖區深度超過這些閾值時,意味著下游出口或程序可能出現擁塞。PFC會向上游相應的端口發送一個暫停幀,該暫停幀指向特定優先級的流量。當發送設備接收到該暫停幀后,它將在一段時間內停止通過該優先級的虛擬通道發送數據。

圖2 PFC算法對應八個虛擬通道示意圖

通過對上述過程的分析可以發現,在多交換機的大型數據中心中,某個交換機的入口流量大于出口流量,就會造成擁塞。此時,擁塞會逐步向更上游傳遞。同時,由于PFC流控機制的顆粒度是優先級通道,可能導致流量分配不公平等問題。為了解決這一問題,RoCE v2協議引入了擁塞控制算法,以緩解鏈路擁塞,而PFC算法則僅作為兜底機制,盡可能減少其被觸發的可能性。

目前RoCE v2協議使用較多的擁塞控制算法為基于顯式擁塞通知(ECN)的DCQCN擁塞控制算法。其工作流程如圖3所示。

圖3 DCQCN擁塞控制算法

在DCQCN工作流程中,發送端網卡被稱為響應單元(RP),接收端網卡被稱為通知單元(NP)。發送端網卡將每個發送的數據包IP首部中的ECN字段標記為2bit的10,表示支持ECN擁塞控制,此時當交換機的隊列超過某一閾值時,開始以一定的概率對到來的報文標記ECN字段為2bit的11。當接收端網卡接收到ECN字段為11的數據包后,發現網絡中存在擁塞,則會發送擁塞通知數據包(CNP)到發送端,此時發送端將進入降速及升速流程。

相關視頻感興趣者,請搜B站用戶名: 專注與守望
或鏈接:
https://space.bilibili.com/585132944/upload/video

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/83806.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/83806.shtml
英文地址,請注明出處:http://en.pswp.cn/web/83806.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java33

1.特殊文件 屬性文件properties 配置文件xml 注意:XML文件可以直接在瀏覽器里面打開: 了解知識: 2.日志技術 3.單元測試 注意:點擊方法內部再右鍵運行是測試改方法的,點擊類名再右鍵運行才是測試整個測試類的&#xff…

OSI 七層網絡模型

目錄 OSI 七層網絡模型七層模型1. 物理層(Physical Layer)2. 數據鏈路層(Data Link Layer)3. 網絡層(Network Layer)4. 傳輸層(Transport Layer)5. 會話層(Session Layer…

Spring Boot 4.0.0 新特性詳解:深入解讀 Spring Framework 7.0.0

你是否注意到創建新 Spring Boot 項目時出現的最新選項?Spring Boot 4.0.0 預覽版現已發布,基于最新的 Spring Framework 7.0.0 ??。這個版本引入了眾多激動人心的新特性,不僅提升了開發效率,改善了空值安全性,還簡化了 Web 應用程序的開發流程。本文將深入探討這些重要…

從0到1構建高并發秒殺系統:實戰 RocketMQ 異步削峰與Redis預減庫存

🚀從0到1構建高并發秒殺系統:實戰 RocketMQ 異步削峰與Redis預減庫存 📖一、 簡介 在電商、搶票等高并發場景中,秒殺系統面臨著“高并發、庫存稀缺、易超賣、系統易崩”的嚴峻挑戰。傳統的同步處理架構難以支撐海量請求并發下的性…

OpenCV CUDA模塊圖像變形------對圖像進行任意形式的重映射(Remapping)操作函數remap()

操作系統:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 編程語言:C11 算法描述 該函數根據給定的映射表 xmap 和 ymap 對圖像進行 任意形式的重映射(Remapping)操作,是 GPU 加速版本的圖像幾…

PC 端常用 UI 組件庫

一、前言 隨著企業級應用、后臺管理系統、數據平臺等項目的不斷發展,前端開發已經不再局限于移動端和響應式布局,而是越來越多地聚焦于 PC 端系統的構建。為了提升開發效率、統一設計風格并保障用戶體驗,使用成熟的 UI 組件庫 成為了現代前端…

pikachu靶場通關筆記31 文件包含02之遠程文件包含

目錄 一、文件包含功能 二、文件包含Vulnerability 二、遠程文件包含 三、環境配置 1、進入靶場 2、搭建環境 (1)定位php.ini文件 (2)修改php.ini文件 四、源碼分析 五、滲透實戰 1、選擇科比 2、執行phpinfo &…

QT集成Boost庫

在Windows平臺上,使用Qt集成Boost庫,并基于MSVC編譯器在CMake文件中加載,可以按照以下步驟進行配置。 Boost庫的編譯 如果Boost庫未預編譯,需要手動編譯,解壓zip到D:\Library\boost_1_87_0,打開cmd命令行…

MySQL從庫復制延遲的監測

目錄 ?? 一、原生內置方法?? 二、心跳表工具(如pt-heartbeat)?? 三、MySQL 8.0 增強方案📊 四、各方案對比總結💎 五、選擇建議 MySQL從庫復制延遲的監測是保障數據一致性和讀寫分離可靠性的關鍵環節,以下是主流…

slam--最小二乘問題--凹凸函數

最小二乘問題 最小二乘問題標準公式 殘差函數,線性和非線性最小二乘 最小二乘問題的兩種寫法: 目標 找到 x使得預測值 Ax與觀測值 b 的殘差平方和最小。 范數和范數平方 線性最小二乘 一般形式: 殘差 rAx?b是x 的線性函數。 目標函數是…

crackme008

crackme008 名稱值軟件名稱Andrnalin.1.exe加殼方式無保護方式serial編譯語言Microsoft Visual Basic調試環境win10 64位使用工具x32dbg,PEid破解日期2025-06-10 脫殼 1. 先用PEid查殼 查到無殼 尋找Serial 尋找flag,用x32dbg打開程序,鼠標右鍵->…

【C語言】圖書管理系統(文件存儲版)丨源碼+詳解

一、系統介紹 這是一個基于C語言開發的終端圖書管理系統,采用鏈表數據結構??二進制文件存儲技術實現。系統具有以下特點: ?雙角色系統?:管理員(管理圖書)和讀者(借閱/歸還)?完整功能?&a…

Java求職者面試題解析:Spring、Spring Boot、MyBatis框架與源碼原理

Java求職者面試題解析:Spring、Spring Boot、MyBatis框架與源碼原理 第一輪:基礎概念問題 1. 請解釋什么是Spring框架?它的核心特性有哪些? Spring是一個開源的Java/Java EE應用程序框架,用于簡化企業級應用開發。其…

【Chipyard】修改Gemmini 中PE的數量

實戰目標 PE數量擴大到原來4倍 原來配置 tileRows: Int 1,tileColumns: Int 1,meshRows: Int 16,meshColumns: Int 16, 改后配置 tileRows: Int 1,tileColumns: Int 1,meshRows: Int 32,meshColumns: Int 32, 修改配置 1. 修改gemmini的scala配置文件,用…

TCP客戶端進程分割輸入輸出

創建TCP客戶端&#xff0c;創建子進程分割TCP客戶端的read功能和write功能&#xff0c;實現分割I/O的目的。加快客戶端速率。 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <signal.h> #include …

Wi-Fi 6 在 2.4GHz 頻段的速率與優化分析

Wi-Fi 6&#xff08;802.11ax&#xff09;在 2.4GHz 和 5GHz 頻段均可工作&#xff0c;理論最高速率可達 1200 Mbps&#xff08;5GHz&#xff0c;80MHz&#xff0c;22 MIMO&#xff09;。但在 2.4GHz 頻段&#xff0c;速率受 信道寬度、MIMO、調制方式、干擾、協議開銷 影響&am…

WPF--Application.Current.Dispatcher.BeginInvoke

1.代碼示例 private void LogInfoList_CollectionChanged(object? sender, NotifyCollectionChangedEventArgs e) {// 直接在這里修改集合會引發遞歸if (e.Action NotifyCollectionChangedAction.Add){if (logInfoList.Count > 200){logInfoList.RemoveAt(0); // 這里會…

ZooKeeper詳解以及應用部署(AI)

ZooKeeper 是一個開源的分布式協調服務框架&#xff0c;旨在為分布式應用提供一致性保障和關鍵協調功能。其核心設計理念是將復雜的分布式一致性邏輯封裝為簡單可靠的接口&#xff0c;讓開發者專注于業務邏輯而非底層協調難題。以下是其核心要點&#xff1a; &#x1f9e0; 一、…

將MySQL數據庫中所有表和字段編碼統一改為utf8mb4_unicode_ci

完整操作步驟 1. 首先修改數據庫默認字符集 sql ALTER DATABASE 你的數據庫名 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 2. 生成批量修改所有表的SQL語句 sql SELECT CONCAT(ALTER TABLE , table_schema, ., table_name, CONVERT TO CHARACTER SET utf8mb4 C…

jupyterhub的淺淺使用-重點在解決無法登錄

jupyterhub的淺淺使用-重點在解決無法登錄 jupyterhub的淺淺使用-重點在解決無法登錄1、jupyterhub是什么2、創建Dockerfile3、啟動容器3.1、生成配置文件jupyterhub --generate-config3.2、運行容器3.3、進入容器配置用戶密碼3.4、訪問127.0.0.1:8000并登錄 4、后臺創建的用戶…