跳到主要内容

10. Congestion Control (拥塞控制)

10. Congestion Control (拥塞控制)

RTP 的拥塞控制必须按照 RFC 3550 [5] 以及任何适用的 RTP 配置文件 (例如 RFC 3551 [16]) 使用. 若使用尽力而为 (best-effort) 服务, 对本载荷格式的用户还有一项附加要求: 必须监测丢包, 以确保丢包率在可接受参数范围内. 若在同一网络路径上经历相同网络条件的 TCP 流, 在合理时间尺度上测得的平均吞吐量不低于 RTP 流所达到的吞吐量, 则丢包被认为是可接受的. 可通过实现拥塞控制机制来调整传输速率 (或分层多播会话中订阅的层数), 或在丢包率不可接受时安排接收方离开会话, 来满足该条件.

在实时编码时, 遵守拥塞控制原则所需的比特率自适应较易实现. 然而, 在传输预编码内容时, 带宽自适应需要同一内容存在多种不同比特率的编码表示, 或在码流 (bitstream) 中存在 non-reference pictures (非参考图像) 或 sub-sequences (子序列) [22]. 不同表示之间的切换通常可在同一会话中完成, 例如通过采用 Extended profile 中称为 SI/SP slices 的概念, 或在 Instantaneous Decoding Refresh (即时解码刷新, IDR) 图像边界处切换流. 仅当需要更改不可降级参数 (例如 profile/level ID 中的 profile 部分) 时, 才有必要终止并重启媒体流. 这可通过使用不同的 RTP 载荷类型来完成.

MANE 可以遵循第 7.3 节中的建议, 在数据包流因先前丢包而损坏时从数据包流中移除某些不可用数据包. 这在某些特殊情况下有助于减轻网络负载.