RDMA核心组件 的总结表格

以下是关于 RDMA核心组件 的总结表格,涵盖 WQE、WQ、QP、CQ 等核心概念:


概念 组成与作用 关键操作 关联组件 关键特性
WQE 工作队列元素,包含:
- 任务类型(SEND/WRITE/READ等)
- 数据地址、长度、访问密钥
软件生成,硬件执行 WQ(工作队列) 类似以太网描述符(Desc),是硬件执行任务的最小单位
WQ 工作队列,包含多个WQE,以FIFO队列形式存在:
- SQ(发送队列)
- RQ(接收队列)
Post Send(下发发送任务)
Post Receive(下发接收任务)
QP(队列对) SQ和RQ独立运行,发送端仅操作SQ,接收端仅操作RQ
QP 队列对(Queue Pair),由以下组成:
- SQ(发送队列)
- RQ(接收队列)
通过ibv_create_qp创建 CQ(完成队列) - 通信基本单位(非节点)
- 每个QP有唯一QPN(QP编号)
- 需与远端QP建立连接(RC/UC类型)
CQ 完成队列,包含多个CQE(完成队列元素):
- 任务状态(成功/失败)
- 关联的WQE信息
ibv_poll_cq(轮询完成事件) WQ(通过CQE关联WQE) - 异步通知机制
- 一个CQ可绑定多个QP
- CQE与WQE一一对应(任务完成后生成)
QPN QP的唯一标识符(32位整数) 通过QP属性(qp_attr)获取 QP(本地与远端) 用于标识通信双方QP(如SEND操作需指定目标QPN)
SQ/RQ - SQ:存放发送任务的WQE
- RQ:存放接收任务的WQE
SQ:Post Send
RQ:Post Receive
QP(作为其组成部分) - 发送端无需等待接收端Post Receive(但RECV操作需要)
- RQ的WQE需预先分配(否则数据到达后无法处理)
CQE 完成队列元素,包含:
- 操作结果(成功/错误码)
- 关联的WQE指针
硬件生成,软件轮询处理 CQ(完成队列) - CQE可能乱序到达(需业务层处理)
- 需主动轮询或通过事件通道(Event Channel)异步通知

补充说明

  1. QP类型与通信模式

    • RC(可靠连接):确保数据按序到达,需显式建立连接(通过QPN)。
    • UC(不可靠连接):数据可能丢失,但保留包顺序。
    • UD(不可靠无连接):支持组播,无连接状态。
  2. 内存与安全

    • WQE中的内存地址需通过ibv_reg_mr注册(确保物理连续或IOMMU映射)。
    • 访问密钥(Access Key)用于权限验证(防止越界访问)。
  3. 性能优化

    • 批量Post WQE(减少用户态-内核态切换)。
    • 使用CQ事件合并(通过ibv_req_notify_cq)。

流程图示意

软件流程:  
1. 注册内存(MR) → 2. 创建QP/CQ → 3. Post Receive(RQ) → 4. Post Send(SQ) → 5. 轮询CQE  
硬件流程:  
1. 从SQ读取WQE → 2. 执行RDMA操作 → 3. 生成CQE → 4. 将CQE写入CQ  

此表格可用于PPT中对比核心组件关系,建议配合分层架构图(展示QP/CQ/WQ的层级)和数据流图(WQE下发→硬件执行→CQE返回)增强可视化效果。

你可能感兴趣的:(网络,服务器,运维)