背景

RDMA 、NVME是存储网络时代即将广泛推广的技术,正在分布式存储领域得到推广。NVME 之前有接触过,为此有必要学习了解RDMA相关原理和特性。

RDMA网卡的工作原理

参考:
https://blog.csdn.net/qq_21125183/article/details/80563463
核心点:bypass kernel; 用户态空间直接到NIC buffer;支持单边和双边模式

RDMA网卡的实用方式

对于单边操作,以存储网络环境下的存储为例,数据的流程如下:
1.   首先A、B建立连接,QP已经创建并且初始化。
2.   数据被存档在B的buffer地址VB,注意VB应该提前注册到B的RNIC (并且它是一个Memory Region) ,并拿到返回的local key,相当于RDMA操作这块buffer的权限。
3.   B把数据地址VB,key封装到专用的报文传送到A,这相当于B把数据buffer的操作权交给了A。同时B在它的WQ中注册进一个WR,以用于接收数据传输的A返回的状态。
4.   A在收到B的送过来的数据VB和R_key后,RNIC会把它们连同自身存储地址VA到封装RDMA READ请求,将这个消息请求发送给B,这个过程A、B两端不需要任何软件参与,就可以将B的数据存储到A的VA虚拟地址。
5.   A在存储完成后,会向B返回整个数据传输的状态信息。

单边操作传输方式是RDMA与传统网络传输的最大不同,只需提供直接访问远程的虚拟地址,无须远程应用的参与其中,这种方式适用于批量数据传输。

3.7.2 RDMA 单边操作 (RDMA WRITE)

对于单边操作,以存储网络环境下的存储为例,数据的流程如下:
1.   首先A、B建立连接,QP已经创建并且初始化。
2.   数据remote目标存储buffer地址VB,注意VB应该提前注册到B的RNIC(并且它是一个Memory Region),并拿到返回的local key,相当于RDMA操作这块buffer的权限。
3.   B把数据地址VB,key封装到专用的报文传送到A,这相当于B把数据buffer的操作权交给了A。同时B在它的WQ中注册进一个WR,以用于接收数据传输的A返回的状态。
4.   A在收到B的送过来的数据VB和R_key后,RNIC会把它们连同自身发送地址VA到封装RDMA WRITE请求,这个过程A、B两端不需要任何软件参与,就可以将A的数据发送到B的VB虚拟地址。
5.   A在发送数据完成后,会向B返回整个数据传输的状态信息。

单边操作传输方式是RDMA与传统网络传输的最大不同,只需提供直接访问远程的虚拟地址,无须远程应用的参与其中,这种方式适用于批量数据传输。
————————————————
版权声明:本文为CSDN博主「MasterT-J」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_21125183/java/article/details/80563463