当 RTCP 数据包丢失时会发生什么?

what happen when RTCP packet get lost?

我是 RTP/RTCP 协议的新手,我听说 RTCP 将在 RTP 数据包之间定期发送以用于某些诊断目的。假设如果一个 RTP 数据包丢失,它可以通过序列号和 RTCP 数据包中的报告来识别。但是如果 RTCP 数据包本身丢失了怎么办?让我们以 "BYE" 格式为例(表示参与结束)。

在 RTP 会话期间,通过接收 RTCP 报告(发送方和接收方报告)建立和维护 SSRC 数据库(接收方和发送方都有自己的 SSRC)。

所以在丢弃 RTCP 报告的情况下,根据丢弃发生的原因,可能会发生许多事情:

  1. 源离开 RTP 会话并且其 BYE RTCP 数据包被丢弃。由于源离开了会话,它将超时,因为它不再发送 RTCP 报告并从参与者数据库中删除
  2. 源掉线并且不再发送任何 RTCP 报告。源将超时并从参与者数据库中删除
  3. 单个 RTCP 报告被丢弃。这不足以使源超时,RTCP 处理将在下一个收到的报告上恢复。发件人报告仅包括单调递增的数据字段,因此丢弃仅意味着更粗粒度的更新将在丢弃期后到达。接收方报告既有单调递增的字段,也有引用上次报告的字段。如果发生包含接收者报告的丢弃,那些包含与上一个报告相关的数据的字段将丢失,因为它只存在于该报告实例