tcp bbr pacing 的对与错

news2024/11/28 4:35:48

前面提到 pacing 替代 burst 是大势所趋,核心原因就是摩尔定律逐渐失效,主机带宽追平交换带宽,交换机不再能轻易吸收掉主机突发,且随着视频类流量激增,又不能以大 buffer 做带宽后备。因此,主机必须 pacing。

再看一下到底什么是 bufferbloat。bufferbloat 不是一个瞬时行为,而是持续行为。举个例子就能明白。为什么中国大河流域大湖少,因为中国地形东西落差太大,百川东到海,势能足够,吞吐就够大,足以抹平任何堰塞:
在这里插入图片描述

对任何流体,特别是大突发流体,buffer 一旦填充,除非上游主动排空,buffer 很难排空,只要有填充态 buffer 就必然增加时延。一般倾向是,buffer 无论多大,若不加干涉,总会被填满。不加干涉的流体本质就是 capacity-seeking,不信你自己挖一个水平的渠道,中间某些地方加宽一点,然后从一端灌水观察一下。

aimd 只能事后解决 bufferbloat 后的可用性收敛问题,解决不了 bufferbloat 本身,即使在大流量下,统计意义上,所需 buffer 数量也和流数量的 1/2 次方成正比,而且还要配合复杂的 red aqm 等技术。

所以,解决 bufferbloat 要么下游加大带宽,要么上游减少突发。端到端标准建议是后者,即从主机开始就 pacing,而 bbr 是一个 “如何计算主机 pacing rate” 的一个实例。至于加大带宽,端到端无力干涉,未来可能会是链路并行化,而这必然导向多路径,但这是后话,本文不谈。

说到底,主机似乎必须 pacing。但这引入另一个关于 bbr 的问题:

  • 端到端的全链路是 n 跳而非 1 跳链路,而主机 pacing 只能影响第一跳 buffer 状态,但 bbr pacing 计算则基于全链路 bottleneck 带宽。

很简单的一个 use case:如果共享第一跳 a 的流 1 的 bottleneck bw 大于 流 2 的 bottleneck bw,它们都在 a 获得 bottleneck bw,而流 2 和流 3 共享最后一跳 b:
在这里插入图片描述

除非所有 bbr 一起 probe,否则 bbr 的状态机非常脆弱,它不是稳定的。bbr probe 效果并非如论文所说为探测空闲资源,现实中,在多流共享全链路场景不得已的行为,系统本身不稳定,bbr 需要不停 probe 扶正,而计算的代价非常大,这也不是算不算的准的问题,而是不得不计算,胡乱写一个 probe gain 系数都 ok,但必须做。

主机 pacing 的问题在于,一旦堆积 buffer,pacing rate 越小 buffer 占比越低,结果是获得带宽越小。交换机要考虑多流带宽复用,让交换机根据 buffer 状态和排队规则分配带宽才是正解,因为主机计算的 pacing rate 到了交换机并不算数,交换机根本无视这个 pacing rate,它是无效的。

为什么我说每条流跟踪 max(bw / rtt)->b 和 minrtt 并基于此控制自己的 inflight 是对的:

  • b * minrtt 意味着不主动堆 buffer,b 不一定最大,但 b / rtt 一定最优;
  • inflight += (minrtt / rtt) * beta 增加固定余量动态发现带宽变化,这 buffer 堆积算是动态自适应的代价;
  • (minrtt / rtt) 修正 minrtt 本身的 buffer 堆积,因为 minrtt 本身也是统计最小值,不意味着不排队。

理论上,所有流的 (minrtt / rtt) * beta 就是整个网络中所有 buffer 的和,至于每条流的 bdp 余量到底堆积在哪,由整个网络的当前状态决定,这个状态是个统计状态,本质上是概率问题,上述三点保证全网收敛,但千万别精确计算。

去掉 bbr 不合理的假设就都合理了,也变简单了。bbr 的问题在于试图在统计环境中通过计算描述一个确定状态,相当于控制风力和风向时计算每个空气分子动量,显然,只需要控制单位面积的空气分子总量和外力方向就可以了。

