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

RDMA DC QP工作原理介绍

2025-03-25 05:33:50
4
0

   目前RDMA网络中广泛使用的是RCReliable Connected,可靠连接)QP可靠传输服务,在两个通信实例之间创建一对固定的RC QP进行通信,因此单节点上创建QP数量会随着集群规模进行线性增长。由于RDMA QP都是占用的硬件网卡上资源,当单节点上创建大量RDMA QP时,硬件资源可能会被耗尽,从而严重影响性能,这个问题会严重制约RDMA在大规模分布式集群中的部署和应用。

        DC QP是一种动态链接可靠(Dynamically Connected, DC)传输服务,不同于使用RC QP,通信实例的源端需要与多个目的端分别创建一个QP进行通信。源端可以利用同一个DC QP与多个目的端进行通信,在发送数据的时候,通过WQE指定目的地即可。利用DC QP可以使用对外多个活跃链接复用在同一个QP上,有效解决硬件资源不足限制大规模RDMA集群的问题。下面对RDMA DC QP的工作原理进行下介绍。

11对多通信

  通信源端创建DCI QP,目的端创建DCT QPDCI QP只能用来发包,DCT QP只能用来收包。以源端利用同一个DCI QP分别和目的端AB的通信过程为例,介绍下MLX DC QP通信流程。首先与目的端A进行通信,DCI QP会先与目的端ADCT QP进行建链,无需等待A的回复即可发送数据报文,当源端将通信目的端从A切换到B时,DC QP会等待A的报文全部处理完成之后,自动与A拆链,再与B建链,然后发送到目的端B的报文,如果后续源端不再继续发包,那么DC QP会自动完成与目的端B的拆链。所有拆建链的过程都是在硬件中自动完成,无需应用感知。

2)多对1通信

   同一个DCT QP,可以同时与多个源端DCI QP进行建链,可以同时接收来自不同DCI QP的数据,硬件中利用DCR用来维护与源端的连接,与源端同时建立链接的数量有上限限制,当接收端资源不足,无法支撑创建新的DC Connection,就会回复CNAK,发送端在触发DC RnR超时后,会进行重传。

3)拆链报文丢失

   如果DC Disconnect报文丢失,因为没有ack,发送端不会进行重传;接收端在超出一定的时间,都没有收到过源端发送的报文后,会自动进行资源回收。

4)DC QPCQ关联模型

    不同于RC QPDCT QP必须要配合SRQ进行使用,1DCT QP只能关联一个SRQ1SRQ可以关联多个DCT QPRecv cq绑定在DCT QP上进行polling

5)源端GID携带在CQE

 使用DC QP时,创建CQ时需指定CQE size128B源端的GID信息携带在CQE64B)中进行上送cqe->flags_rqpn & htonl((1ul << 28) | (1ul << 29)),28bit 1,表示GRHdata中;29bit1,表示GRHCQE中。当携带GRH时,wcwc_flags 会设置标记位IBV_WC_GRH,wcsrc_qpn 表示源端qpqpn,结合这两个信息,就可以唯一确定数据的源端。

6)性能对比

 下表是不同QP类型下在不同消息size下的传输时延对比。

QP type/SIZE

2B

4KB

64KB

1MB

RC

1.70us

3.18us

8.30us

86.58us

XRC

1.80us

3.22us

8.38us

86.73us

DC

4.84us

6.39us

11.99us

90.79us

 由于DC QP是动态建链机制,当SQWQE发送完毕后,会自动与对端拆链,单并发时延场景下每一个WQE都会触发建链和拆链机制,导致小IO单并发场景下,端到端时延要比RCXRC显著高一些,IOPS场景下带宽性能与RC/XRC基本一致。

 总的来说,DC QP可用于超大规模的RDMA网络集群中,既可以像RC QP一样提供可靠传输服务,同时又可以将多个目的地不同的对外连接复用到同一个QP上,节约QP资源。但是单并发场景下,由于DC QP动态建链拆链的特性,会导致WQE完成时延略高于RC QP。用户可根据网络和性能需求,选择适合的传输服务类型。

