漫话拥塞控制: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端口,扫描结果以全格式…...

Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...

Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...

大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面
代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口(适配服务端返回 Token) export const login async (code, avatar) > {const res await http…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...

python执行测试用例,allure报乱码且未成功生成报告
allure执行测试用例时显示乱码:‘allure’ �����ڲ����ⲿ���Ҳ���ǿ�&am…...

使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...