链接
论文The Great Internet TCP Congestion Control Census
源代码链接https://github.com/NUS-SNL/Gordon
摘要:
2016年,谷歌提出并部署了一种名为BBR的新TCP变体。BBR代表了对传统的基于拥塞窗口的拥塞控制的重大背离。BBR不使用损耗作为拥塞信号,而是使用带宽和往返延迟的估计来调节其发送速率。上一次关于TCP变体在互联网上分布的主要研究是在2011年进行的,因此鉴于BBR的最新发展,现在进行新的人口普查是及时的。为此,我们设计并实现了Gordon,这是一种工具,允许我们测量与拥塞控制算法的TCP连接响应中的每个连续RTT相对应的确切拥塞窗口(cwnd)。为了将测量的流量与已知的变体进行比较,我们创建了一个局部瓶颈,在这里我们可以引入各种网络变化,如丢失事件、带宽变化和延迟增加,并通过RTT对所有测量进行归一化。离线分类器用于根据随时间变化的cwnd跟踪来识别TCP变体。
我们的研究结果表明,CUBIC是目前互联网上占主导地位的TCP变体,它部署在Alexa Top 20000列表中约36%的网站上。虽然BBR及其变体BBR G1.1目前以22%的网站份额位居第二,但据估计,它们目前在互联网总流量中的份额将超过40%。我们还发现,Akamai在约6%的Alexa Top 20000网站上部署了一种独特的基于损失不可知率的TCP变体,而且可能还有其他未记录的变体。“野生”TCP变体将来自一个已知的小集合的传统假设不太可能再成立了。我们预测,BBR的某些变体似乎准备取代CUBIC,成为互联网上下一个占主导地位的TCP变体。
论文
构建了一个离线分类器来识别基于随时间变化的cwnd跟踪的TCP变体
三个目的:(i)了解自2011年最后一次测量研究以来,先前确定的变异的分布是如何变化的[4,5];(ii)开发一种方法来识别现有网站中的BBR;以及(iii)确定未记录的TCP变体的比例(如果有的话)
在基于速率的协议不使用cwnd进行速率调节的情况下,我们将跟踪飞行中的未确认数据包作为协议的cwnd。我们设计背后的关键见解是,任何拥塞控制协议最终都必须对不断变化的网络条件做出反应。然后,我们尝试通过离线处理从观察到的cwnd响应中识别TCP变体(参见§3.3)
每cwnd测量15次试验就足以消除负噪声
Gordon模拟了连接不同阶段的丢弃,即当测得的cwnd首次达到40、80和160个以上的数据包时。在cwnd达到80个数据包之后造成数据包丢失可以在这两个问题之间实现良好的权衡。我们将此值称为数据包丢弃阈值。
基于决策树的方法来识别互联网上的变体(见§4.1)
我们通常能够从前30个RTT内的曲线形状识别TCP变体。这些形状是确定的
我们很容易区分基于丢包的算法和基于时延的算法。基于时延的算法在遇到丢包时,cwnd不会降。基于丢包的这类算法,我们怎么进一步区分? 大多数基于损失的拥塞控制算法常见的两个特征——α和β。其中Ci为拥塞避免阶段第i个RTT处的cwnd值。大多数基于损失的拥塞控制算法常见的两个特征——α和β。Ci为拥塞避免阶段第i个RTT处的cwnd值
基于决策树的方法来识别。首先,分为左下图这四类。这四类形状区分比较明显。 然后,我们可以根据下表通过α和β的值进行分类
一旦我们有了αi和β的形状和值,我们就可以通过计算αi的平均值来确定表2中的变量。当然有些算法不能区分开,如表中所示,Gordon无法区分New Reno、CTCP和Illinois和HSTCP以及Vegas和Veno三对算法。
为啥能在接收端测得cwnd:瓶颈链路。我们创建了一个局部瓶颈,在那里我们引入了各种网络变化:丢失事件、带宽变化和延迟增加。