腾讯内核团队发布新 TCP 拥塞控制算法 TCPA,比 BBR 提升 40% 以上,附安装方法

腾讯内核团队近日发布了他们内部的 TCPA 拥塞控制算法。对比 BBR 算法,效果有所提升,尤其是小文件的速度上,提升达到了 40% 以上,对于大文件,提升也有 5% 到 10% 左右。本文综合整理腾讯内核团队的博客文章,原文请参考《TCPA和BBR测试对比报告》以及《TCPA正式发布公告》。

下面是部分原文。

一、TCPA 和 BBR 测试对比

公司内部针对部分业务的下载场景,对TCP协议栈就行了参数,代码逻辑层的优化,以达到客户端访问的快速的体验。在研发过程中,Google发布了BBR,并把它集成到4.9内核中。测试时,最新的内核是4.15. 为了评估TCPA版本跟BBR的性能对比,我们使用了4.15版本的BBR和我们正式发布的TCPA来进行性能对比。本测试报告,主要是通过第三方的博睿来评估在不同文件大小下,TCPA和BBR之间的性能差异。

测试结果

测试任务第一次测试第二次测试2次测试平均值纵向性能对比
640KB任务TCPA-电信2047.4012183.0342115.218
TCP-电信1450.6361383.6741417.15549.26%
BBR-电信1448.1551536.5171492.33641.74%
8MB任务TCPA-电信2570.4222552.9812561.702
TCP电信1768.4581626.9091697.68450.89%
BBR-电信2295.642358.6462327.14310.08%
25MB任务TCPA-电信2769.4122713.6322741.522
TCP电信1876.6741915.5491896.11244.59%
BBR-电信2585.82590.2052588.0035.93%

说明:

  • 第一轮测试(详细数据见1)和第二轮测试(详细数据见5.2)的参数配置相同。因此取其平均值作为测试结果。
  • “纵向性能对比”是指,BBR默认配置,TCPA启用后默认配置时,“2次测试平均值”中, TCPA相比TCP,TCPA相比BBR的测试结果。

测试结论:

1.BBR算法相比标准的TCP的cubic算法,性能提升明显。小文件差异不大;大文件的下载性能明显,约35%左右。

2.TCPA的启用,外加系统参数优化后, 大小文件均比标准的TCP提升40%以上。

3.TCPA的启用,外加系统参数优化后,小文件比BBR能提升40%以上,大文件比BBR能提升5%~10%。

TCPA简介

这个是TCPA,发送数据包和接收应答包后的处理逻辑图。一共包括9个模块。应用程序通过sendfile,write等发送的后,交由内核的数据包构建模块来处理,最终生成一个个SKB并放入发送队列中。平缓发送模块,根据拥塞控制模块所产生的发送速度/发送窗口值来平缓地将这些数据(无论是新数据,还是重传数据)发送到网络中,本身并不会决策发送的速率,只会按照给定的速度/发送窗口来执行。超时模块用来决策哪些数据包超时,并重传,最终会交给平缓发送模块来发送。Probe探测模块,是依据网络的特定需要,构造一些数据包来探测网络的质量情况。发送是交给平缓发送模块来发送,接收到的应答包,会将Probe应答包交给Probe模块来处理。收到应答包后,如果有SACK则单独处理SACK,SACK的处理逻辑比较复杂,需要知道哪些数据包被应答,哪些未被应答,需要对重传队列进行标记。并且也会根据sack中的应答来判断哪些报文丢包了,当前网络中的RTT值变化等。这里会给丢包检测模块,拥塞控制模块提供判断信息。

丢包检测模块,用来判断哪些数据包已经丢弃,比如快速重传,RACK等算法。这里只去标记丢弃的报文,具体的重传由重传包处理模块来执行。

拥塞控制算法,用来判断当前网络链接情况,并据此来决定当前发送的速度和发送窗口值。不同的拥塞算法所依赖的判断信息不同。 窗口的增减均由这里来判断。这里会依赖SACK模块,丢包检测模块,RTO超时模块,probe模块等给予关键信息。

重传数据包模块和新数据发送模块相对比较简单,将数据整理好后,交给平缓发送模块来发送。

所以,总的来说,TCPA的修改不仅仅是对拥塞算法的修改,也对收发包的整个逻辑进行了重构。对于系统已有的功能,我们额外还提供了可调整的参数接口,供使用。比如小表中列举了部分调整的参数:

net.core.wmem_max = 3276800

net.ipv4.tcp_fack = 0

net.ipv4.tcp_init_cwnd = 10

net.ipv4.tcp_loss_init_cwnd = 1

net.ipv4.tcp_mem = 379479      505972  758958

net.ipv4.tcp_metrics_minrtt = 0

net.ipv4.tcp_rto_max = 120

net.ipv4.tcp_rto_min = 200

net.ipv4.tcp_timestamps = 1

net.ipv4.tcp_wmem = 4096       16384   4194304

更多测试结果,参考《TCPA和BBR测试对比报告》。

二、TCPA 安装方法

腾讯内部使用的TCPA,现在OPEN出来。

基于RHEL7.4源码,定制化的TCPA。

站长、个人、企业均可以免费使用,对,完全免费,免费,免费!

一.下载体验地址:

1.定制的内核

链接:https://share.weiyun.com/5AeyuFg 密码:d1swc1

2.TCPA安装包

链接:https://share.weiyun.com/5RAyh7c 密码:qeetzp

欢迎试用,使用疑问请联系davidshan@tencent.com

二.使用方法:

  1. 安装内核

rpm –ivh kernel-3.10.0-693.5.2.tcpa06.tl2.x86_64.rpm

reboot //必须重启才能生效。

  1. 解压TCPA

tar jxvf tcpa_packets_180619_1151.tar.bz2

cd tcpa_packets

sh install.sh //会安装到/usr/local/storage/tcpav2 下面。

cd /usr/local/storage/tcpav2

  1. 启用TCPA(默认只加速80,443,8080这3个端口)

sh start.sh

更多详情,参考《TCPA正式发布公告》。

本站暂未亲自测试,这两天有时间会亲自安装测试一下。

赞(2)
未经允许不得转载:便宜VPS网 » 腾讯内核团队发布新 TCP 拥塞控制算法 TCPA,比 BBR 提升 40% 以上,附安装方法

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址