备忘录状态:
本文档为Internet社区指定了一个Internet标准跟踪协议,并要求讨论和提出改进建议。请参阅当前版本的“互联网官方协议标准”(STD 1),以了解该协议的标准化说明和状态。本备忘录的分发是无限制的。
版权记录:
版权所有(C)互联网协会(2003)。保留所有权利。
摘要:
本文档定义了会话描述协议(SDP)的扩展,为带宽属性指定两个额外的修饰符。这些修饰符可以用来指定RTP控制协议(RTCP)数据包在实时传输协议(RTP)会话中允许的带宽。
1.序言
实时传输协议(RTP)rfc3550,包括一个控制协议RTCP,它提供来自数据发送方的同步信息和来自数据接收方的反馈信息。
一般情况下,RTP会话分配给RTCP的带宽为会话带宽的5%。对于某些应用程序,可以单独指定RTCP带宽而不是会话带宽。使用单独的参数可以使自适应速率的应用程序将RTCP带宽设置为与“典型”数据带宽一致,且小于会话带宽参数指定的最大带宽。当速率向下调整时,允许RTCP带宽保持在数据带宽的5%以下。
另一方面,可能有一些应用程序以非常低的速率发送数据,但需要通信额外的RTCP信息,比如APP包。这些应用程序可能需要指定高于数据带宽5%的RTCP带宽。
RTP规范允许一个概要文件指定RTCP带宽可以分为两个单独的会话参数,用于活跃的数据发送者和非活跃的数据发送者。使用两个参数允许在特定会话中完全关闭RTCP接收报告,方法是将非数据发送方的RTCP带宽设置为零,同时保持数据发送方的RTCP带宽为非零,这样发送方报告仍然可以进行跨媒体同步。不建议关闭RTCP接收报告,因为RTP规范中列出的功能需要它们,特别是接收质量反馈和拥塞控制。然而,这样做可能适合于在单向链路上运行的系统,或对于不需要反馈接收质量或接收者的活跃度的会话,并且有其他方法来避免拥塞。
本备忘录定义了会话描述协议(SDP)[3]的扩展,为发送者和非发送者(接收者)指定RTCP带宽。
2.SDP扩展
会话描述协议包含一个可选的带宽属性,语法如下:
b=<modifier>:<bandwidth-value>
在<modifier>是一个单一的字母数字单词,表示带宽数值的含义,其中<bandwidth-value>是千比特每秒。此属性指定会话或媒体使用的建议带宽。
一个典型的用法是使用修饰符“AS”(用于应用程序特定最大值),它可以用来指定来自一个站点(源)的单个媒体流的总带宽。
这个备忘录定义了两个额外的带宽修饰符:
b=RS:<bandwidth-value>
b=RR:<bandwidth-value>
其中“RS”表示分配给活动数据发送者的RTCP带宽(由RTP规范定义),“RR”表示分配给RTP会话中其他参与者(即接收者)的RTCP带宽。指定这些带宽修饰符所导致的确切行为取决于计算RTCP报告间隔所使用的算法。不同的RTP配置文件可以指定不同的算法。
对于RTP A/V Profile[2],它指定使用RTP规范[1]中定义的默认RTCP间隔算法,至少RTCP带宽的RS/(RS+RR)是专用于活动数据发送者的。如果发送者占总参与者的比例小于或等于RS/(RS+RR),则每个发送者的RS除以发送者的数量。当发送方所占比例大于RS/(RS+RR)时,发送方将得到这些参数总和中各自所占的比例,这意味着发送方和非发送方都将得到相同的分配。因此,不可能限制数据发送方使用比非发送方更少的RTCP带宽。一些特殊情况值得注意:
o如果RR为0,则发送方的参与者比例永远不能大于RS/(RS+RR),因此非发送方永远不会获得任何与发送方数量无关的RTCP带宽。
o将RS设置为0并不意味着不允许数据发送方发送RTCP报文,它只是意味着他们被视为非发送方。如果RR不为零,发送者的比例(如果有的话)总是大于RS/(RS+RR)。
o如果RS和RR都为零,尝试计算RS/(RS+RR)的分数是不明智的。
RS和RR修饰符指定的带宽分配适用于所有RTCP报文类型(包括SR、RR、SDES、BYE、APP以及未来定义的任何新类型)所消耗的总带宽。这些修饰符的<bandwidth-value>以位/秒为单位,并带有一个整数值。
注意:该规范与rfc2327中最初的SDP规范冲突,后者规定<bandwidth-value>对于所有带宽修改器,应该是每秒千比特数的整数。这种差异是由于期望的RTCP带宽设置可能小于1 kb/s这一事实造成的。
在明尼阿波利斯举行的第44届IETF会议上,考虑了两种解决方案:允许小数值,或者指定这些特定修饰器的单位为比特每秒。第二个选择是首选,这样语法就不会改变。SDP规范正在被修改[4],以推进到草案标准,并将允许在语义上的改变。
3.默认值
如果省略RS和RR带宽说明符中的一个或两个,这些参数的默认值将在问题会话使用的RTP配置文件中指定。对于音频/视频配置文件,rfc3551[2],默认值遵循RTP规范的建议
o RTCP总带宽为会话带宽的5%。如果省略了其中一个RTCP带宽指示符,其值为5%减去另一个的值,但不小于零。如果不设置,则发送端RTCP带宽为会话带宽的1.25%,接收端RTCP带宽为会话带宽的3.75%。
o至少RTCP带宽的RS/(RS+RR)是专用于活动数据发送者的。当发送方所占比例大于参与者的RS/(RS+RR)时,发送方得到这些参数之和所占的比例。
本备忘录没有对可以用RR和RS修饰符指定的值进行限制,除非它们必须是非负的。但是,RTP规范和适当的RTP概要文件可能会指定限制。
4.优先级
一个SDP描述由一个会话级描述(应用于整个会话和所有媒体流的细节)和零个或多个媒体级描述(只应用于单个媒体流的细节)组成。带宽指定符可以在会话级别上指定所有媒体共享的总带宽,也可以在媒体部分中指定分配给每个媒体的带宽,或者两者都有。这里定义的两个RTCP带宽修改器也是如此。
由于在没有使用这里定义的修饰符显式指定时,分配给RTCP的带宽是会话带宽的一小部分,因此在SDP描述的会话和媒体级别上,会话带宽和RTCP带宽指定符之间存在交互。这些说明符的优先级如下所示,其中(1)是最高的优先级:
1)在媒体级别显式的RR或RS说明符
2)在会话级别显式RR或RS说明符
3)默认值基于媒体级别的会话带宽说明符
4)默认值基于会话级别的会话带宽指定符
特别地,(2)和(3)的关系意味着,如果RR带宽在会话级别被指定为零,则关闭了所有媒体中非数据发送方的RTCP传输。
5.例子
SDP描述示例为:
v=0
o=mhandley 2890844526 2890842807 IN IP4 126.16.64.4
s=SDP Seminar
i=A Seminar on the session description protocol
c=IN IP4 224.2.17.12/127
t=2873397496 2873404696
m=audio 49170 RTP/AVP 0
b=AS:64
b=RS:800
b=RR:2400
m=video 51372 RTP/AVP 31
b=AS:256
b=RS:800
b=RR:2400
在本例中,音频媒体的显式RTCP带宽等于默认值,因此可以省略。但是对于视频媒体,RTCP的带宽设置为64kb /s,即使最大数据带宽被指定为256kb /s。这是基于假设视频数据带宽会根据网络条件自动适应较低的值。
6.IANA考虑
rfc2327[3]要求新的带宽修饰符通过引用一个标准轨道RFC向IANA注册,该RFC精确地指定了带宽修饰符的语义,指出应该在什么时候使用它,以及为什么现有注册的带宽说明符不能满足要求。
本文档旨在满足这些要求。
在会话描述协议(SDP)参数注册表的“bwtype”表中,以下两个新的带宽修改器名称已经注册:
RS
RR
7.安全考虑
本备忘录将带宽修饰词关键字定义为SDP的扩展,因此SDP规范中列出的安全注意事项适用于包含这些修饰词的会话描述。
其中一个修饰符提供的带宽值可能大得不合理,并导致应用程序以过高的速率发送RTCP包,从而导致拒绝服务。这类似于为媒体数据指定不合理带宽的风险,尽管编码器通常有一个有限的带宽范围。应用程序应该对SDP描述中收到的所有参数进行有效性检查,特别是那些没有经过身份验证的参数。此备忘录不能指定限制,因为它们依赖于RTP概要文件和应用程序。