kcptun和BBR

心血来潮体验了一把kcptun,从此过上了在线看1080p无压力的幸福生活。

然后又试了一把BBR,生活质量同样也达到了1080p。

kcptun安装配置并不复杂,不过调参挺麻烦的;BBR需要内核版本>=4.9,可以用uname -r查看,配置也还是蛮简单的:

1
2
3
sudo modprobe tcp_bbr
sudo sysctl net.core.default_qdisc=fq
sudo sysctl net.ipv4.tcp_congestion_control=bbr

稍稍解释一下这些命令:

modprobe tcp_bbr载入名为tcp_bbr的内核模块,可以使用命令lsmod | grep bbr来确认是否载入成功。

sysctl net.core.default_qdisc=fq用来配置队列规则(queuing discipline)算法为fqqdisc的算法跟流量控制密切相关,目前默认的是fq_codel,和fq的一个区别是没有实现一个名为pacing的特性,而BBR正好需要这个特性才能正常工作。如果开启了BBR而该选项依然用默认的fq_codel,会导致丢包率增加。在未来的linux 4.13中,fq_codel也将支持pacing。也就是说4.13之后,这条命令就可以不用执行了。

运行sysctl net.ipv4.tcp_available_congestion_control可以查看可用的拥塞控制算法,用sysctl net.ipv4.tcp_congestion_control=bbr选择使用BBR

要注意的是,这些命令改变的是运行中的系统,也就是说重启之后这些配置就没有了。你会发现,sysctl命令后面跟着的那些长长的参数,跟/proc/sys目录有着神奇的对应关系,至于为什么,那就是另一个故事了。

kcptun对比BBR

  • kcptun是双端优化,需要安装一个客户端;BBR是单端优化,只需要服务端开启
  • kcptun以带宽换网速,据说带宽消耗还是蛮可观的;BBR似乎不会特别消耗带宽
  • kcptun若要达到最优效果,需要根据网络状况进行配置,配置项复杂又专业;BBR没啥配置,开启即可
  • 我个人感觉,kcptun比BBR稍微快了那么一点点
  • 两者同时使用,使我产生了生活质量又上升了一点点的错觉