RDMA传输层4种传输模式
按照[连接]和[可靠]两个标准,可以划分出下图四种不同的:
RDMA支持多种传输模式,以满足不同场景下的通信需求。以下是RDMA的四种主要传输模式:
-
可靠连接(Reliable Connection, RC)
-
特点:
- 面向消息:数据被处理为离散的消息进行传输,而不是流。
- 可靠传输:提供端到端的可靠性保证,确保数据完整、有序地到达接收方。
- 连接绑定:通信两端的队列对(Queue Pair, QP)是一一绑定的,类似于TCP连接。
-
应用场景:
- 适用于需要高可靠性和有序数据传输的场景,如分布式存储系统中的数据同步和备份。
- 在高性能计算集群中,用于节点之间的可靠通信和数据传输。
-
-
不可靠连接(Unreliable Connection, UC)
-
特点:
- 面向消息:与RC模式相同,数据以消息的形式传输。
- 不可靠传输:不提供端到端的可靠性保证,数据可能会丢失或乱序到达。
- 连接绑定:通信两端的队列对(Queue Pair, QP)是一一绑定的。
-
应用场景:
- 适用于对可靠性要求不高,但对性能要求较高的场景,如某些实时性要求较高的应用。
- 在一些容错机制较强的分布式系统中,可以用于提高数据传输的效率。
-
-
不可靠数据报(Unreliable Datagram, UD)
-
特点:
- 面向消息:数据以消息的形式传输。
- 不可靠传输:不提供端到端的可靠性保证,数据可能会丢失或乱序到达。
- 无连接绑定:通信两端的队列对(Queue Pair, QP)不做一一绑定,类似于UDP通信。
-
应用场景:
- 适用于对可靠性要求不高,但对性能要求极高的场景,如某些实时性要求极高且能够容忍一定数据丢失的应用。
- 在某些分布式系统中,可以用于提高数据传输的灵活性和效率。
-
-
可靠数据报(Reliable Datagram, RD)
-
特点:
- 面向消息:数据以消息的形式传输。
- 可靠传输:提供端到端的可靠性保证,确保数据完整、有序地到达接收方。
- 无连接绑定:通信两端的队列对(Queue Pair, QP)不做一一绑定。
-
应用场景:
- 目前支持情况:需要注意的是,目前多数网卡厂商还不支持RD模式,因此在实际应用中较为少见。
- 潜在应用:如果RD模式得到广泛支持,它将适用于需要高可靠性但又不希望受到连接绑定限制的场景,提供更灵活的数据传输方式。
-
总结:
可靠连接(RC)模式提供高可靠性和有序数据传输,适用于对可靠性要求较高的场景;
不可靠连接(UC)和不可靠数据报(UD)模式提供更高的性能,但牺牲了一定的可靠性,适用于对性能要求较高的场景;
可靠数据报(RD)模式则结合了可靠性和灵活性,但目前支持情况有限。在实际应用中,需要根据具体的需求和网络环境选择合适的传输模式。
- 可靠连接(RC)一个QP只和另一个QP相连,消息通过一个QP的发送队列可靠地传输到另一个QP的接收队列。数据包按序交付,RC连接很类似于TCP连接。
- 不可靠连接(UC)一个QP只和另一个QP相连,连接是不可靠的,所以数据包可能有丢失。传输层出错的消息不会进行重传,错误处理必须由高层的协议来进行。
- 不可靠数据报(UD)一个 QP 可以和其它任意的 UD QP 进行数据传输和单包数据的接收。不保证按序性和交付性。交付的数据包可能被接收端丢弃。支持多播消息(一对多),UD连接很类似于UDP连接。
每种模式可用的操作如下表所示(不可靠的数据报(UD),不支持memory verbs:write,read):
2.2.3 Unreliable Datagram (UD)
QP可以向任何其他UD-QP发送或从任何其他UD-QP接收单分组消息。
Ordering and delivery 不受保证,交付的数据包可能会被接收方丢弃。
支持多播消息(一对多)。
UD连接与UDP连接非常相似。
infiniband应用到Redis之后的提升效果
测试环境:
x86-64
2.10GHz Intel Xeon E5-2620L 6-core processors, featuring 32KB for L1 instruction and data caches, 256KB L2 and 15MB L3 cache.
16GB.
Mellanox MT27500 ConnectX-3 40 GbpsInfiniBand HCA
Red Hat Enterprise Linux Server 6 ,kernel 2.6.32.
测试工具:
InfiniBand verbs performance test tool
如:ib_send_lat, ib_read_lat, ib_write_lat
测试结果:
Inlined模式下,小于256个字节的小消息可以inline在WR中,以避免RDMA NIC通过DMAread提取小消息。这种方法可以有效地避免DMA操作从而减少延迟。
图1表明:
当消息size 小于256 bytes时,inlined 的SEND/RECV 可以明显的降低时延
不用 inlined 的SEND/RECV 操作在UD 传输时也可以轻微降低时延,但效果不明显。
图2表明,与SEND / RECV操作相似,在传输小消息时,使用inlined的RDMA write在RC传输和UC传输上具有较低的延迟。
图3表明,inlined的RDMA write 在UC传输的时延比RC传输的时延低。
而图4表明,非inlined的RDMA write在UC传输时不比RC传输具有更好的性能。
WAN上InfiniBand传输服务的实验分析 (RC|UC|WRITE|READ|SEND)
RC和UD性能比较
《Scalable Network Communication using Unreliable RDMA》Scalable Network Communication using Unreliable RDMA. (Conference) | OSTI.GOV