当前位置: 首页 > article >正文

RDMA 核心原理:RoCE v2 与传输操作详解

一、RDMA原理操作RDMA 传输符合 RoCE v2 协议RDMA over Converged Ethernet (RoCE) 是一种网络协议它利用远程直接内存访问 (RDMA) 功能来显着加速托管在服务器集群和存储阵列上的应用程序之间的通信。RoCE 结合了IBTARDMA 语义允许设备在应用程序级别执行直接内存到内存传输而无需主机 CPU 。与基于软件的协议相比传输处理和内存转换和放置均由硬件执行从而显着降低延迟、提高吞吐量和提高性能。RoCE 数据包是常规的以太网帧它携带由IEEE 分配的以太型值这表示下一个报头是 RoCE GRH 。在模块中RDMA 协议物理上通过 25G 以太网协议处理模块进行传输能支持 25Gbps速率的 RDMA 传输能力。RoCEv1 协议被定义为带有以太网头部的 IB 帧。 它使用以太网类型 0x8915并且可以选择启用或者关闭 VLAN 标签。常规的以太网MTU 也适用于 RoCE帧。RoCEv2 协议的直接扩展使得流量能在 3 层 IP 环境下运行。将 RoCE 中的GRH 头部替换成 IP 头部使用 UDP 类型和专用的目的 UDP 端口(4791) 。UDP源端口域用来携带一个模糊的流标识符使得网络设备能够实现包的转发优化(例如 ECMP) 同时对于协议头部的格式保持无关性。2. RDMA 传输协议支持 RC 、UD 传输模式RDMA 协议规定支持的连接类型有四种分别是 RC UC UD RD 如下图所示当前 RDMA 卸载模块在 QP 维护处理中会和对端设备的 QP 进行绑定实现的是典型的 RC 传输模式。这样在 RDMA 传输时本身是一种可靠的提供面向消息的可靠传输方式。通过模式配置也可以扩展支持 UD 传输模式。3. RDMA 传输协议支持 Verbs 接口传统上的 RDMA 技术设计内核封装多层网络协议并且涉及内核数据传输。 RDMA 通过专有的 RDMA 网卡 RNIC 绕过内核直接从用户空间访问 RDMA enabled NIC 网卡。RDMA 提供一个专有的 Verbs Interface 而不是传统的 TCP/IP Socket Interface 。要使用RDMA 首先要建立从 RDMA 到应用程序内存的数据路径 可以通过 RDMA 专有的 Verbs Interface接口来建立这些数据路径一旦数据路径建立后就可以直接访问用户空间 buffer。操作系统下 RDMA 软件调用分为控制面接口调用和数据面接口调用。控制面接口调用主要走内核态驱动完成 MR 注册/反注册QP 创建/销毁建链/断链等配置功能支持内存 Verbs 和消息 Verbs传输。数据面接口调用主要完成数据收发操作写操作读操作采用 kernel bypass技术用户态直接操作硬件提高性能。二、RDMA 传输协议支持 Write、Read 、Send 和 Recv 操作接口功能设计1.RDMA READ 操作RDMA READ 是单边操作只需要本端明确信息的源和目的地址远端应用不必感知此次通信数据的读都通过 RDMA 在 RNIC 与应用 Buffer 之间完成再由远端 RNIC 封装成消息返回到本端。对于单边操作以存储网络环境下的存储为例数据的流程如下首先 A 、B 建立连接QP 已经创建并且初始化。数据被存档在 B 的 buffer地址 VB 注意 VB 应该提前注册到 B 的RNIC (并且它是一个 Memory Region) 并拿到返回的 local key 相当于 RDMA操作这块 buffer 的权限。B 把数据地址 VB key 封装到专用的报文传送到 A 这相当于 B 把数据 buffer 的操作权交给了 A 。同时 B 在它的 WQ 中注册进一个 WR 以用于接收数据传输的 A 返回的状态。A 在收到 B 的送过来的数据 VB 和 R_key 后RNIC 会把它们连同自身存储地址 VA 到封装 RDMA READ 请求将这个消息请求发送给 B 这个过程A 、B 两端不需要任何软件参与就可以将 B 的数据存储到 A 的 VA 虚拟地址。A 在存储完成后会向B 返回整个数据传输的状态信息。单边操作传输方式是 RDMA 与传统网络传输的最大不同只需提供直接访问远程的虚拟地址无须远程应用的参与其中这种方式适用于批量数据传输。RDMA WRITE 操作对于 RDMA WRITE 操作以存储网络环境下的存储为例数据的流程如下首先 A 、B 建立连接QP 已经创建并且初始化。数据 remote 目标存储 buffer地址 VB 注意 VB 应该提前注册到 B 的 RNIC(并且它是一个 Memory Region) 并拿到返回的 local key 相当于 RDMA操作这块 buffer 的权限。B 把数据地址 VB key 封装到专用的报文传送到 A 这相当于 B 把数据 buffer 的操作权交给了 A 。同时 B 在它的 WQ 中注册进一个 WR 以用于接收数据传输的 A 返回的状态。A 在收到 B 的送过来的数据 VB 和 R_key 后RNIC 会把它们连同自身发送地址 VA 到封装 RDMA WRITE 请求这个过程 A 、B 两端不需要任何软件参与就可以将 A 的数据发送到 B 的 VB 虚拟地址。A 在发送数据完成后会向B 返回整个数据传输的状态信息。RDMA SEND/RECEIVE 操作RDMA 中 SEND/RECEIVE 是双边操作即必须要远端的应用感知参与才能完成收发。在实际中SEND/RECEIVE 多用于连接控制类报文而数据报文多是通过 READ/WRITE 来完成的。对于双边操作为例主机 A 向主机 B(下面简称 A 、B)发送数据的流程如下首先A 和 B 都要创建并初始化好各自的 QP CQA 和 B 分别向自己的 WQ 中注册 WQE 对于 A WQSQ WQE 描述指向一个等到被发送的数据对于 B WQRQ WQE 描述指向一块用于存储数据的 Buffer。A 的 RNIC 异步调度轮到 A 的 WQE 解析到这是一个 SEND 消息从Buffer 中直接向B 发出数据。数据流到达 B 的 RNIC 后B 的 WQE 被消耗并把数据直接存储到 WQE 指向的存储位置。AB 通信完成后A 的 CQ 中会产生一个完成消息 CQE 表示发送完成。与此同时B 的 CQ 中也会产生一个完成消息表示接收完成。每个 WQ 中 WQE的处理完成都会产生一个 CQE。

