Session Description Protocol (SDP) Media Capabilities Negotiation

MMUSIC                                                         R. Gilman
Internet-Draft                                                      NDCI
Intended status: Standards Track                            R. Even, Ed.
Expires: August 28, 2008                                         Polycom
                                                            F. Andreasen
                                                           Cisco Systems
                                                       February 25, 2008

                   SDP media capabilities Negotiation

Status of this Memo

   By submitting this Internet-Draft, each author represents that any
   applicable patent or other IPR claims of which he or she is aware
   have been or will be disclosed, and any of which he or she becomes
   aware will be disclosed, in accordance with Section 6 of BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups.  Note that
   other groups may also distribute working documents as Internet-

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   The list of current Internet-Drafts can be accessed at

   The list of Internet-Draft Shadow Directories can be accessed at

   This Internet-Draft will expire on August 28, 2008.

Copyright Notice

   Copyright (C) The IETF Trust (2008).

Gilman, et al.           Expires August 28, 2008                [Page 1]

Internet-Draft                    CMED                     February 2008


   Session Description Protocol (SDP) capability negotiation provides a
   general framework for indicating and negotiating capabilities in SDP.
   The base framework defines only capabilities for negotiating
   transport protocols and attributes.  In this document, we extend the
   framework by defining media capabilities that can be used to
   negotiate media types and their associated parameters.  This
   extension is designed to map easily to existing and future SDP media

Gilman, et al.           Expires August 28, 2008                [Page 2]

Internet-Draft                    CMED                     February 2008

Table of Contents

   1.  Introduction . . . . . . . . . . . . . . . . . . . . . . . . .  4
   2.  Terminology  . . . . . . . . . . . . . . . . . . . . . . . . .  5
   3.  SDP Media Capabilities . . . . . . . . . . . . . . . . . . . .  6
     3.1.  Solution Overview  . . . . . . . . . . . . . . . . . . . .  6
     3.2.  Design Goals . . . . . . . . . . . . . . . . . . . . . . . 10
     3.3.  New Capability Attributes  . . . . . . . . . . . . . . . . 11
       3.3.1.  The Media Encoding Capability Attribute  . . . . . . . 11
       3.3.2.  The Media Format Parameter Capability Attribute  . . . 12
       3.3.3.  The Media-Specific Capability Attribute  . . . . . . . 15
       3.3.4.  The Bandwidth Capability Attribute . . . . . . . . . . 16
     3.4.  Extensions to the Potential Configuration Attribute  . . . 17
       3.4.1.  The Media Capability Parameter . . . . . . . . . . . . 17
       3.4.2.  The Payload Type Mapping Parameter . . . . . . . . . . 19
       3.4.3.  The Bandwidth Parameter  . . . . . . . . . . . . . . . 20
     3.5.  Extensions to the Actual Configuration Attribute . . . . . 20
     3.6.  The Latent Configuration Attribute . . . . . . . . . . . . 21
       3.6.1.  Cryptographic Attributes in Latent Configurations  . . 23
     3.7.  Offer/Answer Model Extensions  . . . . . . . . . . . . . . 23
       3.7.1.  Generating the Initial Offer . . . . . . . . . . . . . 23
       3.7.2.  Generating the Answer  . . . . . . . . . . . . . . . . 24
       3.7.3.  Offerer Processing of the Answer . . . . . . . . . . . 24
       3.7.4.  Modifying the Session  . . . . . . . . . . . . . . . . 24
   4.  Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
     4.1.  Alternative Codecs . . . . . . . . . . . . . . . . . . . . 26
     4.2.  Latent Media Streams . . . . . . . . . . . . . . . . . . . 29
   5.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . . 31
   6.  Security Considerations  . . . . . . . . . . . . . . . . . . . 32
   7.  Changes from previous versions . . . . . . . . . . . . . . . . 33
     7.1.  Changes from version 02  . . . . . . . . . . . . . . . . . 33
     7.2.  Changes from version 01  . . . . . . . . . . . . . . . . . 33
     7.3.  Changes from version 00  . . . . . . . . . . . . . . . . . 33
   8.  Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 34
   9.  References . . . . . . . . . . . . . . . . . . . . . . . . . . 35
     9.1.  Normative References . . . . . . . . . . . . . . . . . . . 35
     9.2.  Informative References . . . . . . . . . . . . . . . . . . 35
   Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 36
   Intellectual Property and Copyright Statements . . . . . . . . . . 37

Gilman, et al.           Expires August 28, 2008                [Page 3]

Internet-Draft                    CMED                     February 2008

1.  Introduction

   Session Description Protocol (SDP) capability negotiation [SDPCapNeg]
   provides a general framework for indicating and negotiating
   capabilities in SDP[RFC4566].  The base framework defines only
   capabilities for negotiating transport protocols and attributes.

   SDP Simple Capability Declaration (simcap) is defined in RFC 3407
   [RFC3407].  It defines a set of SDP attributes that enables a limited
   set of capabilities to be described at a session level or on a per
   media stream basis.  The capabilities include a simple form of media
   capabilities.  RFC 3407 defines capability declaration only.  Actual
   negotiation procedures taking advantage of such capabilities have not
   been defined.  The SDP capability negotiation framework defined in
   [SDPCapNeg] adds this required functionality, but does not define
   media capabilities.  This document updates RFC3407 and [SDPCapNeg]
   and new implementations SHOULD use the functionality defined in the
   current document to negotiate media capabilities.

   The [SDPCapNeg] document lists some of the issues with the current
   SDP capability negotiation process.  An additional real life case is
   to be able to offer one media stream (e.g. audio) but list the
   capability to support another media stream (e.g. video) without
   actually offering it currently.

   In this document, we extend the framework by defining media
   capabilities that can be used to indicate and negotiate media types
   and their associated parameters like bandwidth.  This document also
   adds the ability to declare support for media streams, the use of
   which can be offered and negotiated later.  The definitions of new
   attributes for media capability negotiation are chosen to make the
   translation from these attributes to "conventional" SDP [RFC4566]
   media attributes as straightforward as possible in order to simplify
   implementation.  This goal is intended to reduce processing in two
   ways: each proposed configuration in an offer may be easily
   translated into a conventional SDP media stream record for processing
   by the receiver; and the construction of an answer based on a
   selected proposed configuration is straightforward.

Gilman, et al.           Expires August 28, 2008                [Page 4]

Internet-Draft                    CMED                     February 2008

2.  Terminology

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   document are to be interpreted as described in RFC2119 [RFC2119] and
   indicate requirement levels for compliant RTP implementations.

   "Base Configuration": the media configuration represented by a media
   block exclusive of all the capability negotiation attributes defined
   in this document and [SDPCapNeg]

   "Conventional SDP": all SDP lines exclusive of the capability
   negotiation attributes

Gilman, et al.           Expires August 28, 2008                [Page 5]

Internet-Draft                    CMED                     February 2008

3.   SDP Media Capabilities

   The SDP capability negotiation [SDPCapNeg] discusses the use of any
   SDP [RFC4566] attribute (a=) under the attribute capability "acap".
   The limitations of using acap for fmtp and rtpmap in a potential
   configuration are described in [SDPCapNeg]; for example they can be
   used only at the media level since they are media level attributes.
   The [SDPCapNeg] partially addresses the issue of bandwidth usage for
   different configurations but does not offer a way to negotiate
   different bandwidth for different codecs and profiles.  This section
   provides an overview of extensions providing SDP Media Capability and
   Bandwidth negotiation solution offering more robust capabilities
   negotiation.  This is followed by definitions of new SDP attributes
   for the solution and its associated updated offer/answer procedures

