php并发丢包,TCP BBR对网络丢包的改善

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

76cfe5429c47012f6ec1b5f695364c43.png

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 ,还是很快的。

bb3683281ffcb56abd9dd6bfd90b7468.png

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

8cc2ff01f7a9d4cfc8e4c5838ed5fba7.png

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

29922bafd48819b8fc53946f8ec3cf58.png

开启 BBR 的结果

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

24d0929476d8eeb6a4b40006c6609910.png

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

fa93354878ad6bf91847f59bd4018ed6.png

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

d9747aaee689c27ff613a921f528f9f3.png

结果总结

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值