Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >BBR及其在实时音视频领域的应用

BBR及其在实时音视频领域的应用

作者头像
LiveVideoStack
发布于 2019-10-15 14:51:00
发布于 2019-10-15 14:51:00
2.4K0
举报
文章被收录于专栏:音视频技术音视频技术

实时音视频系统要求低延时,流畅性好,而实际网络状态却是复杂多变的,丢包,延时和网络带宽都在时刻变化,这就对网络拥塞控制算法提出了很高的要求。本文来自网易云信资深工程师肖磊在LiveVideoStackCon2019北京站上的精彩分享,文章中详细介绍了BBR拥塞控制算法产生背景及其演进。

文 / 肖磊 网易云信

整理 / LiveVideoStack

大家好,我是网易云信音视频工程师肖磊,目前致力于实时音视频领域的QoS研究,通过优化拥塞控制算法,为用户提供高带宽利用率,低延时,抗抖动能力强的实时音视频服务。

本次我分享的主题是BBR及其在实时音视频领域的应用,BBR全称是Bottleneck Bandwidth and RTT,它是谷歌在2016年推出的全新网络拥塞控制算法,在此之后大家对于拥塞控制的关注度逐渐提高,越来越多的新算法被推出。本次分享的内容主要包括BBR算法的基本原理以及BBR算法如何应用在网易云信的实时音视频产品中。

1. BBR产生的背景

拥塞控制始于20世纪80年代,当时TCP是滑动窗口的算法,拥塞窗口固定,需要通过不断地响应报文推动滑动窗口前进。但在1986年TCP导致了拥塞崩溃,比如现在多端采用TCP发起报文,实际带宽达不到所能提供的最大带宽时网络出现拥堵,此时会有越来越多的TCP发起重试,进而加剧拥堵情况。

2000年之后伴随着互联网大爆发,各类应用特别是音视频应用数量大幅增加,TCP拥塞控制算法无法满足当前互联网应用对网络传输高实时性、高带宽利用率、高吞吐量的需求,在这种背景下BBR应运而生。

1.1 TCP算法存在的问题

在互联网发展的过程当中,TCP算法也做出了一定改变,先后演进了Reno、NewReno、Cubic和Vegas,这些改进算法大体可以分为基于丢包和基于延时的拥塞控制算法。基于丢包的拥塞控制算法以Reno、NewReno为代表,它的主要问题有Buffer bloat和长肥管道两种,基于丢包的协议拥塞控制机制是被动式的,其依据网络中的丢包事件来做网络拥塞判断。即使网络中的负载很高,只要没有产生拥塞丢包,协议就不会主动降低自己的发送速度。最初路由器转发出口的Buffer 是比较小的,TCP在利用时容易造成全局同步,降低带宽利用率,随后路由器厂家由于硬件成本下降不断地增加Buffer,基于丢包反馈的协议在不丢包的情况下持续占用路由器buffer,虽然提高了网络带宽的利用率,但同时也意味着发生拥塞丢包后,网络抖动性加大。另外对于带宽和RTT都很高的长肥管道问题来说,管道中随机丢包的可能性很大,TCP的默认buffer设置比较小加上随机丢包造成的cwnd经常下折,导致带宽利用率依旧很低。

基于延时的拥塞控制算法以vegas为代表,但当vegas出现时,基于丢包的拥塞控制算法在市面已经占据主流,vegas抢不到带宽出现“饿死”现象,因此也没办法与之抗争。

在BBR出现之前,TCP的拥塞控制一直逃脱不了这两个方向,另外优化TCP的拥塞控制难免涉及到内核的修改,这也是限制TCP继续优化的一大问题。

1.2 BBR算法的特点及核心

BBR(Bottleneck Bandwidth and Round-trip propagation time)是一种基于带宽和延迟反馈的拥塞控制算法。目前已经演化到第二版,是一个典型的封闭反馈系统,发送多少报文和用多快的速度发送这些报文都是在每次反馈中不断调节。在BBR提出之前,拥塞控制都是基于事件的算法,需要通过丢包或延时事件驱动;BBR提出之后,拥塞控制是基于反馈的自主自动控制算法,对于速率的控制是由算法决定,而不由网络事件决定,算法核心是“不排队”。

