rfc-7006

Miscellaneous Capabilities Negotiation in the Session Description Protocol (SDP)

M. Garcia-Martin, S. Veikkolainen, R. Gilman
date2013-09 streamIETF areaart wgmmusic statusPROPOSED STANDARD pages22 canonicalhttps://www.rfc-editor.org/rfc/rfc7006 doi10.17487/RFC7006 errataview
The Session Description Protocol (SDP) has been extended with a capability negotiation mechanism framework that allows the endpoints to negotiate transport protocols and attributes. This framework has been extended with a media capabilities negotiation mechanism that allows endpoints to negotiate additional media-related capabilities. This negotiation is embedded into the widely used SDP offer/answer procedures. This memo extends the SDP capability negotiation framework to allow endpoints to negotiate three additional SDP capabilities. In particular, this memo provides a mechanism to negotiate bandwidth ("b=" line), connection data ("c=" line), and session or media titles ("i=" line for each session or media).

Extracted elements (26)

design-rationale §3.1.3

The 'icap' (title) attribute value is not subject to the 'a=charset' attribute at the attribute level to allow alternative title capabilities using different character sets; instead, the charset applies within a specific configuration that includes the title capability.

realtime, sip

design-rationale §3.1.3.2

The 'icap-v0' option tag is expected to typically appear in 'csup' rather than 'creq' because in most cases ignoring the icap attribute still allows a configuration to be chosen based on numbering; mandatory support ('creq') is only needed in scenarios like multilingual offerings where uninformed selection would be harmful.

realtime, sip

design-rationale §1

The three capabilities (bandwidth, connection data, title) are designed as independent extensions with separate option tags so implementations can selectively support only the capabilities relevant to their use case, rather than requiring all three simultaneously.

realtime, sip

normative-requirement §3.1.2 MUST

An endpoint offering alternative IP and PSTN bearers MUST include the IP media description in the actual configuration and the PSTN media description in the potential configuration.

realtime, sip

normative-requirement §3.1.2.1 MUST

An endpoint that receives an extension configuration parameter prefixed with a plus sign ('+') and does not support that extension MUST treat that potential configuration as not valid.

realtime, sip

normative-requirement §4 MUST

Any 'i=' or 'c=' lines invoked by a configuration MUST replace the corresponding line, if present within the media description. Any 'b=' line invoked by a configuration MUST replace any 'b=' of the same bandwidth type at the media level, but not at the session level.

realtime, sip

normative-requirement §3.2 MUST

Endpoints MUST interpret capabilities declared at session level as part of the session level, and capabilities declared at media description level as part of the media level, in the resulting SDP for that particular configuration.

realtime, sip

normative-requirement §3.1.1.2 SHOULD

Endpoints using the 'bcap' capability attribute SHOULD add the 'bcap-v0' option tag to existing option tags in 'csup' and 'creq' attributes. Similarly, 'ccap-v0' SHOULD be added for connection data capability and 'icap-v0' for title capability.

realtime, sip

normative-requirement §3.3.2 MUST

If the connection data capability is used in a selected potential configuration chosen by the answerer, the configuration MUST by default use the port number from the actual offer 'm=' line, unless the network type is 'PSTN' in which case port 9 MUST be assumed.

realtime, sip

normative-requirement §3.1.2 MUST NOT

The combined set of actual and potential configurations for any given media description MUST NOT use the 'ccap' attribute to negotiate more than one address with an IN network type; it is not permissible to select between IPv4 and IPv6 address families or different IP addresses within the same family.

realtime, sip, ip

normative-requirement §3.2 MUST

The type-attr-num for each 'a=bcap', 'a=ccap', and 'a=icap' line MUST be unique across all capability attributes of the same type within the entire session description.

realtime, sip

normative-requirement §3.3.1 MUST

When generating an initial offer, the endpoint MUST include the respective capability attributes and associated values in the SDP offer; the offer SHOULD include the level of capability negotiation extensions needed in a 'creq' attribute.

realtime, sip

normative-requirement §3.3.2 SHOULD

When the answering party receives the offer and supports the required capability negotiation extensions, it SHOULD select the most preferred configuration it can support for each media stream.

realtime, sip

normative-requirement §3.3.3 MUST

When the offerer receives the answer, it MUST process the media lines according to normal SDP processing rules, and the 'acfg' attribute, if present, MUST be used to verify the proposed configuration used to form the answer.

realtime, sip

protocol-element §3.1

RFC 7006 defines three new SDP capability attributes: 'bcap' for bandwidth capability, 'ccap' for connection data capability, and 'icap' for title capability, extending the SDP Capability Negotiation Framework (RFC 5939).

realtime, sip

protocol-element §3.2

The 'bcap', 'ccap', and 'icap' capability attributes can appear at both SDP session and media level. When declared at session level they apply to the session; when at media level they apply to the media description.

realtime, sip

protocol-element §3.1.2

The 'ccap' attribute's primary use case is offering alternative connection addresses where nettype is 'IN' or 'PSTN', enabling selection between an IP-based bearer and a circuit-switched bearer. The Standards Track mechanism for multiple IP addresses remains ICE (RFC 5245).

realtime, sip, nat

protocol-element §3.1.1.2

Three new option tags are defined: 'bcap-v0' identifies support for bandwidth capability negotiation, 'ccap-v0' identifies support for connection data capability, and 'icap-v0' identifies support for title capability.

realtime, sip, registry

registry §6.3

IANA added new parameter identifiers 'b' for Bandwidth, 'c' for Connection Data, and 'i' for Title to the 'SDP Capability Negotiation Configuration Parameters' subregistry, permitted in 'lcfg', 'acfg', and 'pcfg' attributes.

registry, realtime

registry §6.1

IANA registered three new SDP attributes ('bcap', 'ccap', 'icap') in the 'att-field (both session and media level)' subregistry of the SDP Parameters registry, and three new option tags ('bcap-v0', 'ccap-v0', 'icap-v0') in the SDP Capability Negotiation Option Tag subregistry.

registry, realtime

security-consideration §5

By modifying the alternative connection address(es) in a 'ccap' attribute, an attacker can direct media streams to a desired endpoint, launching a version of the voice hammer attack (see RFC 5245, Section 18.5.1).

security, realtime

security-consideration §5 SHOULD

Manipulation of title capability ('icap') textual information could provide false information to users, leading to wrong choices regarding available media streams. If protecting capability attribute values is essential, one of the security mechanisms proposed in RFC 5939 SHOULD be used.

security, realtime

security-consideration §5

Modification of bandwidth capability values by an attacker can lead to network underutilization (too high bandwidth value) or congestion (too low bandwidth value), as the bandwidth attribute may be used for reserving resources at endpoints and intermediaries.

security, realtime

wire-format §3.1.1

The bandwidth capability attribute 'bcap' has the syntax: 'a=bcap:' bw-cap-num 1*WSP bwtype ':' bandwidth CRLF, where bw-cap-num is a unique integer between 1 and 2^31-1 identifying the capability.

realtime, sip

wire-format §3.1.2

The connection data capability attribute 'ccap' has the syntax: 'a=ccap:' conn-cap-num 1*WSP nettype SP addrtype SP connection-address CRLF, where conn-cap-num is a unique integer between 1 and 2^31-1.

realtime, sip

wire-format §3.1.3

The title capability attribute 'icap' has the syntax: 'a=icap:' title-cap-num 1*WSP text, where title-cap-num is a unique integer between 1 and 2^31-1 and text is human-readable session or media stream information.

realtime, sip