RDMA WRITE与队列对的关联及服务端关闭QP后的写入有效性问题
RDMA RC模式队列对关闭后的相关问题解答
1. 服务端关闭QP能否确保客户端无法成功执行RDMA WRITE?
- 针对服务端关闭QP之后客户端发起的新RDMA WRITE请求:可以确保无法成功。RC是可靠连接模式,服务端QP关闭后,其网卡会拒绝后续来自该客户端的RDMA请求,客户端提交的WRITE操作会返回错误(比如
IBV_WC_WR_FLUSH_ERR这类错误码),数据不会被写入服务端缓冲区。 - 但存在例外情况:如果客户端在服务端关闭QP之前已经发起了WRITE请求,且该请求已进入传输链路(比如已通过网卡发出),那么这个请求仍有可能成功完成——关闭QP不会撤销已经在途的可靠连接请求。
2. 仅服务端关闭QP时,客户端是否可能仍认为QP状态正常?
是的。RDMA队列对的状态是本地独立维护的,客户端不会主动同步服务端的QP状态变化。在服务端关闭QP后,客户端本地的QP状态依然会显示为正常(比如IBV_QPS_RTS),直到客户端尝试发起新的RDMA操作并收到服务端返回的错误,才会感知到QP已失效。如果没有上层的心跳或状态同步机制,客户端可能会在一段时间内误以为QP仍可用。
内容的提问来源于stack exchange,提问作者haipeng31
相关产品推荐
相关产品推荐

