searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

什么是RDMA中的CM建链

2025-06-12 08:59:43
3
0

一、CM 建链的核心概念

CM 建链是 RDMA 网络中节点间建立通信连接的关键流程,本质是通过协议交互完成两端设备的资源配置与状态同步。它类似传统网络中的 Socket 连接建立,但基于 RDMA 特有的队列对(QP,Queue Pair)机制设计,无需依赖 TCP/IP 协议栈,直接在 InfiniBand 或 RoCE 等高速网络上实现低延迟通信。
  • 核心目标:为数据传输准备逻辑通道,包括协商传输参数、分配缓存资源等;
  • 报文类型:所有 CM 建链操作均通过管理数据报(MAD)完成,依赖全局服务 ID(GSI)类型的特殊 QP(QPN=1)作为控制报文传输通道;
  • 编程接口:通过 libibverbs 库提供的异步 / 同步接口实现,开发者可通过操作 QP 状态机控制建链过程。

二、RC QP 建链流程(可靠连接模式)

RC(Reliable Connection)QP 是 RDMA 中最常用的可靠传输模式,建链过程类似 TCP 三次握手,但针对高速网络优化:
1. 请求阶段(REQ)
客户端向服务器发送建链请求报文,携带关键参数:
  • 本地 QP 编号(QPN)与资源配置信息;
  • 起始数据包序列号(PSN),用于后续数据排序;
  • 重传策略(如最大重传次数)。

2. 响应阶段(REP)
服务器接收请求后校验参数,若合法则返回响应报文:
  • 自身 QPN 与 PSN 信息;
  • 可选的用户验证数据(Private Data),用于身份校验;
  • 确认接收的客户端参数配置。

3. 就绪阶段(RTU)
客户端收到响应后再次校验参数,发送就绪报文:
  • 确认双方参数已同步;
  • 通知服务器可开始数据传输。此时客户端可立即发送数据,服务器需等待 RTU 到达后才启动传输。

异常处理
若任意阶段参数校验失败,对端会发送 REJ(拒绝)报文终止建链,并附带错误原因(如 QPN 冲突、资源不足)。

三、UD QP 建链流程(无连接模式)

UD(Unreliable Datagram)QP 用于无需可靠性保证的场景,建链流程更轻量级,依赖服务发现协议(SIDR):
1. 服务发现请求(SIDR_REQ)
客户端发送服务发现报文:
  • 用 Service ID 标识目标服务(类似端口号);
  • 可附加自定义扩展数据(如业务类型)。

2. 服务发现响应(SIDR_REP)
服务器解析请求后返回端点信息:
  • 目标 QP 的 QPN 与队列密钥(Queue Key);
  • 服务器端资源配置参数。客户端根据这些信息配置本地 UD QP,即可向服务器发送数据。

反向通信机制
若服务器需向客户端发送数据,可通过业务报文携带客户端 QPN 等信息,实现无连接模式下的双向通信(无需额外建链流程)。

四、总结

CM 建链是 RDMA 技术从 “物理连接” 到 “逻辑通信” 的关键桥梁:RC QP 通过三次握手机制构建可靠通道;UD QP 则以轻量级服务发现实现无连接通信。
0条评论
0 / 1000
c****n
5文章数
0粉丝数
c****n
5 文章 | 0 粉丝
原创

什么是RDMA中的CM建链

2025-06-12 08:59:43
3
0

一、CM 建链的核心概念

CM 建链是 RDMA 网络中节点间建立通信连接的关键流程,本质是通过协议交互完成两端设备的资源配置与状态同步。它类似传统网络中的 Socket 连接建立,但基于 RDMA 特有的队列对(QP,Queue Pair)机制设计,无需依赖 TCP/IP 协议栈,直接在 InfiniBand 或 RoCE 等高速网络上实现低延迟通信。
  • 核心目标:为数据传输准备逻辑通道,包括协商传输参数、分配缓存资源等;
  • 报文类型:所有 CM 建链操作均通过管理数据报(MAD)完成,依赖全局服务 ID(GSI)类型的特殊 QP(QPN=1)作为控制报文传输通道;
  • 编程接口:通过 libibverbs 库提供的异步 / 同步接口实现,开发者可通过操作 QP 状态机控制建链过程。

二、RC QP 建链流程(可靠连接模式)

RC(Reliable Connection)QP 是 RDMA 中最常用的可靠传输模式,建链过程类似 TCP 三次握手,但针对高速网络优化:
1. 请求阶段(REQ)
客户端向服务器发送建链请求报文,携带关键参数:
  • 本地 QP 编号(QPN)与资源配置信息;
  • 起始数据包序列号(PSN),用于后续数据排序;
  • 重传策略(如最大重传次数)。

2. 响应阶段(REP)
服务器接收请求后校验参数,若合法则返回响应报文:
  • 自身 QPN 与 PSN 信息;
  • 可选的用户验证数据(Private Data),用于身份校验;
  • 确认接收的客户端参数配置。

3. 就绪阶段(RTU)
客户端收到响应后再次校验参数,发送就绪报文:
  • 确认双方参数已同步;
  • 通知服务器可开始数据传输。此时客户端可立即发送数据,服务器需等待 RTU 到达后才启动传输。

异常处理
若任意阶段参数校验失败,对端会发送 REJ(拒绝)报文终止建链,并附带错误原因(如 QPN 冲突、资源不足)。

三、UD QP 建链流程(无连接模式)

UD(Unreliable Datagram)QP 用于无需可靠性保证的场景,建链流程更轻量级,依赖服务发现协议(SIDR):
1. 服务发现请求(SIDR_REQ)
客户端发送服务发现报文:
  • 用 Service ID 标识目标服务(类似端口号);
  • 可附加自定义扩展数据(如业务类型)。

2. 服务发现响应(SIDR_REP)
服务器解析请求后返回端点信息:
  • 目标 QP 的 QPN 与队列密钥(Queue Key);
  • 服务器端资源配置参数。客户端根据这些信息配置本地 UD QP,即可向服务器发送数据。

反向通信机制
若服务器需向客户端发送数据,可通过业务报文携带客户端 QPN 等信息,实现无连接模式下的双向通信(无需额外建链流程)。

四、总结

CM 建链是 RDMA 技术从 “物理连接” 到 “逻辑通信” 的关键桥梁:RC QP 通过三次握手机制构建可靠通道;UD QP 则以轻量级服务发现实现无连接通信。
文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0