2. RTP and RTCP Packet Forms and Protocol Behavior
-
RTP 与 RTCP 数据包格式及协议行为
RFC 3550 [1] 列举了可在配置文件中规定或修改的各项。本配置文件处理这些项。一般而言,本配置文件遵循 RTP 规范的默认值或推荐值。
RTP 数据头:使用标准 RTP 数据头。(一个例外是标记位(marker bit)的定义;见第 4 节。)
有效载荷类型:静态有效载荷类型在第 6 节中定义。
RTP 数据头附加项:不向 RTP 数据头追加任何额外固定字段。
RTP 数据头扩展:不定义 RTP 头扩展,但运行在本配置文件下的应用 MAY 使用此类扩展;因此,应用 SHOULD NOT 假定 RTP 头 X 位始终为零,并且 SHOULD 准备好忽略头扩展;如果将来定义头扩展,该定义 MUST 能够识别前 16 位的未在扩展方式中规定的内容。
RTCP 包类型:本配置文件不定义任何额外的 RTCP 包类型。
RTCP 报告间隔:RTCP 报告间隔的计算使用建议的常量。运行在本配置文件下的会话 MAY 为 RTCP 流量带宽规定单独的参数,而不是使用会话带宽的默认比例;RTCP 流量带宽 MAY 被划分为两个单独的会话参数,分别用于活动数据发送者和非活动数据发送者。遵循 RTP 规范 [1] 中将 RTCP 带宽的 1/4 专用于数据发送者的建议,这两个参数的 RECOMMENDED 默认值分别为 1.25% 和 3.75%。对于特定会话,当在单向链路上运行,或会话不接收质量反馈时,非数据发送者的 RTCP 带宽 MAY 被设为零;数据发送者的 RTCP 带宽 SHOULD 保持不变,以便仍能发送发送者报告,用于媒体间同步并通过 CNAME 标识源。规定 RTCP 带宽为一个或两个会话参数的方法超出本文档范围。
SR/RR 扩展:不为 RTCP SR 或 RR 定义扩展段。
SDES 使用:应用 MAY 使用 RTP 规范中描述的任意 SDES 项。虽然 CNAME 信息 MUST 在每个报告间隔发送,但其他项 SHOULD 仅每三个报告间隔发送一次,其中 NAME 在该位置八次中发送七次,其余 SDES 项循环占用第八个位置,如 RTP 规范第 6.2.2 节所定义。换言之,NAME 在 RTCP 包 1、4、7、10、13、16、19 中发送,例如 EMAIL 用于 RTCP 包 22。
安全:RTP 的默认安全服务即本配置文件下的默认安全服务。
字符串到密钥映射:本配置文件不规定此类映射。
拥塞:RTP 和本配置文件可以在增强型网络服务的上下文中使用,例如通过 Integrated Services(RFC 1633)[4] 或 Differentiated Services(RFC 2475)[5],也可以与尽力而为(best-effort)服务一起使用。
如果使用增强型服务,RTP 接收者 SHOULD 检测丢包,以确保所请求的服务确实被交付。如果没有,则它们 SHOULD 假定正在接收的是尽力而为服务,并相应地调整。
如果使用尽力而为服务,RTP 接收者 SHOULD 检测丢包,以确保丢包率处于可接受参数范围内。如果在合理时间尺度上测得的 TCP 平均吞吐量不低于该 RTP 流所能达到的吞吐量,则丢包被视为可接受的;这可通过实现拥塞控制机制以调整传输速率(或在分发式会话中订阅的数量),或在丢包率高到不可接受时安排接收者离开会话来满足此条件。
与 TCP 的比较无法精确规定,但意图是在时间尺度吞吐量上进行“数量级”比较。衡量 TCP 吞吐量的时间尺度是连接的往返时间。本质上,该要求说明,在尽力而为的互联网上部署一个任意消耗带宽且不能在数量级内与 TCP 公平竞争的应用(无论使用 RTP 还是任何其他传输协议)是不可接受的。
底层协议:本配置文件规定在单播和多播 UDP 以及 TCP 之上使用 RTP。(这并不排除在 RTP 由其他低层协议承载时使用本定义。)
传输映射:使用 RTP 和 RTCP 到传输地址的标准映射。
封装:本配置文件把 UDP 以外协议中的 RTP 封装规定留给应用定义。