导读:近日,艾媒咨询发布了《2021年中国泛娱乐行业体验共享专题报告》,首次提出「体验共享」将成为泛娱乐行业日后发展的重要方向。针对该趋势,网易云信推出「体验共享」技术专题,从 QoS 策略、WE-CAN 全球智能路由网络、视频、音频等维度解读一起听、一起看、一起唱、一起玩等场景背后的技术支持。本篇文章是该系列的第一篇。

文|王任

网易云信资深音视频引擎开发工程师

随着移动网络的普及和发展,视频会议、互动直播等音视频交互式应用迎来了爆发式的增长,为满足人们对音视频高品质、低延时、极致流畅体验的要求,网络 QoS(Quality of Service,服务质量)策略提供了对数据传输通道的基础保障。

音视频网络传输常见的问题和挑战有:拥塞、延时抖动、丢包等。当网络出现拥塞,对拥塞的处理不当,会导致网络延时不断变大,严重时甚至会出现丢包,最终导致音视频播放延时久、卡顿等。拥塞控制是网络 QoS 非常重要的部分,本文主要介绍网易云信的拥塞控制技术和策略。

 什么是网络拥塞和拥塞控制

网络拥塞是指对网络资源(包括链路带宽、存储空间和处理器能力等)的使用超过了固有的处理能力和容量,造成网络传输性能下降的情况。拥塞控制的目的是通过控制发送端发送数据的速率,避免出现网络拥塞,以及出现拥塞之后,进行拥塞消除,从而提升网络吞吐量。

如果把网络中传输的数据比喻为道路交通中的车辆,网络拥塞就如同交通拥塞,拥塞控制策略就像是交通秩序管理和疏通措施。

网络拥塞产生的原因与网络分类

在 WIFI 网络中,信号强度和传输能力随着传输距离的增加而下降,物理遮挡、信号干扰、接入设备众多等原因都会导致链路的可用传输带宽受到限制。

移动通信网络中,同样也会受到移动网络信号强度以及基站接入容量的限制。

有线网络中,如果分配的是共享带宽,而不是独享带宽,上网高峰期间同样也有可能存在带宽的限制。

无论是哪种物理类型的网络,根据拥塞后不同的表现现象,可把网络大致分为两类,浅缓冲区(shallow buffers)网络:几乎没有网络节点 buffers,拥塞后直接表现为丢包,丢包前延时不增加或增加不明显;深缓冲区(depth buffers)网络:有较大的网络节点 buffers,拥塞后最先表现为延时增加,只有当网络节点 buffers 消耗殆尽时,才会产生丢包。

拥塞控制策略介绍

拥塞控制策略,主要包括实时带宽估计算法、码率分配策略以及平滑发送。

 融合的带宽估计算法 

采用融合算法,分别使用基于延时变化(delay-based)的算法和基于丢包(loss-based)的算法,对网络拥塞状态、丢包趋势进行检测,并结合 ACK 码率,计算得到带宽估计值。

算法流程如下:

  • 发送端平滑发送数据,接收端周期性反馈收包情况,包括每个包是否到达,以及具体的到达时间。

  • 发送端在接收到反馈信息后,把包到达时间以及包大小输入,计算给定时间窗内(通常是数百 ms)接收方接收码率的样本值,并通过贝叶斯估计算法(使用当前估计值和新的样本码率计算得到新的估计值。与当前估计值相差甚远的样本,被赋予较小的权重,因为它们被认为更有可能是与拥塞无关的延迟峰值造成的)计算接收方的接收码率(以下称为 ACK 码率),网络出现拥塞时,把ACK码率作为估计带宽值的参考值。

  • delay-based 算法进行带宽估计时,首先把发送数据包进行分组(burst group)处理,并计算得到相邻包组的传输延时变化值,然后把它作为输入,通过趋势线性(trendline)算法,对网络负载情况进行估计。一共有三种网络状态:拥塞(overuse)、正常(normal)、低负载(underuse)

  • loss-based 算法根据反馈信息,计算得到样本丢包率,然后把它和发送码率一起输入,通过滤波算法对丢包率趋势做出判定,有三种趋势状态:LossIncr、LossHold、LossDecr

  • 首先根据网络负载状态、丢包趋势状态以及 ACK 码率,进行码率计算(Rate Control),有三种状态:RC Decr、RC Hold、RC Incr,得到 RC 估计值。再结合当前丢包率和丢包趋势状态,计算得到最终的带宽估计值(Bandwidth Estimate)。

丢包率小于设定的阈值(低),取 θ*RC 估计值为最终估计值(θ 取值大于1.0,根据 RTT 动态调整,RTT 越大,越接近1.0);丢包率大于设定的阈值(高)且处于 LossIncr 状态持续超过阈值,取 ACK 码率为最终估计值;其他情况,取 RC 估计值为最终估计值。