0条评论
0 / 1000
h****n
4文章数
1粉丝数
h****n
4 文章 | 1 粉丝
h****n
4文章数
1粉丝数
h****n
4 文章 | 1 粉丝
原创

RDMA DC QP工作原理介绍

2025-03-25 05:33:50
4
0

   目前RDMA网络中广泛使用的是RCReliable Connected,可靠连接)QP可靠传输服务,在两个通信实例之间创建一对固定的RC QP进行通信,因此单节点上创建QP数量会随着集群规模进行线性增长。由于RDMA QP都是占用的硬件网卡上资源,当单节点上创建大量RDMA QP时,硬件资源可能会被耗尽,从而严重影响性能,这个问题会严重制约RDMA在大规模分布式集群中的部署和应用。

        DC QP是一种动态链接可靠(Dynamically Connected, DC)传输服务,不同于使用RC QP,通信实例的源端需要与多个目的端分别创建一个QP进行通信。源端可以利用同一个DC QP与多个目的端进行通信,在发送数据的时候,通过WQE指定目的地即可。利用DC QP可以使用对外多个活跃链接复用在同一个QP上,有效解决硬件资源不足限制大规模RDMA集群的问题。下面对RDMA DC QP的工作原理进行下介绍。

11对多通信

  通信源端创建DCI QP,目的端创建DCT QPDCI QP只能用来发包,DCT QP只能用来收包。以源端利用同一个DCI QP分别和目的端AB的通信过程为例,介绍下MLX DC QP通信流程。首先与目的端A进行通信,DCI QP会先与目的端ADCT QP进行建链,无需等待A的回复即可发送数据报文,当源端将通信目的端从A切换到B时,DC QP会等待A的报文全部处理完成之后,自动与A拆链,再与B建链,然后发送到目的端B的报文,如果后续源端不再继续发包,那么DC QP会自动完成与目的端B的拆链。所有拆建链的过程都是在硬件中自动完成,无需应用感知。

2)多对1通信

   同一个DCT QP,可以同时与多个源端DCI QP进行建链,可以同时接收来自不同DCI QP的数据,硬件中利用DCR用来维护与源端的连接,与源端同时建立链接的数量有上限限制,当接收端资源不足,无法支撑创建新的DC Connection,就会回复CNAK,发送端在触发DC RnR超时后,会进行重传。

3)拆链报文丢失

   如果DC Disconnect报文丢失,因为没有ack,发送端不会进行重传;接收端在超出一定的时间,都没有收到过源端发送的报文后,会自动进行资源回收。

4)DC QPCQ关联模型

    不同于RC QPDCT QP必须要配合SRQ进行使用,1DCT QP只能关联一个SRQ1SRQ可以关联多个DCT QPRecv cq绑定在DCT QP上进行polling

5)源端GID携带在CQE

 使用DC QP时,创建CQ时需指定CQE size128B源端的GID信息携带在CQE64B)中进行上送cqe->flags_rqpn & htonl((1ul << 28) | (1ul << 29)),28bit 1,表示GRHdata中;29bit1,表示GRHCQE中。当携带GRH时,wcwc_flags 会设置标记位IBV_WC_GRH,wcsrc_qpn 表示源端qpqpn,结合这两个信息,就可以唯一确定数据的源端。

6)性能对比

 下表是不同QP类型下在不同消息size下的传输时延对比。

QP type/SIZE

2B

4KB

64KB

1MB

RC

1.70us

3.18us

8.30us

86.58us

XRC

1.80us

3.22us

8.38us

86.73us

DC

4.84us

6.39us

11.99us

90.79us

 由于DC QP是动态建链机制,当SQWQE发送完毕后,会自动与对端拆链,单并发时延场景下每一个WQE都会触发建链和拆链机制,导致小IO单并发场景下,端到端时延要比RCXRC显著高一些,IOPS场景下带宽性能与RC/XRC基本一致。

 总的来说,DC QP可用于超大规模的RDMA网络集群中,既可以像RC QP一样提供可靠传输服务,同时又可以将多个目的地不同的对外连接复用到同一个QP上,节约QP资源。但是单并发场景下,由于DC QP动态建链拆链的特性,会导致WQE完成时延略高于RC QP。用户可根据网络和性能需求,选择适合的传输服务类型。

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0