diff options
Diffstat (limited to 'doc/rfc/rfc5939.txt')
-rw-r--r-- | doc/rfc/rfc5939.txt | 4315 |
1 files changed, 4315 insertions, 0 deletions
diff --git a/doc/rfc/rfc5939.txt b/doc/rfc/rfc5939.txt new file mode 100644 index 0000000..85a7624 --- /dev/null +++ b/doc/rfc/rfc5939.txt @@ -0,0 +1,4315 @@ + + + + + + +Internet Engineering Task Force (IETF) F. Andreasen +Request for Comments: 5939 Cisco Systems +Category: Standards Track September 2010 +ISSN: 2070-1721 + + + Session Description Protocol (SDP) Capability Negotiation + +Abstract + + The Session Description Protocol (SDP) was intended to describe + multimedia sessions for the purposes of session announcement, session + invitation, and other forms of multimedia session initiation. SDP + was not intended to provide capability indication or capability + negotiation; however, over the years, SDP has seen widespread + adoption and as a result it has been gradually extended to provide + limited support for these, notably in the form of the offer/answer + model defined in RFC 3264. SDP does not define how to negotiate one + or more alternative transport protocols (e.g., RTP profiles) or + attributes. This makes it difficult to deploy new RTP profiles such + as Secure RTP or RTP with RTCP-based feedback, negotiate use of + different security keying mechanisms, etc. It also presents problems + for some forms of media negotiation. + + The purpose of this document is to address these shortcomings by + extending SDP with capability negotiation parameters and associated + offer/answer procedures to use those parameters in a backwards + compatible manner. + + The document defines a general SDP Capability Negotiation framework. + It also specifies how to provide attributes and transport protocols + as capabilities and negotiate them using the framework. Extensions + for other types of capabilities (e.g., media types and media formats) + may be provided in other documents. + + + + + + + + + + + + + + + + + +Andreasen Standards Track [Page 1] + +RFC 5939 SDP Capability Negotiation September 2010 + + +Status of This Memo + + This is an Internet Standards Track document. + + This document is a product of the Internet Engineering Task Force + (IETF). It represents the consensus of the IETF community. It has + received public review and has been approved for publication by the + Internet Engineering Steering Group (IESG). Further information on + Internet Standards is available in Section 2 of RFC 5741. + + Information about the current status of this document, any errata, + and how to provide feedback on it may be obtained at + http://www.rfc-editor.org/info/rfc5939. + +Copyright Notice + + Copyright (c) 2010 IETF Trust and the persons identified as the + document authors. All rights reserved. + + This document is subject to BCP 78 and the IETF Trust's Legal + Provisions Relating to IETF Documents + (http://trustee.ietf.org/license-info) in effect on the date of + publication of this document. Please review these documents + carefully, as they describe your rights and restrictions with respect + to this document. Code Components extracted from this document must + include Simplified BSD License text as described in Section 4.e of + the Trust Legal Provisions and are provided without warranty as + described in the Simplified BSD License. + + This document may contain material from IETF Documents or IETF + Contributions published or made publicly available before November + 10, 2008. The person(s) controlling the copyright in some of this + material may not have granted the IETF Trust the right to allow + modifications of such material outside the IETF Standards Process. + Without obtaining an adequate license from the person(s) controlling + the copyright in such materials, this document may not be modified + outside the IETF Standards Process, and derivative works of it may + not be created outside the IETF Standards Process, except to format + it for publication as an RFC or to translate it into languages other + than English. + + + + + + + + + + + +Andreasen Standards Track [Page 2] + +RFC 5939 SDP Capability Negotiation September 2010 + + +Table of Contents + + 1. Introduction ....................................................4 + 2. Conventions Used in This Document ...............................7 + 3. SDP Capability Negotiation Solution .............................7 + 3.1. SDP Capability Negotiation Model ...........................7 + 3.2. Solution Overview .........................................10 + 3.3. Version and Extension Indication Attributes ...............14 + 3.4. Capability Attributes .....................................17 + 3.5. Configuration Attributes ..................................22 + 3.6. Offer/Answer Model Extensions .............................32 + 3.7. Interactions with ICE .....................................45 + 3.8. Interactions with SIP Option Tags .........................47 + 3.9. Processing Media before Answer ............................48 + 3.10. Indicating Bandwidth Usage ...............................49 + 3.11. Dealing with Large Number of Potential Configurations ....50 + 3.12. SDP Capability Negotiation and Intermediaries ............51 + 3.13. Considerations for Specific Attribute Capabilities .......52 + 3.14. Relationship to RFC 3407 .................................54 + 4. Examples .......................................................54 + 4.1. Multiple Transport Protocols ..............................54 + 4.2. DTLS-SRTP or SRTP with Media-Level Security Descriptions...58 + 4.3. Best-Effort SRTP with Session-Level MIKEY and Media-Level + Security Descriptions .....................................61 + 4.4. SRTP with Session-Level MIKEY and Media-Level Security + Descriptions as Alternatives ..............................66 + 5. Security Considerations ........................................69 + 6. IANA Considerations ............................................72 + 6.1. New SDP Attributes ........................................72 + 6.2. New SDP Capability Negotiation Option Tag Registry ........73 + 6.3. New SDP Capability Negotiation Potential + Configuration Parameter Registry ..........................74 + 7. Acknowledgments ................................................74 + 8. References .....................................................75 + 8.1. Normative References ......................................75 + 8.2. Informative References ....................................75 + + + + + + + + + + + + + + + +Andreasen Standards Track [Page 3] + +RFC 5939 SDP Capability Negotiation September 2010 + + +1. Introduction + + The Session Description Protocol (SDP) was intended to describe + multimedia sessions for the purposes of session announcement, session + invitation, and other forms of multimedia session initiation. An SDP + session description contains one or more media stream descriptions + with information such as IP address and port, type of media stream + (e.g., audio or video), transport protocol (possibly including + profile information, e.g., RTP/AVP or RTP/SAVP), media formats (e.g., + codecs), and various other session and media stream parameters that + define the session. + + Simply providing media stream descriptions is sufficient for session + announcements for a broadcast application, where the media stream + parameters are fixed for all participants. When a participant wants + to join the session, he obtains the session announcement and uses the + media descriptions provided, e.g., joins a multicast group and + receives media packets in the encoding format specified. If the + media stream description is not supported by the participant, he is + unable to receive the media. + + Such restrictions are not generally acceptable to multimedia session + invitations, where two or more entities attempt to establish a media + session, that uses a set of media stream parameters acceptable to all + participants. First of all, each entity must inform the other of its + receive address, and secondly, the entities need to agree on the + media stream parameters to use for the session, e.g., transport + protocols and codecs. To solve this, RFC 3264 [RFC3264] defined the + offer/answer model, whereby an offerer constructs an offer SDP + session description that lists the media streams, codecs, and other + SDP parameters that the offerer is willing to use. This offer + session description is sent to the answerer, which chooses from among + the media streams, codecs and other session description parameters + provided, and generates an answer session description with his + parameters, based on that choice. The answer session description is + sent back to the offerer thereby completing the session negotiation + and enabling the establishment of the negotiated media streams. + + Taking a step back, we can make a distinction between the + capabilities supported by each participant, the way in which those + capabilities can be supported, and the parameters that can actually + be used for the session. More generally, we can say that we have the + following: + + o A set of capabilities for the session and its associated media + stream components, supported by each side. The capability + indications by themselves do not imply a commitment to use the + capabilities in the session. + + + +Andreasen Standards Track [Page 4] + +RFC 5939 SDP Capability Negotiation September 2010 + + + Capabilities can, for example, be that the "RTP/SAVP" profile is + supported, that the "PCMU" (Pulse Code Modulation mu-law) codec is + supported, or that the "crypto" attribute is supported with a + particular value. + + o A set of potential configurations indicating which combinations of + those capabilities can be used for the session and its associated + media stream components. Potential configurations are not ready + for use. Instead, they provide an alternative that may be used, + subject to further negotiation. + + A potential configuration can, for example, indicate that the + "PCMU" codec and the "RTP/SAVP" transport protocol are not only + supported (i.e., listed as capabilities), but they are offered for + potential use in the session. + + o An actual configuration for the session and its associated media + stream components, that specifies which combinations of session + parameters and media stream components can be used currently and + with what parameters. Use of an actual configuration does not + require any further negotiation. + + An actual configuration can, for example, be that the "PCMU" codec + and the "RTP/SAVP" transport protocol are offered for use + currently. + + o A negotiation process that takes the set of actual and potential + configurations (combinations of capabilities) as input and + provides the negotiated actual configurations as output. + + SDP by itself was designed to provide only one of these, namely + listing of the actual configurations; however, over the years, use of + SDP has been extended beyond its original scope. Of particular + importance are the session negotiation semantics that were defined by + the offer/answer model in RFC 3264. In this model, both the offer + and the answer contain actual configurations; separate capabilities + and potential configurations are not supported. + + Other relevant extensions have been defined as well. RFC 3407 + [RFC3407] defined simple capability declarations, which extends SDP + with a simple and limited set of capability descriptions. Grouping + of media lines, which defines how media lines in SDP can have other + semantics than the traditional "simultaneous media streams" + semantics, was defined in RFC 5888 [RFC5888], etc. + + Each of these extensions was designed to solve a specific limitation + of SDP. Since SDP had already been stretched beyond its original + intent, a more comprehensive capability declaration and negotiation + + + +Andreasen Standards Track [Page 5] + +RFC 5939 SDP Capability Negotiation September 2010 + + + process was intentionally not defined. Instead, work on a "next + generation" of a protocol to provide session description and + capability negotiation was initiated [SDPng]. SDPng defined a + comprehensive capability negotiation framework and protocol that was + not bound by existing SDP constraints. SDPng was not designed to be + backwards compatible with existing SDP and hence required both sides + to support it, with a graceful fallback to legacy operation when + needed. This, combined with lack of ubiquitous multipart MIME + support in the protocols that would carry SDP or SDPng, made it + challenging to migrate towards SDPng. In practice, SDPng has not + gained traction and, as of the time of publication of this document, + work on SDPng has stopped. Existing real-time multimedia + communication protocols such as SIP, Real Time Streaming Protocol + (RTSP), Megaco, and Media Gateway Control Protocol (MGCP) continue to + use SDP. However, SDP does not address an increasingly important + problem: the ability to negotiate one or more alternative transport + protocols (e.g., RTP profiles) and associated parameters (e.g., SDP + attributes). This makes it difficult to deploy new RTP profiles such + as Secure RTP (SRTP) [RFC3711], RTP with RTCP-based feedback + [RFC4585], etc. The problem is exacerbated by the fact that RTP + profiles are defined independently. When a new profile is defined + and N other profiles already exist, there is a potential need for + defining N additional profiles, since profiles cannot be combined + automatically. For example, in order to support the plain and Secure + RTP version of RTP with and without RTCP-based feedback, four + separate profiles (and hence profile definitions) are needed: RTP/AVP + [RFC3551], RTP/SAVP [RFC3711], RTP/AVPF [RFC4585], and RTP/SAVPF + [RFC5124]. In addition to the pressing profile negotiation problem, + other important real-life limitations have been found as well. + Keying material and other parameters, for example, need to be + negotiated with some of the transport protocols, but not others. + Similarly, some media formats and types of media streams need to + negotiate a variety of different parameters. + + The purpose of this document is to define a mechanism that enables + SDP to provide limited support for indicating capabilities and their + associated potential configurations, and negotiate the use of those + potential configurations as actual configurations. It is not the + intent to provide a full-fledged capability indication and + negotiation mechanism along the lines of SDPng or ITU-T H.245. + Instead, the focus is on addressing a set of well-known real-life + limitations. More specifically, the solution provided in this + document provides a general SDP Capability Negotiation framework that + is backwards compatible with existing SDP. It also defines + specifically how to provide attributes and transport protocols as + capabilities and negotiate them using the framework. Extensions for + other types of capabilities (e.g., media types and formats) may be + provided in other documents. + + + +Andreasen Standards Track [Page 6] + +RFC 5939 SDP Capability Negotiation September 2010 + + + As mentioned above, SDP is used by several protocols, and hence the + mechanism should be usable by all of these. One particularly + important protocol for this problem is the Session Initiation + Protocol (SIP) [RFC3261]. SIP uses the offer/answer model [RFC3264] + (which is not specific to SIP) to negotiate sessions and hence the + mechanism defined here provides the offer/answer procedures to use + for the capability negotiation framework. + + The rest of the document is structured as follows. In Section 3, we + present the SDP Capability Negotiation solution, which consists of + new SDP attributes and associated offer/answer procedures. In + Section 4, we provide examples illustrating its use. In Section 5, + we provide the security considerations. + +2. Conventions Used in This Document + + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this + document are to be interpreted as described in [RFC2119]. + +3. SDP Capability Negotiation Solution + + In this section, we first present the conceptual model behind the SDP + Capability Negotiation framework followed by an overview of the SDP + Capability Negotiation solution. We then define new SDP attributes + for the solution and provide its associated updated offer/answer + procedures. + +3.1. SDP Capability Negotiation Model + + Our model uses the concepts of + + o Capabilities + + o Potential Configurations + + o Actual Configurations + + o Negotiation Process + + as defined in Section 1. Conceptually, we want to offer not just the + actual configuration SDP session description (which is done with the + offer/answer model defined in [RFC3264]), but the actual + configuration SDP session description as well as one or more + alternative SDP session descriptions, i.e., potential configurations. + The answerer must choose either the actual configuration or one of + the potential configurations, and generate an answer SDP session + description based on that. The offerer may need to perform + + + +Andreasen Standards Track [Page 7] + +RFC 5939 SDP Capability Negotiation September 2010 + + + processing on the answer, which depends on the offer that was chosen + (actual or potential configuration). The answerer therefore informs + the offerer which configuration the answerer chose. The process can + be viewed *conceptually* as follows: + + Offerer Answerer + ======= ======== + + 1) Generate offer with actual + configuration and alternative + potential configurations + 2) Send offer with all configurations + + +------------+ + | SDP o1 | + | (actual | + | config | + | |-+ Offer + +------------+ | -----> 3) Process offered configurations + | SDP o2 | in order of preference indicated + | (potential | 4) Generate answer based on chosen + | config 1) |-+ configuration (e.g., o2), and + +------------+ | inform offerer which one was + | SDP o3 | chosen + | (potential | + | config 2) |-+ + +------------+ | + | SDP ... | + : : + + +------------+ + | SDP a1 | + Answer | (actual | + <----- | config,o2)| + | | + 5) Process answer based on +------------+ + the configuration that was + chosen (o2), as indicated in + the answer + + The above illustrates the conceptual model: the actual solution uses + a single SDP session description, which contains the actual + configuration (as with existing SDP session descriptions and the + offer/answer model defined in [RFC3264]) and several new attributes + and associated procedures, that encode the capabilities and potential + configurations. A more accurate depiction of the actual offer SDP + session description is therefore as follows: + + + + +Andreasen Standards Track [Page 8] + +RFC 5939 SDP Capability Negotiation September 2010 + + + +--------------------+ + | SDP o1 | + | (actual | + | config | + | | + | +-------------+ | + | | capability 1| | + | | capability 2| | + | | ... | | + | +-------------+ | Offer + | | -----> + | +-------------+ | + | | potential | | + | | config 1 | | + | | potential | | + | | config 2 | | + | | ... | | + | +-------------+ | + | | + +--------------------+ + + The above structure is used for two reasons: + + o Backwards compatibility: As noted above, support for multipart + MIME is not ubiquitous. By encoding both capabilities and + potential configurations in SDP attributes, we can represent + everything in a single SDP session description thereby avoiding + any multipart MIME support issues. Furthermore, since unknown SDP + attributes are ignored by the SDP recipient, we ensure that + entities that do not support the framework simply perform the + regular RFC 3264 offer/answer procedures. This provides us with + seamless backwards compatibility. + + o Message size efficiency: When we have multiple media streams, + each of which may potentially use two or more different transport + protocols with a variety of different associated parameters, the + number of potential configurations can be large. If each possible + alternative is represented as a complete SDP session description + in an offer, we can easily end up with large messages. By + providing a more compact encoding, we get more efficient message + sizes. + + In the next section, we describe the exact structure and specific SDP + parameters used to represent this. + + + + + + + +Andreasen Standards Track [Page 9] + +RFC 5939 SDP Capability Negotiation September 2010 + + +3.2. Solution Overview + + The solution consists of the following: + + o Two new SDP attributes to support extensions to the framework + itself as follows: + + o A new attribute ("a=csup") that lists the supported base + (optionally) and any supported extension options to the + framework. + + o A new attribute ("a=creq") that lists the extensions to the + framework that are required to be supported by the entity + receiving the SDP session description in order to do capability + negotiation. + + o Two new SDP attributes used to express capabilities as follows + (additional attributes can be defined as extensions): + + o A new attribute ("a=acap") that defines how to list an + attribute name and its associated value (if any) as a + capability. + + o A new attribute ("a=tcap") that defines how to list transport + protocols (e.g., "RTP/AVP") as capabilities. + + o Two new SDP attributes to negotiate configurations as follows: + + o A new attribute ("a=pcfg") that lists potential configurations + supported. This is done by reference to the capabilities from + the SDP session description in question. Extension + capabilities can be defined and referenced in the potential + configurations. Alternative potential configurations have an + explicit ordering associated with them. Also, potential + configurations are by default preferred over the actual + configuration included in the "m=" line and its associated + parameters. + + This preference order was chosen to provide maximum backwards + compatibility for the capability negotiation framework and the + possible values offered for a session. For example, an entity + that wants to establish a Secure RTP media stream but is + willing to accept a plain RTP media stream (assumed to be the + least common denominator for most endpoints), can offer plain + RTP in the actual configuration and use the capability + negotiation extensions to indicate the preference for Secure + RTP. Entities that do not support the capability negotiation + extensions or Secure RTP will then default to plain RTP. + + + +Andreasen Standards Track [Page 10] + +RFC 5939 SDP Capability Negotiation September 2010 + + + o A new attribute ("a=acfg") to be used in an answer SDP session + description. The attribute identifies a potential + configuration from an offer SDP session description that was + used as an actual configuration to form the answer SDP session + description. Extension capabilities can be included as well. + + o Extensions to the offer/answer model that allow for capabilities + and potential configurations to be included in an offer. + Capabilities can be provided at the session level and the media + level. Potential configurations can be included only at the media + level, where they constitute alternative offers that may be + accepted by the answerer instead of the actual configuration(s) + included in the "m=" line(s) and associated parameters. The + mechanisms defined in this document enable potential + configurations to change the transport protocol, add new + attributes, as well as remove all existing attributes from the + actual configuration. The answerer indicates which (if any) of + the potential configurations it used to form the answer by + including the actual configuration attribute ("a=acfg") in the + answer. Capabilities may be included in answers as well, where + they can aid in guiding a subsequent new offer. + + The mechanism is illustrated by the offer/answer exchange below, + where Alice sends an offer to Bob: + + Alice Bob + + | (1) Offer (SRTP and RTP) | + |--------------------------------->| + | | + | (2) Answer (SRTP) | + |<---------------------------------| + | | + | (3) Offer (SRTP) | + |--------------------------------->| + | | + | (4) Answer (SRTP) | + |<---------------------------------| + | | + + + + + + + + + + + + +Andreasen Standards Track [Page 11] + +RFC 5939 SDP Capability Negotiation September 2010 + + + Alice's offer includes RTP and SRTP as alternatives, where RTP is the + default (actual configuration), but SRTP is the preferred one + (potential configuration): + + v=0 + o=- 25678 753849 IN IP4 192.0.2.1 + s= + c=IN IP4 192.0.2.1 + t=0 0 + m=audio 53456 RTP/AVP 0 18 + a=tcap:1 RTP/SAVP + a=acap:1 crypto:1 AES_CM_128_HMAC_SHA1_80 + inline:WVNfX19zZW1jdGwgKCkgewkyMjA7fQp9CnVubGVz|2^20|1:4 + a=pcfg:1 t=1 a=1 + + The "m=" line indicates that Alice is offering to use plain RTP with + PCMU or G.729. The capabilities are provided by the "a=tcap" and + "a=acap" attributes. The transport capability attribute ("a=tcap") + indicates that Secure RTP under the AVP profile ("RTP/SAVP") is + supported with an associated transport capability handle of 1. The + "acap" attribute provides an attribute capability with a handle of 1. + The attribute capability is a "crypto" attribute, which provides the + keying material for SRTP using SDP security descriptions [RFC4568]. + The "a=pcfg" attribute provides the potential configuration included + in the offer by reference to the capability parameters. One + alternative is provided; it has a configuration number of 1 and it + consists of transport protocol capability 1 (i.e., the RTP/SAVP + profile -- Secure RTP), and the attribute capability 1 (i.e., the + "crypto" attribute provided). Potential configurations are preferred + over the actual configuration included in the offer SDP session + description, and hence Alice is expressing a preference for using + Secure RTP. + + Bob receives the SDP session description offer from Alice. Bob + supports SRTP and the SDP Capability Negotiation framework, and hence + he accepts the (preferred) potential configuration for Secure RTP + provided by Alice and generates the following answer SDP session + description: + + v=0 + o=- 24351 621814 IN IP4 192.0.2.2 + s= + c=IN IP4 192.0.2.2 + t=0 0 + m=audio 54568 RTP/SAVP 0 18 + a=crypto:1 AES_CM_128_HMAC_SHA1_80 + inline:PS1uQCVeeCFCanVmcjkpPywjNWhcYD0mXXtxaVBR|2^20|1:4 + a=acfg:1 t=1 a=1 + + + +Andreasen Standards Track [Page 12] + +RFC 5939 SDP Capability Negotiation September 2010 + + + Bob includes the "a=acfg" attribute in the answer to inform Alice + that he based his answer on an offer using potential configuration 1 + with transport protocol capability 1 and attribute capability 1 from + the offer SDP session description (i.e., the RTP/SAVP profile using + the keying material provided). Bob also includes his keying material + in a "crypto" attribute. If Bob supported one or more extensions to + the Capability Negotiation framework, he would have included option + tags for those in the answer as well (in an "a=csup" attribute). + + When Alice receives Bob's answer, session negotiation has completed; + however, Alice nevertheless generates a new offer using the + negotiated configuration as the actual configuration. This is done + purely to assist any intermediaries that may reside between Alice and + Bob but do not support the SDP Capability Negotiation framework, and + hence may not understand the negotiation that just took place. + + Alice's updated offer includes only SRTP, and it is not using the SDP + Capability Negotiation framework (Alice could have included the + capabilities as well if she wanted): + + v=0 + o=- 25678 753850 IN IP4 192.0.2.1 + s= + c=IN IP4 192.0.2.1 + t=0 0 + m=audio 53456 RTP/SAVP 0 18 + a=crypto:1 AES_CM_128_HMAC_SHA1_80 + inline:WVNfX19zZW1jdGwgKCkgewkyMjA7fQp9CnVubGVz|2^20|1:4 + + The "m=" line now indicates that Alice is offering to use Secure RTP + with PCMU or G.729. The "crypto" attribute, which provides the SRTP + keying material, is included with the same value again. + + Bob receives the SDP session description offer from Alice, which he + accepts, and then generates an answer to Alice: + + v=0 + o=- 24351 621815 IN IP4 192.0.2.2 + s= + c=IN IP4 192.0.2.2 + t=0 0 + m=audio 54568 RTP/SAVP 0 18 + a=crypto:1 AES_CM_128_HMAC_SHA1_80 + inline:PS1uQCVeeCFCanVmcjkpPywjNWhcYD0mXXtxaVBR|2^20|1:4 + + Bob includes the same "crypto" attribute as before, and the session + proceeds without change. Although Bob did not include any + capabilities in his answer, he could have done so if he wanted. + + + +Andreasen Standards Track [Page 13] + +RFC 5939 SDP Capability Negotiation September 2010 + + + Note that in this particular example, the answerer supported the + capability negotiation extensions defined here. Had he not, he would + simply have ignored the new attributes and accepted the (actual + configuration) offer to use normal RTP. In that case, the following + answer would have been generated instead: + + v=0 + o=- 24351 621814 IN IP4 192.0.2.2 + s= + c=IN IP4 192.0.2.2 + t=0 0 + m=audio 54568 RTP/AVP 0 18 + +3.3. Version and Extension Indication Attributes + + In this section, we present the new attributes associated with + indicating the SDP Capability Negotiation extensions supported and + required. + +3.3.1. Supported Capability Negotiation Extensions Attribute + + The SDP Capability Negotiation solution allows for capability + negotiation extensions to be defined. Associated with each such + extension is an option tag that identifies the extension in question. + Option tags MUST be registered with IANA per the procedures defined + in Section 6.2. + + The Supported Capability Negotiation Extensions attribute ("a=csup") + contains a comma-separated list of option tags identifying the SDP + Capability Negotiation extensions supported by the entity that + generated the SDP session description. The attribute can be provided + at the session level and the media level, and it is defined as + follows: + + a=csup: <option-tag-list> + + RFC 4566, Section 9, provides the ABNF [RFC5234] for SDP attributes. + The "csup" attribute adheres to the RFC 4566 "attribute" production, + with an att-value defined as follows: + + att-value = option-tag-list + option-tag-list = option-tag *("," option-tag) + option-tag = token ; defined in [RFC4566] + + A special base option tag with a value of "cap-v0" is defined for the + basic SDP Capability Negotiation framework defined in this document. + Entities can use this option tag with the "a=csup" attribute to + + + + +Andreasen Standards Track [Page 14] + +RFC 5939 SDP Capability Negotiation September 2010 + + + indicate support for the SDP Capability Negotiation framework + specified in this document. Please note that white space is not + allowed in this rule. + + The following examples illustrate use of the "a=csup" attribute with + the "cap-v0" option tag and two hypothetical option tags, "foo" and + "bar" (note the lack of white space): + + a=csup:cap-v0 + + a=csup:foo + + a=csup:bar + + a=csup:cap-v0,foo,bar + + The "a=csup" attribute can be provided at the session and the media + level. When provided at the session level, it applies to the entire + SDP session description. When provided at the media level, it + applies only to the media description in question (option tags + provided at the session level apply as well). There MUST NOT be more + than one "a=csup" attribute at the session level and one at the media + level (one per media description in the latter case). + + Whenever an entity that supports one or more extensions to the SDP + Capability Negotiation framework generates an SDP session + description, it SHOULD include the "a=csup" attribute with the option + tags for the extensions it supports at the session and/or media + level, unless those option tags are already provided in one or more + "a=creq" attribute (see Section 3.3.2) at the relevant levels. + Inclusion of the base option tag is OPTIONAL; support for the base + framework can be inferred from presence of the "a=pcfg" attribute + defined in Section 3.5.1. + + Use of the base option tag may still be useful in some scenarios, + e.g., when using SIP OPTIONS [RFC3261] or generating an answer to an + offer that did not use the SDP Capability Negotiation framework. + +3.3.2. Required Capability Negotiation Extensions Attribute + + The Required Capability Negotiation Extensions attribute ("a=creq") + contains a comma-separated list of option tags (see Section 3.3.1) + specifying the SDP Capability Negotiation extensions that MUST be + supported by the entity receiving the SDP session description, in + order for that entity to properly process the SDP Capability + Negotiation attributes and associated procedures. There is no need + to include the base option tag ("cap-v0") with the "creq" attribute, + + + + +Andreasen Standards Track [Page 15] + +RFC 5939 SDP Capability Negotiation September 2010 + + + since any entity that supports the "creq" attribute in the first + place also supports the base option tag. Still, it is permissible to + do so. + + Such functionality may be important if a future version of the + Capability Negotiation framework were not backwards compatible. + + The attribute can be provided at the session level and the media + level, and it is defined as follows: + + a=creq: <option-tag-list> + + The "creq" attribute adheres to the RFC 4566 "attribute" production, + with an att-value defined as follows: + + att-value = option-tag-list + + The following examples illustrate use of the "a=creq" attribute with + the "cap-v0" base option tag and two hypothetical option tags, "foo" + and "bar" (note the lack of white space): + + a=creq:cap-v0 + a=creq:foo + + a=creq:bar + + a=creq:cap-v0,foo,bar + + The "a=creq" attribute can be provided at the session and the media + level. When provided at the session level, it applies to the entire + SDP session description. When provided at the media level, it + applies only to the media description in question (required option + tags provided at the session level apply as well). There MUST NOT be + more than one "a=creq" attribute at the session level and one + "a=creq" attribute at the media level (one per media description in + the latter case). + + When an entity generates an SDP session description and it requires + the recipient of that SDP session description to support one or more + SDP Capability Negotiation extensions (except for the base) at the + session or media level in order to properly process the SDP + Capability Negotiation, the "a=creq" attribute MUST be included with + option tags that identify the required extensions at the session + and/or media level. If support for an extension is needed only in + one or more specific potential configurations, the potential + configuration provides a way to indicate that instead (see Section + 3.5.1). Support for the basic negotiation framework is implied by + + + + +Andreasen Standards Track [Page 16] + +RFC 5939 SDP Capability Negotiation September 2010 + + + the presence of an "a=pcfg" attribute (see Section 3.5.1) and hence + it is not required to include the "a=creq" attribute with the base + option tag ("cap-v0"). + + A recipient that receives an SDP session description and does not + support one or more of the required extensions listed in a "creq" + attribute MUST NOT perform the SDP Capability Negotiation defined in + this document; instead the recipient MUST proceed as if the SDP + Capability Negotiation attributes were not included in the first + place, i.e., the capability negotiation attributes are ignored. In + that case, if the SDP session description recipient is an SDP + answerer [RFC3264], the recipient SHOULD include a "csup" attribute + in the resulting SDP session description answer listing the SDP + Capability Negotiation extensions it actually supports. + + This ensures that introduction of the SDP Capability Negotiation + mechanism by itself does not lead to session failures + + For non-supported extensions provided at the session level, this + implies that SDP Capability Negotiation MUST NOT be performed at all. + For non-supported extensions at the media level, this implies that + SDP Capability Negotiation MUST NOT be performed for the media stream + in question. + + An entity that does not support the SDP Capability Negotiation + framework at all, will ignore these attributes (as well as the + other SDP Capability Negotiation attributes) and not perform any + SDP Capability Negotiation in the first place. + +3.4. Capability Attributes + + In this section, we present the new attributes associated with + indicating the capabilities for use by the SDP Capability + Negotiation. + +3.4.1. Attribute Capability Attribute + + Attributes and their associated values can be expressed as + capabilities by use of a new attribute capability attribute + ("a=acap"), which is defined as follows: + + a=acap: <att-cap-num> <att-par> + + where <att-cap-num> is an integer between 1 and 2^31-1 (both + included) used to number the attribute capability and <att-par> is an + attribute ("a=") in its "<attribute>" or "<attribute>:<value>" form, + i.e., excluding the "a=" part (see [RFC4566]). The attribute can be + provided at the session level and the media level. + + + +Andreasen Standards Track [Page 17] + +RFC 5939 SDP Capability Negotiation September 2010 + + + The "acap" attribute adheres to the RFC 4566 "attribute" production, + with an att-value defined as follows: + + att-value = att-cap-num 1*WSP att-par + att-cap-num = 1*10(DIGIT) ;defined in [RFC5234] + att-par = attribute ;defined in [RFC4566] + + Note that white space is not permitted before the att-cap-num. + + When the attribute capability contains a session-level attribute, + that "acap" attribute can only be provided at the session level. + Conversely, media-level attributes can be provided in attribute + capabilities at either the media level or session level. The base + SDP Capability Negotiation framework however only defines procedures + for use of media-level attribute capabilities at the media level. + Implementations that conform only to the base framework MUST NOT + generate media-level attribute capabilities at the session level; + however, extensions may change this (see, e.g., [SDPMedCap] for one + such extension) and hence all implementations MUST still be prepared + to receive such capabilities (see Section 3.6.2 for processing + rules). + + Each occurrence of the "acap" attribute in the entire session + description MUST use a different value of <att-cap-num>. Consecutive + numbering of the <att-cap-num> values is not required. + + There is a need to be able to reference both session-level and + media-level attributes in potential configurations at the media + level, and this provides for a simple solution to avoiding overlap + between the references (handles) to each attribute capability. + + The <att-cap-num> values provided are independent of similar + <cap-num> values provided for other types of capabilities, i.e., they + form a separate name-space for attribute capabilities. + + The following examples illustrate use of the "acap" attribute: + + a=acap:1 ptime:20 + + a=acap:2 ptime:30 + + a=acap:3 key-mgmt:mikey AQAFgM0XflABAAAAAAAAAAAAAAsAyONQ6gAA + AAAGEEoo2pee4hp2UaDX8ZE22YwKAAAPZG9uYWxkQGR1Y2suY29tAQAAAAAAAQAk0 + JKpgaVkDaawi9whVBtBt0KZ14ymNuu62+Nv3ozPLygwK/GbAV9iemnGUIZ19fWQUO + SrzKTAv9zV + + a=acap:4 crypto:1 AES_CM_128_HMAC_SHA1_32 + inline:NzB4d1BINUAvLEw6UzF3WSJ+PSdFcGdUJShpX1Zj|2^20|1:32 + + + +Andreasen Standards Track [Page 18] + +RFC 5939 SDP Capability Negotiation September 2010 + + + The first two attribute capabilities provide attribute values for the + ptime attribute. The third provides SRTP parameters by using + Multimedia Internet KEYing (MIKEY) [RFC3830] with the "key-mgmt" + attribute [RFC4567]. The fourth provides SRTP parameters by use of + security descriptions with the "crypto" attribute [RFC4568]. Note + that the line-wrapping and new-lines in example three and four are + provided for formatting reasons only -- they are not permitted in + actual SDP session descriptions. + + Readers familiar with RFC 3407 may notice the similarity between + the RFC 3407 "cpar" attribute and the above. There are however a + couple of important differences, notably that the "acap" attribute + contains a handle that enables referencing it and it furthermore + supports only attributes (the "cpar" attribute defined in RFC 3407 + supports bandwidth information as well). The "acap" attribute + also is not automatically associated with any particular + capabilities. See Section 3.14 for the relationship to RFC 3407. + + Attribute capabilities MUST NOT embed any capability negotiation + parameters. This restriction applies to all the capability + negotiation parameters defined in this document ("csup", "creq", + "acap", "tcap", "pcfg", and "acfg") as well as any capability + negotiation extensions defined. The following examples are thus + invalid attribute capabilities and MUST NOT be used: + + a=acap:1 acap:2 foo:a ;Not allowed to embed "acap" + + a=acap:2 a=pcfg:1 t=1 a=1 ;Not allowed to embed "pcfg" + + The reason for this restriction is to avoid overly complex processing + rules resulting from the expansion of such capabilities into + potential configurations (see Section 3.6.2 for further details). + +3.4.2. Transport Protocol Capability Attribute + + Transport protocols can be expressed as capabilities by use of a new + Transport Protocol Capability attribute ("a=tcap") defined as + follows: + + a=tcap: <trpr-cap-num> <proto-list> + + where <trpr-cap-num> is an integer between 1 and 2^31-1 (both + included) used to number the transport address capability for later + reference, and <proto-list> is one or more <proto>, separated by + white space, as defined in the SDP "m=" line. The attribute can be + provided at the session level and the media level. + + + + + +Andreasen Standards Track [Page 19] + +RFC 5939 SDP Capability Negotiation September 2010 + + + The "tcap" attribute adheres to the RFC 4566 "attribute" production, + with an att-value defined as follows: + + att-value = trpr-cap-num 1*WSP proto-list + trpr-cap-num = 1*10(DIGIT) ;defined in [RFC5234] + proto-list = proto *(1*WSP proto) ;defined in [RFC4566] + + Note that white space is not permitted before the trpr-cap-num. + + The "tcap" attribute can be provided at the session level and the + media level. There MUST NOT be more than one "a=tcap" attribute at + the session level and one at the media level (one per media + description in the latter case). Each occurrence of the "tcap" + attribute in the entire session description MUST use a different + value of <trpr-cap-num>. When multiple <proto> values are provided, + the first one is associated with the value <trpr-cap-num>, the second + one with the value one higher, etc. There MUST NOT be any capability + number overlap between different "tcap" attributes in the entire SDP + session description. The <trpr-cap-num> values provided are + independent of similar <cap-num> values provided for other capability + attributes, i.e., they form a separate name-space for transport + protocol capabilities. Consecutive numbering of the <trpr-cap-num> + values in different "tcap" attributes is not required. + + Below, we provide examples of the "a=tcap" attribute: + + a=tcap:1 RTP/AVP + + a=tcap:2 RTP/AVPF + + a=tcap:3 RTP/SAVP RTP/SAVPF + + a=tcap:5 UDP/TLS/RTP/SAVP + + The first one provides a capability for the "RTP/AVP" profile defined + in [RFC3551] and the second one provides a capability for the RTP + with RTCP-based feedback profile defined in [RFC4585]. The third one + provides capabilities for the "RTP/SAVP" (transport capability number + 3) and "RTP/SAVPF" profiles (transport protocol capability number 4). + The last one provides capabilities for "UDP/TLS/RTP/SAVP", i.e., + DTLS-SRTP [RFC5764] (transport capability number 5). + + The "tcap" attribute by itself can only specify transport protocols + as defined by <proto> in [RFC4566]; however, full specification of a + media stream requires further qualification of the transport protocol + by one or more media format descriptions, which themselves often + depend on the transport protocol. As an example, [RFC3551] defines + the "RTP/AVP" transport for use with audio and video codecs (media + + + +Andreasen Standards Track [Page 20] + +RFC 5939 SDP Capability Negotiation September 2010 + + + formats), whereas [RFC4145] defines the "TCP" transport, which, for + example, may be used to negotiate T.38 fax ("image/t38"), etc. In a + non-SDP context, some media formats could be viewed as transports + themselves (e.g., T.38); however, in the context of SDP and SDP + Capability Negotiation, they are not. If capability negotiation is + required for such media formats, they MUST all either be valid under + the transport protocol indicated in the "m=" line included for the + media stream description, or a suitable extension must be used, e.g., + SDP Media Capabilities [SDPMedCap]. + + The ability to use a particular transport protocol is inherently + implied by including it in the "m=" line, regardless of whether or + not it is provided in a "tcap" attribute. However, if a potential + configuration needs to reference that transport protocol as a + capability, the transport protocol MUST be included explicitly in a + "tcap" attribute. + + This may seem redundant (and indeed it is from the offerer's point + of view), however it is done to protect against intermediaries + (e.g., middleboxes) that may modify "m=" lines while passing + unknown attributes through. If an implicit transport capability + were used instead (e.g., a reserved transport capability number + could be used to refer to the transport protocol in the "m=" + line), and an intermediary were to modify the transport protocol + in the "m=" line (e.g., to translate between plain RTP and Secure + RTP), then the potential configuration referencing that implicit + transport capability may no longer be correct. With explicit + capabilities, we avoid this pitfall; however, the potential + configuration preference (see Section 3.5.1) may not reflect that + of the intermediary (which some may view as a feature). + + Note that a transport protocol capability may be provided, + irrespective of whether or not it is referenced in a potential + configuration (just like any other capability). + +3.4.3. Extension Capability Attributes + + The SDP Capability Negotiation framework allows for new types of + capabilities to be defined as extensions and used with the general + capability negotiation framework. The syntax and semantics of such + new capability attributes are not defined here; however, in order to + be used with potential configurations, they SHOULD allow for a + numeric handle to be associated with each capability. This handle + can be used as a reference within the potential and actual + configuration attributes (see Sections 3.5.1 and 3.5.2). The + definition of such extension capability attributes MUST also state + whether they can be applied at the session level, media level, or + + + + +Andreasen Standards Track [Page 21] + +RFC 5939 SDP Capability Negotiation September 2010 + + + both. Note that extensions can have option tags defined for them, + and option tags MUST be registered with the IANA in accordance with + the procedures specified in Section 6.2. + + Extension capabilities SHOULD NOT embed any capability negotiation + parameters. This applies to all the capability negotiation + parameters defined in this document as well as any extensions + defined. The reason for this restriction is to avoid overly complex + processing rules resulting from the expansion of such capabilities + into potential configurations (see Section 3.6.2 for further + details). If an extension does not follow the above "SHOULD NOT" + recommendation, the extension MUST provide a careful analysis of why + such behavior is both necessary and safe. + +3.5. Configuration Attributes + +3.5.1. Potential Configuration Attribute + + Potential configurations can be expressed by use of a new Potential + Configuration Attribute ("a=pcfg") defined as follows: + + a=pcfg: <config-number> [<pot-cfg-list>] + + where <config-number> is an integer between 1 and 2^31-1 (both + included). The attribute can be provided only at the media level. + + The "pcfg" attribute adheres to the RFC 4566 "attribute" production, + with an att-value defined as follows: + + att-value = config-number [1*WSP pot-cfg-list] + config-number = 1*10(DIGIT) ;defined in [RFC5234] + pot-cfg-list = pot-config *(1*WSP pot-config) + pot-config = attribute-config-list / + transport-protocol-config-list / + extension-config-list + + The missing productions are defined below. Note that white space is + not permitted before the config-number. + + The potential configuration attribute can be provided only at the + media level and there can be multiple instances of it within a given + media description. The attribute includes a configuration number, + which is an integer between 1 and 2^31-1 (both included). The + configuration number MUST be unique within the media description + (i.e., it has only media-level scope). The configuration number also + indicates the relative preference of potential configurations; lower + + + + + +Andreasen Standards Track [Page 22] + +RFC 5939 SDP Capability Negotiation September 2010 + + + numbers are preferred over higher numbers. Consecutive numbering of + the configuration numbers in different "pcfg" attributes in a media + description is not required. + + A potential configuration list is normally provided after the + configuration number. When the potential configuration list is + omitted, the potential configuration equals the actual configuration. + The potential configuration list contains one or more of attribute, + transport, and extension configuration lists. A potential + configuration may for example include attribute capabilities and + transport capabilities, transport capabilities only, or some other + combination of capabilities. If transport capabilities are not + included in a potential configuration, the default transport for that + media stream is used. + + The potential configuration lists generally reference one or more + capabilities (extension configuration lists MAY use a different + format). Those capabilities are (conceptually) used to construct a + new internal version of the SDP session description by use of purely + syntactic add and (possibly) delete operations on the original SDP + session description (actual configuration). This provides an + alternative potential configuration SDP session description that can + be used by conventional SDP and offer/answer procedures if selected. + + This document defines attribute configuration lists and transport + protocol configuration lists. Each of these MUST NOT be present more + than once in a particular potential configuration attribute. + Attribute capabilities referenced by the attribute configuration list + (if included) are added to the actual configuration, whereas a + transport capability referenced by the transport protocol + configuration list (if included) replaces the default transport + protocol from the actual configuration. Extension configuration + lists can be included as well. There can be more than one extension + configuration list; however, each particular extension MUST NOT be + present more than once in a given "a=pcfg" attribute. Together, the + various configuration lists define a potential configuration. + + There can be multiple potential configurations in a media + description. Each of these indicates not only a willingness, but in + fact a desire to use the potential configuration. + + + + + + + + + + + +Andreasen Standards Track [Page 23] + +RFC 5939 SDP Capability Negotiation September 2010 + + + The example SDP session description below contains two potential + configurations: + + v=0 + o=- 25678 753849 IN IP4 192.0.2.1 + s= + c=IN IP4 192.0.2.1 + t=0 0 + m=audio 53456 RTP/AVP 0 18 + a=tcap:1 RTP/SAVP RTP/SAVPF + a=acap:1 crypto:1 AES_CM_128_HMAC_SHA1_32 + inline:NzB4d1BINUAvLEw6UzF3WSJ+PSdFcGdUJShpX1Zj|2^20|1:32 + a=pcfg:1 t=1 a=1 + a=pcfg:2 t=2 a=1 + + Potential configuration 1 contains a transport protocol configuration + list that references transport capability 1 ("RTP/SAVP") and an + attribute configuration list that references attribute capability 1 + ("a=crypto:..."). Potential configuration 2 contains a transport + protocol configuration list that references transport capability 2 + ("RTP/SAVPF") and an attribute configuration list that references + attribute capability 1 ("a=crypto:..."). + + Attribute capabilities are used in a potential configuration by use + of the attribute-config-list parameter, which is defined by the + following ABNF: + + attribute-config-list = "a=" delete-attributes + attribute-config-list =/ "a=" [delete-attributes ":"] + mo-att-cap-list *(BAR mo-att-cap-list) + + delete-attributes = DELETE ( "m" ; media attributes + / "s" ; session attributes + / "ms" ) ; media and session attributes + + mo-att-cap-list = mandatory-optional-att-cap-list / + mandatory-att-cap-list / + optional-att-cap-list + + mandatory-optional-att-cap-list = mandatory-att-cap-list + "," optional-att-cap-list + mandatory-att-cap-list = att-cap-list + optional-att-cap-list = "[" att-cap-list "]" + + att-cap-list = att-cap-num *("," att-cap-num) + att-cap-num = 1*10(DIGIT) ;defined in [RFC5234] + BAR = "|" + DELETE = "-" + + + +Andreasen Standards Track [Page 24] + +RFC 5939 SDP Capability Negotiation September 2010 + + + Note that white space is not permitted within the attribute-config- + list rule. + + Each attribute configuration list can optionally begin with + instructions for how to handle attributes that are part of the actual + configuration SDP session description (i.e., the "a=" lines present + in the original SDP session description). By default, such + attributes will remain as part of the potential configuration in + question. However, if delete-attributes indicates "-m", then all + attribute lines within the media description in question will be + deleted in the resulting potential configuration SDP session + description (i.e., all "a=" lines under the "m=" line in question). + If delete-attributes indicates "-s", then all attribute lines at the + session level will be deleted (i.e., all "a=" lines before the first + "m=" line). If delete-attributes indicates "-ms", then all attribute + lines within this media description ("m=" line) and all attribute + lines at the session level will be deleted. + + The attribute capability list comes next (if included). It contains + one or more alternative lists of attribute capabilities. The + alternative attribute capability lists are separated by a vertical + bar ("|"), and each list contains one or more attribute capabilities + separated by commas (","). The attribute capabilities are either + mandatory or optional. Mandatory attribute capabilities MUST be + supported in order to use the potential configuration, whereas + optional attribute capabilities MAY be supported in order to use the + potential configuration. + + Within each attribute capability list, all the mandatory attribute + capabilities (if any) are listed first, and all the optional + attribute capabilities (if any) are listed last. The optional + attribute capabilities are contained within a pair of square brackets + ("[" and "]"). Each attribute capability is merely an attribute + capability number (att-cap-num) that identifies a particular + attribute capability by referring to attribute capability numbers + defined above and hence MUST be between 1 and 2^31-1 (both included). + The following example illustrates the above: + + a=pcfg:1 a=-m:1,2,[3,4]|1,7,[5] + + where + + o "a=-m:1,2,[3,4]|1,7,[5]" is the attribute configuration list + + o "-m" indicates to delete all attributes from the media description + of the actual configuration + + + + + +Andreasen Standards Track [Page 25] + +RFC 5939 SDP Capability Negotiation September 2010 + + + o "1,2,[3,4]" and "1,7,[5]" are both attribute capability lists. + The two lists are alternatives, since they are separated by a + vertical bar above + + o "1", "2", and "7" are mandatory attribute capabilities + + o "3", "4", and "5" are optional attribute capabilities + + Note that in the example above, we have a single handle ("1") for the + potential configuration(s), but there are actually two different + potential configurations (separated by a vertical bar). This is done + for message size efficiency reasons, which is especially important + when we add other types of capabilities to the potential + configuration. If there is a need to provide a unique handle for + each, then separate "a=pcfg" attributes with different handles MUST + be used instead. + + Each referenced attribute capability in the potential configuration + will result in the corresponding attribute name and its associated + value (contained inside the attribute capability) being added to the + resulting potential configuration SDP session description. + + Alternative attribute capability lists are separated by a vertical + bar ("|"), the scope of which extends to the next alternative (i.e., + "," has higher precedence than "|"). The alternatives are ordered by + preference with the most preferred listed first. In order for a + recipient of the SDP session description (e.g., an answerer receiving + this in an offer) to use this potential configuration, exactly one of + the alternative lists MUST be selected in its entirety. This + requires that all mandatory attribute capabilities referenced by the + potential configuration are supported with the attribute values + provided. + + Transport protocol configuration lists are included in a potential + configuration by use of the transport-protocol-config-list parameter, + which is defined by the following ABNF: + + transport-protocol-config-list = + "t=" trpr-cap-num *(BAR trpr-cap-num) + trpr-cap-num = 1*10(DIGIT) ; defined in [RFC5234] + + Note that white space is not permitted within this rule. + + The trpr-cap-num refers to transport protocol capability numbers + defined above and hence MUST be between 1 and 2^31-1 (both included). + Alternative transport protocol capabilities are separated by a + vertical bar ("|"). The alternatives are ordered by preference with + the most preferred listed first. If there are no transport protocol + + + +Andreasen Standards Track [Page 26] + +RFC 5939 SDP Capability Negotiation September 2010 + + + capabilities included in a potential configuration at the media + level, the transport protocol information from the associated "m=" + line MUST be used. In order for a recipient of the SDP session + description (e.g., an answerer receiving this in an offer) to use + this potential configuration, exactly one of the alternatives MUST be + selected. This requires that the transport protocol in question is + supported. + + In the presence of intermediaries (the existence of which may not + be known), care should be taken with assuming that the transport + protocol in the "m=" line will not be modified by an intermediary. + Use of an explicit transport protocol capability will guard + against capability negotiation implications of that. + + Extension capabilities can be included in a potential configuration + as well by use of extension configuration lists. Extension + configuration lists MUST adhere to the following ABNF: + + extension-config-list = ["+"] ext-cap-name "=" ext-cap-list + ext-cap-name = 1*(ALPHA / DIGIT) + ext-cap-list = 1*VCHAR ; defined in [RFC5234] + + Note that white space is not permitted within this rule. + + The ext-cap-name refers to the name of the extension capability and + the ext-cap-list is here merely defined as a sequence of visible + characters. The actual extension supported MUST refine both of these + further. For extension capabilities that merely need to be + referenced by a capability number, it is RECOMMENDED to follow a + structure similar to what has been specified above. Unsupported or + unknown potential extension configuration lists in a potential + configuration attribute MUST be ignored, unless they are prefixed + with the plus ("+") sign, which indicates that the extension is + mandatory and MUST be supported in order to use that potential + configuration. + + The "creq" attribute and its associated rules can be used to + ensure that required extensions are supported in the first place. + + Extension configuration lists define new potential configuration + parameters and hence they MUST be registered with IANA per the + procedures defined in Section 6.3. + + Potential configuration attributes can be provided only at the media + level; however, it is possible to reference capabilities provided at + either the session or media level. There are certain semantic rules + and restrictions associated with this: + + + + +Andreasen Standards Track [Page 27] + +RFC 5939 SDP Capability Negotiation September 2010 + + + A (media-level) potential configuration attribute in a given media + description MUST NOT reference a media-level capability provided in a + different media description; doing so invalidates that potential + configuration (note that a potential configuration attribute can + contain more than one potential configuration by use of + alternatives). A potential configuration attribute can however + reference a session-level capability. The semantics of doing so + depends on the type of capability. In the case of transport protocol + capabilities, it has no particular implication. In the case of + attribute capabilities, however, it does. More specifically, the + attribute name and value (provided within that attribute capability) + will be considered part of the resulting SDP for that particular + configuration at the *session* level. In other words, it will be + as-if that attribute was provided with that value at the session + level in the first place. As a result, the base SDP Capability + Negotiation framework REQUIRES that potential configurations do not + reference any session-level attribute capabilities that contain + media-level attributes (since that would place a media-level + attribute at the session level). Extensions may modify this + behavior, as long as it is fully backwards compatible with the base + specification. + + Individual media streams perform capability negotiation individually, + and hence it is possible that one media stream (where the attribute + was part of a potential configuration) chose a configuration without + a session-level attribute that was chosen by another media stream. + The session-level attribute however remains "active" and applies to + the entire resulting potential configuration SDP session description. + In theory, this is problematic if one or more session-level + attributes either conflicts with or potentially interacts with + another session-level or media-level attribute in an undefined + manner. In practice, such examples seem to be rare (at least with + the SDP attributes that had been defined at time of publication of + this document). + + A related set of problems can occur if we need coordination + between session-level attributes from multiple media streams in + order for a particular functionality to work. The grouping + framework [RFC5888] is an example of this. If we use the SDP + Capability Negotiation framework to select a session-level group + attribute (provided as an attribute capability), and we require + two media descriptions to do this consistently, we could have a + problem. The Forward Error Correction (FEC) grouping semantics + [RFC4756] is one example where this in theory could cause + problems, however in practice, it is unclear that there is a + significant problem with the grouping semantics that had been + defined at time of publication of this document. + + + + +Andreasen Standards Track [Page 28] + +RFC 5939 SDP Capability Negotiation September 2010 + + + Resolving the above issues in general requires inter-media stream + constraints and synchronized potential configuration processing; this + would add considerable complexity to the overall solution. In + practice, with the SDP attributes defined at time of publication of + this document, it does not seem to be a significant problem, and + hence the base SDP Capability Negotiation solution does not provide a + solution to this issue. Instead, it is RECOMMENDED that use of + session-level attributes in a potential configuration is avoided when + possible, and when not, that such use is examined closely for any + potential interaction issues. If interaction is possible, the entity + generating the SDP session description SHOULD NOT assume that well- + defined operation will occur at the receiving entity. This implies + that mechanisms that might have such interactions cannot be used in + security critical contexts. + + The session-level operation of extension capabilities is undefined. + Consequently, each new session-level extension capability defined + MUST specify the implication of making it part of a configuration at + the media level. + + Below, we provide an example of the "a=pcfg" attribute in a complete + media description in order to properly indicate the supporting + attributes: + + v=0 + o=- 25678 753849 IN IP4 192.0.2.1 + s= + c=IN IP4 192.0.2.1 + t=0 0 + m=audio 53456 RTP/AVPF 0 18 + a=acap:1 crypto:1 AES_CM_128_HMAC_SHA1_32 + inline:NzB4d1BINUAvLEw6UzF3WSJ+PSdFcGdUJShpX1Zj|2^20|1:32 + a=tcap:1 RTP/AVPF RTP/AVP RTP/SAVP RTP/SAVPF + a=pcfg:1 t=4|3 a=1 + a=pcfg:8 t=1|2 + + We have two potential configuration attributes listed here. The + first one (and most preferred, since its configuration number is "1") + indicates that either of the profiles RTP/SAVPF or RTP/SAVP + (specified by the transport protocol capability numbers 4 and 3) can + be supported with attribute capability 1 (the "crypto" attribute); + RTP/SAVPF is preferred over RTP/SAVP since its capability number (4) + is listed first in the preferred potential configuration. Note that + although we have a single potential configuration attribute and + associated handle, we have two potential configurations. + + + + + + +Andreasen Standards Track [Page 29] + +RFC 5939 SDP Capability Negotiation September 2010 + + + The second potential configuration attribute indicates that the + RTP/AVPF or RTP/AVP profiles can be used, with RTP/AVPF being the + preferred one. This non-secure RTP alternative is the less preferred + one since its configuration number is "8". Again, note that we have + two potential configurations here and hence a total of four potential + configurations in the SDP session description above. + +3.5.2. Actual Configuration Attribute + + The actual configuration attribute identifies which of the potential + configurations from an offer SDP session description was selected and + used as the actual configuration to generate an answer SDP session + description. This is done by including the configuration number and + the configuration lists (if any) from the offer that were selected + and used by the answerer in his offer/answer procedure as follows: + + o A selected attribute configuration MUST include the delete- + attributes and the known and supported parameters from the + selected alternative mo-att-cap-list (i.e., containing all + mandatory and all known and supported optional capability numbers + from the potential configuration). If delete-attributes were not + included in the potential configuration, they will of course not + be present here either. + + o A selected transport protocol configuration MUST include the + selected transport protocol capability number. + + o A selected potential extension configuration MUST include the + selected extension configuration parameters as specified for that + particular extension. + + o When a configuration list contains alternatives (separated by + "|"), the selected configuration only MUST be provided. + + Note that the selected configuration number and all selected + capability numbers used in the actual configuration attribute refer + to those from the offer: not the answer. + + The answer may for example include capabilities as well to inform + the offerer of the answerers capabilities above and beyond the + negotiated configuration. The actual configuration attribute does + not refer to any of those answer capabilities though. + + The Actual Configuration Attribute ("a=acfg") is defined as follows: + + a=acfg: <config-number> [<sel-cfg-list>] + + + + + +Andreasen Standards Track [Page 30] + +RFC 5939 SDP Capability Negotiation September 2010 + + + where <config-number> is an integer between 1 and 2^31-1 (both + included) that refers to the selected potential configuration. The + attribute can be provided only at the media level. + + The "acfg" attribute adheres to the RFC 4566 "attribute" production, + with an att-value defined as follows: + + att-value = config-number [1*WSP sel-cfg-list] + ;config-number defined in Section 3.5.1. + sel-cfg-list = sel-cfg *(1*WSP sel-cfg) + sel-cfg = sel-attribute-config / + sel-transport-protocol-config / + sel-extension-config + + sel-attribute-config = + "a=" [delete-attributes ":"] mo-att-cap-list + ; defined in Section 3.5.1. + + sel-transport-protocol-config = + "t=" trpr-cap-num ; defined in Section 3.5.1. + + sel-extension-config = + ext-cap-name "=" 1*VCHAR ; defined in Section 3.5.1. + + Note that white space is not permitted before the config-number. + + The actual configuration ("a=acfg") attribute can be provided only at + the media level. There MUST NOT be more than one occurrence of an + actual configuration attribute within a given media description. + + Below, we provide an example of the "a=acfg" attribute (building on + the previous example with the potential configuration attribute): + + v=0 + o=- 24351 621814 IN IP4 192.0.2.2 + s= + c=IN IP4 192.0.2.2 + t=0 0 + m=audio 54568 RTP/SAVPF 0 + a=crypto:1 AES_CM_128_HMAC_SHA1_32 + inline:WSJ+PSdFcGdUJShpX1ZjNzB4d1BINUAvLEw6UzF3|2^20|1:32 + a=acfg:1 t=4 a=1 + + It indicates that the answerer used an offer consisting of potential + configuration number 1 with transport protocol capability 4 from the + offer (RTP/SAVPF) and attribute capability 1 (the "crypto" + attribute). The answerer includes his own "crypto" attribute as + well. + + + +Andreasen Standards Track [Page 31] + +RFC 5939 SDP Capability Negotiation September 2010 + + +3.6. Offer/Answer Model Extensions + + In this section, we define extensions to the offer/answer model + defined in [RFC3264] to allow for potential configurations to be + included in an offer, where they constitute alternative offers that + may be accepted by the answerer instead of the actual + configuration(s) included in the "m=" line(s). + + The procedures defined in the following subsections apply to both + unicast and multicast streams. + +3.6.1. Generating the Initial Offer + + An offerer that wants to use the SDP Capability Negotiation defined + in this document MUST include the following in the offer: + + o Zero or more attribute capability attributes. There MUST be an + attribute capability attribute ("a=acap") as defined in Section + 3.4.1 for each attribute name and associated value (if any) that + needs to be indicated as a capability in the offer. Attribute + capabilities may be included irrespective of whether or not they + are referenced by a potential configuration. + + Session-level attributes and associated values MUST be provided in + attribute capabilities only at the session level, whereas media- + level attributes and associated values can be provided in + attribute capabilities at either the media level or session level. + Attributes that are allowed at either the session or media level + can be provided in attribute capabilities at either level. + + o Zero or more transport protocol capability attributes. There MUST + be transport protocol capabilities as defined in Section 3.4.2 + with values for each transport protocol that needs to be indicated + as a capability in the offer. + + Transport protocol capabilities may be included irrespective of + whether or not they are referenced by a potential configuration. + Transport protocols that apply to multiple media descriptions + SHOULD be provided as transport protocol capabilities at the + session level whereas transport protocols that apply only to a + specific media description ("m=" line), SHOULD be provided as + transport protocol capabilities within that particular media + description. In either case, there MUST NOT be more than a single + "a=tcap" attribute at the session level and a single "a=tcap" + attribute in each media description. + + + + + + +Andreasen Standards Track [Page 32] + +RFC 5939 SDP Capability Negotiation September 2010 + + + o Zero or more extension capability attributes. There MUST be one + or more extension capability attributes (as outlined in Section + 3.4.3) for each extension capability that is referenced by a + potential configuration. Extension capability attributes that are + not referenced by a potential configuration can be provided as + well. + + o Zero or more potential configuration attributes. There MUST be + one or more potential configuration attributes ("a=pcfg"), as + defined in Section 3.5.1, in each media description where + alternative potential configurations are to be negotiated. Each + potential configuration attribute MUST adhere to the rules + provided in Section 3.5.1 and the additional rules provided below. + + If the offerer requires support for one or more extensions (besides + the base protocol defined here), then the offerer MUST include one or + more "a=creq" attributes as follows: + + o If support for one or more capability negotiation extensions is + required for the entire session description, then option tags for + those extensions MUST be included in a single session-level "creq" + attribute. + + o For each media description that requires support for one or more + capability negotiation extensions not listed at the session level, + a single "creq" attribute containing all the required extensions + for that media description MUST be included within the media + description (in accordance with Section 3.3.2). + + Note that extensions that only need to be supported by a particular + potential configuration can use the "mandatory" extension prefix + ("+") within the potential configuration (see Section 3.5.1). + + The offerer SHOULD furthermore include the following: + + o A supported capability negotiation extension attribute ("a=csup") + at the session level and/or media level as defined in Section + 3.3.2 for each capability negotiation extension supported by the + offerer and not included in a corresponding "a=creq" attribute + (i.e., at the session level or in the same media description). + Option tags provided in a "a=csup" attribute at the session level + indicate extensions supported for the entire session description, + whereas option tags provided in a "a=csup" attribute in a media + description indicate extensions supported for only that particular + media description. + + + + + + +Andreasen Standards Track [Page 33] + +RFC 5939 SDP Capability Negotiation September 2010 + + + Capabilities provided in an offer merely indicate what the offerer is + capable of doing. They do not constitute a commitment or even an + indication to use them. In contrast, each potential configuration + constitutes an alternative offer that the offerer would like to use. + The potential configurations MUST be used by the answerer to + negotiate and establish the session. + + The offerer MUST include one or more potential configuration + attributes ("a=pcfg") in each media description where the offerer + wants to provide alternative offers (in the form of potential + configurations). Each potential configuration attribute in a given + media description MUST contain a unique configuration number and + zero, one or more potential configuration lists, as described in + Section 3.5.1. Each potential configuration list MUST refer to + capabilities that are provided at the session level or within that + particular media description; otherwise, the potential configuration + is considered invalid. The base SDP Capability Negotiation framework + REQUIRES that potential configurations not reference any session- + level attribute capabilities that contain media-level-only + attributes; however, extensions may modify this behavior, as long as + it is fully backwards compatible with the base specification. + Furthermore, it is RECOMMENDED that potential configurations avoid + use of session-level capabilities whenever possible; refer to Section + 3.5.1. + + The current actual configuration is included in the "m=" line (as + defined by [RFC3264]) and any associated parameters for the media + description (e.g., attribute ("a=") and bandwidth ("b=") lines). + Note that the actual configuration is by default the least-preferred + configuration, and hence the answerer will seek to negotiate use of + one of the potential configurations instead. If the offerer wishes a + different preference for the actual configuration, the offerer MUST + include a corresponding potential configuration with the relevant + configuration number (which indicates the relative preference between + potential configurations); this corresponding potential configuration + should simply duplicate the actual configuration. + + This can either be done implicitly (by not referencing any + capabilities), or explicitly (by providing and using capabilities + for the transport protocol and all the attributes that are part of + the actual configuration). The latter may help detect + intermediaries that modify the actual configuration but are not + SDP Capability Negotiation aware. + + Per [RFC3264], once the offerer generates the offer, he must be + prepared to receive incoming media in accordance with that offer. + That rule applies here as well, but only for the actual + configurations provided in the offer: Media received by the offerer + + + +Andreasen Standards Track [Page 34] + +RFC 5939 SDP Capability Negotiation September 2010 + + + according to one of the potential configurations MAY be discarded, + until the offerer receives an answer indicating what the actual + selected configuration is. Once that answer is received, incoming + media MUST be processed in accordance with the actual selected + configuration indicated and the answer received (provided the + offer/answer exchange completed successfully). + + The above rule assumes that the offerer can determine whether + incoming media adheres to the actual configuration offered or one of + the potential configurations instead; this may not always be the + case. If the offerer wants to ensure he does not play out any + garbage, the offerer SHOULD discard all media received before the + answer SDP session description is received. Conversely, if the + offerer wants to avoid clipping, he SHOULD attempt to play any + incoming media as soon as it is received (at the risk of playing out + garbage). In either case, please note that this document does not + place any requirements on the offerer to process and play media + before answer. For further details, please refer to Section 3.9. + +3.6.2. Generating the Answer + + When receiving an offer, the answerer MUST check for the presence of + a required capability negotiation extension attribute ("a=creq") + provided at the session level. If one is found, then capability + negotiation MUST be performed. If none is found, then the answerer + MUST check each offered media description for the presence of a + required capability negotiation extension attribute ("a=creq") and + one or more potential configuration attributes ("a=pcfg"). + Capability negotiation MUST be performed for each media description + where either of those is present in accordance with the procedures + described below. + + The answerer MUST first ensure that it supports any required + capability negotiation extensions: + + o If a session-level "creq" attribute is provided, and it contains + an option tag that the answerer does not support, then the + answerer MUST NOT use any of the potential configuration + attributes provided for any of the media descriptions. Instead, + the normal offer/answer procedures MUST continue as per [RFC3264]. + Furthermore, the answerer MUST include a session-level supported + capability negotiation extensions attribute ("a=csup") with option + tags for the capability negotiation extensions supported by the + answerer. + + o If a media-level "creq" attribute is provided, and it contains an + option tag that the answerer does not support, then the answerer + MUST NOT use any of the potential configuration attributes + + + +Andreasen Standards Track [Page 35] + +RFC 5939 SDP Capability Negotiation September 2010 + + + provided for that particular media description. Instead, the + offer/answer procedures for that media description MUST continue + as per [RFC3264] (SDP Capability Negotiation is still performed + for other media descriptions in the SDP session description). + Furthermore, the answerer MUST include a supported capability + negotiation extensions attribute ("a=csup") in that media + description with option tags for the capability negotiation + extensions supported by the answerer for that media description. + + Assuming all required capability negotiation extensions are + supported, the answerer now proceeds as follows. + + For each media description where capability negotiation is to be + performed (i.e., all required capability negotiation extensions are + supported and at least one valid potential configuration attribute is + present), the answerer MUST perform capability negotiation by using + the most preferred potential configuration that is valid to the + answerer, subject to any local policies. A potential configuration + is valid to the answerer if: + + 1. It is in accordance with the syntax and semantics provided in + Section 3.5.1. + + 2. It contains a configuration number that is unique within that + media description. + + 3. All attribute capabilities referenced by the potential + configuration are valid themselves (as defined in Section 3.4.1) + and each of them is provided either at the session level or within + this particular media description. + + For session-level attribute capabilities referenced, the + attributes contained inside them MUST NOT be media-level-only + attributes. Note that the answerer can only determine this for + attributes supported by the answerer. If an attribute is not + supported, it will simply be ignored by the answerer and hence + will not trigger an "invalid" potential configuration. + + 4. All transport protocol capabilities referenced by the potential + configuration are valid themselves (as defined in Section 3.4.2) + and each of them is furthermore provided either at the session + level or within this particular media description. + + 5. All extension capabilities referenced by the potential + configuration and supported by the answerer are valid themselves + (as defined by that particular extension) and each of them are + furthermore provided either at the session level or within this + particular media description. Unknown or unsupported extension + + + +Andreasen Standards Track [Page 36] + +RFC 5939 SDP Capability Negotiation September 2010 + + + capabilities MUST be ignored, unless they are prefixed with the + plus ("+") sign, which indicates that the extension MUST be + supported in order to use that potential configuration. If the + extension is not supported, that potential configuration is not + valid to the answerer. + + The most preferred valid potential configuration in a media + description is the valid potential configuration with the lowest + configuration number. The answerer MUST now process the offer for + that media stream based on the most preferred valid potential + configuration. Conceptually, this entails the answerer constructing + an (internal) offer as follows. First, all capability negotiation + parameters from the offer SDP session description are removed, + thereby yielding an offer SDP session description with the actual + configuration as if SDP Capability Negotiation was not done in the + first place. Secondly, this actual configuration SDP session + description is modified as follows for each media stream offered, + based on the capability negotiation parameters included originally: + + o If a transport protocol capability is included in the potential + configuration, then it replaces the transport protocol provided in + the "m=" line for that media description. + + o If attribute capabilities are present with a delete-attributes + session indication ("-s") or media and session indication ("-ms"), + then all session-level attributes from the actual configuration + SDP session description MUST be deleted in the resulting potential + configuration SDP session description in accordance with the + procedures in Section 3.5.1. If attribute capabilities are + present with a delete-attributes media indication ("-m") or media + and session indication ("-ms"), then all attributes from the + actual configuration SDP session description inside this media + description MUST be deleted. + + o If a session-level attribute capability is included, the attribute + (and its associated value, if any) contained in it MUST be added + to the resulting SDP session description. All such added session- + level attributes MUST be listed before the session-level + attributes that were initially present in the SDP session + description. Furthermore, the added session-level attributes MUST + be added in the order they were provided in the potential + configuration (see also Section 3.5.1). + + This allows for attributes with implicit preference ordering to + be added in the desired order; the "crypto" attribute [RFC4568] + is one such example. + + + + + +Andreasen Standards Track [Page 37] + +RFC 5939 SDP Capability Negotiation September 2010 + + + o If a media-level attribute capability is included, then the + attribute (and its associated value, if any) MUST be added to the + resulting SDP session description within the media description in + question. All such added media-level attributes MUST be listed + before the media-level attributes that were initially present in + the media description in question. Furthermore, the added media- + level attributes MUST be added in the order they were provided in + the potential configuration (see also Section 3.5.1). + + o If a supported extension capability is included, then it MUST be + processed in accordance with the rules provided for that + particular extension capability. + + The above steps MUST be performed exactly once per potential + configuration, i.e., there MUST NOT be any recursive processing of + any additional capability negotiation parameters that may (illegally) + have been nested inside capabilities themselves. + + As an example of this, consider the (illegal) attribute capability + + a=acap:1 acap:2 foo:a + + The resulting potential configuration SDP session description will, + after the above processing has been done, contain the attribute + capability + + a=acap:2 foo:a + + However, since we do not perform any recursive processing of + capability negotiation parameters, this second attribute capability + parameter will not be processed by the offer/answer procedure. + Instead, it will simply appear as a (useless) attribute in the SDP + session description that will be ignored by further processing. + + Note that a transport protocol from the potential configuration + replaces the transport protocol in the actual configuration, but an + attribute capability from the potential configuration is simply added + to the actual configuration. In some cases, this can result in + having one or more meaningless attributes in the resulting potential + configuration SDP session description, or worse, ambiguous or + potentially even illegal attributes. Use of delete-attributes for + the session- and/or media-level attributes MUST be done to avoid such + scenarios. Nevertheless, it is RECOMMENDED that implementations + ignore meaningless attributes that may result from potential + configurations. + + + + + + +Andreasen Standards Track [Page 38] + +RFC 5939 SDP Capability Negotiation September 2010 + + + For example, if the actual configuration was using Secure RTP and + included an "a=crypto" attribute for the SRTP keying material, + then use of a potential configuration that uses plain RTP would + make the "crypto" attribute meaningless. The answerer may or may + not ignore such a meaningless attribute. The offerer can here + ensure correct operation by using delete-attributes to remove the + "crypto" attribute (but will then need to provide attribute + capabilities to reconstruct the SDP session description with the + necessary attributes deleted, e.g., rtpmaps). + + Also note, that while it is permissible to include media-level + attribute capabilities at the session level, the base SDP Capability + Negotiation framework defined here does not define any procedures for + use of them, i.e., the answerer effectively ignores them. + + Please refer to Section 3.6.2.1 for examples of how the answerer may + conceptually "see" the resulting offered alternative potential + configurations. + + The answerer MUST check that he supports all mandatory attribute + capabilities from the potential configuration (if any), the transport + protocol capability (if any) from the potential configuration, and + all mandatory extension capabilities from the potential configuration + (if any). If he does not, the answerer MUST proceed to the second + most preferred valid potential configuration for the media + description, etc. + + o In the case of attribute capabilities, support implies that the + attribute name contained in the capability is supported and it can + (and will) be negotiated successfully in the offer/answer exchange + with the value provided. This does not necessarily imply that the + value provided is supported in its entirety. For example, the + "a=fmtp" parameter is often provided with one or more values in a + list, where the offerer and answerer negotiate use of some subset + of the values provided. Other attributes may include mandatory + and optional parts to their values; support for the mandatory part + is all that is required here. + + A side effect of the above rule is that whenever an "fmtp" or + "rtpmap" parameter is provided as a mandatory attribute + capability, the corresponding media format (codec) must be + supported and use of it negotiated successfully. If this is + not the offerer's intent, the corresponding attribute + capabilities must be listed as optional instead. + + + + + + + +Andreasen Standards Track [Page 39] + +RFC 5939 SDP Capability Negotiation September 2010 + + + o In the case of transport protocol capabilities, support implies + that the transport protocol contained in the capability is + supported and the transport protocol can (and will) be negotiated + successfully in the offer/answer exchange. + + o In the case of extension capabilities, the extension MUST define + the rules for when the extension capability is considered + supported and those rules MUST be satisfied. + + If the answerer has exhausted all potential configurations for the + media description, without finding a valid one that is also + supported, then the answerer MUST process the offered media stream + based on the actual configuration plus any session-level attributes + added by a valid and supported potential configuration from another + media description in the offered SDP session description. + + The above process describes potential configuration selection as a + per-media-stream process. Inter-media stream coordination of + selected potential configurations however is required in some cases. + First of all, session-level attributes added by a potential + configuration for one media description MUST NOT cause any problems + for potential configurations selected by other media descriptions in + the offer SDP session description. If the session-level attributes + are mandatory, then those session-level attributes MUST furthermore + be supported by the session as a whole (i.e., all the media + descriptions if relevant). As mentioned earlier, this adds + additional complexity to the overall processing and hence it is + RECOMMENDED not to use session-level attribute capabilities in + potential configurations, unless absolutely necessary. + + Once the answerer has selected a valid and supported offered + potential configuration for all of the media streams (or has fallen + back to the actual configuration plus any added session attributes), + the answerer MUST generate a valid virtual answer SDP session + description based on the selected potential configuration SDP session + description, as "seen" by the answerer using normal offer/answer + rules (see Section 3.6.2.1 for examples). The actual answer SDP + session description is formed from the virtual answer SDP session + description as follows: if the answerer selected one of the potential + configurations in a media description, the answerer MUST include an + actual configuration attribute ("a=acfg") within that media + description. The "a=acfg" attribute MUST identify the configuration + number for the selected potential configuration as well as the actual + parameters that were used from that potential configuration; if the + potential configuration included alternatives, the selected + alternatives only MUST be included. Only the known and supported + parameters will be included. Unknown or unsupported parameters MUST + NOT be included in the actual configuration attribute. In the case + + + +Andreasen Standards Track [Page 40] + +RFC 5939 SDP Capability Negotiation September 2010 + + + of attribute capabilities, only the known and supported capabilities + are included; unknown or unsupported attribute capabilities MUST NOT + be included. + + If the answerer supports one or more capability negotiation + extensions that were not included in a required capability + negotiation extensions attribute in the offer, then the answerer + SHOULD furthermore include a supported capability negotiation + attribute ("a=csup") at the session level with option tags for the + extensions supported across media streams. Also, if the answerer + supports one or more capability negotiation extensions for only + particular media descriptions, then a supported capability + negotiation attribute with those option tags SHOULD be included + within each relevant media description. The required capability + negotiation attribute ("a=creq") MUST NOT be used in an answer. + + The offerer's originally provided actual configuration is contained + in the offer media description's "m=" line (and associated + parameters). The answerer MAY send media to the offerer in + accordance with that actual configuration as soon as it receives the + offer; however, it MUST NOT send media based on that actual + configuration if it selects an alternative potential configuration. + If the answerer selects one of the potential configurations, then the + answerer MAY immediately start to send media to the offerer in + accordance with the selected potential configuration; however, the + offerer MAY discard such media or play out garbage until the offerer + receives the answer. Please refer to Section 3.9. for additional + considerations and possible alternative solutions outside the base + SDP Capability Negotiation framework. + + If the answerer selected a potential configuration instead of the + actual configuration, then it is RECOMMENDED that the answerer send + back an answer SDP session description as soon as possible. This + minimizes the risk of having media discarded or played out as garbage + by the offerer. In the case of SIP [RFC3261] without any extensions, + this implies that if the offer was received in an INVITE message, + then the answer SDP session description should be provided in the + first non-100 provisional response sent back (per RFC 3261, the + answer would need to be repeated in the 200 response as well, unless + a relevant extension such as [RFC3262] is being used). + + + + + + + + + + + +Andreasen Standards Track [Page 41] + +RFC 5939 SDP Capability Negotiation September 2010 + + +3.6.2.1. Example Views of Potential Configurations + + The following examples illustrate how the answerer may conceptually + "see" a potential configuration. Consider the following offered SDP + session description: + + v=0 + o=alice 2891092738 2891092738 IN IP4 lost.example.com + s= + t=0 0 + c=IN IP4 lost.example.com + a=tool:foo + a=acap:1 key-mgmt:mikey AQAFgM0XflABAAAAAAAAAAAAAAsAyO... + a=tcap:1 RTP/SAVP RTP/AVP + m=audio 59000 RTP/AVP 98 + a=rtpmap:98 AMR/8000 + a=acap:2 crypto:1 AES_CM_128_HMAC_SHA1_32 + inline:NzB4d1BINUAvLEw6UzF3WSJ+PSdFcGdUJShpX1Zj|2^20|1:32 + a=pcfg:1 t=1 a=1|2 + m=video 52000 RTP/AVP 31 + a=rtpmap:31 H261/90000 + a=acap:3 crypto:1 AES_CM_128_HMAC_SHA1_80 + inline:d0RmdmcmVCspeEc3QGZiNWpVLFJhQX1cfHAwJSoj|2^20|1:32 + a=pcfg:1 t=1 a=1|3 + + This particular SDP session description offers an audio stream and a + video stream, each of which can either use plain RTP (actual + configuration) or Secure RTP (potential configuration). Furthermore, + two different keying mechanisms are offered, namely session-level Key + Management Extensions using MIKEY (attribute capability 1) and media- + level SDP security descriptions (attribute capabilities 2 and 3). + There are several potential configurations here, however, below we + show the one the answerer "sees" when using potential configuration 1 + for both audio and video, and furthermore using attribute capability + 1 (MIKEY) for both (we have removed all the capability negotiation + attributes for clarity): + + v=0 + o=alice 2891092738 2891092738 IN IP4 lost.example.com + s= + t=0 0 + c=IN IP4 lost.example.com + a=tool:foo + a=key-mgmt:mikey AQAFgM0XflABAAAAAAAAAAAAAAsAyO... + m=audio 59000 RTP/SAVP 98 + a=rtpmap:98 AMR/8000 + m=video 52000 RTP/SAVP 31 + a=rtpmap:31 H261/90000 + + + +Andreasen Standards Track [Page 42] + +RFC 5939 SDP Capability Negotiation September 2010 + + + Note that the transport protocol in the media descriptions indicate + use of Secure RTP. + + Below, we show the offer the answerer "sees" when using potential + configuration 1 for both audio and video and furthermore using + attribute capability 2 and 3, respectively, (SDP security + descriptions) for the audio and video stream -- note the order in + which the resulting attributes are provided: + + v=0 + o=alice 2891092738 2891092738 IN IP4 lost.example.com + s= + t=0 0 + c=IN IP4 lost.example.com + a=tool:foo + m=audio 59000 RTP/SAVP 98 + a=crypto:1 AES_CM_128_HMAC_SHA1_32 + inline:NzB4d1BINUAvLEw6UzF3WSJ+PSdFcGdUJShpX1Zj|2^20|1:32 + a=rtpmap:98 AMR/8000 + m=video 52000 RTP/SAVP 31 + a=crypto:1 AES_CM_128_HMAC_SHA1_80 + inline:d0RmdmcmVCspeEc3QGZiNWpVLFJhQX1cfHAwJSoj|2^20|1:32 + a=rtpmap:31 H261/90000 + + Again, note that the transport protocol in the media descriptions + indicate use of Secure RTP. + + And finally, we show the offer the answerer "sees" when using + potential configuration 1 with attribute capability 1 (MIKEY) for the + audio stream, and potential configuration 1 with attribute capability + 3 (SDP security descriptions) for the video stream: + + v=0 + o=alice 2891092738 2891092738 IN IP4 lost.example.com + s= + t=0 0 + c=IN IP4 lost.example.com + a=key-mgmt:mikey AQAFgM0XflABAAAAAAAAAAAAAAsAyO... + a=tool:foo + m=audio 59000 RTP/SAVP 98 + a=rtpmap:98 AMR/8000 + m=video 52000 RTP/SAVP 31 + a=crypto:1 AES_CM_128_HMAC_SHA1_80 + inline:d0RmdmcmVCspeEc3QGZiNWpVLFJhQX1cfHAwJSoj|2^20|1:32 + a=rtpmap:31 H261/90000 + + + + + + +Andreasen Standards Track [Page 43] + +RFC 5939 SDP Capability Negotiation September 2010 + + +3.6.3. Offerer Processing of the Answer + + When the offerer attempted to use SDP Capability Negotiation in the + offer, the offerer MUST examine the answer for actual use of SDP + Capability Negotiation. + + For each media description where the offerer included a potential + configuration attribute ("a=pcfg"), the offerer MUST first examine + that media description for the presence of a valid actual + configuration attribute ("a=acfg"). An actual configuration + attribute is valid if: + + o it refers to a potential configuration that was present in the + corresponding offer, and + + o it contains the actual parameters that were used from that + potential configuration; if the potential configuration included + alternatives, the selected alternatives only MUST be included. + Note that the answer will include only parameters and attribute + capabilities that are known and supported by the answerer, as + described in Section 3.6.2. + + If a valid actual configuration attribute is not present in a media + description, then the offerer MUST process the answer SDP session + description for that media stream per the normal offer/answer rules + defined in [RFC3264]. However, if a valid one is found, the offerer + MUST instead process the answer as follows: + + o The actual configuration attribute specifies which of the + potential configurations was used by the answerer to generate the + answer for this media stream. This includes all the supported + attribute capabilities and the transport capabilities referenced + by the potential configuration selected, where the attribute + capabilities have any associated delete-attributes included. + Extension capabilities supported by the answerer are included as + well. + + o The offerer MUST now process the answer in accordance with the + rules in [RFC3264], except that it must be done as if the offer + consisted of the selected potential configuration instead of the + original actual configuration, including any transport protocol + changes in the media ("m=") line(s), attributes added and deleted + by the potential configuration at the media and session level, and + any extensions used. If this derived answer is not a valid answer + to the potential configuration offer selected by the answerer, the + offerer MUST instead continue further processing as it would have + for a regular offer/answer exchange, where the answer received + does not adhere to the rules of [RFC3264]. + + + +Andreasen Standards Track [Page 44] + +RFC 5939 SDP Capability Negotiation September 2010 + + + If the offer/answer exchange was successful, and if the answerer + selected one of the potential configurations from the offer as the + actual configuration, and the selected potential configuration + differs from the actual configuration in the offer (the "m=", "a=", + etc., lines), then the offerer SHOULD initiate another offer/answer + exchange. This second offer/answer exchange will not modify the + session in any way; however, it will help intermediaries (e.g., + middleboxes), which look at the SDP session description but do not + support the capability negotiation extensions, understand the details + of the media stream(s) that were actually negotiated. This new offer + MUST contain the selected potential configuration as the actual + configuration, i.e., with the actual configuration used in the "m=" + line and any other relevant attributes, bandwidth parameters, etc. + + Note that, per normal offer/answer rules, the second offer/answer + exchange still needs to update the version number in the "o=" line + (<sess-version> in [RFC4566]). Attribute lines carrying keying + material SHOULD repeat the keys from the previous offer, unless + re-keying is necessary, e.g., due to a previously forked SIP INVITE + request. Please refer to Section 3.12 for additional considerations + related to intermediaries. + +3.6.4. Modifying the Session + + Capabilities and potential configurations may be included in + subsequent offers as defined in [RFC3264], Section 8. The procedure + for doing so is similar to that described above with the answer + including an indication of the actual selected configuration used by + the answerer. + + If the answer indicates use of a potential configuration from the + offer, then the guidelines provided in Section 3.6.3 for doing a + second offer/answer exchange using that potential configuration as + the actual configuration apply. + +3.7. Interactions with ICE + + Interactive Connectivity Establishment (ICE) [RFC5245] provides a + mechanism for verifying connectivity between two endpoints by sending + Session Traversal Utilities for NAT (STUN) messages directly between + the media endpoints. The basic ICE specification [RFC5245] is only + defined to support UDP-based connectivity; however, it allows for + extensions to support other transport protocols, such as TCP, which + is being specified in [ICETCP]. ICE defines a new "a=candidate" + attribute, which, among other things, indicates the possible + transport protocol(s) to use and then associates a priority with each + of them. The most preferred transport protocol that *successfully* + verifies connectivity will end up being used. + + + +Andreasen Standards Track [Page 45] + +RFC 5939 SDP Capability Negotiation September 2010 + + + When using ICE, it is thus possible that the transport protocol that + will be used differs from what is specified in the "m=" line. Since + both ICE and SDP Capability Negotiation may specify alternative + transport protocols, there is a potentially unintended interaction + when using these together. + + We provide the following guidelines for addressing that. + + There are two basic scenarios to consider: + + 1) A particular media stream can run over different transport + protocols (e.g., UDP, TCP, or TCP/TLS), and the intent is simply + to use the one that works (in the preference order specified). + + 2) A particular media stream can run over different transport + protocols (e.g., UDP, TCP, or TCP/TLS) and the intent is to have + the negotiation process decide which one to use (e.g., T.38 over + TCP or UDP). + + In scenario 1, there should be ICE "a=candidate" attributes for UDP, + TCP, etc., but otherwise nothing special in the potential + configuration attributes to indicate the desire to use different + transport protocols (e.g., UDP, or TCP). The ICE procedures + essentially cover the capability negotiation required (by having the + answerer select something it supports and then use of trial and error + connectivity checks). + + Scenario 2 does not require a need to support or use ICE. Instead, + we simply use transport protocol capabilities and potential + configuration attributes to indicate the desired outcome. + + The scenarios may be combined, e.g., by offering potential + configuration alternatives where some of them can support only one + transport protocol (e.g., UDP), whereas others can support multiple + transport protocols (e.g., UDP or TCP). In that case, there is a + need for tight control over the ICE candidates that will be used for + a particular configuration, yet the actual configuration may want to + use all of the ICE candidates. In that case, the ICE candidate + attributes can be defined as attribute capabilities and the relevant + ones should then be included in the proper potential configurations + (for example, candidate attributes for UDP only for potential + configurations that are restricted to UDP, whereas there could be + candidate attributes for UDP, TCP, and TCP/TLS for potential + configurations that can use all three). Furthermore, use of the + delete-attributes in a potential configuration can be used to ensure + that ICE will not end up using a transport protocol that is not + desired for a particular configuration. + + + + +Andreasen Standards Track [Page 46] + +RFC 5939 SDP Capability Negotiation September 2010 + + + SDP Capability Negotiation recommends use of a second offer/answer + exchange when the negotiated actual configuration was one of the + potential configurations from the offer (see Section 3.6.3). + Similarly, ICE requires use of a second offer/answer exchange if the + chosen candidate is not the same as the one in the m/c-line from the + offer. When ICE and capability negotiation are used at the same + time, the two secondary offer/answer exchanges SHOULD be combined to + a single one. + +3.8. Interactions with SIP Option Tags + + SIP [RFC3261] allows for SIP extensions to define a SIP option tag + that identifies the SIP extension. Support for one or more such + extensions can be indicated by use of the SIP Supported header, and + required support for one or more such extensions can be indicated by + use of the SIP Require header. The "a=csup" and "a=creq" attributes + defined by the SDP Capability Negotiation framework are similar, + except that support for these two attributes by themselves cannot be + guaranteed (since they are specified as extensions to the SDP + specification [RFC4566] itself). + + SIP extensions with associated option tags can introduce enhancements + to not only SIP, but also SDP. This is for example the case for SIP + preconditions defined in [RFC3312]. When using SDP Capability + Negotiation, some potential configurations may include certain SDP + extensions, whereas others may not. Since the purpose of the SDP + Capability Negotiation is to negotiate a session based on the + features supported by both sides, use of the SIP Require header for + such extensions may not produce the desired result. For example, if + one potential configuration requires SIP preconditions support, + another does not, and the answerer does not support preconditions, + then use of the SIP Require header for preconditions would result in + a session failure, in spite of the fact that a valid and supported + potential configuration was included in the offer. + + In general, this can be alleviated by use of mandatory and optional + attribute capabilities in a potential configuration. There are + however cases where permissible SDP values are tied to the use of the + SIP Require header. SIP preconditions [RFC3312] is one such example, + where preconditions with a "mandatory" strength-tag can only be used + when a SIP Require header with the SIP option tag "precondition" is + included. Future SIP extensions that may want to use the SDP + Capability Negotiation framework should avoid such coupling. + + + + + + + + +Andreasen Standards Track [Page 47] + +RFC 5939 SDP Capability Negotiation September 2010 + + +3.9. Processing Media before Answer + + The offer/answer model [RFC3264] requires an offerer to be able to + receive media in accordance with the offer prior to receiving the + answer. This property is retained with the SDP Capability + Negotiation extensions defined here, but only when the actual + configuration is selected by the answerer. If a potential + configuration is chosen, the offerer may decide not to process any + media received before the answer is received. This may lead to + clipping. Consequently, the SDP Capability Negotiation framework + recommends sending back an answer SDP session description as soon as + possible. + + The issue can be resolved by introducing a three-way handshake. In + the case of SIP, this can, for example, be done by defining a + precondition [RFC3312] for capability negotiation (or by using an + existing precondition that is known to generate a second offer/answer + exchange before proceeding with the session). However, preconditions + are often viewed as complicated to implement and they may add to + overall session establishment delay by requiring an extra + offer/answer exchange. + + An alternative three-way handshake can be performed by use of ICE + [RFC5245]. When ICE is being used, and the answerer receives a STUN + Binding Request for any one of the accepted media streams from the + offerer, the answerer knows the offer has received his answer. At + that point, the answerer knows that the offerer will be able to + process incoming media according to the negotiated configuration and + hence he can start sending media without the risk of the offerer + either discarding it or playing garbage. + + Please note that, the above considerations notwithstanding, this + document does not place any requirements on the offerer to process + and play media before answer; it merely provides recommendations for + how to ensure that media sent by the answerer and received by the + offerer prior to receiving the answer can in fact be rendered by the + offerer. + + In some use cases, a three-way handshake is not needed. An example + is when the offerer does not need information from the answer, such + as keying material in the SDP session description, in order to + process incoming media. The SDP Capability Negotiation framework + does not define any such solutions; however, extensions may do so. + For example, one technique proposed for best-effort SRTP in [BESRTP] + is to provide different RTP payload type mappings for different + transport protocols used, outside of the actual configuration, while + still allowing them to be used by the answerer (exchange of keying + + + + +Andreasen Standards Track [Page 48] + +RFC 5939 SDP Capability Negotiation September 2010 + + + material is still needed, e.g., inband). The basic SDP Capability + Negotiation framework defined here does not include the ability to do + so; however, extensions that enable that may be defined. + +3.10. Indicating Bandwidth Usage + + The amount of bandwidth used for a particular media stream depends on + the negotiated codecs, transport protocol and other parameters. For + example the use of Secure RTP [RFC3711] with integrity protection + requires more bandwidth than plain RTP [RFC3551]. SDP defines the + bandwidth ("b=") parameter to indicate the proposed bandwidth for the + session or media stream. + + In SDP, as defined by [RFC4566], each media description contains one + transport protocol and one or more codecs. When specifying the + proposed bandwidth, the worst case scenario must be taken into + account, i.e., use of the highest bandwidth codec provided, the + transport protocol indicated, and the worst case (bandwidth-wise) + parameters that can be negotiated (e.g., a 32-bit Hashed Message + Authentication Code (HMAC) or an 80-bit HMAC). + + The base SDP Capability Negotiation framework does not provide a way + to negotiate bandwidth parameters. The issue thus remains; however, + it is potentially worse than with SDP per [RFC4566], since it is + easier to negotiate additional codecs, and furthermore possible to + negotiate different transport protocols. The recommended approach + for addressing this is the same as for plain SDP; the worst case (now + including potential configurations) needs to be taken into account + when specifying the bandwidth parameters in the actual configuration. + This can make the bandwidth value less accurate than in SDP per + [RFC4566] (due to potential greater variability in the potential + configuration bandwidth use). Extensions can be defined to address + this shortcoming. + + Note, that when using RTP retransmission [RFC4588] with the RTCP- + based feedback profile [RFC4585] (RTP/AVPF), the retransmitted + packets are part of the media stream bandwidth when using + synchronization source (SSRC) multiplexing. If a feedback-based + protocol is offered as the actual configuration transport protocol, a + non-feedback-based protocol is offered as a potential configuration + transport protocol and ends up being used, the actual bandwidth usage + may be lower than the indicated bandwidth value in the offer (and + vice versa). + + + + + + + + +Andreasen Standards Track [Page 49] + +RFC 5939 SDP Capability Negotiation September 2010 + + +3.11. Dealing with Large Number of Potential Configurations + + When using the SDP Capability Negotiation, it is easy to generate + offers that contain a large number of potential configurations. For + example, in the offer: + + v=0 + o=- 25678 753849 IN IP4 192.0.2.1 + s= + c=IN IP4 192.0.2.1 + t=0 0 + m=audio 53456 RTP/AVP 0 18 + a=tcap:1 RTP/SAVPF RTP/SAVP RTP/AVPF + a=acap:1 crypto:1 AES_CM_128_HMAC_SHA1_80 + inline:WVNfX19zZW1jdGwgKCkgewkyMjA7fQp9CnVubGVz|2^20|1:4 + FEC_ORDER=FEC_SRTP + a=acap:2 key-mgmt:mikey AQAFgM0XflABAAAAAAAAAAAAAAsAyO... + a=acap:3 rtcp-fb:0 nack + a=pcfg:1 t=1 a=1,3|2,3 + a=pcfg:2 t=2 a=1|2 + a=pcfg:3 t=3 a=3 + + we have 5 potential configurations on top of the actual configuration + for a single media stream. Adding an extension capability with just + two alternatives for each would double that number (to 10), and doing + the equivalent with two media streams would again double that number + (to 20). While it is easy (and inexpensive) for the offerer to + generate such offers, processing them at the answering side may not + be. Consequently, it is RECOMMENDED that offerers do not create + offers with unnecessarily large number of potential configurations in + them. + + On the answering side, implementers MUST take care to avoid excessive + memory and CPU consumption. For example, a naive implementation that + first generates all the valid potential configuration SDP session + descriptions internally, could find itself being memory exhausted, + especially if it supports a large number of endpoints. Similarly, a + naive implementation that simply performs iterative trial-and-error + processing on each possible potential configuration SDP session + description (in the preference order specified) could find itself + being CPU constrained. An alternative strategy is to prune the + search space first by discarding the set of offered potential + configurations where the transport protocol indicated (if any) is not + supported, and/or one or more mandatory attribute capabilities (if + any) are either not supported or not valid. Potential configurations + with unsupported mandatory extension configurations in them can be + discarded as well. + + + + +Andreasen Standards Track [Page 50] + +RFC 5939 SDP Capability Negotiation September 2010 + + +3.12. SDP Capability Negotiation and Intermediaries + + An intermediary is here defined as an entity between a SIP user agent + A and a SIP user agent B, that needs to perform some kind of + processing on the SDP session descriptions exchanged between A and B, + in order for the session establishment to operate as intended. + Examples of such intermediaries include Session Border Controllers + (SBCs) that may perform media relaying, Proxy Call Session Control + Functions (P-CSCFs) that may authorize use of a certain amount of + network resources (bandwidth), etc. The presence and design of such + intermediaries may not follow the "Internet" model or the SIP + requirements for proxies (which are not supposed to look in message + bodies such as SDP session descriptions); however, they are a fact of + life in some deployment scenarios and hence deserve consideration. + + If the intermediary needs to understand the characteristics of the + media sessions being negotiated, e.g., the amount of bandwidth used + or the transport protocol negotiated, then use of the SDP Capability + Negotiation framework may impact them. For example, some + intermediaries are known to disallow answers where the transport + protocol differs from the one in the offer. Use of the SDP + Capability Negotiation framework in the presence of such + intermediaries could lead to session failures. Intermediaries that + need to authorize use of network resources based on the negotiated + media stream parameters are affected as well. If they inspect only + the offer, then they may authorize parameters assuming a different + transport protocol, codecs, etc., than what is actually being + negotiated. For these, and other, reasons it is RECOMMENDED that + implementers of intermediaries add support for the SDP Capability + Negotiation framework. + + The SDP Capability Negotiation framework itself attempts to help out + these intermediaries as well, by recommending a second offer/answer + exchange when use of a potential configuration has been negotiated + (see Section 3.6.3). However, there are several limitations with + this approach. First of all, although the second offer/answer + exchange is RECOMMENDED, it is not required and hence may not be + performed. Secondly, the intermediary may refuse the initial answer, + e.g., due to perceived transport protocol mismatch. Thirdly, the + strategy is not foolproof since the offer/answer procedures [RFC3264] + leave the original offer/answer exchange in effect when a subsequent + one fails. Consider the following example: + + 1. Offerer generates an SDP session description offer with the actual + configuration specifying a low-bandwidth configuration (e.g., + plain RTP) and a potential configuration specifying a high(er) + bandwidth configuration (e.g., Secure RTP with integrity). + + + + +Andreasen Standards Track [Page 51] + +RFC 5939 SDP Capability Negotiation September 2010 + + + 2. An intermediary (e.g., an SBC or P-CSCF), that does not support + SDP Capability Negotiation, authorizes the session based on the + actual configuration it sees in the SDP session description. + + 3. The answerer chooses the high(er) bandwidth potential + configuration and generates an answer SDP session description + based on that. + + 4. The intermediary passes through the answer SDP session + description. + + 5. The offerer sees the accepted answer, and generates an updated + offer that contains the selected potential configuration as the + actual configuration. In other words, the high(er) bandwidth + configuration (which has already been negotiated successfully) is + now the actual configuration in the offer SDP session description. + + 6. The intermediary sees the new offer; however, it does not + authorize the use of the high(er) bandwidth configuration, and + consequently generates a rejection message to the offerer. + + 7. The offerer receives the rejected offer. + + After step 7, per RFC 3264, the offer/answer exchange that completed + in step 5 remains in effect; however, the intermediary may not have + authorized the necessary network resources and hence the media stream + may experience quality issues. The solution to this problem is to + upgrade the intermediary to support the SDP Capability Negotiation + framework. + +3.13. Considerations for Specific Attribute Capabilities + +3.13.1. The "rtpmap" and "fmtp" Attributes + + The base SDP Capability Negotiation framework defines transport + capabilities and attribute capabilities. Media capabilities, which + can be used to describe media formats and their associated + parameters, are not defined in this document; however, the "rtpmap" + and "fmtp" attributes can nevertheless be used as attribute + capabilities. Using such attribute capabilities in a potential + configuration requires a bit of care though. + + The rtpmap parameter binds an RTP payload type to a media format + (e.g., codec). While it is possible to provide rtpmaps for payload + types not found in the corresponding "m=" line, such rtpmaps provide + no value in normal offer/answer exchanges, since only the payload + types found in the "m=" line are part of the offer (or answer). This + applies to the base SDP Capability Negotiation framework as well. + + + +Andreasen Standards Track [Page 52] + +RFC 5939 SDP Capability Negotiation September 2010 + + + Only the media formats (e.g., RTP payload types) provided in the "m=" + line are actually offered; inclusion of "rtpmap" attributes with + other RTP payload types in a potential configuration does not change + this fact and hence they do not provide any useful information there. + They may still be useful as pure capabilities though (outside a + potential configuration) in order to inform a peer of additional + codecs supported. + + It is possible to provide an "rtpmap" attribute capability with a + payload type mapping to a different codec than a corresponding actual + configuration "rtpmap" attribute for the media description has. Such + practice is permissible as a way of indicating a capability. If that + capability is included in a potential configuration, then delete- + attributes (see Section 3.5.1) MUST be used to ensure that there is + not multiple "rtpmap" attributes for the same payload type in a given + media description (which would not be allowed by SDP [RFC4566]). + + Similar considerations and rules apply to the "fmtp" attribute. An + "fmtp" attribute capability for a media format not included in the + "m=" line is useless in a potential configuration (but may be useful + as a capability by itself). An "fmtp" attribute capability in a + potential configuration for a media format that already has an "fmtp" + attribute in the actual configuration may lead to multiple fmtp + format parameters for that media format and that is not allowed by + SDP [RFC4566]. The delete-attributes MUST be used to ensure that + there are not multiple "fmtp" attributes for a given media format in + a media description. + + Extensions to the base SDP Capability Negotiation framework may + change the above behavior. + +3.13.2. Direction Attributes + + SDP defines the "inactive", "sendonly", "recvonly", and "sendrecv" + direction attributes. The direction attributes can be applied at + either the session level or the media level. In either case, it is + possible to define attribute capabilities for these direction + capabilities; if used by a potential configuration, the normal + offer/answer procedures still apply. For example, if an offered + potential configuration includes the "sendonly" direction attribute, + and it is selected as the actual configuration, then the answer MUST + include a corresponding "recvonly" (or "inactive") attribute. + + + + + + + + + +Andreasen Standards Track [Page 53] + +RFC 5939 SDP Capability Negotiation September 2010 + + +3.14. Relationship to RFC 3407 + + RFC 3407 defines capability descriptions with limited abilities to + describe attributes, bandwidth parameters, transport protocols and + media formats. RFC 3407 does not define any negotiation procedures + for actually using those capability descriptions. + + This document defines new attributes for describing attribute + capabilities and transport capabilities. It also defines procedures + for using those capabilities as part of an offer/answer exchange. In + contrast to RFC 3407, this document does not define bandwidth + parameters, and it also does not define how to express ranges of + values. Extensions to this document may be defined in order to fully + cover all the capabilities provided by RFC 3407 (for example, more + general media capabilities). + + It is RECOMMENDED that implementations use the attributes and + procedures defined in this document instead of those defined in + [RFC3407]. If capability description interoperability with legacy + RFC 3407 implementations is desired, implementations MAY include both + RFC 3407 capability descriptions and capabilities defined by this + document. The offer/answer negotiation procedures defined in this + document will not use the RFC 3407 capability descriptions. + +4. Examples + + In this section, we provide examples showing how to use the SDP + Capability Negotiation. + +4.1. Multiple Transport Protocols + + The following example illustrates how to use the SDP Capability + Negotiation extensions to negotiate use of one out of several + possible transport protocols. The offerer uses the expected least- + common-denominator (plain RTP) as the actual configuration, and the + alternative transport protocols as the potential configurations. + + + + + + + + + + + + + + + +Andreasen Standards Track [Page 54] + +RFC 5939 SDP Capability Negotiation September 2010 + + + The example is illustrated by the offer/answer exchange below, where + Alice sends an offer to Bob: + + Alice Bob + + | (1) Offer (RTP/[S]AVP[F]) | + |--------------------------------->| + | | + | (2) Answer (RTP/AVPF) | + |<---------------------------------| + | | + | (3) Offer (RTP/AVPF) | + |--------------------------------->| + | | + | (4) Answer (RTP/AVPF) | + |<---------------------------------| + | | + + Alice's offer includes plain RTP (RTP/AVP), RTP with RTCP-based + feedback (RTP/AVPF), Secure RTP (RTP/SAVP), and Secure RTP with RTCP- + based feedback (RTP/SAVPF) as alternatives. RTP is the default, with + RTP/SAVPF, RTP/SAVP, and RTP/AVPF as the alternatives and preferred + in the order listed: + + v=0 + o=- 25678 753849 IN IP4 192.0.2.1 + s= + c=IN IP4 192.0.2.1 + t=0 0 + m=audio 53456 RTP/AVP 0 18 + a=tcap:1 RTP/SAVPF RTP/SAVP RTP/AVPF + a=acap:1 crypto:1 AES_CM_128_HMAC_SHA1_80 + inline:WVNfX19zZW1jdGwgKCkgewkyMjA7fQp9CnVubGVz|2^20|1:4 + FEC_ORDER=FEC_SRTP + a=acap:2 rtcp-fb:0 nack + a=pcfg:1 t=1 a=1,[2] + a=pcfg:2 t=2 a=1 + a=pcfg:3 t=3 a=[2] + + The "m=" line indicates that Alice is offering to use plain RTP with + PCMU or G.729. The capabilities are provided by the "a=tcap" and + "a=acap" attributes. The "tcap" capability indicates that Secure RTP + with RTCP-based feedback (RTP/SAVPF), Secure RTP (RTP/SAVP), and RTP + with RTCP-based feedback are supported. The first "acap" attribute + provides an attribute capability with a handle of 1. The capability + is a "crypto" attribute, which provides the keying material for SRTP + using SDP security descriptions [RFC4568]. The second "acap" + attribute provides an attribute capability with a handle of 2. The + + + +Andreasen Standards Track [Page 55] + +RFC 5939 SDP Capability Negotiation September 2010 + + + capability is an "rtcp-fb" attribute, which is used by the RTCP-based + feedback profiles to indicate that payload type 0 (PCMU) supports + feedback type "nack". The "a=pcfg" attributes provide the potential + configurations included in the offer by reference to the + capabilities. There are three potential configurations: + + o Potential configuration 1, which is the most preferred potential + configuration specifies use of transport protocol capability 1 + (RTP/SAVPF) and attribute capabilities 1 (the "crypto" attribute) + and 2 (the "rtcp-fb" attribute). Support for the first one is + mandatory whereas support for the second one is optional. + + o Potential configuration 2, which is the second most preferred + potential configuration specifies use of transport protocol + capability 2 (RTP/SAVP) and mandatory attribute capability 1 (the + "crypto" attribute). + + o Potential configuration 3, which is the least preferred potential + configuration (but the second least preferred configuration + overall, since the actual configuration provided by the "m=" line + is always the least preferred configuration), specifies use of + transport protocol capability 3 (RTP/AVPF) and optional attribute + capability 2 (the "rtcp-fb" attribute). + + Bob receives the SDP session description offer from Alice. Bob does + not support any Secure RTP profiles; however, he supports plain RTP + and RTP with RTCP-based feedback, as well as the SDP Capability + Negotiation extensions, and hence he accepts the potential + configuration for RTP with RTCP-based feedback provided by Alice: + + v=0 + o=- 24351 621814 IN IP4 192.0.2.2 + s= + c=IN IP4 192.0.2.2 + t=0 0 + m=audio 54568 RTP/AVPF 0 18 + a=rtcp-fb:0 nack + a=acfg:1 t=3 a=[2] + + Bob includes the "a=acfg" attribute in the answer to inform Alice + that he based his answer on an offer containing the potential + configuration with transport protocol capability 3 and optional + attribute capability 2 from the offer SDP session description (i.e., + the RTP/AVPF profile using the "rtcp-fb" value provided). Bob also + includes an "rtcp-fb" attribute with the value "nack" value for RTP + payload type 0. + + + + + +Andreasen Standards Track [Page 56] + +RFC 5939 SDP Capability Negotiation September 2010 + + + When Alice receives Bob's answer, session negotiation has completed, + however Alice nevertheless chooses to generate a new offer using the + actual configuration. This is done purely to assist any + intermediaries that may reside between Alice and Bob but do not + support the SDP Capability Negotiation framework (and hence may not + understand the negotiation that just took place): + + Alice's updated offer includes only RTP/AVPF, and it is not using the + SDP Capability Negotiation framework (Alice could have included the + capabilities as well if she wanted): + + v=0 + o=- 25678 753850 IN IP4 192.0.2.1 + s= + c=IN IP4 192.0.2.1 + t=0 0 + m=audio 53456 RTP/AVPF 0 18 + a=rtcp-fb:0 nack + + The "m=" line now indicates that Alice is offering to use RTP with + RTCP-based feedback and using PCMU or G.729. The "rtcp-fb" attribute + provides the feedback type "nack" for payload type 0 again (but as + part of the actual configuration). + + Bob receives the SDP session description offer from Alice, which he + accepts, and then generates an answer to Alice: + + v=0 + o=- 24351 621815 IN IP4 192.0.2.2 + s= + c=IN IP4 192.0.2.2 + t=0 0 + m=audio 54568 RTP/AVPF 0 18 + a=rtcp-fb:0 nack + + Bob includes the same "rtcp-fb" attribute as before, and the session + proceeds without change. Although Bob did not include any + capabilities in his answer, he could have done so if he wanted. + + Note that in this particular example, the answerer supported the SDP + Capability Negotiation framework and hence the attributes and + procedures defined here; however, had he not, the answerer would + simply have ignored the new attributes received in step 1 and + accepted the offer to use normal RTP. In that case, the following + answer would have been generated in step 2 instead: + + + + + + +Andreasen Standards Track [Page 57] + +RFC 5939 SDP Capability Negotiation September 2010 + + + v=0 + o=- 24351 621814 IN IP4 192.0.2.2 + s= + c=IN IP4 192.0.2.2 + t=0 0 + m=audio 54568 RTP/AVP 0 18 + +4.2. DTLS-SRTP or SRTP with Media-Level Security Descriptions + + The following example illustrates how to use the SDP Capability + Negotiation framework to negotiate use of SRTP using either SDP + security descriptions or DTLS-SRTP. The offerer (Alice) wants to + establish a Secure RTP audio stream but is willing to use plain RTP. + Alice prefers to use DTLS-SRTP as the key management protocol, but + supports SDP security descriptions as well (note that [RFC5763] + contains additional DTLS-SRTP examples). + + The example is illustrated by the offer/answer exchange below, where + Alice sends an offer to Bob: + + Alice Bob + + | (1) Offer (RTP/[S]AVP,SDES | DTLS-SRTP)| + |--------------------------------------->| + | | + |<--------- DTLS-SRTP handshake -------->| + | | + | (2) Answer (DTLS-SRTP) | + |<---------------------------------------| + | | + | (3) Offer (DTLS-SRTP) | + |--------------------------------------->| + | | + | (4) Answer (DTLS-SRTP) | + |<---------------------------------------| + | | + + Alice's offer includes an audio stream that offers use of plain RTP + and Secure RTP as alternatives. For the Secure RTP stream, it can be + established using either DTLS-SRTP or SDP security descriptions: + + + + + + + + + + + +Andreasen Standards Track [Page 58] + +RFC 5939 SDP Capability Negotiation September 2010 + + + v=0 + o=- 25678 753849 IN IP4 192.0.2.1 + s= + t=0 0 + c=IN IP4 192.0.2.1 + a=acap:1 setup:actpass + a=acap:2 fingerprint: SHA-1 \ + 4A:AD:B9:B1:3F:82:18:3B:54:02:12:DF:3E:5D:49:6B:19:E5:7C:AB + a=tcap:1 UDP/TLS/RTP/SAVP RTP/SAVP + m=audio 59000 RTP/AVP 98 + a=rtpmap:98 AMR/8000 + a=acap:3 crypto:1 AES_CM_128_HMAC_SHA1_32 + inline:NzB4d1BINUAvLEw6UzF3WSJ+PSdFcGdUJShpX1Zj|2^20|1:32 + a=pcfg:1 t=1 a=1,2 + a=pcfg:2 t=2 a=3 + + The first (and preferred) potential configuration for the audio + stream specifies use of transport capability 1 (UDP/TLS/RTP/SAVP), + i.e., DTLS-SRTP, and attribute capabilities 1 and 2 (active/passive + mode and certificate fingerprint), both of which must be supported to + choose this potential configuration. The second (and less preferred) + potential configuration specifies use of transport capability 2 + (RTP/SAVP) and mandatory attribute capability 3, i.e., the SDP + security description. + + Bob receives the SDP session description offer from Alice. Bob + supports DTLS-SRTP as preferred by Alice and Bob now initiates the + DTLS-SRTP handshake to establish the DTLS-SRTP session (see [RFC5764] + for details). + + Bob also sends back an answer to Alice as follows: + + v=0 + o=- 24351 621814 IN IP4 192.0.2.2 + s= + a=setup:active + a=fingerprint: SHA-1 \ + FF:FF:FF:B1:3F:82:18:3B:54:02:12:DF:3E:5D:49:6B:19:E5:7C:AB + t=0 0 + c=IN IP4 192.0.2.2 + m=audio 54568 UDP/TLS/RTP/SAVP 98 + a=rtpmap:98 AMR/8000 + a=acfg:1 t=1 a=1,2 + + For the audio stream, Bob accepted the use of DTLS-SRTP, and hence + the profile in the "m=" line is "UDP/TLS/RTP/SAVP". Bob also + includes a "setup:active" attribute to indicate he is the active + + + + +Andreasen Standards Track [Page 59] + +RFC 5939 SDP Capability Negotiation September 2010 + + + endpoint for the DTLS-SRTP session as well as the fingerprint for + Bob's certificate. Bob's "acfg" attribute indicates that he chose + potential configuration 1 from Alice's offer. + + When Alice receives Bob's answer, session negotiation has completed + (and Alice can verify the DTLS handshake using Bob's certificate + fingerprint in the answer); however, Alice nevertheless chooses to + generate a new offer using the actual configuration. This is done + purely to assist any intermediaries that may reside between Alice and + Bob but do not support the capability negotiation extensions (and + hence may not understand the negotiation that just took place). + + Alice's updated offer includes only DTLS-SRTP for the audio stream, + and it is not using the SDP Capability Negotiation framework (Alice + could have included the capabilities as well if she wanted): + + v=0 + o=- 25678 753850 IN IP4 192.0.2.1 + s= + t=0 0 + c=IN IP4 192.0.2.1 + a=setup:actpass + a=fingerprint: SHA-1 \ + 4A:AD:B9:B1:3F:82:18:3B:54:02:12:DF:3E:5D:49:6B:19:E5:7C:AB + m=audio 59000 UDP/TLS/RTP/AVP 98 + a=rtpmap:98 AMR/8000 + + The "m=" line for the audio stream now indicates that Alice is + offering to use DTLS-SRTP in active/passive mode using her + certificate fingerprint provided. + + Bob receives the SDP session description offer from Alice, which he + accepts, and then generates an answer to Alice: + + v=0 + o=- 24351 621814 IN IP4 192.0.2.2 + s= + a=setup:active + a=fingerprint: SHA-1 \ + FF:FF:FF:B1:3F:82:18:3B:54:02:12:DF:3E:5D:49:6B:19:E5:7C:AB + t=0 0 + c=IN IP4 192.0.2.2 + m=audio 54568 UDP/TLS/RTP/SAVP 98 + a=rtpmap:98 AMR/8000 + a=acfg:1 t=1 a=1,2 + + + + + + +Andreasen Standards Track [Page 60] + +RFC 5939 SDP Capability Negotiation September 2010 + + + Bob includes the same "setup:active" and fingerprint attributes as + before, and the session proceeds without change. Although Bob did + not include any capabilities in his answer, he could have done so if + he wanted. + + Note that in this particular example, the answerer supported the + capability extensions defined here; however, had he not, the answerer + would simply have ignored the new attributes received in step 1 and + accepted the offer to use normal RTP. In that case, the following + answer would have been generated in step 2 instead: + + v=0 + o=- 24351 621814 IN IP4 192.0.2.2 + s= + t=0 0 + c=IN IP4 192.0.2.2 + m=audio 54568 RTP/AVP 98 + a=rtpmap:98 AMR/8000 + + Finally, if Bob had chosen to use SDP security descriptions instead + of DTLS-SRTP, the following answer would have been generated: + + v=0 + o=- 24351 621814 IN IP4 192.0.2.2 + s= + t=0 0 + c=IN IP4 192.0.2.2 + m=audio 54568 RTP/SAVP 98 + a=rtpmap:98 AMR/8000 + a=crypto:1 AES_CM_128_HMAC_SHA1_32 + inline:WSJ+PSdFcGdUJShpX1ZjNzB4d1BINUAvLEw6UzF3|2^20|1:32 + a=acfg:2 t=2 a=3 + +4.3. Best-Effort SRTP with Session-Level MIKEY and Media-Level Security + Descriptions + + The following example illustrates how to use the SDP Capability + Negotiation extensions to support so-called Best-Effort Secure RTP as + well as alternative keying mechanisms, more specifically MIKEY + [RFC3830] and SDP security descriptions. The offerer (Alice) wants + to establish an audio and video session. Alice prefers to use + session-level MIKEY as the key management protocol, but supports SDP + security descriptions as well. + + The example is illustrated by the offer/answer exchange below, where + Alice sends an offer to Bob: + + + + + +Andreasen Standards Track [Page 61] + +RFC 5939 SDP Capability Negotiation September 2010 + + + Alice Bob + + | (1) Offer (RTP/[S]AVP[F], SDES|MIKEY) | + |--------------------------------------->| + | | + | (2) Answer (RTP/SAVP, SDES) | + |<---------------------------------------| + | | + | (3) Offer (RTP/SAVP, SDES) | + |--------------------------------------->| + | | + | (4) Answer (RTP/SAVP, SDES) | + |<---------------------------------------| + | | + + Alice's offer includes an audio and a video stream. The audio stream + offers use of plain RTP and Secure RTP as alternatives, whereas the + video stream offers use of plain RTP, RTP with RTCP-based feedback, + Secure RTP, and Secure RTP with RTCP-based feedback as alternatives: + + v=0 + o=- 25678 753849 IN IP4 192.0.2.1 + s= + t=0 0 + c=IN IP4 192.0.2.1 + a=acap:1 key-mgmt:mikey AQAFgM0XflABAAAAAAAAAAAAAAsAyO... + a=tcap:1 RTP/SAVPF RTP/SAVP RTP/AVPF + m=audio 59000 RTP/AVP 98 + a=rtpmap:98 AMR/8000 + a=acap:2 crypto:1 AES_CM_128_HMAC_SHA1_32 + inline:NzB4d1BINUAvLEw6UzF3WSJ+PSdFcGdUJShpX1Zj|2^20|1:32 + a=pcfg:1 t=2 a=1|2 + m=video 52000 RTP/AVP 31 + a=rtpmap:31 H261/90000 + a=acap:3 crypto:1 AES_CM_128_HMAC_SHA1_80 + inline:d0RmdmcmVCspeEc3QGZiNWpVLFJhQX1cfHAwJSoj|2^20|1:32 + a=acap:4 rtcp-fb:* nack + a=pcfg:1 t=1 a=1,4|3,4 + a=pcfg:2 t=2 a=1|3 + a=pcfg:3 t=3 a=4 + + The potential configuration for the audio stream specifies use of + transport capability 2 (RTP/SAVP) and either attribute capability 1 + (session-level MIKEY as the keying mechanism) or 2 (SDP security + descriptions as the keying mechanism). Support for either of these + attribute capabilities is mandatory. There are three potential + configurations for the video stream. + + + + +Andreasen Standards Track [Page 62] + +RFC 5939 SDP Capability Negotiation September 2010 + + + o The first configuration with configuration number 1 uses transport + capability 1 (RTP/SAVPF) with either attribute capabilities 1 and + 4 (session-level MIKEY and the "rtcp-fb" attribute) or attribute + capabilities 3 and 4 (SDP security descriptions and the "rtcp-fb" + attribute). In this example, the offerer insists on not only the + keying mechanism being supported, but also that the "rtcp-fb" + attribute is supported with the value indicated. Consequently, + all the attribute capabilities are marked as mandatory in this + potential configuration. + + o The second configuration with configuration number 2 uses + transport capability 2 (RTP/SAVP) and either attribute capability + 1 (session-level MIKEY) or attribute capability 3 (SDP security + descriptions). Both attribute capabilities are mandatory in this + configuration. + + o The third configuration with configuration number 3 uses transport + capability 3 (RTP/AVPF) and mandatory attribute capability 4 (the + "rtcp-fb" attribute). + + Bob receives the SDP session description offer from Alice. Bob + supports Secure RTP, Secure RTP with RTCP-based feedback and the SDP + Capability Negotiation extensions. Bob also supports SDP security + descriptions, but not MIKEY, and hence he generates the following + answer: + + v=0 + o=- 24351 621814 IN IP4 192.0.2.2 + s= + t=0 0 + c=IN IP4 192.0.2.2 + m=audio 54568 RTP/SAVP 98 + a=rtpmap:98 AMR/8000 + a=crypto:1 AES_CM_128_HMAC_SHA1_32 + inline:WSJ+PSdFcGdUJShpX1ZjNzB4d1BINUAvLEw6UzF3|2^20|1:32 + a=acfg:1 t=2 a=2 + m=video 55468 RTP/SAVPF 31 + a=rtpmap:31 H261/90000 + a=crypto:1 AES_CM_128_HMAC_SHA1_80 + inline:AwWpVLFJhQX1cfHJSojd0RmdmcmVCspeEc3QGZiN|2^20|1:32 + a=rtcp-fb:* nack + a=acfg:1 t=1 a=3,4 + + For the audio stream, Bob accepted the use of Secure RTP, and hence + the profile in the "m=" line is "RTP/SAVP". Bob also includes a + "crypto" attribute with his own keying material, and an "acfg" + attribute identifying actual configuration 1 for the audio media + stream from the offer, using transport capability 2 (RTP/SAVP) and + + + +Andreasen Standards Track [Page 63] + +RFC 5939 SDP Capability Negotiation September 2010 + + + attribute capability 2 (the "crypto" attribute from the offer). For + the video stream, Bob accepted the use of Secure RTP with RTCP-based + feedback, and hence the profile in the "m=" line is "RTP/SAVPF". Bob + also includes a "crypto" attribute with his own keying material, and + an "acfg" attribute identifying actual configuration 1 for the video + stream from the offer, using transport capability 1 (RTP/SAVPF) and + attribute capabilities 3 (the "crypto" attribute from the offer) and + 4 (the "rtcp-fb" attribute from the offer). + + When Alice receives Bob's answer, session negotiation has completed; + however, Alice nevertheless chooses to generate a new offer using the + actual configuration. This is done purely to assist any + intermediaries that may reside between Alice and Bob but do not + support the capability negotiation extensions (and hence may not + understand the negotiation that just took place). + + Alice's updated offer includes only SRTP for the audio stream SRTP + with RTCP-based feedback for the video stream, and it is not using + the SDP Capability Negotiation framework (Alice could have included + the capabilities as well is she wanted): + + v=0 + o=- 25678 753850 IN IP4 192.0.2.1 + s= + t=0 0 + c=IN IP4 192.0.2.1 + m=audio 59000 RTP/SAVP 98 + a=rtpmap:98 AMR/8000 + a=crypto:1 AES_CM_128_HMAC_SHA1_32 + inline:NzB4d1BINUAvLEw6UzF3WSJ+PSdFcGdUJShpX1Zj|2^20|1:32 + m=video 52000 RTP/SAVPF 31 + a=rtpmap:31 H261/90000 + a=crypto:1 AES_CM_128_HMAC_SHA1_80 + inline:d0RmdmcmVCspeEc3QGZiNWpVLFJhQX1cfHAwJSoj|2^20|1:32 + a=rtcp-fb:* nack + + The "m=" line for the audio stream now indicates that Alice is + offering to use Secure RTP with PCMU or G.729, whereas the "m=" line + for the video stream indicates that Alice is offering to use Secure + RTP with RTCP-based feedback and H.261. Each media stream includes a + "crypto" attribute, which provides the SRTP keying material, with the + same value again. + + + + + + + + + +Andreasen Standards Track [Page 64] + +RFC 5939 SDP Capability Negotiation September 2010 + + + Bob receives the SDP session description offer from Alice, which he + accepts, and then generates an answer to Alice: + + v=0 + o=- 24351 621815 IN IP4 192.0.2.2 + s= + t=0 0 + c=IN IP4 192.0.2.2 + m=audio 54568 RTP/SAVP 98 + a=rtpmap:98 AMR/8000 + a=crypto:1 AES_CM_128_HMAC_SHA1_32 + inline:WSJ+PSdFcGdUJShpX1ZjNzB4d1BINUAvLEw6UzF3|2^20|1:32 + m=video 55468 RTP/SAVPF 31 + a=rtpmap:31 H261/90000 + a=crypto:1 AES_CM_128_HMAC_SHA1_80 + inline:AwWpVLFJhQX1cfHJSojd0RmdmcmVCspeEc3QGZiN|2^20|1:32 + a=rtcp-fb:* nack + + Bob includes the same "crypto" attribute as before, and the session + proceeds without change. Although Bob did not include any + capabilities in his answer, he could have done so if he wanted. + + Note that in this particular example, the answerer supported the + capability extensions defined here; however, had he not, the answerer + would simply have ignored the new attributes received in step 1 and + accepted the offer to use normal RTP. In that case, the following + answer would have been generated in step 2 instead: + + v=0 + o=- 24351 621814 IN IP4 192.0.2.2 + s= + t=0 0 + c=IN IP4 192.0.2.2 + m=audio 54568 RTP/AVP 98 + a=rtpmap:98 AMR/8000 + m=video 55468 RTP/AVP 31 + a=rtpmap:31 H261/90000 + a=rtcp-fb:* nack + + Finally, if Bob had chosen to use session-level MIKEY instead of SDP + security descriptions, the following answer would have been + generated: + + + + + + + + + +Andreasen Standards Track [Page 65] + +RFC 5939 SDP Capability Negotiation September 2010 + + + v=0 + o=- 24351 621814 IN IP4 192.0.2.2 + s= + t=0 0 + c=IN IP4 192.0.2.2 + a=key-mgmt:mikey AQEFgM0XflABAAAAAAAAAAAAAAYAyO... + m=audio 54568 RTP/SAVP 98 + a=rtpmap:98 AMR/8000 + a=acfg:1 t=2 a=1 + m=video 55468 RTP/SAVPF 31 + a=rtpmap:31 H261/90000 + a=rtcp-fb:* nack + a=acfg:1 t=1 a=1,4 + + It should be noted, that although Bob could have chosen session-level + MIKEY for one media stream, and SDP security descriptions for another + media stream, there are no well-defined offerer processing rules of + the resulting answer for this, and hence the offerer may incorrectly + assume use of MIKEY for both streams. To avoid this, if the answerer + chooses session-level MIKEY, then all Secure RTP-based media streams + SHOULD use MIKEY (this applies irrespective of whether or not SDP + Capability Negotiation is being used). Use of media-level MIKEY does + not have a similar constraint. + +4.4. SRTP with Session-Level MIKEY and Media-Level Security + Descriptions as Alternatives + + The following example illustrates how to use the SDP Capability + Negotiation framework to negotiate use of either MIKEY or SDP + security descriptions, when one of them is included as part of the + actual configuration, and the other one is being selected. The + offerer (Alice) wants to establish an audio and video session. Alice + prefers to use session-level MIKEY as the key management protocol, + but supports SDP security descriptions as well. + + The example is illustrated by the offer/answer exchange below, where + Alice sends an offer to Bob: + + Alice Bob + + | (1) Offer (RTP/[S]AVP[F], SDES|MIKEY) | + |--------------------------------------->| + | | + | (2) Answer (RTP/SAVP, SDES) | + |<---------------------------------------| + | | + + + + + +Andreasen Standards Track [Page 66] + +RFC 5939 SDP Capability Negotiation September 2010 + + + Alice's offer includes an audio and a video stream. Both the audio + and the video stream offer use of Secure RTP: + + v=0 + o=- 25678 753849 IN IP4 192.0.2.1 + s= + t=0 0 + c=IN IP4 192.0.2.1 + a=key-mgmt:mikey AQAFgM0XflABAAAAAAAAAAAAAAsAyO... + m=audio 59000 RTP/SAVP 98 + a=rtpmap:98 AMR/8000 + a=acap:1 crypto:1 AES_CM_128_HMAC_SHA1_32 + inline:NzB4d1BINUAvLEw6UzF3WSJ+PSdFcGdUJShpX1Zj|2^20|1:32 + a=pcfg:1 a=-s:1 + m=video 52000 RTP/SAVP 31 + a=rtpmap:31 H261/90000 + a=acap:2 crypto:1 AES_CM_128_HMAC_SHA1_80 + inline:d0RmdmcmVCspeEc3QGZiNWpVLFJhQX1cfHAwJSoj|2^20|1:32 + a=pcfg:1 a=-s:2 + + Alice does not know whether Bob supports MIKEY or SDP security + descriptions. She could include attributes for both; however, the + resulting procedures and potential interactions are not well- + defined. Instead, she places a session-level "key-mgmt" attribute + for MIKEY in the actual configuration with SDP security descriptions + as an alternative in the potential configuration. The potential + configuration for the audio stream specifies that all session-level + attributes are to be deleted (i.e., the session-level "a=key-mgmt" + attribute) and that mandatory attribute capability 2 is to be used + (i.e., the "crypto" attribute). The potential configuration for the + video stream is similar, except it uses its own mandatory "crypto" + attribute capability (2). Note how the deletion of the session-level + attributes does not affect the media-level attributes. + + Bob receives the SDP session description offer from Alice. Bob + supports Secure RTP and the SDP Capability Negotiation framework. + Bob also supports both SDP security descriptions and MIKEY. Since + the potential configuration is more preferred than the actual + configuration, Bob (conceptually) generates an internal potential + configuration SDP session description that contains the "crypto" + attributes for the audio and video stream, but not the "key-mgmt" + attribute for MIKEY, thereby avoiding any ambiguity between the two + keying mechanisms. As a result, he generates the following answer: + + + + + + + + +Andreasen Standards Track [Page 67] + +RFC 5939 SDP Capability Negotiation September 2010 + + + v=0 + o=- 24351 621814 IN IP4 192.0.2.2 + s= + t=0 0 + c=IN IP4 192.0.2.2 + m=audio 54568 RTP/SAVP 98 + a=rtpmap:98 AMR/8000 + a=crypto:1 AES_CM_128_HMAC_SHA1_32 + inline:WSJ+PSdFcGdUJShpX1ZjNzB4d1BINUAvLEw6UzF3|2^20|1:32 + a=acfg:1 a=-s:1 + m=video 55468 RTP/SAVP 31 + a=rtpmap:31 H261/90000 + a=crypto:1 AES_CM_128_HMAC_SHA1_80 + inline:AwWpVLFJhQX1cfHJSojd0RmdmcmVCspeEc3QGZiN|2^20|1:32 + a=acfg:1 a=-s:2 + + For the audio stream, Bob accepted the use of Secure RTP using SDP + security descriptions. Bob therefore includes a "crypto" attribute + with his own keying material, and an "acfg" attribute identifying the + actual configuration 1 for the audio media stream from the offer, + with the delete-attributes ("-s") and attribute capability 1 (the + "crypto" attribute from the offer). For the video stream, Bob also + accepted the use of Secure RTP using SDP security descriptions. Bob + therefore includes a "crypto" attribute with his own keying material, + and an "acfg" attribute identifying actual configuration 1 for the + video stream from the offer, with the delete-attributes ("-s") and + attribute capability 2. + + Below, we illustrate the offer SDP session description, when Bob + instead offers the "crypto" attribute as the actual configuration + keying mechanism and "key-mgmt" as the potential configuration: + + + + + + + + + + + + + + + + + + + + +Andreasen Standards Track [Page 68] + +RFC 5939 SDP Capability Negotiation September 2010 + + + v=0 + o=- 25678 753849 IN IP4 192.0.2.1 + s= + t=0 0 + c=IN IP4 192.0.2.1 + a=acap:1 key-mgmt:mikey AQAFgM0XflABAAAAAAAAAAAAAAsAyO... + m=audio 59000 RTP/SAVP 98 + a=rtpmap:98 AMR/8000 + a=crypto:1 AES_CM_128_HMAC_SHA1_32 + inline:NzB4d1BINUAvLEw6UzF3WSJ+PSdFcGdUJShpX1Zj|2^20|1:32 + a=acap:2 rtpmap:98 AMR/8000 + a=pcfg:1 a=-m:1,2 + m=video 52000 RTP/SAVP 31 + a=rtpmap:31 H261/90000 + a=acap:3 crypto:1 AES_CM_128_HMAC_SHA1_80 + inline:d0RmdmcmVCspeEc3QGZiNWpVLFJhQX1cfHAwJSoj|2^20|1:32 + a=acap:4 rtpmap:31 H261/90000 + a=pcfg:1 a=-m:1,4 + + Note how we this time need to perform delete-attributes at the media + level instead of the session level. When doing that, all attributes + from the actual configuration SDP session description, including the + rtpmaps provided, are removed. Consequently, we had to include these + rtpmaps as capabilities as well, and then include them in the + potential configuration, thereby effectively recreating the original + "rtpmap" attributes in the resulting potential configuration SDP + session description. + +5. Security Considerations + + The SDP Capability Negotiation framework is defined to be used within + the context of the offer/answer model, and hence all the offer/answer + security considerations apply here as well [RFC3264]. Similarly, the + Session Initiation Protocol (SIP) uses SDP and the offer/answer + model, and hence, when used in that context, the SIP security + considerations apply as well [RFC3261]. + + However, SDP Capability Negotiation introduces additional security + issues. Its use as a mechanism to enable alternative transport + protocol negotiation (secure and non-secure) as well as its ability + to negotiate use of more or less secure keying methods and material + warrant further security considerations. Also, the (continued) + support for receiving media before answer combined with negotiation + of alternative transport protocols (secure and non-secure) warrants + further security considerations. We discuss these issues below. + + + + + + +Andreasen Standards Track [Page 69] + +RFC 5939 SDP Capability Negotiation September 2010 + + + The SDP Capability Negotiation framework allows for an offered media + stream to both indicate and support various levels of security for + that media stream. Different levels of security can for example be + negotiated by use of alternative attribute capabilities each + indicating more or less secure keying methods as well as more or less + strong ciphers. Since the offerer indicates support for each of + these alternatives, he will presumably accept the answerer seemingly + selecting any of the offered alternatives. If an attacker can modify + the SDP session description offer, he can thereby force the + negotiation of the weakest security mechanism that the offerer is + willing to accept. This may enable the attacker to compromise the + security of the negotiated media stream. Similarly, if the offerer + wishes to negotiate use of a secure media stream (e.g., Secure RTP), + but includes a non-secure media stream (e.g., plain RTP) as a valid + (but less preferred) alternative, then an attacker that can modify + the offered SDP session description will be able to force the + establishment of an insecure media stream. The solution to both of + these problems involves the use of integrity protection over the SDP + session description. Ideally, this integrity protection provides + end-to-end integrity protection in order to protect from any man-in- + the-middle attack; secure multiparts such as Secure/Multipurpose + Internet Mail Extensions (S/MIME) [RFC5751] provide one such + solution; however, S/MIME requires use and availability of a Public + Key Infrastructure (PKI). A slightly less secure alternative when + using SIP, but generally much easier to deploy in practice, is to use + SIP Identity [RFC4474]; this requires the existence of an + authentication service (see [RFC4474]). Although this mechanism + still requires a PKI, it only requires that servers (as opposed to + end-users) have third-party validatable certificates, which + significantly reduces the barrier to entry by ordinary users. Yet + another, and considerably less secure, alternative is to use hop-by- + hop security only, e.g., TLS or IPsec thereby ensuring the integrity + of the offered SDP session description on a hop-by-hop basis. This + is less secure because SIP allows partially trusted intermediaries on + the signaling path, and such intermediaries processing the SIP + request at each hop would be able to perform a man-in-the-middle + attack by modifying the offered SDP session description. In simple + architectures where the two UA's proxies communicate directly, the + security provided by this method is roughly comparable to that + provided by the previously discussed signature-based mechanisms. + + Per the normal offer/answer procedures, as soon as the offerer has + generated an offer, the offerer must be prepared to receive media in + accordance with that offer. The SDP Capability Negotiation preserves + that behavior for the actual configuration in the offer; however, the + offerer has no way of knowing which configuration (actual or + potential) was selected by the answerer, until an answer indication + is received. This opens up a new security issue where an attacker + + + +Andreasen Standards Track [Page 70] + +RFC 5939 SDP Capability Negotiation September 2010 + + + may be able to interject media towards the offerer until the answer + is received. For example, the offerer may use plain RTP as the + actual configuration and Secure RTP as an alternative potential + configuration. Even though the answerer selects Secure RTP, the + offerer will not know that until he receives the answer, and hence an + attacker will be able to send media to the offerer meanwhile. The + easiest protection against such an attack is to not offer use of the + non-secure media stream in the actual configuration; however, that + may in itself have undesirable side effects: If the answerer does not + support the secure media stream and also does not support the + capability negotiation framework, then negotiation of the media + stream will fail. Alternatively, SDP security preconditions + [RFC5027] can be used. This will ensure that media is not flowing + until session negotiation has completed and hence the selected + configuration is known. Use of preconditions however requires both + sides to support them. If they don't, and use of them is required, + the session will fail. As a (limited) work around to this, it is + RECOMMENDED that SIP entities generate an answer SDP session + description and send it to the offerer as soon as possible, for + example, in a 183 Session Progress message. This will limit the time + during which an attacker can send media to the offerer. Section 3.9 + presents other alternatives as well. + + Additional security considerations apply to the answer SDP session + description as well. The actual configuration attribute tells the + offerer on which potential configuration the answer was based, and + hence an attacker that can either modify or remove the actual + configuration attribute in the answer can cause session failure as + well as extend the time window during which the offerer will accept + incoming media that does not conform to the actual answer. The + solutions to this SDP session description answer integrity problem + are the same as for the offer, i.e., use of end-to-end integrity + protection, SIP identity, or hop-by-hop protection. The mechanism to + use depends on the mechanisms supported by the offerer as well as the + acceptable security trade offs. + + As described in Sections 3.1 and 3.11, SDP Capability Negotiation + conceptually allows an offerer to include many different offers in a + single SDP session description. This can cause the answerer to + process a large number of alternative potential offers, which can + consume significant memory and CPU resources. An attacker can use + this amplification feature to launch a denial-of-service attack + against the answerer. The answerer must protect itself from such + attacks. As explained in Section 3.11, the answerer can help reduce + the effects of such an attack by first discarding all potential + configurations that contain unsupported transport protocols, + unsupported or invalid mandatory attribute capabilities, or + unsupported mandatory extension configurations. The answerer should + + + +Andreasen Standards Track [Page 71] + +RFC 5939 SDP Capability Negotiation September 2010 + + + also look out for potential configurations that are designed to pass + the above test, but nevertheless produce a large number of potential + configuration SDP session descriptions that cannot be supported. + + A possible way of achieving that is for an attacker to find a + valid session-level attribute that causes conflicts or otherwise + interferes with individual media description configurations. At + the time of publication of this document, we do not know of such + an SDP attribute; however, this does not mean it does not exist, + or that it will not exist in the future. If such attributes are + found to exist, implementers should explicitly protect against + them. + + A significant number of valid and supported potential configurations + may remain. However, since all of those contain only valid and + supported transport protocols and attributes, it is expected that + only a few of them will need to be processed on average. Still, the + answerer must ensure that it does not needlessly consume large + amounts of memory or CPU resources when processing those as well as + be prepared to handle the case where a large number of potential + configurations still need to be processed. + +6. IANA Considerations + +6.1. New SDP Attributes + + The IANA has registered the following new SDP attributes: + + Attribute name: csup + Long form name: Supported capability negotiation extensions + Type of attribute: Session-level and media-level + Subject to charset: No + Purpose: Option tags for supported SDP Capability + Negotiation extensions + Appropriate values: See Section 3.3.1 of RFC 5939 + Contact name: Flemming Andreasen, fandreas@cisco.com + + Attribute name: creq + Long form name: Required capability negotiation extensions + Type of attribute: Session-level and media-level + Subject to charset: No + Purpose: Option tags for required SDP Capability + Negotiation extensions + Appropriate values: See Section 3.3.2 of RFC 5939 + Contact name: Flemming Andreasen, fandreas@cisco.com + + + + + + +Andreasen Standards Track [Page 72] + +RFC 5939 SDP Capability Negotiation September 2010 + + + Attribute name: acap + Long form name: Attribute capability + Type of attribute: Session-level and media-level + Subject to charset: No + Purpose: Attribute capability containing an attribute + name and associated value + Appropriate values: See Section 3.4.1 of RFC 5939 + Contact name: Flemming Andreasen, fandreas@cisco.com + + Attribute name: tcap + Long form name: Transport Protocol Capability + Type of attribute: Session-level and media-level + Subject to charset: No + Purpose: Transport protocol capability listing one or + more transport protocols + Appropriate values: See Section 3.4.2 of RFC 5939 + Contact name: Flemming Andreasen, fandreas@cisco.com + + Attribute name: pcfg + Long form name: Potential Configuration + Type of attribute: Media-level + Subject to charset: No + Purpose: Potential configuration for SDP Capability + Negotiation + Appropriate values: See Section 3.5.1 of RFC 5939 + Contact name: Flemming Andreasen, fandreas@cisco.com + + Attribute name: acfg + Long form name: Actual configuration + Type of attribute: Media-level + Subject to charset: No + Purpose: Actual configuration for SDP Capability + Negotiation + Appropriate values: See Section 3.5.2 of RFC 5939 + Contact name: Flemming Andreasen, fandreas@cisco.com + +6.2. New SDP Capability Negotiation Option Tag Registry + + The IANA has created a new SDP Capability Negotiation Option Tag + registry. An IANA SDP Capability Negotiation Option Tag registration + MUST be documented in an RFC in accordance with the [RFC5226] IETF + Review policy. The RFC MUST provide the name of the option tag, a + syntax, and a semantic specification of any new SDP attributes and + any extensions to the potential configuration ("a=pcfg") and actual + configuration ("a=acfg") attributes provided in this document. If + the extension defines any new SDP attributes that are intended to be + capabilities for use by the capability negotiation framework (e.g., + similar to "a=acap"), those capabilities MUST adhere to the + + + +Andreasen Standards Track [Page 73] + +RFC 5939 SDP Capability Negotiation September 2010 + + + guidelines provided in Section 3.4.3. Extensions to the potential + and actual configuration attributes MUST adhere to the syntax + provided in Sections 3.5.1 and 3.5.2. + + The option tag "cap-v0" is defined in this document, and the IANA has + registered this option tag. + +6.3. New SDP Capability Negotiation Potential Configuration Parameter + Registry + + The IANA has created a new SDP Capability Negotiation Potential + Configuration Parameter registry. An IANA SDP Capability Negotiation + Potential Configuration registration MUST be documented in an RFC in + accordance with the [RFC5226] IETF Review policy. The RFC MUST + define the syntax and semantics of each new potential configuration + parameter. The syntax MUST adhere to the syntax provided for + extensions in Section 3.5.1 and the semantics MUST adhere to the + semantics provided for extensions in Section 3.5.1 and 3.5.2. + Associated with each registration MUST be the encoding name for the + parameter as well as a short descriptive name for it. + + The potential configuration parameters "a" for "attribute" and "t" + for "transport protocol" are defined in this document, and the IANA + has registered them. + +7. Acknowledgments + + The SDP Capability Negotiation solution defined in this document + draws on the overall capability negotiation framework that was + defined by [SDPng]. Also, the SDP Capability Negotiation solution is + heavily influenced by the discussions and work done by the SDP + Capability Negotiation Design Team. The following people in + particular provided useful comments and suggestions to either the + document itself or the overall direction of the solution defined + here: Francois Audet, John Elwell, Roni Even, Miguel Garcia, Robert + Gilman, Cullen Jennings, Jonathan Lennox, Matt Lepinski, Jean- + Francois Mule, Joerg Ott, Colin Perkins, Jonathan Rosenberg, Thomas + Stach, and Dan Wing. + + General Area review comments were provided by Christian Vogt, and + Stephen Kent provided Security Directorate review comments. Eric + Rescorla provided textual input to the Security Considerations. + Alexey Melnikov, Robert Sparks, and Magnus Westerlund provided + several review comments as well. + + + + + + + +Andreasen Standards Track [Page 74] + +RFC 5939 SDP Capability Negotiation September 2010 + + +8. References + +8.1. Normative References + + [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14, RFC 2119, March 1997. + + [RFC3264] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model + with Session Description Protocol (SDP)", RFC 3264, June + 2002. + + [RFC4566] Handley, M., Jacobson, V., and C. Perkins, "SDP: Session + Description Protocol", RFC 4566, July 2006. + + [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an + IANA Considerations Section in RFCs", BCP 26, RFC 5226, + May 2008. + + [RFC5234] Crocker, D., Ed., and P. Overell, "Augmented BNF for + Syntax Specifications: ABNF", STD 68, RFC 5234, January + 2008. + + [RFC5245] Rosenberg, J., "Interactive Connectivity Establishment + (ICE): A Protocol for Network Address Translator (NAT) + Traversal for Offer/Answer Protocols", RFC 5245, April + 2010. + +8.2. Informative References + + [RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, + A., Peterson, J., Sparks, R., Handley, M., and E. + Schooler, "SIP: Session Initiation Protocol", RFC 3261, + June 2002. + + [RFC3312] Camarillo, G., Ed., Marshall, W., Ed., and J. Rosenberg, + "Integration of Resource Management and Session Initiation + Protocol (SIP)", RFC 3312, October 2002. + + [RFC3262] Rosenberg, J. and H. Schulzrinne, "Reliability of + Provisional Responses in Session Initiation Protocol + (SIP)", RFC 3262, June 2002. + + [RFC3407] Andreasen, F., "Session Description Protocol (SDP) Simple + Capability Declaration", RFC 3407, October 2002. + + [RFC3551] Schulzrinne, H. and S. Casner, "RTP Profile for Audio and + Video Conferences with Minimal Control", STD 65, RFC 3551, + July 2003. + + + +Andreasen Standards Track [Page 75] + +RFC 5939 SDP Capability Negotiation September 2010 + + + [RFC3711] Baugher, M., McGrew, D., Naslund, M., Carrara, E., and K. + Norrman, "The Secure Real-time Transport Protocol (SRTP)", + RFC 3711, March 2004. + + [RFC3830] Arkko, J., Carrara, E., Lindholm, F., Naslund, M., and K. + Norrman, "MIKEY: Multimedia Internet KEYing", RFC 3830, + August 2004. + + [RFC4145] Yon, D. and G. Camarillo, "TCP-Based Media Transport in + the Session Description Protocol (SDP)", RFC 4145, + September 2005. + + [RFC4474] Peterson, J. and C. Jennings, "Enhancements for + Authenticated Identity Management in the Session + Initiation Protocol (SIP)", RFC 4474, August 2006. + + [RFC4567] Arkko, J., Lindholm, F., Naslund, M., Norrman, K., and E. + Carrara, "Key Management Extensions for Session + Description Protocol (SDP) and Real Time Streaming + Protocol (RTSP)", RFC 4567, July 2006. + + [RFC4568] Andreasen, F., Baugher, M., and D. Wing, "Session + Description Protocol (SDP) Security Descriptions for Media + Streams", RFC 4568, July 2006. + + [RFC4585] Ott, J., Wenger, S., Sato, N., Burmeister, C., and J. Rey, + "Extended RTP Profile for Real-time Transport Control + Protocol (RTCP)-Based Feedback (RTP/AVPF)", RFC 4585, July + 2006. + + [RFC4588] Rey, J., Leon, D., Miyazaki, A., Varsa, V., and R. + Hakenberg, "RTP Retransmission Payload Format", RFC 4588, + July 2006. + + [RFC4756] Li, A., "Forward Error Correction Grouping Semantics in + Session Description Protocol", RFC 4756, November 2006. + + [RFC5027] Andreasen, F. and D. Wing, "Security Preconditions for + Session Description Protocol (SDP) Media Streams", RFC + 5027, October 2007. + + [RFC5124] Ott, J. and E. Carrara, "Extended Secure RTP Profile for + Real-time Transport Control Protocol (RTCP)-Based Feedback + (RTP/SAVPF)", RFC 5124, February 2008. + + [RFC5751] Ramsdell, B. and S. Turner, "Secure/Multipurpose Internet + Mail Extensions (S/MIME) Version 3.2 Message + Specification", RFC 5751, January 2010. + + + +Andreasen Standards Track [Page 76] + +RFC 5939 SDP Capability Negotiation September 2010 + + + [RFC5763] Fischl, J., Tschofenig, H., and E. Rescorla, "Framework + for Establishing a Secure Real-time Transport Protocol + (SRTP) Security Context Using Datagram Transport Layer + Security (DTLS)", RFC 5763, May 2010. + + [RFC5764] McGrew, D. and E. Rescorla, "Datagram Transport Layer + Security (DTLS) Extension to Establish Keys for the Secure + Real-time Transport Protocol (SRTP)", RFC 5764, May 2010. + + [RFC5888] Camarillo, G. and H. Schulzrinne, "The Session Description + Protocol (SDP) Grouping Framework", RFC 5888, June 2010. + + [BESRTP] Kaplan, H. and F. Audet, "Session Description Protocol + (SDP) Offer/Answer Negotiation For Best-Effort Secure + Real-Time Transport Protocol", Work in Progress, October + 2006. + + [ICETCP] Rosenberg, J., Keranen, A., Lowekamp, B., and A. Roach, + "TCP Candidates with Interactive Connectivity + Establishment (ICE)", Work in Progress, September 2010. + + [SDPMedCap] + Gilman, R., Even, R., and F. Andreasen, "SDP media + capabilities Negotiation", Work in Progress, July 2010. + + [SDPng] Kutscher, D., Ott, J., and C. Bormann, "Session + Description and Capability Negotiation", Work in Progress, + February 2005. + +Author's Address + + Flemming Andreasen + Cisco Systems + Iselin, NJ 08830 + USA + + EMail: fandreas@cisco.com + + + + + + + + + + + + + + +Andreasen Standards Track [Page 77] + |