本文翻译自英文博客,原文地址:https://www.rdmamojo.com/2013/06/01/which-queue-pair-type-to-use/

 

在编写RDMA应用程序时(就像在套接字上编写应用程序时一样),应该决定使用哪种QP类型。

在这篇文章中,我将详细描述每种传输类型的特征。

在RDMA中,有三种QP类型。它们可以表示为: XY

     X可以是:

     可靠的(Reliable): 有一个保证,即消息最多被传递一次,有顺序,没有损坏。

     不可靠(Unreliable): 不能保证消息将被传递,也不能保证包的顺序。

     

     在RDMA中,每个包都有一个CRC,被破坏的包被丢弃(对于任何传输类型)。QP传输类型的可靠性是指整个消息的可靠性。

     Y可以是:

     连接(Connected): 一个QP只与一个QP 发生send/receive操作

     无连接(Unconnected):一个QP可与任意个QP发生send/receive操作

在RDMA中使用了以下机制:

* CRC: CRC字段,用于验证包是否沿路径损坏。

* PSN: 数据包***确保订单接收到数据包。这有助于检测丢失的包和包复制。

* ack: (仅在可靠的连接(RC)中)只有在应答方成功写入消息后,才会将ack包发送回请求方。如果请求者没有接收到ack,它将根据QP的属性重新发送消息。如果QP中没有任何ack(或nack),它将报告有一个错误(重试超出)。如果在响应端(保护、资源等)有任何类型的错误,一个ack将被发送到请求者,它将报告有一个错误。

 

Reliable Connected (RC) QP

一个RC QP被可靠地连接到一个RC QP上(即发送和接收消息)。可以保证消息从请求者最多一次传递到响应者,且顺序正确且没有损坏。支持的最大消息大小为2GB(这个值可能更低,取决于支持的RDMA设备属性)。RC QP支持send操作(w/o immediate)、RDMA writ操作(w/o immediate)、RDMA read操作和atomic操作(取决于原子操作中的RDMA设备支持级别)。
如果消息大小大于MTU,则它在发送数据的端被分割,在接收端被重新组装。
请求者一旦接收到来自响应方将消息读/写进内存的ack,就认为消息传递完成了。
接收端在消息被读/写其(本地)内存后,认为一个消息操作完成。

Unreliable Connected (UC) QP

一个UC QP正在以不可靠的方式连接到一个UC QP上(即发送和接收消息)。不能保证消息将被另一方接收:损坏的或序列不一致的包将被丢弃。如果一个信息包被丢弃,那么它所属的整个消息都将被丢弃。在这种情况下,接收端不会停止,而是继续接收传入的数据包。包的顺序没有任何保证。支持的最大消息大小为2GB(这个值可能更低,取决于支持的RDMA设备属性)。RC QP支持send操作(w/o即时)和RDMA write操作(w/o即时)。
如果消息大小大于MTU,则它在发送数据的端被分割,在接收端被重新组装。
请求者认为,在将所有消息发送到链路之后,消息操作就完成了。
接收端在消息被读/写其(本地)内存后,认为一个消息操作完成。

Unreliable Datagram (UD) QP

一个QP可以不可靠地以单播(一对一)或多播(一对多)的方式向任何其他UD QP发送和接收消息。不能保证消息将被另一方接收:损坏的或顺序不一致的包将被丢弃。包的顺序没有任何保证。支持的最大消息大小是最大MTU。UD QP只支持send操作。
请求者认为,在将所有消息发送到链路之后,消息操作就完成了。
接收端在消息被读/写其(本地)内存后,认为一个消息操作完成。

 

选择合适的QP类型

选择正确的QP类型对于应用的正确性(correction)和可拓展性(scalability)至关重要。

在下列情况下,应选择RC QP:
           网络的可靠性是需要的
           网络带宽不高或集群很大,但并非所有节点都向同一节点发送流量(一个受害者)
RC QP的几种用途是:RDMA上的FTP或RDMA上的文件系统。

在下列情况下,应选择UC QP:
                不需要网络保证可靠性(例如,可靠性根本不重要,或者由应用程序处理)
                网络带宽不高或集群很大,但并非所有节点都向同一节点发送流量(一个受害者)
                大规模数据(比MTU路径更大)需要传输
UC QP的一个用途是:通过RDMA传输视频。

在下列情况下,应选择UD QP:
                不需要网络保证可靠性(例如,可靠性根本不重要,或者由应用程序处理)
                网络带宽很高,所有节点和每个节点都向网络中的任何其他节点发送消息。UD是解决可拓展性问题的最佳解决方案之一。
                 需要多播消息
UD QP的一个用途是:通过RDMA语音。

总结

RDMA的3种Queue Pair类型

 

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-08
  • 2021-08-14
  • 2022-01-09
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-02-13
  • 2021-05-21
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案