传输控制协议(TCP)拥塞控制算法(CCA)管理客户端和服务器之间应发送的数据量,以最大限度地利用可用带宽并避免拥塞。 自成立以来,其他共同国家评估自成立以来就已得到开发,如瓶颈带宽,往返传播时间(TCP BBR)和立方通信。 虽然TCP BBR和Cubic的目标是避免拥塞,但了解其有效性一直是我们工程和研究团队的一项持续使命。
TCP BBR旨在通过将数据包延迟用作指示器而不是数据包丢失来实现更高的吞吐量。 然而,我们之前的研究报告说,BBR在所有病例中的表现都很差。 具体而言,我们的评估得出的结论是,小文件(100KB)的吞吐量几乎没有好处<。 此外,我们观察到低往返时间(RTT)血流的BBR性能比立方差。 最后,BBR的好处仅见于面向客户端的流量,而后台办公室连接(RTT较低,重传可忽略不计)与Cubic的性能更好。
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服务器相比)看到的大量套接字所需的优化和以protobuf格式导出数据的能力有着显著的差异。 敬请期待,我们计划很快推出开放源代码xTCP。
在下图中,我们显示了系统的概览。 xTCP数据是从流式传输到Kafka的所有边缘缓存中大规模收集的。 然后在ClickHouse集群中收集xTCP数据,该集群支持我们的网络数据分析,包括BBR控制器,该控制器可在每个边缘跃点检测性能不佳的前缀。
图1. 使用xTCP和BBR配置推送的数据收集概述。
虽然我们希望保持工作流程的动态性质,但我们还需要在每个入场边缘(POP)选择始终表现不佳的前缀,以避免在短期内在立方和BBR之间发生触发。 如前所述,对于文件大小大于100KB的请求,我们有选择性地激活BBR。 微调的立方流对于小文件性能更好。
BBR控制器使用两个指标来评估每个观察到的客户端前缀的运行状况:
- 占空比:前缀(/24或/56)在第20百分位绩效组中有多长时间?
- Flap Rate:前缀在底部第20百分位数性能组(即状态变化)中出现和消失的频率如何?
然后,该算法会始终检测过去几个小时中性能较差的前缀。 此检测每5分钟运行一次。 虽然每个边缘弹出选择的前缀总数可能在数百个,但我们观察到前缀性能保持相对一致。 同样的前缀被定期选择,而在每一轮新的添加(如下图所示的芝加哥流行音乐)很少。
图2. 每个配置生成轮选择的新前缀数量较低。
如果有,则选择新的前缀以启用BBR,并生成配置,通过验证步骤传递并推送到我们的全局边缘缓存。
性能提升
我们很高兴地向大家报告,在我们的全球边缘启用BBR已显示出显著的性能改进。 我们从xTCP套接字数据中跟踪的一个关键指标是TCP_INFO中报告的传递速率。 由于我们动态启用了性能最差的前缀BBR,因此我们预计更低的百分位数(最差情况)交付率将会提高。
下图显示,一旦启用BBR更改,洛杉矶Pop的交付率就会提高到第5和第10百分位数。
图3. 在BBR改变后,第5百分位数和第10百分位数的分娩率有所改善。
同样,在下图中,我们显示,只要我们在北美的所有POP中动态启用BBR,美国大型住宅ISP的低百分位数交付率就会显著提高(~2倍)。
图4. 在动态启用BBR后,观察到大型住宅ISP的改进。
从TCP-info中提取的传送速率可以很好地估计客户端所看到的性能。 但是,最准确的性能指标是客户端连接的HTTP访问日志中看到的吞吐量,即实际吞吐量。
我们衡量边缘缓存服务器的实际产量。 如下图所示,这一变化导致产品产量增加。 总体而言,第10百分位数的产品生产总值增加了12%。
图5. 第10百分位数的商品生产总值增加了12%。
特别感谢Google的BBR开发团队在BBRv1上的出色工作以及在BBRv2上的持续努力。 我们期待BBRv2,并将在不久的将来继续推动我们的平台的相关变化。 Edgecast的Sergio Ruiz,Joseph Korkames,Joe Lahoud,Juan Bran,Daniel Lockhart,Ben Lovett,Colin Rasor,Mohnish LAD,Muhammad Bashir,Zach Jones和Dave Andrews在开发,测试和部署过程中为这一变革提供了支持。 Edgio工程团队要特别感谢Dave Seddon为开发xTCP工具做出的贡献,该工具为分析提供了支持。
借助动态拥塞控制调整,Edgio客户现在可以为表现不佳的客户自动获得性能提升,并提高盈利性能,从而加快Web交付速度,减少视频流的重新缓冲。