Congestion Detection in Lossless Networks无损网络中的拥塞检测 清华大学 SICOMM2021 论文阅读

Congestion Detection in Lossless Networks

无损网络中的拥塞检测 清华大学 SICOMM2021

Congestion detection in lossless networks | Proceedings of the 2021 ACM SIGCOMM 2021 Conference

可以配合Tuning ECN for Data Center Networks一起阅读

关键词:无损网络,拥塞检测,流量控制

  1. 无损网络-没有丢包的网络

传统的网络是可以出现丢包的,丢包之后就进行重传,而无损网络是避免丢包的情况,关于无损网络也提出了很多技术,比如RDMA等。

无损网络有两个关键的技术:ECN和PFC。

ECN   是当网络中出现拥塞的时候,中间设备会给数据包打上ECN的标签,当接收方收到数据包后发现有这个标签,就会给发送方发送一个CNP,发送方收到后会调整流量的发送速率待一定时间后或者是再次收到可以发送更多数据包的信号。

PFC   即priority flow control,能够逐跳提供基于流优先级的流量控制。当数据包在发送的时候,会根据优先级映射进入相应的发送队列,一个设备中可能有多个优先级队列。当某一个优先级的队列出现超过阀值的情况,就会给上游设备发送一个PAUSE信号,上游设备收到信号后会停止该优先级队列的数据包的发送,等到一段时间后或者是收到可以发送数据包的信号时再恢复发送。对该优先级队列的处理并不会影响其他优先级的流量的发送接收,因此PFC使得不同类型的流量相互独立,互不影响。

 2、论文关注点、动机和意义

现有的无损网络的拥塞检测一般都是由交换机完成的,而拥塞控制(速率控制)是由端点完成的。由DCB(数据中心桥接)任务组开发的拥塞管理包括两个重要组件:负责拥塞检测的拥塞点(CP)和负责速率控制的反应点(RP)。类似地,InfiniBand规范规定了InfiniBand网络中的拥塞控制框架,交换机检测拥塞,通道适配器(CA)执行注入节流。

 

作者认为,现有的拥塞检测机制是不完全正确(有不足)的。理由如下:

   无损网络依赖于逐跳的流量控制来保证在正常操作下的实现零丢包。对于逐跳的流量控制,当某个中间设备拥塞的时候会给上游发送一个PAUSE信号,上游收到信号就会停止向下游发送数据包,那么上游的数据包也可能会出现队列长度(queue length)大于阀值的情况,则对于该设备很可能会被误判为是拥塞的节点等。所以,虽然可以实现零丢包,但是这可能会导致队列累积或者是暂停端口的实际输入速率的影响。

 

 

本文贡献:

① 深入了解逐跳流量控制对无损网络中拥塞检测的影响,并定义三元状态。

② 开发了一种新的拥塞检测机制TCD,该机制利用开关发送模式和队列长度演化特性来检测三元状态之间的转换。试验台和大量仿真表明,TCD能够准确地检测拥塞端口,识别拥塞流和未确定流。

③ 将TCD与现有的拥塞控制相结合,包括DCQCN、TIMELY和IB CC。

3、TCD方法原理

TCD的三个状态:

文中提出了一种三元拥塞检测(TCD  Ternary Congestion Detection)方法,将中间设备的端口分为三种状态:拥塞(1)、非拥塞(0)和不确定(/)。

TCD会向端点通知是拥塞流(即通过拥塞端口的流)还是不确定流(通过不确定端口的流)本文认为:正确的了解端口的状态是非常重要的,有助于我们更好的进行拥塞控制,提高无损网络的性能。

拥塞:   拥塞端口即发生了拥塞的端口,但是它的拥塞原因是队列累积,而不是因为收到PAUSE后暂停发送数据包而引起的,其端口一直保持ON(打开)的状态。

非拥塞:  非拥塞状态即端口没有发生队列长度超过阀值的情况,并且端口一直是保持ON的状态。

不确定:  不确定是指端口会在ONOFF之间切换的状态,当收到下游的PAUSE信号的时候,该端口会从ON变为OFF,从而停止向下游发送数据,等收到可发送的信号或隔了一段时间后再从OFF状态变成ON状态,然后继续发送数据包,并且当从OFF状态收到信号转为ON时是以线速度发送数据的。

 

状态之间的转换:

关于端口在这三个状态之间切换,具体如下:

在①和②中,主要的转换条件就是queue length(队列长度),端口是一直保持为ON的。

对于③和⑥,当其端口由ON转变为OFF,就说明端口进入了Undetermined不确定状态。

 

对于④和⑤,当端口从ON-OFF样式转为ON并且保持为ON的时间超过时则说明已经离开了Undetermined状态,至于是到Non-congestion还是congestion要根据queue length 或者是队列的增减来判断,当队列长度减少或者是队列的长度小于阀值(此时可能队列并没有减少,甚至可能增加,但只要比阀值小就可以)则认为是转为了Non-congestion,若队列长度没有减少并且长度大于阀值,则认为是进入了拥塞状态。

为了检测queue length ,交换机可以在每个周期T内检查一下队列大小。

TCD实现的关键 :

状态之间最难判断的就是离开Undetermined状态时,也可以很明确,关键就是的数值,所以实际上TCD实现的关键就是计算出正确的。对于的计算文中给出了不同情况下的计算方式。

 

 

 

 

