问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

视频云服务质量(Qos)之抗丢包策略

创作时间:
作者:
@小白创作中心

视频云服务质量(Qos)之抗丢包策略

引用
CSDN
1.
https://blog.csdn.net/zvayivqt0ufji/article/details/141339265

在实时通信和流媒体传输中,服务质量(QoS)是确保数据传输稳定性和可靠性的关键。其中,抗丢包策略是QoS的重要组成部分,常见的策略包括NACK(Negative Acknowledgment)和TWCC(Transport Wide Congestion Control)。本文将详细介绍这两种机制的工作原理和应用场景。

NACK生成策略

NACK是一种反馈机制,当接收端检测到丢包时,会向发送端发送一个NACK消息,请求重新发送丢失的数据包。具体来说,NACK通过RTCP(Real-time Transport Control Protocol)包进行反馈,包类型为205,反馈类型为1。

如图所示,接收端在收到报文4之后发现报文2、3未到达,会将报文2、3放入丢失NACK列表。当超过一定乱序阈值,或者超过一定抖动时间(根据RTT计算),接收端会向发送端请求重传丢失的报文2、3。

对于NACK来说,需要维护一个NACK数组来存储NACK信息。NACK数组包含以下字段:

  • params: NACK参数
  • seqNum: 丢包RTP序列号
  • bornAt: NACK信息生成时间
  • tries: 此NACK包发送次数
  • lastNACKedAt: 最后一次NACK的时间

SFU(Selective Forwarding Unit)在处理数据流时,会检查每个RTP包的序列号。如果发现序列号之间存在间隙,SFU会识别出这些潜在的丢包,并构建相应的NACK数据,存储在NACK数组中。一旦接收到NACK数组中序列号对应的RTP包,SFU会将对应的NACK数据从数组中移除。此外,SFU会定期检查NACK数组,如果数组中的元素保存时间超过了20毫秒的阈值,会主动向发送端发送NACK报文,并记录该RTP报文的尝试次数,最多不超过10次。

TWCC策略

TWCC是一种拥塞控制机制,旨在减少网络拥塞和丢包。它通过RTP传输层的扩展和RTCP反馈消息,基于丢包和延迟估算带宽占用是否有拥塞,从而调整媒体流的发送速率。TWCC主要的估算和决策在发送方,采用了线性回归和最小二乘法。

到达时间模型

在WebRTC中,可以通过延迟梯度来衡量网络状况。延迟梯度不是一个个包来计算的,而是通过将包分组,然后计算这些包组之间的延迟,这样做可以减少计算次数,同时减少误差。

recv delta

recv delta长度为一个字节或两个字节,是RTCP Feedback Message中的字段,记录每个包与之前收到的包的间隔时间。它是250us的倍数,reference_time是当前包组第一个packet到达的时间。

基于延迟的拥塞控制算法

TWCC的工作流程可以概括为以下几个步骤:

  1. 在发送端,每个RTP数据包都会被赋予一个独一无二的序列号(Seq)并记录发送时间send_time。
  2. 接收端在捕获到RTP数据包时,会记录每个包的到达时间arrive time。通过分析这些时间数据,接收端能够计算出数据包的到达时间间隔recv delta。然后,接收端会定期将这些数据汇总,并通过TWCC反馈包的形式发送回发送端。
  3. 发送端接收到TWCC反馈后,会利用这些延迟信息来评估当前的网络状况。发送端计算发送时间间隔send_delta=g(i)-g(i-1)(表示第i个报文的发送时间)。
  4. 计算当前时刻时延变化和累计时延变化。
  5. 将累积延迟变化进行指数平滑。
  6. 以到达时间为横轴,延迟变化为纵轴进行线性回归,计算其拟合出的趋势线的斜率。
  7. 将计算出来的斜率与一个动态阈值进行比较,来发现是否发生拥塞。如果观察到拥塞,此时发送端会相应地降低其数据发送速率。相反,则表明网络状况较为顺畅,发送端则可以适度增加发送速率,以优化传输效率。
  8. 根据以上检测结果,调整带宽估计速率,GCC采用AIMD算法。针对速率控制分为两部分,一个是基于丢包的带宽估计,一个是上述所说的基于延迟的带宽估计,最终会综合比较两者之间的值,取两者之间的最小值作为带宽估计结果。

总结

NACK与TWCC是QoS中的重要策略之一。NACK机制只重传丢失的数据包,这意味着它不需要像前向纠错(FEC)那样在发送端添加额外的冗余数据。因此,NACK在带宽使用上更为高效,减少了不必要的带宽消耗。通过及时重传丢失的数据包,NACK机制能够减少音频、视频通话中的卡顿和中断现象,从而提升用户的通话体验。

对于TWCC,其中的核心是带宽估计。带宽估计如图所示。

从图表中可以明显观察到,可用带宽与预估带宽之间展现出了高度的一致性。尽管在调整过程中偶尔会出现轻微的过冲现象,但TWCC策略以其出色的收敛能力迅速调整,确保了网络状态的稳定。这种快速收敛的能力主要得益于TWCC策略的延迟敏感性。TWCC通过接收端发送的RTCP包,例如TWCC报告,来实时监测并评估网络状况。这些反馈信息包括数据包的到达时间和丢包状态等关键指标,为TWCC提供了及时的拥塞检测能力。

这种机制使得TWCC能够及时捕捉到网络状态的变化,并迅速采取相应的拥塞控制措施。通过这种方式,TWCC能够避免网络拥塞的进一步恶化,提高通信的稳定性。正是基于TWCC策略的这些优势,我们在自主研发的SFU中主要采用TWCC策略。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号