2.存储空间,主要体现在数据报的丢弃上 。
3.处理器能力,这个不仅仅指的是CPU,还有GPU,其它硬件编解码器等 。
根据服务模型不同,拥塞控制可分为预留策略和反馈策略 。
预留策略主要是向网络提交资源请求,在带宽足够,则会为主机预留响应资源 。否则拒绝 。
反馈策略主要是根据反馈,动态调整发送速率 。
网络层的拥塞控制
网络层的拥塞控制主要利用路由器的包调度算法和缓存管理技术,也就数要处理好两个基本问题 。存储和转发 。在技术上实现思想包括 。
TCP拥塞控制分为4个阶段:慢启动、拥塞避免、快速重传、恢复阶段 。如果在TCP启动阶段,向网络发出了很多数据,这个时候可能造成网络吞吐量下降 。慢启动阶段就是为了避免出现数据爆发的情况 。慢启动流程就是当建立新的连接时,先初始化一个数据包大小,按照拥塞窗口大小发送数据,收到一个ACK,拥塞窗口就增加一个数据包的发送量,基于这种反馈的策略,保证不破坏网络状态平衡,使启动阶段能够稳定 。如果连续收到确认帧,则控制算法判定网络要发生拥塞,这时就需要进入拥塞避免阶段 。若超时,窗口置1,就需要设置慢启动阈值,如果慢启动阈值小于拥塞窗口,TCP就执行拥塞避免算法,每收到一个确认帧,就需要增加一个数据包 。反之TCP重新进入慢启动 。拥塞控制过程如下图所示:
文章插图
拥塞控制
当源端收到3个或3个以上确认时,TCP就断定数据已经丢失,重传该数据包,迅速进入快传和恢复阶段 。
1.先进先出(FIFO)
比如FFmpeg、MediaCode等开源代码或音视频架构都是应用的非常多,基于此方法,路由转发的压力会下降 。如图所示:
文章插图
FIFO处理拥塞
FIFO优点是通过缓存,可以提前得到一些信息,避免卡顿 。缺点是对于特殊包的公平性较差,快速恢复的效率也不高 。
2.公平排队算法
这种算法表示每一路数据流都需要维护一个队列,路由器以轮询方式访问,当路由器来回扫描所有队列,将第一个包发出 。FQ的工作原理如图所示:
文章插图
FQ处理拥塞
FQ的优点是在轮询机制下表示什么时候可以发送完毕,通过结束时间去安排数据包发送,保证算法公平性,同时不会影响统计复用 。缺点实现复杂,需要更多的资源和容错处理 。市面上也有一些改进算法,比如加权公平排队算法、通过加权的方式分配缓存资源 。
3.ECN
ECN将更平均分配在路由器和终端节点,这类通知是通过简单的经过路由器的数据包中设置一个拥塞位来实现,先把ECN使能位发送,由路由器根据网络设置CE比特位,如果接受到网络反馈的这类CE置位的数据包,然后发出的数据包标记为丢弃包 。
优点是不需要超时重传,不依赖TCP定时,对于网络的突发性变化更好 。
4.REQ
这个算法可估计拥塞什么时候发生,按照一定的概率丢包,提高吞吐量 。
基于网络层和传输层的控制算法比较
文章插图
在组播环境的音视频的层次化传输方案如下图所示,这种基于应用层的控制,需要把音视频切分成更小的数据片,网络发生堵塞时,丢掉一些不太重要的数据 。这些类型的方法有3类,自适应算法,重传和缓冲 。
文章插图
应用层的拥塞控制切片流程
三类算法的延时比较 。
文章插图
三、音视频同步
音视频同步是流媒体中十分重要的模块,直接影响用户体验,如果音视频不同步,不仅仅导致观感效果差,而且还可能会引起视频卡顿,音频无法播放等 。所以这个模块与解码,编码等模块都有着千丝万缕的联系 。一般同步机制主要是分为三种,音频同步视频,视频同步音频,音视频同步一个固定时钟,字幕也有同步,这里暂且不讨论 。
音视频同步背后的故事?
【解析音视频网络传输技术之一】音视频在传输过程中,延时抖动,时钟偏差,网络变化都会导致同步的过程发生变化 。以下是延时抖动对流媒体同步的影响 。
推荐阅读
- CVT变速箱不允许打滑深度解析,CVT到底能不能买?
- 双离合变速箱寿命到底怎么样?能开几年?双离合顿挫原因解析
- 「HOLD·按键」功能解析:也许很多车主都还不懂
- 阳台朝西北风水 阳台朝向风水解析
- Paxos算法为什么说是Raft,Zab协议的鼻祖,及原理解析
- MySQL数据库下的Explain命令深度解析
- 共识算法Raft为什么这么流行,及原理解析
- WiFi系统的无线AP与AC之间的各种问题解析
- 不懂风格、怎能会穿?8种“风格穿搭”解析,值得精读的穿衣干货
- 厨房风水化解最细解析