3.1.  Solution Overview

   The solution consists of five new attributes and four new parameters
   for the pcfg attribute extending the base attributes from

   Four new attributes are used to make up media capabilities in a
   manner that can be related to the capabilities specified in a media
   line, its attributes, and the bandwidth parameter lines.

   o  A new media attribute ("a=mcap") that lists media formats as
      capabilities in the form of a subtype (e.g.  "PCMU"), and its
      encoding parameters (e.g. "/8000/2").  Each resulting media format
      type / subtype capability has an associated handle.  The encoding
      parameters are as specified for the rtpmap attribute defined in

   o  A new attribute ("a=mfcap") that specifies media format parameters
      associated with one or more media capabilities.  The mfcap
      attribute is used to associate the formatting capabilities
      normally carried in the fmtp attribute.

   o  A new attribute ("a=mscap") that specifies media parameters
      associated with one or more media capabilities.  The mscap
      attribute is used to associate capabilities other than fmtp or
      rtpmap attributes, for example the rtcp-fb attribute.

   o  A new attribute ("a=bcap") that is used to specify the bandwidth
      parameter capability.

   o  A new attribute ("a=lcfg") that specifies latent media stream
      configurations when no corresponding media stream is offered.  An

Gilman, et al.           Expires August 28, 2008                [Page 6]

Internet-Draft                    CMED                     February 2008

      example is a latent configuration for video even though no video
      is currently offered.

   New parameters are defined for the potential configuration (pcfg),
   latent configuration (lcfg), and accepted configuration (acfg)
   attributes to associate the new attributes with particular

   o  A new parameter type ("m=")is added to the potential configuration
      ("a=pcfg:") attribute and the actual configuration ("a=acfg:")
      attribute defined in [SDPCapNeg], and to the new latent
      configuration ("a=lcfg:") attribute which permits specification of
      media capabilities (including their associated parameters) and
      combinations thereof for the configuration.  For example, the
      "a=pcfg:" line might specify PCMU and telephone events or G.729B
      and telephone events as acceptable configurations.  The "a=acfg:"
      line in the answer would specify the accepted choice.

   o  A new parameter type ("pt=") is added to the potential
      configuration, actual configuration, and latent configuration
      attributes.  This parameter associates RTP payload types with the
      referenced media capabilities, and is appropriate only when the
      transport protocol uses RTP.

   o  A new parameter type ("b=") is used to specify bandwidth
      parameters in a potential configuration.

   o  A new parameter type ("mt=") is used to specify the MIME type for
      latent configurations that are declared at the session level.

   The document extends the base protocol extensions to the offer/answer
   model that allow for capabilities and potential configurations to be
   included in an offer.  Media capabilities constitute capabilities
   that can be used in potential and latent configurations.  Whereas
   potential configurations 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, latent
   configurations merely inform the other side of possible
   configurations supported by the entity.  Those latent configurations
   may be used to guide subsequent offer/answer exchanges, but they are
   not part of the current offer/answer exchange.

   The mechanism is illustrated by the offer/answer exchange below,
   where Alice sends an offer to Bob:

Gilman, et al.           Expires August 28, 2008                [Page 7]

Internet-Draft                    CMED                     February 2008

                   Alice                               Bob
                  | (1) Offer (SRTP and RTP)         |
                  |                                  |
                  | (2) Answer (RTP)                 |
                  |                                  |

   Alice's offer includes RTP and SRTP as alternatives.  RTP is the
   default, but SRTP is the preferred one:

             o=- 25678 753849 IN IP4
             c=IN IP4
             t=0 0
             m=audio 3456 RTP/AVP 0 18
             a=tcap:1 RTP/SAVP
             a=rtpmap:0 PCMU/8000/1
             a=rtpmap:18 G729/8000/1
             a=fmtp:18 annexb=yes
             a=mcap:1,4 g729/8000/1
             a=mcap:2 PCMU/8000/1
             a=mcap:5 telephone-event/8000
             a=mfcap:1 annexb=no
             a=mfcap:4 annexb=yes
             a=mfcap:5 0-11
             a=acap:1 crypto:1 AES_CM_128_HMAC_SHA1_32
             a=pcfg:1 m=4,5|1,5 t=1 a=1 pt=1:100,4:101,5:102
             a=pcfg:2 m=2 t=1 a=1 pt=2:103
             a=pcfg:3 m=4 t=2 pt=4:18

   The required base and extensions are provided by the "a=creq"
   attribute defined in [SDPCapNeg], with the option tag "med-v0", which
   indicates that the extension framework defined here, must be
   supported.  The Base level support is implied since it is required
   for the extensions.

   The "m=" line indicates that Alice is offering to use plain RTP with
   PCMU or G.729B. The media line implicitly defines the default
   transport protocol (RTP/AVP in this case) and the default actual

   The "a=tcap:1" line, specified in the base protocol, defines a
   transport protocol capabilities, in this case Secure RTP (SAVP
   profile) as the first option and RTP (AVP profile) as the second

Gilman, et al.           Expires August 28, 2008                [Page 8]