在每个ON期间,下游端口的入口队列长度继续增加。当队列长度增加到上限B1 时,上游端口暂停,ON周期结束。当下游端口中的入口队列长度减少到B0,上游端口恢复ON周期。

 

Ri是拥塞流量的平均输入速率,Rd是拥塞流量的平均排放速率,C是拥塞出口端口处分配的带宽。在ON-OFF发送模式中, Ri总是大于Rd。yibuxilong表示拥塞流所经历的拥塞程度,较大的值表示较大的拥塞程度。将其代入方程(1),得到(2)。

一般的拥塞场景是多个发送方同时向一个接收方发送数据。由于最简单的情况是两个流争用一个瓶颈链路,因此拥塞流在所有拥塞场景中可以分配的最大带宽为C/2。Rd满足Rd<=C/2,得到(3)

 


4、实验

文中对两种无损网络都进行了测试,分别是

Converged Enhanced Ethernet (CEE) 和 InfiniBand。

对于CEE来说:使用DCQCN的方法,当队列大小超过限定阀值时,就打上ECN的标记,有一比特ECN标记表示存在拥塞。CEE使用PFC的方式保证无丢包。

对InfiniBand而言:交换机可以识别两种情况(a)若输出端口的队列超过阈值,并且有可用的credit来发送数据包,则这是root cause(拥塞的根本原因,也即代表是拥塞情况);(b) 如果输出端口的队列超过所选阈值,并且数据包由于credit不足而延迟,那么它就是victim(也就是因为其他原因被迫导致队列长度过长的,包括pause或者是credit返回说不能发,也即对应的Undetermined状态)。当是root cause时,就判断是拥塞的,FECN位标记数据包。对于CA,一个比特FECN标记表示存在拥塞。InfiniBand使用CBFC(credit-based flow control)的方式保证无丢包。

 

在PFC中,当队列长度大于 Xoff 时就向上游发送PAUSE信号,而当队列长度小于Xon时再向上游发送一个RESUME信号,代表可以重新发送数据。上游的出端口仅在没有被暂停时才可以发送数据。

在CBFC中,有一个调整块寄存器(ABR)来记录收到的块大小,下游周期性的给上游发送FCCL,FCCL包括了ABR和分配到的缓冲区大小,上游交换机保存了一个记录总发送数的寄存器(FCTBS),通过FCTBS和FCCL,可以计算出此时可以发送的数量(credit),上游只能在有可用的credit时才可以发送数据。

本质来说,PFC和CBFC方式都是为了避免缓冲区溢出,从而实现无损网络。

实验按照如下方式部署进行,对于判断在Congestion 状态下的数据包会打上CE的标签,而在Undetermined状态下的则是会打上UE的标签。 对于CE标签,终端检测到的时候并不会降低其发送速率,从而避免了因为错误判断链路上的拥塞情况导致的吞吐量下降等。如果是UE标签则是会降低发送数据的速率,避免拥塞加剧或者是丢包等。

 

 

对于这个网络部署图,所有的链路都是40Gbps,有4微秒的延迟,A0~A14是大小为64KB的突发流量,持续3ms,S1向R1发送一个长流F1,速度40Gbps,在单拥塞点和多拥塞点场景下分别进行了实验。其中,P3是一个拥塞状态,由于P3是拥塞端口,P2成为了不确定状态,因为它其端口在ON和OFF之间切换,也很容易被误判为是拥塞点,实际上并不是。

实验结果图如下:(多拥塞节点场景下的发送速率的测试图)

 

另外,关于CEE和InfiniBand中的Undetermined状态的具体情况如下图可以看到:

 

在PFC中,出口端口在从下游端口接收暂停时停止发送,并在接收恢复后恢复发送。如果既没有收到暂停也没有收到恢复,则出口端口通常以线路速率发送数据包。如图10(a)所示,实际ON时间正好是恢复时间。在每个恢复周期期间,首先发送由前一个PAUSE暂停的分组,然后还可以发送新到达的分组。由于PFC由入口队列长度触发,我们可以直接采用等式(3)来获得max(Ton)。

在CBFC中,出口端口在信用不可用时停止传输,并在当前信用至少为一个数据包大小时恢复传输。信用数量在FCCL消息中携带,该消息定期更新到上游端口。如图10(b)所示,当一个端口由CBFC调节时,实际ON周期是每个信用更新周期内数据包传输的持续时间Tc。 在每个ON期间,在前一个Tc期间没有信用的数据包首先被发送,然后还可以发送新到达的数据包。

5、部分实验结果

通过在不同的流场景下结合不同的无损网络和拥塞控制方法,得到实验结果如下:

 

 

 

 在不同的算法和负载流量下,TCD整体表现出了相对比较好的性能提升,但是对于TIMELY + TCD和TIMELY本身来说,其FCT在某些流量大小下表现的差异不大。

 

 

6、总结

本文的一个主要贡献就是提出了TCD方法,并提出了一种新的端口状态,Undetermined State,TCD可以准确的检测出拥塞端口,并识别 是congestion flow还是Undetermined flow,对于不同的这些流有不一样的处理方式(打上不一样的标签,CE或UE),终端在收到数据后可以知道此时是否有拥塞的情况来相应的调整数据包的发送速率等,现有的拥塞算法和TCD结合能够获得更好的性能,证实准确的拥塞检测对于拥塞控制有重要意义。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值