2. BBR算法基本原理

2.1 BBR结构图

BBR算法的核心是找到最大带宽(Max BW)和最小延时(Min RTT)这两个参数,最大带宽和最小延时的乘积可以得到BDP(Bandwidth Delay Product), 而BDP就是网络链路中可以存放数据的最大容量。BDP驱动Probing State Machine得到Rate quantum和cwnd,分别设置到发送引擎中就可以解决发送速度和数据量的问题。

2.2 即时带宽的计算

一般情况下的即时带宽计算,很多人认为将发送报文和收到报文的时间点记录下来,发包数量再除以时间就可以得到带宽,但这样的计算方式是错误的。由于delay feedback表示一组报文的响应,一组报文之后会有一个延迟的相应来通知哪些报文没有收到,以及收到的时间差是多少。delay feedback容易受到网络影响,因此报文不会均匀发送,易发生聚合和丢包现象,在计算时要考虑发送的时间差和ack的时间差,公式为:bandwidth = delivered/max(send time,ack time),这样才能抵消掉延迟聚合和丢失的情况。

2.3 BDP

BDP(带宽延迟积)是BBR算法中的核心,其中最大带宽和最小延迟不能同时得到。如图所示,横轴是网络链路中的数据量,纵轴分别是RTT和带宽,在RTT不变的时候,网络没有发生拥塞,带宽一直在上升,没有达到最大,而当带宽停止上涨的时候,网络开始拥塞,RTT持续变大,直到发生丢包。图中BDP所标识的点就是理想情况下最大带宽和最小延时。很明显只有在没有发生拥塞时才能得到RTT的数值,因此很难在同一时刻找到最小的RTT和最大带宽。

2.4 BBR状态机

既然最大带宽和最小延迟不能同时得到,必然存在探测最大带宽和最小RTT的过程。上图表示的是BBR的状态机,状态机分为Startup,Drain,ProbeBW,ProbeRTT4个阶段。Startup阶段类似于普通拥塞控制里的慢启动,以2/ln2的增益系数持续更新发包速率,带宽连续三次没有增长就可以判定达到最大带宽而进入Drain状态。

进入Drain状态时队列可能存在拥堵,因此需要把 Startup状态中产生的队列排空,排空的速率是ln2/2,如果inflight < BDP 说明此时网络由BBR造成的拥塞已经全部排空,如果 inflght > BDP 说明此时网络还有拥塞,不能进入下一个状态。

拥塞排空之后会进入探测带宽阶段,探测最大带宽的方法是在10个RTT中观测到的最大带宽,以此数据作为最大带宽。如果10s没有得到最小RTT,超时之后需要继续探测最小RTT。探测最小RTT需要尽量避免网络拥堵,降低拥塞窗口,发送比较少的报文。整个BBR的拥塞控制在启动之后,最终是在Drain和ProbeBW阶段之间切换。

3. BBR算法的优缺点

BBR相对TCP的优点包括抗丢包能力强、延迟低、抢占能力强和平稳发送。在BBR算法之前的TCP Cubic,拥塞控制算法并没有平稳发送的说法,而只是判断发送与否的问题,BBR算法出现之后,会平稳的发送数据,不会突发流量冲击。BBR相对TCP的优点包括抗丢包能力强、延迟低、抢占能力强和平稳发送。在BBR算法之前的TCP Cubic,拥塞控制算法并没有平稳发送的说法,而只是判断发送与否的问题,BBR算法出现之后,会平稳的发送数据,不会突发流量冲击。

3.1 抗丢包能力强

关于BBR算法的抗丢包能力可以用上图来说明,BBR算法不会因为一次或者偶然的丢包就大幅降低吞吐量,因此具有较强的抗丢包能力。

3.2 低延迟/抢占能力强

对于BBR在低延迟方面的优势来说,由于目前关于拥塞控制的算法很多,BBR在运转时设备中可能会有多种拥塞控制算法同时作用的情况,BBR算法只能保证自己不排队。但在实际现行网络下,是否排队并不由BBR一个算法决定,运行过程中BBR算法不会加重网络拥塞。

