1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557
|
<pre>Network Working Group F. Andreasen
Request for Comments: 3407 Cisco Systems
Category: Standards Track October 2002
<span class="h1">Session Description Protocol (SDP) Simple Capability Declaration</span>
Status of this Memo
This document specifies an Internet standards track protocol for the
Internet community, and requests discussion and suggestions for
improvements. Please refer to the current edition of the "Internet
Official Protocol Standards" (STD 1) for the standardization state
and status of this protocol. Distribution of this memo is unlimited.
Copyright Notice
Copyright (C) The Internet Society (2002). All Rights Reserved.
Abstract
This document defines a set of Session Description Protocol (SDP)
attributes that enables SDP to provide a minimal and backwards
compatible capability declaration mechanism. Such capability
declarations can be used as input to a subsequent session
negotiation, which is done by means outside the scope of this
document. This provides a simple and limited solution to the general
capability negotiation problem being addressed by the next generation
of SDP, also known as SDPng.
<span class="h2"><a class="selflink" id="section-1" href="#section-1">1</a>. Conventions Used in this Document</span>
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in <a href="./rfc2119">RFC-2119</a> [<a href="#ref-2" title=""Key words for use in RFCs to Indicate Requirement Levels"">2</a>].
<span class="h2"><a class="selflink" id="section-2" href="#section-2">2</a>. Introduction</span>
The Session Description Protocol (SDP) [<a href="#ref-3" title=""SDP: session description protocol"">3</a>] describes multimedia
sessions for the purposes of session announcement, session
invitation, and other forms of multimedia session initiation. SDP
was not intended to provide capability negotiation. However, as the
need for this has become increasingly important, work has begun on a
"next generation SDP" (SDPng) [<a href="#ref-4" title=""Requirements for Session Description and Capability Negotiation"">4</a>,<a href="#ref-5" title=""Session Description and Capability Negotiation"">5</a>] that supports both session
description and capability negotiation. SDPng is not anticipated to
be backwards compatible with SDP and work on SDPng is currently in
the early stages. However, several other protocols, e.g. SIP [<a href="#ref-6" title=""SIP: session initiation protocol"">6</a>] and
Media Gateway Control Protocol (MGCP) [<a href="#ref-7" title=""Media Gateway Control Protocol (MGCP) Version 1.0"">7</a>], use SDP and are likely to
<span class="grey">Andreasen Standards Track [Page 1]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-2" ></span>
<span class="grey"><a href="./rfc3407">RFC 3407</a> SDP Simple Capability Declaration October 2002</span>
continue doing so for the foreseeable future. Nevertheless, in many
cases these signaling protocols have an urgent need for some limited
form of capability negotiation.
For example, an endpoint may support G.711 audio (over RTP) as well
as T.38 fax relay (over UDP or TCP). Unless the endpoint is willing
to support two media streams at the same time, this cannot currently
be expressed in SDP. Another example involves support for multiple
codecs. An endpoint indicates this by including all the codecs in
the "m=" line in the session description. However, the endpoint
thereby also commits to simultaneous support for each of these
codecs. In practice, Digital Signal Processor (DSP) memory and
processing power limitations may not make this feasible.
As noted in [<a href="#ref-4" title=""Requirements for Session Description and Capability Negotiation"">4</a>], the problem with SDP is that media descriptions are
used to describe session parameters as well as capabilities without a
clear distinction between the two.
In this document, we define a minimal and backwards compatible
capability declaration feature in SDP by defining a set of new SDP
attributes. Together, these attributes define a capability set,
which consists of a capability set sequence number followed by one or
more capability descriptions. Each capability description in the set
contains information about supported media formats, but the endpoint
is not committing to use any of these. In order to actually use a
declared capability, session negotiation will have to be done by
means outside the scope of this document, e.g., using the
offer/answer model [<a href="#ref-8" title=""An Offer/Answer Model with SDP"">8</a>].
It should be noted that the mechanism is not intended to solve the
general capability negotiation problem targeted by SDPng. It is
merely intended as a simple and limited solution to the most urgent
problems facing current users of SDP.
<span class="h2"><a class="selflink" id="section-3" href="#section-3">3</a>. Simple Capability Declaration Attributes</span>
The SDP Simple Capability Declaration (simcap) is defined by a set of
SDP attributes. Together, these attributes form a capability set
which describes the complete media capabilities of the endpoint. Any
previous capability sets issued by the endpoint for the session in
question no longer apply. The capability set consists of a sequence
number and one or more capability descriptions. Each such capability
description describes the media type and media formats supported and
may include one or more capability parameters to further define the
capability. A session description MUST NOT contain more than one
capability set, however the capability set can describe capabilities
at both the session and media level. Capability descriptions
provided at the session level apply to all media streams of the media
<span class="grey">Andreasen Standards Track [Page 2]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-3" ></span>
<span class="grey"><a href="./rfc3407">RFC 3407</a> SDP Simple Capability Declaration October 2002</span>
type indicated, whereas capability descriptions provided at the media
level apply to that particular media stream only. We refer to these
respectively as session capabilities and media stream capabilities.
A media stream capability may or may not be of the same media type as
the media stream to which it applies.
The capability set MUST begin with a single sequence number followed
by one or more capability descriptions listing all media formats the
endpoint is currently able and willing to support. More
specifically, if a media format is included in a media ("m=") line,
then by definition the media format MUST be included in either a
session capability or a media stream capability for that media line.
The endpoint MAY include additional media formats in a capability if
it is capable of supporting those media formats in a session with its
peer. An endpoint MUST NOT include capabilities it knows it cannot
use in a particular session. An endpoint receiving a capability set
from another endpoint MAY use any of the media formats included in
that capability set in a later attempt to negotiate media streams
with the other endpoint, e.g., using the offer/answer model [<a href="#ref-8" title=""An Offer/Answer Model with SDP"">8</a>]. If
a new capability set is received from the other endpoint, the old
capability set MUST NOT be used any longer. Session capabilities can
be used for any media streams of the indicated media type, whereas
media stream capabilities can only be used for their associated media
line. However, an endpoint receiving a capability set with a given
media format MUST NOT assume that a subsequent attempt to negotiate a
media stream using just this media format will succeed.
The individual capability descriptions in a capability set can be
provided contiguously or they can be scattered throughout the session
description. The first capability description MUST, however, follow
immediately after the sequence number.
The sequence number is on the form:
a=sqn: <sqn-num>
where <sqn-num> is an integer between 0 and 255 (both included). The
initial sequence number MUST be 0 (zero) and it MUST be incremented
by 1 modulo 256 with each new capability set issued by the endpoint.
Receivers may not necessarily see all capability sets issued and
hence MUST NOT reject a capability set due to gaps in sequence
numbers. The sequence number MUST either be provided as a session-
level or media-level attribute, however there MUST NOT be more than
one occurrence of the sequence number attribute in the session
description (since there cannot be more than one capability set).
<span class="grey">Andreasen Standards Track [Page 3]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-4" ></span>
<span class="grey"><a href="./rfc3407">RFC 3407</a> SDP Simple Capability Declaration October 2002</span>
Each capability description in the capability set is on the form:
a=cdsc: <cap-num> <media> <transport> <fmt list>
where <cap-num> is an integer between 1 and 255 (both included) used
to number the capabilities, and <media>, <transport>, and <fmt list>
are defined as in the SDP "m=" line. The capability description
refers to a send and receive capability by default. When generating
a capability set, the capability number MUST start with 1 in the
first capability description, and be incremented by the number of
media formats in the <fmt list> for each subsequent capability
description. The media formats in the <fmt list> are numbered from
left to right. Receivers of a capability set MUST NOT, however,
reject capability descriptions due to gaps in the capability numbers.
The capability number provides a convenient handle within the context
of the capability set (as referenced by the sequence number) which
may be used to reference a particular capability by means outside of
this specification.
A capability description can include one or more capability parameter
lines on the form:
a=cpar: <cap-par>
a=cparmin: <cap-par>
a=cparmax: <cap-par>
where <cap-par> is either bandwidth information ("b=") or an
attribute ("a=") in its full '<type>=<value>' form (see [<a href="#ref-3" title=""SDP: session description protocol"">3</a>]). A
capability parameter line provides additional parameters for the
preceding "cdsc" attribute line. Capability parameter lines for a
capability description SHOULD immediately follow the "cdsc" line they
refer to. Nevertheless, the capability description includes all
capability parameter lines until the next capability description
("cdsc") or media ("m=") line in the session description.
The "cpar" attribute should normally be used when capability
parameter values are to be specified. When provided, it means that
the endpoint is declaring that it supports the media formats in the
preceding "cdsc" line in accordance with the <cap-par> value
specified. This can, for example, be used to specify "fmtp"
parameters. If a session negotiation is attempted without
considering the <cap-par> value, it may fail due to lack of endpoint
support. A capability description may contain zero, one, or more
"cpar" attribute lines describing either the same or different
parameters. Describing the same parameter more than once can be used
to specify alternatives.
<span class="grey">Andreasen Standards Track [Page 4]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-5" ></span>
<span class="grey"><a href="./rfc3407">RFC 3407</a> SDP Simple Capability Declaration October 2002</span>
Where a minimum numerical value is to be specified, the "cparmin"
attribute should be used. There may be zero, one, or more "cparmin"
attribute lines in a capability description, however a given
parameter MUST NOT be described by a "cparmin" attribute more than
once.
Where a maximum numerical value is to be specified, the "cparmax"
attribute should be used. There may be zero, one, or more "cparmax"
attribute lines in a capability description, however a given
parameter MUST NOT be described by a "cparmax" attribute more than
once.
Ranges of numerical values can be expressed by using a "cparmin" and
a "cparmax" attribute for a given parameter. It follows from the
previous rules, that only a single range can be specified for a given
parameter.
Capability descriptions may be provided at both the session-level and
media-level. A capability description provided at the session-level
applies to all the media streams of the indicated media type in the
session description. A capability description provided at the
media-level only applies to that particular media stream (regardless
of media type). If a capability description with media type X is
provided at the session-level, and there are no media streams of type
X in the session description, then it is undefined which of the media
streams the capability description applies to (except if there is
only one media stream). It is therefore RECOMMENDED, that such
capabilities are provided at the media-level instead.
Below we show an example session description using the above simple
capability declaration mechanism:
v=0
o=- 25678 753849 IN IP4 128.96.41.1
s=
c=IN IP4 128.96.41.1
t=0 0
m=audio 3456 RTP/AVP 18 96
a=rtpmap:96 telephone-event
a=fmtp:96 0-15,32-35
a=sqn: 0
a=cdsc: 1 audio RTP/AVP 0 18 96
a=cpar: a=fmtp:96 0-16,32-35
a=cdsc: 4 image udptl t38
a=cdsc: 5 image tcp t38
<span class="grey">Andreasen Standards Track [Page 5]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-6" ></span>
<span class="grey"><a href="./rfc3407">RFC 3407</a> SDP Simple Capability Declaration October 2002</span>
The sender of this session description is currently prepared to send
and receive G.729 audio as well as telephone-events 0-15 and 32-35.
The sender is furthermore capable of supporting:
* PCMU encoding for the audio media stream,
* telephone events 0-16 and 32-35,
* T.38 fax relay using udp or tcp (see [<a href="#ref-9" title=""SIP/SDP Call Establishment Procedures"">9</a>]).
Note, that the first capability number specified is 1, whereas the
next is 4 since three media formats were included in the first
capability description. Also note that the rtpmap for payload type
96 was not included in the capability description, as it was already
specified for the media ("m=") line. Conversely, it would of course
not have been valid to provide the rtpmap in the capability
description and then omit the "a=rtpmap" line.
Below, we show another example of the simple capability declaration
mechanism, this time with multiple media streams:
v=0
o=- 25678 753849 IN IP4 128.96.41.1
s=
c=IN IP4 128.96.41.1
t=0 0
m=audio 3456 RTP/AVP 18
a=sqn: 0
a=cdsc: 1 audio RTP/AVP 0 18
m=video 3458 RTP/AVP 31
a=cdsc: 3 video RTP/AVP 31 34
The sender of this session description is currently prepared to send
and receive G.729 audio and H.261 video. The sender is furthermore
capable of supporting:
* PCMU encoding for the audio media stream,
* H.263 for the video media stream.
Note that the first capability number specified is 1, whereas the
next is 3, since two media formats were included in the first
capability description. Also note that the sequence number applies
to the entire capability set, i.e. both audio and video, and hence is
only supplied once. Finally, note that the media formats 18 and 31
are listed in both the media lines and the capability set as
required. The above session description could have equally been
supplied as follows:
<span class="grey">Andreasen Standards Track [Page 6]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-7" ></span>
<span class="grey"><a href="./rfc3407">RFC 3407</a> SDP Simple Capability Declaration October 2002</span>
v=0
o=- 25678 753849 IN IP4 128.96.41.1
s=
c=IN IP4 128.96.41.1
t=0 0
a=sqn: 0
a=cdsc: 1 audio RTP/AVP 0 18
a=cdsc: 3 video RTP/AVP 31 34
m=audio 3456 RTP/AVP 18
m=video 3458 RTP/AVP 31
i.e., with the capability set provided at the session-level.
<span class="h2"><a class="selflink" id="section-4" href="#section-4">4</a>. Security Considerations</span>
Capability negotiation of security-sensitive parameters is a delicate
process, and should not be done without careful evaluation of the
design, including the possible susceptibility to downgrade attacks.
Use of capability re-negotiation may make the session susceptible to
denial of service, without design care as to authentication.
<span class="h2"><a class="selflink" id="section-5" href="#section-5">5</a>. IANA Considerations</span>
This document defines the following new SDP parameters of type "att-
field" (attribute names):
Attribute name: sqn
Long form name: Sequence number.
Type of attribute: Session-level and media-level.
Subject to charset: No.
Purpose: Capability set numbering.
Appropriate values: See <a href="#section-3">Section 3</a>.
Attribute name: cdsc
Long form name: Capability description.
Type of attribute: Session-level and media-level.
Subject to charset: No.
Purpose: Describe capabilities in a capability set.
Appropriate values: See <a href="#section-3">Section 3</a>.
Attribute name: cpar
Long form name: Capability parameter line.
Type of attribute: Session-level and media-level.
Subject to charset: No.
Purpose: Provide capability description parameters.
Appropriate values: See <a href="#section-3">Section 3</a>.
<span class="grey">Andreasen Standards Track [Page 7]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-8" ></span>
<span class="grey"><a href="./rfc3407">RFC 3407</a> SDP Simple Capability Declaration October 2002</span>
Attribute name: cparmin
Long form name: Minimum capability parameter line.
Type of attribute: Session-level and media-level.
Subject to charset: No.
Purpose: Provide minimum capability description
parameters.
Appropriate values: See <a href="#section-3">Section 3</a>.
Attribute name: cparmax
Long form name: Maximum capability parameter line.
Type of attribute: Session-level and media-level.
Subject to charset: No.
Purpose: Provide maximum capability description
parameters.
Appropriate values: See <a href="#section-3">Section 3</a>.
<span class="h2"><a class="selflink" id="section-6" href="#section-6">6</a>. Normative References</span>
[<a id="ref-1">1</a>] Bradner, S., "The Internet Standards Process -- Revision 3", <a href="https://www.rfc-editor.org/bcp/bcp9">BCP</a>
<a href="https://www.rfc-editor.org/bcp/bcp9">9</a>, <a href="./rfc2026">RFC 2026</a>, October 1996.
[<a id="ref-2">2</a>] Bradner, S., "Key words for use in RFCs to Indicate Requirement
Levels", <a href="https://www.rfc-editor.org/bcp/bcp14">BCP 14</a>, <a href="./rfc2119">RFC 2119</a>, March 1997.
[<a id="ref-3">3</a>] Handley, M. and V. Jacobson, "SDP: session description protocol",
Request for Comments 2327, April 1998.
<span class="h2"><a class="selflink" id="section-7" href="#section-7">7</a>. Informative References</span>
[<a id="ref-4">4</a>] Kutscher, Ott, Bormann and Curcio, "Requirements for Session
Description and Capability Negotiation", Work in Progress.
[<a id="ref-5">5</a>] Kutscher, Ott and Borman, "Session Description and Capability
Negotiation", Work in Progress.
[<a id="ref-6">6</a>] Handley, M., Schulzrinne, H., Schooler, E. and J. Rosenberg,
"SIP: session initiation protocol", <a href="./rfc2543">RFC 2543</a>, March 1999.
[<a id="ref-7">7</a>] Arango, M., Dugan, A., Elliott, I., Huitema, C. and S. Pickett,
"Media Gateway Control Protocol (MGCP) Version 1.0", <a href="./rfc2705">RFC 2705</a>,
October 1999.
[<a id="ref-8">8</a>] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model with
SDP", Work in Progress.
[<a id="ref-9">9</a>] ITU-T Recommendation T.38 Annex D, "SIP/SDP Call Establishment
Procedures".
<span class="grey">Andreasen Standards Track [Page 8]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-9" ></span>
<span class="grey"><a href="./rfc3407">RFC 3407</a> SDP Simple Capability Declaration October 2002</span>
<span class="h2"><a class="selflink" id="section-8" href="#section-8">8</a>. Acknowledgments</span>
This work draws upon the ongoing work on SDPng in the IETF MMUSIC
Working Group; in particular [<a href="#ref-4" title=""Requirements for Session Description and Capability Negotiation"">4</a>]. Furthermore this work was inspired
by the CableLabs PacketCable project. The author would like to
recognize and thank Joerg Ott and Jonathan Rosenberg who provided
many detailed comments and suggestions to improve this specification.
Colin Perkins, Orit Levin and Tom Taylor provided valuable feedback
as well.
<span class="h2"><a class="selflink" id="section-9" href="#section-9">9</a>. Author's Address</span>
Flemming Andreasen
Cisco Systems
499 Thornall Street, 8th floor
Edison, NJ
EMail: fandreas@cisco.com
<span class="grey">Andreasen Standards Track [Page 9]</span></pre>
<hr class='noprint'/><!--NewPage--><pre class='newpage'><span id="page-10" ></span>
<span class="grey"><a href="./rfc3407">RFC 3407</a> SDP Simple Capability Declaration October 2002</span>
<span class="h2"><a class="selflink" id="section-10" href="#section-10">10</a>. Full Copyright Statement</span>
Copyright (C) The Internet Society (2002). All Rights Reserved.
This document and translations of it may be copied and furnished to
others, and derivative works that comment on or otherwise explain it
or assist in its implementation may be prepared, copied, published
and distributed, in whole or in part, without restriction of any
kind, provided that the above copyright notice and this paragraph are
included on all such copies and derivative works. However, this
document itself may not be modified in any way, such as by removing
the copyright notice or references to the Internet Society or other
Internet organizations, except as needed for the purpose of
developing Internet standards in which case the procedures for
copyrights defined in the Internet Standards process must be
followed, or as required to translate it into languages other than
English.
The limited permissions granted above are perpetual and will not be
revoked by the Internet Society or its successors or assigns.
This document and the information contained herein is provided on an
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
Acknowledgement
Funding for the RFC Editor function is currently provided by the
Internet Society.
Andreasen Standards Track [Page 10]
</pre>
|