火山引擎实时、低延时拥塞控制算法的优化实践

news2025/1/19 20:24:19

摘要

火山引擎智能拥塞控制算法 VICC(Volcano Intelligent Congestion Control)是一种自适应的拥塞控制算法,旨在解决全球不同网络环境下,不同音视频应用对带宽利用率和延时的差异化要求。它结合了传统拥塞控制算法(如 GCC 和 BBR)的优点,并且能够根据不同的网络条件、业务偏好和码率特征进行自适应调整,包括自适应拥塞响应速度、自适应带宽探测幅度、自适应丢包检测策略、自适应抗抖动能力和自适应 Padding。通过这些自适应调整,VICC 算法能够提升各种复杂弱网下的带宽利用率,同时在满足不同延时的条件下,尽量提升带宽的稳定性,为用户提供更好的音视频体验。

1.  行业现状和挑战

实时音视频应用的网络传输面临诸多方面的挑战,其中包括:

  • 带宽利用率:为了提供高质量的音视频体验,需要充分利用网络带宽,这就要求网络传输算法具有高效的带宽探测能力。

  • 延迟和响应时间:实时音视频应用要求快速的响应时间和超低延迟,这就要求网络传输技术具有快速的传输速度和低延迟的特性。

  • 可靠性和稳定性:网络传输过程中可能会出现拥塞、丢包等问题,这会影响到音视频的质量和稳定性,因此要求网络传输技术具有可靠性和稳定性,能够保证数据的正确传输和恢复。

  • 公平性和资源分配:在多用户场景下,需要保证网络传输的公平性和资源分配的合理性,以避免某些用户获得过多的资源,导致其他用户的服务质量下降。

除了上述挑战,实时音视频传输还需要关注体验指标,如实时性、流畅性、清晰度、音画同步性等,这些指标对于提供高质量的音视频体验至关重要。

1.1 现网音视频卡顿归因

为了快速提升线上用户弱网相关的体验,火山引擎根据抖音集团真实用户的负反馈数据打磨研发了“音视频卡顿归因模型”,它可以对线上音视频卡顿的所有 case 进行自动归因和聚类,为弱网问题的优化和优先级给出有效指导。

根据模型对线上用户音视频卡顿反馈的归因和聚类,我们发现,当前引起线上卡顿问题的主要原因是上下行大小缓存问题。

447fa68b4307a44a9253d99c5f8d862d.png线上用户视频/音频卡顿归因类型占比

大小缓存的描述,可以参考:https://www.ietf.org/archive/id/draft-cardwell-iccrg-bbr-congestion-control-00.txt

大缓存:Deep buffers,at bottleneck links with deep buffers, congestion happens before packet loss.

小缓存:shallow buffers, in shallow buffers, packet loss happens before congestion.

1.2 RTC 主流拥塞控制算法分析

自 Google 开源 WebRTC 实时音视频框架以来,GCC 作为默认拥塞控制算法备受行业研究和关注,而 WebRTC 在演进过程中,也在不断演进集成 BBR、PCC 等拥塞控制算法,以期望进一步提升实时音视频的传输性能。

下文以 GCC 和 BBR 算法为例,我们来看一看当前主流拥塞控制算法的特性和不足。

1.2.1 GCC 算法

GCC 算法是专为实时音视频传输设计的拥塞控制算法,但随着网络环境日益复杂、音视频应用场景越来越丰富,GCC 算法难以提升上限以获得更好的音视频传输体验。

aa33f220669013cee233d09554b3417d.png GCC 算法带宽估计与触发拥塞延时示意图

GCC 算法的关键特征

GCC 算法的发送/接收码率的联动是非连续性的。在检测到拥塞之前,发送码率和接收码率是不联动的;检测到拥塞之后,发送码率和接收码率才开始联动。如果要降低非联动过程中的网络延迟,GCC 算法需要过降带宽排空非联动过程中网络中堆积的数据。另外,GCC 的网络探测速度也较慢。

GCC 算法存在的问题

