RDMA基本操作类型---send/recv,write/read
1、send/recv操作

数据发送接收请求需要cpu负责下发下去,且数据发送前需要计算机2的ibv_post_recv下发成功。
send流程为:
(1)CPU调用Verbs API ibv_post_send发起WR,驱动程序将WR映射为WQE,包含信息有{操作类型、发送数据的首地址、数据长度},并添加到SQ(发送工作队列)中;
(2)RDMA网卡收到WQE元素后,解析其中数据,之后从主机内存读取数据通过网络链路发送。
recv流程为:
(1)应用程序调用Verbs API ibv_post_revc,发出一个接收WR(工作请求),WR在驱动层被转化为WQE{操作类型、数据保存的首地址、数据长度},并添加到RQ(接收工作队列)中;
(2)RDMA网卡收到WQE元素后,准备好接收数据的内存,在收到数据后将数据保存到提前准备好的地址中。
2、write操作

(1)CPU调用Verbs API ibv_post_send发起WR,驱动程序将WR映射为WQE
(2)WQE包含信息有{操作类型、本地数据的虚拟首地址、数据长度,远端数据的虚拟首地址、秘钥},并添加到SQ(发送工作队列)中
(3)RDMA网卡收到WQE时,解析获得虚拟地址,查表获得物理地址,读取物理地址中的数据打包发送给目的RDMA网卡
(4)目的RDMA网卡收到数据后解析目的虚拟地址,将数据写入到虚拟地址对应的物理地址中,完成后告诉发送RDMA网卡,网卡将WQE添加到RQ中,驱动将RQ映射到WC。
3、read操作

read的操作与write类似,不过多赘述。
