腾讯单边拥塞算法TCPA(TCP黑科技加速)

  • 内容
  • 相关

腾讯内部使用的TCPA,由腾讯TEG操作系统组研发,基于RHEL7.4源码,定制化的TCPA。最早是通过https://linux.qq.com/?p=238 发布了,现在官方已经删除了!

1.1、TEG团队介绍

腾讯TEG操作系统组, 2010年成立,专业的内核团队,维护研发腾讯内部linux操作系统tlinux, 保证百万级server高效稳定运行,为腾讯业务提供有力支撑。

1.2、TCPA优势和劣势

优势:TCPA启用后,小文件比BBR能提升40%以上,大文件比BBR能提升 5% ~ 10%。TCPA的优势在于小文件的性能提升,程序也默认仅加速网站端口(80/443/8080),所以更适用于建站场景。

劣势:CentOS单一系统、源程序未开源、加速端口需要手工指定


1.3、TCPA 原理

腾讯单边拥塞算法TCPA(TCP黑科技加速)

上图是 TCPA,发送数据包和接收应答包后的处理逻辑图。一共包括 9 个模块。应用程序通过 Sendfile,Write 等发送的后,交由内核的数据包构建模块来处理,最终生成一个个 SKB 并放入发送队列中。平缓发送模块,根据拥塞控制模块所产生的发送速度/发送窗口值来平缓地将这些数据(无论是新数据,还是重传数据)发送到网络中,本身并不会决策发送的速率,只会按照给定的速度/发送窗口来执行。
超时模块用来决策哪些数据包超时,并重传,最终会交给平缓发送模块来发送。Probe 探测模块,是依据网络的特定需要,构造一些数据包来探测网络的质量情况。发送是交给平缓发送模块来发送,接收到的应答包,会将 Probe 应答包交给 Probe 模块来处理。
收到应答包后,如果有 SACK 则单独处理 SACK,SACK 的处理逻辑比较复杂,需要知道哪些数据包被应答,哪些未被应答,需要对重传队列进行标记。并且也会根据 SACK 中的应答来判断哪些报文丢包了,当前网络中的 RTT 值变化等。这里会给丢包检测模块,拥塞控制模块提供判断信息。丢包检测模块,用来判断哪些数据包已经丢弃,比如快速重传,RACK 等算法。这里只去标记丢弃的报文,具体的重传由重传包处理模块来执行。
拥塞控制算法,用来判断当前网络链接情况,并据此来决定当前发送的速度和发送窗口值。不同的拥塞算法所依赖的判断信息不同。 窗口的增减均由这里来判断。这里会依赖 SACK 模块,丢包检测模块,RTO 超时模块,Probe 模块等给予关键信息。重传数据包模块和新数据发送模块相对比较简单,将数据整理好后,交给平缓发送模块来发送。
总的来说,TCPA 的修改不仅仅是对拥塞算法的修改,也对收发包的整个逻辑进行了重构。对于系统已有的功能,我们额外还提供了可调整的参数接口,供使用。比如小表中列举了部分调整的参数:


cat >> /etc/sysctl.conf << TEMPEOF
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
TEMPEOF

运行下面命令,修改配置生效
sysctl -p

2、测试环境

2.1、TCPA环境要求

系统:centos7

分区:/boot分区≥500M(太小会安装失败,这是因为分区容量太少,没空间自定义安装内核)

内核:默认内核版本

其他包:升级到最新包


2.2、检查当前 CentOS 信息

修改root密码


2.2、检查当前 CentOS 信息

修改root密码

passwd

检查当前 CentOS 系统内核版本

cat /etc/redhat-release

查看当前/boot分区,一般vps都只有一个分区

df -h

可以看出当前系统为 CentOS 7.*,系统内核版本

uname-sr

查看vps IP

ip addr show

运行 yum 命令升级

yum clean all

yum update -y

yum install wget -y



2.3、安装docker环境、部署测试应用

配置docker 容器环境

curl -sSL https://get.docker.com/ | sh

sudo systemctl enable docker.service

sudo systemctl start docker.service



配置容器web管理界面

docker run -d -p 9000:9000 --label owner=portainer \

--restart=always --name=ui \

--label owner=portainer \

-v /var/run/docker.sock:/var/run/docker.sock \

lihaixin/portainer -l owner=portainer



配置speedtest测试工具

docker run -d --name speedtest --restart=always -p 0.0.0.0:80:80 lihaixin/speedtest

docker run -d --name speedtest --restart=always -p 0.0.0.0:46666:80 lihaixin/speedtest

docker run -d --name speedtest --restart=always -p 0.0.0.0:46667:80 lihaixin/speedtest


访问:http://ip:port进行测试

腾讯单边拥塞算法TCPA(TCP黑科技加速)


3、使用方法
3.1、手工安装
安装必要依赖:
yum -y install net-tools

更换系统内核
wget http://down.08mb.com/tcp_opz/tcpa/kernel-3.10.0-693.5.2.tcpa06.tl2.x86_64.rpm
rpm -ivh kernel-3.10.0-693.5.2.tcpa06.tl2.x86_64.rpm --force
reboot

下载安装主程序:
wget http://down.08mb.com/tcp_opz/tcpa/tcpa_packets_180619_1151.tar.gz
tar xf tcpa_packets_180619_1151.tar.gz
cd tcpa_packets
sh install.sh

TCPA(默认只加速80,443,8080这3个端口),如需新增加速端口:
vi /usr/local/storage/tcpav2/start.sh
第46行后添加:
$BINDIR/$CTLAPP access add tip $ip tport 自定义端口

启动tcpa拥塞算法:
cd /usr/local/storage/tcpav2
sh start.sh

查看是否开启成功
lsmod|grep tcpa
看到类似下面内容,代表成功安装
tcpa_engine           2242490

卸载方法:
cd /usr/local/storage/tcpav2
sh uninstall.sh
3.2、自动安装
TCPA一键包:
wget http://down.08mb.com/tcp_opz/tcpa/tcpa.sh
sh tcpa.sh

使用说明:一键包会自动安装依赖(仅epel-release、net-tools)和内核并重启,重启后安装自动完成无需人工干预。
TCPA(默认只加速80,443,8080这3个端口),如需新增加速端口:
vi /usr/local/storage/tcpav2/start.sh
第46行后添加:
$BINDIR/$CTLAPP access add tip $ip tport 自定义端口
类似下面这样添加444端口


腾讯单边拥塞算法TCPA(TCP黑科技加速)


启动tcpa:
cd /usr/local/storage/tcpav2
sh start.sh

卸载tcpa:
cd /usr/local/storage/tcpav2
sh uninstall.sh
3.3、博睿测试结果(官方提供)
同机房的2台OC机器,博睿上640KB小文件的测试结果:

腾讯单边拥塞算法TCPA(TCP黑科技加速)

腾讯单边拥塞算法TCPA(TCP黑科技加速)

海外机房数据传输:
从美国弗吉尼亚拷贝30MB的数据到中国天津

网络延时高(平均330ms), 带宽上限是10Mb/s。
传输多次求平均的平均传输速度对比(单位:KB/s)。

腾讯单边拥塞算法TCPA(TCP黑科技加速)

4、再次测试
4.1、访问http://ip,查看速度

腾讯单边拥塞算法TCPA(TCP黑科技加速)

开启tcpa测试速度比未开启之前速度提升差不多20倍。





作者信息
头像
描述: 一起用互联网帮助更多人

本文标签:

本文链接:腾讯单边拥塞算法TCPA(TCP黑科技加速) - http://www.go176.net/post-875.html

剑客网,一起用互联网帮助更多人