GCC 算法的几个主要问题中,最核心的问题是带宽估计的准确性(带宽利用率)和拥塞检测的有效性(对网络的冲击)存在很难调和的矛盾,导致这个问题的主要原因是:

  • GCC 算法的带宽估计强依赖拥塞检测,即,只有在算法判断为网络拥塞的情况下,才能进行带宽估计;

  • GCC 算法的拥塞控制灵敏度受到带宽估计的影响很大, 意味着当实际发送码率越贴近真实带宽,拥塞检测受到的干扰越大

1.2.2 BBR 算法

BBR 算法是互联网通用的拥塞控制算法,其设计目标追求高带宽利用率、低拥塞延迟和丢包,BBR 在通用互联网领域具备良好的性能表现,但因其设计目标和算法特性,不适应于实时音视频传输场景。

b6a712160158c473c9bcdd4e8ab691d5.png BBR 算法带宽估计与触发拥塞延时示意图

BBR 算法的关键特征

和 GCC 算法不同,BBR 算法的发送/接收码率的联动是连续性的,它实时跟踪接收码率,同时根据拥塞检测的结果,来调整发送窗口(cwnd)的大小,并最终影响发送码率。

BBR 算法存在的问题

虽然 BBR 在带宽估计准确性上等能力要高于 GCC,但它也存在一些明显的问题:

  • 突发拥塞时收敛速度慢;

  • 当链路丢包高于一定阈值时,吞吐量断崖式下跌;

  • 抗抖动能力一般;

  • 反向链路丢包延时影响上行带宽估计;

  • 探测最小延迟剧烈降窗不适用实时音视频传输;

由于 GCC 和 BBR 等算法在实时音视频传输场景存在一些不足,火山引擎网络传输团队自研了 VICC 算法,旨在优化上述问题的同时,也为火山引擎实时音视频业务提供更加良好的用户体验。

2. 火山引擎智能拥塞控制算法 VICC 介绍

VICC 算法主要通过网络状态统计进行自适应带宽估计决策,并作出带宽评估动作,以提升各种复杂网络下拥塞控制的性能表现。在近一年的实验室和线上业务打磨过程中,我们深入分析了不同算法原理及现网痛点弱网问题,输出了 40+ 项最佳工作点及 9 篇技术专利,线上业务的各项指标,特别是视频卡顿率、首帧时长等也得到了显著的改善。

65b901756859df4e9d45637cb351ca12.png 火山引擎智能拥塞控制算法 VICC 架构图

2.1 网络状态统计

评估当前网络状态的重要指标之一是网络状态统计参数,而准确的基础网络状态参数是提高带宽估计准确性和带宽利用率的关键基石。VICC 算法提供了多种基础网络状态参数,部分基础网络状态统计参数如下:

6bb956e4d1cadf8c64d17f7bb91daa4f.png

2.2 自适应拥塞控制

VICC 算法结合了传统拥塞控制算法的优点,并且能够根据不同的网络条件、业务偏好和码率特征进行自适应调整,包括自适应拥塞响应速度、自适应抗干扰能力、自适应丢包检测、自适应带宽探测幅度、自适应拥塞排空等。

7f854b1bf504dc2f70510fe9eda49f31.png
2.2.1 自适应拥塞检测

VICC 继承并优化了 GCC 和 BBR 拥塞检测能力,通过对发送码率、接收码率及延迟参数的关系进行建模,观察延迟参数变化趋势及其关联性,以及对于延迟参数的容忍程度进行拥塞响应,从而快速排空网络拥塞。

和 GCC / BBR 相比,VICC 拥塞响应及收敛速度更快。

c40a2cce484a380cd62ab8fb3a26ec67.png GCC / BBR / VICC 拥塞响应及收敛速度比较(线上实测)
2.2.2 自适应抗干扰能力

拥塞响应越灵敏,意味着在网络抖动场景下容易误判,导致算法抗干扰能力下降。VICC 使用蚁穴算法来对抗网络抖动和乱序,通过接收码率和发送码率来度量网络透过率,并结合观察延迟参数变化趋势及关联性,提升自适应抗干扰能力。

VICC 可以对抗 2000ms 以内的延迟抖动幅度,抗抖动能力显著比 GCC 和 BBR 强。

