RFC 3556 PROPOSED STANDARD SDP · RTCP · BANDWIDTH

SDP RTCP Bandwidth: Session Description Protocol (SDP) Bandwidth Modifiers for RTP Control Protocol (RTCP) Bandwidth

Two SDP bandwidth modifiers, RS and RR, that set how much bandwidth RTCP may use.

On rfc-editor.org ↗
PUBLISHED
July 2003
AUTHORS
S. Casner
STREAM
IETF
DEFAULT RTCP SHARE
5% of session bandwidth
DEFAULT SENDER / RECEIVER SPLIT
1.25% / 3.75%
UNIT FOR RS AND RR
bits per second (integer)
UNIT FOR OTHER MODIFIERS
kilobits per second
DOI
10.17487/RFC3556

RFC text

Contents
Original text · RFC Editor View on rfc-editor.org ↗
Network Working Group                                          S. Casner
Request for Comments: 3556                                 Packet Design
Category: Standards Track                                      July 2003


         Session Description Protocol (SDP) Bandwidth Modifiers
               for RTP Control Protocol (RTCP) Bandwidth

Status of this Memo

   This document specifies an Internet standards track protocol for the
   Internet community, and requests discussion and suggestions for
   improvements.  Please refer to the current edition of the "Internet
   Official Protocol Standards" (STD 1) for the standardization state
   and status of this protocol.  Distribution of this memo is unlimited.

Copyright Notice

   Copyright (C) The Internet Society (2003).  All Rights Reserved.

Abstract

   This document defines an extension to the Session Description
   Protocol (SDP) to specify two additional modifiers for the bandwidth
   attribute.  These modifiers may be used to specify the bandwidth
   allowed for RTP Control Protocol (RTCP) packets in a Real-time
   Transport Protocol (RTP) session.

1.  Introduction

   The Real-time Transport Protocol (RTP), RFC 3550 [1], includes a
   control protocol RTCP which provides synchronization information from
   data senders and feedback information from data receivers.

   Normally, the amount of bandwidth allocated to RTCP in an RTP session
   is 5% of the session bandwidth.  For some applications, it may be
   appropriate to specify the RTCP bandwidth independently of the
   session bandwidth.  Using a separate parameter allows rate-adaptive
   applications to set an RTCP bandwidth consistent with a "typical"
   data bandwidth that is lower than the maximum bandwidth specified by
   the session bandwidth parameter.  That allows the RTCP bandwidth to
   be kept under 5% of the data bandwidth when the rate has been adapted
   downward.

   On the other hand, there may be applications that send data at very
   low rates but need to communicate extra RTCP information, such as APP
   packets.  These applications may need to specify RTCP bandwidth that
   is higher than 5% of the data bandwidth.

   The RTP specification allows a profile to specify that the RTCP
   bandwidth may be divided into two separate session parameters for
   those participants which are active data senders and those which are
   not.  Using two parameters allows RTCP reception reports to be turned
   off entirely for a particular session by setting the RTCP bandwidth
   for non-data-senders to zero while keeping the RTCP bandwidth for
   data senders non-zero so that sender reports can still be sent for
   inter-media synchronization.  Turning off RTCP reception reports is
   not recommended because they are needed for the functions listed in
   the RTP specification, particularly reception quality feedback and
   congestion control.  However, doing so may be appropriate for systems
   operating on unidirectional links or for sessions that do not require
   feedback on the quality of reception or liveness of receivers and
   that have other means to avoid congestion.

   This memo defines an extension to the Session Description Protocol
   (SDP) [3] to specify RTCP bandwidth for senders and non-senders
   (receivers).