那主机可以不 pacing 吗,显然不可以,为了降低第一跳突发减少第一跳 bufferbloat,所有主机固定 pacing 也不是不行,比如 500mbps pacing,而不是以主机能力突发。至于后面的跳,主机控制不了,只能交换机做。如果交换机为提高出口能效,塞住出口 10ms,buffer 占有率达到一定量再批量发送,拦了一座大坝,那就谁也没办法。

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

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

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

相关文章

根据 Excel 列生成 SQL

公司有个历史数据刷数据的需求, 开发功能有点浪费, 手工刷数据有点慢, 所以研究了下 excel 直接生成 SQL, 挺好用, 记录一下; 例如这是我们的数据, 要求把创建时间和完成时间刷进数据库中, 工单编号唯一 Excel 公式如下: "UPDATE service_order SET create…

Ubuntu修改DNS

【永久修改DNS】 临时修改DNS的方法是在 /etc/resolv.conf 添加:nameserver 8.8.8.8 nameserver 8.8.8.8 注意到/etc/resolv.conf最上面有这么一行: DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN 说明重启之后这个文件会被自动…

2024 数据技术嘉年华大会的总结报告

2024数据技术嘉年华大会已经结束,很多朋友做出了不同视角的总结,作为大会最初的发起者,我需要做出一些回应。 这是一次年轻人担纲组织的成功的大会本次的嘉年华大会,组织者换成了墨天轮社区的90后群体,我想他们可能更了…

【小白学机器学习13】一文理解假设检验的反证法,H0如何设计的,什么时候用左侧检验和右侧检验,等各种关于假设检验的基础知识

目录 前言: 目标 1 什么叫 假设检验 1.1 假设检验的定义 1.1.1 来自百度百科 1.1.2 维基百科 1.2 假设检验的最底层逻辑:是反证法思想 1.3 假设检验的底层构造:小概率反证法思想 2 什么叫反证法 2.1 反证法的概念 2.1.1 来自百度…

java导出数据到excel表中