de367724772a0a93bf75b324664a6a2a.png GCC / BBR / VICC 抗抖动能力比较(线上实测)

灵活可配置的拥塞检测灵敏度

在自适应拥塞检测的基础上,VICC 还会根据业务偏好,提供灵活可配置的拥塞检测灵敏度模式设置,以适用于不同业务场景的诉求,并做好拥塞响应灵敏和抗干扰能力强的 trade-off。

以火山引擎 RTC 典型应用场景为例,互娱、企业通讯等场景一般可以容忍 200-300ms 的延时,而远程车控、云游戏等场景只能容忍 50-100ms 的延时。VICC 提供多种模式来适应不同场景的延时需求,在延时容忍度较高的场景,VICC 可以通过延迟拥塞响应时间来获得更高的带宽估计的稳定性,在延时容忍度较低的场景,VICC 可以通过快速拥塞响应来降低网络拥塞延迟。

a0ea5d855cd7de440ad9952d3c2fa981.png 火山引擎 RTC 典型应用场景
2.2.3 自适应丢包检测能力

通过对发送码率、接收码率及丢包参数的关系进行建模,并微幅调整发送码率,检测接收码率和丢包参数之间的关联性,VICC 可以自适应检测出丢包为随机丢包和拥塞丢包。一旦识别出随机丢包后,VICC 可以准确地对随机丢包进行系数补偿,以达到不误降带宽的效果。

和 GCC / BBR 相比,VICC 随机丢包抗性可达到 70% 以上。

12278ab1b5b1c38fd4e347a0b029a055.png GCC / BBR / VICC 随机丢包抗性比较(线上实测)
2.2.4 复杂弱网处理能力

考虑实时音视频传输对于延迟的容忍,根据延迟参数的程度、自适应上探幅度及下探幅度,在保留竞争力的同时,VICC 避免了因为频繁探测引入的网络延迟堆积问题。同时,在检测到拥塞缓解后,VICC 通过对发送码率、接收码率及延迟参数的关系进行建模,迅速提升带宽上探幅度和调整时间窗口;在探测到带宽满足音视频传输体验后,再逐步放慢上探幅度和时间间隔。

当网络存在瓶颈带宽时,VICC 的带宽探测相对 GCC 和 BBR 更平稳。当瓶颈带宽发生变化时,VICC 可以快速跟踪实际瓶颈带宽。

cd7b0983b9d1757a635c8f30a1f75842.png GCC / BBR / VICC 带宽探测平稳度比较

2.3 自适应 Padding 策略

VICC 使用自适应 Padding 策略来解决带宽下溢叠加复杂弱网场景下的带宽估计,在精准探测网络带宽的同时,尽量避免网络冲击和带宽浪费。在决策需要发送 Padding 时,会先根据带宽估计值设定目标发送码率,并实时度量接收码率,同时动态调整目标码率。

11ba7574a654d469bab94564419e1959.png VICC 自适应 Padding 策略示意图

3. VICC 表现及收益

通过对拥塞响应速度、带宽探测幅度、丢包检测策略、抗抖动能力等一系列的“自适应调整”,VICC 算法能够提升各种复杂弱网下的带宽利用率,同时在满足不同延时的条件下,尽量提升带宽的稳定性,为用户提供更好的音视频体验。

3.1 算法表现

为了更直观地展示 VICC 算法对于用户音视频体验的提升效果,我们在不同类型的弱网环境下进行了音视频通话测试,通过比较对端画面的实时性和流畅性来比较 VICC 算法和市场上同类算法的拥塞控制能力。

在上行 70% 丢包网络环境下,使用了 VICC 算法的火山引擎 RTC 依然保持稳定传输,几乎没有表现出卡顿。

模拟上行 70% 丢包网络下的 VICC 和市场同类算法表现比较

当网络突发上行 300kbps 限速小缓存时,使用了 VICC 算法的火山引擎 RTC 出现了短暂的卡顿,但算法很快进行了对抗,迅速恢复稳定和流畅,对用户的体验影响较小。

