真实网络中的 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.hqwc.cn/news/208688.html

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

相关文章

【Django使用】md文档10大模块第5期:Django数据库增删改查和Django视图

Django的主要目的是简便、快速的开发数据库驱动的网站。它强调代码复用,多个组件可以很方便的以"插件"形式服务于整个框架,Django有许多功能强大的第三方插件,你甚至可以很方便的开发出自己的工具包。这使得Django具有很强的可扩展…

智能化学习打破资源障碍 成为英语学习新趋势

智能化学习是一种基于互联网和人工智能技术的学习行为,通过网络,学习者可以随时随地进行学习,真正打破了时间和空间的限制。与传统线下学习方式相比,智能化学习更加方便、资源更加丰富,使海量英语学习资源唾手可得,智能化学习正逐渐成为中国孩子习得英语的重要方式。 随着全球…

2023.11.22 homework

七年级数学 五年级数学 也不知道可以教到几年级,估计很快就教不动了。人生啊。

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

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

游戏开发团队配置与协作流程

游戏开发技术图谱 - 知乎 游戏制作的流程是什么啊? - 知乎 系统策划:一张图梳理游戏系统的生产流程 - 知乎 游戏开发入门(十一)游戏引擎架构-CSDN博客

使用SpringBoot集成MyBatis对管理员的查询操作

增删改查中的查询操作,对所有的普通管理员进行查询操作。 效果展示: 不仅可以在打开页面时进行对管理员的自动查询操作,还可以在输入框进行查询。 首先是前端向后端发送POST请求,后端接收到请求,如果是有参数传到后端…

【论文阅读笔记】Emu Edit: Precise Image Editing via Recognition and Generation Tasks

【论文阅读笔记】Emu Edit: Precise Image Editing via Recognition and Generation Tasks 论文阅读笔记论文信息摘要背景方法结果额外 关键发现作者动机相关工作1. 使用输入和编辑图像的对齐和详细描述来执行特定的编辑2. 另一类图像编辑模型采用输入掩码作为附加输入 。3. 为…

Mac M1 安装Docker打包arm64的python项目的镜像包

1、首先安装Docker,到官网下载,选择apple chip版 Docker中文网 官网 2、双击下载的dmg文件,在弹出框中之间拖拽到右边 3、打开docker,修改国内镜像源,位置在配置-DockerEngine "registry-mirrors": ["…

shell 脚本循环语句

目录 循环 echo 命令 for 循环次数 for 第二种格式 命令举例 while 脚本举例 双重循环及跳出循环 脚本举例 更改文件和目录的后缀名的脚本 画三角形的脚本 乘法口诀表的脚本 面试例题 补充命令 let 命令 循环 —— 一定要有跳出循环的条件 已知循环的次数 未知…

NFC:应用场景广泛的短距离通信技术

NFC:应用场景广泛的短距离通信技术 一、NFC 技术介绍1.1 NFC 技术应用场景1.2 NFC 技术优点1.3 NFC 工作原理 二、NFC 开发2.1 NFC 应用开发流程2.2 NFC 读取和写入2.3 NFC 读写功能示例 三、总结 一、NFC 技术介绍 NFC (Near-field communication&…

Redis面试内容,Redis过期策略,Redis持久化方式,缓存穿透、缓存击穿和缓存雪崩,以及解决办法

文章目录 一、redis什么是RedisRedis使用场景1、缓存2、数据共享[分布式](https://so.csdn.net/so/search?q分布式&spm1001.2101.3001.7020)3、分布式锁4、全局ID5、计数器6、限流7、位统计 Redis有5中数据类型: SSHLZRedis中一个key的值每天12点过期&#xff…

Leetcode——169 多数元素

我的答案 class Solution {public int majorityElement(int[] nums) {int len nums.length;Arrays.sort(nums);int count 1;int res 0;if(len 1){return nums[0];}for(int i0; i<len-1; i){if(nums[i]nums[i1]){count;}else{count 1;}if(count>len/2){res nums[i]…