DCQCN:Congestion Control for Large-Scale RDMA Deployments

Microsoft--sigcomm'15

核心思想:避免RDMA网络中的丢包,替代PFC流控方案,建立流模型调节交换机缓存阈值(用于标记ECN)

简介:

高带宽(40Gbps+)、低时延(10us- per hop)的数据中心网络需求。TCP/IP协议栈的运行模式需要大量的CPU开销,时延也相当高。RDMA将网络协议栈实现在网卡(NIC)上,通过Bypass的方式降低CPU开销,直接与对端内存进行交互。关键问题是如何为RDMA网络营造一个无损环境,如何在网卡上设计和实现拥塞控制协议避免丢包。

最初RDMA是部署在IB网络中的,IB网络的L2链路层使用逐跳、基于身份令牌的流控机制避免由于缓存溢出引发的丢包。所以L4传输层设计就相对简单,效率很高。但IB网络与数据中心中已有的以太网络不兼容,DC中同时运行两种网络的管理成本太高,于是基于Ethernet的RoCE(为了可路由)和基于UDP的RoCEv2(为了ECMP)产生了。若要达到与IB高效的性能,需保证RoCEv2运行在无损网络中,即不丢包。RoCE采用PFC粗粒度的流控机制,通过暂停发包的指令避免缓存溢出。PFC是基于端口(每个端口有8条虚拟优先级链路)的,不能区分流,容易造成拥塞扩散的现象,降低吞吐量。

所以,拥塞控制机制必须满足这些条件:(1)运行在数据中心三层路由网络中,实现无损网络(2)在终端主机上的CPU开销足够低(3)在非拥塞环境下快启动。

目前已有方案:QCN不支持三层网络。DCTCP和iWarp是慢启动。DCTCP和TCP-Bolt是在软件中实现的,CPU开销很大。

DCQCN:只需要交换机支持RED和ECN即可。协议实现在网卡上。可以保证快速公平收敛,高带宽利用率,低延迟。

conventional:常规的,惯例的

设计DCQCN的必要性:TCP/IP协议栈不能提供超低时延和超低CPU开销;目前PFC方案的弊端;以及解决方案的弊端

(1)测量比较TCP与RDMA的吞吐量、时延和CPU利用率

方案:TCP:修改iperf,开启LSO,RSS,使用16条线程,零拷贝操作      RDMA:使用自定义的工具测试IB read操作传送数据,一条线程占满一条链路。

(2)PFC的限制和弊端

PFC:通过监控ingress queue以及向上一跳发送PAUSE帧的方式避免交换机缓冲区和NIC缓冲区出现缓存溢出,从而避免丢包。

问题:PFC是针对端口和优先级进行流控的,不能识别流,会造成HOL问题,对单条流性能造成影响。不公平性。级联性。

解决方案:添加8条优先级。但随着发送端数量的增多,网络规模的扩大,可扩展性不高。并且处于同一优先级的不同流仍会遭受HOL问题。

(3)PFC改进方案的不足之处

改进方案:使用流级拥塞控制机制。

QCN:二层流控机制。依据mac地址和流id确定某条流,根据排队长度依概率判定是否拥塞,向发送该拥塞报文的源端发送拥塞通知。源端在周期内若收到拥塞通知,则降低发送速率,否则增加发送速率。

问题:QCN是通过二层mac地址标识流的,在IP网络中不可行,mac地址会变,交换机不知道该向谁发送拥塞通知包。

解决方案:扩展QCN支持三层流控。需要做的是修改NIC和交换机以支持用五元组标识流。修改交换机需要修改ASIC芯片,周期长,可实现性低。

DCQCN算法

不改交换机,在NIC上实现,考虑CPU开销。在性能方面上,要求公平带宽分配的快速收敛,避免震荡,维持短队长,确保高链路利用率。

CP算法(Congestion Point):在交换机上。与DCTCP机制相同,利用RED功能依据队列长度按照概率分布给数据包打上ECN标签。本方案中改进了DCTCP的参数设置模型。

NP算法(Notification Point):在接收端。决定了在收到ECN包后什么时间和怎样构造CNP(congestion notification packet)的问题。在某一时间周期内,最多只发送一个CNP包。N=50us。

RP算法(Reaction Point):在发送端。当收到CNP包时,怎么调节速率。当收到CNP包后,依照equation 1 调节;在连续K时间内,未收到CNP包,根据当前计时器(每T个时间单元为1,保证快恢复)和计数器(每B个字节为1)的值,按照equation 2 快速增加速率。

RP算法的伪代码

缓存区设置:Tflight,Tpfc,Tecn

需求:PFC的触发要晚于ECN,早于缓存溢出,避免丢包和吞吐量下降

讨论的前提:交换机为共享缓存模式,有32个全双工的40Gbps端口,12MB的共享内存,支持PFC的8条优先级队列

Tflight:用于存储PAUSE包发送时和生效时到达的数据包的内存大小。根据BDP,每个端口,每个优先级所需要的内存空间为22.4KB。

Tpfc:可理解为触发PFC的ingress 队列中可以占用的最大内存区域。每个端口的每个优先级队列的Tpfc值要小于等于24.47KB。而触发PFC的条件一定要比它小。当队列内存占用降低到Tpfc减去两个MTU的值时,会自动发送RESUME信号,恢复发包。

Tecn:触发ECN标记的最小egress queue占用的内存空间。该值的设置一定要使ECN先于PFC触发。最坏情况下,所有的egress queue的包都来自于同一条ingress queue,为保证ecn先于pfc触发,则Tecn应小于0.85KB,小于一个MTU长度,不可行。这种想法过于静态,由于交换机内缓存资源是共享的,所以Tpfc的设置应取决于剩余的可用资源。如下公式:

S为所有egress队列占用的缓存资源,此公式为是交换机依赖的
在最坏情况下的Tecn经过放缩后的结果

DCQCN分析:建立流模型决定参数设置

建立了当前速率,目标速率,速率增长步长,速率调节参数α,等一系列参数。

实验结果:搭建实验床验证流模型和参数设置的有效性

DCQCN是基于速率调整的拥塞控制方案,DCTCP、iWarp和TCP-Bolt都是基于窗口的拥塞控制算法。

下一步研究方向:将机器学习应用到DCQCN算法中调节参数设置

你可能感兴趣的:(DCQCN:Congestion Control for Large-Scale RDMA Deployments)