昨天,腾讯TCPA正式发布了,站长、个人、企业都可以免费使用。TCPA是腾讯云内部使用的加速策略,对TCP协议栈进行了参数和代码逻辑的优化,号称比Google BBR加速效果更好,现在开源出来了。本文介绍下什么是TCPA以及如何安装TCPA并开启TCPA加速。
TCPA简介
TCPA是腾讯内部使用的单边拥塞算法,对TCP协议栈进行了参数,代码逻辑层的优化,以达到客户端访问的快速的体验。
这个是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
下面介绍下如何为你的VPS开启TCPA加速。
下载内核以及TCPA安装包
1.下载定制的内核
链接:https://share.weiyun.com/5AeyuFg 密码:d1swc1
2.下载TCPA安装包
链接:https://share.weiyun.com/5RAyh7c 密码:qeetzp
安装TCPA
1.安装内核
rpm –ivh kernel-3.10.0-693.5.2.tcpa06.tl2.x86_64.rpm reboot //必须重启才能生效。
2.解压TCPA
tar jxvf tcpa_packets_180619_1151.tar.bz2 cd tcpa_packets sh install.sh //会安装到/usr/local/storage/tcpav2 下面。 cd /usr/local/storage/tcpav2
3.启用TCPA(默认只加速80,443,8080这3个端口)
sh start.sh
TCPA加速效果
这里贴一下TCPA和BBR的博睿测试结果。
同机房的2台OC机器,博睿上640KB小文件的测试结果:
参考文章: