2.2 什么是拥塞?
文章插图
3. 拥塞控制策略在讨论拥塞控制策略之前,首先介绍下什么叫做“拥塞”?下面以漏斗的模型为例来进行说明 。我们可以将漏斗看作信道,如果漏斗中堆积的液体越来越多,我们就认为它出现了拥塞 。如果说液体可以稳定的从漏斗中穿过,漏斗内没有任何液体堆积的现象发生,保持一种稳定、平衡的状态,那么我们认为它现在是正常状态 。如果漏斗中的液体没有满也没有增加,或者说漏斗中的液体变得越来越少则表明处于空载状态 。拥塞控制被定义了三个状态,分别是:Normal,Underuse,Overuse 。其中Underuse并不表示目前的状况是良性的,它往往表示拥塞发生以后的恢复阶段,处于一种不稳定阶段 。此时的码率肯定要被提高,但提高的具体数值不能确定,所以应适当采取一些保守的策略 。
3.1 如何评估拥塞状态
文章插图
评估拥塞的方法有两种,一种是基于丢包率的拥塞控制,一种是基于延迟的丢包控制 。通过这两种方法进行评估,可以清楚地判断当前网络状况处于Underuse还是Overuse的状态 。
3.2 如何控制拥塞
文章插图
在做控制拥塞时有三件事情要处理,第一要发现拥塞,发现拥塞以后去解决拥塞,解决拥塞以后把梳理给调上来 。那么就说呢,在实际网络里如果发现丢包的情况出现,其实拥塞已经发生了,此时再去执行解决办法已经为时过晚,所以往往会倾向于通过观察排队延迟来发现拥塞 。发现拥塞以后有两个处理方法,一个方法是扩大间距,保证安全距离 。第二种方法是降低码率 。
最后一个环节在于拥塞缓解之后,对Underuse如何处理 。首先当务之急是提高码率恢复清晰度,但调节的速率问题也是需要考虑的 。
拥塞控制的方法有两种,一种是基于丢包的拥塞控制,一种是基于排队延迟的拥塞控制,这两种方法孰优孰劣很难比较,一般都是采用两种方法相结合的形式 。
基于丢包的拥塞控制的优势是比较简单,只需要知道丢包率,就可以根据丢包率确认码率调整的方向与大小;劣势就是当我们发现丢包的时候,拥塞已经发生,在此基础上进行控制为时已晚 。
而基于延迟的拥塞控制,排队延迟本质上就是抖动,是拥塞的一种征兆 。这种方法的劣势之一是比较复杂,必须经过很多步骤才能做出判断,在此之前需要从接收端评估出抖动的程度,确定当前网络的状态,拥塞、Underuse还是Overuse,然后根据情况评估如何调整码率,整体来说是比较复杂的 。
文章插图
【实时音视频流媒体传输的思考和实践】第二个缺点,抖动本质上就是路由器上排队延迟队列的长短变化 。基于延迟的拥塞控制存在的缺点很明显,以上图为例如果允许的抖动缓冲队列的长度很长,很容易就能看出拥塞正在发生 。但如果长度很短,不管有没有拥塞都很难看的出来 。但如果队列很长,那么相对应的延迟也会很高
文章插图
接下来详细介绍如何控制拥塞 。如上图,左边是发送端,右边是接收端 。在这里需要解决两个问题,在哪里做评估?在哪里做控制?评估时需要得到两方面的信息,一个是丢包率,另外一个是抖动情况,也就是排队延迟的情况 。做评估最适合的地方是接收端,接收端的缓冲队列里面可以获取这些信息 。而发送端则比较适合做控制,因为最终码率大小的控制权在编码器,评估出的目标码率要交由编码器来进行编码 。
文章插图
基于延迟的Congestion Control以及基于丢包的拥塞控制这两种方法 。通过逆向思维的方式进行推理,拥塞控制的最终目标都是要得到一个目标码率(在拥塞控制发生的时候,码率需要调到什么样的数值),在得到码率之后就要考虑用什么样的速率调整到目标码率 。而调整码率的方式需要评估目前网络的状况再做决定,这是第三步 。第二步是如何评估负载状态,是按照Underuse、Normal还是Overuse,怎样利用排队的延迟等一系列数值来做评估 。这个评估是基于排队延迟的,所以第一步就要监控排队延迟,获得一系列排队延迟的时间,然后去评估它处于什么样的状态 。
推荐阅读
- 老忘记给手机充电?iPhone电量实时播报小功能了解下
- 10招教你提升抖音视频播放量-轻松破万的诀窍
- 5G时代-WebRTC音视频高级开发
- 抖音视频点赞一万提现多少 抖音点赞一万怎么提现
- 如何从0开始,搭建企业的实时数据中台?
- 抖音视频多久不会被推荐 抖音都是短视频吗
- Linux 实时性能测试工具 Cyclictest
- 淘宝直播间观看人数是累计的吗 淘宝直播人数是实时还是累计
- Web端实时通信解决方案
- 抖音上热门投放dou什么意思 抖音视频不能投放dou+的还会推荐吗