跳到主要内容

2. SAVPF 规则 (SAVPF Rules)

SAVP 被定义为 RTP (遵循常规 RTP profile AVP) 与传输层 (通常为 UDP) 之间的中间层. 这在 Real-time Transport Protocol 内形成了一个双层层次结构. 在 SAVPF 中, 上层 (AVP) 被用于反馈的扩展 RTP profile (AVPF) 替代.

AVPF 修改了发送 RTCP 数据包的定时规则, 并增加了特定于反馈的额外 RTCP 数据包格式. 这些功能与 RTCP 数据包随后是否被加密和/或完整性保护无关. 在 SAVPF 中, AVPF 层的功能保持不变.

AVPF profile 从 RFC 3550 [1] 继承了对 RTCP encryption prefix 的 (可选) 使用. 在 SAVPF profile 中不得使用 encryption prefix (SAVP 中也不使用它, 因为它只适用于 [1] 中规定的加密方法).

SAVP 部分使用添加到 RTP 和 RTCP 数据包末尾的额外字段, 并对 RTP/RTCP 数据包内容的 (部分) 执行密码学变换. 此行为在 SAVPF 中保持不变. AVPF 层为定时目的计算平均 RTCP 数据包大小时, 必须考虑 SAVP 层添加的字段.

SRTP 部分只有在 RTP 或 RTCP 已由 "higher" AVPF 层调度, 或已从传输协议接收时才会变为活动, 与其定时和内容无关.

2.1. 数据包格式 (Packet Formats)

AVPF 定义了额外的数据包格式以提供反馈信息. RFC 4585 [3] 中定义的这些额外数据包格式 (以及其他地方定义的用于 AVPF 的更多格式) 可以与 SAVPF 一起使用.

SAVP 为 SRTP 和 SRTCP 数据包定义了一种修改后的数据包格式, 其本质上由 RTP/RTCP 数据包格式加上一些用于安全目的的尾随协议字段组成. 对于 SAVPF, 所有 RTCP 数据包都必须按 RFC 3711 [4] 第 3.4 节中的定义进行封装.

2.2. 扩展 (Extensions)

其他地方定义的 AVPF RTCP feedback 数据包扩展可以与 SAVPF profile 一起使用, 前提是这些扩展符合 RFC 4585 [3] 的扩展规则.

按照 RFC 3711 [4] 第 6 节规则为 SAVP 定义的附加扩展 (例如 transforms) 也可以与 SAVPF profile 一起使用. 每个 RTCP 数据包的开销取决于所选择的扩展和 transform. 未来新增的扩展和 transform 可以引入目前尚未知的额外逐包开销.

最后, 专门针对 SAVPF 的进一步扩展可以在其他地方定义.

2.3. 组合 AVPF 和 SAVP 的影响 (Implications from Combining AVPF and SAVP)

AVPF profile 的目标是在统计意义上允许接收方向发送方提供及时反馈. 接收方平均被允许发送反馈信息的频率取决于 RTCP 带宽, 组大小以及 RTCP 数据包的平均大小. SRTCP (见 RFC 3711 [4] 第 3.4 节) 会在每个 RTCP 数据包末尾添加额外字段 (其中一些字段长度可配置), 这些字段可能至少有 10 到 20 字节大小 (默认 14 字节). 注意, 未来定义的扩展和 transform, 以及每个字段长度的配置, 可以增加更大的开销. 使用 SRTP 会增加 RTCP 数据包的平均大小, 从而降低能够提供 (及时) 反馈的频率. 应用设计者需要意识到这一点, 并采取预防措施以维持 RTCP 带宽份额. 这必须通过调整 RTCP 变量 "avg_rtcp_size" 来反映 SRTCP 数据包大小.