MP-RDMA: Enabling RDMA With Multi-Path Transport in Datacenters论文阅读笔记

在这里插入图片描述
2019年发表在IEEE-ACM TRANSACTIONS ON NETWORKING(二区)上
原文链接:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=8895760

简述

在数据中心中,针对RDMA(指的RoCE v2)单路经传输无法利用并行网络路径、容易出现故障的问题,这篇文章提出了一种RDMA的多路径传输方法(MP-RDMA)。MP-RDMA采用了三种新技术来解决RDMA网卡片上内存大小有限的挑战:1)multi-path ACK-clocking(多路径ACK时钟)机制,以拥塞感知的方式分配流量,而不会产生单路径状态;2)out-of-order aware path selection(无序感知路径选择)机制,控制无序发送数据包的级别,从而使这些包所需的元数据最小化;3)synchronise(同步)机制,以确保在需要时按顺序更新内存。与单路经RDMA相比,MP-RDMA可以显著提高故障下的鲁棒性(在0.5% ~ 10%的链路损失率下,吞吐量提高2倍~ 4倍),并将整体网络利用率提高47%。

背景和问题

现代数据中心应用需要高吞吐量和低延迟的网络来满足客户日益增长的需求。RDMA完全在NIC中实现传输,从而通过NIC硬件实现对远程系统的直接内存访问,因此,RDMA可以提供低延迟和高吞吐量。RDMA已经通过RoCE v2在数据中心大规模部署,当前一个RDMA连接中的数据包使用相同的UDP源和目的端口,这种单路经传输有两个主要的缺点:

  • 单路经传输容易出现路径故障。路径上的一些小故障会对上层应用的性能造成很大的影响。例如,无声丢包是数据中心常见的故障。由于RDMA传输是在硬件上实现的,通常缺乏资源来实现复杂的丢包恢复机制,因此对丢包非常敏感。传输路径上的小丢包率可能导致RDMA吞吐量急剧下降。
  • 单路径无法充分利用全部网络带宽。ECMP (Equal Cost Multi-Path)路由是目前在数据中心网络结构之间均衡RDMA流量的主要方法,ECMP将不同的连接散列到不同的路径。然而当并行路径数量较大时,由于哈希冲突,ECMP不能很好地平衡流量。虽然网络的某些部分高度拥塞,但其余部分通常具有较低的流量负载,从而降低了整体网络利用率。因此,为了获得较高的网络利用率,以多条路径中的流更细粒度地分散流量是很重要的

RDMA的整个传输逻辑完全是在硬件网卡(NIC)中实现的,而NIC硬件的计算资源和片上内存非常有限(例如只有几兆字节)。虽然NIC可以在主机内存中上传本地状态,但是在片上内存和主机内存之间交换数据是有成本的,而且频繁的交换会显著降低性能。网卡通常用作主机内存的缓存来存储连接状态。如果缓存丢失,RDMA网卡需要通过PCIe访问主机内存。由于PCIe总线延迟和带宽争用,频繁的缓存丢失导致网卡吞吐量下降。因此,为了避免并发连接数过大时频繁的缓存丢失导致的性能下降,每个RDMA连接的内存占用应该最小化,以便在片上内存中支持更多的连接。因此多路径RDMA传输的关键设计目标是最小化内存占用,这带来了下面三个挑战:

  • 多路径传输应该跟踪每个路径的拥塞状态,以便可以执行拥塞感知负载分配。然而这些状态随着发送路径的数量线性增长,这可能会导致相当大的内存开销。因此只使用片上内存只能支持很少的并发连接,这将导致更频繁的交换并降低性能(?)。
  • 多路径将导致数据包无序地到达接收方。因此,接收方需要额外的元数据来跟踪数据包是否到达。但是如果路径条件差别很大,则元数据的大小可能会很大。例如,考虑一个路径已经降到1Gbps的情况(例如,由于硬件故障导致链路速率自协商),而其他路径仍然保持正常的40Gbps速度。如果使用位图结构,则位图的大小为1.2KB。如果使用更少的位,那么任何序列号超出位图范围的数据包都必须被丢弃。这将大大降低性能,因为吞吐量受到最慢路径的限制。一个核心的设计挑战是,即使我们只能跟踪非常有限的乱序数据包,也要保持高性能。
  • 接收方NIC没有足够的内存来缓冲乱序数据包,但必须在它们到达时将它们放入主机内存中。因此,主机内存中的数据可能会被乱序更新。这可能会导致一个微妙的问题,因为一些现有的应用程序隐式地假设内存更新的顺序与操作发布的顺序相同。例如,进程可以使用WRITE操作来更新远程内存,然后发出另一个WRITE操作来设置标志以通知远程进程。如果第二次WRITE在第一次WRITE之前更新内存,远程进程可能会过早地读取部分数据并失败。虽然保持内存更新顺序对于单路径RDMA来说是微不足道的,但在多路径RDMA中需要仔细设计以避免性能下降。

