专栏
天翼云开发者社区

大规模RDMA场景中DCQCD算法介绍

2023-09-21 10:01:35 299阅读

     DCQCN(Data Center Quantized Congestion Notification)算法是一种基于速率的拥塞控制算法,RoCEv2的端到端拥塞控制协议。该算法结合了QCN算法和DCTCP算法的优点,提供了较好的公平性、高带宽利用率、低队列缓存占用率以及较少的队列缓存抖动情况。DCQCN只需要数据中心交换机的标准RED和ECN支持。其余的协议功能在终端主机NIC上实现。

我们对DCQCN有三个核心要求:

(i)能够在无损、L3路由的数据中心网络上运行,

(ii)低CPU开销

(iii)在无拥塞的常见情况下超快速启动。此外,我们还希望DCQCN能够快速收敛到公平的带宽分配,避免围绕稳定点的振荡,保持较低的队列长度,并确保较高的链路利用率。

DCQCN算法由发送方(反应点(RP,reaction point))、交换机(拥塞点(CP,congestion point))和接收方(通知点(NP,notification point))组成。

1.1 算法

CP算法:CP算法与DCTCP算法相同。在出口队列中,如果队列长度超过阈值,则对到达的数据包进行ECN标记。这是通过使用所有现代交换机上支持的RED功能,若要模仿DCTCP算法,使Kmin = Kmax = K,Pmax = 1即可,但这样设置不是最优解。

想想当队列长度超过Kmin时,交换机才开始打ECN拥塞标记,Kmin的大小决定了RoCE网络的基础延时,这些缓存中的报文是发送者发出,但未被接收者确认的报文,我们称之为inflight bytes,约等于延时带宽积。然而理想状态下,标记概率在定义域Kmin~Kmax内的变化是连续的,而且队列的长度是准确的。但实际上在交换芯片的实现中队列长度一般是采用轮询方式获取的而且将此刻的队列长度与历史值做指数平均,并依此计算标记概率。轮询带来的结果是,标记概率在定义域Kmin~Kmax内的变化是不连续的,其次,指数平均值会让测得的队列长度是滞后的。所以不适用于用理论来推导Kmax、Pmax。需要基于实际的物理网络,基于对网络的要求通过大量的实验获取参数。

 

NP算法:当一个带有ECN标记的数据包到达NP时,表示网络拥塞,NP会传送这个信息到发送源端。RoCEv2标准为此定义了显式拥塞通知包(CNP)。NP算法规定了生成CNP的方式和时间。对于每个流,该算法遵循下图中的状态机

如果在过去N微秒内没有为该流发送CNP,则立即发送一个CNP。然后,在该时间窗口内有任何这个流的标记报文达到,NIC每N微秒最多为该流生成一个CNP包。我们在部署中使用N = 50μs。处理标记的数据包和生成CNP都是开销很大的操作,因此我们将每个标记的数据包的活动最小化。

RP算法当RP(即流发送端)获得CNP时,就减小当前发送速率Rc并更新减速因子α,如DCTCP,并将当前速率记为目标速率Rt,以便稍后恢复。更新值如下:

公式1:

如果NP没有得到任何标记的数据包,则不会生成CNP反馈。因此,如果RP在K个时间单位都没有收到CNP,它将更新α,如下公式,注意,K必须大于CNP生成定时器。我们的实现使用K = 55μs。

公式2:

此外,RP使用计时器和字节计数器来增加其发送速率,方式与QCN相同。字节计数器每增加B个字节就增加速率,而计时器每增加T个时间单位就增加速率。计时器确保流可以快速恢复,即使它的速率下降到一个很低的值。可以调整这两个参数以实现所需的增速积极性。速率增加有两个主要阶段:快速恢复,当F = 5连续迭代时,速率迅速增加到固定目标速率:

公式3:

快速恢复之后是加性增加,其中当前速率缓慢接近目标速率,目标速率以固定步幅Rai增加:

公式4:

还有一个快速上升的超级增加阶段。如下图显示了状态机过程:

注意,没有慢启动阶段。当流启动时,如果没有来自主机的其他活动流,它将以全链路速率发送。这种设计决策优化了流传输相对少量数据、网络不拥挤的常见情况。

1.2 讨论

CNP生成:DCQCN对反向路径上的拥塞不是特别敏感,因为发送速率不依赖于像TIMELY这样的精确RTT估计。尽管如此,我们还是以高优先级发送CNP,以避免错过CNP的最后期限,并实现更快的收敛。注意,在没有拥塞的一般情况下,不会产生CNP。

基于速率的拥塞控制:DCQCN是一种基于速率的拥塞控制方案。我们采用基于速率的方法,因为它比基于窗口的方法实现起来更简单,并且允许更细粒度的控制。

参数:DCQCN基于DCTCP和QCN,但在关键方面各不相同。例如,不像QCN,没有量化反馈,也不像DCTCP,没有“每ack”反馈。因此,DCTCP和QCN推荐的参数设置不能盲目应用于DCQCN

关于PFC:DCQCN并不排除对PFC的需要。使用DCQCN,流以链路速率开始。如果没有PFC,这可能导致数据包丢失和性能低下。

硬件实现:NP和RP状态机都是在NIC上实现。RP状态机需要为每个受速率限制的流保留一个计时器和一个计数器,除了少量的其他状态,如alpha的当前值。此状态在网卡插槽上被保留。速率限制是在每个包的粒度上。在ConnectX-3 Pro中实现的NP状态机可以以每1-5微秒一个的速率生成CNP。在40Gbps的链路速率下,接收器每50微秒可以接收大约166个完整大小(1500字节的MTU)数据包。因此,NP通常可以支持在10-20拥塞流中以所需速率产生CNP。当前版本(ConnectX-4)可以为超过200个流以所需的速率生成CNP。

  • 0
  • 0
  • 0
0 评论
0/1000
评论(0) 发表评论
l****n

l****n

3 篇文章 0 粉丝
关注

大规模RDMA场景中DCQCD算法介绍

2023-09-21 10:01:35 299阅读

     DCQCN(Data Center Quantized Congestion Notification)算法是一种基于速率的拥塞控制算法,RoCEv2的端到端拥塞控制协议。该算法结合了QCN算法和DCTCP算法的优点,提供了较好的公平性、高带宽利用率、低队列缓存占用率以及较少的队列缓存抖动情况。DCQCN只需要数据中心交换机的标准RED和ECN支持。其余的协议功能在终端主机NIC上实现。

我们对DCQCN有三个核心要求:

(i)能够在无损、L3路由的数据中心网络上运行,

(ii)低CPU开销

(iii)在无拥塞的常见情况下超快速启动。此外,我们还希望DCQCN能够快速收敛到公平的带宽分配,避免围绕稳定点的振荡,保持较低的队列长度,并确保较高的链路利用率。

DCQCN算法由发送方(反应点(RP,reaction point))、交换机(拥塞点(CP,congestion point))和接收方(通知点(NP,notification point))组成。

1.1 算法

CP算法:CP算法与DCTCP算法相同。在出口队列中,如果队列长度超过阈值,则对到达的数据包进行ECN标记。这是通过使用所有现代交换机上支持的RED功能,若要模仿DCTCP算法,使Kmin = Kmax = K,Pmax = 1即可,但这样设置不是最优解。

想想当队列长度超过Kmin时,交换机才开始打ECN拥塞标记,Kmin的大小决定了RoCE网络的基础延时,这些缓存中的报文是发送者发出,但未被接收者确认的报文,我们称之为inflight bytes,约等于延时带宽积。然而理想状态下,标记概率在定义域Kmin~Kmax内的变化是连续的,而且队列的长度是准确的。但实际上在交换芯片的实现中队列长度一般是采用轮询方式获取的而且将此刻的队列长度与历史值做指数平均,并依此计算标记概率。轮询带来的结果是,标记概率在定义域Kmin~Kmax内的变化是不连续的,其次,指数平均值会让测得的队列长度是滞后的。所以不适用于用理论来推导Kmax、Pmax。需要基于实际的物理网络,基于对网络的要求通过大量的实验获取参数。

 