相关文章:

RDMA 核心原理:RoCE v2 与传输操作详解

一、RDMA原理操作 RDMA 传输符合 RoCE v2 协议 RDMA over Converged Ethernet (RoCE) 是一种网络协议,它利用远程直接内存访问 (RDMA) 功能来显着加速托管在服务器集群和存储阵列上的应用程序之间的通信。RoCE 结合了IBTARDMA 语义,允许设备在应用程序级…...

NFC Tool 免vip,使用联动密钥破解加密门禁卡教程

nfc门禁破解共享密钥,免vip使用联动密钥破解加密门禁卡 本项目将不定期更新密钥~~~~ 使用方式 方式一:使用本项目的 Android 扫描 APP(推荐) 本项目提供了一个独立的 Android 应用,内置密钥库,无需下载…...

大数据知识图谱之深度学习:基于BERT+LSTM+CRF深度学习识别模型医疗知识图谱问答可视化系统

文章目录大数据知识图谱之深度学习:基于BERTLSTMCRF深度学习识别模型医疗知识图谱问答可视化系统一、项目概述二、系统实现基本流程三、项目工具所用的版本号四、所需要软件的安装和使用五、开发技术简介Django技术介绍Neo4j数据库Bootstrap4框架Echarts简介Navicat…...

Maomi.In | .NET 全能多语言解决方案鞍