在带宽探测阶段,BBR算法每一轮都会尝试上探更大的带宽,由此可以很快抢占其他拥塞算法让出来的带宽,这也是BBR算法抢占能力强的原因。

3.3 平稳发送

之前提到在TCP算法中并没有平稳发送的说法,BBR算法后来引入了平稳发送的概念,不只解决了发送多少的问题,还解决了发送速率的问题,具体实现是使用cwnd控制发送数量,发送速度使用漏桶算法控制。BBR算法中的cwnd与TCP算法不同,TCP算法中的cwnd是对网络状态的模拟,分为发送窗口和接收窗口,而BBR算法只有发送窗口,且cwnd = 2*BDP。

3.4 收敛速度慢/高于一定丢包率吞吐量下跌

BBR算法在具备一些优势的同时也存在一定的缺点,比如原始的BBR算法收敛性受到pacing gain周期影响,带宽突降的时候,BBR需要多个轮次才会降到实际带宽。这其中的原因是BBR每轮只能降速一次,而pacing gain的6个RTT的保持周期大大加长了这个时间。由于pacing gain上探周期的1.25无法抵消掉25%以上的丢包,这会造成带宽反馈持续下降,BBR吞吐量就会断崖式下跌。

3.5 深队列竞争不过Cubic

BBR算法设计之初cwnd = 2*BDP,在此之前BBR算法要比Cubic强很多,但在实际的网络环境中,如果出现buffer很大的情况,BBR是比Cubic竞争性差的,因此在应用BBR算法时必须了解当前的网络状况。

3.6 算法公平性/抗抖动能力

在算法公平性方面,BBR在与Reno竞争时可以占用90%以上的带宽,但在与多个BBR流竞争时,RTT高的流占用带宽更高,其中也暴露的漏洞是如果想占用更高带宽,可以人为调高RTT的值,这些并不是BBR算法的设计初衷。在抗抖动能力方面,RTT的抖动使BBR无法得到准确的BDP,探测带宽很有可能低于可用带宽。

4. BBR应用在实时音视频领域

4.1 BBR在实时音视频领域的优势

如果将BBR算法应用在实时音视频领域,需要满足带宽(特别是低带宽场景)探测准确,适合实时音视频传输的低延时需求,能够满足音视频传输码率平稳的需求以及快速响应带宽变化这四个要求。

4.2 BBR在实时音视频领域存在的问题

满足以上四个实时音视频需求的同时,BBR算法在应用时也存在着收敛速度慢、抗丢包能力无法达到预期的问题,另外实时音视频领域需要提供稳定的视频流,但BBR的ProbeRTT阶段只发4个包,发送速率下降太多会引发延迟加大和卡顿问题,最后BBR探测带宽需要Paddin有可能造成带宽浪费。

4.3 收敛速度/抗丢包能力解决办法

针对BBR应用在实时音视频领域遇到的问题,目前已经有不少解决方案。对于收敛速度慢的问题来说,BBR V2提出在Probe Down一次排空到位(inflight < BDP),另外还可以随机化6个1x平稳发送周期,缩短排空所需要的时间。对于抗丢包能力不足的问题来说,目前BBR算法的抗丢包能力是足够的,但在一些极端网络条件下可以把丢包率补偿到pacing rate,有效提升抗丢包能力。

4.4 ProbeRTT阶段问题解决办法

ProbeRTT并不适用实时音视频领域,因此可以选择直接去除,或者像BBR V2把probe RTT缩短到2.5s一次,使用0.5xBDP发送。

4.5 Padding/RTT不公平问题

为了保持带宽竞争性和平稳发送,BBR中的padding不可或缺,想要迅速感知带宽变化也必须有padding的存在。关于RTT不公平问题之前有提到RTT大占据的带宽多,但在排空阶段一次排空就可以缓解这个问题。

4.6 Cubic与BBR对比

由上图整体可以看出BBR带宽利用率要高于Cubic。

4.7 BBR与GCC对比