2.  SDP Extensions

   The Session Description Protocol includes an optional bandwidth
   attribute with the following syntax:

      b=<modifier>:<bandwidth-value>

   where <modifier> is a single alphanumeric word giving the meaning of
   the bandwidth figure, and where the default units for <bandwidth-
   value> are kilobits per second.  This attribute specifies the
   proposed bandwidth to be used by the session or media.

   A typical use is with the modifier "AS" (for Application Specific
   Maximum) which may be used to specify the total bandwidth for a
   single media stream from one site (source).

   This memo defines two additional bandwidth modifiers:

      b=RS:<bandwidth-value>

      b=RR:<bandwidth-value>

   where "RS" indicates the RTCP bandwidth allocated to active data
   senders (as defined by the RTP spec) and "RR" indicates the RTCP
   bandwidth allocated to other participants in the RTP session (i.e.,
   receivers).  The exact behavior induced by specifying these bandwidth
   modifiers depends upon the algorithm used to calculate the RTCP
   reporting interval.  Different algorithms may be specified by
   different RTP profiles.

   For the RTP A/V Profile [2], which specifies that the default RTCP
   interval algorithm defined in the RTP spec [1] is to be used, at
   least RS/(RS+RR) of the RTCP bandwidth is dedicated to active data
   senders.  If the proportion of senders to total participants is less
   than or equal to RS/(RS+RR), each sender gets RS divided by the
   number of senders.  When the proportion of senders is greater than
   RS/(RS+RR), the senders get their proportion of the sum of these
   parameters, which means that a sender and a non-sender each get the
   same allocation.  Therefore, it is not possible to constrain the data
   senders to use less RTCP bandwidth than is allowed for non-senders.
   A few special cases are worth noting:

      o  If RR is zero, then the proportion of participants that are
         senders can never be greater than RS/(RS+RR), and therefore
         non-senders never get any RTCP bandwidth independent of the
         number of senders.

      o  Setting RS to zero does not mean that data senders are not
         allowed to send RTCP packets, it only means that they are
         treated the same as non-senders.  The proportion of senders (if
         there are any) would always be greater than RS/(RS+RR) if RR is
         non-zero.

      o  If RS and RR are both zero, it would be unwise to attempt
         calculation of the fraction RS/(RS+RR).

   The bandwidth allocation specified by the RS and RR modifiers applies
   to the total bandwidth consumed by all RTCP packet types, including
   SR, RR, SDES, BYE, APP and any new types defined in the future.  The
   <bandwidth-value> for these modifiers is in units of bits per second
   with an integer value.

      NOTE:  This specification was in conflict with the initial SDP
      spec in RFC 2327 which prescribes that the <bandwidth-value> for
      all bandwidth modifiers should be an integer number of kilobits
      per second.  This discrepancy was forced by the fact that the
      desired RTCP bandwidth setting may be less than 1 kb/s.

      At the 44th IETF meeting in Minneapolis, two solutions were
      considered: allow fractional values, or specify that the units for
      these particular modifiers would be in bits per second.  The
      second choice was preferred so that the syntax would not be
      changed.  The SDP spec is being modified [4] to advance to Draft
      Standard, and will allow this change in semantics.

3.  Default values

   If either or both of the RS and RR bandwidth specifiers are omitted,
   the default values for these parameters are as specified in the RTP
   profile in use for the session in question.  For the Audio/Video
   Profile, RFC 3551 [2], the defaults follow the recommendations of the
   RTP spec:

      o  The total RTCP bandwidth is 5% of the session bandwidth.  If
         one of these RTCP bandwidth specifiers is omitted, its value is
         5% minus the value of the other one, but not less than zero.
         If both are omitted, the sender and receiver RTCP bandwidths
         are 1.25% and 3.75% of the session bandwidth, respectively.

      o  At least RS/(RS+RR) of of the RTCP bandwidth is dedicated to
         active data senders.  When the proportion of senders is greater
         than RS/(RS+RR) of the participants, the senders get their
         proportion of the sum of these parameters.

   This memo does not impose limits on the values that may be specified
   with the RR and RS modifiers, other than that they must be non-
   negative.  However, the RTP specification and the appropriate RTP
   profile may specify limits.

4.  Precedence

   An SDP description consists of a session-level description (details
   that apply to the whole session and all media streams) and zero or
   more media-level descriptions (details that apply only to a single
   media stream).  Bandwidth specifiers may be present either at the
   session level to specify the total bandwidth shared by all media, or
   in the media sections to specify the bandwidth allocated to each
   medium, or both.  This is true for the two RTCP bandwidth modifiers
   defined here as well.

   Since the bandwidth allocated to RTCP is a fraction of the session
   bandwidth when not specified explicitly using the modifiers defined
   here, there is an interaction between the session bandwidth and RTCP
   bandwidth specifiers at the session and media levels of the SDP
   description.  The precedence of these specifiers is as follows, with
   (1) being the highest precedence:

   1) Explicit RR or RS specifier at media level

   2) Explicit RR or RS specifier at session level

   3) Default based on session bandwidth specifier at media level
   4) Default based on session bandwidth specifier at session level

   In particular, the relationship of (2) and (3) means that if the RR
   bandwidth is specified as zero at the session level, that turns off
   RTCP transmission for non-data-senders in all media.

