真实网络中的 bbr

本文包含中心极限定理,大数定律,经济规律等,bbr 倒没多少,不过已经习惯把 bbr 当靶子了。

上周写了 揭秘 bbr 以及 抢带宽的原理,我对自己说,这都是理论上如何,可实际上呢。于是有必要结合更实际的场景,而这恰恰是大部分人所忽略的场景。

网络拥塞主要涉及 buffer 占用,则聚焦到 buffer。细节不重要,重要是流量在 buffer 的分布,真实网络是下面这样(对于个人直播,D 和 S 对称):
在这里插入图片描述

整天说互联网是统计复用系统,就要用统计的语言描述,中心极限定理,大数定律以及幂律在网络拥塞动力学中起重要作用。

题外话:但凡能用数学精确描述的,都不真实,都是近似,且一定范围内的近似。参见牛顿在《自然哲学的数学原理》中的方法论,引入牛顿刚体,伽利略光滑平面…后来的澄清石灰水,橡胶棒与皮毛,玻璃棒与丝绸就显得在数学上不那么严谨了,但真实啊。

先大致描述图中涉及的分布以及它们的特点。

根据中心极限定理,正态分布是归宿。骨干网由接入网汇聚而成,汇聚过程正是中心极限定理作用的过程,即任意分布在叠加过程中趋向正态分布。

正态分布很容易理解,它就像(实际上也是)个垃圾堆。水杯,塑料袋,裤头,袜子,皮鞋,卫生纸都是有用的低熵体(生产它们需要注入能量),将它们丢弃就是叠加它们,最终就是个垃圾堆,里面所有东西都被独立丢在这里任由时间飞逝而烂掉,任何两件东西之间没有任何关系。

等量样本,正态分布的方差最小,熵最大,所谓中心极限定理表达的就是有用的东西变成垃圾堆的熵增过程。

然而非独立样本的分布往往偏离正态分布,比如表现为幂分布,典型的这类场景中往往有人的行为影响。比如贫富占比的幂律,也叫二八定律,马太效应,这就是说,致富和贫困并非彼此独立发生的。

题外话:我一直说货币系统就是个分布式系统,交易就是供需认知的分布式一致性收敛达到共识的过程,而这个一致性共识永远不会达到,否则就会打破二八定律。财富在交易过程中积累,而交易过程必有一方比另一方在等价中间物上获益,否则交易便不会发生。所谓财富分化来自信息差,经济规律一直在试图消除信息差达到分布式一致性,在这个过程中产生新的信息差抵制一致性趋向,以此循环,永远达不到一致性,世界因而发展,财源滚滚来。

接入网流量往往表现为突发,而这类突发和人的上网行为相关,如网红直播,抢购,刷短视频,看热播剧都是人驱动,流量和人之间千丝万缕的联系很难满足独立事件约束,这表现为接入网流量更不稳定。

无数接入网流量汇聚到骨干,正态分布的流量表现出更稳定的特征,骨干网 buffer 占用相对可预期,流量分布概率密度函数就是个有高度和宽度垃圾堆,便可基于此决策适应它的行为。

流量稳定性可通过大数定律理解,任意时间点流量相当于对数据流的一次抽样,数据流越多,其均值越接近总量均值,而总量可表示为一个任意足够大时间段的流量总和,该时间段随时间向前滑动,其均值保持和单点抽样均值一致,在此过程中,少量数据流进入退出对整体影响微乎其微,正好像海面始终有浪花,偶尔惊涛骇浪,但总体上的海面却是平的。

题外话:数量越多的流量,同步的概率越低,代价越大,越趋向于异步,而异步趋势则表现为锯齿的变小直到消失,表现为波峰波谷抵消而总体趋平,平面升高或降低需要足够多流量整体同时同步升高(拉偏期望)才能产生影响,而这又是一个同步行为,前面说了,数量越大,同步概率越低,代价越大,越不可能,因此整体趋稳定。这是一种更好的理解大数定律的方式,正如用垃圾堆理解中心极限定理一样。

由此,互联网流量越往边缘越偏离正态分布,为照顾大而不稳的方差,buff_size = BDP / sqrt(n) 的根号效应减弱(参见 Sizing router buffers 值得一提的是,这篇论文的结论本身就是从中心极限定理导出的),buffer 溢出和 bufferbloat 更容易在边缘发生,所配置 buffer 反而比实际需要的更大。

要关联 bbr 就要单独抽出 bltbw 和 proprt 这两个 bbr 顾名思义的核心正交要素,看它们如何分别适应接入网和骨干网。
如果 bltbw 在接入网,单流 bbr 将以 “准精确” 方式运行,“准” 是考虑到骨干流量分布特征,rtt 随正态分布的流量而波动,因此维持 10s 的 minrtt 将不再可信,正确做法是让 minrtt 跟着骨干网流量而波动。

如果 bltbw 在接入网,多流 bbr 将以 “粗粒度” 方式运行,“粗” 指不但测不准波动的骨干网时延,接入网 buffer 挤占也破坏 bbr 假设,此前我说过多次该话题,不再赘述,bbr 邮件组也没更好方案,直到 bbr3 依然只是回引 aimd。

