【RDMA】RDMA编程入门--编辑中

本文详细介绍了RDMA的基础概念,包括队列和队列成员、传输模式,特别是单边和双边传输的工作流程。通过 verbs API 进行RDMA编程,并给出了编程示例,展示了如何进行数据的发送和接收。此外,文章还探讨了RDMA与ceph AsyncMessenger的关系,以及RDMA通信在InfiniBand和IBoE(RoCE、iWARP)中的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、前言

二、基本概念

1、队列和队列成员

2、传输模式

简介

单边双边传输流程简述

3、编程接口(verbs API)

三、编程示例

工作大致流程说明

编程代码实例

四、RDMA通信和ceph AsyncMessenger的关系

【RDMA】RDMA 学习资料总目录_bandaoyu的博客-CSDN博客SavirRDMA 分享1. RDMA概述https://blog.csdn.net/bandaoyu/article/details/112859853https://zhuanlan.zhihu.com/p/1388747382. 比较基于Socket与RDMA的通信https://blog.csdn.net/bandaoyu/article/details/1128613993. RDMA基本元素和编程基础https://blog.csdn.net/bandaoyu/article/de.

作者:bandaoyu 本文随时更新,地址:https://blog.csdn.net/bandaoyu/article/details/125681856

一、前言

首先应该先了解RDMA:https://blog.csdn.net/bandaoyu/article/details/112859853
RDMA 学习资料总目录:https://blog.csdn.net/bandaoyu/article/details/120485737

本文所讲述的主要是IBoE的RDMA编程,主要是ROCE、iWrap,与IB可能略有不同。


二、基本概念

1、队列和队列成员

关键词:点对点通信、QP(SQ+RQ)、CQ、*QE


RDMA提供了基于消息队列的点对点通信,每个应用都可以直接获取自己的消息,无需OS和协议栈的介入。

队列:QP (Queue Pairs) 和CQ

RDMA提供了基于消息队列的点对点通信,当应用需要通信时,就会创建一条Channel连接,每条Channel的两端各有一对队列(Send Queue(SQ)和Receive Queue(RQ)),合称Queue Pairs(QP),除此之外,两端还需要一个 完成队列-Complete Queue(CQ),CQ用来存放 发送和接收请求处理完成的通知。

队列成员:SQE、RQE、CQE等*QE

队列里面的成员叫xxE,SQ里面的成员叫SQE,RQ里面的叫RQE,CQ里面的就是CQE……

而发送队列SQ和接收队列RQ,统称工作队列WQ (work Queue),所以里面单元又叫WQE;

SR(发送请求)和RR(接收请求)都是WR=工作请求;

每当网卡发送or接收完成一个请求,会在CQ产生一个CQE,知会用户消息已经被处理完。

总结

SQ:发送队列,SQ中的单元叫SQE;

RQ:接收队列,RQ中的单元叫RQE;

SQ和RQ都是WQ,就像男人和女人都叫人,WQ中的单元叫WQE;

SR(发送请求)和RR(接收请求)都是WR=工作请求;

QP=SQ+RQ

CQ:完成队列,CQ中的单元叫CQE;

2、传输模式

简介

RDMA 单边和双边两种传输模式。

SEND/RECEIVE:

是双边操作,每一次数据传输都需要双边参与。

READ和WRITE :

是单边操作,除了第一次握手(获得对端的内存地址),后续的数据传输,单端直接DMA读写对端的内存。

第一次握手获得对端接收数据的内存地址后,本端明确信息的源和目的地址,数据的读或存都通过远端的DMA在RNIC与应用buffer之间完成,再由远端RNIC封装成消息返回到本端。对端的CPU毫无知觉。(所以WRITE完成后,一般要再发一个消息去通知对端:我已经完成一次操作了,去查看CQ队列吧。然后对端就会去读CQ队列,拿出CQE解析或者本地把数据写到哪里了,它再去处理数据)

在实际中,SEND/RECEIVE多用于连接控制类报文,而数据报文多是通过READ/WRITE来完成的。

单边双边传输流程简述

双边


对于双边操作为例,A向B发送数据的流程如下:

首先,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值