Advanced Computer Network Review(3)——BBR

2023-10-26

这是复习系列的第三篇,主要梳理BBR拥塞控制有关的一些要点,老师给出的复习要点如下:
1.基于loss的拥塞控制存在什么问题?为什么?
2.理解下面这张图
在这里插入图片描述
这篇文章的梳理部分参考了中科大郑烇老师《高级计算机网络》的相关部分,特此声明。

一、基于loss的拥塞控制存在什么问题?为什么?
在BBR没有出现之前,以往的一些拥塞控制协议(如Reno、Cubic)等都是基于丢包率(loss)的,也就是它将loss作为衡量网络是否拥塞的标准,单位时间内丢包丢得越多,协议就会单纯地认为网络的拥塞情况越严重,从而会进行一系列的动作。

这样简单的基于loss的拥塞控制方法在早期互联网络中工作效果尚可,因为那时的网络连接以有线的低带宽链路为主,且网络交换节点的buffer也不是很大。但是随着网络的不断进步,基于loss的拥塞控制方法就开始变得不再适用:

1.1.带宽剧烈振荡,吞吐率很低
首先是随着网络链路带宽的不断变大和无线链路的广泛使用,链路上出现丢包的可能性大大增加了(因出错而丢包、因无线链路不稳定而丢包等)。如果此时仍简单的认为丢包=拥塞,就会导致传输带宽的剧烈振荡的情况大量发生。

剧烈振荡的原因是传统TCP拥塞控制中AIMD的特性(加性增、乘性减),协议实体本身在不拥塞时试探性地一点点增大自己的发送窗口大小,一旦遇到拥塞就会将发送窗口骤降至原先的一半等行为会造成带宽的剧烈振荡,而实际的吞吐量并不高。

1.2.延迟高
延迟高的本质是随着网络设备的发展,链路中的各个设备的buffer大小也在不断增加,因为链路繁忙而临时缓存下来的数据也变得更多了。

注意,一旦设备上的buffer开始缓存数据,这时候本质上已经出现了链路拥塞,理想化的拥塞控制协议应该立即开始进行调整动作。但是对于基于loss的拥塞控制协议而言,它必须等到丢包出现时才开始进行拥塞控制动作。丢包开始时说明途径链路上的设备缓冲区也已经爆了,距离拥塞发生的时间更是已经过去很久很久了,这时再开始进行拥塞控制已经很迟了。这也就是上面图中的两个关键点的含义(用红框圈出):
在这里插入图片描述
1.3. 侵略性强
所有的基于loss的拥塞控制协议总是倾向于挤爆缓冲区之后再回退,这种侵略性极强的行为会将某些不是基于loss的拥塞控制协议完全逐出网络,使其不能得到有效的带宽保障,极大地损害了网络的公平性。

2.BBR怎么做拥塞控制
首先BBR的全称是(Bottleneck Bandwidth and Round-trip propagation time),基于瓶颈链路带宽和往返传播时延的拥塞控制协议。BBR的动作要义有两个:一是根据BDP(下面介绍)来控制链路中inflight的流量,二是根据瓶颈链路带宽来控制数据包发送节奏,使其不断适应BtlBW的变化

瓶颈链路,顾名思义,指的是在整个通信链路上分得带宽最小的那一截链路,它是整条通信链路中源-目标吞吐量的决定性因素,如果发生拥塞,在瓶颈链路这里将最先发生数据包的缓存,它的带宽叫做瓶颈链路带宽(BtlBW)。
在这里插入图片描述
往返传播时延(RTprop)指的是网络完全轻载(没有排队时间等)时的往返传播延迟之和。这两者的乘积被定义为 B D P = B t l B W × R T p r o p BDP = BtlBW \times RTprop BDP=BtlBW×RTprop。可以想见BDP的含义就是在网络不产生拥塞的情况下,积攒(inflight)在整个链路中的数据量的最大值

但是BtlBW和RTprop是在不断变化中的,这需要BBR协议本身不断地测量这两个值,及时地进行BDP的计算和控制。如何进行这两个量的测量、如何根据BtlBW的带宽进行节奏调整、如何根据BDP控制链路的inflight流量(其实就是根据BDP去设置TCP报文中的cwnd字段)都是协议中比较偏细节的点,这里不打算对协议细节进行详细解析(那是很长很琐碎的一个故事,如果有时间以后慢慢写,但是挖坑这种事我好像从来没填过:)。

BBR协议将整个通信过程按照链路负载来看分为3个阶段:应用受限阶段带宽受限阶段缓存受限阶段