如果 bltbw 在骨干网,bbr 的模型假设将完全失效。骨干网洪流中,单独一条 bbr 流的 probertt 对 buffer 将不会有可识别的影响,对 minrtt 测量的影响远不如对正态分布的流量波动进行识别和跟随。如果不想进行这种费力却依然测不准的识别,回退到 aimd,剩下的交给 RED。

只要 bltbw 在骨干网,bbr 流就像泼进长江的一盆水或一滴水滴在海绵上。设定 aimd,随波逐流就好。如果要摆脱这悲观,尝试着在 bbr 上还能做点事,适应而不是改变,不争不退,所以就知道我那些旨在提高 bbr 灵敏性而不是提高测量精度的想法的用心良苦了吧。

按照收敛比概念,bltbw 大概率在第一跳,骨干反而近乎无限,只需识别并跟随其波动即可,但随着接入网技术的发展(老掉牙的说法是 xx 没能同样发展),越来越多的用户购买越来越大的接入带宽(我们从运营商购买的带宽即接入带宽,而骨干网只是个资源池),bltbw 也会向网络中心考虑,网络的统计特征越来越明显,拥塞控制将越来越指望不上精确,这是和 越来越无效的拥塞控制 不同的另一个的意思,虽然无法精确度量链路画像,但正态分布却是可预期的,基于这种预期,虽然端到端算法无法影响它,但却可以适应它,跟随它。

我的信条,保持稳定,向趋势靠拢。所谓端到端算法,名字里就没有网络,对这类算法,网络是不可知测不准的,网络仅能反馈趋势而不是值,过于执着精确测量的算法犯了唯心主义的错误,必跌入形而上学的深渊。

比如 sender 测得 rtt 为 73ms,66ms,51ms,46ms,33ms,30ms,31ms,28ms,34ms,32ms,这充其量只能告诉 sender 拥塞在缓解,你不会真的相信 minrtt 就是 28ms 了吧,那么移指平均后它可信吗,哦,那只是一种滤波方式,为什么不是另一个呢?基于这些完全不准确但一本正经的粗粒度度量试图做精确的决策,不是胡扯么?

皮鞋没有蹬上,露着白袜子。

浙江温州皮鞋湿,下雨进水不会胖。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/161620.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ubuntu cutecom串口调试工具使用方法(图形界面)

文章目录 Ubuntu下使用CuteCom进行串口调试使用指南什么是CuteCom?主要特点 安装CuteCom使用APT包管理器从源码编译安装 配置串口CuteCom界面解析(启动cutecom)使用CuteCom进行数据发送和接收配置串口参数数据接收数据发送 高级功能和技巧流控…

Vatee万腾的数字化掌舵:Vatee科技解决方案的全面引领

随着数字化时代的到来,Vatee万腾凭借其卓越的科技实力和全面的解决方案,成功地在数字化探索的航程中掌舵引领。 首先,Vatee万腾以其强大的数字化科技实力成为行业的引领者。vatee万腾不仅在人工智能、大数据分析、云计算等前沿领域取得了显著…

PLC通过Modbus转Profinet网关连接安华变频器通讯控制电机案例

背景:近年来,随着自动化技术的不断进步,Modbus与Profinet之间的转换成为了许多工厂和企业普遍关注的问题。 Modbus转Profinet网关作为两个不同协议设备连接的桥梁,安华变频器作为一种电气设备,能够改变电源的频率和电…

Pytorch中的tensor维度理解

Pytorch中的tensor维度理解 文章目录 Pytorch中的tensor维度理解摘要打消心理恐惧,从三维学起三维tensor参考文献 摘要 面对pytorch编程中的tensor时,我不时会感到恐惧。对里面数据是怎么排布的,一直没有一个直观的理解。今天我想把这个事情…

基于VM虚拟机下Ubuntu18.04系统,Hadoop的安装与详细配置

参考博客: https://blog.csdn.net/duchenlong/article/details/114597944 与上面这个博客几乎差不多,就是java环境配置以及后面的hadoop的hdfs-site.xml文件有一些不同的地方。 准备工作 1.更新 # 更新 sudo apt update sudo apt upgrade2.关闭防火…

MS2401隔离Σ-Δ调制器,可替代ADI的AD7401

产品简述 MS2401 是一款二阶 Σ-Δ 调制器,集成片上数字隔离器,能 将模拟输入信号转换为高速 1 位码流。调制器对输入信号连续 采样,无需外部采样保持电路。模拟信号输入满量程为 320 mV ,转换后的数字码流的最高数据速率为 2…

【MySQL】多表查询、子查询、自连接、合并查询详解,包含大量示例,包你会。

复合查询 前言正式开始一些开胃菜多表查询自连接子查询单行子查询多行子查询in关键字all关键字any关键字多列子查询在from中使用子查询 合并查询union 和 union all 前言 我前面博客讲的所有的查询都是在单表中进行的,从这里开始就要专门针对查询这个话题进行进一步…