对于深缓冲区网络,当网络出现拥塞时,传输延时呈现逐渐增加的趋势,所以 delay-based 算法能够及时检测网络处于拥塞状态,从而可以准确计算得到带宽估计值,并进行拥塞控制。

而对于浅缓冲区网络,当网络出现拥塞时,延时没有增加或增加不明显,delay-based 算法无法或无法及时检测到网络处于拥塞状态。此时,需结合丢包率和丢包趋势进行估计。

网络带宽变化时,根据实时带宽估计值动态调整编码码率,如下:

00:29

 码率分配 

通常,我们把带宽估计值的上限设置为视频的最大推荐码率(由视频质量控制 VQC 模块,根据采集分辨率和帧率等计算得到)。当网络没有丢包时,带宽估计的所有码率,全部分配用于编码;当网络存在丢包时,采用前向纠错(FEC)+丢包重传(NACK)的策略,进行丢包恢复。因此,带宽码率分配时,需保证带宽估计值等于 FEC 码率+重传码率+编码码率三者之和,才不会导致网络拥塞。可见,丢包情况下,FEC 和重传码率会挤占编码码率,视频质量会有一定程度上的下降。

动态码率上限策略

根据过去一段时间统计的发送总码率与编码码率的比值,得到当前的带外系数样本值,经滤波平滑处理(取观察窗口内的均值)后,得到最终的带外系数,用它乘以编码最大推荐码率,作为新的带宽估计上限。上限值的更新采取快升慢降的策略。

通过动态上限机制,即通过计算带外系数,把带宽估计值的上限进行提升,在可用带宽足够的情况下,使 FEC 和重传码率占用带外码率,提升编码码率。

70%丢包+2Mbps带限VS 70%丢包不限带宽,视频清晰度提升效果明显:

00:10

70 loss+2m

VS

70 loss

00:10

 平滑发送 

平滑发送(Paced Send)通过令牌桶限速机制来实现对发送速度的控制。所有待发送的 RTP 数据包(包括编码、FEC、重传包),都先放入优先级队列中进行管理,定时器根据带宽估计值和 Pacer 系数定期更新预算。当预算不为零时,直接发送队列中的数据并消耗预算,预算消耗完,暂停发送数据。

由 Pacer 系数控制平滑力度,若 Pacer 系数等于1.0,则表示严格按照带宽估计值发送数据,此时对网络的突发冲击最小,有利于提升带宽利用率和稳定性,但可能会引入一定的帧发送延时(Pacer 延时)。

在音视频应用中,由于以下原因,往发送队列中添加数据的速率存在波动:

  • 周期性的 I 帧、场景变化等导致编码器输出的帧大小、帧码率不均匀;

  • 应对突发丢包而增加的 FEC 、重传码率。

一方面要通过平滑减少码率波动峰值对网络造成的拥塞,避免引入大的拥塞延时导致卡顿;另一方面要减少较大帧的帧发送耗时,两者不可兼得。因此平滑系数的设置显得尤其重要,这实际上是 Pacer 延时、拥塞延时、带宽利用率、卡顿率等 QoE 评价指标之间的平衡。

动态 pacer 系数策略

设计原则:在带宽受限时,把平滑系数尽量设置小一些,并根据排队延时动态增减;在带宽不受限时,把平滑系数设置大一些,结合当前带宽估计值和过去一段时间内的网络拥塞状态(观察窗口期),判定带宽是否受限。

结语

本文主要介绍了云信网络 QoS 中的拥塞控制策略,包括带宽估计算法、码率分配以及平滑发送策略。拥塞控制应用到具体的音视频业务中,实际是各种 QoE (Quality of Experience,体验质量)指标之间的平衡。算法的改进通常不是一蹴而就的,需要通过实验室弱网模拟结合线上灰度观察关键指标来验证,采用数据驱动的方式,帮助打磨出最合适的拥塞控制策略和参数,在保障端到端低播放延迟、低卡顿率的同时,拥有高带宽利用率,为打造极致流畅的高品质音视频体验保驾护航。

 作者介绍 

王任,网易云信资深音视频引擎开发工程师,主要负责网络引擎的QoS算法开发,在流媒体传输协议、弱网对抗、拥塞控制算法设计方面有丰富的经验。

 相关阅读推荐 

  • 网络QoS的平衡之道——音视频弱网对抗策略介绍

  • 艾媒咨询:泛娱乐「体验共享」报告发布,网易云信多个案例领衔