模拟上行 300kbps 限速小缓存网络下的 VICC 和市场同类算法表现比较

3.2 线上收益

VICC 算法经过了字节内部质量专项评估实验室打磨和验证后,在火山引擎线上业务上也进行了充分的流量验证,在视频通话、屏幕共享等场景中,视频卡顿率和首帧指标得到了显著的改善,其中,视频通话卡顿率下降 27%、首帧延时下降 100ms+;屏幕共享卡顿率下降 15%,首帧延迟下降 200ms。 同时,使用自适应 Padding 策略后,现网上下行码率也得到了明显的改善,其中,上行Padding码率下降 90%,下行下降 70%。

08233e7d3a7a82d09b08c08aa291009a.png

VICC 算法上线后对视频卡顿、首帧和 Padding 码率指标的改善

4. 未来展望

在网络环境高度复杂的背景下,影响用户体验的因素众多,有时通用算法难以精准匹配所有场景的环境特点,因此,一些特定场景的用户体验难以做到极致,无法实现“个性化场景自适应”的目标。

未来,我们将根据线上问题归因聚类建模,对用户网络场景精准识别,提升网络场景识别算法的准度和范围,并以此为驱动,针对不同的弱网场景进行全链路的差异化优化,使算法在各类网络模型下的收敛达到最优,持续提升用户体验。

点击阅读原文了解火山引擎 RTC 更多信息。

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

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

相关文章

YCSB and TPC-C on MySQL(避免重复load)

一、编译安装MySQL 下载mysql5.7.28源码 https://downloads.mysql.com/archives/community/ Select Operating System 选择 Source Code Select OS version 选择 All Operating Systems 选择带有boost的版本 安装系统包 apt -y install make cmake gcc g perl bison libai…

网站批量替换关键词方法

注意替换操作之前先对文件做好备份 1.下载http://downinfo.myhostadmin.net/ultrareplace5.02.rar 解压出来,运行UltraReplace.exe 2.点击菜单栏中的配置,全选所有文件类型,或者根据自己的需求选择部分,如htm、html、php、asp等 3.若替换单个文件,点击文件,若是要…

月薪15-25k,急招Web安全研究员

更多岗位招聘信息 请wx搜索【知了内推】小程序

CentOS 系统安装和使用Docker服务

系统环境 使用下面的命令,可以查看CentOS系统的版本。 lsb_release -a结果: 说明我的系统是7.9.2009版本的 安装Docker服务 依次执行下面的指令: yum install -y yum-utilsyum install -y docker即可安装docker服务 如果这样安装不成功…

python+selenium的web自动化上传操作的实现

一、关于上传操作 上传有两种情况: 如果是input可以直接输入路径的,那么直接使用send_keys(文件路径)输入路径即可; 非input标签的上传,则需要借助第三方工具:第三方库 pywin32、第三方工具pyautogui等等。 那这里…

Android问题笔记 - ViewPager嵌套RecyclerView,降低ViewPager灵敏度

点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&…

第二证券:建仓的几种方式?

建仓是出资者在证券商场中最根本的出资行为之一。简单来说,就是买入股票或基金,以期取得股价上涨所带来的收益。建仓是证券出资的第一步,也是最重要的一步。在选择建仓方法之前,了解常见的几种方法是很有必要的。 一、现金买入 现…

“技术”已成为京东持续“低价”的底气和重要动能

监制 | 何玺 排版 | 叶媛 10月19日,京东宣布今年的双十一将在10月23日晚8点正式开启。 今年双十一,京东向全体消费者做出了两项承诺:一是所有商品均“现货开卖”,无需等待。二是“全程价保”覆盖8亿商品,让消费者真正…

【学习草稿】bert文本分类

https://github.com/google-research/bert https://github.com/CyberZHG/keras-bert 在 BERT 中,每个单词的嵌入向量由三部分组成: Token 嵌入向量:该向量是 WordPiece 分词算法得到的子单词 ID 对应的嵌入向量。 Segment 嵌入向量&#x…

SequenceFile、元数据操作与MapReduce单词计数