贡献

  • 提出了MP-RDMA,这是第一个支持多路径的RDMA传输。
  • 设计了一套新颖的算法来最小化内存占用,使MP-RDMA适合在NIC硬件中实现。
  • 在基于FPGA的测试平台以及大规模仿真中评估了MP-RDMA。

方法

  • MP-RDMA采用了一种新颖的多路径ACK时钟机制,不需要添加每条路径的状态就可以有效地将拥塞感知数据包分发到多条路径上。
  • 设计了一种乱序感知路径选择算法,主动砍掉慢路径,自适应地选择一组具有相似时延的快路径。
  • MP-RDMA为程序员提供了一个接口通过为操作指定同步标志来确保有序内存更新。同步操作只有在所有先前的操作完成后才更新内存。因此,两个通信节点可以协调它们的行为,保证应用程序逻辑的正确性。

概述

在这里插入图片描述
上图是MP-RDMA报头格式。MP-RDMA重用UDP和RoCE v2报头中的大多数现有字段和保留字段。它通过某些字段扩展现有报头。MP-RDMA通过在UDP报头中选择特定的源端口来控制数据包的传输路径,并通过ECMP获取实际路径。由于具有相同源端口的数据包将被映射到相同的网络路径,因此使用UDP源端口来标识网络路径,这被称为虚拟路径(VP)。最初,发送方为数据包随机选择一个VP,接收端收到数据包后,立即生成一个ACK,该ACK编码同样的VP ID (Echo VP ID字段)。ACK报头携带接收到的数据包的PSN (packet sequence number)(SACK字段)和数据接收方的累计序列号(AACK字段)。ECN信号(ECE字段)也被回发给发送方。
接收到的数据包中的数据直接被放入主机内存中。对于WRITE和READ操作,原始的RDMA报头已经在每个数据包中嵌入了地址,因此接收方可以相应地放置数据。但是对于SEND/RECV操作,需要额外的信息来确定数据内存放置地址,此地址在相应的RECV WQE中。MP-RDMA在每个SEND数据包中嵌入一个消息序列号(MSN),以帮助接收方确定正确的RECV WQE。此外,在每个SEND数据包中还携带一个内部消息PSN (iPSN)作为地址偏移量,以便放置SEND消息中特定数据包的数据。

ECMP:Equal-cost multi-path routing,等价多路径路由,是一个在next-hop封包传送到一个单一目的所产生在多个最佳路径并列时的首要路由权重计算路由策略。

1. 多路径拥塞控制

MP-RDMA在不维护每条路径状态的情况下执行拥塞控制,从而最大限度地减少片上内存占用。MP-RDMA对所有路径使用一个拥塞窗口,拥塞控制算法是基于ECN(显式拥塞通知)的。MP-RDMA根据拥塞程度成比例地减小它的拥塞窗口。MP-RDMA根据ACK来估计拥塞水平,因为在RDMA网络中很少丢包所以根据每个ACK做出反应是精确和可靠的。对于每个接收到的ACK:
在这里插入图片描述
MP-RDMA利用多路径ACK时钟来进行拥塞感知的数据包分发,它允许每条路径独立地调整发送速率。工作机制如下:初始阶段,发送方随机地将初始窗口(IW)分配给初始虚拟路径(VPs);然后,当一个ACK到达发送方时,调整了拥塞窗口之后,数据包将沿着这个ACK中携带的虚拟路径(VP)被发送。通过基于逐包ECN的拥塞控制和多路径ACK时钟,MP-RDMA可以根据拥塞程度在所有发送路径之间有效地平衡流量,并优雅地控制队列振荡。
当有乱序数据包被选择性应答时,MP-RDMA使用与TCP NewReno类似的方式估计inflight数据包。具体来说,作者维护了一个inflate变量,每接收到一个ACK它就加1。用 s n d _ n x t snd\_nxt snd_nxt来表示最高发送包的PSN(packet sequence number),用 s n d _ u n a snd\_una snd_una表示最高累计确认包的PSN。那么可用窗口:
在这里插入图片描述

