A Transport Independent Bandwidth Modifier for the Session Description Protocol (SDP)
Extracted elements (21)
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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).