AI Agent 时代的沙箱需求 从 Copilot 到 Agent:执行能力的质变 在生成式 AI 的早期阶段,应用主要以“Copilot”形式存在,AI 仅作为辅助生成建议。然而,随着 AutoGPT、BabyAGI 以及 OpenAI Code Interpreter(现为 Advan…...

MusePublic一文详解:safetensors vs. bin/pth格式性能对比

MusePublic一文详解:safetensors vs. bin/pth格式性能对比 1. 项目背景介绍 MusePublic是一款专为艺术感时尚人像创作设计的轻量化文本生成图像系统。这个项目的核心基于MusePublic专属大模型,在艺术人像的优雅姿态、细腻光影和故事感画面方面做了专门…...

终极Windows风扇控制解决方案:FanControl深度配置与性能优化实战指南

终极Windows风扇控制解决方案:FanControl深度配置与性能优化实战指南 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitH…...

LANs.py源码深度剖析:理解多线程异步数据包处理机制

LANs.py源码深度剖析:理解多线程异步数据包处理机制 【免费下载链接】LANs.py Inject code and spy on wifi users 项目地址: https://gitcode.com/gh_mirrors/la/LANs.py LANs.py是一个功能强大的网络嗅探和ARP欺骗工具,专门用于局域网安全测试和…...

Sabaki国际化与本地化:打造多语言围棋编辑环境

Sabaki国际化与本地化:打造多语言围棋编辑环境 【免费下载链接】Sabaki An elegant Go board and SGF editor for a more civilized age. 项目地址: https://gitcode.com/gh_mirrors/sa/Sabaki Sabaki是一款优雅的围棋棋盘和SGF编辑器,为全球围棋…...

如何快速掌握 Ego:Go 语言的终极 ERB 风格模板引擎教程

如何快速掌握 Ego:Go 语言的终极 ERB 风格模板引擎教程 【免费下载链接】ego An ERB-style templating language for Go. 项目地址: https://gitcode.com/gh_mirrors/ego/ego Ego 是一款为 Go 语言打造的 ERB 风格模板引擎,它通过将模板转译为纯 …...

如何快速构建诗歌API:PoetryDB开源项目完整指南 [特殊字符]

如何快速构建诗歌API:PoetryDB开源项目完整指南 🚀 【免费下载链接】poetrydb The Internets first Poetry API 项目地址: https://gitcode.com/gh_mirrors/po/poetrydb PoetryDB是互联网上第一个诗歌API项目,为开发者和诗歌爱好者提供…...

LANs.py WiFi干扰功能深度解析:如何有效阻断无线网络连接

LANs.py WiFi干扰功能深度解析:如何有效阻断无线网络连接 【免费下载链接】LANs.py Inject code and spy on wifi users 项目地址: https://gitcode.com/gh_mirrors/la/LANs.py LANs.py是一款功能强大的无线网络干扰工具,能够帮助用户有效阻断特定…...

【2026年阿里巴巴集团暑期实习- 4月8日-工程岗-第三题- 相邻等值对贡献和】(题目+思路+JavaC++Python解析+在线测试)

题目内容 给定一个长度为 $ n $ 的数组 $ {a_1, a_2, \dots, a_n} $。我们称一对下标 $ (i, j) $ 为相邻等值对,当且仅当 $ 1 \leq i < j \leq n ,,, a_i = a_j $,并且对于任意 $ k < i < j $,都有 $ a_k \neq a_i $。 对每一个相邻等值对 $ (i, j) $,定义其…...

Pug模板引擎在StartBootstrap Freelancer中的应用与优化:提升前端开发效率的完整指南

Pug模板引擎在StartBootstrap Freelancer中的应用与优化&#xff1a;提升前端开发效率的完整指南 【免费下载链接】startbootstrap-freelancer A flat design, one page, MIT licensed Bootstrap portfolio theme created by Start Bootstrap 项目地址: https://gitcode.com/…...

【2026年阿里巴巴集团暑期实习- 4月8日-工程岗-第二题- 网格路径最大和】(题目+思路+JavaC++Python解析+在线测试)

题目内容 给定一个 $ 2 \times n $ 的网格,记数组为 $ {a_{i,j}} $。行与列均从 0 开始编号,其中 $ i \in {0,1} ,,, j \in [0,n-1] $。你可以进行如下操作任意次(包括 0 次): 选择一个下标对 $ (i,j) $,若 0≤j≤x0 \leq j \leq x0≤...

【2026年阿里巴巴集团暑期实习- 4月8日-工程岗-第一题- 可删去的字符串】(题目+思路+JavaC++Python解析+在线测试)

题目内容 给你 $ n $ 个字符串。我们称某个字符串 $ s_i $ 是“可删去的”,当且仅当存在两个下标 $ j, k (j \neq k) $,满足 $ s_j + s_k = s_i $。换句话说,我们称某个字符串是“可删去的”,当且仅当它能由两个来自原字符串序列中不同位置的非空字符串拼接而成。 你的任…...

【2026年阿里巴巴集团暑期实习- 4月8日-开发岗-第三题- 困难不平衡数】(题目+思路+JavaC++Python解析+在线测试)

题目内容 我们定义一个整数:倘若数字位中奇数数字的个数不等于偶数数字的个数,那么我们称这个整数是一个不平衡数。 现在给定一个由数字 000 到 999 组成的字符串,求解其中有多少子序列满足:这些子序列所代表的数是一个不平衡数,且不包含前导零。 由于答案可能很大,请…...

3步颠覆微信数据管理:让87%用户告别聊天记录丢失烦恼

3步颠覆微信数据管理&#xff1a;让87%用户告别聊天记录丢失烦恼 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeChat…...

大模型之Linux服务器部署大模型头

一、各自优势和对比 这是检索出来的数据&#xff0c;据说是根据第三方评测与企业数据&#xff0c;三款产品在代码生成质量上各有侧重&#xff1a; 产品 语言优势 场景亮点 核心差异 百度 Comate C核心代码质量第一&#xff1b;Python首生成率达92.3% SQL生成准确率提升35%&…...

一键解锁八大网盘高速下载:网盘直链下载助手完全指南

一键解锁八大网盘高速下载&#xff1a;网盘直链下载助手完全指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼云…...

【c++】 入门实战笔记 (更新中)

c学习笔记 更新中 一、环境配置 说明&#xff1a; 你需要一个linux系统。如果只有windows&#xff0c;可以尝试在win上使用WSL2, 比虚拟机更方便。具体怎么使用网上教程一大推&#xff01; Makefile学习&#xff1a;Makefile 学习笔记-CSDN博客 项目模板&#xff1a; Makefi…...

【TypeScript 教程大纲】

TypeScript 教程大纲1. 简介TypeScript 的定义和背景TypeScript 与 JavaScript 的关系TypeScript 的优势和应用场景2. 环境搭建安装 Node.js 和 npm全局安装 TypeScript初始化一个 TypeScript 项目配置 tsconfig.json 文件3. 基础语法变量声明与类型注解基本数据类型&#xff0…...

如何基于go-git的Storer接口实现自定义存储后端:终极扩展开发指南

如何基于go-git的Storer接口实现自定义存储后端&#xff1a;终极扩展开发指南 【免费下载链接】go-git A highly extensible Git implementation in pure Go. 项目地址: https://gitcode.com/gh_mirrors/go/go-git go-git是一个用纯Go语言实现的高度可扩展的Git库&#…...

龙芯k - 久久派开发环境搭建及内核升级(下)林

起因是我想在搞一些操作windows进程的事情时&#xff0c;老是需要右键以管理员身份运行&#xff0c;感觉很麻烦。就研究了一下怎么提权&#xff0c;顺手瞄了一眼Windows下用户态权限分配&#xff0c;然后也是感谢《深入解析Windows操作系统》这本书给我偷令牌的灵感吧&#xff…...

Goreman性能优化:提升多进程管理效率的10个最佳实践

Goreman性能优化&#xff1a;提升多进程管理效率的10个最佳实践 【免费下载链接】goreman foreman clone written in go language 项目地址: https://gitcode.com/gh_mirrors/go/goreman Goreman作为用Go语言实现的Foreman克隆工具&#xff0c;是一款轻量级的多进程管理…...

Calico IPIP 使用指南章

本课概览 Microsoft Agent Framework (MAF) 提供了一套强大的 Workflow&#xff08;工作流&#xff09; 框架&#xff0c;用于编排和协调多个智能体&#xff08;Agent&#xff09;或处理组件的执行流程。 本课将以通俗易懂的方式&#xff0c;帮助你理解 MAF Workflow 的核心概念…...

【Dv3Admin】Django一键配置权限规则

源码中的角色—菜单—按钮—字段权限控制&#xff0c;往往是后台系统中最容易被忽略、却最容易出问题的部分。一旦权限粒度设计不清晰&#xff0c;就会出现按钮越权、字段泄露、前端渲染混乱等一系列连锁问题&#xff0c;这类问题通常并非单点错误&#xff0c;而是接口设计与数…...

AI论文写作软件哪个好?实测8款AI论文生成工具,轻松完成论文创作!

论文写作是不是让你头疼&#xff1f;文献查找难、框架搭建慢、内容原创性低、格式不规范…别担心&#xff01;其实有捷径可走——AI论文写作工具能帮你系统解决这些痛点。本文实测8款热门AI论文写作工具&#xff0c;帮你找到最适合的学术助手。 本文将围绕不同学习阶段&#xf…...

三三学习_一些你不知道的事

特征 去中心化Decentralization 核心原則 信息分散存储&#xff0c;数据不再受科技巨企控制降低审查风险、拒绝服务&#xff08;DoS&#xff09;攻击的有效性保护个人用户的隐私数据甚至保留所有权 去信任化及无权限化Trustless and Permissionless 哎、上面刚说所有权&am…...

如何用Tweepy构建强大的Twitter数据分析报告:5个高级搜索聚合技巧

如何用Tweepy构建强大的Twitter数据分析报告&#xff1a;5个高级搜索聚合技巧 【免费下载链接】tweepy Twitter for Python! 项目地址: https://gitcode.com/gh_mirrors/tw/tweepy Tweepy是Python中最流行的Twitter API客户端库&#xff0c;让开发者能够轻松访问Twitter…...

终极指南:如何用Anaconda将Sublime Text 3打造成专业Python IDE

终极指南&#xff1a;如何用Anaconda将Sublime Text 3打造成专业Python IDE 【免费下载链接】anaconda Anaconda turns your Sublime Text 3 in a full featured Python development IDE including autocompletion, code linting, IDE features, autopep8 formating, McCabe co…...