IBA COMMUNICATION STACK
应用程序发送“Work Request”到“Work Queues”(WQ),每一个WQ包含“Send Work Queue”(SQ)和“Receive Work Queue”(RQ)。
“Work Request”以“Work Queue Entry”(WQE)形式存在于SQ/RQ ,用于网卡数据发送,或者接收。
WQE主要的作用是描述操作以及目标内存位置。
“Completion Queue”(CQ),网卡完成收发后,向CQ里发送Entry(CQE)。应用程序可以通过CQE得知是否数据是否完成了收发。
IBA OPERATIONS
responder 准备好RQ
requestor 准备好SQ
requestor根据WQE拿到指定内层data后,以mtu大小为单位开始发送
responder根据WQE指定内层位置存放后,产生CQE并回复ack
requestor收到ack后产生CQE
应用程序通过CQE知道WQE消耗完,data传送完成。
responder注册内存并把虚拟地址和key发送到requestor
requestor因为要写入远端,所以发送data+虚拟地址+key
responder收到后回复ack
requestor产生CQE表示这次Request完成
这里responder不消耗WQE
responder 注册内存,发送虚拟地址+key
requestor 知道了这些元数据后会发一个read request包含虚拟地址+长度+key
responder 网卡收到后检查合法性,并把数据从内存中拿来发送
requestor 产生CQE表示一次Request完成。
和RDMA相比,Atomic Request不包含len,因为atomic data是固定长度
SEND & Receive
responder 应用程序分配内存并生成RWQE
requestor 指定发送内存生成SWQE,通知网卡发送
网卡根据SWQE里的元数据到内存拿数据,组成数据包发送
RDMA WRITE
responder 只需要分配内存把元数据告诉对端
requestor 指定发送端内存和远端元数据产生SWQE,通知网卡发送
requestor 网卡根据SWQE里的元数据到内存拿数据,组成数据包发送
requestor 收到数据直接放到内存