现代网络在基本TCP / IP堆栈的基础上进行了许多改进。 其中之一,特别有用的内部数据中心是由
Microsoft Research在2010年开发的,令人惊讶地称为数据中心TCP(DCTCP)。
DCTCP是对TCP的一组修改,旨在满足以下两个属性:
1.改善对延迟敏感的小消息的延迟
2.不降低吞吐量敏感型大流量的吞吐量
网络内部的延迟来自路由器内部的排队。 因此,DCTCP尝试使队列变小。 当队列的大小小于K条消息时,它仍然很小。
所提出的算法自适应地缩小TCP拥塞窗口,以使队列保持较小。
对TCP的改进要求修改所有三个组件:路由器,接收器,发送器:
1.当路由器使队列的长度大于K时,将数据包标记为带有经历拥塞(CE)标记。
2.接收器将CE标志流转换为ACK TCP数据包流。 更具体地说,如果当前数据包中的CE标志与前一个不同,则接收方立即发送ACK。 当CE标志不变时,它将发送正常的延迟ACK。 ACK数据包始终包含CE标志的最后一个值。
3.基于发送者的聚集的ECN-Echo分组流来调整拥塞窗口大小。 首先,发送方计算拥塞率(CR)-CE标志之间的指数移动平均值。 DCTCP与CR成比例地缩小窗口大小。 如果CR等于1(每个数据包都有CE标志),则窗口大小将减半,就像TCP一样。
该评估表明,对于短传输,查询延迟明显更好。 对吞吐量敏感的请求的性能并不差。
但是,自2010年以来,有几篇论文对DCTCP进行了回顾和改进。
2013年的“缓解队列振荡:DCTCP的分析和增强”进行了一项实验,发现DCTCP受到实际队列大小的严重振荡的影响。 发生这种情况是因为在带有CE标志的第一个数据包与发送方的反应之间至少存在RTT延迟。 本文建议将单个阈值K分为两个阈值K1 <K <K2,以便在队列大小等于K1时(在经历实际拥塞之前)开始设置CE标志,而在队列大小减小太多之前在CE处停止设置CE标志。
另一篇论文是2015年发布的“针对基于云的数据中多对一通信的早期拥塞反馈和速率调整方案”,其中提出了NewDCTCP,其中包括两项改进:
1.即使拥塞之前到达的数据包也设置CE标志
2.不同的窗口大小调整方案
最新论文之一是2018年6月发布的《用于提高数据中心网络中DCTCP性能的多个拥塞点和拥塞反应机制》,表明该主题仍是最新的,但问题尚未解决。 无论如何,本文结合了双阈值方法并引入了新的思想-拥塞窗口调整。 它考虑了窗口大小更改期间已发送的程序包和已接收的ACK的数量。