您好,欢迎访问本站!登录后台查看权限

TCP BBR对网络丢包的改善

笔记 俎天润 2020-03-23 60 次浏览 2个评论

TCP BBR 出来已经有挺长一段时间了,都说它可以减少 TCP 连接的延迟、改善存在丢包的网络环境速度,虽然我自己一直在用,但由于从来没有测试过,所以对它具体能发挥多大的作用还是存疑的。

88594cfb1cccb17a3de6b955236c8510.jpg

TC命令可以模拟网络延迟和丢包,于是决定测试一下 BBR 对网络丢包的改善效果。

测试环境

为了获得充足的网速以便能够看到明显效果,同时排除其他环境因素的影响,本次测试在本地回环地址 127.0.0.1 上进行。输入 ifconfig 可以查看网卡情况,我这里绑定地址 127.0.0.1 的网卡名为 lo 。

在本地起一个监听 127.0.0.1 的 http 服务(我这里是用 caddy 实现的),然后在其中放一个比较大的文件(我这里是一个 600 多兆的系统镜像),后续将通过 wget 下载该文件来测试网络速度。

为避免硬盘速度瓶颈,这里直接将文件 wget 到内存中去(使用内存设备文件 /dev/shm )

模拟丢包网络环境

使用 tc 命令模拟所需要的网络环境,该命令的具体用法自己输入 man tc 查看即可。

执行以下命令可以在网卡 lo 上模拟 10% 的丢包:

tc qdisc add dev lo root netem loss 10%

要恢复正常情况的话执行以下命令即可:

tc qdisc del root dev lo

测试过程及结果

先进入内存设备文件:

cd /dev/shm

使用以下命令从回环地址 127.0.0.1 的 http 服务中下载文件进行测速:

wget http://127.0.0.1:8080/debian-10.3.0-amd64-xfce-CD-1.iso

不开启 BBR 的结果

不开启 BBR ,在正常(无丢包)网络环境下的测试结果如下图,640M 的文件花了 0.7s ,还是很快的。

22-1-1.png


不开启 BBR ,在 1% 丢包网络环境下的测试结果如下图,640M 的文件花了 5.5s 下完,相比正常情况下的网络速度有一定程度降低。

22-1-2.png


不开启 BBR ,在 10% 丢包网络环境下的测试结果如下图,可以看到同样 640M 的文件下载花了 50s ,相比正常情况下网络速度发生了大幅度降低。

22-1-3.png


开启 BBR 的结果

开启 BBR ,在正常(无丢包)网络环境下的测试结果如下图,640M 的文件同样花了 0.7s 下完,跟不开启 BBR 时的速度没有差别。

22-1-4.png


开启 BBR ,在 1% 丢包网络环境下的测试结果如下图,640M 的文件还是花了 0.7s 下完,跟正常网络环境下的速度几乎一样,这相比同样 1% 丢包网络环境但不开启 BBR 时的 5.5s 有很大的提升。

22-1-5.png


开启 BBR ,在 10% 丢包网络环境下的测试结果如下图,可以看到同样 640M 的文件下载花了 7.5s ,这虽然没有前面跟正常网络环境下速度几乎一样那么恐怖,但相比同样 10% 丢包网络环境不开启 BBR 时的 50s 还是有很大程度提升的。

22-1-6.png



结果总结

上面的测试通过一个简单的场景来验证了 TCP BBR 对于丢包情况下网络速度的优化。从结果中可以看到 TCP BBR 对于网络丢包的改善效果十分显著,在少量丢包的情况下甚至可以做到与正常网络环境速度无异,虽然在大量丢包时速度仍会下降,但跟不开启 BBR 的情况相比还是有很大的提升(比不开启 BBR 的情况速度降得更少)。

所以,如果你的机器、网络环境存在丢包导致跑不满带宽的话,不妨开启 BBR 试一下吧!


已有 60 位网友参与,快来吐槽:

1#梦魂  2020-03-25 15:41:27 回复该评论
BBR好像不支持某些系统,我就用锐速了。
1#俎天润  2020-04-02 00:46:21 回复该评论
锐速也不错 (=^▽^=)

发表评论