Miscellaneous Capabilities Negotiation in the Session Description Protocol (SDP)
Extracted elements (26)
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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).
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.
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).
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.
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.
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.
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).
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.
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.
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.
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.
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.