5.  Example

   An example SDP description is:

      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

   In this example, the explicit RTCP bandwidths for the audio medium
   are equal to the defaults and so could be omitted.  However, for the
   video medium, the RTCP bandwidths have been set according to a data
   bandwidth of 64 kb/s even though the maximum data bandwidth is
   specified as 256 kb/s.  This is based on the assumption that the
   video data bandwidth will automatically adapt to a lower value based
   on network conditions.

6.  IANA Considerations

   RFC 2327 [3] requires that new bandwidth modifiers be registered with
   IANA by reference to a standards-track RFC specifying the semantics
   of the bandwidth modifier precisely, indicating when it should be
   used, and why the existing registered bandwidth specifiers do not
   suffice.

   This document is intended to satisfy those requirements.

   In the "bwtype" table of the Session Description Protocol (SDP)
   Parameters registry, the following two new bandwidth modifier names
   have been registered:

      RS
      RR

7.  Security Considerations

   This memo defines bandwidth modifier keywords as an extension to SDP,
   so the security considerations listed in the SDP specification apply
   to session descriptions containing these modifiers as with any other.

   The bandwidth value supplied with one of these modifiers could be
   unreasonably large and cause the application to send RTCP packets at
   an excessive rate, resulting in a denial of service.  This is similar
   to the risk that an unreasonable bandwidth could be specified for the
   media data, though encoders generally have a limited bandwidth range.
   Applications should apply validity checks to all parameters received
   in an SDP description, particularly one which is not authenticated.
   This memo cannot specify limits because they are dependent on the RTP
   profile and application.

8.  References

8.1  Normative References

   [1] Schulzrinne, H., Casner, S., Frederick, R. and V. Jacobson, "RTP:
       A Transport Protocol for Real-Time Applications," RFC 3550, July
       2003.

   [2] Schulzrinne, H. and S. Casner, "RTP Profile for Audio and Video
       Conferences with Minimal Control", RFC 3551, July 2003.

   [3] Handley, M. and V. Jacobson, "SDP: Session Description Protocol",
       RFC 2327, April 1998.

8.2  Informative References

   [4] Handley, M., Jacobson, V. and C. Perkins, "SDP: Session
       Description Protocol", Work in Progress.

9.  Author's Address

   Stephen L. Casner
   Packet Design
   3400 Hillview Avenue, Building 3
   Palo Alto, CA 94304
   United States

   Phone: +1 650 739-1843
   EMail: casner@acm.org

10.  Full Copyright Statement

   Copyright (C) The Internet Society (2003).  All Rights Reserved.

   This document and translations of it may be copied and furnished to
   others, and derivative works that comment on or otherwise explain it
   or assist in its implementation may be prepared, copied, published
   and distributed, in whole or in part, without restriction of any
   kind, provided that the above copyright notice and this paragraph are
   included on all such copies and derivative works.  However, this
   document itself may not be modified in any way, such as by removing
   the copyright notice or references to the Internet Society or other
   Internet organizations, except as needed for the purpose of
   developing Internet standards in which case the procedures for
   copyrights defined in the Internet Standards process must be
   followed, or as required to translate it into languages other than
   English.

   The limited permissions granted above are perpetual and will not be
   revoked by the Internet Society or its successors or assigns.

   This document and the information contained herein is provided on an
   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
   TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
   BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
   HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

Acknowledgement

   Funding for the RFC Editor function is currently provided by the
   Internet Society.

AI ELI5

On this page
PROBLEMRTCP normally gets 5% of the session bandwidth, but some applications need an RTCP budget that is set independently of the data rate, or that differs for senders and receivers.
MECHANISMSDP gains two bandwidth modifiers, b=RS for active data senders and b=RR for other participants, both in bits per second.
WHY IT MATTERSSession descriptions can now state RTCP bandwidth directly, including turning off receiver reports by setting RR to zero. Large values can cause denial of service, so receivers should validate them.

§1Why Set RTCP Bandwidth Separately

RTP (RFC 3550) comes with a control protocol, RTCP, that carries synchronization information from data senders and feedback from receivers. Normally RTCP is allocated 5% of the session bandwidth.

The RFC gives reasons to decouple the two. A rate-adaptive application may adapt its data rate downward while the session bandwidth stays at the maximum, so a separate RTCP figure lets RTCP stay under 5% of the actual data bandwidth. In the other direction, an application that sends data at a very low rate but wants to send extra RTCP such as APP packets may need more than 5%.

An RTP profile may also split RTCP bandwidth between active data senders and everyone else. Setting the non-sender share to zero turns off reception reports while senders can still send sender reports for inter-media synchronization. The RFC does not recommend turning off reception reports, because they are needed for reception quality feedback and congestion control. It says doing so may suit unidirectional links or sessions with other ways to avoid congestion.

