漫话拥塞控制:BBR 是个单流模型
概要(便于检索主题):单流,多流收敛,probe buffer 挤压带宽,maxbw-filter wnd。
我曾经经常说 BBR 是个单流模型,而不是多流收敛模型,也做过不少评论,最近在复听 IETF 的大会,在 IETF100-ICCRG-20171113-1330(20:40’ 开始) 找到个正式说法,2017 年 ICCRG 大会,论文在这里:Experimental evaluation of BBR congestion control。
简单截个图,然后评论几句:

Works well if no congestion present 这句话非常讽刺。
关于 multiple flows 行为,见下图:

大 buffer 下,RTT 越大,侵占性越强,小 buffer 下,丢包。以下简单解释。
和 BBR 单流吞吐到顶即不变不同,多流大 buffer 场景,由于 B1/(B1 + B2) < (B1 + d)/(B1 + d + B2),BBR probe up 时一定能挤占额外带宽,maxbw-filter 将记录一个偏大的 bw,而其它流并不主动降速,依然保持自身 maxbw-filter 的 bw,它们将共同在 buffer 排队,RTT 越大,inflight 越大,侵占性越强。而在多流小 buffer 场景,该行为可能将 BBR Opt point 推向 CUBIC 右边而造成高丢包。
No consistent fairness behavior 这句话点了题。
BBR is already in use: but probably application-limited 这句话扎心了。如果 BBR 全用于大文件传输,死命发送的那种应用,想必 BBR 应该用不起来。但也没必要专门用这个论据证明 BBR 不好,毕竟在未来 application-limited 应用会越来越多,死命发送的 capacity-seeking 应用才是少数,这个我也是不止一次评论过。
最后,BBR is still under development 这句话充满了希望。
对 BBR 的任何评价几乎都局限在它单流场景的优异表现,对 BBR 最优操作点的质疑似乎从来没有过。
BBR 的最优操作点早在 1970~1980 年代就为人所追求,BBR 死活不出炉的原因仅在于人们找不到,后来被证明永远找不到可以让多个流收敛到那个最佳操作点的理论支撑,直到 2010 年代,Google 做了大量实验,用实践和经验以及大量的数据表明(而不是证明)即使没有理论支撑,现实中对那个最佳操作点的收敛也足够好了,于是这个方法被放出来,就是 BBR 算法。
但 2017 年这次大会中给出的这个系列实验,不得不把 BBR 重新推回 Flow Control Power is Nondecentralizable 这篇论文以做重新评估。
但这个系列实现始终没有掀起足够的波澜促使 BBR 真正进化。
…
但 BBR2 直到 BBR3 的变化,除了叠加了作为补充性而非内置的 AIMD 以及微调了参数之外,并没有在 consistent fairness behavior 方面做结构性调整,很难让人相信 BBR3 已经是 multiple flows 收敛模型了。
“probe buffer 一定可以挤压出带宽” 和 “maxbw-filter wnd 过长” 两个因素一起让 BBR 操作点右移。“BBR 不认可 delivery rate 下降” 是自然结果,由此一定会造成 buffer 堆积。
BBR 有两类主动降速,分别是 loss-detect 后的守恒以及进入 probertt 状态,这两种主动降速前保持 maxbw 即可,非主动状态,被动监测到 bw 下降,要认,同时可以适当增加 probe up 频率,以 probe up 加速比随有效吞吐比例增加而下降做收敛。
这样收紧自身,自然就慢慢步入了多流场景了,总之,1 和 n,也是一个参数,要和其它参数联调,注意,是联调。
浙江温州皮鞋湿,下雨进水不会胖。
相关文章:
漫话拥塞控制:BBR 是个单流模型
概要(便于检索主题):单流,多流收敛,probe buffer 挤压带宽,maxbw-filter wnd。 我曾经经常说 BBR 是个单流模型,而不是多流收敛模型,也做过不少评论,最近在复听 IETF 的大会,在 IET…...
HTML详解连载(1)
HTML详解连载(1) HTML定义HTML 超文本标记语言标签语法注意拓展 HTML基本骨架解释VS Code 快速生成骨架:标签的关系父子关系(嵌套关系)兄弟关系(并列关系) 代码格式注释 标题标签标签名:h1-h6(双…...
最新版本2023UI千月影视APP源码 开源完美版前后端完美匹配 后端基于ThinkPHP框架
最新版本的2023UI千月影视APP源码是一款开源的完美版应用程序,具备前后端完美匹配的特点。该应用的后端开发基于ThinkPHP框架,这是一个广泛使用的PHP开发框架,具有稳定性和安全性方面的优势。 2023UI千月影视APP是一款提供电影、电视剧、综艺…...
centos7安装Docker详细步骤(无坑版教程)
一、安装前必读 在安装 Docker 之前,先说一下配置,我这里是Centos7 Linux 内核:官方建议 3.10 以上,3.8以上貌似也可。 注意:本文的命令使用的是 root 用户登录执行,不是 root 的话所有命令前面要加 sudo…...
Python入门自学进阶-Web框架——39、redis、rabbitmq、git——2
RabbitMQ的exchange,即交换机有不同的类型: 1.direct Exchange(直接交换机) 匹配路由键,只有完全匹配消息才会被转发 2.Fanout Excange(扇出交换机) 将消息发送至所有的队列 3.Topic Exchange(主题交换机) 将路由按模…...
了解IL汇编跳转语句
il代码, .assembly extern mscorlib {}.assembly Test{.ver 1:0:1:0}.module test.exe.method static void main() cil managed{.maxstack 5.entrypointldstr "Enter First Number"call void [mscorlib]System.Console::WriteLine (string)call string …...
JVM运行时五大数据区域详解
前言: java虚拟机再执行Java程序的时候把它所拥有的内存区域划分了若干个数据区域。这些区域有着不同的功能,各司其职。这些区域不但功能不同,创建、销毁时间也不同。有些区域为线程私有,如:每个线程都有自己的程序计数…...
Vuex 使用教程
Vuex 各子模块的内部结构及作用 这是vuex的内部代码结构,所有的子模块都是一样的 state:存放数据状态; action:指派 mutation ; mutation:修改state里面的状态; getter:侧重于对数据…...
springboot启动you will need to add ‘org.slf4j‘ to prefer-application-packages异常解决
摘自个人印象笔记2020-09-12内容:[https://app.yinxiang.com/fx/6c3c7d9d-d5e5-4e5b-b2a1-33d6f29c48a7](https://app.yinxiang.com/fx/6c3c7d9d-d5e5-4e5b-b2a1-33d6f29c48a7) 启动异常: Caused by: java.lang.IllegalArgumentException: LoggerFactory…...
云原生核心原则和特征
云原生(Cloud Native)是一种软件开发和部署方法论,旨在充分利用云计算的优势来构建和管理应用程序。云原生应用程序是专为在云环境中设计、构建和运行的应用程序。 以下是云原生的一些核心原则和特征: 微服务架构:云…...
【ElasticSearch入门】
目录 1.ElasticSearch的简介 2.用数据库实现搜素的功能 3.ES的核心概念 3.1 NRT(Near Realtime)近实时 3.2 cluster集群,ES是一个分布式的系统 3.3 Node节点,就是集群中的一台服务器 3.4 index 索引(索引库) 3.5 type类型 3.6 doc…...
SQL | 注释
2-注释 2.1-单行注释 select prod_name -- 这是一条行内注释 from products; 使用两个连字符(-- ) 放在行内,两个连字符后的内容即为注释内容。 # 这是一条注释 select prod_name from products; 这种注释方式可能有些数据库不支持,所以使用前应该…...
oi知识表+NOIP提高组算法及算法思想总结
算法及算法思想总结 │ By lib │ ├暴力 ├模拟 ├递归及递推:数位统计类 ├构造 ▼├排序算法 │ ├冒泡排序 │ ├选择排序 │ ├计数排序 │ ├基数排序 │ ├插入排序 │ ├归并排序 │ ├快速排序 │…...
【mysql】实现递归查询
mysql实现递归查询的方法:首先创建表,并初始化数据;然后向下递归,利用find_in_set()函数和group_concat()函数、with recursive实现递归查询。 mysql实现递归查询的方法: 1、创建表 DROP TABLE IF EXISTS t_areainf…...
JUC并发编程之原子类
目录 1. 什么是原子操作 1.1 原子类的作用 1.2 原子类的常见操作 原子类的使用注意事项 并发编程是现代计算机应用中不可或缺的一部分,而在并发编程中,处理共享资源的并发访问是一个重要的问题。为了避免多线程访问共享资源时出现竞态条件࿰…...
测试设计中隐藏的边界有哪些?
概述:边界值分析是测试设计一个稳定的部分,但是对黑盒测试人员来讲有时候边界并不是那么明显。这些不明显的边界被称作隐藏的边界。本文提供几个隐藏的边界的例子,还有一些以让隐藏边界显露来设计测试计划的要点方法。 使用边界值分析和等价…...
领航优配:暑期旅游市场热度持续攀升,相关公司业绩有望持续释放
到发稿,海看股份涨停,中广天择、探路者、众信旅行等涨幅居前。 8月8日,在线旅行板块震动上涨,到发稿,海看股份涨停,中广天择、探路者、众信旅行等涨幅居前。 今年以来,国内旅行商场逐渐恢复。文…...
基于 CentOS 7 构建 LVS-DR 集群 及 配置nginx负载均衡
一、构建LVS-DR集群 1、主机规划 Node01:PC Node02:LVS Node03、Node04:Webserver 2、部署环境 2.1 在Node02上配置 2.1.1 安装ipvsadm管理软件按 [rootlocalhost ~]# yum install -y ipvsadm 2.1.2 配置VIP [rootlocalhost ~]# if…...
docker搭建在线Markdown服务器
1.安装docker 2.编写docker-compose.yml version: "3" services:database:image: postgres:11.6-alpineenvironment:- POSTGRES_USERcodimd- POSTGRES_PASSWORDchange_password- POSTGRES_DBcodimdvolumes:- "database-data:/var/lib/postgresql/data"re…...
打靶练习:WestWild 1.1(一个简单但不失优雅的Ubuntu靶机)
主机发现和nmap信息收集 //主机发现 sudo nmap -sn 192.168.226.0/24 //扫描整个C段//端口扫描//初步扫描 sudo nmap -sT --min-rate 10000 -p- 192.168.226.131 -oA nmapscan/ports //用TCP的三次握手,以速率10000扫描1-65535端口,扫描结果以全格式…...
5个理由告诉你,为什么NBTExplorer是Minecraft数据编辑的终极解决方案
5个理由告诉你,为什么NBTExplorer是Minecraft数据编辑的终极解决方案 【免费下载链接】NBTExplorer A graphical NBT editor for all Minecraft NBT data sources 项目地址: https://gitcode.com/gh_mirrors/nb/NBTExplorer 你是否曾经面对Minecraft世界文件…...
医疗器械管代的职责
医疗器械管代的职责 医疗器械管代(质量管理负责人)是医疗器械生产企业中负责质量管理体系建立、实施和保持的关键人员,主要职责包括以下几个方面: 质量管理体系建立与维护 负责组织制定、实施和保持符合医疗器械相关法规和标准的质…...
2026 年最新:Anthropic 注册政策变化及应对策略
2026 年 4 月,Anthropic 官方密集更新平台注册、审核、身份核验与地区风控全维度规则,结合全球 AI 监管法案收紧、模型滥用防控升级,对 Claude 网页端、开发者 API 控制台、账号准入、使用权限、封禁机制进行全方位调整。大量过往可用的注册方…...
Git克隆报错SSL routines:ssl3_get_record?别慌,这可能是你的代理在‘捣乱’
Git克隆报错SSL routines:ssl3_get_record的深度排查与解决方案 当你正专注于某个开源项目,准备通过git clone获取代码时,突然遇到SSL routines:ssl3_get_record:wrong version number的错误提示,这种突如其来的技术障碍往往会打乱开发节奏。…...
【Docker AI Toolkit 2026避坑红宝书】:20年DevOps专家亲测的7大高频崩溃场景与秒级修复清单
更多请点击: https://intelliparadigm.com 第一章:Docker AI Toolkit 2026核心架构演进与避坑认知升级 Docker AI Toolkit 2026 不再是简单封装 PyTorch/TensorFlow 的 CLI 工具集,而是基于 eBPF 驱动的容器原生 AI 编排层,深度融…...
机器学习工程师实战指南:从基础到职业发展
1. 从AI泡沫中突围:如何成为一名真正的机器学习工程师最近两年AI领域的热度居高不下,各种"3天学会AI"、"无需编程的机器学习"宣传铺天盖地。作为一个在工业界实践机器学习7年的工程师,我想分享一些真实的成长路径。机器学…...
告别QT WebEngine!用Electron + QWebChannel + Vue 3重构你的C++桌面应用界面
重构C桌面应用界面:Electron QWebChannel Vue 3全栈方案深度解析 在工业控制、仪器仪表、嵌入式系统等领域,C凭借其高性能和硬件级操作能力长期占据主导地位。但当这些专业工具需要面向现代用户时,开发者往往面临两难选择:要么忍…...
ComfyUI IPAdapter Plus完整指南:用单张图片控制AI图像生成
ComfyUI IPAdapter Plus完整指南:用单张图片控制AI图像生成 【免费下载链接】ComfyUI_IPAdapter_plus 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI_IPAdapter_plus 想要用一张参考图片就能让AI生成的图像拥有相同的人物特征、艺术风格或构图布局吗…...
Elsevier投稿返修时,如何用LaTeX的xcolor宏包精准修改参考文献颜色(附完整代码)
Elsevier投稿返修时如何用LaTeX的xcolor宏包精准修改参考文献颜色 收到期刊返修意见时,参考文献的格式调整往往是让研究者头疼的环节。特别是当审稿人要求"将修改过的参考文献条目标记为蓝色"时,许多作者发现常规的\textcolor{blue}{...}命令在…...
企业如何选择适合自己的电商系统技术架构?(实操落地版)
一、先明确4个核心前提(选架构的基础) 企业不要盲目追「微服务、云原生」高端概念,先自查自身条件: 业务体量:日订单量、用户规模、是否做大促/直播爆单;经营模式:单商户自营、多商户入驻、S2B2…...
