rfc-3890

A Transport Independent Bandwidth Modifier for the Session Description Protocol (SDP)

M. Westerlund
date2004-09 streamIETF areaart wgmmusic statusPROPOSED STANDARD pages22 canonicalhttps://www.rfc-editor.org/rfc/rfc3890 doi10.17487/RFC3890
This document defines a Session Description Protocol (SDP) Transport Independent Application Specific Maximum (TIAS) bandwidth modifier that does not include transport overhead; instead an additional packet rate attribute is defined. The transport independent bit-rate value together with the maximum packet rate can then be used to calculate the real bit-rate over the transport actually used. The existing SDP bandwidth modifiers and their values include the bandwidth needed for the transport and IP layers. When using SDP with protocols like the Session Announcement Protocol (SAP), the Session Initiation Protocol (SIP), and the Real-Time Streaming Protocol (RTSP), and when the involved hosts has different transport overhead, for example due to different IP versions, the interpretation of what lower layer bandwidths are included is not clear. [STANDARDS-TRACK]

Extracted elements (21)

design-rationale §6.5.1

RTCP bandwidth is derived from the transport-dependent RTP session bandwidth (calculated locally using actual transport layers) rather than being fixed, because giving the exact same RTCP bit-rate to IPv4 and IPv6 hosts would result in unfair RTCP sending rates due to different header sizes. The small resulting unfairness (at most ~1% of total session bandwidth) is considered acceptable.

realtime, rtp

design-rationale §3.6

The existing 'AS' bandwidth modifier includes transport and IP overhead, making it ambiguous when SDP traverses IPv4/IPv6 translators or proxies — the receiver cannot determine which IP version was used in the calculation. TIAS solves this by excluding all transport overhead and providing maxprate to allow receivers to compute the correct overhead for whatever transport they actually use.

realtime, rtp, ip

design-rationale §6.3

The maxprate attribute uses a floating-point representation even though the sliding-window calculation always yields an integer, because the estimated or known maximum packet rate per second may be fractional for certain codec configurations.

realtime, rtp

design-rationale §6.2.2

TIAS uses bits per second (bps) rather than kilobits per second (kbps) as defined in RFC 2327, to allow for better resolution. This is consistent with the RR and RS bandwidth modifiers in RFC 3556, and has no implications on the parser.

realtime, rtp

interoperability-note §3.3

Converting an IPv4 bandwidth value to IPv6 requires the packet rate: new bandwidth = IPv4 bandwidth + packet_rate * 20 bytes (the typical difference between IPv6 and IPv4 headers). This conversion is generally not possible without explicit packet rate information, which 'a=ptime' does not reliably provide.

realtime, ip

interoperability-note §7.3

For SAP multicast sessions, all information needed to compute transport-dependent bit-rate is present in the SDP: the 'c=' line gives the address family, and the 'm=' line gives the transport layer (e.g., RTP/UDP). TIAS and maxprate integrate with SAP without protocol changes.

realtime, multicast

interoperability-note §3.4

RTCP traffic crossing an IPv4-to-IPv6 translator may experience up to a 25% increase in bit-rate and up to a 25% longer reporting interval for IPv6 nodes compared to IPv4 nodes, due to larger IPv6 headers. This results in at most 1.75% increase of total session bandwidth and is considered acceptable without complex solutions.

realtime, rtp, ip

interoperability-note §3.1

When an ALG translates SDP between IPv4 and IPv6 domains, it may change the 'c=' address type without updating the bandwidth value, causing clients to underestimate required bit-rate. TIAS avoids this problem since its value does not include IP-version-specific overhead.

realtime, ip, nat

normative-requirement §6.2.2 SHALL

A fractional TIAS bandwidth value SHALL always be rounded up to the next integer. TIAS SHALL NOT be present at the session level unless the same transport protocol is used for all media streams.

realtime, rtp

normative-requirement §6.4 SHALL

For RTP transport, TIAS conversion to RTP session bandwidth SHALL include RTP header with extensions, CSRC list, and profile-specific extensions in the lower-layer header size calculation, in addition to IP and UDP headers.

realtime, rtp

normative-requirement §6.1 RECOMMENDED

For the Conference Total (CT) modifier, it is RECOMMENDED that the CT value be calculated using reasonable worst-case overhead, taking the largest transport protocol overhead plus the largest IP overhead expected, summed across all media streams.

realtime, rtp

normative-requirement §6.2.3 SHOULD

If TIAS is present at the session level, it SHOULD also be present at the media level. The session-level TIAS value MAY be less than the sum of individual media stream values when not all streams reach their maximum simultaneously.

realtime, rtp

normative-requirement §6.3 MUST NOT

The 'maxprate' attribute MUST NOT be present at the session level if the media streams use different transport. The attribute MAY be present if the media streams use the same transport.

realtime, rtp

normative-requirement §6.2.3 RECOMMENDED

To allow backwards compatibility, it is RECOMMENDED to also include the 'AS' modifier when using 'TIAS'. An SDP application implementing TIAS SHOULD ignore the 'AS' value and use 'TIAS' instead when both are present.

realtime, rtp

normative-requirement §6.4 MUST

When converting TIAS to a transport-dependent value, the implementation MUST determine the sum of all lower-layer header sizes, retrieve maxprate, multiply header sizes by packet rate, round up to nearest integer, and add to TIAS value to get total bit-rate.

realtime, rtp

normative-requirement §6.2.3 SHALL

When using TIAS for an RTP-transported stream, the 'maxprate' attribute, if possible to calculate, SHALL be included at the corresponding SDP level. 'maxprate' SHALL be included for all transports where a packet rate can be derived and TIAS is included.

realtime, rtp

protocol-element §6.3

The maximum packet rate attribute is defined as 'a=maxprate:<packet-rate>' where packet-rate is a floating-point value representing maximum packets per second. For live streams, it is the estimated maximum the codec can produce; for stored streams, it is the measured maximum using a sliding 1-second window.

realtime, rtp

protocol-element §6.2.2

The TIAS (Transport Independent Application Specific Maximum) bandwidth modifier is defined as 'b=TIAS:<bandwidth-value>' with an integer bit-rate value in bits per second, excluding IP and transport layer overhead. For RTP streams, only the RTP payload (including payload format header and data) is counted, excluding RTP headers, extensions, CSRC list, and lower layers.

realtime, rtp

registry §9

This document registers one new SDP session and media level attribute 'maxprate' (defined in section 6.3) and one new SDP bandwidth modifier (bwtype) 'TIAS' (defined in section 6.2), both registered with IANA in accordance with standards-track RFC requirements.

registry, realtime

security-consideration §8 RECOMMENDED

The TIAS bandwidth value can be tampered with if not integrity protected. An attacker could cause a receiver to reserve too much bandwidth (wasting resources) or too little (degrading quality), or to reject a session by claiming excessive resource requirements. It is strongly RECOMMENDED that SDP be integrity protected and source authenticated, and that receivers sanity-check received bandwidth values.

security, realtime

wire-format §6.6

TIAS bandwidth modifier ABNF: 'b=TIAS:<bandwidth-value>' where bandwidth-value is '1*DIGIT' (one or more decimal digits). Maximum packet rate attribute ABNF: 'a=maxprate:<packet-rate>' where packet-rate is '1*DIGIT [".", 1*DIGIT]' (integer or floating-point).

realtime, rtp