GIT | 基础操作 | 初始化 | 添加文件 | 修改文件 | 版本回退 | 撤销修改 | 删除文件

GIT | 基础操作 | 初始化 | 添加文件 | 修改文件 | 版本回退 | 撤销修改 | 删除文件 文章目录 GIT | 基础操作 | 初始化 | 添加文件 | 修改文件 | 版本回退 | 撤销修改 | 删除文件前言一、安装git二、git基本操作2.1 初始化git2.2 配置局部生效2.3 配置全局生效 三、认识工作区…

2018年全国硕士研究生入学统一考试管理类专业学位联考数学试题——解析版

文章目录 2018 年考研管理类联考数学真题一、问题求解(本大题共 5 小题,每小题 3 分,共 45 分)下列每题给出 5 个选项中,只有一个是符合要求的,请在答题卡上将所选择的字母涂黑。真题(2018-01&a…

DRF-项目-(1):构建纯净版的drf项目,不再使用django的后台管理,django的认证,django的session等功能,作为一个纯接口项目

项目的目录结构: -HeartFailure |-- apps |--user |--HeartFailure |-- static |--manage.py 一、django项目相关的 1、命令行中创建django项目 #1、切换到指定的虚拟环境中 workon my_drf#2、该虚拟环境已经安装好django和rest_framework了 django-admin startp…

④【Set】Redis常用数据类型: Set [使用手册]

个人简介:Java领域新星创作者;阿里云技术博主、星级博主、专家博主;正在Java学习的路上摸爬滚打,记录学习的过程~ 个人主页:.29.的博客 学习社区:进去逛一逛~ Redis Set ④Redis Set 操作命令汇总1. sadd …

mysql的联合索引最左匹配原则问题

MySQL的联合索引 联合索引的最左匹配原则会一直向右匹配直到遇到范围查询(>、<、between、like) 就会停止匹配。 这个结论并不全对&#xff01;去掉 「between 和 like 」这个结论就没问题了 经过实验的证明&#xff0c;我得出的结论是这样的&#xff1a; 联合索引的最…

【计算机网络学习之路】TCP socket编程

文章目录 前言一. 服务器1. 初始化服务器2. 启动服务器 二. 客户端三. 多进程服务器结束语 前言 本系列文章是计算机网络学习的笔记&#xff0c;欢迎大佬们阅读&#xff0c;纠错&#xff0c;分享相关知识。希望可以与你共同进步。 本篇博客基于UDP socket基础&#xff0c;介绍…

Oracle的控制文件多路复用,控制文件备份,控制文件手工恢复

一.配置控制文件多路复用 1.查询Oracle的控制文件所在位置 SQL> select name from v$controlfile;NAME -------------------------------------------------------------------------------- /u01/app/oracle/oradata/orcl/control01.ctl /u01/app/oracle/fast_recovery_a…

【docker】docker总结

一、Docker简介 Docker是开源应用容器引擎&#xff0c;轻量级容器技术。基于Go语言&#xff0c;并遵循Apache2.0协议开源Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xff0c;然后发布到任何流行的Linux系统上&#xff0c;也可以实现虚拟化容…

No matching variant of com.android.tools.build:gradle:7.4.2 was found.

一、报错信息 创建个新项目&#xff0c;运行直接报错&#xff0c;信息如下&#xff1a; No matching variant of com.android.tools.build:gradle:7.4.2 was found. The consumer was configured to find a runtime of a library compatible with Java 8, packaged as a jar,…

shell 条件语句

目录 测试 test测试文件的表达式 是否成立 格式 选项 比较整数数值 格式 选项 字符串比较 常用的测试操作符 格式 逻辑测试 格式 且 &#xff08;全真才为真&#xff09; 或 &#xff08;一真即为真&#xff09; 常见条件 双中括号 [[ expression ]] 用法 &…

关于一些bug的解决1、el-input的输入无效2、搜索之后发现数据不对3、el多选框、单选框点击无用4、

el-input输入无效 原来的代码是 var test null 但是我发现不能输入任何值 反倒修改test的初始值为123是可以的 于是我确定绑定没问题 就是修改的问题 于是改成 var test ref&#xff08;&#xff09; v-model绑定的值改成test.value就可以了 因为ref是相应式的 可以通过输入…

Go语言多线程爬虫万能模板它来了!

对于长期从事爬虫行业的技术员来说&#xff0c;通过技术手段实现抓取海量数据并且做到可视化处理&#xff0c;我在想如果能写一个万能的爬虫模板&#xff0c;后期遇到类似的工作只要套用模板就能解决大部分的问题&#xff0c;如此提高工作效率何乐而不为&#xff1f; 以下是一个…

Mac自带的看图如何连续查看多张图片

一、问题 mac看访达里的图片时&#xff0c;双击打开一张图片&#xff0c;然后按上下左右键都没法切换到另外的图片。而且也没找到像window一样单击缩略图可以看到预览图。其实是自己不懂得怎么使用&#xff0c;哈哈哈&#x1f602; 二、方法 2.1、图标方式 可以看到缩略图&a…