Internet-Draft                    CMED                     February 2008


   The "a=mcap:1,4" line defines two G.729 media format capabilities,
   numbered 1 and 4, and their encoding rate.  The capabilities are of
   subtype G729.  Note that the media subtype is explicitly specified
   here, rather than RTP payload type number.  In this example, two
   G.729 subtype capabilities are defined.  This permits the declaration
   of two sets of formatting parameters for G.729.

   The "a=mcap:2" line defines a G.711 mu-law capability, numbered 2.

   The "a=mcap:5" line defines an audio telephone-event capability,
   numbered 5.

   The "a=mfcap:1" line specifies the fmtp formatting parameters for
   capability 1 (no comfort noise packets).

   The "a=mfcap:4" line specifies the fmtp formatting parameters for
   capability 4 (G.729B).

   The "a=mfcap:5" line specifies the fmtp formatting parameters for
   capability 5 (the DTMF touchtones 0-9,*,#).

   The "a=acap:1" line specified in the base protocol provides the
   "crypto" attribute which provides the keying material for SRTP using
   SDP security descriptions.

   The "a=pcfg:" attributes provide the potential configurations
   included in the offer by reference to the media capabilities,
   transport capabilities, and associated payload type mappings.  Three
   explicit alternatives are provided; the first one, numbered 1 is the
   preferred one.  It specifies media capabilities 4 and 5, i.e., G.729B
   and DTMF, or media capability 1 and 5, i.e., G.729 and DTMF.
   Furthermore, it specifies transport protocol capability 1 (i.e. the
   RTP/SAVP profile - secure RTP), and the attribute capability 1, i.e.
   the crypto attribute provided.  Lastly, it specifies, a payload type
   mapping for media capabilities 1, 4, and 5, thereby permitting the
   offeror to distinguish between encrypted media and unencrypted media
   received prior to receipt of the answer.  Use of unique payload types
   is not required; codecs such as AMR-WB [RFC4867] have the potential
   for so many combinations of options that it may be impractical to
   define unique payload types for all supported combinations.  For SRTP
   using SDES inline keying [RFC4568], the offeror will still need to
   receive the answer before being able to decrypt the stream.

   The second alternative specifies media capability 2, i.e.  PCMU,
   under the RTP/SAVP profile, with the same SRTP key material.

Gilman, et al.           Expires August 28, 2008                [Page 9]

Internet-Draft                    CMED                     February 2008

   The third alternative offers G.729B unsecured; it's only purpose in
   this example is to show a preference for G.729B over PCMU.

   The media line, with any qualifying attributes such as fmtp or
   rtpmap, is itself considered a valid configuration; it is assumed to
   be the lowest preference.

   Bob receives the SDP offer from Alice.  Bob supports G.729B, PCMU,
   and telephone events over RTP, but not SRTP, and hence he accepts the
   potential configuration 3 for RTP provided by Alice.  Hence, Bob
   generates the following answer:

             o=- 24351 621814 IN IP4
             c=IN IP4
             t=0 0
             m=audio 4567 RTP/AVP 18
             a=rtpmap:18 G729/8000
             a=fmtp:18 annexb=yes
             a=acfg:3 m=4 pt=4:18

   Bob includes the "a=csup" and "a=acfg" attributes in the answer to
   inform Alice that he can support the med-v0 level of capability
   negotiations.  Note that in this particular example, the answerer
   supported the capability extensions defined here, however had he not,
   he would simply have processed the offer based on the offered PCMU
   and G.729 codecs under the RTP/AVP profile only.  Consequently, the
   answer would have omitted the "a=csup" attribute line and chosen one
   or both of the PCMU and G.729 codecs instead.  The answer carries the
   accepted configuration in the m line along with corresponding rtpmap
   and/or fmtp parameters, as appropriate.

   Note that per the base protocol, after the above, Alice MAY generate
   a new offer with an actual configuration ("m=" line, etc.)
   corresponding to the actual configuration referenced in Bob's answer
   (not shown here).

3.2.  Design Goals

   The design of the new elements added to the capability negotiation
   framework by this document has been driven by two basic goals:

   o  The resulting SDP should be as compact as possible while
      preserving the flexibility necessary to declare multiple options
      for complex media encodings.

Gilman, et al.           Expires August 28, 2008               [Page 10]

Internet-Draft                    CMED                     February 2008

   o  The capability attributes defined should be easily mapped to and
      from "conventional" SDP elements, that is, to and from one or more
      SDP records that do not contain any capability attributes.

   It is hoped that satisfaction of these goals will facilitate simple
   implementations of capability negotiation in SDP.

3.3.  New Capability Attributes

   In this section, we present the new attributes associated with
   indicating the media capabilities for use by the SDP Capability
   negotiation.  The approach taken is to keep things similar to the
   existing media capabilities defined by the existing media
   descriptions ("m=" lines) and the associated "rtpmap" and "fmtp"
   attributes.  We use media subtypes and "media capability numbers"
   instead of payload types to link the relevant media capability
   parameters.  This permits the capabilities to be defined at the
   session level and be used for multiple streams, if desired.  Payload
   types are then specified at the media level (see Section 3.4.2).

   A media capability merely indicates possible support for the media
   type and media format(s) in question.  In order to actually use a
   media capability in an offer/answer exchange, it must be referenced
   in a potential configuration (see Section 3.4.1).

   Media capabilities can be provided at the session-level and/or the
   media-level.  Media capabilities provided at the session level may be
   referenced in an lcfg attribute at the session level, or by any pcfg
   attribute at the media level (consistent with the MIME type), whereas
   media capabilities provided at the media level may be referenced by a
   pcfg attribute within that media stream only.  In either case, the
   scope of the <med-cap-num> is the entire session description.  This
   enables each media capability to be uniquely referenced across the
   entire session description (e.g. in a potential configuration).

3.3.1.  The Media Encoding Capability Attribute

   Media subtypes can be expressed as media encoding capabilities by use
   of the "a=mcap" attribute, which is defined as follows:

   a=mcap:<med-cap-num-list> <subtype>[/<encoding-parms>]
          <med-cap-num-list> = <med-cap-num> *[COMMA <med-cap-num>]

   where <med-cap-num> is an integer between 1 and 2^31-1 (both
   included) used to number a media format capability, or a range of
   such integers and the <subtype> is the media subtype e.g.  H263-1998
   or PCMU. and <encoding-parms> are the media encoding parameters for
   the <subtype>.  All media format capabilities in the list are

Gilman, et al.           Expires August 28, 2008               [Page 11]

Internet-Draft                    CMED                     February 2008

   assigned to the same media type/subtype.  Each occurrence of the mcap
   attribute MUST use unique values in its <med-cap-num-list>; the media
   capability numbers must be unique across the entire session or media
   description.  In short, the mcap attribute defines media capabilities
   and associates them with a media capability number in the same manner
   as the rtpmap attribute defines them and associates them with a
   payload type.

   In ABNF, we have:

      media-capability-line = "a=mcap:" media-cap-num-list
                              1*WSP media-cap
                              ["/" clock-rate ["/" encoding-parms]]
      media-cap-num-list = media-cap-num *[COMMA media-cap-num]
      media-cap-num      = 1*DIGIT | media-cap-range
      media-cap-range    = 1*DIGIT "-" 1*DIGIT
      media-cap          = token ; Subtype name(PCMU, G729, etc.)
      clock-rate         = 1*DIGIT
      encoding-parms     = token

   The clock-rate and encoding-params are as defined to appear in an
   rtpmap attribute for each MIME type/subtype.  Thus, it is easy to
   convert an mcap attribute line into one or more rtpmap attribute
   lines, once a payload type is assigned to a media-cap-num (see
   section 3.4.2).

   The "mcap" attribute can be provided at the session-level and/or the
   media-level.  There can be more than one mcap attribute at the
   session or media level.  The unique media-cap-num is used to identify
   each media capability in potential and actual configurations.  When
   used in a potential configuration it is a media level attribute
   capability regardless if it is specified at the session or media
   level.  In other words, the media capability applies to the specific
   media description associated with the potential configuration in

   For example:

             a=mcap:1 L16/8000/1
             a=mcap:2 L16/16000/2
             a=mcap:3,4 H263-1998/90000

3.3.2.  The Media Format Parameter Capability Attribute

   This attribute is used to associate media-specific parameters with
   one or more media capabilities.  The form of the attribute is:

Gilman, et al.           Expires August 28, 2008               [Page 12]

Internet-Draft                    CMED                     February 2008

           a=mfcap:<med-cap-num-list>  <list of parameters>

   where <med-cap-num-list> permits the parameter(s) to be associated
   with one or more media capabilities and the format parameters are
   specific to the type of codec.  The mfcap lines map to a single
   traditional SDP fmtp attribute line (one per <media-cap-num>) of the

           a=fmtp:<fmt> <list of parameters>

   where <fmt> is the media format description defined in RFC 4566
   [RFC4566], as appropriate for the particular media stream.  The mfcap
   attribute MUST be used to encode attributes for media capabilities,
   which would conventionally appear in an fmtp attribute.

   The appearance of media subtypes with a large number of formatting
   options (e.g., AMR-WB [RFC4867]) coupled with the restriction that
   only a single fmtp attribute can appear per media format, suggests
   that it is useful to create a combining rule for mfcap parameters
   which are associated with the same media capability number.
   Therefore, different mfcap lines MAY include the same <med-cap-num>
   in their <med-cap-num-list>.  When a particular media capability is
   selected for processing, the parameters from each mfcap line which
   references the particular capability number in its med-cap-num-list
   are concatenated together via ";" to form the equivalent of a single
   fmtp attribute line.  This permits one to define a separate mfcap
   line for a single parameter and value that is to be applied to each
   media capability designated in the med-cap-num-list.  This provides a
   compact method to specify multiple combinations of format parameters
   when using codecs with multiple format options.

   The mfcap attribute adheres to RFC 4566 attribute production rules

           media-format-capability = "a=mfcap:"<media-caps> WSP
           med-caps = "*" ; wildcard: all media caps
                      / <med-cap-num-list> ; defined in Section 3.3.1
           format-specific-parameter-list = <format-specfic-parameter>
                                    *[";"<format-specfic-parameter>] ;
           format-specific-parameter = text

   Format parameters are not parsed by SDP; their content is specific to
   the media type/subtype.  When format parameters for a specific media
   capability are combined from multiple a=mfcap lines which reference
   that media capability, the format-specific parameters are
   concatenated together and separated by "; " for construction of the
   corresponding format attribute (a=fmtp):

Gilman, et al.           Expires August 28, 2008               [Page 13]

Internet-Draft                    CMED                     February 2008

        a= fmtp:<fmt> WSP <format-specfic-parameter-list>
        [1*[";"<format-specfic-parameter-list>] ;

   where <fmt> depends on the transport protocol in the manner defined
   in RFC4566.  SDP cannot assess the legality of the resulting
   parameter list in the "a=fmtp" line; the user must take care to
   insure that legal parameter lists are generated.

   The "mfcap" attribute can be provided at the session-level and the
   media-level.  There can be more than one mfcap attribute at the
   session or media level.  The unique media-cap-num is used to
   associate the parameters with a media capability.

   As a simple example, a G.729 capability is, by default, considered to
   support comfort noise as defined by Annex B.  Capabilities for G.729
   with and without comfort noise support may thus be defined by:

             a=mcap:1,2 audio G729/8000
             a=mfcap:2 annexb:no

   Media format capability 1 supports G.729 with Annex B, whereas media
   format capability 2 supports G.729 without Annex B.

   Example for H.263 video:

             a=mcap:1 video H263-1998/90000
             a=mcap:2 video H263-2000/90000
             a=mfcap:1 CIF=4;QCIF=2;F=1;K=1
             a=mfcap:2 profile=2;level=2.2

   Finally, for six format combinations of the Adaptive MultiRate codec:

             a=mcap:1-3 AMR/8000/1
             a=mcap:4-6 AMR/16000/1
             a=mfcap:1,2,3,4 mode-change-capability=1
             a=mfcap:5,6 mode-change-capability=2
             a=mfcap:1,2,3,5 max-red=220
             a=mfcap:3,4,5,6 octet-align=1
             a=mfcap:1,3,5 mode-set=0,2,4,7
             a=mfcap:2,4,6 mode-set=0,3,5,6

   So that AMR codec #1, when specified in a pcfg attribute within an
   audio stream block (and assigned payload type 98) as in

             a=pcfg:1 m=1 pt=1:98

   is essentially equivalent to the following

Gilman, et al.           Expires August 28, 2008               [Page 14]

Internet-Draft                    CMED                     February 2008

             m=audio 49170 RTP/AVP 98
             a=rtpmap:98 AMR/8000/1
             a=fmtp:98 mode-change-capability=1; max-red=220; mode-

   and AMR codec #4 with payload type 99, is essentially equivalent to
   the following:

             m=audio 49170 RTP/AVP 99
             a=rtpmap:99 AMR/16000/1
             a=fmtp:99 mode-change-capability=1; octet-align=1; mode-

   and so on for the other four combinations.  SDP could thus convert
   the media capabilities specifications into one or more alternative
   media stream specifications, one of which can be chosen for the

   In some cases, particularly when an RFC 2198 redundancy audio subtype
   (RED) capability is defined, the parameters to the mscap attribute
   may contain payload type numbers.  These numbers are bound to actual
   payload types by means of the payload type parameter (pt=) in a
   potential, actual, or latent configuration.  See sections 3.4.2, 3.5,
   and 3.6.

3.3.3.  The Media-Specific Capability Attribute

   Media-specific attributes, beyond the rtpmap and fmtp attributes, may
   be associated with media capability numbers via a new media-specific
   attribute, mscap, as follows:

          media-specific-capability = "a=mscap:"
                                       <media-caps> ; defined in 3.3.2
                                       WSP <att-field> ; from [RFC4566]
                                       WSP <ms-parameters>

           ms-parameters = byte-string ; as defined per attribute.

   Given an association between a media capability and a payload type
   number as specified by the pt= parameters in an lcfg or pcfg
   attribute line, a mscap line may be translated easily into a
   conventional attribute line of the form

        a=<att-field>":"<fmt> <ms-parameters> ; fmt defined in [RFC4566]

   A single mscap line may refer to multiple media capabilities; this is
   equivalent to multiple mscap lines, each with the same attribute
   values, one line per media capability.  Multiple mscap lines may

Gilman, et al.           Expires August 28, 2008               [Page 15]

Internet-Draft                    CMED                     February 2008

   refer to the same media capability, but, unlike the mfcap attribute,
   no concatenation operation is defined.  Hence, multiple mscap lines
   applied to the same media capability is equivalent to multiple lines
   of the specified attribute in a conventional media record.

   Here is example with the rtcp-fb attribute, modified from an example
   in[I-D.ietf-avt-avpf-ccm] (with the session-level and audio media
   omitted).  If the offer contains a media block like the following,

             m=video 51372 RTP/AVP 98
             a=rtpmap:98 H263-1998/90000
             a=tcap:1 RTP/AVPF
             a=mcap:1 H263-1998/90000
             a=mscap:1 rtcp-fb ccm tstr
             a=mscap:1 rtcp-fb ccm fir
             a=mscap:* rtcp-fb ccm tmmbr smaxpr=120
             a=pcfg:1 t=1 m=1 pt=1:98

   and if the proposed configuration is chosen, then the equivalent
   media block would look like

             m=video 51372 RTP/AVP 98
             a=rtpmap:98 H263-1998/90000
             a=rtcp-fb:98 ccm tstr
             a=rtcp-fb:98 ccm fir
             a=rtcp-fb:* ccm tmmbr smaxpr=120

3.3.4.  The Bandwidth Capability Attribute

   In some cases it is desirable to specify different bandwidth limits
   for different media configurations.  This may be done by use of the
   "a=bcap" attribute, which is defined as follows:

             a=bcap:<bw-cap-num> <bwtype>:<bandwidth>

   where <bw-cap-num> is an integer between 1 and 2^31-1 (both included)
   used to identify the bandwidth capability, <bwtype> is the bandwidth
   type, and <bandwidth> is the bandwidth value, as defined for the b=
   line in RFC4566[RFC4566]

   In ABNF, we have:

             media-bandwidth-cap-line = "a=bcap:" bw-cap-num 1*WSP
                                         bwtype ":" bandwidth


Gilman, et al.           Expires August 28, 2008               [Page 16]

Internet-Draft                    CMED                     February 2008

             bw-cap-num = 1*DIGIT; the bandwidth "handle"
             bwtype = token; as defined in RFC4566
             bandwidth = 1*DIGIT; as defined in RFC4566

   The "bcap" attribute can appear at the session level, where it can be
   referenced by lcfg or pcfg attributes, or at the media level, where
   it can be referenced by pcfg attributes.  When invoked by a pcfg or
   lcfg attribute, the resulting bandwidth line (b=) is to be
   interpreted at the media-level for that configuration.  There can be
   more than one bcap attribute.  The unique bw-cap-num is used to
   identify it in potential configurations.  No provision has been made
   for negotiation of total session bandwidth capabilities.

   Bandwidth capabilities may be included in a potential configuration
   via the "b=" parameter (see below).  Any bandwidth capability
   included replaces any media-level bandwidth of the same type declared
   in a "b=" SDP line.

   The following example offers a preferred potential configuration for
   H.263 QCIF at 360 Kbit/sec and a second potential configuration for
   H.263 CIF at the offered 500 Kbit/sec

             m=video 49170 RTP/AVP 99
             a=rtpmap:99 H263-1998/90000
             a=fmtp:99 CIF=4; QCIF=2
             a=mcap:1 video H263-1998/90000
             a=mcap:2 video H263-1998/90000
             a=mfcap:1 QCIF=2
             a=mfcap:2 CIF=4; QCIF=2;F=1;K=1
             a=bcap:1 TIAS:360000
             a=pcfg:1 m=1 b=1 pt=1:100
             a=pcfg:2 m=2 pt=2:101

3.4.  Extensions to the Potential Configuration Attribute

   The extension protocol of capabilities negotiation requires three new
   extensions for the pcfg: attribute defined in the base protocol.  The
   first extension permits the specification of media capabilities, or
   combinations thereof; the second permits the assignment of payload
   types to those capabilities when used in the specified configuration;
   the third permits the specification of bandwidth limits for a media

3.4.1.  The Media Capability Parameter

   The potential configuration attribute ("a=pcfg") as defined in SDP
   capabilities negotiation, permits alternate attributes to be

Gilman, et al.           Expires August 28, 2008               [Page 17]

Internet-Draft                    CMED                     February 2008

   associated with the media types defined in a media line.  In this
   document, we define an extension parameter for the specification of
   media configurations in addition to the one specified on the media

   We define the media capability configuration parameter, pot-media-
   config, in accordance with the following format:

           m=<med-cap-list> *["|"<med-cap-list>]

   where <med-cap-list> is a comma-separated list of media capability
   numbers (media-cap-num) as defined by a=mcap: lines and media lines.

   In ABNF form (adhering to the ABNF for pot-extension-config in

           pot-media-config = "m=" med-cap-list *(BAR med-cap-list)
                              ; BAR is defined in [SDPCapNeg]
           med-cap-list     = med-cap-num *("," med-cap-num)
           med-cap-num      = 1*DIGIT      ; defined in SDP

   Each potential media configuration is a comma-separated list of media
   capability numbers where med-cap-num refers to media capability
   numbers defined explicitly by a=mcap attributes and hence MUST be
   between 1 and 2^31-1 (both included).  Alternative potential media
   configurations are separated by a vertical bar ("|").  The
   alternatives are ordered by preference.  When media capabilities are
   not included in a potential configuration at the media level, the
   media type and media format from the associated "m=" line will be

   When one or more media capabilities (a=mcap) are invoked in a
   potential configuration (via m=), and associated with a payload type
   number by default or by a payload type number parameter (pt=),
   special processing must be invoked on the attributes associated with
   that payload type.  If the media capability is associated with any
   mfcap or mscap attributes, then all corresponding conventional
   attributes (e.g., fmtp or rtcp-fb attribute lines) in the media block
   are ignored for that configuration.  If no mfcap parameters are
   specified, then an fmtp attribute line within the media block with
   the correct payload type number, if any, will apply.  Similarly, any
   other media-specific attributes (e.g., rtcp-fb) in the media block
   with the correct payload type number will apply unless there is an
   applicable mscap attribute for the same attribute type (e.g.,
   rtcp-fb), in which case all media-block attributes of the same type
   and payload type number will be ignored.  Any media-specific
   attributes in the media block which refer to payload type numbers not
   used by the potential configuration are to be ignored.  These rules

Gilman, et al.           Expires August 28, 2008               [Page 18]

Internet-Draft                    CMED                     February 2008

   are intended to avoid the need to duplicate attributes and use the
   a=-m: form of invoking attributes in a potential configuration just
   to replace an rtpmap or fmtp attribute.

   For example:

             o=- 25678 753849 IN IP4
             c=IN IP4
             t=0 0
             m=audio 3456 RTP/AVP 0 18 100
             a=rtpmap:100 telephone-events
             a=fmtp:100 0-15
             a=mcap:1 PCMU/8000
             a=mcap:2 g729/8000
             a=mcap:3 telephone-event/8000
             a=mfcap:3 0-15
             a=pcfg:1 m=2,3|1,3 pt=1:0, 2:18, 3:100

   In this example, PCMU is media capability 1, G729 is media capability
   2, and telephone-event is media capability 3.  The a=pcfg: line
   specifies that the preferred configuration is G.729 with extended
   dtmf events, second is G.711 mu-law with extended dtmf events.
   Intermixing of G.729, G.711, and "commercial" dtmf events is least
   preferred (the base configuration provided by the "m=" line, which is
   always the least preferred configuration).  The rtpmap and fmtp
   attributes of the base configuration are replaced by the mcap and
   mfcap attributes when invoked by the proposed configuration.

3.4.2.  The Payload Type Mapping Parameter

   When media capabilities defined in mcap attributes are used in
   potential configuration lines, and the transport protocol uses RTP,
   it is necessary to assign payload types to them.  In some cases, it
   is desirable to assign different payload types to the same media
   capability when used in different potential configurations.  One
   example is when configurations for AVP and SAVP are offered: the
   offerer would like the answerer to use different payload types for
   encrypted and unencrypted media so that it (the offerer) can decide
   whether or not to render early media which arrives before the answer
   is received.  This association of distinct payload type(s) with
   different transport protocols requires a separate pcfg line for each
   protocol.  Clearly, this technique cannot be used if the number of
   potential configurations exceeds the number of possible payload

Gilman, et al.           Expires August 28, 2008               [Page 19]

Internet-Draft                    CMED                     February 2008

   We define the media type mapping configuration parameter, pt-media-
   map, in accordance with the following format:

             pt-media-map = "pt=" med-map-list
             med-map-list = med-map *["," med-map]
             med-map = med-cap-num ":" 'payload-type;
             med-cap-num is defined in section 3.4.1
             payload-type = 1*DIGIT ; RTP payload type

   The example in the previous section shows how the parameters from the
   mcap line are mapped to payload type in the pcfg "pt" parameter.

   As described in section 3.4.1, the choice of payload type numbers is
   especially important since they are also used to refer to base media
   -specific attributes (e.g., fmtp or rtcp-fb) if mfcap or mscap
   attributes are not specified for a media subtype.

3.4.3.  The Bandwidth Parameter

   A bandwidth parameter is added to the pcfg attribute in order to
   provide the flexibility to specify different bandwidth limits for
   different configurations.

   The bandwidth parameter, bw-param, is defined in accordance with the
   following format:

             bw-param = "b=" bw-cap-list;
             bw-cap-list = bw-cap-num *("," bw-cap-num);
             bw-cap-num = 1*DIGIT; as defined by the bcap attribute

   Multiple bandwidth capabilities are permitted in case it is desired
   to specify multiple bandwidth types.  Note that it is considered an
   error condition if the same bandwidth type is referenced more than
   once in the bw-cap-list.

   If a bandwidth capability is referenced in a potentical
   configuration, and that configuration is selected, then the bandwidth
   capability will replace any bandwidth attribute of the same <bwtype>
   which appears in the base media configuration.  Bandwidth
   specifications in the base configuration will apply to any potential
   configuration for which no correspoinding bandwidth capability is

3.5.  Extensions to the Actual Configuration Attribute

   The Actual configuration attribute is specified in [SDPCapNeg].  The
   actual configuration MUST list the potential configuration selected
   by the answerer.  This section adds extensions parameters enabling

Gilman, et al.           Expires August 28, 2008               [Page 20]

Internet-Draft                    CMED                     February 2008

   the answerer to specify the potential configuration attributes
   defined in this document and used in forming the answer.

   We define actual configuration extensions based on the sel-extension-
   config specified in [SDPCapNeg].  The new parameters are: parameter
   act-media-config, act-med-map and act-bw-param in accordance with the
   following ABNF:

        act-media-config = "m=" med-cap-list ; defined in section 3.4.1
        act-med-map = "pt=" med-map *("," med-map) ; defined in 3.4.2
        act-bw-param = "b=" bw-cap-list ; defined in section 3.4.3

   A response to the previous offer example in the above section might

             o=- 24351 621814 IN IP4
             c=IN IP4
             t=0 0
             m=audio 5432 RTP/AVP 18 100
             a=rtpmap:100 events
             a=fmtp:100 0-15
             a=acfg:1 m=2,3 pt=2:18,3:100

   Note that the capability numbers expressed in the acfg: attribute are
   based on the offered capability numbering, not on those listed in the
   answer, if any.  The acfg attribute identifies to the offerer which
   potential configuration (and parameter combination) was selected by
   the answerer.  Note that payload types, if specified, refer to the
   payloads to be received by the offeror; if the answerer wishes to
   receive different payload types, those values MUST be specified in
   the m= line of the SDP answer.

3.6.   The Latent Configuration Attribute

   One of the goals of this work is to permit the exchange of
   supportable media configurations in addition to those offered or
   accepted for immediate use.  Such configurations are referred to as
   "latent configurations".  For example, a party may offer to establish
   an audio session, and, at the same time, announce its ability to
   support a video session and supply its video capabilities by offering
   one or more latent configurations; the responding party may indicate
   its ability and willingness to support such a video session by
   returning one or more latent configurations.

   Latent configurations may be announced by use of the latent

Gilman, et al.           Expires August 28, 2008               [Page 21]

Internet-Draft                    CMED                     February 2008

   configuration attribute, which is defined in a manner very similar to
   the potential configuration attribute:

      a=lcfg:<preference> ["mt="<media>]

   <media> is defined in [RFC4566] and future-extensions = extension-
   config-list as defined in [SDPCapNeg].

   The m=, t=, b= and a= parameters are identical in format and meaning
   to those defined for the pcfg: attribute.  Note that the media type
   (mt=) and media capabilities list MUST be present if the latent
   configuration is defined at the session level.  The mt= parameter
   provides the MIME type (audio, video, etc.) for the configuration; it
   is OPTIONAL when the latent configuration is declared at the media
   level, but if present, MUST match the type of the m= line.  The pt=
   parameter is not directly meaningful in the lcfg: attribute because
   no actual media session is being offered or accepted, but it is
   included in order to tie any payload type parameters within
   attributes to the media.  A primary example is the case of format
   parameters for the RED payload, which are payload type numbers.
   Specific payload type numbers used in a latent configuration MAY be
   interpreted as suggestions to be used in any future offer based on
   the latent configuration, but they are not binding; the offeror
   and/or answerer may use any payload type numbers each deems
   appropriate.  Future extensions are also permitted.

   Latent configurations MUST be specified at the session level when
   they represent an additional media stream to those in the offer or
   answer.  If an acap: attribute is declared at the session level for
   use in a session-level lcfg line, it SHOULD NOT be used in a pcfg
   line at the media level unless it is to become a session-level
   attribute in the answer.

   Latent configurations placed at the media level represent
   configurations that are supportable, but are not desired for
   immediate use.  They represent potential future replacements for the
   stream description in which they appear.  For example, one party
   might make an offer with several potential configurations (different
   codecs, say).  The answer can be made with one particular
   configuration specified in the m= and "a=acfg" lines, and a number of
   "a=lcfg" lines, one for each "a=pcfg" line which could be supported
   by the answerer, but which was not chosen for this media stream.

Gilman, et al.           Expires August 28, 2008               [Page 22]

Internet-Draft                    CMED                     February 2008

   This permits the answerer to tell the offeror that, although a
   specific codec will be used in the current media session, it can also
   support one or more of the offered alternatives.  This could be
   useful, for example, in the case that PCMU audio encoding is chosen,
   but subsequent network congestion suggests that the media stream
   should be renegotiated to G729; the offeror will know in advance that
   the other party supports G729.

   The rules for replacement of base-level attributes by mcap and mscap
   attributes invoked within a latent configuration are the same as
   specified for invocation in a potential configuration (see section

3.6.1.  Cryptographic Attributes in Latent Configurations

   If a cryptographic attribute, such as the SDES "a=crypto:" attribute
   [RFC4568], is referenced by a latent configuration, any key material
   REQUIRED in the attribute, such as the SDES key/salt string, MUST be
   included.  The receiver of the lcfg: attribute MUST ignore any key
   material associated with the latent configuration.

3.7.  Offer/Answer Model Extensions

   In this section, we define extensions to the offer/answer model
   defined in RFC3264 [RFC3264] and [SDPCapNeg] to allow for media
   capabilities, bandwidth capabilities, and latent configurations to be
   used with the SDP Capability Negotiation framework.

   The [SDPCapNeg] provides a relatively compact means to offer the
   equivalent of an ordered list of alternative media stream
   configurations (as would be described by separate m= lines and
   associated attributes).  The attributes acap, bcap, mscap, mfcap and
   mcap are designed to map somewhat straightforwardly into equivalent
   m= lines and conventional attributes when invoked by a pcfg, lcfg, or
   acfg attribute with appropriate parameters.  The "a=pcfg:" lines,
   along with the m= line itself, represent offered media
   configurations.  The "a=lcfg:" lines represent alternative
   capabilities for future use.

3.7.1.  Generating the Initial Offer

   When an endpoint generates an initial offer and wants to use the
   functionality described in the current document, it should identify
   and define the codecs it can support via mcap, mfcap and mscap
   attributes.  The SDP media line(s) should be made up with the
   configuration to be used if the other party does not understand
   capability negotiations (by default, this is the least preferred
   configuration).  Typically, the media line configuration will contain

Gilman, et al.           Expires August 28, 2008               [Page 23]

Internet-Draft                    CMED                     February 2008

   the minimum acceptable capabilities.  The offer MUST include the
   level of capability negotiation extensions needed to support this
   functionality in a "creq" attribute.

   Preferred configurations for each media stream are identified
   following the media line.  The present offer may also include latent
   configuration (lcfg) attributes, at the session level, describing
   media streams and/or configurations the offeror is not now offering,
   but which it is willing to support in a future offer/answer exchange.
   A simple example might be the inclusion of a latent video
   configuration in an offer for an audio stream.

3.7.2.  Generating the Answer

   When the answering party receives the offer and if it supports the
   required capability negotiation extensions, it should select the
   most-preferred configuration it can support for each media stream,
   and build its answer accordingly.  The configuration selected for
   each accepted media stream is placed into the answer as a media line
   with associated parameters and attributes.  If a proposed
   configuration is chosen, the answer must include the supported
   extension attribute and each media stream for which a proposed
   configuration was chosen must contain an actual configuration (acfg)
   attribute to indicate just which pcfg attribute was used to build the
   answer.  The answer should also include any latent configurations the
   answerer can support, especially any configurations compatible with
   other proposed or latent configurations received in the offer.  The
   answerer should make note of those configurations it might wish to
   offer in the future.

3.7.3.  Offerer Processing of the Answer

   When the offeror receives the answer, it should make note of any
   capabilities and/or latent configurations for future use.  The media
   line(s) must be processed in the normal way to identify the media
   stream(s) accepted by the answer, if any.  The acfg attribute, if
   present, may be used to verify the proposed configuration used to
   form the answer, and to infer the lack of acceptability of higher-
   preference configurations that were not chosen.  Note that the base
   specification [SDPCapNeg] requires the answerer to choose the highest
   preference configuration it can support.

3.7.4.  Modifying the Session

   If, at a later time, one of the parties wishes to modify the
   operating parameters of a session, e.g., by adding a new media
   stream, or changing the properties used on an existing stream, it may
   do so via the mechanisms defined for offer/answer[RFC3264].  If the

Gilman, et al.           Expires August 28, 2008               [Page 24]

Internet-Draft                    CMED                     February 2008

   initiating party has remembered the codecs, potential configurations,
   and latent configurations announced by the other party in the earlier
   negotiation, it may use this knowledge to maximize the likelihood of
   a successful modification of the session.  Alternatively, it may
   perform a new capabilities exchange as part of the reconfiguration.

Gilman, et al.           Expires August 28, 2008               [Page 25]

Internet-Draft                    CMED                     February 2008

4.  Examples

   In this section, we provide examples showing how to use the Media
   Capabilities with the SDP Capability Negotiation.

4.1.  Alternative Codecs

   This example provide a choice of one of six variations of the
   adaptive multirate codec.  In this example, the default configuration
   as specified by the media line is the same as the most preferred
   configuration.  Each configuration uses a different payload type so
   the offeror can interpret early media.

             1. v=0
             2. o=- 25678 753849 IN IP4
             3. s=
             4. c=IN IP4
             5. t=0 0
             6. a=creq:med-v0
             7. m=audio 54321 RTP/AVP 96
             8. rtpmap:96 AMR/16000/1
             9. a=fmtp:96 mode-change-capability=1; max-red=220; mode-
             10. a=cmed:1,3,5 audio AMR/16000/1
             11. a=cmed:2,4,6 audio AMR/8000/1
             12. a=mfcap:1,2,3,4 mode-change-capability=1
             13. a=mfcap:5,6 mode-change-capability=2
             14. a=mfcap:1,2,3,5 max-red=220
             15. a=mfcap:3,4,5,6 octet-align=1
             16. a=mfcap:1,3,5 mode-set=0,2,4,7
             17. a=mfcap:2,4,6 mode-set=0,3,5,6
             18. pcfg:1 m=1 pt=1:96
             19. pcfg:2 m=2 pt=2:97
             20. pcfg:3 m=3 pt=3:98
             21. pcfg:4 m=4 pt=4:99
             22. pcfg:5 m=5 pt=5:100
             23. pcfg:6 m=6 pt=6:101

   In the above example, media capability 1 could have been excluded
   from the cmed declaration in line 10 and from the mfcap attributes in
   lines 12, 14, and 16.  The pcfg line 18 could then have been simply

   The next example offers a video stream with three options of H.264
   and 4 transports.  It also includes an audio stream with different
   audio qualities: four variations of AMR, or AC3.  The offer looks
   something like:

Gilman, et al.           Expires August 28, 2008               [Page 26]

Internet-Draft                    CMED                     February 2008

             o=- 25678 753849 IN IP4
             s=SDP Media NEG example
             c=IN IP4
             t=0 0
             m=video 49170 RTP/AVP 100
             c=IN IP4
             a=candidate 12345 1 UDP 9 49170 host
             a=candidate 23456 2 UDP 9 51540 host
             a=candidate 34567 1 UDP 7 41345 srflx raddr
    rport 49170
             a=candidate 45678 2 UDP 7 52567 srflx raddr
    rport 51540
             a=candidate 56789 1 UDP 3 49000 relay raddr
    rport 49170
             a=candidate 67890 2 UDP 3 49001 relay raddr
    rport 51540
             a=rtpmap:100 H264/90000
             a=fmtp:100 profile-level-id=42A01E; packetization-mode=2;
             sprop-interleaving-depth=45; sprop-deint-buf-req=64000;
             sprop-init-buf-time=102478; deint-buf-cap=128000
             a=tcap:1 RTP/SAVPF RTP/SAVP RTP/AVPF
             a=mcap:1-3,7-9 H264/90000
             a=mcap:4-6 rtx/90000
             a=mfcap:1-9 profile-level-id=42A01E
             a=mfcap:1-9 aMljiA==
             a=mfcap:1,4,7 packetization-mode=0
             a=mfcap:2,5,8 packetization-mode=1
             a=mfcap:3,6,9 packetization-mode=2
             a=mfcap:1-9 sprop-parameter-sets=Z0IACpZTBYmI
             a=mfcap:1,7 sprop-interleaving-depth=45; sprop-deint-buf-
             sprop-init-buf-time=102478; deint-buf-cap=128000
             a=mfcap:4 apt=100
             a=mfcap:5 apt=99
             a=mfcap:6 apt=98
             a=mfcap:4-6 rtx-time=3000
             a=mscap:1-6 rtcp-fb nack

Gilman, et al.           Expires August 28, 2008               [Page 27]

Internet-Draft                    CMED                     February 2008

             a=acap:1 crypto:1 AES_CM_128_HMAC_SHA1_80
             a=pcfg:1 t=1 m=1,4 a=1 pt=1:100,4:97
             a=pcfg:2 t=1 m=2,5 a=1 pt=2:99,4:96
             a=pcfg:3 t=1 m=3,6 a=1 pt=3:98,6:95
             a=pcfg:4 t=2 m=7 a=1 pt=7:100
             a=pcfg:5 t=2 m=8 a=1 pt=8:99
             a=pcfg:6 t=2 m=9 a=1 pt=9:98
             a=pcfg:7 t=3 m=1,3 pt=1:100,4:97
             a=pcfg:8 t=3 m=2,4 pt=2:99,4:96
             a=pcfg:9 t=3 m=3,6 pt=3:98,6:95
             m=audio 49176 RTP/AVP 101 100 99 98
             c=IN IP4
             a=candidate 12345 1 UDP 9 49176 host
             a=candidate 23456 2 UDP 9 51534 host
             a=candidate 34567 1 UDP 7 41348 srflx raddr
    rport 49176
             a=candidate 45678 2 UDP 7 52569 srflx raddr
    rport 51534
             a=candidate 56789 1 UDP 3 49002 relay raddr
    rport 49176
             a=candidate 67890 2 UDP 3 49003 relay raddr
    rport 51534
             a=rtpmap:98 AMR-WB/16000
             a=fmtp:98 octet-align=1; mode-change-capability=2
             a=rtpmap:99 AMR-WB/16000
             a=fmtp:99 octet-align=1; crc=1; mode-change-capability=2
             a=rtpmap:100 AMR-WB/16000/2
             a=fmtp:100 octet-align=1; interleaving=30
             a=rtpmap:101 AMR-WB+/72000/2
             a=fmtp:101 interleaving=50; int-delay=160000;
             a=mcap:14 ac3/48000/6
             a=acap:23 crypto:1 AES_CM_128_HMAC_SHA1_80
             a=tcap:4 RTP/SAVP
             a=pcfg:10 t=4 a=23
             a=pcfg:11 t=4 m=14 a=23 pt=14:102

Gilman, et al.           Expires August 28, 2008               [Page 28]

Internet-Draft                    CMED                     February 2008

4.2.  Latent Media Streams

   Consider a case in which the offeror can support either G.711 mu-law,
   or G.729B, along with DTMF telephony events for the 12 common
   touchtone signals, but is willing to support simple G.711 mu-law
   audio as a last resort.  In addition, the offeror wishes to announce
   its ability to support video in the future, but does not wish to
   offer a video stream at present.  The offer might look like the

             1. v=0
             2. o=- 25678 753849 IN IP4
             3. s=
             4. c=IN IP4
             5. t=0 0
             6. a=creq:med-v0
             7. a=mcap:10 H263-1998/90000
             8. a=mcap:11 H264/90000
             9. a=lcfg:10 mt=video m=10|11
             10. m=audio 23456 RTP/AVP 0
             11. a=rtpmap:0 PCMU/8000
             12. a=mcap:1 PCMU/8000
             13. a=mcap:2 g729/8000
             14. a=mcap:3 telephone-event/8000
             15. a=mfcap:3 0-11
             16. a=pcfg:1 m=1,3|2,3 pt=1:0,2:18,3:100

   Lines 7-9 announce support for H.263 and H.264 video (H.263
   preferred) for future reference.  Lines 10 and 11 offer an audio
   stream and provide the lowest precedence configuration (PCMU without
   any DTMF encoding).  Lines 12-14 define the media capabilities to be
   offered: PCMU, G729, and telephone-event.  Line 15 provides the
   format parameters for telephone-events, specifying the 12 commercial
   DTMF 'digits'.  Line 16 defines the most-preferred media
   configuration as PCMU plus DTMF events and the next-most-preferred
   configuration as G.729B plus DTMF events.

   If the answerer is able to support all the potential configurations,
   and also support H.263 video (but not H.264), it would reply with an
   answer like:

             1. v=0
             2. o=- 24351 621814 IN IP4
             3. s=
             4. c=IN IP4
             5. t=0 0
             6. a=csup:med-v0
             7. a=mcap:10 H263-1998/90000

Gilman, et al.           Expires August 28, 2008               [Page 29]

Internet-Draft                    CMED                     February 2008

             8. a=lcfg:1 mt=video m=10
             9. m=audio 54321 RTP/AVP 0 100
             10. a=rtpmap:0 PCMU/8000
             11. a=rtpmap:100 telephone-event/8000
             12. a=fmtp:100 0-11
             13. a=acfg:1 m=1,3 pt=1:0,3:100
             14. a=mcap:1 G729/8000
             15. a=mcap:2 telephone-event/8000
             16. a=mfcap:2 0-11
             17. a=lcfg:2 m=1,2 pt=1:18,2:100

   Lines 7 and 8 announce the capability to support H.263 video at a
   later time.  Lines 9-12 of the answer present the selected
   configuration for the media stream.  Line 13 identifies the potential
   configuration from which it was taken, and lines 14-17 announce the
   latent capability to support G.711 mu-law with DTMF events as well.
   If, at some later time, congestion becomes a problem in the network,
   either party may offer a reconfiguration of the media stream to use
   G.729 in order to reduce packet sizes.  Note that line 13 uses media
   capability numbering as provided in the original offer, whereas lines
   14-17 must use their own numbering.

Gilman, et al.           Expires August 28, 2008               [Page 30]

Internet-Draft                    CMED                     February 2008

5.  IANA Considerations

   The IANA is hereby requested to register the following new SDP

             Attribute name: mcap
             Long form name: media capability
             Type of attribute: Session-level and media-level
             Subject to charset: No
             Purpose: associate media capability number(s) with
             media subtype and encoding parameters
             Appropriate Values: See Section 3.3.1

             Attribute name: mfcap
             Long form name: media format capability
             Type of attribute: Session-level and media-level
             Subject to charset: No
             Purpose: associate media format attributes and
             parameters with media format capabilities
             Appropriate Values: See Section 3.3.2

             Attribute name: mscap
             Long form name: media-specific capability
             Type of attribute: Session-level and media-level
             Subject to charset: No
             Purpose: associate media-specific attributes and
             parameters with media capabilities
             Appropriate Values: See Section 3.3.3

             Attribute name: bcap
             Long form name: Bandwidth capability attribute
             Type of attribute: Session-level or media-level
             Subject to charset: No
             Purpose: associate bandwidth limitations with potential
             potential or latent configurations.
             Appropriate Values: See Section 3.3.4

             Attribute name: lcfg
             Long form name: Latent Configuration
             Type of attribute: Session-level or media-level
             Subject to charset: No
             Purpose: To announce supportable media configurations
             without offering them for immediate use.
             Appropriate Values: See Section 3.6

Gilman, et al.           Expires August 28, 2008               [Page 31]

Internet-Draft                    CMED                     February 2008

6.  Security Considerations

   The security considertions of [SDPCapNeg] apply for this document.
   No additional security considerations are introduced here.

Gilman, et al.           Expires August 28, 2008               [Page 32]

Internet-Draft                    CMED                     February 2008

7.  Changes from previous versions

7.1.  Changes from version 02

   This version contains several detail changes intended to simplify
   capability processing and mapping into conventional SDP media blocks.

   o  The "mcap" attribute is enhanced to include the role of the "ecap"
      attribute; the latter is eliminated.

   o  The "fcap" attribute has been renamed "mfcap".  New replacement
      rules vis-a-vis fmtp attributes in the base media specification
      have been added.

   o  A new "mscap" attribute is defined to handle the problem of
      attributes (other than rtpmap and fmtp) that are specific to a
      particular payload type.

   o  New rules for processing the mcap, mfcap, and mscap attributes,
      and overriding standard rtpmap, fmtp, or other media-specific
      attributes, are put forward to reduce the need to use the deletion
      option in the a= parameter of the potential configuration (pcfg)

   o  A new parameter, "mt=" is added to the latent configuration
      attribute (lcfg) to specify the media stream type (audio, video,
      etc.) when the lcfg is declared at the session level.

   o  The examples are expanded.

   o  Numerous typos and misspellings have been corrected.

7.2.  Changes from version 01

   The documents adds a new attribute for specifying bandwidth
   capability and a parametr to list in the potential configuration.
   Other changes are to align the document with the terminolgy and
   attribute names from draft-ietf-mmusic-sdp-capability-negotiation-07.
   The document also clarifies some previous open issues.

7.3.  Changes from version 00

   The major changes include taking out the "mcap" and "cptmap"
   parameter.  The mapping of payload type is now in the "pt" parameter
   of "pcfg".  Media subtype need to explictly definesd in the "cmed"
   attribute if referenced in the "pcfg"

Gilman, et al.           Expires August 28, 2008               [Page 33]

Internet-Draft                    CMED                     February 2008

8.  Acknowledgements

   This document 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
   herein: Cullen Jennings, Matt Lepinski, Joerg Ott, Colin Perkins, and
   Thomas Stach.

   We thank Ingemar Johansson and Magnus Westerlund for examples that
   stimulated this work.

Gilman, et al.           Expires August 28, 2008               [Page 34]

Internet-Draft                    CMED                     February 2008

9.  References

9.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.

              Andreasen, F., "SDP Capability Negotiation",
              draft-ietf-mmusic-sdp-capability-negotiation-08 (work in
              progress), December 2007.

9.2.  Informative References

              Wenger, S., Chandra, U., Westerlund, M., and B. Burman,
              "Codec Control Messages in the RTP Audio-Visual Profile
              with Feedback  (AVPF)", draft-ietf-avt-avpf-ccm-10 (work
              in progress), October 2007.

   [RFC3407]  Andreasen, F., "Session Description Protocol (SDP) Simple
              Capability Declaration", RFC 3407, October 2002.

   [RFC4568]  Andreasen, F., Baugher, M., and D. Wing, "Session
              Description Protocol (SDP) Security Descriptions for Media
              Streams", RFC 4568, July 2006.

   [RFC4867]  Sjoberg, J., Westerlund, M., Lakaniemi, A., and Q. Xie,
              "RTP Payload Format and File Storage Format for the
              Adaptive Multi-Rate (AMR) and Adaptive Multi-Rate Wideband
              (AMR-WB) Audio Codecs", RFC 4867, April 2007.

Gilman, et al.           Expires August 28, 2008               [Page 35]

Internet-Draft                    CMED                     February 2008

Authors' Addresses

   Robert R Gilman
   Broomfield, CO 80020


   Roni Even (editor)
   94 Derech Em Hamoshavot
   Petach Tikva  49130


   Flemming Andreasen
   Cisco Systems
   Edison, NJ


Gilman, et al.           Expires August 28, 2008               [Page 36]

Internet-Draft                    CMED                     February 2008

Full Copyright Statement

   Copyright (C) The IETF Trust (2008).

   This document is subject to the rights, licenses and restrictions
   contained in BCP 78, and except as set forth therein, the authors
   retain all their rights.

   This document and the information contained herein are provided on an

Intellectual Property

   The IETF takes no position regarding the validity or scope of any
   Intellectual Property Rights or other rights that might be claimed to
   pertain to the implementation or use of the technology described in
   this document or the extent to which any license under such rights
   might or might not be available; nor does it represent that it has
   made any independent effort to identify any such rights.  Information
   on the procedures with respect to rights in RFC documents can be
   found in BCP 78 and BCP 79.

   Copies of IPR disclosures made to the IETF Secretariat and any
   assurances of licenses to be made available, or the result of an
   attempt made to obtain a general license or permission for the use of
   such proprietary rights by implementers or users of this
   specification can be obtained from the IETF on-line IPR repository at

   The IETF invites any interested party to bring to its attention any
   copyrights, patents or patent applications, or other proprietary
   rights that may cover technology that may be required to implement
   this standard.  Please address the information to the IETF at


   Funding for the RFC Editor function is provided by the IETF
   Administrative Support Activity (IASA).

Gilman, et al.           Expires August 28, 2008               [Page 37]