网上有不少BBR版本和测试文章,到底该选择哪个BBR是挺纠结。测试文章也都不严谨,弄个国外VPS+一键bbr脚本+一键测速脚本完事,这样测试结果肯定不准。VPS是虚拟机和共享带宽,本身性能就受到物理机资源分配的波动影响,以及VPS到本机这么远的不可控网络链接;一键测速脚本是点对点传输,而实际应用不管是网站还是提供什么服务,都是一对多,场景差别就很大。
较科学专业的文章,有:
《[译] [论文] BBR:基于拥塞(而非丢包)的拥塞控制(ACM, 2017)》https://arthurchiao.art/blog/bbr-paper-zh《从流量控制算法谈网络优化 – 从 CUBIC 到 BBRv2 算法》https://aws.amazon.com/cn/blogs/china/talking-about-network-optimization-from-the-flow-control-algorithm/《测试 TCP BBR 对网络丢包的改善效果》https://blog.inkuang.com/2020/322/拥塞控制算法cubiclinux自带默认拥塞控制算法。
BBRBBR(Bottleneck Bandwidth and Round-trip propagation time),是谷歌开发的一种TCP拥塞控制算法。简单粗暴的理解就是数据流量的交通管理:当公路不再塞车的时候,每辆车自然就能保持较快的车速了。
BBR2谷歌未正式发布,仍处于预览版。TCP BBR v2 Alpha/Preview Release: https://github.com/google/bbr/tree/v2alpha
随着BBRv2的出现,Dropbox 已经在其Dropbox Edge Network上进行了试用。在这篇博客中深入讨论了BBRv2的实践,值得一读。
Evaluating BBRv2 on the Dropbox Edge Network
这篇文章的结论对于BBRv2有很高的评价,特摘录出来:
“在我们的测试中,BBRv2显示了以下特性:
对于网速较低的用户来说,带宽可以与CUBIC媲美。对于网速较高的用户来说,带宽可以与BBRv1媲美。丢包率比BBRv1低4倍;但仍然比CUBIC高2倍。传输中的数据比BBRv1低3倍;但略低于CUBIC。RTTs较BBRv1低;但仍然比CUBIC高。与BBRv1相比,RTT具有更高的公平性。总的来说,BBRv2在BBRv1基础上有了很大的改进,而且在需要更高带宽的情况下,它更接近于成为Reno/CUBIC的完全替代品。添加实验性的ECN支持,我们甚至可以看到他可以成为Datacenter TCP (DCTCP)的完全替代者。”
https://aws.amazon.com/cn/blogs/china/talking-about-network-optimization-from-the-flow-control-algorithm/BBRPLUSCSDN 网友 dog250 针对原版 BBR 进行修改而来的加强版。他的github最后更新是2021.08.21。
队列算法pfifo_fastlinux系统自带默认先进先出队列算法。
CAKE"CAKE (Common Applications Kept Enhanced) is a shaping queue discipline which uses both AQM and FQ. It combines COBALT, which is an AQM algorithm combining Codel and BLUE, a shaper which operates in deficit mode, and a variant of DRR for flow isolation.
https://portal.productboard.com/4khnb1asz4x5zdcj5edstax8/c/31-cake-and-fq-pie“CAKE(Common Applications Kept Enhanced)是一种同时使用 AQM 和 FQ 的整形队列规则。它结合了 COBALT,COBALT 是一种结合了 Codel 和 BLUE 的 AQM 算法,一种以赤字模式运行的整形器,以及一种用于流隔离的 DRR 变体.
cake适合用在路由器上,会尽量抢占宽带,也会用队列系统帮路由器上的应用分配宽带,比如平衡下载与流媒体。
https://la4ji.blogspot.com/2020/12/xamod58-cakefq-pie.htmlPIE"Proportional Integral controller-Enhanced (PIE) is a control theoretic active queue management scheme. It is based on the proportional integral controller but aims to control delay.
The main design goals are
Low latency controlHigh link utilizationSimple implementationGuaranteed stability and fast responsiveness" https://portal.productboard.com/4khnb1asz4x5zdcj5edstax8/c/31-cake-and-fq-pie"Proportional Integral controller-Enhanced (PIE) 是一种控制理论主动队列管理方案。它基于比例积分控制器,但旨在控制延迟。主要设计目标是低延迟控制链路利用率高简单实现保证稳定性和快速响应”
FQ-PIEFQ-PIE (Flow Queuing with Proportional Integral controller Enhanced) is a queuing discipline that combines Flow Queuing with the PIE AQM scheme. FQ-PIE uses a Jenkins hash function to classify incoming packets into different flows and is used to provide a fair share of the bandwidth to all the flows using the qdisc. Each such flow is managed by the PIE algorithm.
https://man7.org/linux/man-pages/man8/tc-fq_pie.8.htmlFQ-PIE(Flow Queuing with Proportional Integral controller Enhanced)是一种将流队列与 PIE AQM 方案相结合的排队规则。 FQ-PIE 使用 Jenkins 哈希函数将传入的数据包分类到不同的流中,并用于为使用 qdisc 的所有流提供公平的带宽份额。每个这样的流都由 PIE 算法管理。
到底选哪个追求稳定:BBR+FQ
追求性能:BBR2+FQ_PIE