Sigcomm2015 DCQCN论文阅读笔记

文章目录

  • 背景
  • 优先级流控制(PFC)
    • 优先级流控制(PFC)的局限性
      • Unfairness
      • Victim flow
    • 问题分析与解决方案
  • DCQCN的设计
    • DCQCN总体框架
    • Congestion Point(拥塞点)
    • Notification Point(通知点)
    • Reaction Point(反应点)
  • 总结
    • 优点
    • 缺点

Sigcomm 2015年的论文“Congestion Control for Large-Scale RDMA”开启了RDMA中的拥塞控制算法的学习。虽然这篇论文提出的拥塞控制机制DCQCN总是被后来的论文拿出来鞭尸,但是作为第一个吃螃蟹论文还是非常值得深入一读的。
背景

RDMA(Remote Direct Memory Access)技术是一种直接在内存和内存之间进行数据互传的技术,在数据传输的过程中完全实现了Kernel Bypass,CPU不需要参与操作,这也是RDMA在降低CPU消耗的同时,还能带来低时延的原因。
 RDMA与TCP/IP模式示意图

TCP占用CPU资源多。使用RDMA以后吞吐量大,cpu消耗低,延迟低。深究原因,一般收发数据,要经过操作系统内核处理封装,然后再通过网卡发送。这个过程会产生中断,并且消耗cpu资源,在相同的吞吐量下,流越小那么造成的中断次数就越多,cpu消耗越大。rdma就是数据直接在内存和网卡之间交流,不用走内核了,节约cpu资源。

RDMA必须要部署在无损网络之上,而无损网络的实现就要启用PFC机制。

优先级流控制(PFC)

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

优先级流控制(PFC)的局限性

部署在大规模网络上需要用到的PFC机制会产生以下问题:

Unfairness

我们可以看到流f1使用Ingress 1,流f2、f3共享Ingress 2。最初始的情况下,如(a)图,三个流平均分配Egress 1。(b)图队列达到了PFC的阈值,交换机暂停了Ingress1和Ingress2的发送。(c)图收到了恢复帧并且开始重新发送包。此时f2和f3构成竞争关系而f1独占Ingress 1。(d)图展示了f1拥有比f2和f3更高的吞吐量。
Unfairness

Victim flow

在该图中我们可以看到Egress 1发生了拥塞,而本来应该正常传输的流f2由于暂停帧的原因也被迫停止了。此时流f2被称作Victim flow。
Victim flow

问题分析与解决方案

问题分析

  • PFC拥塞控制机制不能区分流,粒度太粗。

解决方案

  • 加入端到端流级别的拥塞控制能解决上述问题。

DCQCN的设计

DCQCN总体框架

DCQCN
DCQCN是基于速率和基于反馈的拥塞控制。
DCQCN的设计包括3个部分:

  • 拥塞点,交换机;
  • 通知点,流量接收端和信号发送端;
  • 反应点,流量发送端。

发送方(RP)以最高速开始发送,沿途过程中如果有拥塞,会被标记ECN显示拥塞,当这个被标记的报文转发到接收方(NP)的时候,接收方(NP)会回应一个CNP报文,通知发送方(RP)。收到CNP报文的发送方(RP),就会开始降速。当发送方没有收到CNP报文时,就开始又提速了,上述过程就是DCQCN的基本思路。接下来我们详细讨论DCQCN的思路:

Congestion Point(拥塞点)

在这里,我们展示DCQCN如何在拥塞点上工作。
congress
当队列长度超过ECN标记阈值时,数据包在ECN位上标记,其概率与队列长度成比例。 这些标记的数据包是显示发生拥塞的信号。
优先流控制PFC 用于防止数据包丢失。 当队列长度超过PFC阈值时,PFC数据包将发送到上游端口以阻止它们发送。

Notification Point(通知点)

当拥塞点(流的接收端)接收数据包时,它检查其ECN位。
如果一个接收端接收到带有ECN标记的分组,则它向流的发送端发送拥塞通知分组a congestion notification packet (CNP),并且在下一个固定的时间段内,例如50微秒,它将不再针对相同的流发送CNP。
CNP是拥塞信号,通知发送者控制流速。
在这里插入图片描述

Reaction Point(反应点)

当流量发送端接收到CNP时,它会按比例减少流量,该切割比的计算类似于DCTCP。当接收到CNP时,切割比率增加。 并且当流速增加时,切割比降低。
在这里插入图片描述
定时器和字节计数器用于发送端以进行速率恢复,当发送方未在固定时间内收到CNP时,它会根据其先前的状态增加流量。
加速有三种状态,如QCN,快速恢复,加性增加和超增加。
在快速恢复中,发送方将流速增加到上次切割前的速率。快速恢复将持续到,恢复到目标速率
在加性增长中,流速相加地增加,也就是说,使用固定的增加步骤。
在超级增长中,增加步骤随着增加的时间增长而增长。
在这里插入图片描述
以下图片展示了该过程的伪代码:
在这里插入图片描述

总结

优点

  • 利用类似DCTCP显式反馈策略,结合QCN的速率控制,可以在PFC机制触发前缓解拥塞。减少PFC机制的触发。

缺点

  • 仍然需要依靠PFC来实现无损网络。
  • 与DCTCP一样存在队列排队延迟的问题。
  • 丢包重传采用 Go back N 机制