java导出数据到excel表中 环境说明项目结构1.controller层2.service层3.实现层4.工具类:ExcelUtil.java5.ProductModel.java类 使用的Maven依赖postman请求展示,返回内容需要前端接收浏览器接收说明(如果下载下来的为zip类型,记得…

芯片数字后端设计入门书单推荐(可下载)

数字后端设计,作为数字集成电路设计的关键环节,承担着将逻辑设计转化为物理实现的重任。它不仅要求设计师具备深厚的电路理论知识,还需要对EDA工具有深入的理解和熟练的操作技能。尽管数字后端工作不像前端设计那样频繁涉及代码编写&#xff…

字符串拆分优化算法

字符串拆分优化算法 问题背景算法设计思路伪代码实现C语言代码实现 详细解释结论 在面对字符串拆分问题时,我们的目标是找到一种最优的拆分顺序,以使得总的拆分代价最小。这个问题可以通过动态规划算法来解决。在本文中,我们将详细介绍这个问…

uniapp picker 多列选择器用法

uniapp picker 多列选择器联动筛选器交互处理方法, uniapp 多列选择器 mode"multiSelector" 数据及筛选联动交互处理, 通过接口获取数据,根据用户选择当前列选项设置子列数据,实现三级联动效果, 本示例中处…

联想小新Air14-2019锐龙版更换硬盘

首先打下D面所有螺丝(内六角螺丝,需要准备螺丝刀),然后从下方翘起整个D面打开如下图 原装为2280长度的海力士硬盘,有空余的2242长度硬盘位 更换前断电,建议拆下电池(扣下电池排线后不好安装&am…

【解决去除springboot-内嵌tomcat的异常信息显示】去掉版本号和异常信息

调用这个,能复现tomcat的报错 http://localhost:8182/defaultroot/DownloadServlet?modeType2&pathhtml&FileName…\login.jsp&name123&fiewviewdownload2&cdinline&downloadAll2 springboot项目如何隐藏? springboot内嵌了to…

【IoTDB 线上小课 02】开源增益的大厂研发岗面经

还有友友不知道我们的【IoTDB 视频小课】系列吗? 关于 IoTDB,关于物联网,关于时序数据库,关于开源...给我们 5 分钟,持续学习,干货满满~ 5分钟学会 大厂研发岗面试 之前的第一期小课,我们听了 I…

康耐视visionpro-CogHistogramTool操作操作工具详细说明

CogHistogramTool]功能说明: 对图像区域中的像素值进行灰度值统计 CogHistogramTool操作说明: ①.打开工具栏,双击或点击鼠标拖拽添加CogHistogramTool工具 2.添加输入图像,点击鼠标右键“链接到”或以连线拖拽的方式选择相应输入…

Dual-AMN论文阅读

Boosting the Speed of Entity Alignment 10: Dual Attention Matching Network with Normalized Hard Sample Mining 将实体对齐速度提高 10 倍:具有归一化硬样本挖掘的双重注意力匹配网络 ABSTRACT 寻找多源知识图谱(KG)中的等效实体是知识图谱集成的关键步骤&…

Real3DPortrait照片对口型,数字人,音频/视频驱动数字人

先看效果 上传一张图片和一段音频,照片如下: 合成后效果如下: 照片对口型-音频驱动 支持音频驱动和视频驱动,视频可以使照片有参照视频中的口型和和动作。 项目地址 https://github.com/yerfor/Real3DPortrait 我的环境 win…

【C语言回顾】函数

前言1. 函数的概念和分类2.库函数3. 自定义函数3.1 自定义函数的简单介绍3.2 自定义函数举例 4. 形参和实参4.1 形参4.2 实参4.3 形参和实参的关系4.3.1 理解4.3.2 举例代码和调试 5. 嵌套函数和链式访问5.1 嵌套函数5.2 链式访问 6. 函数的声明和定义6.1 单个文件6.2 多个文件…

【活动通知】COC 成都 CMeet 系列:2024 WTM 社区(国际妇女节)IWD 活动!

文章目录 前言一、关于 2024 WTM IWD 社区活动二、时间地点三、活动议程及报名方式四、分享嘉宾及主题信息4.1、李然——点燃创造力,重塑未来4.2、何静——乘风破浪,与 AI 的过去、现在、未来式4.3、晓丽老师——用 AI 给女性插上飞翔的翅膀 五、CSDN 成…

小成本搏大流量:微信/支付宝小程序搜索排名优化

随着移动互联网的快速发展,小程序已成为企业和个人开发者重要的流量入口和业务承载平台。而小程序搜索排名则是影响小程序曝光量、用户获取及业务转化的关键因素。小柚在本文和大家探讨如何制定有效的优化方案,提升小程序在搜索结果中的排名。 首先跟我…

2023年图灵奖颁发给艾维·维格森(Avi Wigderson),浅谈其计算复杂性理论方面做出的重要贡献

Avi Wigderson是一位以色列计算机科学家,他在计算复杂性理论方面做出了重要的贡献,并对现代计算产生了深远的影响。 Wigderson的主要贡献之一是在证明计算复杂性理论中的基本问题的困难性方面。他证明了许多经典问题的困难性,如图论中的图同构…

如何使用Postgres的扩展(如PostGIS)来支持地理空间数据

文章目录 解决方案1. 安装PostGIS扩展2. 创建地理空间数据表3. 插入地理空间数据4. 进行地理空间查询 示例代码 在PostgreSQL中,我们可以使用扩展来增强数据库的功能。对于地理空间数据,PostGIS是一个特别有用的扩展,它提供了对地理对象&…

SpringMVC 常用注解介绍

Spring MVC 常用注解介绍 文章目录 Spring MVC 常用注解介绍准备1. RequestMapping1.1 介绍2.2 注解使用 2. 请求参数2.1 传递单个参数2.2 传递多个参数2.3 传递对象2.4 传递数组 3. RequestParam3.1 注解使用3.2 传入集合 4. RequestBody5. PathVariable6. RequestPart7. Rest…