NP算法:当一个带有ECN标记的数据包到达NP时,表示网络拥塞,NP会传送这个信息到发送源端。RoCEv2标准为此定义了显式拥塞通知包(CNP)。NP算法规定了生成CNP的方式和时间。对于每个流,该算法遵循下图中的状态机

如果在过去N微秒内没有为该流发送CNP,则立即发送一个CNP。然后,在该时间窗口内有任何这个流的标记报文达到,NIC每N微秒最多为该流生成一个CNP包。我们在部署中使用N = 50μs。处理标记的数据包和生成CNP都是开销很大的操作,因此我们将每个标记的数据包的活动最小化。

RP算法当RP(即流发送端)获得CNP时,就减小当前发送速率Rc并更新减速因子α,如DCTCP,并将当前速率记为目标速率Rt,以便稍后恢复。更新值如下:

公式1:

如果NP没有得到任何标记的数据包,则不会生成CNP反馈。因此,如果RP在K个时间单位都没有收到CNP,它将更新α,如下公式,注意,K必须大于CNP生成定时器。我们的实现使用K = 55μs。

公式2:

此外,RP使用计时器和字节计数器来增加其发送速率,方式与QCN相同。字节计数器每增加B个字节就增加速率,而计时器每增加T个时间单位就增加速率。计时器确保流可以快速恢复,即使它的速率下降到一个很低的值。可以调整这两个参数以实现所需的增速积极性。速率增加有两个主要阶段:快速恢复,当F = 5连续迭代时,速率迅速增加到固定目标速率:

公式3:

快速恢复之后是加性增加,其中当前速率缓慢接近目标速率,目标速率以固定步幅Rai增加:

公式4:

还有一个快速上升的超级增加阶段。如下图显示了状态机过程:

注意,没有慢启动阶段。当流启动时,如果没有来自主机的其他活动流,它将以全链路速率发送。这种设计决策优化了流传输相对少量数据、网络不拥挤的常见情况。

1.2 讨论

CNP生成:DCQCN对反向路径上的拥塞不是特别敏感,因为发送速率不依赖于像TIMELY这样的精确RTT估计。尽管如此,我们还是以高优先级发送CNP,以避免错过CNP的最后期限,并实现更快的收敛。注意,在没有拥塞的一般情况下,不会产生CNP。

基于速率的拥塞控制:DCQCN是一种基于速率的拥塞控制方案。我们采用基于速率的方法,因为它比基于窗口的方法实现起来更简单,并且允许更细粒度的控制。

参数:DCQCN基于DCTCP和QCN,但在关键方面各不相同。例如,不像QCN,没有量化反馈,也不像DCTCP,没有“每ack”反馈。因此,DCTCP和QCN推荐的参数设置不能盲目应用于DCQCN

关于PFC:DCQCN并不排除对PFC的需要。使用DCQCN,流以链路速率开始。如果没有PFC,这可能导致数据包丢失和性能低下。

硬件实现:NP和RP状态机都是在NIC上实现。RP状态机需要为每个受速率限制的流保留一个计时器和一个计数器,除了少量的其他状态,如alpha的当前值。此状态在网卡插槽上被保留。速率限制是在每个包的粒度上。在ConnectX-3 Pro中实现的NP状态机可以以每1-5微秒一个的速率生成CNP。在40Gbps的链路速率下,接收器每50微秒可以接收大约166个完整大小(1500字节的MTU)数据包。因此,NP通常可以支持在10-20拥塞流中以所需速率产生CNP。当前版本(ConnectX-4)可以为超过200个流以所需的速率生成CNP。

文章来自专栏

网络管理

3 篇文章 1 订阅
0 评论
0/1000
评论(0) 发表评论
  • 0
    点赞
  • 0
    收藏
  • 0
    评论