文章目录 SequenceFile、元数据操作与MapReduce单词计数一、实验目标二、实验要求三、实验内容四、实验步骤附:系列文章 SequenceFile、元数据操作与MapReduce单词计数 一、实验目标 熟练掌握hadoop操作指令及HDFS命令行接口掌握HDFS SequenceFile读写操作掌握Map…

生鲜蔬果社区团购小程序商城的作用是什么

摆在生鲜蔬果商家面前的难题也非常明显,商家缺少营销方式,难以满足基本营销需求,经营没有方向,订单难以管理,商品也难以管理,难以打通引流-转化-留存-复购-裂变-分享路径,线下门店整体而言经营压…

【Ubuntu】Ubuntu20.04安装EasyConnect后打不开的问题。

1 安装过程 (1) 软件下载 EasyConnect下载地址 (2) 安装 dpkg -i EasyConnect_x64_7_6_7_3.deb 如果需要卸载的话,可使用如下命令: dpkg -r EasyConnect 双击EasyConnect图标,发现出现打不开的问题。 2 解决方法 首先,先看看是什么原因打不开呢? gedit /usr/share…

基于轻量级yolov5n+CBAM开发构建全球小麦麦穗智能检测计数系统

本文是前文的延伸内容,前文主要是对单个麦穗上麦穗颗粒的检测计数,这里本文的主要目的是要对麦穗进行智能化自动化的检测计数,话不多说,简单先看下效果: 接下来看下数据集: YOLO格式标注文件如下所示&…

社区版Visual Studio通过安装开源插件Fine Code Coverage实现单元测试代码覆盖率统计

1、在Visual Studio上安装Fine Code Coverage插件 扩展->管理扩展->联机 搜索到Fine Code Coverage插件,选中进行下载安装 2、修改Fine Code Coverage配置 如果单元测试框架用的是MSTest,一般需要修改插件配置,否则测试结果不正确 …

【深度学习】数据集最常见的问题及其解决方案

简介 如果您还没有听过,请告诉您一个事实,作为一名数据科学家,您应该始终站在一个角落跟你说:“你的结果与你的数据一样好。” 尝试通过提高模型能力来弥补糟糕的数据是许多人会犯的错误。这相当于你因为原来的汽车使用了劣质汽…

【Maven教程】(八):使用 Nexus 创建私服 ~

Maven 使用 Nexus 创建私服 1️⃣ Nexus简介2️⃣ 安装 Nexus2.1 下载 Nexus2.2 Bundle 方式安装 Nexus2.3 WAR 方式安装 Nexus2.4 登录 Nexus 3️⃣ Nexus 的仓库与仓库组3.1 Nexus 内置的仓库3.2 Nexus 仓库分类的概念3.3 创建 Nexus 宿主仓库3.4 创建 Nexus 代理仓库3.5 创…

跳动的文化:TikTok如何塑造多元社交内容?

在数字时代,社交媒体已成为塑造大众文化和社会趋势的强大工具。其中,TikTok崭露头角,以其独特的短视频平台在全球范围内赢得了数以亿计的用户。 TikTok不仅仅是一个娱乐应用,它还是一个文化引擎,重新定义着社交内容和…

一百九十二、Flume——Flume数据流监控工具Ganglia单机版安装

一、目的 在安装好Flume之后,需要用一个工具可以对Flume数据传输进行实时监控,这就是Ganglia 二、Ganglia介绍 Ganglia 由 gmond、gmetad 和 gweb 三部分组成。 (一)第一部分——gmond gmond(Ganglia Monitoring Da…

vue3中去除eslint严格模式

vue3中去除eslint严格模式 1、全局搜索:extends 2、一般在package.json或者vue.config.js中,直接删除掉vue/standard,重启项目。(在package.json文件中,编译不允许有注释,所以直接删掉)

论文阅读 - Coordinated Behavior on Social Media in 2019 UK General Election

论文链接: https://arxiv.org/abs/2008.08370 目录 摘要: Introduction Contributions Related Work Dataset Method Overview Surfacing Coordination in 2019 UK GE Analysis of Coordinated Behaviors 摘要: 协调的在线行为是信息…