The syntax for the SDP attribute is:
a=bw-info:<pt-def>
<direction>
<bw-prop-1>=<bw-value-def-1>; ...;
<bw-prop-N>=<bw-value-def-N>
where:
<pt-def>
is the definition of the RTP payload type(s) that the bandwidth information applies to. This can be a single value, a comma-separated list of RTP payload type numbers, or a wild card ('*').
<direction>
is either 'send' or 'recv'. The direction shall be defined for each 'a=bw-info' line.
<bw-prop-X>=<bw-value-def-X>
define the bandwidth property and the related bandwidth value(s).
The new attribute is designed to allow for future extensibility.
The ABNF
RFC 5234 for this attribute is the following:
bw-attrib = "a=bw-info:" pt-def SP direction SP bw-def *(";" [SP] bw-def)
pt-def = "*" / pt-val *("," pt-val)
pt-val = 1*3DIGIT
direction = "send" / "recv" / "sendrecv" / direction-ext
direction-ext = 1*VCHAR
bw-def = bw-name "=" bw-val-def
bw-name = 1*VCHAR ; Label defining the bandwitdh property
bw-val-def = zero-based-int-or-real / bw-val-def-ext
; Bandwidth value for the bandwidth property
bw-val-def-ext = zero-based-int-or-real *(":" zero-based-int-or-real)
; Extension possibility
; DIGIT as defined by RFC 4566
; zero-based-int-or-real as defined by RFC 8866
The
'a=bw-info' attribute defines the following possible directionalities for the bandwidth. Three directionalities are defined here:
-
send: In the send direction for SDP Offer/Answer agent providing the SDP or in case of declarative use in relation to the device that is being configured by the SDP.
-
recv: In the receiving direction for the SDP Offer/Answer agent providing the SDP or in case of declarative use in relation to the device that is being configured by the SDP.
-
sendrecv: In both the send and receiving directions for the SDP Offer/Answer agent providing the SDP or in case of declarative use in relation to the device that is being configured by the SDP.
Additional directionalities may be defined in the future, if needed. If an
'a=bw-info' line is received with an unknown directionality then the entire
'a=bw-info' line is ignored.
The directionality shall be specified when the
'a=bw-info' attribute is used. Only one directionality can be specified on each
'a=bw-info' line.
It is allowed to define different bandwidth properties on different attribute lines for the same payload type and direction. However, special care should be taken to avoid conflicting definitions. Therefore, a single bandwidth property shall not be included in several attribute lines applicable to the same payload type, direction and IP version. For example, if bandwidth property
'MaxSupBw' is defined for payload number 96 on one
'a=bw-info' line for direction
'send' and IPv6, then
'MaxSupBw' cannot be defined on another
'a=bw-info' line for the same payload type number, direction and IP version. However, for example,
'MaxSupBw' and
'MinSupBw' may be defined in different
'a=bw-info' lines, even for the same payload type, direction and IP version. This applies also when a wild card is used for the payload type number.
The
'bw-name' is a character string describing the name (or label) used for the bandwidth property that is defined. Four bandwidth property names are defined here for indicating bandwidth needs:
-
MaxSupBw: The Maximum Supported Bandwidth, see clause 19.2.2. The Maximum Supported Bandwidth may be a real value.
-
MaxDesBw: The Maximum Desired Bandwidth, see clause 19.2.3. The Maximum Desired Bandwidth may be a real value.
-
MinDesBw: The Minimum Desired Bandwidth, see clause 19.2.4. The Maximum Desired Bandwidth may be a real value.
-
MinSupBw: The Minimum Supported Bandwidth, see clause 19.2.5. The Maximum Supported Bandwidth may be a real value.
These bandwidth properties include IP/UDP/RTP overhead but not RTCP bandwidth, similar to b=AS. This means that the Maximum Supported Bandwidth for the receiving direction corresponds to the b=AS value used in an SDP offer-answer negotiation.
The following bandwidth property names are also defined:
-
IpVer: The IP version, see clause 19.2.6. Allowed values are 4 and 6 for IPv4 and IPv6, respectively. If the IP version is not indicated then IPv6 is assumed.
-
MaxPRate: The Maximum Packet Rate, see clause 19.2.7. The maximum packet rate may be a real value.
-
MinPRate: The Minimum Packet Rate, see clause 19.2.8. The minimum packet rate may be a real value.
Unknown bandwidth property names shall be ignored, and shall not be included in an answer if received in an offer. A received SDP may include
'a=bw-info' lines containing both known and unknown bandwidth properties. Ignoring unknown bandwidth properties shall not cause known bandwidth properties to be ignored.
In declarative usage the SDP attribute is interpreted from the perspective of the end-point being configured by the particular SDP. An interpreter may ignore 'a=bw-info' attribute lines that contain only unknown payload numbers.
The offer/answer negotiation is performed for each
'a=bw-info' attribute line, payload type, direction and bandwidth property individually.
An offerer may use the
'a=bw-info' attribute line for some or all of the offered payload types. The offerer may use the wild card to describe that a bandwidth property applies to all payload types included in the offer. Different bandwidth properties may be defined on different
'a=bw-info' attribute lines, even for the same payload type (including wild card) and directionality. However, the offerer shall ensure that there is no contradicting information. Therefore, a bandwidth property shall not occur on multiple
'a=bw-info' lines for the same payload type (including wild card), direction and IP version.
An answerer may remove the
'a=bw-info' attribute line(s) for the payload types where it was used in the SDP offer. If
'a=bw-info' is included in the SDP offer, the answerer may add additional
'a=bw-info' lines for payload types it has added in the SDP answer compared to the SDP offer. An answerer may also remove or add individual bandwidth properties.
The SDP may include an offer for some of the defined bandwidth properties without including an offer for other defined bandwidth properties, in which case the values of the omitted properties are undefined, but may still be implicitly limited by the general property equalities defined in
clause 19.2.1.
An offer may include any defined directionality in the
'a=bw-info' attribute(e.g.
'send',
'recv' or
'sendrecv') regardless of the directional attribute defined for the media stream ('a=sendrecv',
'a=sendonly',
'a=recvonly' or
'a=inactive').
An agent understanding the
'a=bw-info' attribute and answering to an offer including the
'a=bw-info' attribute should include the attribute in the answer for all payload types for which it was offered.
If an answerer has received
'a=bw-info' in an SDP offer with a certain set of bandwidth properties, and would like to add additional bandwidth properties, possibly using other directionality, then it may do so by adding such definitions in the SDP answer.
An agent may also divide an
'a=bw-info' line into several
'a=bw-info' lines. One example is when the SDP offer included an
'a=bw-info' lines listing several different RTP payload types, or using a wild card. The agent may then divide the attribute line with the payload type list into several attribute lines with payload type lists consisting of fewer payload type numbers or even several attribute lines with only a single payload type number each. Another example is separating a list of bandwidth properties from a single
'a=bw-info' line onto multiple
'a=bw-info' lines.
An agent may also merge several
'a=bw-info' offers into fewer offers or even a single offer.
An agent responding to an
'a=bw-info' offer will need to consider the directionalities and reverse them in the answer when responding to media streams using unicast.
If the answerer removes one or several RTP Payload Types from the SDP when creating the SDP answer then the corresponding payload type numbers should be removed from the
'a=bw-info' lines as well.
An agent accepting an offer with the
'a=bw-info' attribute may modify the bandwidth properties in the following ways when including them in the answer:
-
The Maximum Supported Bandwidth may be reduced.
-
The Maximum Desired Bandwidth may be reduced.
-
The Minimum Desired Bandwidth may be reduced.
-
The Minimum Supported Bandwidth may be increased. If the reason for increasing the Minimum Supported Bandwidth is that the Minimum Packet Rate needs to be increased then the Minimum Packet Rate shall also be adjusted.
-
The Maximum Packet Rate may be reduced.
-
The Minimum Packet Rate may be increased.