2.1 应用受限阶段
下面用黄色框圈出了应用受限阶段:
在这里插入图片描述
在应用受限阶段,网络链路处于轻载状态,能发多快全看应用想发多快,此时的往返延迟就正好等于RTprop没有排队时间,因为轻载)。而交付速率(单位时间内成功发送的分组数量)也和应用端向网络中注入的inflight流量呈正相关性,斜率为 1 R T p r o p \frac{1}{RTprop} RTprop1

2.2 带宽受限阶段
随着应用注入数据的速度不断加快,网络就开始从应用受限阶段进入到带宽受限阶段。注意两者过渡点的inflight流量恰好是BDP,这是一个应该开始进行拥塞控制的最优动作点。经过此点之后将进入带宽受限阶段,这个阶段将开始有数据被缓冲在瓶颈链路的buffer中。这个阶段的交付速率也将被严格地限制为BtlBW,受限因素是瓶颈链路。此时往返延迟也开始增加(因为开始有排队时间),斜率(也就是释放速度)为 1 B t l B W \frac{1}{BtlBW} BtlBW1
在这里插入图片描述
2.3 缓存受限阶段
注意从带宽受限阶段到缓存受限阶段的过渡点,其inflight流量是BDP+BtlBufSize,意思是此时瓶颈链路上的缓冲区已经充满,再继续注入新的流量就会发生缓冲区溢出而丢包。所以在进入缓存受限阶段之后,因为有丢包的可能存在,其交付速率和往返时间都变得不可估算了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Advanced Computer Network Review(3)——BBR 的相关文章

  • python爬虫网络出错怎么办_Python爬虫异常处理

    100 继续 客户端应当继续发送请求 客户端应当继续发送请求的剩余部分 或者如果请求已经完成 忽略这个响应 101 转换协议 在发送完这个响应最后的空行后 服务器将会切换到在Upgrade 消息头中定义的那些协议 只有在切换新的协议更有好处
  • linux上redis常用命令以及遇到的问题

    1 在linux上解压缩后使用make命令进行编译的时候 错误类型 zmalloc h 50 31 致命错误 jemalloc jemalloc h 没有那个文件或目录 原因是因为编译的时候Linux默认内存分配器是jemalloc 而Re
  • 添加商品到购物车 Vuex

    商品详情 购物车页面 code
  • OFDM插入导频过程详解

    ofdm符号的长度 有效数据 cp的长度 cp就是将有效数据的后半部分1 4截取并添加到有效数据的开始部分 比如一个ofdm符号的长度为4us 那么有效数据的长度为3 2us cp的长度为0 8us 子载波的间隔 1 有效数据的长度 就是有

