WebRTC的NACK和RTX简述

背景

在丢包 10%下测试WebRTC,发现丢包导致的卡顿,需要一些开启一些机制来保证丢包重传。

摘要

简述WebRTC中NACK、RTX的功能和联系。

正文

NACK、RTX是WebRTC里丢包重传策略,两个策略之间有一定的联系。
NACK:接收端通过RTCP将丢包的序列号通知给发送端,让发送端重传该包。
RTX:发送端在新的SSRC上发送重传包或者冗余包。

两者均需要通过sdp协商开启,在支持的服务端(例如Janus)修改SDP即可开启。

要点

  • 重传包不一定通过RTX发送;
  • RTX包不一定用来重传丢失的包。

解释

在发送端收到NACK后,要重发接收端丢掉的包,发送的模式有两种:

  • RTX模式
    在接收端通过SDP使能发送端的RTX以后,重发的包封装到RTX包里发送,RTX包与原RTP有不同的SSRC,这样有助于避免SRTP的重放攻击,也能让接收端更好的估算带宽;
  • 普通模式
    在没有使能RTX时,发送端只是简单的重发原来的RTP包,这种模式会影响接收端的RTCP统计,比如会出现负的丢包率。

另外,RTX包有两种

  • 收到NACK重发的包
    如上述;
  • 发送端发送的冗余Padding包
    发送端的初始码率在达不到目标码率的情况下,会通过发送RTX包来补充,以能够逼近目标码率,当然这个机制必须启用RTX才能激活。因此,接收端可能会收到两种RTX包,一种是被NACK触发的,一种是发送端用来补充发送码率的冗余包。

猜你喜欢

转载自blog.csdn.net/sonysuqin/article/details/82021185
RTX
RTX