树莓派启用BBR拥塞控制算法

更新记录

  • 20170119 初次成文

为什么有这篇文章

BBR不用多介绍了吧,十二月份最火的名词之一。Linux 4.9内核版本正式启用了这个功能,其拥有在高延迟网络下不菲的性能,知乎上的大牛已经详细的评测了这一特性传送门,不过raspbian官方只是将其作为一个实验性特征,开始并没有加入rpi-4.9分支,不过在众多树莓派爱好者的邀请下,raspbian开发人员于三天前正式加入了这个功能。

编译

之前详细写过一篇树莓派编译内核的文章升级传送门,想升级内核的同学可以看一下,注意一下我用的是树莓派3代,树莓派1代升级操作略有差别,使用树莓派1代的同学请看相关的官方文档,由于树莓派性能有限,采用交叉编译能节省一定时间。宿主机的配置如下

git clone -b rpi-4.9.y --depth=1 https://github.com/raspberrypi/linux
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2709_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs

git clone较慢的话建议使用梯子,多核处理器make-j参数开启多线程编译,E3 1235开了8个线程之后大约15分钟编译完。

编译后的文件我已经打包好了,不想编译的同学可以直接使用,注意复制和移动时相对目录的正确性,替换boot分区的kernel7.imgdts/*,还有将4.9.4-v7+内核模块移动至/lib/modules/。重要的事情说三遍,升级之前注意备份boot分区,升级之前注意备份boot分区,升级之前注意备份boot分区。

wget https://coding.net/u/sfantree/p/self_use_OSS/git/raw/master/have_complined_rasp_software/bbr.tgz

安装

把编译好的内核镜像,模块以及启动文件都移动到树莓派上。然后进行重启

screenfetch工具查看内核版本是否升级成功

6.png

启用bbr
sudo sysctl net.ipv4.tcp_congestion_control=bbr

查看bbr模块是否加载

lsmod | grep bbr

一个不靠谱的测试

简单的测试了一下bbr的性能,在严重干扰的wifi网络下进行100M文件传输,传输方式为sftp

拥塞控制为cubic的速度

拥塞控制为bbr的速度

虽然这个测试不严谨,截图也只是个人估计出的平均速度。评测终归评测,真正的性能提升还得实际体验来证明。

附带一份github上网友实测记录

144P到1080P的提升已经相当惊艳了

树莓派启用BBR拥塞控制算法》上有4条评论

  1. 路人甲

    20170705版的raspbian,是不是不用编译内核了?
    pi@Raspberrypi:~ $ uname -r
    4.9.35-v7+
    pi@Raspberrypi:~ $ sudo sysctl net.ipv4.tcp_congestion_control=bbr
    net.ipv4.tcp_congestion_control = bbr
    pi@Raspberrypi:~ $ lsmod | grep bbr
    tcp_bbr 6366 0

    回复
  2. 蓝白相间

    编译一个适合安卓使用的版本是否可行呢?在这个WiFi干扰日益严重的当下,一台使用BBR的Android或许会出乎预料的优秀

    回复
    1. popy32 文章作者

      你想法不错不过首先wifi干扰是物理层,靠上面的传输层优化治标不治本,其次自己编译貌似android8.1也是3.10的内核,bbr最低内核版本是4.9,再者谷歌是bbr的源码贡献者,也许类似的思路早就用在android上

      尽量用5ghz的WIFI,主路由一分钱一分货,尽量用思科等大厂原固件(rtos实时系统一些闭源驱动或硬件NAT刷openwrt会损失很大性能),多AP布局,桥接尽量有线(电力猫现在性能也比无线好)

      回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注