目前GCC控制算法在实时音视频领域占据主流,但WebRTC的GCC算法仍然有一些局限性,比如将带宽限制在300k,一段时间后取消限制的场景来对比,由图像对比可以得到,BBR比GCC的带宽估计更加准确(GCC:250k,BBR:300k),而在带宽限制取消后,GCC需要20s以上才能恢复到最大带宽,BBR仅需要2s就可以恢复。

如果将带宽限制在2.5Mbps,加入200ms delay,200ms jitter,此场景中GCC和BBR的表现如图所示,GCC带宽探测只有300k,而BBR带宽维持在2.5M附近波动,在如此恶劣的网络环境中BBR的表现已经是相当优秀了。

总结来看,BBR算法有很多优点的同时也有很多缺点,目前没有一个算法能够适用所有的网络状态,针对不同的网络状态选择不同的拥塞算法似乎是一个可行的办法,但基于当前拥塞算法,融合其他算法的优点也是可以实现的,在此希望能够涌现出更多有兴趣的人为实时音视频领域的拥塞算法出力。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-10-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 LiveVideoStack 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
TCP拥塞控制及BBR原理分析
导语:TCP拥塞控制不仅仅是网络层的概念,可以将其归属于控制论的范畴。在TCP的演进过程中,出现了很多优秀的思想和算法,以实现网络传输过程中,在公平竞争性的前提下,尽可能地利用带宽资源。本文介绍TCP发展过程中出现的几种拥塞控制算法,并着重介绍BBR的原理。
用户4141261
2018/12/07
15.1K0
直播弱网优化方法
直播平台纷繁杂多,流量入口逐渐从传统PC端过渡至移动端。直播规 模爆发式增长,2016年更是被誉为“直播元年”。以游戏为代表的泛娱乐直播是这一时期直播生态的重要组成部分。2015-2017年,4G技术普及,手机直播由于不受设备、场景等限制开始迅速普及,推动全民直播的出现;同时,由于直播功能的创新、直播平台以及资本的纷纷入局、政策支持,直播行业一度出现“千播大战”局面。期间,政府出台《电子竞技赛事管理暂行规定》等游戏行业相关政策,进一步推动了游戏直播的发展。
视频云直播helper
2022/02/03
6.1K1
​TCP 拥塞控制详解
作者:engleliu,腾讯 PCG 开发工程师 本文主要介绍 TCP 拥塞控制算法,内容多来自网上各个大佬的博客及《TCP/IP 详解》一书,在此基础上进行梳理总结,与大家分享。因水平有限,内容多有不足之处, 敬请谅解。 一、TCP 首部格式 在了解 TCP 的拥塞控制之前,先来看看 TCP 的首部格式和一些基本概念。 TCP 头部标准长度是 20 字节。包含源端口、目的端口、序列号、确认号、数据偏移、保留位、控制位、窗口大小、校验和、紧急指针、选项等。 TCP 首部格式 1.1 数据偏移(D
腾讯技术工程官方号
2020/06/01
3.3K0
一文解释清楚Google BBR拥塞控制算法原理
BBR对TCP性能的提升是巨大的,它能更有效的使用当下网络环境,Youtube应用后在吞吐量上有平均4%提升(对于日本这样的网络环境有14%以上的提升):
陶辉
2019/08/08
27.2K3
腾讯云音视频传输协议技术分析
导语 | 随着音视频应用的不断更新,对传输能力和体验的需求也日益增加,促进了传输技术的发展,也带了如何选择的难题。本文详解了音视频领域的几种主要传输协议,希望能够帮助大家解决实际需求和业务场景中的技术选型问题。 随着互联网的发展,Web及移动智能手机端的兴起,音视频应用也得到了蓬勃发展。同时伴随着4G/5G的商业化,人们在娱乐直播、购物、教育、医疗等领域,对于实时音视频通信的需求不断增长。直播、实时音视频等技术也开始崭露头角。 众多的音视频应用都避免不了一个问题就是,如何在现有的网络条件下,提
腾讯云音视频
2021/08/09
2.7K0
实时视频传输中的BBR拥塞控制
大家好,我是来自学霸君的袁荣喜,本次分享内容的核心是BBR在实时视频传输中的实践。BBR其实是基于TCP的一种拥塞算法,在实时音视频中的运用也是一种全新的尝试,接下来我将会为大家逐一介绍这种尝试所带来的优缺点。
LiveVideoStack
2019/07/19
1.9K0
七牛云QRTC自研传输协议(QRTP)对音画质量的提升
  //   编者按:自疫情开始席卷全球,人们对音视频的需求急剧上升。在需求上升的过程中,人们对网络延迟、音画质量的要求也在不断提高。LiveVideoStackCon 2022 音视频技术大会上海站有幸邀请到了七牛云资深开发工程师——于佳老师为我们讲述QRTN的网络架构是如何提升用户体验度的,以及分析其中的QRTP协议是如何对音画质量进行提升的。 文/于佳 整理/LiveVideoStack 大家好,我是于佳,来自七牛云开发团队,我今天给大家分享的主题是七牛云QRTC自研传输协议对音画质量的提升。今天的
LiveVideoStack
2022/08/26
5000
七牛云QRTC自研传输协议(QRTP)对音画质量的提升
Facebook:对比COPA 与CUBIC,BBR v1在拥塞控制及视频质量的表现
原文 https://engineering.fb.com/video-engineering/copa/
LiveVideoStack
2019/11/26
1.6K0
Facebook:对比COPA 与CUBIC,BBR v1在拥塞控制及视频质量的表现
Google BBR拥塞控制算法背后的数学解释 | 深度
作者 | 赵亚 转载自CSDN网站 杭州待了一段时间,回到深圳过国庆假期,无奈温州皮鞋?厂老板过节要回温州和上海,不在深圳,也就没有见着,非常遗憾! 国庆节当天,就写这个了。 我原本可能会在想国庆节的
AI科技大本营
2019/05/06
2.6K0
Google BBR拥塞控制算法背后的数学解释 | 深度
【杂谈】聊聊我们关于网络拥塞与控制优化的一些技术方案
互联网上的两点通信时,每经过一个路由设备叫一跳(Hop)。而每一跳都有不同的带宽,两点之间的可用带宽是每一跳中的最小值,被称为“Bottleneck BW”。
Yangsh888
2023/02/11
1.3K0
实时视频传输中的BBR拥塞控制
在复杂的网络环境中,想要实现实时视频传输,拥塞控制算法是尤为重点的一环。本文整理自学霸君高级技术总监袁荣喜在LiveVideoStackCon 2019上海大会中的分享,详细介绍了BBR拥塞控制算法在实时视频传输中新的实践以及优缺点。
LiveVideoStack
2019/07/16
3.2K0
实时视频传输中的BBR拥塞控制
MMSys'2023 | 丢包网络多站点并行下载的 CUBIC 拥塞避免机制改进算法
视频流媒体已经快速增长,并成为主要的互联网流量。实时视频流媒体使用户能够从各种提供商(如Netflix和YouTube)检索媒体内容,并使用户能够进行实时流媒体或视频通话。随着录制和显示技术的进步,立体和360度视频可能成为未来的另一个选择。除了观看,视频流还可以应用于将物理环境与扩展现实相结合,例如角色重建和物体检测
用户1324186
2023/10/28
4850
MMSys'2023 | 丢包网络多站点并行下载的 CUBIC 拥塞避免机制改进算法
新一代直播传输协议SRT
SRT协议是基于UDT的传输协议,保留了UDT的核心思想和机制,抗丢包能力强,适用于复杂的网络。在LiveVideoStack线上分享中,新浪音视频架构师 施维对SRT协议的原理、优缺点特性以及在
LiveVideoStack
2020/03/06
3.2K0
新一代直播传输协议SRT
长肥管道传输之痛与解决之道
随着腾讯云业务的全球扩张,越来越多的海外节点在陆续的建立起来,跨海,跨洲的长距离传输也越来越成为业务的常态(像直播视频云业务就有海外主播国内乃至全球观看的业务形态)。这种远距离的数据传输,拥有长的RTT(Round Trip Time往返时间)和高的带宽,管道容量(BDP,即Bandwidth和RTT的乘积)大,被称作长肥管道。传统的TCP应用于网络不稳定的长肥管道,传输效率不高,已越来越不能满足业务稳定高速传输的苛刻要求。本文分析了长肥管道存在的问题,并提出了解决此问题的一个思路。
glendai
2019/01/15
5.2K0
长肥管道传输之痛与解决之道
有的放矢,远程操控中实时音视频的优化之道
在上一篇文章中,我们介绍了远程操控的技术要点。从这一章开始,笔者将会依次介绍远程操控三大技术的应用及优化重点内容。本文就将会以实时音视频通信技术开始,其主要被用于解决远程操控中被操控设备或车辆周边环境画面和声音向远处控制端的实时传输,方便远程驾驶员或操控员能够清晰地了解被控设备周遭情况,从而进行针对性操控。比如车辆前进中前方和侧后方的画面,挖掘机作业过程中的抓臂画面都需要通过实时音视频技术进行远程传输。
社区小番茄
2021/12/09
1.2K0
有的放矢,远程操控中实时音视频的优化之道
日均超30亿分钟!腾讯实时音视频技术低延时的秘密
新冠肺炎疫情的突发,让全球远程办公、在线教育、在线协作、远程面试等领域需求急剧增加,这也让支撑远程通信的实时音视频技术成为焦点。由腾讯实时音视频(Tencent Real-Time Communication,TRTC)为基础支撑的腾讯内外众多产品业务如腾讯会议、企业微信群直播、腾讯课堂、VIPKID等均出现爆发式增长。 随着各地有序复工复产,TRTC 也为包括金融行业远程面审、保险远程业务、法院视频庭审、人社局远程面试、长三角教师云招聘、上海市重大产业项目云签约等重要项目发挥了重要作用。数据显示,目前TRTC 平台的客户端上行时长超过 30 亿分钟/天,每天并发在线达到千万级。 本文主要针对 TRTC 技术解读系列中低延时实现技术的解析。
smiling
2020/04/08
1.2K0
日均超30亿分钟!腾讯实时音视频技术低延时的秘密
面试热点|浅谈TCP/IP传输层TCP BBR算法
这是TCP/IP协议栈系列的第三篇文章,之前的一篇面试热点|理解TCP/IP传输层拥塞控制算法讲述了传统的拥塞控制算法基本原理,今天一起来学习下最新Linux内核中增加的拥塞控制算法:TCP BBR算法。
轩辕之风
2020/03/11
1.7K0
低延时实时音视频在5G远程操控场景的应用实践
  //   编者按:随着自动驾驶技术和5G行业应用的发展,5G远程实时操控类应用逐渐兴起,用于满足高危行业/恶劣场景远程作业、自动驾驶异常情况下远程介入等需求。相比直播、会议等传统实时音视频场景,由于操控的复杂性和车辆的移动性,远程实时操控对音视频传输的时延和可靠性提出了更高的要求。 本次分享将介绍5G远程实时操控行业应用场景对音视频传输的要求,以及腾讯云音视频针对5G远程实时操控场景的音视频传输优化和应用落地实践。 文/毛峻岭 整理/LiveVideoStack 我是来自腾讯的毛峻岭,今天很高兴能够给
LiveVideoStack
2022/08/26
1.2K0
低延时实时音视频在5G远程操控场景的应用实践
万字长文|全(小区局域)网最强TCP/IP拥塞控制总结
Paxos这个算法要很好地表达写出来并不容易,所以到现在还没有完成,于是就有了这篇组装的带有丝丝标题党感觉的干货文章,全小区最强TCP/IP总结...逃...
SDNLAB
2020/06/12
1.1K0
实时远程医学影像服务质量保障与网络优化
华大影像团队成立的意义:通过集成机器人技术、实时远程控制技术及超声影像技术,解决偏远地区、基层医疗机构缺少超声医生、以及现有医生超负荷工作的现状;打破传统超声诊疗方式的局限,克服时空的障碍,改善医疗资源分布不均衡的现状;使全民平等的享受优质的医疗服务。
LiveVideoStack
2021/09/01
8970
实时远程医学影像服务质量保障与网络优化
推荐阅读
相关推荐
TCP拥塞控制及BBR原理分析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档