跳到主要内容

6. 添加和移除 SSRC

6.1. 添加 RTP 流

当端点添加新的 RTP 流, 即开始使用新的 SSRC 时:

  • 它 MUST 尽快为新的 SSRC 发送 RTCP 分组
  • 初始 RTCP 分组 SHOULD 包含带有 CNAME 的 SDES 分组
  • 其他参与者会从这些 RTCP 分组中获知新的 SSRC
  • 端点 MUST 确保新的 SSRC 在会话内唯一

6.2. 移除 RTP 流

当端点停止使用某个 SSRC 时:

  • 它 SHOULD 为该 SSRC 发送 BYE 分组
  • BYE 分组允许其他参与者快速从其数据库中移除该 SSRC
  • 如果未发送 BYE, 其他参与者最终会使该 SSRC 超时
  • 发送 BYE 后, 该 SSRC SHOULD NOT 在同一会话中复用

7. 不同速率流的 RTCP 考虑

当端点发送多个分组速率差异很大的 RTP 流时, 适用特殊考虑.

7.1. SSRC 超时

7.1.1. RTP/AVPF T_rr_interval 参数的问题

原始 RTP/AVPF 规范在流具有不同速率时存在 SSRC 超时问题. T_rr_interval 参数可能导致低速率流过早超时.

7.1.2. 避免过早超时

为避免过早超时:

  • 接收方 MUST NOT 仅因缺少 RTP 分组就使某个 SSRC 超时
  • 判断 SSRC 是否仍处于活动状态时 MUST 考虑 RTCP 分组
  • 超时时间段应基于 RTCP 报告间隔, 而不是 RTP 分组速率

7.1.3. RTP/AVP 与 RTP/AVPF 之间的互操作性

当 RTP/AVP 和 RTP/AVPF 端点交互时:

  • 双方必须使用兼容的超时规则
  • 应应用更保守的超时规则
  • 必须谨慎确保 SSRC 不会过早超时

7.1.4. 更新后的 SSRC 超时规则

本文档更新 RFC 4585, 给出以下超时规则:

如果满足以下条件, SSRC 会被视为非活动, 并且 MAY 从参与者数据库中移除:

  • 在 5 倍 RTCP 报告间隔内未收到该 SSRC 的 RTP 或 RTCP 分组
  • 已收到该 SSRC 的 BYE 分组

用于超时计算的 RTCP 报告间隔应为:

  • 对于 RTP/AVP: 基于会话带宽计算出的间隔
  • 对于 RTP/AVPF: T_rr_interval 与计算间隔中的较大者

7.2. 调整 RTCP 传输

7.2.1. RTP/AVP 和 RTP/SAVP

对于 RTP/AVP 和 RTP/SAVP 配置文件:

  • RTCP 带宽在来自某个端点的所有 SSRC 之间共享
  • 端点应在其 SSRC 之间公平分配 RTCP 带宽
  • 低速率流仍应定期发送 RTCP 以避免超时

7.2.2. RTP/AVPF 和 RTP/SAVPF

对于 RTP/AVPF 和 RTP/SAVPF 配置文件:

  • T_rr_interval 参数按 SSRC 适用
  • 每个 SSRC 必须至少每 T_rr_interval 发送一次常规 RTCP 分组
  • 在配置文件约束内可以更频繁地发送反馈消息

8. 安全考虑 (Security Considerations)

RTP [RFC3550] 和 RTP/AVPF [RFC4585] 的安全考虑适用. 使用多个 SSRC 不会引入新的安全漏洞, 但实现者应注意:

  • SSRC 冲突 (SSRC Collision): 恶意端点可能故意造成 SSRC 冲突
  • 资源耗尽 (Resource Exhaustion): 攻击者可能创建大量 SSRC 以耗尽接收方资源
  • 冒充 (Impersonation): 没有适当认证时, 攻击者可能冒充 SSRC

实现 SHOULD:

  • 使用 SRTP [RFC3711] 保护 RTP 和 RTCP 分组
  • 限制从单个端点接受的 SSRC 数量
  • 通过 RTCP CNAME 和其他机制验证 SSRC 所有权

9. 参考文献 (References)

9.1. 规范性引用 (Normative References)

  • [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997.

  • [RFC3550] Schulzrinne, H., et al., "RTP: A Transport Protocol for Real-Time Applications", STD 64, RFC 3550, July 2003.

  • [RFC4585] Ott, J., et al., "Extended RTP Profile for Real-time Transport Control Protocol (RTCP)-Based Feedback (RTP/AVPF)", RFC 4585, July 2006.

  • [RFC3711] Baugher, M., et al., "The Secure Real-time Transport Protocol (SRTP)", RFC 3711, March 2004.

9.2. 资料性引用 (Informative References)

  • [RFC4588] Rey, J., et al., "RTP Retransmission Payload Format", RFC 4588, July 2006.

  • [RFC5109] Li, A., "RTP Payload Format for Generic Forward Error Correction", RFC 5109, December 2007.

  • [CLUE-FRAME] Duckworth, M., et al., "Framework for Telepresence Multi-Streams", Work in Progress, 2015.

  • [SDP-BUNDLE] Holmberg, C., et al., "Negotiating Media Multiplexing Using SDP", Work in Progress, 2016.

  • [MULTI-RTP] Westerlund, M., et al., "Multiple RTP Sessions on a Single Lower-Layer Transport", Work in Progress, 2016.