根据部分业务的下载场景,公司在参数和代码逻辑层方面对TCP协议栈进行了优化,以实现客户端访问的快速体验。在研发过程中,谷歌发布了BBR,并将其集成到4.9内核中。测试时,最新的内核是4.15。为了评估TCPA版本和BBR之间的性能比较,我们使用BBR版本4.15和我们正式发布的TCPA进行性能比较。本测试报告主要通过第三方博瑞评估TCPA和BBR在不同文件大小下的性能差异。
测试结果描述:
测试结论:
1.与标准TCP立方算法相比,BBR算法具有明显的性能提升。小档案差别不大;大文件下载性能明显,35%左右。
2.2之后。启用TCPA并优化系统参数后,文件大小比标准TCP增加了40%以上。
3.3后。启用TCPA并优化系统参数,与BBR相比,小文件可提升40%以上,大文件可提升5%~10%。
TCPA简介这是TCPA,发送数据包和接收响应数据包后的处理逻辑图。总共有9个模块。通过sendfile、write等发送应用程序后。,交给内核的包构建模块处理,最后生成SKB,放入发送队列。温和发送模块根据拥塞控制模块生成的发送速度/发送窗口值,将这些数据(无论是新数据还是重传数据)温和地发送到网络。它本身并不决定发送速度,只是根据给定的速度/发送窗口来执行。超时模块用来决定哪些包超时,重传,最后发送到温柔发送模块。探针检测模块根据网络的具体需求,构造一些数据包来检测网络的质量。发送发送到温柔发送模块,收到的回复包会发送到探针模块进行处理。收到响应包后,如果有SACK,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=379479505972758958
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=4096163844194304
测试方案使用第三方博瑞进行测试。总共进行了两轮测试。首测时段为12.9日0点至12.11日0点,持续两天。第二次测试时段为12.120:00至12.140:00。
安装后,TCPA安装包将使用默认配置进行测试。最新的内核BBR和标准内核都用默认内核的配置进行了测试。
三台服务器属于同一个机房,配置国家电信(服务器属于电信运营商)测试任务进行测试。
详细的测试任务名称和测试URL如下。
测试时间:12.9日0点至12.11日0点,共两天。
对于小文件(小于640KB),BBR基本上和标准TCP性能相当;TCPA至少比BBR高40%。
对于大文件(大于8MB),BBR相应标准的TCP性能明显提高了30%左右。而TCPA的表现更高,比BBR高7%~11%。
博瑞成绩截图:
静态下载测试(第二轮)测试时间:12.12日0点至12.14日0点,共两天。
对于小文件(小于640KB),BBR比标准TCP略好,大约好10%。TCPA至少比BBR高40%。
对于大文件(大于8MB),BBR相应标准的TCP性能明显提高了30%左右。TCPA的表现较高,比BBR高4%~8%。
博瑞成绩截图:
附录 1.测试环境(注:这三台服务器属于同一个IDC机房)
2.bbr的环境配置(1)添加配置cat/etc/sysctl.conf
net.core.default_qdisc=fq
net.IPv4.TCP_拥塞_控制=bbr
(2)执行sysctl–p/etc/sysctl.conf。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)