Home 技术文章 通过动态拥塞控制调优提高网络性能
Applications

通过动态拥塞控制调优提高网络性能

About The Author

Outline

传输控制协议(TCP)拥塞控制算法(CCA)管理客户端和服务器之间应发送的数据量,以最大限度地利用可用带宽并避免拥塞。 自成立以来,其他的CCA,如瓶颈带宽,往返传播时间(TCP BBR)和立方。 虽然TCP BBR和CUBIL旨在实现拥塞避免,但了解其有效性一直是我们工程和研究团队的一项持续任务。

TCP BBR旨在通过使用数据包延迟来代替数据包丢失来实现更高的吞吐量。 然而,我们之前的研究报告,BBR在所有情况下都表现不佳。 具体而言,我们的评估得出结论,小文件的吞吐量几乎没有任何益处(100KB)<。 此外,我们观察到往返时间较短的流量(RTT)和低重传的BBR性能比立方差。 最后,BBR的优势仅适用于面向客户端的流量,而后台连接(低RTT和可忽略的重传)在CUBAR中表现更好。

EdgeCast (现称Edgio)是一款全球多租户 CDN,可为许多大型(VOD和直播)视频流客户提供 Web流量。 鉴于对一个客户使用BBR进行拥塞控制调谐可能会对另一个客户的性能产生不利影响,并且在某些情况下,全面启用可能导致性能下降,因此我们实施了一种机制来检测BBR提供改进性能的情况,并可为所有CDN客户动态启用它。 因此,我们为所有客户提供了一项全新的动态拥塞控制调谐功能。

深入了解方法

对于这样一个动态系统来说,最重要的输入或许是为它提供动力的数据。 我们的动态拥塞控制调优机制位于我们的大规模套接字数据收集之上,它从所有边缘缓存中导出TCP (xTCP)套接字性能数据。 具体来说,它通过NetLink从Linux内核的tcp_info结构中提取信息,并通过Kafka将其传输到ClickHouse群集中。 大规模拥有此插槽性能数据使我们能够以非常高的粒度监控与高速缓存服务器的连接的性能。 xTCP已被证明是许多CDN优化的强大工具。 例如,我们最近改变了IPv6的初始拥塞窗口,并使用xTCP监控性能增益。

xTCP与Google Measurement Lab (M-Lab)的TCP-info工具的工作类似,其显著区别在于需要进行优化来管理我们的边缘缓存看到的大量套接字(与M-Lab服务器相比),以及能够以原生虫格式导出数据。 敬请关注,我们计划很快开放源代码xTCP。

在下图中,我们显示了系统的概述。 xTCP数据是从我们所有流式传输到Kafka的边缘缓存中大规模收集的。 然后,将xTCP数据收集到ClickHouse群集中,该群集支持我们的网络数据分析,包括BBR控制器,该控制器检测每个边缘POP处的性能不佳前缀。

图1 使用xTCP和BBR配置推送的数据收集概述。

虽然我们希望保持工作流的动态性质,但我们还需要在每个存在点(POP)选择始终如一的性能不佳的前缀,以避免在短时间内在立方体和BBR之间进行翻转。 而且,如前所述,对于文件大小大于100KB的请求,我们选择性地激活BBR。 微调的立方流可更好地处理小文件。

BBR控制器使用两个度量来评估每个观察到的客户端前缀的运行状况:

  • 占空比:前缀(/24或/56)在第20百分位数绩效组中的时长是多少?
  • 翻盖率:前缀出现和从第20百分位数表现组中消失的频率如何,即状态变化?

然后,该算法会始终如一地检测过去几个小时内性能较差的前缀。 此检测每5分钟运行一次。 虽然每个边缘弹出选择的前缀总数可能为数百个,但我们观察到前缀性能仍然相对一致。 同样的前缀被定期选择,每一轮的新添加(如下图所示的芝加哥流行音乐)非常少。

图2 每个配置生成轮选择的新前缀数较低。

如果有,将选择新的前缀以启用BBR,并生成配置,通过验证步骤传递并在全局范围内推送到我们的边缘缓存。

性能提升

我们很高兴地报告,在我们的全球边缘实施BBR已显示出相当大的性能改进。 我们从xTCP套接字数据跟踪的一个关键指标是tcp_info中报告的交付率。 由于我们为性能最差的前缀动态启用BBR,因此我们预计我们的较低百分位数(最坏情况)交付率将有所提高。

下图显示了在启用BBR变化后,洛杉矶流行音乐公司的第5和第10百分位分娩率的提高。

图3 BBR改变后,第5和第10百分位数的分娩率有所改善。

同样,在下图中,只要我们在所有北美POP中动态启用BBR,我们就会发现美国大型住宅ISP的较低百分比交付率有显著改善(~2倍)。

图4 在动态启用BBR后,大型住宅ISP的性能得到了改善。

从TCP信息中提取的传输速率可以很好地估计客户端的性能。 但是,最准确的性能指标是在客户端连接的HTTP访问日志中看到的吞吐量,即吞吐量。

我们测量来自边缘缓存服务器的吞吐量。 如下图所示,这一变化导致了产量的增加。 整体而言,第10百分位数的良好产出增加了12%。

图5 第10百分位数的净出货量增加了12%。

特别感谢Google的BBR开发团队在BBRv1上所做的出色工作以及他们在BBRv2上的持续努力 我们期待访问BBRv2,并将继续在短期内对我们的平台进行相关更改。 感谢Sergio Ruiz,Joseph Korkames,Joe Lahoud,Juan Bran,Daniel Lockhart, Ben Lovett, Colin Rasor, Mohnish Lad, Muhammad Bashir, Zach Jones, 以及Edgecast的Dave Andrews,他在开发,测试和推出过程中支持了这一变革。 Edgio工程团队特别要感谢Dave Seddon为开发xTCP工具所做的贡献,该工具为大部分分析提供了支持。

通过动态拥塞控制调优,Edgio客户现在可以自动提高其表现不佳的客户机的性能,并提高其底线性能,从而 加快Web交付 并减少视频流的重新缓冲

Tags

Just For You