Skip to content

bbr vs kcp 优化http下载性能对比报告

Dengfeng Liu edited this page Apr 25, 2017 · 2 revisions

测试环境

http server端环境

uname -r
4.9.4-1.el7.elrepo.x86_64

cat /proc/sys/net/core/default_qdisc 
fq

cat /proc/sys/net/ipv4/tcp_congestion_control 
bbr

nginx -v
nginx version: nginx/1.10.2

国内比较优质的IDC机房, kcp的server端采用的是xkcptun的xkcp_server

client端环境一

uname -r
3.19.0-25-generic

cat /etc/issue
Ubuntu 14.04.4 LTS \n \l

国内教育网环境,speedtest测试数据下载为100Mbps

client端环境二

 uname -r
2.6.32-042stab108.5

cat /etc/issue
CentOS release 6.9 (Final)
Kernel \r on an \m

国外vps上, ping baidu的延迟为

ping www.baidu.com
PING www.a.shifen.com (14.215.177.37) 56(84) bytes of data.
64 bytes from 14.215.177.37: icmp_seq=2 ttl=50 time=162 ms
64 bytes from 14.215.177.37: icmp_seq=3 ttl=50 time=172 ms
64 bytes from 14.215.177.37: icmp_seq=4 ttl=50 time=159 ms
64 bytes from 14.215.177.37: icmp_seq=5 ttl=50 time=167 ms
64 bytes from 14.215.177.37: icmp_seq=6 ttl=50 time=171 ms
64 bytes from 14.215.177.37: icmp_seq=7 ttl=50 time=163 ms
64 bytes from 14.215.177.37: icmp_seq=8 ttl=50 time=179 ms
64 bytes from 14.215.177.37: icmp_seq=9 ttl=50 time=171 ms
64 bytes from 14.215.177.37: icmp_seq=10 ttl=50 time=174 ms
64 bytes from 14.215.177.37: icmp_seq=11 ttl=50 time=185 ms
64 bytes from 14.215.177.37: icmp_seq=12 ttl=50 time=187 ms

测试方法

http服务器上有一个ubuntu.iso文件,客户端使用wget直接下载该文件和通过xkcptun的client<-->server通道下载该文件

测试结果

在client一的场景下

直接server端下载速率,截图如下:

bbr_http_server_clan

通过xkcptun下载速率,截图如下:

kcp_http_server_clan

在client二的场景下

直接server端下载速率,截图如下:

bbr_http_server_clan

通过xkcptun下载速率,截图如下:

kcp_http_server_clan

结果说明和解读

本次测试没有提交cubic下的测试结果,在client一的情况下cubic的下载速率基本与kcp差不多,但波动比较大,xkcptun和bbr环境下,下载速率bbr完胜,下载稳定性上bbr略优于xkcptun,但基本差不多。

在client二情况下,基本xkcptun完胜bbr,bbr既无速率,也无稳定性可言,原因大家明白的。但如果我们将这种网络环境理解为比较糟糕的网络环境下,会发现,kcp受到的影响会很小,在这种场景下,kcp完胜bbr。