2. 乱序感知路径选择

MP-RDMA在接收端使用位图数据结构来跟踪到达的数据包。MP-RDMA在跟踪位图中使用有限个槽位(比如 L = 64 L=64 L=64)以减少NIC硬件中的内存占用。因此,如果乱序数据包的PSN大于( r c v _ n x t + L rcv\_nxt + L rcv_nxt+L),则接收方必须丢弃该数据包,因为这个包会损害整体性能。MP-RDMA通过一种新的路径选择算法控制乱序包的乱序程度,以便大多数包可以在跟踪位图发窗口内到达。这篇文章提出的乱序感知路径选择算法的核心思想是主动去掉慢路径,只选择延迟相似的快路径。
具体地,添加了一个新的变量 s n d _ o o h snd\_ooh snd_ooh,用来记录已经被一个ACK选择性应答的最大的包序列号(PSN)。为了便于描述,定义 s n d _ o o l = s n d _ o o h − Δ snd\_ool=snd\_ooh-\Delta snd_ool=snd_oohΔ,其中 Δ ≤ L \Delta\leq L ΔL是一个可调参数用来确定MP-RDMA中包的乱序级别。该算法工作原理如下:当一个ACK到达发送端,发送端检查这个选择性ACK的包序列号是否比 s n d _ o o l snd\_ool snd_ool低,如果是,发送端将拥塞控制窗口减1并且不允许这个ACK向嵌入在ACK报头中的VP输出数据包。
设计的原理是这样的: s n d _ o o h snd\_ooh snd_ooh标记了一个经过快路径的乱序包。为了控制数据包的乱序度,需要去掉所有导致乱序度比 Δ \Delta Δ大的慢路径。ACK应答了比 s n d _ o o l snd\_ool snd_ool低的PSN, s n d _ o o l snd\_ool snd_ool在报头中使用VP标识一个慢路径。单独的PSN可能不能正确地反映重传数据包的发送顺序(较低PSN的数据包可能靠后发送),为了消除这种歧义,作者在包头中明确了一个标记位来识别重传包并在这个重传包的ACK中回显(上图3中的ReTx)。
新路径探测:MP-RDMA定期探测新路径以找到更好的路径。具体来说,每次RTT,发送方以 p p p的概率将数据包发送到一个新的随机VP,而不是ACK的VP。这个 p p p平衡了充分利用当前良好路径集和找到更好路径的机会。在实验中作者将 p p p设置为了1%。

3. 处理同步操作

一种直接的方法是延迟同步操作直到启动器接收到先前所有操作的确认或数据。这可能导致较差的性能,因为每个同步操作都会被添加一个额外的RTT。作者将同步操作只延迟一个略大于所有路径间最大时延差的间隔,降低了上述损失。通过这种方式,同步操作很大概率在所有之前的消息之后完成。延迟的间隔被估计为:
在这里插入图片描述
Δ \Delta Δ是目标乱序级别, R s R_s Rs是RDMA连接中的发送速率, α \alpha α是比例因子。在极少数情况下,同步消息仍然会在其他较早的消息之前到达,为了确保正确性,接收方可能会丢弃同步消息并发送NACK,允许发送方重传消息。

实现

基于FPGA的原型

使用Altera Stratix V D5 FPGA板实现了MP-RDMA原型,该板具有PCIe Gen3 x8接口和两个40G以太网端口。下图为原型架构。
在这里插入图片描述
有两个主要组件:MP-RDMA传输逻辑和MP-RDMA库。

