draft-ietf-mmusic-sdp-miscellaneous-caps-07.txt   rfc7006.txt 
MMUSIC WG M. Garcia-Martin Internet Engineering Task Force (IETF) M. Garcia-Martin
Internet-Draft Ericsson Request for Comments: 7006 Ericsson
Intended status: Standards Track S. Veikkolainen Category: Standards Track S. Veikkolainen
Expires: January 11, 2014 Nokia ISSN: 2070-1721 Nokia
R. Gilman R. Gilman
September 2013
July 10, 2013 Miscellaneous Capabilities Negotiation in the
Session Description Protocol (SDP)
Miscellaneous Capabilities Negotiation in the Session Description
Protocol (SDP)
draft-ietf-mmusic-sdp-miscellaneous-caps-07
Abstract Abstract
SDP has been extended with a capability negotiation mechanism The Session Description Protocol (SDP) has been extended with a
framework that allows the endpoints to negotiate transport protocols capability negotiation mechanism framework that allows the endpoints
and attributes. This framework has been extended with a media to negotiate transport protocols and attributes. This framework has
capabilities negotiation mechanism that allows endpoints to negotiate been extended with a media capabilities negotiation mechanism that
additional media-related capabilities. This negotiation is embedded allows endpoints to negotiate additional media-related capabilities.
into the widely-used SDP offer/answer procedures. This negotiation is embedded into the widely used SDP offer/answer
procedures.
This memo extends the SDP capability negotiation framework to allow This memo extends the SDP capability negotiation framework to allow
endpoints to negotiate three additional SDP capabilities. In endpoints to negotiate three additional SDP capabilities. In
particular, this memo provides a mechanism to negotiate bandwidth particular, this memo provides a mechanism to negotiate bandwidth
('b=' line), connection data ('c=' line), and session or media titles ("b=" line), connection data ("c=" line), and session or media titles
('i=' line for each session or media). ("i=" line for each session or media).
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This is an Internet Standards Track document.
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months This document is a product of the Internet Engineering Task Force
and may be updated, replaced, or obsoleted by other documents at any (IETF). It represents the consensus of the IETF community. It has
time. It is inappropriate to use Internet-Drafts as reference received public review and has been approved for publication by the
material or to cite them other than as "work in progress." Internet Engineering Steering Group (IESG). Further information on
Internet Standards is available in Section 2 of RFC 5741.
This Internet-Draft will expire on January 11, 2014. 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/rfc7006.
Copyright Notice Copyright Notice
Copyright (c) 2013 IETF Trust and the persons identified as the Copyright (c) 2013 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
skipping to change at page 2, line 19 skipping to change at page 2, line 22
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction ....................................................3
2. Conventions Used in This Document . . . . . . . . . . . . . . 3 2. Conventions Used in This Document ...............................3
3. Protocol Description . . . . . . . . . . . . . . . . . . . . 3 3. Protocol Description ............................................4
3.1. Extensions to SDP . . . . . . . . . . . . . . . . . . . . 3 3.1. Extensions to SDP ..........................................4
3.1.1. Bandwidth Capability . . . . . . . . . . . . . . . . 5 3.1.1. Bandwidth Capability ................................6
3.1.2. Connection Data Capability . . . . . . . . . . . . . 8 3.1.2. Connection Data Capability ..........................8
3.1.3. Title Capability . . . . . . . . . . . . . . . . . . 12 3.1.3. Title Capability ...................................12
3.2. Session Level versus Media Level . . . . . . . . . . . . 16 3.2. Session Level versus Media Level ..........................16
3.3. Offer/Answer model extensions . . . . . . . . . . . . . . 16 3.3. Offer/Answer Model Extensions .............................17
3.3.1. Generating the Initial Offer . . . . . . . . . . . . 16 3.3.1. Generating the Initial Offer .......................17
3.3.2. Generating the Answer . . . . . . . . . . . . . . . . 17 3.3.2. Generating the Answer ..............................17
3.3.3. Offerer Processing of the Answer . . . . . . . . . . 17 3.3.3. Offerer Processing of the Answer ...................18
3.3.4. Modifying the Session . . . . . . . . . . . . . . . . 17 3.3.4. Modifying the Session ..............................18
4. Field Replacement Rules . . . . . . . . . . . . . . . . . . . 17 4. Field Replacement Rules ........................................18
5. Security Considerations . . . . . . . . . . . . . . . . . . . 18 5. Security Considerations ........................................18
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 18 6. IANA Considerations ............................................19
6.1. New SDP Attributes . . . . . . . . . . . . . . . . . . . 19 6.1. New SDP Attributes ........................................19
6.2. New Option Tags . . . . . . . . . . . . . . . . . . . . . 19 6.2. New Option Tags ...........................................20
6.3. New SDP Capability Negotiation Configuration Parameters 20 6.3. New SDP Capability Negotiation Configuration Parameters ...20
7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 20 7. Acknowledgments ................................................20
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 20 8. References .....................................................20
8.1. Normative References . . . . . . . . . . . . . . . . . . 20 8.1. Normative References ......................................20
8.2. Informative References . . . . . . . . . . . . . . . . . 20 8.2. Informative References ....................................21
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 21
1. Introduction 1. Introduction
The Session Description Protocol (SDP) [RFC4566] is intended for The Session Description Protocol (SDP) [RFC4566] is intended for
describing multimedia sessions for the purposes of session describing multimedia sessions for the purposes of session
announcement, session invitation, and other forms of multimedia announcement, session invitation, and other forms of multimedia
session initiation. SDP has been extended with a SDP Capability session initiation. SDP has been extended with an SDP Capability
Negotiation Mechanism Framework [RFC5939] which allows the endpoints Negotiation Mechanism Framework [RFC5939] that allows the endpoints
to negotiate capabilities, such as support for Real-time Transport to negotiate capabilities, such as support for the Real-time
Protocol (RTP) [RFC3550] and Secure Real-time Transport Protocol Transport Protocol (RTP) [RFC3550] and the Secure Real-time Transport
(SRTP) [RFC3711]. The SDP Media Capabilities Negotiation [RFC6871] Protocol (SRTP) [RFC3711]. The SDP Media Capabilities Negotiation
provides negotiation capabilities to media lines as well. [RFC6871] provides negotiation capabilities to media lines as well.
The capability negotiation is embedded into the widely used SDP offer The capability negotiation is embedded into the widely used SDP
/answer procedure [RFC3264]. This memo provides the means to offer/answer procedure [RFC3264]. This memo provides the means to
negotiate further capabilities than those specified in the SDP negotiate further capabilities than those specified in the SDP
Capability Negotiation Mechanism Framework [RFC5939] and the SDP Capability Negotiation Mechanism Framework [RFC5939] and the SDP
Media Capabilities Negotiation [RFC6871]. In particular, this memo Media Capabilities Negotiation [RFC6871]. In particular, this memo
provides a mechanism to negotiate bandwidth ('b='), connection data provides a mechanism to negotiate bandwidth ("b="), connection data
('c='), and session or media titles ('i='). ("c="), and session or media titles ("i=").
Since the three added capabilities are independent, it is not Since the three added capabilities are independent, it is not
expected that implementations will necessarily support all of them at expected that implementations will necessarily support all of them at
the same time. Instead, it is expected that applications will choose the same time. Instead, it is expected that applications will choose
their needed capability for their specific purpose. Due to this, we their needed capability for their specific purpose. For this reason,
are writing the normative part pertaining to each capability in a the normative part pertaining to each capability is in a self-
self-contained section: Section 3.1.1 describes the bandwidth contained section: Section 3.1.1 describes the bandwidth capability
capability extension, Section 3.1.2 describes the connection data extension, Section 3.1.2 describes the connection data capability
capability extension, and Section 3.1.3 describes the title extension, and Section 3.1.3 describes the title capability
capability extension. Separate SDP capability negotiation option extension. Separate SDP Capability Negotiation option tags are
tags are defined for each capability, allowing endpoints to indicate defined for each capability, allowing endpoints to indicate and/or
and/or require support for these extensions according to procedures require support for these extensions according to procedures defined
defined in SDP Capability Negotiation [RFC5939]. in SDP Capability Negotiation [RFC5939].
2. Conventions Used in This Document 2. Conventions Used in This Document
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in BCP 14, RFC 2119 document are to be interpreted as described in BCP 14, RFC 2119
[RFC2119] and indicate requirement levels for compliant [RFC2119] and indicate requirement levels for compliant
implementations. implementations.
3. Protocol Description 3. Protocol Description
3.1. Extensions to SDP 3.1. Extensions to SDP
The SDP Capability Negotiation Framework [RFC5939] and the SDP Media The SDP Capability Negotiation Framework [RFC5939] and the SDP Media
Capabilities Negotiation [RFC6871] specify attributes for negotiating Capabilities Negotiation [RFC6871] specify attributes for negotiating
SDP capabilities. These documents specify new attributes (e.g., SDP capabilities. These documents specify new attributes (e.g.,
'acap', 'tcap', 'rmcap', 'omcap') for achieving their purpose. In "acap", "tcap", "rmcap", and "omcap") for achieving their purpose.
this document we define three new additional capability attributes In this document, we define three new additional capability
for SDP lines of the general form: attributes for SDP lines of the general form:
type=value type=value
for types 'b', 'c', and 'i'. The corresponding capability attributes for types "b", "c", and "i". The corresponding capability attributes
are respectively defined as: are respectively defined as:
o 'bcap': bandwidth capability o "bcap": bandwidth capability
o 'ccap': connection data capability o "ccap": connection data capability
o 'icap': title capability o "icap": title capability
From the sub-rules of attribute ('a=') line in SDP [RFC4566], SDP From the sub-rules of the attribute ("a=") line in SDP [RFC4566], SDP
attributes are of the form: attributes are of the form:
attribute = (att-field ":" att-value) / att-field attribute = (att-field ":" att-value) / att-field
att-field = token att-field = token
att-value = byte-string att-value = byte-string
Capability attributes use only the 'att-field:att-value' form. Capability attributes use only the "att-field:att-value" form.
The new capabilities may be referenced in potential configurations The new capabilities may be referenced in potential configurations
('a=pcfg') or in latent configurations ('a=lcfg'), as productions ("a=pcfg") or in latent configurations ("a=lcfg") as productions
conforming to the <extension-config-list> as respectively defined in conforming to the <extension-config-list>, as respectively defined in
RFC 5939 [RFC5939] and RFC6871 [RFC6871]. RFC 5939 [RFC5939] and RFC 6871 [RFC6871].
extension-config-list = ["+"] ext-cap-name "=" ext-cap-list extension-config-list = ["+"] ext-cap-name "=" ext-cap-list
ext-cap-name = 1*(ALPHA / DIGIT) ext-cap-name = 1*(ALPHA / DIGIT)
; ALPHA and DIGIT defined in RFC 5234 ; ALPHA and DIGIT defined in RFC 5234
ext-cap-list = 1*VCHAR ; VCHAR defined in RFC 5234 ext-cap-list = 1*VCHAR ; VCHAR defined in RFC 5234
The optional "+" is used to indicate that the extension is mandatory The optional "+" is used to indicate that the extension is mandatory
and MUST be supported in order to use that particular configuration. and MUST be supported in order to use that particular configuration.
The new capabilities may also be referenced in actual configurations The new capabilities may also be referenced in actual configurations
('a=acfg') as productions conforming to the <sel-extension-config> ("a=acfg") as productions conforming to the <sel-extension-config>
defined in RFC 5939 [RFC5939]. defined in RFC 5939 [RFC5939].
sel-extension-config = ext-cap-name "=" 1*VCHAR sel-extension-config = ext-cap-name "=" 1*VCHAR
The specific parameters are defined in the individual description of The specific parameters are defined in the individual description of
each capability, below. each capability below.
The 'bcap', 'ccap', and 'icap' capability attributes can be provided The "bcap", "ccap", and "icap" capability attributes can be provided
at the SDP session and/or media level. According to the SDP at the SDP session and/or media level. According to the SDP
Capability Negotiation [RFC5939], each extension capability must Capability Negotiation [RFC5939], each extension capability must
specify the implication of making it part of a configuration at the specify the implication of making it part of a configuration at the
media level. media level.
According to SDP [RFC4566], 'b=', 'c=', and 'i=' lines may appear According to SDP [RFC4566], "b=", "c=", and "i=" lines may appear at
either at session or media level. In line with this, the 'bcap', either session or media level. In line with this, the "bcap",
'ccap', and 'icap' capability attributes, when declared at session "ccap", and "icap" capability attributes, when declared at session
level, are to be interpreted as-if that attribute was provided with level, are to be interpreted as if that attribute was provided with
that value at the session level. The 'bcap', 'ccap' and 'icap' that value at the session level. The "bcap", "ccap", and "icap"
capability attributes declared at media level, are to be interpreted capability attributes declared at media level are to be interpreted
as-if that capability attribute was declared at the media level. as if that capability attribute was declared at the media level.
For example, extending the example in [RFC6871] with 'icap' and For example, extending the example in [RFC6871] with "icap" and
'bcap' capability attributes, we get the following SDP: "bcap" capability attributes, we get the following SDP:
v=0 v=0
o=- 25678 753849 IN IP4 192.0.2.1 o=- 25678 753849 IN IP4 192.0.2.1
s= s=
c=IN IP4 192.0.2.1 c=IN IP4 192.0.2.1
t=0 0 t=0 0
a=bcap:1 CT:200 a=bcap:1 CT:200
a=icap:1 Video conference a=icap:1 Video conference
m=audio 54320 RTP/AVP 0 m=audio 54320 RTP/AVP 0
a=rmcap:1 L16/8000/1 a=rmcap:1 L16/8000/1
a=rmcap:2 L16/16000/2 a=rmcap:2 L16/16000/2
a=pcfg:1 m=1|2 pt=1:99,2:98 a=pcfg:1 m=1|2 pt=1:99,2:98
m=video 66544 RTP/AVP 100 m=video 66544 RTP/AVP 100
a=rmcap:3 H263-1998/90000 a=rmcap:3 H263-1998/90000
a=rtpmap:100 H264/90000 a=rtpmap:100 H264/90000
a=pcfg:10 m=3 pt=3:101 b=1 i=1 a=pcfg:10 m=3 pt=3:101 b=1 i=1
Figure 1: Example SDP offer with bcap and icap defined at session Figure 1: Example SDP offer with bcap and icap
level efined at session level
The above SDP defines one PCMU audio stream and one H.264 video The above SDP defines one PCMU audio stream and one H.264 video
stream. It also defines two RTP-based media capabilities ('rmcap' stream. It also defines two RTP-based media capabilities ("rmcap"
numbered 1 and 2), using L16 audio at 8 kbps and 16 kbps, numbered 1 and 2), using 16-bit linear (L16) audio at 8 kbps and 16
respectively, as well as an RTP-based media capability for H.263 kbps, respectively, as well as an RTP-based media capability for
video ('rmcap' numbered 3). The RTP-based media capabilities all H.263 video ("rmcap" numbered 3). The RTP-based media capabilities
appear at the media level. The example also contains a single all appear at the media level. The example also contains a single
bandwidth capability ('bcap') and a single title capability ('icap'), bandwidth capability ("bcap") and a single title capability ("icap"),
both defined at session level. According to the definition above, both defined at session level. According to the definition above,
when the capabilities defined in the 'bcap' and 'icap' attributes are when the capabilities defined in the "bcap" and "icap" attributes are
referenced from the potential configuration, in the resulting SDP referenced from the potential configuration, in the resulting SDP
they are to be interpreted as session level attributes (but the RTP- they are to be interpreted as session-level attributes (but the
based media capabilities are to be interpreted as media level RTP-based media capabilities are to be interpreted as media-level
attributes). attributes).
3.1.1. Bandwidth Capability 3.1.1. Bandwidth Capability
According to RFC 4566 [RFC4566] the bandwidth field denotes the
proposed bandwidth to be used by the session or media. In this memo According to RFC 4566 [RFC4566], the bandwidth field denotes the
we specify the bandwidth capability attribute which can also appear proposed bandwidth to be used by the session or media. In this memo,
we specify the bandwidth capability attribute, which can also appear
at the SDP session and/or media level. The bandwidth field is at the SDP session and/or media level. The bandwidth field is
specified in RFC 4566 [RFC4566] with the following syntax: specified in RFC 4566 [RFC4566] with the following syntax:
b=<bwtype>:<bandwidth> b=<bwtype>:<bandwidth>
where <bwtype> is an alphanumeric modifier giving the meaning of the where <bwtype> is an alphanumeric modifier giving the meaning of the
<bandwidth> figure. <bandwidth> figure.
In this document, we define a new capability attribute: the Bandwidth In this document, we define a new capability attribute: the bandwidth
capability attribute 'bcap'. This attribute lists bandwidth as capability attribute "bcap". This attribute lists bandwidth as
capabilities according to the following definition: capabilities, according to the following definition:
"a=bcap:" bw-cap-num 1*WSP bwtype ":" bandwidth CRLF "a=bcap:" bw-cap-num 1*WSP bwtype ":" bandwidth CRLF
where <bw-cap-num> is a unique integer within all the bandwidth where <bw-cap-num> is a unique integer within all the bandwidth
capabilities in the entire SDP, which is used to number the bandwidth capabilities in the entire SDP, which is used to number the bandwidth
capability, and can take a value between 1 and 2^31-1 (both capability and can take a value between 1 and 2^31-1 (both included).
included). The other elements are as defined for the 'b=' field in The other elements are as defined for the "b=" field in SDP
SDP [RFC4566]. [RFC4566].
This format satisfies the general attribute production rules in SDP This format satisfies the general attribute production rules in SDP
[RFC4566] according to the following Augmented Backus-Naur Form [RFC4566], according to the following Augmented Backus-Naur Form
(ABNF) [RFC5234] syntax: (ABNF) [RFC5234] syntax:
att-field =/ "bcap" att-field =/ "bcap"
att-value =/ bw-cap-num 1*WSP bwtype ":" bandwidth att-value =/ bw-cap-num 1*WSP bwtype ":" bandwidth
bw-cap-num = 1*10(DIGIT) ; DIGIT defined in RFC 5234 bw-cap-num = 1*10(DIGIT) ; DIGIT defined in RFC 5234
Figure 2: Syntax of the bcap attribute Figure 2: Syntax of the "bcap" attribute
Negotiation of bandwidth per media stream can be useful when Negotiation of bandwidth per media stream can be useful when
negotiating media encoding capabilities with different bandwidths. negotiating media encoding capabilities with different bandwidths.
3.1.1.1. Configuration Parameters 3.1.1.1. Configuration Parameters
The SDP Capability Negotiation Framework [RFC5939] provides for the The SDP Capability Negotiation Framework [RFC5939] provides for the
existence of the 'pcfg' and 'acfg' attributes. The concept is existence of the "pcfg" and "acfg" attributes. The concept is
extended by the SDP Media Capabilities Negotiation [RFC6871] with an extended by the SDP Media Capabilities Negotiation [RFC6871] with an
'lcfg' attribute that conveys latent configurations. "lcfg" attribute that conveys latent configurations.
Extensions to the 'pcfg' and 'lcfg' attributes are defined through Extensions to the "pcfg" and "lcfg" attributes are defined through
<extension-config-list>, and extensions to the 'acfg' attribute are <extension-config-list>, and extensions to the "acfg" attribute are
defined through the <sel-extension-config> as defined in the SDP defined through the <sel-extension-config>, as defined in the SDP
Capability Negotiation [RFC5939]. Capability Negotiation [RFC5939].
In this document we extend the <extension-config-list> field to be In this document, we extend the <extension-config-list> field to be
able to convey lists of bandwidth capabilities in latent or potential able to convey lists of bandwidth capabilities in latent or potential
configurations, according to the following Augmented Backus-Naur Form configurations, according to the following Augmented Backus-Naur Form
(ABNF) [RFC5234] syntax: (ABNF) [RFC5234] syntax:
extension-config-list =/ bandwidth-config-list extension-config-list =/ bandwidth-config-list
bandwidth-config-list = ["+"] "b=" bw-cap-list *(BAR bw-cap-list) bandwidth-config-list = ["+"] "b=" bw-cap-list *(BAR bw-cap-list)
; BAR defined in RFC 5939 ; BAR defined in RFC 5939
bw-cap-list = bw-cap-num *("," bw-cap-num) bw-cap-list = bw-cap-num *("," bw-cap-num)
bw-cap-num = 1*10(DIGIT) ; DIGIT defined in RFC 5234 bw-cap-num = 1*10(DIGIT) ; DIGIT defined in RFC 5234
Figure 3: Syntax of the bandwidth parameter in 'lcfg' and 'pcfg' Figure 3: Syntax of the bandwidth parameter
attributes in "lcfg" and "pcfg" attributes
Each bandwidth capability configuration is a comma-separated list of Each bandwidth capability configuration is a comma-separated list of
bandwidth capability attribute numbers where <bw-cap-num> refers to bandwidth capability attribute numbers where <bw-cap-num> refers to
the <bw-cap-num> bandwidth capability numbers defined explicitly the <bw-cap-num> bandwidth capability numbers defined explicitly
earlier in this document, and hence MUST be between 1 and 2^31-1 earlier in this document, and hence MUST be between 1 and 2^31-1
(both included). Alternative bandwidth configurations are separated (both included). Alternative bandwidth configurations are separated
by a vertical bar ("|"). by a vertical bar ("|").
The above syntax is very flexible, allowing referencing to multiple The above syntax is very flexible, allowing referencing to multiple
'b=' lines per configuration, even for the same <bwtype>. While the "b=" lines per configuration, even for the same <bwtype>. While the
need for such definitions is not seen, we have not restricted this, need for such definitions is not seen, we have not restricted this,
as it is not restricted in SDP [RFC4566] either. as it is not restricted in SDP [RFC4566] either.
The bandwidth parameter to the actual configuration attribute The bandwidth parameter to the actual configuration attribute
('a=acfg') is formulated as a <sel-extension-config> with ("a=acfg") is formulated as a <sel-extension-config> with
ext-cap-name = "b" ext-cap-name = "b"
hence hence
sel-extension-config =/ sel-bandwidth-config sel-extension-config =/ sel-bandwidth-config
sel-bandwidth-config = "b=" bw-cap-list ; bw-cap-list as above. sel-bandwidth-config = "b=" bw-cap-list ; bw-cap-list as above.
Figure 4: Syntax of the bandwidth parameter in 'acfg' attributes Figure 4: Syntax of the bandwidth parameter in "acfg" attributes
3.1.1.2. Option Tag
3.1.1.2. Option tag
The SDP Capability Negotiation Framework [RFC5939] allows for The SDP Capability Negotiation Framework [RFC5939] allows for
capability negotiation extensions to be defined. Associated with capability negotiation extensions to be defined. Associated with
each such extension is an option tag that identifies the extension in each such extension is an option tag that identifies the extension in
question. Hereby, we define a new option tag "bcap-v0" that question. Hereby, we define a new option tag "bcap-v0" that
identifies support for the bandwidth capability. The endpoints using identifies support for the bandwidth capability. The endpoints using
the 'bcap' capability attribute SHOULD add the option tag to other the "bcap" capability attribute SHOULD add the option tag to other
existing option tags present in the 'csup' and 'creq' attributes in existing option tags present in the "csup" and "creq" attributes in
SDP, according to the procedures defined in the SDP Capability SDP, according to the procedures defined in the SDP Capability
Negotiation Framework [RFC5939]. Negotiation Framework [RFC5939].
3.1.2. Connection Data Capability 3.1.2. Connection Data Capability
According to SDP [RFC4566], the connection data field in SDP contains According to SDP [RFC4566], the connection data field in SDP contains
the connection data, and it has the following syntax: the connection data, and it has the following syntax:
c=<nettype> <addrtype> <connection-address> c=<nettype> <addrtype> <connection-address>
where <nettype> indicates the network type, <addrtype> indicates the where <nettype> indicates the network type, <addrtype> indicates the
address type, and the <connection-address> is the connection address, address type, and the <connection-address> is the connection address,
which is dependent on the address type. which is dependent on the address type.
At the moment, network types already defined include "IN", which At the moment, network types already defined include "IN", which
indicates Internet network type, and "ATM" (see RFC 3108 [RFC3108]), indicates Internet network type, and "ATM" (see RFC 3108 [RFC3108]),
used for describing Asynchronous Transfer Mode (ATM) bearer used for describing Asynchronous Transfer Mode (ATM) bearer
connections. The Circuit-Switched (CS) descriptions in SDP document connections. The Circuit-Switched (CS) descriptions in the SDP
[I-D.ietf-mmusic-sdp-cs] adds a "PSTN" network type for expressing a document [SDP-CS] adds a "PSTN" network type for expressing a Public
Public Switched Telephone Network (PSTN) circuit switch. Switched Telephone Network (PSTN) circuit switch.
SDP [RFC4566] permits specification of connection data at the SDP SDP [RFC4566] permits specification of connection data at the SDP
session and/or media level. In order to permit negotiation of session and/or media level. In order to permit negotiation of
connection data at the media level, we define the connection data connection data at the media level, we define the connection data
capability attribute ('a=ccap') in the form: capability attribute ("a=ccap") in the form:
"a=ccap:" conn-cap-num 1*WSP nettype SP addrtype SP connection- "a=ccap:" conn-cap-num 1*WSP nettype SP addrtype SP
address CRLF connection-address CRLF
where <conn-cap-num> is a unique integer within all the connection where <conn-cap-num> is a unique integer within all the connection
capabilities in the entire SDP, which is used to identify the capabilities in the entire SDP, which is used to identify the
connection data capability, and can take a value between 1 and 2^31-1 connection data capability and can take a value between 1 and 2^31-1
(both included). The other elements are as defined in [RFC4566]. (both included). The other elements are as defined in [RFC4566].
This format corresponds to the [RFC4566] attribute production rules This format corresponds to the [RFC4566] attribute production rules,
according to the following Augmented Backus-Naur Form (ABNF) according to the following Augmented Backus-Naur Form (ABNF)
[RFC5234] syntax: [RFC5234] syntax:
att-field =/ "ccap" att-field =/ "ccap"
att-value =/ conn-cap-num 1*WSP nettype SP addrtype att-value =/ conn-cap-num 1*WSP nettype SP addrtype
SP connection-address SP connection-address
conn-cap-num = 1*10(DIGIT) ; 1 to 2^31-1, inclusive
conn-cap-num = 1*10(DIGIT) ; 1 to 2^31-1, inclusive ; DIGIT defined in RFC 5234
; DIGIT defined in RFC 5234
Figure 5: Syntax of the ccap attribute Figure 5: Syntax of the "ccap" attribute
The 'ccap' capability attribute allows for expressing alternative The "ccap" capability attribute allows for expressing alternative
connections address ("c=") lines in SDP as part of the SDP capability connections address ("c=") lines in SDP as part of the SDP Capability
negotiation process. One of the primary use cases for this is Negotiation process. One of the primary use cases for this is
offering alternative connection addresses where the <nettype> is "IN" offering alternative connection addresses where the <nettype> is "IN"
or "PSTN", i.e. selecting between IP based bearer or a circuit- or "PSTN", i.e., selecting between an IP-based bearer or a
switched bearer. circuit-switched bearer.
By supporting the "IN" <nettype>, the 'ccap' attribute enables the By supporting the "IN" <nettype>, the "ccap" attribute enables the
signaling of multiple IPv4 and IPv6 addresses, however the Standards signaling of multiple IPv4 and IPv6 addresses; however, the Standards
Track mechanism for negotiation of alternative IP addresses in SDP is Track mechanism for negotiation of alternative IP addresses in SDP is
Interactive Connectivity Establishment (ICE) [RFC5245]. The 'ccap' Interactive Connectivity Establishment (ICE) [RFC5245]. The "ccap"
attribute does not change that and hence the combined set of actual attribute does not change that; hence, the combined set of actual and
and potential configurations (as defined in [RFC5939]) for any given potential configurations (as defined in [RFC5939]) for any given
media description MUST NOT use the 'ccap' attribute to negotiate more media description MUST NOT use the "ccap" attribute to negotiate more
than one address with an IN network type (i.e., it is not permissible than one address with an IN network type (i.e., it is not permissible
to select between "IP4" and "IP6" address families or different IP to select between "IPv4" and "IPv6" address families or different IP
addresses within the same IP address family. addresses within the same IP address family.
Figure 6 is an example of an SDP offer that includes a 'ccap' Figure 6 is an example of an SDP offer that includes a "ccap"
capability attribute. An audio stream can be setup with an RTP flow capability attribute. An audio stream can be set up with an RTP flow
or establishing a circuit-switched audio stream: or by establishing a circuit-switched audio stream:
v=0 v=0
o=2987933123 2987933123 IN IP4 198.51.100.7 o=2987933123 2987933123 IN IP4 198.51.100.7
s=- s=-
t=0 0 t=0 0
a=creq:med-v0,ccap-v0 a=creq:med-v0,ccap-v0
m=audio 38902 RTP/AVP 0 8 m=audio 38902 RTP/AVP 0 8
c=IN IP4 198.51.100.7 c=IN IP4 198.51.100.7
a=ccap:1 PSTN E164 +15555556666 a=ccap:1 PSTN E164 +15555556666
a=tcap:2 PSTN a=tcap:2 PSTN
a=omcap:1 - a=omcap:1 -
a=acap:1 setup:actpass a=acap:1 setup:actpass
a=acap:2 connection:new a=acap:2 connection:new
a=acap:3 cs-correlation:callerid:+15555556666 a=acap:3 cs-correlation:callerid:+15555556666
a=pcfg:1 c=1 t=2 m=1 a=1,2,3 a=pcfg:1 c=1 t=2 m=1 a=1,2,3
Figure 6: Example SDP offer with a ccap attribute Figure 6: Example SDP offer with a "ccap" attribute
The example in Figure 6 represents an SDP offer indicating an audio The example in Figure 6 represents an SDP offer indicating an audio
flow using RTP, such as the one represented in Figure 7 or an audio flow using RTP, such as the one represented in Figure 7, or an audio
flow using a circuit-switched connection, such as the one represented flow using a circuit-switched connection, such as the one represented
in Figure 8. in Figure 8.
v=0 v=0
o=2987933123 2987933123 IN IP4 198.51.100.7 o=2987933123 2987933123 IN IP4 198.51.100.7
s=- s=-
t=0 0 t=0 0
m=audio 38902 RTP/AVP 0 8 m=audio 38902 RTP/AVP 0 8
c=IN IP4 198.51.100.7 c=IN IP4 198.51.100.7
Figure 7: Equivalent SDP offer with the RTP flow Figure 7: Equivalent SDP offer with the RTP flow
v=0 v=0
o=2987933123 2987933123 IN IP4 198.51.100.7 o=2987933123 2987933123 IN IP4 198.51.100.7
s=- s=-
t=0 0 t=0 0
m=audio 9 PSTN - m=audio 9 PSTN -
c=PSTN E164 +15555556666 c=PSTN E164 +15555556666
a=setup:actpass a=setup:actpass
a=connection:new a=connection:new
a=cs-correlation:callerid:+15555556666 a=cs-correlation:callerid:+15555556666
Figure 8: Equivalent SDP offer with the circuit-switched flow Figure 8: Equivalent SDP offer with the circuit-switched flow
This document does not define any mechanism for negotiating or This document does not define any mechanism for negotiating or
describing different port numbers and hence the port number from the describing different port numbers; hence, the port number from the
"m=" line MUST be used by default. Exceptions to this default can be "m=" line MUST be used by default. Exceptions to this default can be
provided by extension mechanisms or network type specific rules. provided by extension mechanisms or network type specific rules.
This draft defines an exception when the network type is "PSTN", in This document defines an exception when the network type is "PSTN",
which case the port number is replaced with 9 (the "discard" port) as in which case the port number is replaced with 9 (the "discard"
described in Session Decription Protocol (SDP) Extension For Setting port), as described in "Session Description Protocol (SDP) Extension
Up Audio and Video Media Streams over Circuit-Switched Bearers in the for Setting Audio and Video Media Streams over Circuit-Switched
Public Switched Telephone Network (PSTN) [I-D.ietf-mmusic-sdp-cs]. Bearers in the Public Switched Telephone Network (PSTN)" [SDP-CS].
An endpoint offering alternative IP and PSTN bearers MUST include the An endpoint offering alternative IP and PSTN bearers MUST include the
IP media description in the actual configuration (IP address in the IP media description in the actual configuration (IP address in the
"c=" line and port number in the "m=" line), and the PSTN media "c=" line and port number in the "m=" line) and the PSTN media
description in the potential configuration. description in the potential configuration.
Exceptions for other network types, such as for the "ATM" network Exceptions for other network types, such as for the "ATM" network
type defined in [RFC3108], require additional specifications. type defined in [RFC3108], require additional specifications.
3.1.2.1. Configuration Parameters 3.1.2.1. Configuration Parameters
The SDP Capability Negotiation Framework [RFC5939] provides for the The SDP Capability Negotiation Framework [RFC5939] provides for the
existence of the 'pcfg' and 'acfg' attributes, which can convey one existence of the "pcfg" and "acfg" attributes, which can convey one
or more configurations to be negotiated. The concept is extended by or more configurations to be negotiated. The concept is extended by
the SDP Media Capabilities Negotiation [RFC6871] with an 'lcfg' the SDP Media Capabilities Negotiation [RFC6871] with an "lcfg"
attribute that conveys latent configurations. attribute that conveys latent configurations.
In this document we define a <connection-config> parameter to be used In this document, we define a <connection-config> parameter to be
to specify a connection data capability in a potential or latent used to specify a connection data capability in a potential or latent
configuration attribute. The parameter follows the form of an configuration attribute. The parameter follows the form of an
<extension-config-list>, with <extension-config-list> with
ext-cap-name = "c" ext-cap-name = "c"
ext-cap-list = conn-cap-list ext-cap-list = conn-cap-list
where, according to the following Augmented Backus-Naur Form (ABNF) where, according to the following Augmented Backus-Naur Form (ABNF)
[RFC5234] syntax: [RFC5234] syntax:
extension-config-list =/ conn-config-list extension-config-list =/ conn-config-list
conn-config-list = ["+"] "c=" conn-cap-list conn-config-list = ["+"] "c=" conn-cap-list
conn-cap-list = conn-cap-num *(BAR conn-cap-num) conn-cap-list = conn-cap-num *(BAR conn-cap-num)
conn-cap-num = 1*10(DIGIT) ; 1 to 2^32-1 inclusive conn-cap-num = 1*10(DIGIT) ; 1 to 2^32-1 inclusive
Figure 9: Syntax of the connection data parameter in 'lcfg' and Figure 9: Syntax of the connection data
'pcfg' attributes parameter in "lcfg" and "pcfg" attributes
Each capability configuration alternative contains a single Each capability configuration alternative contains a single
connection data capability attribute number and refers to the conn- connection data capability attribute number and refers to the
cap-num capability number defined explicitly earlier in this conn-cap-num capability number defined explicitly earlier in this
document, and hence MUST be between 1 and 2^31-1 (both included). document; hence, the values MUST be between 1 and 2^31-1 (both
The connection data capability allows the expression of only a single included). The connection data capability allows the expression of
capability in each alternative, rather than a list of capabilities, only a single capability in each alternative, rather than a list of
since no more than a single connection data field is permitted per capabilities, since no more than a single connection data field is
media block. Nevertheless, it is still allowed to express permitted per media block. Nevertheless, it is still allowed to
alternative potential connection configurations separated by a express alternative potential connection configurations separated by
vertical bar ("|"). a vertical bar ("|").
An endpoint includes a plus sign ("+") in the configuration attribute An endpoint includes a plus sign ("+") in the configuration attribute
to mandate support for this extension. An endpoint that receives to mandate support for this extension. An endpoint that receives
this parameter prefixed with a plus sign and does not support this this parameter prefixed with a plus sign and does not support this
extension MUST treat that potential configuration as not valid. extension MUST treat that potential configuration as not valid.
The connection data parameter to the actual configuration attribute The connection data parameter to the actual configuration attribute
('a=acfg') is formulated as a <sel-extension-config> with ("a=acfg") is formulated as a <sel-extension-config> with
ext-cap-name = "c" ext-cap-name = "c"
hence hence
sel-extension-config =/ sel-connection-config sel-extension-config =/ sel-connection-config
sel-connection-config = "c=" conn-cap-num ; as defined above. sel-connection-config = "c=" conn-cap-num ; as defined above.
Figure 10: Syntax of the connection data parameter in 'acfg' Figure 10: Syntax of the connection data parameter
attributes in "acfg" attributes
3.1.2.2. Option tag 3.1.2.2. Option Tag
The SDP Capability Negotiation Framework [RFC5939] solution allows The SDP Capability Negotiation Framework [RFC5939] solution allows
for capability negotiation extensions to be defined. Associated with for capability negotiation extensions to be defined. Associated with
each such extension is an option tag that identifies the extension in each such extension is an option tag that identifies the extension in
question. Hereby, we define a new option tag of "ccap-v0" that question. Hereby, we define a new option tag of "ccap-v0" that
identifies support for the connection data capability. This option identifies support for the connection data capability. This option
tag SHOULD be added to other existing option tags present in the tag SHOULD be added to other existing option tags present in the
'csup' and 'creq' attributes in SDP, according to the procedures "csup" and "creq" attributes in SDP, according to the procedures
defined in the SDP Capability Negotiation Framework [RFC5939]. defined in the SDP Capability Negotiation Framework [RFC5939].
3.1.3. Title Capability 3.1.3. Title Capability
SDP [RFC4566] provides for the existence of an information field SDP [RFC4566] provides for the existence of an information field
expressed in the format of the 'i=' line, which can appear at the SDP expressed in the format of the "i=" line, which can appear at the SDP
session and/or media level. An 'i=' line that is present at the session and/or media level. An "i=" line that is present at the
session level is known as the "session name", and its purpose is to session level is known as the "session name", and its purpose is to
convey human-readable textual information about the session. convey human-readable textual information about the session.
The 'i=' line in SDP can also appear at the media level, in which The "i=" line in SDP can also appear at the media level, in which
case it is used to provide human-readable information about the media case it is used to provide human-readable information about the media
stream to which it is related, e.g., it may indicate the purpose of stream to which it is related; for example, it may indicate the
the media stream. The 'i=' line is not to be confused with the label purpose of the media stream. The "i=" line is not to be confused
attribute ('a=label:', [RFC4574]) which provides a machine-readable with the label attribute ("a=label:", [RFC4574]), which provides a
tag. It is foreseen that applications declaring capabilities related machine-readable tag. It is foreseen that applications declaring
to different configurations of a media stream may need to provide capabilities related to different configurations of a media stream
different identifying information for each of those configurations. may need to provide different identifying information for each of
That is, a party might offer alternative media configurations for a those configurations. That is, a party might offer alternative media
stream, each of which represents a different presentation of the same configurations for a stream, each of which represents a different
or similar information. For example, an audio stream might offer presentation of the same or similar information. For example, an
English or Spanish configurations, or a video stream might offer a audio stream might offer English or Spanish configurations, or a
choice of video source such as speaker camera, group camera, or video stream might offer a choice of video source such as speaker
document viewer. The title capability is needed to inform the camera, group camera, or document viewer. The title capability is
answering user in order to select the proper choice, and the label is needed to inform the answering user in order to select the proper
used to inform the offering machine which choice the answerer has choice, and the label is used to inform the offering machine which
selected. Hence, there is value in defining a mechanism to provide choice the answerer has selected. Hence, there is value in defining
titles of media streams as capabilities. a mechanism to provide titles of media streams as capabilities.
As defined in SDP [RFC4566], the session information field ("i=", As defined in SDP [RFC4566], the session information field ("i=",
referred to as "title" in this document) is subject to the referred to as "title" in this document) is subject to the
"a=charset" attribute in order to support different character sets "a=charset" attribute in order to support different character sets
and hence internationalization. The title capability attribute and hence internationalization. The title capability attribute
itself ("a=icap") is however not subject to the "a=charset" attribute itself ("a=icap") is, however, not subject to the "a=charset"
as this would preclude the inclusion of alternative session/title attribute as this would preclude the inclusion of alternative
information each using different character sets. Instead, the session/title information each using different character sets.
session/title value embedded in an "a=icap" attribute (title Instead, the session/title value embedded in an "a=icap" attribute
capability) will be subject to the "a=charset" value used within a (title capability) will be subject to the "a=charset" value used
configuration that includes that title capability. This provides for within a configuration that includes that title capability. This
consistent SDP operation while allowing for capabilities and provides for consistent SDP operation while allowing for capabilities
configurations with different session/title information values with and configurations with different session/title information values
different character set encodings (with each such configuration with different character set encodings (with each such configuration
including an "a=charset" value with the relevant character set for including an "a=charset" value with the relevant character set for
the session/title information in question). the session/title information in question).
According to SDP [RFC4566], the session information ('i=') line has According to SDP [RFC4566], the session information ("i=") line has
the following syntax: the following syntax:
"i=" text "i=" text
where "text" represents a human-readable text indicating the purpose where "text" represents a human-readable text indicating the purpose
of the session or media stream. of the session or media stream.
In this document we define a new capability attribute: the Title In this document, we define a new capability attribute: the title
capability 'icap'. This attribute lists session or media titles as capability "icap". This attribute lists session or media titles as
capabilities, according to the following definition: capabilities, according to the following definition:
"a=icap:" title-cap-num 1*WSP text "a=icap:" title-cap-num 1*WSP text
where <title-cap-num> is a unique integer within all the connection where <title-cap-num> is a unique integer within all the connection
capabilities in the entire SDP, which is used to identify the capabilities in the entire SDP, which is used to identify the
particular title capability, and can take a value between 1 and particular title capability and can take a value between 1 and 2^31-1
2^31-1 (both included). <text> is a human-readable text that (both included). <text> is a human-readable text that indicates the
indicates the purpose of the session or media stream it is supposed purpose of the session or media stream it is supposed to
to characterize. characterize.
As an example, one might use: As an example, one might use:
a=icap:1 Document Camera a=icap:1 Document Camera
to define a title capability number 1 to identify a particular source to define a title capability number 1 to identify a particular source
of a media stream. of a media stream.
Or in another example, one might offer two title capabilities with Or, in another example, one might offer two title capabilities with
different character encodings (using the charset attribute defined in different character encodings (using the charset attribute defined in
SDP: Session Description Protocol [RFC4566] and the generic attribute "SDP: Session Description Protocol" [RFC4566] and the generic
capability attribute ("a=acap:") defined in SDP Capability attribute capability attribute ("a=acap:") defined in "Session
Negotiation [RFC5939]. Description Protocol (SDP) Capability Negotiation" [RFC5939]).
a=icap:1 [Text encoded in ISO-8859-1] a=icap:1 [Text encoded in ISO-8859-1]
a=acap:1 charset:ISO-8859-1 a=acap:1 charset:ISO-8859-1
a=icap:2 [Text encoded in UTF-8] a=icap:2 [Text encoded in UTF-8]
a=acap:2 charset:UTF-8 a=acap:2 charset:UTF-8
NOTE: Due to limitations of the ASCII encoding of RFCs, the actual NOTE: Due to limitations of the ASCII encoding of RFCs, the actual
text with non-printable characters cannot be represented in the text text with non-printable characters cannot be represented in the text.
version, but might be represented in other versions of this RFC. See the PDF format of this RFC for a figure with non-printable
characters.
The title capability attribute satisfies the general attribute The title capability attribute satisfies the general attribute
production rules in SDP [RFC4566] according to the following production rules in SDP [RFC4566], according to the following
Augmented Backus-Naur Form (ABNF) [RFC5234] syntax: Augmented Backus-Naur Form (ABNF) [RFC5234] syntax:
att-field =/ "icap" att-field =/ "icap"
att-value =/ title-cap-num 1*WSP text att-value =/ title-cap-num 1*WSP text
; text defined in RFC 4566 ; text defined in RFC 4566
title-cap-num = 1*10(DIGIT) ; DIGIT defined in RFC 5234 title-cap-num = 1*10(DIGIT) ; DIGIT defined in RFC 5234
Figure 11: Syntax of the icap attribute Figure 11: Syntax of the "icap" attribute
3.1.3.1. Configuration Parameters 3.1.3.1. Configuration Parameters
The SDP Capability Negotiation Framework [RFC5939] provides for the The SDP Capability Negotiation Framework [RFC5939] provides for the
existence of the 'pcfg' and 'acfg' attributes. The concept is existence of the "pcfg" and "acfg" attributes. The concept is
extended by the SDP Media Capabilities Negotiation [RFC6871] with an extended by the SDP Media Capabilities Negotiation [RFC6871] with an
'lcfg' attribute that conveys latent configurations. "lcfg" attribute that conveys latent configurations.
In this document, we define a <title-config-list> parameter to be In this document, we define a <title-config-list> parameter to be
used to convey title capabilities in a potential or latent used to convey title capabilities in a potential or latent
configuration. This parameter is defined as an <extension-config- configuration. This parameter is defined as an
list> with the following associations: <extension-config-list> with the following associations:
ext-cap-name = "i" ext-cap-name = "i"
ext-cap-list = title-cap-list ext-cap-list = title-cap-list
This leads to the following definition for the title capability This leads to the following definition for the title capability
parameter: parameter:
extension-config-list =/ title-config-list extension-config-list =/ title-config-list
title-config-list = ["+"] "i=" title-cap-list title-config-list = ["+"] "i=" title-cap-list
title-cap-list = title-cap-num *(BAR title-cap-num) title-cap-list = title-cap-num *(BAR title-cap-num)
; BAR defined in RFC 5939 ; BAR defined in RFC 5939
title-cap-num = 1*10(DIGIT) ; DIGIT defined in RFC 5234 title-cap-num = 1*10(DIGIT) ; DIGIT defined in RFC 5234
Figure 12: Syntax of the title capability parameter in 'lcfg' and Figure 12: Syntax of the title capability parameter
'pcfg' attributes in "lcfg" and "pcfg" attributes
Each potential capability configuration contains a single title Each potential capability configuration contains a single title
capability attribute number where 'title-cap-num' is the title capability attribute number where "title-cap-num" is the title
capability number defined explicitly earlier in this document, and capability number defined explicitly earlier in this document, and
hence must be between 1 and 2^31-1 (both included). The title hence must be between 1 and 2^31-1 (both included). The title
capability allows the expression of only a single capability in each capability allows the expression of only a single capability in each
alternative, since no more than a single title field is permitted per alternative, since no more than a single-title field is permitted per
block. Nevertheless, it is still allowed to express alternative block. Nevertheless, it is still allowed to express alternative
potential title configurations separated by a vertical bar ("|"). potential title configurations separated by a vertical bar ("|").
An endpoint includes a plus sign ("+") in the configuration attribute An endpoint includes a plus sign ("+") in the configuration attribute
to mandate support for this extension. An endpoint that receives to mandate support for this extension. An endpoint that receives
this parameter prefixed with a plus sign and does not support this this parameter prefixed with a plus sign and does not support this
extension MUST treat that potential configuration as not valid. extension MUST treat that potential configuration as not valid.
The title parameter to the actual configuration attribute ('a=acfg') The title parameter to the actual configuration attribute ("a=acfg")
is formulated as a <sel-extension-config> with is formulated as a <sel-extension-config> with
ext-cap-name = "i" ext-cap-name = "i"
hence hence
sel-extension-config =/ sel-title-config sel-extension-config =/ sel-title-config
sel-title-config = "i=" title-cap-num ; as defined above. sel-title-config = "i=" title-cap-num ; as defined above.
Figure 13: Syntax of the title parameter in 'acfg' attributes Figure 13: Syntax of the title parameter in "acfg" attributes
3.1.3.2. Option Tag 3.1.3.2. Option Tag
At present, it is difficult to envision a scenario in which the At present, it is difficult to envision a scenario in which the
'icap' attribute must be supported or the offer must be rejected. In "icap" attribute must be supported or the offer must be rejected. In
most cases, if the icap attribute or its contents were to be ignored, most cases, if the icap attribute or its contents were to be ignored,
an offered configuration could still be chosen based on other an offered configuration could still be chosen based on other
criteria such as configuration numbering. However, one might imagine criteria such as configuration numbering. However, one might imagine
an SDP offer that contained English and Spanish potential an SDP offer that contained English and Spanish potential
configurations for an audio stream. The session might be configurations for an audio stream. The session might be
unintelligible if the choice is based on configuration numbering, unintelligible if the choice is based on configuration numbering,
rather than informed user selection. Based on such considerations, rather than informed user selection. Based on such considerations,
it may well prove useful to announce the ability to use the icap it may well prove useful to announce the ability to use the icap
attribute and its contents to select media configurations, or to attribute and its contents to select media configurations, or to
inform the user about the selected configuration(s). Therefore, we inform the user about the selected configuration(s). Therefore, we
define a new option tag of "icap-v0" that identifies support for the define a new option tag of "icap-v0" that identifies support for the
title capability. This option tag SHOULD be added to other existing title capability. This option tag SHOULD be added to other existing
option tags present in the 'csup' and/or 'creq' attributes in SDP, option tags present in the "csup" and/or "creq" attributes in SDP,
according to the procedures defined in the SDP Capability Negotiation according to the procedures defined in the SDP Capability Negotiation
Framework [RFC5939]. The discussion above suggests that "icap-v0" Framework [RFC5939]. The discussion above suggests that "icap-v0"
will typically appear in a 'csup' attribute, but rarely in a 'creq' will typically appear in a "csup" attribute, but rarely in a "creq"
attribute. attribute.
3.2. Session Level versus Media Level 3.2. Session Level versus Media Level
The 'bcap', 'ccap' and 'icap' attributes can appear at the SDP The "bcap", "ccap", and "icap" attributes can appear at the SDP
session and/or media level. Endpoints MUST interpret capabilities session and/or media level. Endpoints MUST interpret capabilities
declared at session level as part of the session level in the declared at session level as part of the session level in the
resulting SDP for that particular configuration. Endpoints MUST resulting SDP for that particular configuration. Endpoints MUST
interpret capabilities declared at media description as part of the interpret capabilities declared at media description as part of the
media level in the resulting SDP for that particular configuration. media level in the resulting SDP for that particular configuration.
The presence of the 'bcap' capability for the same <bwtype> at both The presence of the "bcap" capability for the same <bwtype> at both
the session and media level is subject to the same constraints and the session and media level is subject to the same constraints and
restrictions specified in RFC 4566 [RFC4566] for the bandwidth restrictions specified in RFC 4566 [RFC4566] for the bandwidth
attribute "b=". attribute "b=".
To avoid confusion, the <type-attr-num> for each 'a=bcap', 'a=ccap', To avoid confusion, the <type-attr-num> for each "a=bcap", "a=ccap",
and 'a=icap' line MUST be unique across all capability attributes of and "a=icap" line MUST be unique across all capability attributes of
the same type within the entire session description. the same type within the entire session description.
3.3. Offer/Answer model extensions 3.3. Offer/Answer Model Extensions
In this section, we define extensions to the offer/answer model In this section, we define extensions to the offer/answer model
defined in SDP Offer/Answer Model [RFC3264] and extended in the SDP defined in SDP Offer/Answer Model [RFC3264] and extended in the SDP
Capability Negotiation [RFC5939] to allow for bandwidth, connection, Capability Negotiation [RFC5939] to allow for bandwidth, connection,
and title capabilities to be used with the SDP Capability Negotiation and title capabilities to be used with the SDP Capability Negotiation
framework. Framework.
3.3.1. Generating the Initial Offer 3.3.1. Generating the Initial Offer
When an endpoint generates an initial offer and wants to use the When an endpoint generates an initial offer and wants to use the
functionality described in the current document, it first defines functionality described in the current document, it first defines
appropriate values for the bandwidth, connection data, and/or title appropriate values for the bandwidth, connection data, and/or title
capability attributes according to the rules defined in [RFC4566] for capability attributes according to the rules defined in [RFC4566] for
'b=', 'c=' and 'i=' lines. The endpoint then MUST include the "b=", "c=", and "i=" lines. The endpoint then MUST include the
respective capability attributes and associated values in the SDP respective capability attributes and associated values in the SDP
offer. The preferred configurations for each media stream are offer. The preferred configurations for each media stream are
identified following the media line in a 'pcfg' attribute. Bandwidth identified following the media line in a "pcfg" attribute. Bandwidth
and title capabilities may also be referenced in latent and title capabilities may also be referenced in latent
configurations in an 'lcfg' attribute, defined in SDP Media configurations in an "lcfg" attribute, as defined in the SDP Media
Capabilities Negotiation [RFC6871]. Capabilities Negotiation [RFC6871].
Implementations are advised to pay attention to the port number that Implementations are advised to pay attention to the port number that
is used in the "m=" line. By default, a potential configuration that is used in the "m=" line. By default, a potential configuration that
includes a connection data capability will use the port number from includes a connection data capability will use the port number from
the "m=" line, unless the network type is "PSTN", in which case the the "m=" line, unless the network type is "PSTN", in which case the
default port number used will be 9. default port number used will be 9.
The offer SHOULD include the level of capability negotiation The offer SHOULD include the level of capability negotiation
extensions needed to support this functionality in a 'creq' extensions needed to support this functionality in a "creq"
attribute. attribute.
3.3.2. Generating the Answer 3.3.2. Generating the Answer
When the answering party receives the offer, and if it supports the When the answering party receives the offer, and if it supports the
required capability negotiation extensions, it SHOULD select the most required capability negotiation extensions, it SHOULD select the most
preferred configuration it can support for each media stream, and preferred configuration it can support for each media stream and
build the answer accordingly, as defined in Section 3.6.2 of the SDP build the answer accordingly, as defined in Section 3.6.2 of the SDP
Capability Negotiation [RFC5939]. Capability Negotiation [RFC5939].
If the connection data capability is used in a selected potential If the connection data capability is used in a selected potential
configuration chosen by the answerer, that offer configuration MUST configuration chosen by the answerer, that offer configuration MUST
by default use the port number from the actual offer configuration by default use the port number from the actual offer configuration
(i.e. the "m=" line), unless the network type is "PSTN", in which (i.e., the "m=" line), unless the network type is "PSTN", in which
case the default port MUST be assumed to be 9. Extensions may be case the default port MUST be assumed to be 9. Extensions may be
defined to negotiate the port number explicitly instead. defined to negotiate the port number explicitly instead.
3.3.3. Offerer Processing of the Answer 3.3.3. Offerer Processing of the Answer
When the offerer receives the answer, it MUST process the media lines When the offerer receives the answer, it MUST process the media lines
according to normal SDP processing rules to identify the media according to normal SDP processing rules to identify the media
stream(s) accepted by the answer, if any, as defined in Section 3.6.3 stream(s) accepted by the answer, if any, as defined in Section 3.6.3
of the SDP Capability Negotiation [RFC5939]. The 'acfg' attribute, of the SDP Capability Negotiation [RFC5939]. The "acfg" attribute,
if present, MUST be used to verify the proposed configuration used to if present, MUST be used to verify the proposed configuration used to
form the answer, and to infer the lack of acceptability of higher- form the answer and to infer the lack of acceptability of
preference configurations that were not chosen. higher-preference configurations that were not chosen.
3.3.4. Modifying the Session 3.3.4. Modifying the Session
If, at a later time, one of the parties wishes to modify the 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, operating parameters of a session, e.g., by adding a new media stream
or by changing the properties used on an existing stream, it may do or by changing the properties used on an existing stream, it may do
so via the mechanisms defined for SDP offer/answer [RFC3264] and in so via the mechanisms defined for SDP offer/answer [RFC3264] and in
accordance with the procedures defined in Section 3.6.4 of the SDP accordance with the procedures defined in Section 3.6.4 of the SDP
Capability Negotiation [RFC5939]. Capability Negotiation [RFC5939].
4. Field Replacement Rules 4. Field Replacement Rules
To simplify the construction of SDP records, given the need to To simplify the construction of SDP records, given the need to
include fields within the media description in question for endpoints include fields within the media description in question for endpoints
that do not support capabilities negotiation, we define some simple that do not support capabilities negotiation, we define some simple
field-replacement rules for those fields invoked by potential or field-replacement rules for those fields invoked by potential or
latent configurations. In particular, any 'i=' or 'c=' line invoked latent configurations. In particular, any "i=" or "c=" lines invoked
by a configuration MUST replace the corresponding line, if present by a configuration MUST replace the corresponding line, if present
within the media description in question. Any 'b=' line invoked by a within the media description in question. Any "b=" line invoked by a
configuration MUST replace any 'b=' of the same bandwidth type at the configuration MUST replace any "b=" of the same bandwidth type at the
media level, but not at the session level. media level, but not at the session level.
5. Security Considerations 5. Security Considerations
This document provides an extension on top of RFC 4566 [RFC4566], RFC This document provides an extension on top of the SDP [RFC4566], SDP
3264 [RFC3264], SDP Capability Negotiation Framework [RFC5939], and Offer/Answer Model [RFC3264], SDP Capability Negotiation Framework
SDP Media Capabilities Negotiation [RFC6871]. As such, the security [RFC5939], and SDP Media Capabilities Negotiation [RFC6871]. As
considerations of those documents apply. such, the security considerations of those documents apply.
The bandwidth capability attribute may be used for reserving The bandwidth capability attribute may be used for reserving
resources at endpoints and intermediaries which inspect the SDP. resources at endpoints and intermediaries that inspect SDP.
Modification of the bandwidth value by an attacker can lead to the Modification of the bandwidth value by an attacker can lead to the
network being underutilized (too high bandwidth value) or congested network being underutilized (too high bandwidth value) or congested
(too low bandwidth value). (too low bandwidth value).
Similarly, by modifying the alternative connection address(es), an Similarly, by modifying the alternative connection address(es), an
attacker would be able direct media streams to a desired endpoint, attacker would be able to direct media streams to a desired endpoint,
thus launching a version of the well known voice hammer attack (see thus launching a version of the well-known voice hammer attack (see
Section 18.5.1 of [RFC5245]. Section 18.5.1 of [RFC5245]).
The title capability provides for alternative "i=" line information, The title capability provides for alternative "i=" line information,
which is intended for human consumption. However, manipulating the which is intended for human consumption. However, manipulating the
textual information could be misused to provide false information, textual information could be misused to provide false information,
leading to bad user experience or the person using the service making leading to a bad user experience or the person using the service
wrong the choice regarding the available media streams. making a wrong choice regarding the available media streams.
In case it is essential to protect the capability attribute values, In case it is essential to protect the capability attribute values,
one of the security mechanisms proposed in [RFC5939] SHOULD be used. one of the security mechanisms proposed in [RFC5939] SHOULD be used.
The 'i=' line and thus the value carried in the title capability The "i=" line, and thus the value carried in the title capability
attribute is intended for human-readable description only. It should attribute, is intended for human-readable description only. It
not be parsed programmatically. should not be parsed programmatically.
6. IANA Considerations 6. IANA Considerations
6.1. New SDP Attributes 6.1. New SDP Attributes
IANA is hereby requested to register new attributes in the "att-field IANA has registered new attributes in the "att-field (both session
(both session and media level)" of the "Session Description Protocol and media level)" subregistry of the "Session Description Protocol
(SDP) Parameters" registry, according to the following registration (SDP) Parameters" registry, according to the following registration
form: form:
Attribute name: bcap Attribute name: bcap
Long form name: Bandwidth Capability Long form name: Bandwidth Capability
Type of attribute: Both media and session level Type of attribute: Both media and session level
Subject to charset: No Subject to charset: No
Purpose: Negotiate session or media-level bandwidths Purpose: Negotiate session or media-level bandwidths
Appropriate values: See RFC XXXX Section 3.1.1 Appropriate values: See RFC 7066, Section 3.1.1
[Note to the RFC Editor: Please replace the above RFC XXXX Contact name: Miguel A. Garcia
with the RFC number of this specification. Miguel.A.Garcia@ericsson.com
Contact name: Miguel A. Garcia,
Miguel.A.Garcia@ericsson.com
Attribute name: ccap Attribute name: ccap
Long form name: Connection Data Capability Long form name: Connection Data Capability
Type of attribute: Both media and session level Type of attribute: Both media and session level
Subject to charset: No Subject to charset: No
Purpose: Negotiate media-level connection data Purpose: Negotiate media-level connection data
Appropriate values: See RFC XXXX Section 3.1.2 Appropriate values: See RFC 7066, Section 3.1.2
[Note to the RFC Editor: Please replace the above RFC XXXX Contact name: Miguel A. Garcia
with the RFC number of this specification. Miguel.A.Garcia@ericsson.com
Contact name: Miguel A. Garcia,
Miguel.A.Garcia@ericsson.com
Attribute name: icap Attribute name: icap
Long form name: Title Capability Long form name: Title Capability
Type of attribute: Both media and session level Type of attribute: Both media and session level
Subject to charset: Yes Subject to charset: Yes
Purpose: Negotiate human-readable information Purpose: Negotiate human-readable information
describing the session or media describing the session or media
Appropriate values: See RFC XXXX Section 3.1.3 Appropriate values: See RFC 7066, Section 3.1.3
[Note to the RFC Editor: Please replace the above RFC XXXX Contact name: Miguel A. Garcia
with the RFC number of this specification. Miguel.A.Garcia@ericsson.com
Contact name: Miguel A. Garcia,
Miguel.A.Garcia@ericsson.com
6.2. New Option Tags 6.2. New Option Tags
IANA is hereby requested to add the new option tags "bcap-v0", IANA has added the new option tags "bcap-v0", "ccap-v0", and "icap-
"ccap-v0", and "icap-v0", defined herein, to the "SDP Capability v0", defined herein, to the "SDP Capability Negotiation Option Tag"
Negotiation Option Tag subregistry" of the "Session Description subregistry of the "Session Description Protocol (SDP) Parameters"
Protocol (SDP) Parameters" registry. registry.
6.3. New SDP Capability Negotiation Configuration Parameters 6.3. New SDP Capability Negotiation Configuration Parameters
IANA is hereby requested to add the new parameter identifiers "b" for IANA has added the new parameter identifiers "b" for "Bandwidth", "c"
"bandwidth", "c" for "connection data", and "i" for "title" to the for "Connection Data", and "i" for "Title" to the "SDP Capability
"SDP Capability Negotiation Configuration Parameters" subregistry of Negotiation Configuration Parameters" subregistry of the "Session
the "Session Description Protocol (SDP) Parameters" registry. These Description Protocol (SDP) Parameters" registry. These parameters
parameters are permitted in 'lcfg', 'acfg', and 'pcfg' attributes. are permitted in "lcfg", "acfg", and "pcfg" attributes.
7. Acknowledgments 7. Acknowledgments
Thanks to Christer Holmberg, Alf Heidermark, and Ingemar Johansson Thanks to Christer Holmberg, Alf Heidermark, and Ingemar Johansson
for arguing for the existence of this document and early reviewing for arguing for the existence of this document and reviewing it in
it. Thanks to Flemming Andreasen, Andrew Allen, and Jonathan Lennox the early stages. Thanks to Flemming Andreasen, Andrew Allen, and
for a detailed review and many improvement suggestions. Jonathan Lennox for a detailed review and many suggestions for
improvement.
8. References 8. References
8.1. Normative References 8.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997. Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC3264] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model [RFC3264] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model
with Session Description Protocol (SDP)", RFC 3264, June with Session Description Protocol (SDP)", RFC 3264, June
skipping to change at page 20, line 48 skipping to change at page 21, line 17
[RFC5939] Andreasen, F., "Session Description Protocol (SDP) [RFC5939] Andreasen, F., "Session Description Protocol (SDP)
Capability Negotiation", RFC 5939, September 2010. Capability Negotiation", RFC 5939, September 2010.
[RFC6871] Gilman, R., Even, R., and F. Andreasen, "Session [RFC6871] Gilman, R., Even, R., and F. Andreasen, "Session
Description Protocol (SDP) Media Capabilities Description Protocol (SDP) Media Capabilities
Negotiation", RFC 6871, February 2013. Negotiation", RFC 6871, February 2013.
8.2. Informative References 8.2. Informative References
[I-D.ietf-mmusic-sdp-cs]
Garcia, M. and S. Veikkolainen, "Session Description
Protocol (SDP) Extension For Setting Audio and Video Media
Streams Over Circuit-Switched Bearers In The Public
Switched Telephone Network (PSTN)", draft-ietf-mmusic-sdp-
cs-21 (work in progress), June 2013.
[RFC3108] Kumar, R. and M. Mostafa, "Conventions for the use of the [RFC3108] Kumar, R. and M. Mostafa, "Conventions for the use of the
Session Description Protocol (SDP) for ATM Bearer Session Description Protocol (SDP) for ATM Bearer
Connections", RFC 3108, May 2001. Connections", RFC 3108, May 2001.
[RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V. [RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V.
Jacobson, "RTP: A Transport Protocol for Real-Time Jacobson, "RTP: A Transport Protocol for Real-Time
Applications", STD 64, RFC 3550, July 2003. Applications", STD 64, RFC 3550, July 2003.
[RFC3711] Baugher, M., McGrew, D., Naslund, M., Carrara, E., and K. [RFC3711] Baugher, M., McGrew, D., Naslund, M., Carrara, E., and K.
Norrman, "The Secure Real-time Transport Protocol (SRTP)", Norrman, "The Secure Real-time Transport Protocol (SRTP)",
RFC 3711, March 2004. RFC 3711, March 2004.
[RFC4574] Levin, O. and G. Camarillo, "The Session Description [RFC4574] Levin, O. and G. Camarillo, "The Session Description
Protocol (SDP) Label Attribute", RFC 4574, August 2006. Protocol (SDP) Label Attribute", RFC 4574, August 2006.
[RFC5245] Rosenberg, J., "Interactive Connectivity Establishment [RFC5245] Rosenberg, J., "Interactive Connectivity Establishment
(ICE): A Protocol for Network Address Translator (NAT) (ICE): A Protocol for Network Address Translator (NAT)
Traversal for Offer/Answer Protocols", RFC 5245, April Traversal for Offer/Answer Protocols", RFC 5245, April
2010. 2010.
[SDP-CS] Garcia, M. and S. Veikkolainen, "Session Description
Protocol (SDP) Extension for Setting Audio and Video Media
Streams over Circuit-Switched Bearers in the Public
Switched Telephone Network (PSTN)", Work in Progress, June
2013.
Authors' Addresses Authors' Addresses
Miguel A. Garcia-Martin Miguel A. Garcia-Martin
Ericsson Ericsson
Calle Via de los Poblados 13 Calle Via de los Poblados 13
Madrid 28033 Madrid 28033
Spain Spain
Phone: +34 91 339 1000 Phone: +34 91 339 1000
Email: miguel.a.garcia@ericsson.com EMail: miguel.a.garcia@ericsson.com
Simo Veikkolainen Simo Veikkolainen
Nokia Nokia
P.O. Box 226 P.O. Box 226
NOKIA GROUP, FI 00045 NOKIA GROUP, FI 00045
Finland Finland
Phone: +358 50 486 4463 Phone: +358 50 486 4463
Email: simo.veikkolainen@nokia.com EMail: simo.veikkolainen@nokia.com
Robert R. Gilman Robert R. Gilman
3243 W. 11th Ave. Dr. 3243 W. 11th Ave. Dr.
Broomfield, Colorado 80020 Broomfield, Colorado 80020
U.S.A. U.S.A.
Phone: +1 303 898 9780 Phone: +1 303 898 9780
Email: bob_gilman@comcast.net EMail: bob_gilman@comcast.net
 End of changes. 148 change blocks. 
401 lines changed or deleted 396 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/