- 工作请求WR:包含操作类型读/写/发送、内存地址、长度、远程密钥等信息,由应用提交至SQ/RQ。
- 成队列CQ:记录WR的执行状态,硬件成操作后生成成队列元素CQE,应用通过轮询或中断方式获取结果,避免CPU持续等待。 以上元素通过硬件卸载态设计,构建了RDMA低延迟、高带宽的通信能力,成为分布式存储、高性能计算等场景的关键技术支撑。
RDMA的基本元素有哪些?
RDMA基本元素析
RDMA远程直接内存访问通过内核旁路与直接内存访问实现高性能网络通信,其核心架构依赖于多个基本元素的协同工作。以下从功能层、数据传输层与资源管理层梳理关键组件:
一、RDMA verbs:用户态接口核心
RDMA verbs 是应用程序与RDMA硬件交互的标准化接口,包含创建队列对、册内存、发布工作请求等核心操作。例如,`ibv_create_qp`用于初始化队列对,`ibv_reg_mr`成内存区域册,`ibv_post_send`提交发送请求。 verbs屏蔽了底层硬件差异,使应用需感知网卡类型即可调用RDMA功能。
二、零拷贝Zero-Copy机制
零拷贝 是RDMA高性能的核心特性,通过直接在内存与网卡间传输数据,避开CPU中转与数据拷贝。传统网络中,数据需经用户态→内核态→网卡缓冲区多次拷贝,而RDMA借助硬件DMA引擎,直接从本地内存读取数据并写入远程内存,将延迟降低至微秒级。
三、内存册Memory Registration
为实现直接内存访问,应用需通过内存册机制将虚拟内存地址映射为物理地址与密钥Key。册后的内存区域MR具有全局唯一标识,远程节点通过R_Key远程访问密钥验证权限并定位内存,确保数据传输的安全性与准确性。
四、队列对Queue Pair, QP
队列对 是RDMA通信的基本单元,由发送队列SQ与接收队列RQ组成。SQ存储本地待发送的工作请求WR,RQ缓存远程发来的工作请求。每个QP对应一个独立的通信上下文,支持点对点可靠连接RC、不可靠数据报UD等多种传输模式。
五、工作请求与成队列
