BBR 和 fq:一台小 VPS 上的吞吐对比
新开的机器默认是 cubic 拥塞控制和 fq_codel 队列。对延迟一两百毫秒、偶有丢包的长链路,cubic 一遇丢包就把窗口砍半,单连接很难跑满。
改动
net.core.default_qdisc = fq net.ipv4.tcp_congestion_control = bbr net.ipv4.tcp_slow_start_after_idle = 0 net.ipv4.tcp_rmem = 4096 131072 33554432 net.ipv4.tcp_wmem = 4096 65536 33554432
改完记得 tc qdisc replace dev eth0 root fq,否则已有网卡的队列不会自动换。
结果
| 目标 | cubic | bbr |
|---|---|---|
| 东京 | 8.7 MB/s | 26.5 MB/s |
| 洛杉矶 | 15.4 MB/s | 34.9 MB/s |
| 弗吉尼亚 | 10.7 MB/s | 12.9 MB/s |
都是单连接 curl 下 100 MB 文件,各跑三次取中间值。弗吉尼亚提升不明显,瓶颈大概在对端。
别忘了
连接多的机器还要看 somaxconn、tcp_max_syn_backlog 和文件句柄上限,另见 conntrack 那篇。