Normally the status notes get a small fixed slice of the call's room. Sometimes that slice is too big or too small, so this memo lets you pick the size yourself.

§2The RS and RR Modifiers

SDP has an optional bandwidth line, b=<modifier>:<bandwidth-value>, where the default unit is kilobits per second. A typical modifier is AS, the application specific maximum for one media stream from one site.

This memo adds two modifiers: b=RS:<bandwidth-value> is the RTCP bandwidth for active data senders, and b=RR:<bandwidth-value> is the RTCP bandwidth for other participants (receivers). The allocation covers all RTCP packet types, including SR, RR, SDES, BYE, APP and any future types.

Unlike other SDP bandwidth modifiers, the value for these two is an integer number of bits per second, because the desired RTCP bandwidth may be less than 1 kb/s. The RFC notes this conflicts with the original SDP specification (RFC 2327). At the 44th IETF meeting two fixes were considered, fractional values or different units, and the second was preferred so the syntax stays unchanged.

There are two new labels you can write in a call description: one for how much room the speakers' notes get and one for the listeners' notes. They are counted in small units so tiny amounts are possible.

§2.1How the Split Behaves

The exact effect depends on the algorithm a given RTP profile uses to compute the RTCP reporting interval. For the RTP A/V Profile (RFC 3551), which uses the default algorithm in RFC 3550, at least RS/(RS+RR) of the RTCP bandwidth goes to active senders. If the share of senders among participants is at or below that ratio, each sender gets RS divided by the number of senders. If senders are a larger share, they get their proportion of the sum, so a sender and a non-sender each get the same allocation. It is therefore not possible to limit senders to less RTCP bandwidth than non-senders.

Special cases:

  • If RR is zero, non-senders never get any RTCP bandwidth, however many senders there are.
  • If RS is zero, senders can still send RTCP, but are treated like non-senders.
  • If both are zero, calculating RS/(RS+RR) would be unwise.

Speakers get at least their set share of the note room. If there are many speakers, they share more of it, but a speaker never gets less than a listener.

§3Defaults and Precedence

If RS or RR is omitted, the RTP profile in use supplies the default. For the Audio/Video Profile, total RTCP bandwidth is 5% of the session bandwidth. If one specifier is omitted, its value is 5% minus the other, but not less than zero. If both are omitted, sender and receiver RTCP get 1.25% and 3.75% of the session bandwidth. The memo sets no limits on values other than that they must be non-negative, though the RTP specification and profile may.

Bandwidth lines may appear at session level (shared by all media), at media level (for one medium), or both. From highest to lowest precedence:

  1. Explicit RR or RS at media level
  2. Explicit RR or RS at session level
  3. Default based on the session bandwidth specifier at media level
  4. Default based on the session bandwidth specifier at session level

One consequence is that setting RR to zero at session level turns off RTCP for non-data-senders in all media.

If you write a rule for one part of the call, it wins over a rule for the whole call, and a written rule always wins over the built-in guess.

§5An Example

The RFC's example SDP description has an audio medium with b=AS:64, b=RS:800 and b=RR:2400, and a video medium with b=AS:256, b=RS:800 and b=RR:2400. For audio, the explicit values equal the defaults and could be omitted. For video, the RTCP bandwidths are set for a data bandwidth of 64 kb/s even though the maximum is 256 kb/s, on the assumption that video will adapt to a lower rate under network conditions.

The video can use up to a lot of room, but the call expects to use less, so the status-note room is sized for the smaller amount.

SDP EXAMPLE WITH RS AND RR (RFC 3556)
Example SDP description
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

§6IANA Registration

The SDP specification (RFC 2327) requires new bandwidth modifiers to be registered with IANA by reference to a standards-track RFC that gives precise semantics, says when to use them, and explains why existing modifiers do not suffice. This document is intended to meet those requirements. The names RS and RR have been registered in the "bwtype" table of the SDP Parameters registry.

The two new labels were written in an official list so nobody else uses the same names for something different.

§7Security Considerations

The security considerations of SDP apply to descriptions containing these modifiers. In addition, a bandwidth value could be unreasonably large and make an application send RTCP at an excessive rate, causing denial of service. This is like the risk of an unreasonable media bandwidth, though encoders usually have a limited range.

Applications should validity-check all parameters received in an SDP description, especially one that is not authenticated. The memo cannot set limits because they depend on the RTP profile and application.

If someone writes a huge number, a program might flood the line with notes. So programs should check numbers before trusting them.

§8References