当前位置:网站首页>Advanced Computer Network Review(3)——BBR
Advanced Computer Network Review(3)——BBR
2022-07-06 08:56:00 【Zheyuan Zou】
这是复习系列的第三篇,主要梳理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,意思是此时瓶颈链路上的缓冲区已经充满,再继续注入新的流量就会发生缓冲区溢出而丢包。所以在进入缓存受限阶段之后,因为有丢包的可能存在,其交付速率和往返时间都变得不可估算了。
边栏推荐
- Notes 01
- The problem and possible causes of the robot's instantaneous return to the origin of the world coordinate during rviz simulation
- LeetCode:剑指 Offer 04. 二维数组中的查找
- LeetCode:394. 字符串解码
- LeetCode:221. 最大正方形
- SimCLR:NLP中的对比学习
- vb. Net changes with the window, scales the size of the control and maintains its relative position
- Trying to use is on a network resource that is unavailable
- Detailed explanation of heap sorting
- ant-design的走马灯(Carousel)组件在TS(typescript)环境中调用prev以及next方法
猜你喜欢
Indentation of tabs and spaces when writing programs for sublime text
【剑指offer】序列化二叉树
Computer graduation design PHP Zhiduo online learning platform
Light of domestic games destroyed by cracking
【文本生成】论文合集推荐丨 斯坦福研究者引入时间控制方法 长文本生成更流畅
UML diagram memory skills
ESP8266-RTOS物联网开发
Target detection - pytorch uses mobilenet series (V1, V2, V3) to build yolov4 target detection platform
Using C language to complete a simple calculator (function pointer array and callback function)
MySQL uninstallation and installation methods
随机推荐
Sublime text using ctrl+b to run another program without closing other runs
Deep anatomy of C language -- C language keywords
The problem and possible causes of the robot's instantaneous return to the origin of the world coordinate during rviz simulation
Leetcode: Sword finger offer 48 The longest substring without repeated characters
Fairguard game reinforcement: under the upsurge of game going to sea, game security is facing new challenges
I-BERT
Warning in install. packages : package ‘RGtk2’ is not available for this version of R
LeetCode:39. 组合总和
LeetCode:498. 对角线遍历
LeetCode:387. 字符串中的第一个唯一字符
Notes 01
LeetCode:34. Find the first and last positions of elements in a sorted array
Guangzhou will promote the construction of a child friendly city, and will explore the establishment of a safe area 200 meters around the school
Bitwise logical operator
Navicat premium create MySQL create stored procedure
After PCD is converted to ply, it cannot be opened in meshlab, prompting error details: ignored EOF
LeetCode:124. Maximum path sum in binary tree
How to effectively conduct automated testing?
Introduction to the differences between compiler options of GCC dynamic library FPIC and FPIC
超高效!Swagger-Yapi的秘密