随机推荐

  • Unity使用c#开发遇上的问题(十三)(unity平台下使用 Vuforia 以及 ARFoundiation 的总结,根据个人观点)

    文章目录 前言 一 Vuforia的使用感觉 二 ARfoundiation的使用感觉 总结 前言 有一段时间没有更新系列的内容 上次更新完又重新思考了一下以后进行的方向 这里就目前接触的Vuforia 和 unity 自带的AR 之前叫A
  • 自动生成根据mysql表创建hive表脚本

    bin bash source etc profile 该脚本为手动传参根据MySQL表信息创建hive表 输入参数判断逻辑 必须数据两个参数 一个是MySQL库名 第二个是表名 if eq 2 then db name 1 mysql 库
  • 浅析java垃圾回收机制

    一 什么是垃圾回收 1 垃圾回收 顾名思义 便是将已经分配出去的 但却不再使用的内存回收回来 以便能够再次分配 在 Java 虚拟机的语境下 垃圾指的是死亡的对象所占据的堆空间 垃圾回收只会负责释放那些对象占有的内存 此时对象也就被销毁 2
  • 0长度数组的使用,重点掌握的知识

    0长度的数组在ISO C和C 的规格说明书中是不允许的 但是GCC的C99支持的这种用法 GCC对0长度数组的文档参考 Arrays of Length Zero 如下代码片段 哪个更简洁更灵活 看一眼就知道了 include
  • 用vscode开发autojs,输出窗口不显示任何输出结果

    我的情况是 我vscode开发autojs 程序 之前在一切正常的情况下 输出窗口可以正常显示程序运行结果 右侧红圈里可以选择我连接的手机型号 如下图 但是现在出现问题 就是输出窗口不显示任何结果 在右侧的选项卡里也找不到我的手机型号 之前
  • 2021年全球与中国龙胆苦苷行业市场规模及发展前景分析

    2021年全球与中国龙胆苦苷行业市场规模及发展前景分析 本报告研究全球与中国市场龙胆苦苷的发展现状及未来发展趋势 分别从生产和消费的角度分析龙胆苦苷的主要生产地区 主要消费地区以及主要的生产商 重点分析全球与中国市场的主要厂商产品特点 产品
  • (R,线性回归)R语言里的模型诊断图(Residuals vs Fitted,Normal QQ , Scale-Location ,Residuals Leverage)

    线性回归 是概率统计学里最重要的统计方法 也是机器学习中一类非常重要的算法 线性模型简单理解非常容易 但是内涵是非常深奥的 尤其是线性回归模型中的Diagnostics plot的阅读与理解一直被认为是线性回归中的一个难点 在任何线性模型中
  • 获取微信公众号地址的图片不能正常显示的问题

    获取微信公众号地址的图片不能正常显示的问题 目前已经获取微信公众号发布的图片 但不能正常显示 提示 此图片来自微信公众平台 未经允许不得引用 看了一下他的地址是这样的 https mmbiz qpic cn mmbiz jpg ic70qV
  • Codeforces Round #291 (Div. 2)

    题目链接contest 514 A Chewba ca and Number 不允许有前导零 所以如果第一位是9的话 需要特别考虑 一开始理解错了题意 又WA了呜呜呜 include
  • 弱密码测试工具blaster使用演示

    声明 出品 安全客 以下内容 来自安全客作者原创 由于传播 利用此文所提供的信息而造成的任何直接或间接的后果和损失 均由使用者本人负责 长白山攻防实验室以及文章作者不承担任何责任 关于blaster blaster是一款强大的弱密码隐患检测
  • RabbitMQ-Java 简单使用

    RabbitMQ Java 入门案例 参考非常详细的博主教程 https www cnblogs com dtdx p 14362760 html SpringBoot Java 版教程 https blog csdn net lgl782
  • 【C/C++】智能指针

    文章目录 1 智能指针的原理 1 1RAII 1 2实现一个自己的智能指针 1 2 1拷贝出现的二次析构问题 2 标准库中的智能指针 2 1std auto ptr 2 2std unique ptr 2 3std shared ptr 2
  • ovs-vswitchd的启动分析

    ovs vswitchd的启动分析 无修改源码 一 主要数据结构和概念了解 1 概念 在 OVS 中 有几个非常重要的概念 Bridge Bridge 代表一个以太网交换机 Switch 一个主机中可以创建一个或者多个 Bridge 设备
  • 解决:DevTools failed to load SourceMap:... net::ERR_HTTP_RESPONSE_CODE_FAILURE的问题

    Google chrome开发人员控制台中一直报此错误 虽然只是一个警告 但是体验还是非常不好 先说解决方案 第一种 在Google chrome浏览器调试工具中 设置该调试工具 点开之后选择Settings 关闭此选项 虽然这种方式是隐藏
  • 小白的福音:零基础入门机器人操作系统ROS

    小小的机器人 如何运作 如何操作 作为一名程序员 你不想了解吗 今天就给大家解密 机器人操作系统ROS 今天分享的课程采用由浅入深 层层递进的讲解方式 让你0基础轻松入门ROS机器人操作系统 并利用ROS框架开发硬件驱动 课程亮点 1 课程
  • Numpy 实现全连接神经网络

    神经网络与深度学习实验报告 一 实验名称 Numpy 实现全连接神经网络 二 实验要求 用 python 的 numpy 模块实现全连接神经网络 网络结构为一个输入层 一个隐藏层 一个输出层 隐藏层的激活函数为 Relu 函数 输出层的激活
  • Qt系列文章之 QTabWidget

    上一篇文章介绍如何对QMessgeBox进行使用 本文紧接上文内容继续对Qt的窗体文件开发介绍 一般主界面会有很多控件和交互区域 如果把所有的控件都放在一个界面全部显示 整个界面就会显得非常臃肿繁琐 那么使用分页式的表格窗体布局就能将不同类
  • STM32 从APP跳入BootLoader问题

    在这次项目中 程序从APP跳入BootLoader主要遇到两个问题 做个记录 1 现象 跳入BootLoader后还没开始升级便重启 原因 APP程序中开启了独立看门狗 当跳入BootLoader时看门狗也继续计时 但并没有重新喂狗 因此导
  • uniapp开发日志

    bug 将Base64的编码解码看错 uniapp封装uni request方法 import utils from js utils js let debug false if process env NODE ENV developme
  • Advanced Computer Network Review(3)——BBR

    这是复习系列的第三篇 主要梳理BBR拥塞控制有关的一些要点 老师给出的复习要点如下 1 基于loss的拥塞控制存在什么问题 为什么 2 理解下面这张图 这篇文章的梳理部分参考了中科大郑烇老师 高级计算机网络 的相关部分 特此声明 一 基于l