极致流畅体验的密码:网易云信 QoS 策略介绍 | 体验共享技术专题相关推荐

  1. WE CAN:全球智能路由网络 | 体验共享技术专题

    导读:为了支持网易云信在娱乐社交领域打造融合通信云行业第一的品牌战略目标,建设覆盖全球的低延迟大规模传输网络,WE-CAN 在优化体验共享,降低传输延迟方面做了很多工作,本文将介绍 WE-CAN 全球 ...

  2. 技术系列课回顾 | 网易云信线上万人连麦技术大揭秘

    导读:本文根据网易云信资深音视频服务端开发工程师陈策在<MCtalk Live#5:网易云信线上万人连麦技术大揭秘>线上直播分享整理. 文|陈策 网易云信资深音视频服务端开发工程师 大家好 ...

  3. 亮相LiveVideoStackCon 2021,网易云信分享QoS优化之道

    2021年4月16日,多媒体技术领域盛会LiveVideoStackCon音视频技术大会在上海举行.本届会议以"新技术,新机会"为主题,聚焦在音频.视频.图像等技术的最新探索与应用 ...

  4. 网易云信联手网易云音乐,“一起听”创新音乐社交体验

    还记得"我的耳机分你一半"的感觉吗? 学生时代,教室里.操场边,抑或是上下学的公交车站,我们都曾与好朋友分享过同一副耳机,你的右耳,他的左耳,两只耳朵一起聆听着同一段属于青春的旋律 ...

  5. 艾媒咨询:泛娱乐「体验共享」报告发布,网易云信多个案例领衔

    近日,<2021年中国泛娱乐行业体验共享专题报告>正式发布.该报告由国内知名咨询机构艾媒咨询(iiMedia Research)深入国内众多家互联网平台调研后发布,聚焦在泛娱乐平台未来发展 ...

  6. 如何在游戏中举办国际大会?拆解网易云信的技术力量

    10月24-27日,第二届国际分布式人工智能学术会议(DAI 2020)在网易旗舰级武侠端游<逆水寒>中举行,300余位全球知名学者"穿越"到大宋,在浓浓古风的虚拟世界 ...

  7. 延迟开学不停学|网易云信在线教育解决方案为“空中课堂”保驾护航

    寒假本身就是在线教育的兵家必争之地.突如其来的"新冠肺炎"疫情让各地学校延迟了开学.在"停课不停学"的要求下,教育部门及学校纷纷开通"空中课堂&quo ...

  8. 网易云信携手海信S7,新社交开拓电视领域新未来

    社交是人类永恒的需求,随着万物互联时代的到来,社交的场景也在不断拓展.过去,社交局限于移动终端,电视只是单方面媒体传播的载体,现在,随着5G.AI.音视频技术的快速发展,社交与电视的深度融合一触即发. ...

  9. 三大技术突破,网易云信实现在线音乐教育极速上线

    在线教育因为解决了传统教育难以跨越的时间.空间问题而备受关注.而在线音乐教育作为兴趣教育的一大门类,尤其引人注目. 基于日益扩大的市场需求,网易云信推出了全球首个音乐教学解决方案,下面让我们一起来了解 ...

最新文章

  1. 让 Linux 防火墙新秀 nftables 为你的 VPS 保驾护航
  2. CSS---网络编程
  3. Vitamio中文API文档(1)—— MediaStore
  4. 课程一(Neural Networks and Deep Learning),第四周(Deep Neural Networks)—— 0.学习目标...
  5. cout输出数组_让程序从1开始一直执行++操作,10秒钟能输出最大的数是多少
  6. canvas笔记-二次贝塞尔曲线与三次贝塞尔曲线的用法
  7. Whats the difference between git reset --mixed, --soft, and --hard?
  8. php mysql 连接类_深入理解php的MySQL连接类
  9. Android无界面编程之使用Service
  10. matlab偏导数方程,利用Matlab求解不同类型的偏微分方程
  11. 往VS项目中添加本地图片资源
  12. 科研必备之图像局部区域放大——画中画形式
  13. P1598垂直柱状图
  14. C#使用List.Clear()方法可以让GC回收内存吗?
  15. 【技术贴】【技术贴】每次双击都会跳出来打开方式的解决办法。。。选择你想用来打开此文件的程序。。...
  16. 2021年5月22日 星期六 霾 高温
  17. iPhone手机通讯录怎么合并重复联系人?
  18. 陆面生态水文模拟与多源遥感数据同化
  19. SQL Server 2008 R2 下载 iso
  20. 【Unity2d】如何避免物体被销毁时绑定的音效消失

热门文章

  1. PuTTY 命令行改进 有效解决 中文乱码
  2. win32/mfc/qt 异常处理与总结
  3. 关闭NPC call(__)
  4. 设置mysql最大连接数的方法
  5. visionpro定位不跟随图像_机器视觉应用越来越多!不懂怎么办?在线公开课免费学...
  6. C语言 | C语言中的输出函数:printf()
  7. HTML+CSS+JavaScript复习笔记持更(八)——CSS3常用属性之列表
  8. java setter_java – 如何获得@getter和@setter?
  9. php命名空间规则解析及高级功能,PHP命名空间解析规则
  10. linux pci 寄存器,Linux 内核 标准 PCI 配置寄存器