验证MP-RDMA原型的基本性能

测量指标:不同消息大小下发送和接收的处理速率和时延。
发送时延是指从收到一个ACK包到生成一个新的数据包之间的时间间隔;接收时延是指从收到一个数据包到生成一个新的ACK包之间的时间间隔。
为测量发送逻辑的处理速率,使用一个MP-RDMA发送方向两个MP-RDMA接收方发送流量,造成一个发送方瓶颈。反之为接收逻辑。结果如下图所示。对于发送,当消息大小小于512字节时,发送方无法达到线路速率,这是因为由于内存依赖关系,发送方逻辑没有完全流水线化。然而,发送逻辑处理率仍然比商用Mellanox RDMA NIC (ConnectX3 Pro)高10.4% ~ 11.5%。当消息大小较大,即>512B时,发送方逻辑可以维持40Gbps的线路速率。该原型还实现了低时延,64B消息的发送和接收时延分别为0.54μs和0.81μs。
在这里插入图片描述

实验评估

测试平台

10台服务器,位于两台ToR交换机下。每台服务器都有一块Mellanox ConnectX-3 Pro 40G网卡,以及一块实现MP-RDMA的FPGA板。有四台交换机连接两个ToR交换机,形成四条等成本的交叉ToR路径。启用PFC并将RED配置为(Pmax, Kmin, Kmax) = (1.0, 20KB, 20KB)。初始窗口设置为一个BDP。设置 Δ = 32 \Delta=32 Δ=32,位图大小 L = 64 L=64 L=64
在这里插入图片描述

MP-RDMA总体性能评估

对有损路径的鲁棒性

MP-RDMA可以极大地提高有损网络中的RDMA吞吐量。从T0到T1启动一个RDMA连接,手动在路径1、2、3上随机丢包。结果如下图(a)所示。MP-RDMA总是达到接近最佳吞吐量(38Gbps,不包括报头开销),因为它总是避免使用有损路径,它将其负载移动到路径4(好路径)。然而,DCQCN有75%的概率在有损路径上传输数据。
MP-RDMA可以快速响应路径故障,并在故障路径恢复时恢复吞吐量。从T0到T1启动一个MP-RDMA连接,并将每个路径配置为10Gbps。P1、P2、P3分别在60s、120s、180s时间断开连接。在250秒、310秒和370秒时间,这些路径将依次恢复到健康状态。结果如下图(b)所示。MP-RDMA在每条路径出现故障时,都会迅速对该路径上的流量进行节流,同时充分利用其他健康路径。当路径恢复时,MP-RDMA可以快速充分利用新恢复的路径。这得益于MP-RDMA的路径探测机制。
在这里插入图片描述

提高整体吞吐量

小规模测试中,T0的5台服务器设置MP-RDMA分别连接到T1的5台不同的服务器。结果如下图(a)所示。MP-RDMA可以很好地利用链路带宽,实现总计150.68Gbps的吞吐量(接近最优,不包括报头开销),且5个流公平地共享所有网络带宽;DCQCN的总速率仅为102.46Gbps,且4条路径中只有3条用于传输,而另一条路径处于空闲状态,导致吞吐量低得多(<20Gbps)且不平衡。
使用NS3评估大规模吞吐量性能。结果如下图(b)所示,MP-RDMA比DCQCN实现了更好的整体性能。
在这里插入图片描述

评价

这篇文章提出了一种用于数据中心RDMA的多路径传输协议MP-RDMA并基于FPGA做出了原型。工作内容详细工作量多,重点在MP-RDMA的设计上。它可以有效地利用数据中心中丰富的网络路径,同时保持片上内存占用低。MP-RDMA采用新颖的多路径ack时钟和乱序感知路径选择来选择最佳网络路径,并以感知拥塞的方式在这些路径之间分发数据包。总的来说,无论使用多少网络路径,对于每个RDMA连接,MP-RDMA只需要一个很小的常量(66B)的额外内存。在小型测试平台和大规模模拟上的评估表明,MP-RDMA在利用数据中心丰富的网络路径多样性方面是有效的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值