draft-ietf-mmusic-sdp-new-15.txt | draft-ietf-mmusic-sdp-new-16.txt | |||
---|---|---|---|---|
Network Working Group M. Handley | Network Working Group M. Handley | |||
Internet-Draft UCL | Internet-Draft UCL | |||
Obsoletes: 2327, 3266 (if V. Jacobson | Obsoletes: 2327, 3266 (if V. Jacobson | |||
approved) Packet Design | approved) Packet Design | |||
Expires: April 26, 2004 C. Perkins | Expires: November 2, 2004 C. Perkins | |||
University of Glasgow | University of Glasgow | |||
October 27, 2003 | May 4, 2004 | |||
SDP: Session Description Protocol | SDP: Session Description Protocol | |||
draft-ietf-mmusic-sdp-new-15.txt | draft-ietf-mmusic-sdp-new-16.txt | |||
Status of this Memo | Status of this Memo | |||
This document is an Internet-Draft and is in full conformance with | By submitting this Internet-Draft, I certify that any applicable | |||
all provisions of Section 10 of RFC2026. | patent or other IPR claims of which I am aware have been disclosed, | |||
and any of which I become aware will be disclosed, in accordance with | ||||
RFC 3668. | ||||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF), its areas, and its working groups. Note that other | Task Force (IETF), its areas, and its working groups. Note that other | |||
groups may also distribute working documents as Internet-Drafts. | groups may also distribute working documents as Internet-Drafts. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
The list of current Internet-Drafts can be accessed at http:// | The list of current Internet-Drafts can be accessed at http:// | |||
www.ietf.org/ietf/1id-abstracts.txt. | www.ietf.org/ietf/1id-abstracts.txt. | |||
The list of Internet-Draft Shadow Directories can be accessed at | The list of Internet-Draft Shadow Directories can be accessed at | |||
http://www.ietf.org/shadow.html. | http://www.ietf.org/shadow.html. | |||
This Internet-Draft will expire on April 26, 2004. | This Internet-Draft will expire on November 2, 2004. | |||
Copyright Notice | Copyright Notice | |||
Copyright (C) The Internet Society (2003). All Rights Reserved. | Copyright (C) The Internet Society (2004). All Rights Reserved. | |||
Abstract | Abstract | |||
This memo defines the Session Description Protocol (SDP). SDP is | This memo defines the Session Description Protocol (SDP). SDP is | |||
intended for describing multimedia sessions for the purposes of | intended for describing multimedia sessions for the purposes of | |||
session announcement, session invitation, and other forms of | session announcement, session invitation, and other forms of | |||
multimedia session initiation. | multimedia session initiation. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2. Glossary of Terms . . . . . . . . . . . . . . . . . . . . . 3 | 2. Glossary of Terms . . . . . . . . . . . . . . . . . . . . . 3 | |||
3. Examples of SDP Usage . . . . . . . . . . . . . . . . . . . 4 | 3. Examples of SDP Usage . . . . . . . . . . . . . . . . . . . 3 | |||
3.1 Multicast Announcement . . . . . . . . . . . . . . . . . . . 4 | 3.1 Multicast Session Announcement . . . . . . . . . . . . . . 3 | |||
3.2 Session Initiation . . . . . . . . . . . . . . . . . . . . . 4 | 3.2 Session Initiation . . . . . . . . . . . . . . . . . . . . 4 | |||
3.3 Streaming media . . . . . . . . . . . . . . . . . . . . . . 4 | 3.3 Streaming media . . . . . . . . . . . . . . . . . . . . . 4 | |||
3.4 Email and the World Wide Web . . . . . . . . . . . . . . . . 4 | 3.4 Email and the World Wide Web . . . . . . . . . . . . . . . 4 | |||
4. Requirements and Recommendations . . . . . . . . . . . . . . 5 | 4. Requirements and Recommendations . . . . . . . . . . . . . . 5 | |||
4.1 Media Information . . . . . . . . . . . . . . . . . . . . . 6 | 4.1 Media Information . . . . . . . . . . . . . . . . . . . . 5 | |||
4.2 Timing Information . . . . . . . . . . . . . . . . . . . . . 6 | 4.2 Timing Information . . . . . . . . . . . . . . . . . . . . 6 | |||
4.3 Private Sessions . . . . . . . . . . . . . . . . . . . . . . 7 | 4.3 Private Sessions . . . . . . . . . . . . . . . . . . . . . 6 | |||
4.4 Obtaining Further Information about a Session . . . . . . . 7 | 4.4 Obtaining Further Information about a Session . . . . . . 6 | |||
4.5 Categorisation . . . . . . . . . . . . . . . . . . . . . . . 7 | 4.5 Categorisation . . . . . . . . . . . . . . . . . . . . . . 6 | |||
4.6 Internationalization . . . . . . . . . . . . . . . . . . . . 7 | 4.6 Internationalization . . . . . . . . . . . . . . . . . . . 7 | |||
5. SDP Specification . . . . . . . . . . . . . . . . . . . . . 7 | 5. SDP Specification . . . . . . . . . . . . . . . . . . . . . 7 | |||
5.1 Protocol Version ("v=") . . . . . . . . . . . . . . . . . . 10 | 5.1 Protocol Version ("v=") . . . . . . . . . . . . . . . . . 9 | |||
5.2 Origin ("o=") . . . . . . . . . . . . . . . . . . . . . . . 10 | 5.2 Origin ("o=") . . . . . . . . . . . . . . . . . . . . . . 10 | |||
5.3 Session Name ("s=") . . . . . . . . . . . . . . . . . . . . 11 | 5.3 Session Name ("s=") . . . . . . . . . . . . . . . . . . . 11 | |||
5.4 Session and Media Information ("i=") . . . . . . . . . . . . 11 | 5.4 Session Information ("i=") . . . . . . . . . . . . . . . . 11 | |||
5.5 URI ("u=") . . . . . . . . . . . . . . . . . . . . . . . . . 12 | 5.5 URI ("u=") . . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
5.6 Email Address and Phone Number ("e=" and "p=") . . . . . . . 12 | 5.6 Email Address and Phone Number ("e=" and "p=") . . . . . . 11 | |||
5.7 Connection Data ("c=") . . . . . . . . . . . . . . . . . . . 13 | 5.7 Connection Data ("c=") . . . . . . . . . . . . . . . . . . 12 | |||
5.8 Bandwidth ("b=") . . . . . . . . . . . . . . . . . . . . . . 15 | 5.8 Bandwidth ("b=") . . . . . . . . . . . . . . . . . . . . . 14 | |||
5.9 Timing ("t=") . . . . . . . . . . . . . . . . . . . . . . . 16 | 5.9 Timing ("t=") . . . . . . . . . . . . . . . . . . . . . . 15 | |||
5.10 Repeat Times ("r=") . . . . . . . . . . . . . . . . . . . . 17 | 5.10 Repeat Times ("r=") . . . . . . . . . . . . . . . . . . 16 | |||
5.11 Time Zones ("z=") . . . . . . . . . . . . . . . . . . . . . 18 | 5.11 Time Zones ("z=") . . . . . . . . . . . . . . . . . . . 17 | |||
5.12 Encryption Keys ("k=") . . . . . . . . . . . . . . . . . . . 18 | 5.12 Encryption Keys ("k=") . . . . . . . . . . . . . . . . . 18 | |||
5.13 Attributes ("a=") . . . . . . . . . . . . . . . . . . . . . 20 | 5.13 Attributes ("a=") . . . . . . . . . . . . . . . . . . . 19 | |||
5.14 Media Announcements ("m=") . . . . . . . . . . . . . . . . . 21 | 5.14 Media Descriptions ("m=") . . . . . . . . . . . . . . . 21 | |||
6. Suggested Attributes . . . . . . . . . . . . . . . . . . . . 24 | 6. Suggested Attributes . . . . . . . . . . . . . . . . . . . . 24 | |||
7. Communicating Conference Control Policy . . . . . . . . . . 30 | 7. Communicating Conference Control Policy . . . . . . . . . . 29 | |||
8. Security Considerations . . . . . . . . . . . . . . . . . . 30 | 8. Security Considerations . . . . . . . . . . . . . . . . . . 30 | |||
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . 32 | 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . 31 | |||
9.1 The "application/sdp" media type . . . . . . . . . . . . . . 32 | 9.1 The "application/sdp" media type . . . . . . . . . . . . . 31 | |||
9.2 Registration of Parameters . . . . . . . . . . . . . . . . . 33 | 9.2 Registration of Parameters . . . . . . . . . . . . . . . . 32 | |||
A. SDP Grammar . . . . . . . . . . . . . . . . . . . . . . . . 36 | 9.3 Encryption Key Access Methods . . . . . . . . . . . . . . 36 | |||
B. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . 41 | A. SDP Grammar . . . . . . . . . . . . . . . . . . . . . . . . 37 | |||
Normative References . . . . . . . . . . . . . . . . . . . . 42 | B. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . 42 | |||
Informative References . . . . . . . . . . . . . . . . . . . 42 | 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 42 | |||
10.1 Normative References . . . . . . . . . . . . . . . . . . . 42 | ||||
10.2 Informative References . . . . . . . . . . . . . . . . . . 42 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 43 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 43 | |||
Intellectual Property and Copyright Statements . . . . . . . 44 | Intellectual Property and Copyright Statements . . . . . . . 45 | |||
1. Introduction | 1. Introduction | |||
[Note to RFC Editor: All references to RFC XXXX should be replaced by | [Note to RFC Editor: All references to RFC XXXX should be replaced by | |||
the RFC number of this document, when published.] | the RFC number of this document, when published.] | |||
When initiating multimedia teleconferences, voice-over-IP calls, | When initiating multimedia teleconferences, voice-over-IP calls, | |||
streaming video, or other real-time sessions, there is a requirement | streaming video, or other sessions, there is a requirement to convey | |||
to convey media details, transport addresses, and other session | media details, transport addresses, and other session description | |||
description metadata to the participants. | metadata to the participants. | |||
SDP provides a standard representation for such information, | SDP provides a standard representation for such information, | |||
irrespective of how that information is transported. SDP is purely a | irrespective of how that information is transported. SDP is purely a | |||
format for session description - it does not incorporate a transport | format for session description - it does not incorporate a transport | |||
protocol, and is intended to use different transport protocols as | protocol, and is intended to use different transport protocols as | |||
appropriate, including the Session Announcement Protocol [8], Session | appropriate, including the Session Announcement Protocol [8], Session | |||
Initiation Protocol [9], Real-Time Streaming Protocol [10], | Initiation Protocol [9], Real-Time Streaming Protocol [10], | |||
electronic mail using the MIME extensions, and the Hypertext | electronic mail using the MIME extensions, and the Hypertext | |||
Transport Protocol. | Transport Protocol. | |||
skipping to change at page 3, line 38 | skipping to change at page 3, line 38 | |||
description. | description. | |||
2. Glossary of Terms | 2. Glossary of Terms | |||
The following terms are used in this document, and have specific | The following terms are used in this document, and have specific | |||
meaning within the context of this document. | meaning within the context of this document. | |||
Conference: A multimedia conference is a set of two or more | Conference: A multimedia conference is a set of two or more | |||
communicating users along with the software they are using to | communicating users along with the software they are using to | |||
communicate. | communicate. | |||
Session: A multimedia session is a set of multimedia senders and | Session: A multimedia session is a set of multimedia senders and | |||
receivers and the data streams flowing from senders to receivers. | receivers and the data streams flowing from senders to receivers. | |||
A multimedia conference is an example of a multimedia session. | A multimedia conference is an example of a multimedia session. | |||
Session Advertisement: See session announcement. | ||||
Session Announcement: A session announcement is a mechanism by which | ||||
a session description is conveyed to users in a pro-active | ||||
fashion, i.e., the session description was not explicitly | ||||
requested by the user. | ||||
Session Description: A well defined format for conveying sufficient | Session Description: A well defined format for conveying sufficient | |||
information to discover and participate in a multimedia session. | information to discover and participate in a multimedia session. | |||
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 RFC 2119 [1]. | document are to be interpreted as described in RFC 2119 [1]. | |||
3. Examples of SDP Usage | 3. Examples of SDP Usage | |||
3.1 Multicast Announcement | 3.1 Multicast Session Announcement | |||
In order to assist the advertisement of multicast multimedia | In order to assist the advertisement of multicast multimedia | |||
conferences and other multicast sessions, and to communicate the | conferences and other multicast sessions, and to communicate the | |||
relevant session setup information to prospective participants, a | relevant session setup information to prospective participants, a | |||
distributed session directory may be used. An instance of such a | distributed session directory may be used. An instance of such a | |||
session directory periodically sends packets containing a description | session directory periodically sends packets containing a description | |||
of the session to a well known multicast group. These advertisements | of the session to a well known multicast group. These advertisements | |||
are received by other session directories such that potential remote | are received by other session directories such that potential remote | |||
participants can use the session description to start the tools | participants can use the session description to start the tools | |||
required to participate in the session. | required to participate in the session. | |||
One protocol commonly used to implement such a distributed directory | One protocol commonly used to implement such a distributed directory | |||
is the Session Announcement Protocol, SAP [8]. SDP provides the | is the Session Announcement Protocol, SAP [8]. SDP provides the | |||
recommended session description format for such announcements. | recommended session description format for such session | |||
announcements. | ||||
3.2 Session Initiation | 3.2 Session Initiation | |||
The Session Initiation Protocol, SIP [9] is an application layer | The Session Initiation Protocol, SIP [9] is an application layer | |||
control protocol for creating, modifying and terminating sessions | control protocol for creating, modifying and terminating sessions | |||
such as Internet multimedia conferences, Internet telephone calls and | such as Internet multimedia conferences, Internet telephone calls and | |||
multimedia distribution. The SIP messages used to create sessions | multimedia distribution. The SIP messages used to create sessions | |||
carry session descriptions which allow participants to agree on a set | carry session descriptions which allow participants to agree on a set | |||
of compatible media types. These session descriptions are commonly | of compatible media types. These session descriptions are commonly | |||
formatted using SDP. When used with SIP, the offer/answer model [11] | formatted using SDP. When used with SIP, the offer/answer model [11] | |||
skipping to change at page 4, line 52 | skipping to change at page 4, line 43 | |||
properties. RTSP provides an extensible framework to enable | properties. RTSP provides an extensible framework to enable | |||
controlled, on-demand delivery of real-time data, such as audio and | controlled, on-demand delivery of real-time data, such as audio and | |||
video. An RTSP client and server negotiate an appropriate set of | video. An RTSP client and server negotiate an appropriate set of | |||
parameters for media delivery, partially using SDP syntax to describe | parameters for media delivery, partially using SDP syntax to describe | |||
those parameters. | those parameters. | |||
3.4 Email and the World Wide Web | 3.4 Email and the World Wide Web | |||
Alternative means of conveying session descriptions include | Alternative means of conveying session descriptions include | |||
electronic mail and the World Wide Web. For both email and WWW | electronic mail and the World Wide Web. For both email and WWW | |||
distribution, the use of the MIME content type "application/sdp" MUST | distribution, the MIME content type "application/sdp" is used. This | |||
be used. This enables the automatic launching of applications for | enables the automatic launching of applications for participation in | |||
participation in the session from the WWW client or mail reader in a | the session from the WWW client or mail reader in a standard manner. | |||
standard manner. | ||||
Note that announcements of multicast sessions made only via email or | Note that announcements of multicast sessions made only via email or | |||
the World Wide Web (WWW) do not have the property that the receiver | the World Wide Web (WWW) do not have the property that the receiver | |||
of a session announcement can necessarily receive the session because | of a session announcement can necessarily receive the session because | |||
the multicast sessions may be restricted in scope, and access to the | the multicast sessions may be restricted in scope, and access to the | |||
WWW server or reception of email is possible outside this scope. SAP | WWW server or reception of email is possible outside this scope. | |||
announcements do not suffer from this mismatch. | ||||
Session announcements made using SAP do not suffer from this | ||||
mismatch. | ||||
4. Requirements and Recommendations | 4. Requirements and Recommendations | |||
The purpose of SDP is to convey information about media streams in | The purpose of SDP is to convey information about media streams in | |||
multimedia sessions to allow the recipients of a session description | multimedia sessions to allow the recipients of a session description | |||
to participate in the session. SDP is primarily intended for use in | to participate in the session. SDP is primarily intended for use in | |||
an internetwork, although it is sufficiently general that it can | an internetwork, although it is sufficiently general that it can | |||
describe conferences in other network environments. | describe conferences in other network environments. Media streams can | |||
be many-to-many. The times during which the session is active need | ||||
A multimedia session, for these purposes, is defined as a set of | not be continuous. | |||
media streams that exist for some duration of time. Media streams | ||||
can be many-to-many. The times during which the session is active | ||||
need not be continuous. | ||||
Thus far, multicast based sessions on the Internet have differed from | Thus far, multicast based sessions on the Internet have differed from | |||
many other forms of conferencing in that anyone receiving the traffic | many other forms of conferencing in that anyone receiving the traffic | |||
can join the session (unless the session traffic is encrypted). In | can join the session (unless the session traffic is encrypted). In | |||
such an environment, SDP serves two primary purposes. It is a means | such an environment, SDP serves two primary purposes. It is a means | |||
to communicate the existence of a session, and is a means to convey | to communicate the existence of a session, and is a means to convey | |||
sufficient information to enable joining and participating in the | sufficient information to enable joining and participating in the | |||
session. In a unicast environment, only the latter purpose is likely | session. In a unicast environment, only the latter purpose is likely | |||
to be relevant. | to be relevant. | |||
skipping to change at page 7, line 31 | skipping to change at page 6, line 50 | |||
4.4 Obtaining Further Information about a Session | 4.4 Obtaining Further Information about a Session | |||
A session description should convey enough information to decide | A session description should convey enough information to decide | |||
whether or not to participate in a session. SDP may include | whether or not to participate in a session. SDP may include | |||
additional pointers in the form of Universal Resources Identifiers | additional pointers in the form of Universal Resources Identifiers | |||
(URIs) for more information about the session. | (URIs) for more information about the session. | |||
4.5 Categorisation | 4.5 Categorisation | |||
When many session descriptions are being distributed by SAP, or any | When many session descriptions are being distributed by SAP, or any | |||
other advertisement mechanism, it may be desirable to filter | other advertisement mechanism, it may be desirable to filter session | |||
announcements that are of interest from those that are not. SDP | announcements that are of interest from those that are not. SDP | |||
supports a categorisation mechanism for sessions that is capable of | supports a categorisation mechanism for sessions that is capable of | |||
being automated. | being automated. | |||
4.6 Internationalization | 4.6 Internationalization | |||
The SDP specification recommends the use of the ISO 10646 character | The SDP specification recommends the use of the ISO 10646 character | |||
sets in the UTF-8 encoding [3] to allow many different languages to | sets in the UTF-8 encoding [3] to allow many different languages to | |||
be represented. However, to assist in compact representations, SDP | be represented. However, to assist in compact representations, SDP | |||
also allows other character sets such as ISO 8859-1 to be used when | also allows other character sets such as ISO 8859-1 to be used when | |||
desired. Internationalization only applies to free-text fields | desired. Internationalization only applies to free-text fields | |||
(session name and background information), and not to SDP as a whole. | (session name and background information), and not to SDP as a whole. | |||
5. SDP Specification | 5. SDP Specification | |||
SDP session descriptions are entirely textual using the ISO 10646 | An SDP session description is denoted by the MIME content type | |||
"application/sdp" (See Section 9). | ||||
An SDP session description is entirely textual using the ISO 10646 | ||||
character set in UTF-8 encoding. SDP field names and attribute names | character set in UTF-8 encoding. SDP field names and attribute names | |||
use only the US-ASCII subset of UTF-8, but textual fields and | use only the US-ASCII subset of UTF-8, but textual fields and | |||
attribute values MAY use the full ISO 10646 character set. Field and | attribute values MAY use the full ISO 10646 character set. Field and | |||
attribute values which use the full UTF-8 character set are never | attribute values which use the full UTF-8 character set are never | |||
directly compared, hence there is no requirement for UTF-8 | directly compared, hence there is no requirement for UTF-8 | |||
normalization. The textual form, as opposed to a binary encoding | normalization. The textual form, as opposed to a binary encoding | |||
such as ASN.1 or XDR, was chosen to enhance portability, to enable a | such as ASN.1 or XDR, was chosen to enhance portability, to enable a | |||
variety of transports to be used (e.g, session description in a MIME | variety of transports to be used (e.g, session description in a MIME | |||
email message) and to allow flexible, text-based toolkits (e.g., Tcl/ | email message) and to allow flexible, text-based toolkits (e.g., Tcl/ | |||
Tk) to be used to generate and to process session descriptions. | Tk) to be used to generate and to process session descriptions. | |||
However, since SDP may be used in environments where the maximum | However, since SDP may be used in environments where the maximum | |||
permissable size of a session description is limited (e.g. SAP | permissable size of a session description is limited (e.g. SAP | |||
announcements; SIP transported in UDP), the encoding is deliberately | announcements), the encoding is deliberately compact. Also, since | |||
compact. Also, since announcements may be transported via very | announcements may be transported via very unreliable means or damaged | |||
unreliable means or damaged by an intermediate caching server, the | by an intermediate caching server, the encoding was designed with | |||
encoding was designed with strict order and formatting rules so that | strict order and formatting rules so that most errors would result in | |||
most errors would result in malformed announcements which could be | malformed session announcements which could be detected easily and | |||
detected easily and discarded. This also allows rapid discarding of | discarded. This also allows rapid discarding of encrypted session | |||
encrypted announcements for which a receiver does not have the | announcements for which a receiver does not have the correct key. | |||
correct key. | ||||
An SDP session description may contain URIs which reference external | ||||
content in the "u=", "k=" and "a=" lines. These URIs may be | ||||
dereferenced in some cases, making the session description non-self | ||||
contained. | ||||
An SDP session description consists of a number of lines of text of | An SDP session description consists of a number of lines of text of | |||
the form: | the form: | |||
<type>=<value> | <type>=<value> | |||
where <type> MUST be exactly one case-significant character and | where <type> MUST be exactly one case-significant character and | |||
<value> is structured text whose format depends on <type>. In | <value> is structured text whose format depends on <type>. In | |||
general <value> is either a number of fields delimited by a single | general <value> is either a number of fields delimited by a single | |||
space character, or a free format string. Whitespace MUST NOT be used | space character, or a free format string. Whitespace MUST NOT be used | |||
either side of the "=" sign. | either side of the "=" sign. | |||
A session description consists of a session-level section followed by | An SDP session description consists of a session-level section | |||
zero or more media-level sections. The session-level part starts | followed by zero or more media-level sections. The session-level | |||
with a "v=" line and continues to the first media-level section. The | part starts with a "v=" line and continues to the first media-level | |||
media description starts with an "m=" line and continues to the next | section. The media description starts with an "m=" line and | |||
media description or end of the whole session description. In | continues to the next media description or end of the whole session | |||
general, session-level values are the default for all media unless | description. In general, session-level values are the default for | |||
overridden by an equivalent media-level value. | all media unless overridden by an equivalent media-level value. | |||
Some lines in each description are REQUIRED and some are OPTIONAL but | Some lines in each description are REQUIRED and some are OPTIONAL but | |||
all MUST appear in exactly the order given here (the fixed order | all MUST appear in exactly the order given here (the fixed order | |||
greatly enhances error detection and allows for a simple parser). | greatly enhances error detection and allows for a simple parser). | |||
OPTIONAL items are marked with a "*". | OPTIONAL items are marked with a "*". | |||
Session description | Session description | |||
v= (protocol version) | v= (protocol version) | |||
o= (owner/creator and session identifier). | o= (owner/creator and session identifier). | |||
s= (session name) | s= (session name) | |||
skipping to change at page 9, line 33 | skipping to change at page 8, line 49 | |||
Media description | Media description | |||
m= (media name and transport address) | m= (media name and transport address) | |||
i=* (media title) | i=* (media title) | |||
c=* (connection information - optional if included at | c=* (connection information - optional if included at | |||
session-level) | session-level) | |||
b=* (zero or more bandwidth information lines) | b=* (zero or more bandwidth information lines) | |||
k=* (encryption key) | k=* (encryption key) | |||
a=* (zero or more media attribute lines) | a=* (zero or more media attribute lines) | |||
The set of type letters is deliberately small and not intended to be | The set of type letters is deliberately small and not intended to be | |||
extensible -- an SDP parser MUST completely ignore any announcement | extensible -- an SDP parser MUST completely ignore any session | |||
that contains a type letter that it does not understand. The | description that contains a type letter that it does not understand. | |||
attribute mechanism ("a=" described below) is the primary means for | The attribute mechanism ("a=" described below) is the primary means | |||
extending SDP and tailoring it to particular applications or media. | for extending SDP and tailoring it to particular applications or | |||
Some attributes (the ones listed in this document) have a defined | media. Some attributes (the ones listed in Section 6 of this memo) | |||
meaning but others may be added on an application-, media- or | have a defined meaning, but others may be added on an application-, | |||
session-specific basis. An SDP parser MUST ignore any attribute it | media- or session-specific basis. An SDP parser MUST ignore any | |||
doesn't understand. | attribute it doesn't understand. | |||
An SDP session description may contain URIs which reference external | ||||
content in the "u=", "k=" and "a=" lines. These URIs may be | ||||
dereferenced in some cases, making the session description non-self | ||||
contained. | ||||
The connection ("c=") and attribute ("a=") information in the | The connection ("c=") and attribute ("a=") information in the | |||
session-level section applies to all the media of that session unless | session-level section applies to all the media of that session unless | |||
overridden by connection information or an attribute of the same name | overridden by connection information or an attribute of the same name | |||
in the media description. For instance, in the example below, each | in the media description. For instance, in the example below, each | |||
media behaves as if it were given a "recvonly" attribute. | media behaves as if it were given a "recvonly" attribute. | |||
An example SDP description is: | An example SDP description is: | |||
v=0 | v=0 | |||
skipping to change at page 10, line 16 | skipping to change at page 9, line 36 | |||
u=http://www.example.com/seminars/sdp.pdf | u=http://www.example.com/seminars/sdp.pdf | |||
e=j.doe@example.com (Jane Doe) | e=j.doe@example.com (Jane Doe) | |||
c=IN IP4 224.2.17.12/127 | c=IN IP4 224.2.17.12/127 | |||
t=2873397496 2873404696 | t=2873397496 2873404696 | |||
a=recvonly | a=recvonly | |||
m=audio 49170 RTP/AVP 0 | m=audio 49170 RTP/AVP 0 | |||
m=video 51372 RTP/AVP 31 | m=video 51372 RTP/AVP 31 | |||
m=application 32416 udp wb | m=application 32416 udp wb | |||
a=orient:portrait | a=orient:portrait | |||
Text records such as the session name and information are octet | Text fields such as the session name and information are octet | |||
strings which may contain any octet with the exceptions of 0x00 | strings which may contain any octet with the exceptions of 0x00 | |||
(Nul), 0x0a (ASCII newline) and 0x0d (ASCII carriage return). The | (Nul), 0x0a (ASCII newline) and 0x0d (ASCII carriage return). The | |||
sequence CRLF (0x0d0a) is used to end a record, although parsers | sequence CRLF (0x0d0a) is used to end a record, although parsers | |||
SHOULD be tolerant and also accept records terminated with a single | SHOULD be tolerant and also accept records terminated with a single | |||
newline character. By default these byte strings contain ISO-10646 | newline character. If the "a=charset" attribute is not present, | |||
characters in UTF-8 encoding, but this default MAY be changed using | these octet strings MUST be interpreted as containing ISO-10646 | |||
the "charset" attribute. | characters in UTF-8 encoding (the presence of the "a=charset" | |||
attribute MAY force some fields to be interpreted differently). | ||||
5.1 Protocol Version ("v=") | 5.1 Protocol Version ("v=") | |||
v=0 | v=0 | |||
The "v=" field gives the version of the Session Description Protocol. | The "v=" field gives the version of the Session Description Protocol. | |||
There is no minor version number. | This memo defines version 0. There is no minor version number. | |||
5.2 Origin ("o=") | 5.2 Origin ("o=") | |||
o=<username> <session id> <version> <network type> <address type> | o=<username> <sess-id> <sess-version> <nettype> <addrtype> | |||
<address> | <unicast-address> | |||
The "o=" field gives the originator of the session (her username and | The "o=" field gives the originator of the session (her username and | |||
the address of the user's host) plus a session id and session version | the address of the user's host) plus a session identifier and version | |||
number. | number: | |||
<username> is the user's login on the originating host, or it is "-" | <username> is the user's login on the originating host, or it is "-" | |||
if the originating host does not support the concept of user ids. | if the originating host does not support the concept of user ids. | |||
<username> MUST NOT contain spaces. | The <username> MUST NOT contain spaces. | |||
<sess-id> is a numeric string such that the tuple of <username>, | ||||
<session id> is a numeric string such that the tuple of <username>, | <sess-id>, <nettype>, <addrtype> and <unicast-address> form a | |||
<session id>, <network type>, <address type> and <address> form a | globally unique identifier for the session. The method of | |||
globally unique identifier for the session. The method of session | <sess-id> allocation is up to the creating tool, but it has been | |||
id allocation is up to the creating tool, but it has been | ||||
suggested that a Network Time Protocol (NTP) format timestamp be | suggested that a Network Time Protocol (NTP) format timestamp be | |||
used to ensure uniqueness [7]. | used to ensure uniqueness [7]. | |||
<sess-version> is a version number for this session description. Its | ||||
<version> is a version number for this announcement. It is needed for | usage is up to the creating tool, so long as <sess-version> is | |||
proxy announcements to detect which of several announcements for | increased when a modification is made to the session data. Again, | |||
the same session is the most recent. Again its usage is up to the | it is RECOMMENDED that an NTP format timestamp is used. | |||
creating tool, so long as <version> is increased when a | <nettype> is a text string giving the type of network. Initially "IN" | |||
modification is made to the session data. Again, it is RECOMMENDED | is defined to have the meaning "Internet", but other values MAY be | |||
(but not mandatory) that an NTP format timestamp is used. | registered in future (see Section 9). | |||
<addrtype> is a text string giving the type of the address that | ||||
<network type> is a text string giving the type of network. | follows. Initially "IP4" and "IP6" are defined, but other values | |||
Initially "IN" is defined to have the meaning "Internet". | MAY be registered in future (see Section 9). | |||
<unicast-address> is the address of the machine from which the | ||||
<address type> is a text string giving the type of the address that | session was created. For an address type of IP4, this is either | |||
follows. Initially "IP4" and "IP6" are defined. | the fully-qualified domain name of the machine, or the | |||
<address> is the globally unique address of the machine from which | ||||
the session was created. For an address type of IP4, this is | ||||
either the fully-qualified domain name of the machine, or the | ||||
dotted-decimal representation of the IP version 4 address of the | dotted-decimal representation of the IP version 4 address of the | |||
machine. For an address type of IP6, this is either the | machine. For an address type of IP6, this is either the | |||
fully-qualified domain name of the machine, or the compressed | fully-qualified domain name of the machine, or the compressed | |||
textual representation of the IP version 6 address of the machine. | textual representation of the IP version 6 address of the machine. | |||
For both IP4 and IP6, the fully-qualified domain name is the form | For both IP4 and IP6, the fully-qualified domain name is the form | |||
that SHOULD be given unless this is unavailable, in which case the | that SHOULD be given unless this is unavailable, in which case the | |||
globally unique address may be substituted. A local IP address | globally unique address MAY be substituted. A local IP address | |||
MUST NOT be used in any context where the SDP description might | MUST NOT be used in any context where the SDP description might | |||
leave the scope in which the address is meaningful. | leave the scope in which the address is meaningful. | |||
In general, the "o=" field serves as a globally unique identifier for | In general, the "o=" field serves as a globally unique identifier for | |||
this version of this session description, and the subfields excepting | this version of this session description, and the subfields excepting | |||
the version taken together identify the session irrespective of any | the version taken together identify the session irrespective of any | |||
modifications. | modifications. | |||
5.3 Session Name ("s=") | 5.3 Session Name ("s=") | |||
s=<session name> | s=<session name> | |||
The "s=" field is the session name. There MUST be one and only one | The "s=" field is the textual session name. There MUST be one and | |||
"s=" field per session description. The "s=" field MUST NOT be empty | only one "s=" field per session description. The "s=" field MUST NOT | |||
and SHOULD contain ISO 10646 characters (but see also the "a=charset" | be empty and SHOULD contain ISO 10646 characters (but see also the | |||
attribute). If a session has no meaningful name, the value "s= " | "a=charset" attribute). If a session has no meaningful name, the | |||
SHOULD be used (i.e. a single space as the session name). | value "s= " SHOULD be used (i.e. a single space as the session name). | |||
5.4 Session and Media Information ("i=") | 5.4 Session Information ("i=") | |||
i=<session description> | i=<session description> | |||
The "i=" field is information about the session. There may be at | The "i=" field provides textual information about the session. There | |||
most one session-level "i=" field per session description, and at | may be at most one session-level "i=" field per session description, | |||
most one "i=" field per media. Although it may be omitted, this is | and at most one "i=" field per media. If the "a=charset" attribute is | |||
NOT RECOMMENDED for session announcements, and user interfaces for | present, it specifies the character set used in the "i=" field. If | |||
composing sessions should require text to be entered. If it is | the "a=charset" attribute is not present, the "i=" field MUST contain | |||
present it must contain ISO 10646 characters (but see also the | ISO 10646 characters in UTF-8 encoding. | |||
"a=charset" attribute below). | ||||
A single "i=" field can also be used for each media definition. In | A single "i=" field MAY also be used for each media definition. In | |||
media definitions, "i=" fields are primarily intended for labeling | media definitions, "i=" fields are primarily intended for labeling | |||
media streams. As such, they are most likely to be useful when a | media streams. As such, they are most likely to be useful when a | |||
single session has more than one distinct media stream of the same | single session has more than one distinct media stream of the same | |||
media type. An example would be two different whiteboards, one for | media type. An example would be two different whiteboards, one for | |||
slides and one for feedback and questions. | slides and one for feedback and questions. | |||
5.5 URI ("u=") | 5.5 URI ("u=") | |||
u=<URI> | u=<uri> | |||
A URI is a Universal Resource Identifier as used by WWW clients [4]. | A URI is a Universal Resource Identifier as used by WWW clients [4]. | |||
The URI should be a pointer to additional information about the | The URI should be a pointer to additional information about the | |||
conference. This field is OPTIONAL, but if it is present it MUST be | conference. This field is OPTIONAL, but if it is present it MUST be | |||
specified before the first media field. No more than one URI field is | specified before the first media field. No more than one URI field is | |||
allowed per session description. | allowed per session description. | |||
5.6 Email Address and Phone Number ("e=" and "p=") | 5.6 Email Address and Phone Number ("e=" and "p=") | |||
e=<email address> | e=<email-address> | |||
p=<phone number> | p=<phone-number> | |||
These specify contact information for the person responsible for the | The "e=" and "p=" lines specify contact information for the person | |||
conference. This is not necessarily the same person that created the | responsible for the conference. This is not necessarily the same | |||
conference announcement. | person that created the conference announcement. | |||
Inclusion of an email address or phone number is OPTIONAL. Note that | Inclusion of an email address or phone number is OPTIONAL. Note that | |||
the previous version of SDP specified that either an email field or a | the previous version of SDP specified that either an email field or a | |||
phone field MUST be specified, but this was widely ignored. The | phone field MUST be specified, but this was widely ignored. The | |||
change brings the specification into line with common usage. | change brings the specification into line with common usage. | |||
If the email addres or phone number are present, they MUST be | If the email addres or phone number are present, they MUST be | |||
specified before the first media field. More than one email or phone | specified before the first media field. More than one email or phone | |||
field can be given for a session description. | field can be given for a session description. | |||
Phone numbers SHOULD be given in the conventional international | Phone numbers SHOULD be given in the form of an international public | |||
format: preceded by a "+" and the international country code. There | telecommunication number (see ITU-T Recommendation E.164) preceded by | |||
must be a space or a hyphen ("-") between the country code and the | a "+". Spaces and hyphens may be used to split up a phone field to | |||
rest of the phone number. Spaces and hyphens may be used to split up | aid readability if desired. For example: | |||
a phone field to aid readability if desired. For example: | ||||
p=+44-171-380-7777 or p=+1 617 555 6011 | p=+44-171-380-7777 or p=+1 617 555 6011 | |||
Both email addresses and phone numbers can have an optional free text | ||||
Both email addresses and phone numbers can have an OPTIONAL free text | ||||
string associated with them, normally giving the name of the person | string associated with them, normally giving the name of the person | |||
who may be contacted. This should be enclosed in parenthesis if it | who may be contacted. This MUST be enclosed in parenthesis if it is | |||
is present. For example: | present. For example: | |||
e=j.doe@example.com (Jane Doe) | e=j.doe@example.com (Jane Doe) | |||
The alternative RFC822 name quoting convention is also allowed for | The alternative RFC 2822 name quoting convention is also allowed for | |||
both email addresses and phone numbers. For example: | both email addresses and phone numbers. For example: | |||
e=Jane Doe <j.doe@example.com> | e=Jane Doe <j.doe@example.com> | |||
The free text string SHOULD be in the ISO-10646 character set with | The free text string SHOULD be in the ISO-10646 character set with | |||
UTF-8 encoding, or alternatively in ISO-8859-1 or other encodings if | UTF-8 encoding, or alternatively in ISO-8859-1 or other encodings if | |||
the appropriate charset session-level attribute is set. | the appropriate session-level "a=charset" attribute is set. | |||
5.7 Connection Data ("c=") | 5.7 Connection Data ("c=") | |||
c=<network type> <address type> <connection address> | c=<nettype> <addrtype> <connection-address> | |||
The "c=" field contains connection data. | The "c=" field contains connection data. | |||
A session announcement MUST contain either at least one "c=" field in | A session description MUST contain either at least one "c=" field in | |||
each media description (see below) or a single "c=" field at the | each media description or a single "c=" field at the session level. | |||
session-level. It MAY contain a single session-level "c=" field and | It MAY contain a single session-level "c=" field and additional "c=" | |||
additional "c=" field(s) per media description, in which case the | field(s) per media description, in which case the per-media values | |||
per-media values override the session-level settings for the | override the session-level settings for the respective media. | |||
respective media. | ||||
The first sub-field is the network type, which is a text string | The first sub-field ("<nettype>") is the network type, which is a | |||
giving the type of network. Initially "IN" is defined to have the | text string giving the type of network. Initially "IN" is defined to | |||
meaning "Internet". | have the meaning "Internet", but other values MAY be registered in | |||
the future (see Section 9). | ||||
The second sub-field is the address type. This allows SDP to be used | The second sub-field ("<addrtype>") is the address type. This allows | |||
for sessions that are not IP based. Currently only IP4 and IP6 are | SDP to be used for sessions that are not IP based. Currently only IP4 | |||
defined. | and IP6 are defined, but other values MAY be registered in the future | |||
(see Section 9). | ||||
The third sub-field is the connection address. Optional extra | The third sub-field ("<connection-address>") is the connection | |||
sub-fields MAY be added after the connection address depending on the | address. OPTIONAL sub-fields MAY be added after the connection | |||
value of the <address type> field. | address depending on the value of the <addrtype> field. | |||
For IP4 and IP6 addresses, the connection address is defined as | When the <addrtype> is IP4 and IP6, the connection address is defined | |||
follows: | as follows: | |||
o If the session is multicast, the connection address will be an IP | o If the session is multicast, the connection address will be an IP | |||
multicast group address. If the session is not multicast, then | multicast group address. If the session is not multicast, then | |||
the connection address contains the unicast IP address of the | the connection address contains the unicast IP address of the | |||
expected data source or data relay or data sink as determined by | expected data source or data relay or data sink as determined by | |||
additional attribute fields. It is not expected that unicast | additional attribute fields. It is not expected that unicast | |||
addresses will be given in a session description that is | addresses will be given in a session description that is | |||
communicated by a multicast announcement, though this is not | communicated by a multicast announcement, though this is not | |||
prohibited. | prohibited. | |||
o Conferences using an IPv4 multicast connection address MUST also | o Conferences using an IPv4 multicast connection address MUST also | |||
have a time to live (TTL) value present in addition to the | have a time to live (TTL) value present in addition to the | |||
multicast address. The TTL and the address together define the | multicast address. The TTL and the address together define the | |||
scope with which multicast packets sent in this conference will be | scope with which multicast packets sent in this conference will be | |||
sent. TTL values MUST be in the range 0-255. | sent. TTL values MUST be in the range 0-255. | |||
The TTL for the session is appended to the address using a slash as a | The TTL for the session is appended to the address using a slash as a | |||
separator. An example is: | separator. An example is: | |||
c=IN IP4 224.2.36.42/127 | c=IN IP4 224.2.36.42/127 | |||
skipping to change at page 14, line 37 | skipping to change at page 14, line 4 | |||
only subscribing to a subset of these layers. Such layered encodings | only subscribing to a subset of these layers. Such layered encodings | |||
are normally transmitted in multiple multicast groups to allow | are normally transmitted in multiple multicast groups to allow | |||
multicast pruning. This technique keeps unwanted traffic from sites | multicast pruning. This technique keeps unwanted traffic from sites | |||
only requiring certain levels of the hierarchy. For applications | only requiring certain levels of the hierarchy. For applications | |||
requiring multiple multicast groups, we allow the following notation | requiring multiple multicast groups, we allow the following notation | |||
to be used for the connection address: | to be used for the connection address: | |||
<base multicast address>[/<ttl>]/<number of addresses> | <base multicast address>[/<ttl>]/<number of addresses> | |||
If the number of addresses is not given it is assumed to be one. | If the number of addresses is not given it is assumed to be one. | |||
Multicast addresses so assigned are contiguously allocated above the | Multicast addresses so assigned are contiguously allocated above the | |||
base address, so that, for example: | base address, so that, for example: | |||
c=IN IP4 224.2.1.1/127/3 | c=IN IP4 224.2.1.1/127/3 | |||
would state that addresses 224.2.1.1, 224.2.1.2 and 224.2.1.3 are to | would state that addresses 224.2.1.1, 224.2.1.2 and 224.2.1.3 are to | |||
be used at a ttl of 127. This is semantically identical to including | be used at a TTL of 127. This is semantically identical to including | |||
multiple "c=" lines in a media description: | multiple "c=" lines in a media description: | |||
c=IN IP4 224.2.1.1/127 | c=IN IP4 224.2.1.1/127 | |||
c=IN IP4 224.2.1.2/127 | c=IN IP4 224.2.1.2/127 | |||
c=IN IP4 224.2.1.3/127 | c=IN IP4 224.2.1.3/127 | |||
Similarly, an IPv6 example would be: | Similarly, an IPv6 example would be: | |||
c=IN IP6 FF15::101/3 | c=IN IP6 FF15::101/3 | |||
skipping to change at page 15, line 25 | skipping to change at page 14, line 40 | |||
Multiple addresses or "c=" lines MAY be specified on a per-media | Multiple addresses or "c=" lines MAY be specified on a per-media | |||
basis only if they provide multicast addresses for different layers | basis only if they provide multicast addresses for different layers | |||
in a hierarchical or layered encoding scheme. They MUST NOT be | in a hierarchical or layered encoding scheme. They MUST NOT be | |||
specified for a session-level "c=" field. | specified for a session-level "c=" field. | |||
The slash notation described above MUST NOT be used for IP unicast | The slash notation described above MUST NOT be used for IP unicast | |||
addresses. | addresses. | |||
5.8 Bandwidth ("b=") | 5.8 Bandwidth ("b=") | |||
b=<modifier>:<bandwidth-value> | b=<bwtype>:<bandwidth> | |||
This specifies the proposed bandwidth to be used by the session or | ||||
media, and is OPTIONAL. | ||||
The <bandwidth-value> is in kilobits per second by default. Modifiers | ||||
MAY specify that alternative units are to be used (the modifiers | ||||
defined in this memo use the default units). | ||||
The <modifier> is a single alphanumeric word giving the meaning of | This OPTIONAL field denotes the proposed bandwidth to be used by the | |||
the bandwidth figure. Two modifiers are initially defined: | session or media. The <bwtype> is an alphanumeric modifier giving | |||
the meaning of the <bandwidth> figure. Two values are initially | ||||
defined, but other values MAY be registered in future (see Section | ||||
9): | ||||
CT If the bandwidth of a session or media in a session is different | CT If the bandwidth of a session or media in a session is different | |||
from the bandwidth implicit from the scope, a "b=CT:..." line | from the bandwidth implicit from the scope, a "b=CT:..." line | |||
should be supplied for the session giving the proposed upper limit | SHOULD be supplied for the session giving the proposed upper limit | |||
to the bandwidth used. The primary purpose of this is to give an | to the bandwidth used. The primary purpose of this is to give an | |||
approximate idea as to whether two or more sessions can co-exist | approximate idea as to whether two or more sessions can co-exist | |||
simultaneously. When using the CT modifier with RTP, if several | simultaneously. When using the CT modifier with RTP, if several | |||
RTP sessions are part of the conference, the conference total | RTP sessions are part of the conference, the conference total | |||
refers to total bandwidth of all RTP sessions. | refers to total bandwidth of all RTP sessions. | |||
AS The bandwidth is interpreted to be application-specific (it will | AS The bandwidth is interpreted to be application-specific (it will | |||
be the application's concept of maximum bandwidth). Normally this | be the application's concept of maximum bandwidth). Normally this | |||
will coincide with what is set on the application's "maximum | will coincide with what is set on the application's "maximum | |||
bandwidth" control if applicable. For RTP based applications, AS | bandwidth" control if applicable. For RTP based applications, AS | |||
gives the RTP "session bandwidth" as defined in section 6.2 of | gives the RTP "session bandwidth" as defined in section 6.2 of | |||
[12]. | [12]. | |||
Note that CT gives a total bandwidth figure for all the media at all | Note that CT gives a total bandwidth figure for all the media at all | |||
sites. AS gives a bandwidth figure for a single media at a single | sites. AS gives a bandwidth figure for a single media at a single | |||
site, although there may be many sites sending simultaneously. | site, although there may be many sites sending simultaneously. | |||
skipping to change at page 16, line 9 | skipping to change at page 15, line 18 | |||
be the application's concept of maximum bandwidth). Normally this | be the application's concept of maximum bandwidth). Normally this | |||
will coincide with what is set on the application's "maximum | will coincide with what is set on the application's "maximum | |||
bandwidth" control if applicable. For RTP based applications, AS | bandwidth" control if applicable. For RTP based applications, AS | |||
gives the RTP "session bandwidth" as defined in section 6.2 of | gives the RTP "session bandwidth" as defined in section 6.2 of | |||
[12]. | [12]. | |||
Note that CT gives a total bandwidth figure for all the media at all | Note that CT gives a total bandwidth figure for all the media at all | |||
sites. AS gives a bandwidth figure for a single media at a single | sites. AS gives a bandwidth figure for a single media at a single | |||
site, although there may be many sites sending simultaneously. | site, although there may be many sites sending simultaneously. | |||
Tool writers MAY define experimental bandwidth modifiers by prefixing | A prefix "X-" is defined for <bwtype> names. This is intended for | |||
their modifier with "X-". For example: | experimental purposes only. For example: | |||
b=X-YZ:128 | b=X-YZ:128 | |||
Use of the "X-" prefix is NOT RECOMMENDED: instead new modifiers | Use of the "X-" prefix is NOT RECOMMENDED: instead new modifiers | |||
SHOULD be registered with IANA in the standard namespace. SDP parsers | SHOULD be registered with IANA in the standard namespace. SDP parsers | |||
MUST ignore bandwidth fields with unknown modifiers. Modifiers MUST | MUST ignore bandwidth fields with unknown modifiers. Modifiers MUST | |||
be alpha-numeric and, although no length limit is given, they are | be alpha-numeric and, although no length limit is given, they are | |||
recommended to be short. | recommended to be short. | |||
The <bandwidth> is in kilobits per second by default. Modifiers MAY | ||||
specify that alternative units are to be used (the modifiers defined | ||||
in this memo use the default units). | ||||
5.9 Timing ("t=") | 5.9 Timing ("t=") | |||
t=<start time> <stop time> | t=<start-time> <stop-time> | |||
"t=" fields specify the start and stop times for a session. Multiple | The "t=" lines specify the start and stop times for a session. | |||
"t=" fields MAY be used if a session is active at multiple | Multiple "t=" lines MAY be used if a session is active at multiple | |||
irregularly spaced times; each additional "t=" field specifies an | irregularly spaced times; each additional "t=" lines specifies an | |||
additional period of time for which the session will be active. If | additional period of time for which the session will be active. If | |||
the session is active at regular times, an "r=" field (see below) | the session is active at regular times, an "r=" line (see below) | |||
should be used in addition to and following a "t=" field - in which | should be used in addition to, and following, a "t=" line - in which | |||
case the "t=" field specifies the start and stop times of the repeat | case the "t=" line specifies the start and stop times of the repeat | |||
sequence. | sequence. | |||
The first and second sub-fields give the start and stop times for the | The first and second sub-fields give the start and stop times for the | |||
session respectively. These values are the decimal representation of | session respectively. These values are the decimal representation of | |||
Network Time Protocol (NTP) time values in seconds [7]. To convert | Network Time Protocol (NTP) time values in seconds [7]. To convert | |||
these values to UNIX time, subtract decimal 2208988800. | these values to UNIX time, subtract decimal 2208988800. | |||
NTP timestamps are 64 bit values which wrap sometime in the year | NTP timestamps are 64 bit values which wrap sometime in the year | |||
2036. Since SDP uses an arbitrary length decimal representation, | 2036. Since SDP uses an arbitrary length decimal representation, | |||
this should not cause an issue (SDP timestamps will continue counting | this should not cause an issue (SDP timestamps will continue counting | |||
seconds since 1900, NTP will use the value modulo the 64 bit limit). | seconds since 1900, NTP will use the value modulo the 64 bit limit). | |||
If the stop-time is set to zero, then the session is not bounded, | If the <stop-time> is set to zero, then the session is not bounded, | |||
though it will not become active until after the start-time. If the | though it will not become active until after the <start-time>. If | |||
start-time is also zero, the session is regarded as permanent. | the <start-time> is also zero, the session is regarded as permanent. | |||
User interfaces SHOULD strongly discourage the creation of unbounded | User interfaces SHOULD strongly discourage the creation of unbounded | |||
and permanent sessions as they give no information about when the | and permanent sessions as they give no information about when the | |||
session is actually going to terminate, and so make scheduling | session is actually going to terminate, and so make scheduling | |||
difficult. | difficult. | |||
The general assumption may be made, when displaying unbounded | The general assumption may be made, when displaying unbounded | |||
sessions that have not timed out to the user, that an unbounded | sessions that have not timed out to the user, that an unbounded | |||
session will only be active until half an hour from the current time | session will only be active until half an hour from the current time | |||
or the session start time, whichever is the later. If behaviour | or the session start time, whichever is the later. If behaviour | |||
skipping to change at page 17, line 20 | skipping to change at page 16, line 34 | |||
Permanent sessions may be shown to the user as never being active | Permanent sessions may be shown to the user as never being active | |||
unless there are associated repeat times which state precisely when | unless there are associated repeat times which state precisely when | |||
the session will be active. In general, permanent sessions SHOULD | the session will be active. In general, permanent sessions SHOULD | |||
NOT be created for any session expected to have a duration of less | NOT be created for any session expected to have a duration of less | |||
than 2 months, and should be discouraged for sessions expected to | than 2 months, and should be discouraged for sessions expected to | |||
have a duration of less than 6 months. | have a duration of less than 6 months. | |||
5.10 Repeat Times ("r=") | 5.10 Repeat Times ("r=") | |||
r=<repeat interval> <active duration> <offsets from start-time> | r=<repeat-interval> <active duration> <offsets from start-time> | |||
"r=" fields specify repeat times for a session. For example, if a | "r=" fields specify repeat times for a session. For example, if a | |||
session is active at 10am on Monday and 11am on Tuesday for one hour | session is active at 10am on Monday and 11am on Tuesday for one hour | |||
each week for three months, then the <start time> in the | each week for three months, then the <start-time> in the | |||
corresponding "t=" field would be the NTP representation of 10am on | corresponding "t=" field would be the NTP representation of 10am on | |||
the first Monday, the <repeat interval> would be 1 week, the <active | the first Monday, the <repeat interval> would be 1 week, the <active | |||
duration> would be 1 hour, and the offsets would be zero and 25 | duration> would be 1 hour, and the offsets would be zero and 25 | |||
hours. The corresponding "t=" field stop time would be the NTP | hours. The corresponding "t=" field stop time would be the NTP | |||
representation of the end of the last session three months later. By | representation of the end of the last session three months later. By | |||
default all fields are in seconds, so the "r=" and "t=" fields might | default all fields are in seconds, so the "r=" and "t=" fields might | |||
be: | be: | |||
t=3034423619 3042462419 | t=3034423619 3042462419 | |||
r=604800 3600 0 90000 | r=604800 3600 0 90000 | |||
skipping to change at page 17, line 47 | skipping to change at page 17, line 13 | |||
days, hours or minutes. The syntax for these is a number immediately | days, hours or minutes. The syntax for these is a number immediately | |||
followed by a single case-sensitive character. Fractional units are | followed by a single case-sensitive character. Fractional units are | |||
not allowed - a smaller unit should be used instead. The following | not allowed - a smaller unit should be used instead. The following | |||
unit specification characters are allowed: | unit specification characters are allowed: | |||
d - days (86400 seconds) | d - days (86400 seconds) | |||
h - hours (3600 seconds) | h - hours (3600 seconds) | |||
m - minutes (60 seconds) | m - minutes (60 seconds) | |||
s - seconds (allowed for completeness but not recommended) | s - seconds (allowed for completeness but not recommended) | |||
Thus, the above announcement could also have been written: | Thus, the above session announcement could also have been written: | |||
r=7d 1h 0 25h | r=7d 1h 0 25h | |||
Monthly and yearly repeats cannot be directly specified with a single | Monthly and yearly repeats cannot be directly specified with a single | |||
SDP repeat time - instead separate "t=" fields should be used to | SDP repeat time - instead separate "t=" fields should be used to | |||
explicitly list the session times. | explicitly list the session times. | |||
5.11 Time Zones ("z=") | 5.11 Time Zones ("z=") | |||
z=<adjustment time> <offset> <adjustment time> <offset> .... | z=<adjustment time> <offset> <adjustment time> <offset> .... | |||
skipping to change at page 18, line 39 | skipping to change at page 18, line 5 | |||
This specifies that at time 2882844526 the time base by which the | This specifies that at time 2882844526 the time base by which the | |||
session's repeat times are calculated is shifted back by 1 hour, and | session's repeat times are calculated is shifted back by 1 hour, and | |||
that at time 2898848070 the session's original time base is restored. | that at time 2898848070 the session's original time base is restored. | |||
Adjustments are always relative to the specified start time - they | Adjustments are always relative to the specified start time - they | |||
are not cumulative. Adjustments apply to all "t=" and "r=" lines in | are not cumulative. Adjustments apply to all "t=" and "r=" lines in | |||
a session description. | a session description. | |||
If a session is likely to last several years, it is expected that the | If a session is likely to last several years, it is expected that the | |||
session announcement will be modified periodically rather than | session announcement will be modified periodically rather than | |||
transmit several years worth of adjustments in one announcement. | transmit several years worth of adjustments in one session | |||
announcement. | ||||
5.12 Encryption Keys ("k=") | 5.12 Encryption Keys ("k=") | |||
k=<method> | k=<method> | |||
k=<method>:<encryption key> | k=<method>:<encryption key> | |||
If transported over a secure and trusted channel, the session | If transported over a secure and trusted channel, the session | |||
description protocol MAY be used to convey encryption keys. A simple | description protocol MAY be used to convey encryption keys. A simple | |||
mechanism for key exchange is provided by the key field ("k=") | mechanism for key exchange is provided by the key field ("k=") | |||
although this is primarily supported for compatibility with older | although this is primarily supported for compatibility with older | |||
skipping to change at page 20, line 49 | skipping to change at page 20, line 31 | |||
attribute conveys that the attribute is a property of | attribute conveys that the attribute is a property of | |||
the session. An example might be "a=recvonly". | the session. An example might be "a=recvonly". | |||
o value attributes: | o value attributes: | |||
A value attribute is of the form "a=<attribute>:<value>". | A value attribute is of the form "a=<attribute>:<value>". | |||
For example, a whiteboard could have the value attribute | For example, a whiteboard could have the value attribute | |||
"a=orient:landscape" | "a=orient:landscape" | |||
Attribute interpretation depends on the media tool being invoked. | Attribute interpretation depends on the media tool being invoked. | |||
Thus receivers of session descriptions should be configurable in | Thus receivers of session descriptions should be configurable in | |||
their interpretation of announcements in general and of attributes in | their interpretation of session descriptions in general and of | |||
particular. | attributes in particular. | |||
Attribute names MUST be in the US-ASCII subset of ISO-10646/UTF-8. | Attribute names MUST be in the US-ASCII subset of ISO-10646/UTF-8. | |||
Attribute values are octet strings, and MAY use any octet value | Attribute values are octet strings, and MAY use any octet value | |||
except 0x00 (Nul), 0x0A (LF), and 0x0D (CR). By default, attribute | except 0x00 (Nul), 0x0A (LF), and 0x0D (CR). By default, attribute | |||
values are to be interpreted as in ISO-10646 character set with UTF-8 | values are to be interpreted as in ISO-10646 character set with UTF-8 | |||
encoding. Unlike other text fields, attribute values are NOT | encoding. Unlike other text fields, attribute values are NOT | |||
normally affected by the "charset" attribute as this would make | normally affected by the "charset" attribute as this would make | |||
comparisons against known values problematic. However, when an | comparisons against known values problematic. However, when an | |||
attribute is defined, it can be defined to be charset-dependent, in | attribute is defined, it can be defined to be charset-dependent, in | |||
which case it's value should be interpreted in the session charset | which case it's value should be interpreted in the session charset | |||
rather than in ISO-10646. | rather than in ISO-10646. | |||
Attributes MUST be registered with IANA (see Section 9). If an | Attributes MUST be registered with IANA (see Section 9). If an | |||
attribute is received that is not understood, it MUST be ignored by | attribute is received that is not understood, it MUST be ignored by | |||
the receiver. | the receiver. | |||
5.14 Media Announcements ("m=") | 5.14 Media Descriptions ("m=") | |||
m=<media> <port> <transport> <fmt list> | m=<media> <port> <proto> <fmt> | |||
A session description may contain a number of media descriptions. | A session description may contain a number of media descriptions. | |||
Each media description starts with an "m=" field, and is terminated | Each media description starts with an "m=" field, and is terminated | |||
by either the next "m=" field or by the end of the session | by either the next "m=" field or by the end of the session | |||
description. A media field has several sub-fields. | description. A media field has several sub-fields. | |||
The first sub-field is the media type. Currently defined media are | The first sub-field ("<media>") is the media type. Currently defined | |||
"audio", "video", "application", "data" and "control", though this | media are "audio", "video", "text", "application", "data" and | |||
list may be extended in future. The difference between "application" | "control", though this list may be extended in future. The | |||
and "data" is that the former is a media flow such as whiteboard | difference between "application" and "data" is that the former is a | |||
information, and the latter is bulk-data transfer such as | media flow such as whiteboard information, and the latter is | |||
multicasting of program executables which will not typically be | bulk-data transfer such as multicasting of program executables which | |||
displayed to the user. "control" is used to specify an additional | will not typically be displayed to the user. "control" is used to | |||
conference control channel for the session. | specify an additional conference control channel for the session. | |||
The second sub-field is the transport port to which the media stream | The second sub-field ("<port>") is the transport port to which the | |||
is sent. The meaning of the transport port depends on the network | media stream is sent. The meaning of the transport port depends on | |||
being used as specified in the relevant "c=" field, and on the | the network being used as specified in the relevant "c=" field, and | |||
transport protocol defined in the third sub-field. Other ports used | on the transport protocol defined in the third sub-field. Other | |||
by the media application (such as the RTCP port [12]) MAY be derived | ports used by the media application (such as the RTCP port [12]) MAY | |||
algorithmically from the base media port or MAY be specified in a | be derived algorithmically from the base media port or MAY be | |||
separate attribute (e.g. "a=rtcp:" as defined in [14]). | specified in a separate attribute (e.g. "a=rtcp:" as defined in | |||
[14]). | ||||
For applications where hierarchically encoded streams are being sent | For applications where hierarchically encoded streams are being sent | |||
to a unicast address, it may be necessary to specify multiple | to a unicast address, it may be necessary to specify multiple | |||
transport ports. This is done using a similar notation to that used | transport ports. This is done using a similar notation to that used | |||
for IP multicast addresses in the "c=" field: | for IP multicast addresses in the "c=" field: | |||
m=<media> <port>/<number of ports> <transport> <fmt list> | m=<media> <port>/<number of ports> <transport> <fmt list> | |||
In such a case, the ports used depend on the transport protocol. For | In such a case, the ports used depend on the transport protocol. For | |||
RTP, the default is that only the even numbered ports are used for | RTP, the default is that only the even numbered ports are used for | |||
data with the corresponding one-higher odd ports used for the RTCP | data with the corresponding one-higher odd ports used for the RTCP | |||
belonging to the RTP session, and the <number of ports> denoting the | belonging to the RTP session, and the <number of ports> denoting the | |||
number of RTP sessions. For example: | number of RTP sessions. For example: | |||
m=video 49170/2 RTP/AVP 31 | m=video 49170/2 RTP/AVP 31 | |||
would specify that ports 49170 and 49171 form one RTP/RTCP pair and | would specify that ports 49170 and 49171 form one RTP/RTCP pair and | |||
49172 and 49173 form the second RTP/RTCP pair. RTP/AVP is the | 49172 and 49173 form the second RTP/RTCP pair. RTP/AVP is the | |||
skipping to change at page 22, line 28 | skipping to change at page 22, line 15 | |||
If multiple addresses are specified in the "c=" field and multiple | If multiple addresses are specified in the "c=" field and multiple | |||
ports are specified in the "m=" field, a one-to-one mapping from port | ports are specified in the "m=" field, a one-to-one mapping from port | |||
to the corresponding address is implied. For example: | to the corresponding address is implied. For example: | |||
c=IN IP4 224.2.1.1/127/2 | c=IN IP4 224.2.1.1/127/2 | |||
m=video 49170/2 RTP/AVP 31 | m=video 49170/2 RTP/AVP 31 | |||
would imply that address 224.2.1.1 is used with ports 49170 and | would imply that address 224.2.1.1 is used with ports 49170 and | |||
49171, and address 224.2.1.2 is used with ports 49172 and 49173. | 49171, and address 224.2.1.2 is used with ports 49172 and 49173. | |||
The third sub-field is the transport protocol. The transport | The third sub-field ("<proto>") is the transport protocol. The | |||
protocol values are dependent on the address-type field in the "c=" | transport protocol values are dependent on the address type field in | |||
fields. Thus a "c=" field of IP4 defines that the transport protocol | the "c=" fields. Thus a "c=" field of IP4 defines that the transport | |||
runs over IP4. For IP4, it is normally expected that most media | protocol runs over IP4. For IP4, it is normally expected that most | |||
traffic will be carried as RTP over UDP. The following transport | media traffic will be carried as RTP over UDP. The following | |||
protocols are defined, but may be extended through registration of | transport protocols are defined, but may be extended through | |||
new protocols with IANA (see Section 9): | registration of new protocols with IANA (see Section 9): | |||
RTP/AVP - the IETF's Realtime Transport Protocol using the | RTP/AVP - the IETF's Realtime Transport Protocol using the | |||
Audio/Video profile carried over UDP. | Audio/Video profile carried over UDP. | |||
udp - User Datagram Protocol | udp - User Datagram Protocol | |||
TCP - Transmission Control Protocol | TCP - Transmission Control Protocol | |||
If an application uses a single combined proprietary media format and | If an application uses a single combined proprietary media format and | |||
transport protocol over UDP, then simply specifying the transport | transport protocol over UDP, then simply specifying the transport | |||
protocol as udp and using the format field to distinguish the | protocol as udp and using the format field to distinguish the | |||
combined protocol is recommended. If a transport protocol is used | combined protocol is recommended. If a transport protocol is used | |||
skipping to change at page 23, line 18 | skipping to change at page 22, line 52 | |||
the same - a historical example is vat PCM audio and RTP PCM audio. | the same - a historical example is vat PCM audio and RTP PCM audio. | |||
In addition, relays and monitoring tools that are | In addition, relays and monitoring tools that are | |||
transport-protocol-specific but format-independent are possible. | transport-protocol-specific but format-independent are possible. | |||
For RTP media streams operating under the RTP Audio/Video Profile | For RTP media streams operating under the RTP Audio/Video Profile | |||
[13], the protocol field is "RTP/AVP". Should other RTP profiles be | [13], the protocol field is "RTP/AVP". Should other RTP profiles be | |||
defined in the future, their profiles will be specified in the same | defined in the future, their profiles will be specified in the same | |||
way. For example, the protocol field "RTP/XYZ" would specify RTP | way. For example, the protocol field "RTP/XYZ" would specify RTP | |||
operating under a profile whose short name is "XYZ". | operating under a profile whose short name is "XYZ". | |||
The fourth and subsequent sub-fields are media formats. For audio | The fourth and subsequent sub-fields ("<fmt>") are media formats. | |||
and video, these SHOULD reference a MIME sub-type describing the | ||||
format under the "audio" and "video" top-level MIME types. | For audio, text and video, these SHOULD reference a MIME sub-type | |||
describing the format under the "audio", "text" and "video" top-level | ||||
MIME types. | ||||
When a list of payload formats is given, this implies that all of | When a list of payload formats is given, this implies that all of | |||
these formats may be used in the session, but the first of these | these formats may be used in the session, but the first of these | |||
formats SHOULD be used as the default format for the session. | formats SHOULD be used as the default format for the session. | |||
For media whose transport protocol is not RTP or UDP the format field | For media whose transport protocol is not RTP or UDP the format field | |||
is protocol specific. Such formats should be defined in an | is protocol specific. Such formats should be defined in an | |||
additional specification document. | additional specification document. | |||
For media whose transport protocol is RTP, SDP can be used to provide | For media whose transport protocol is RTP, SDP can be used to provide | |||
skipping to change at page 24, line 49 | skipping to change at page 24, line 37 | |||
For more details on RTP audio and video formats, see [13]. | For more details on RTP audio and video formats, see [13]. | |||
Predefined application formats for the UDP protocol with non-RTP | Predefined application formats for the UDP protocol with non-RTP | |||
media are as below: | media are as below: | |||
wb: LBL Whiteboard (transport: udp) | wb: LBL Whiteboard (transport: udp) | |||
nt: UCL Network Text Editor (transport: udp) | nt: UCL Network Text Editor (transport: udp) | |||
6. Suggested Attributes | 6. Suggested Attributes | |||
The following attributes are suggested. Since application writers | The following attributes are defined. Since application writers may | |||
may add new attributes as they are required, this list is not | add new attributes as they are required, this list is not exhaustive. | |||
exhaustive. | ||||
a=cat:<category> | a=cat:<category> | |||
This attribute gives the dot-separated hierarchical category | This attribute gives the dot-separated hierarchical category | |||
of the session. This is to enable a receiver to filter | of the session. This is to enable a receiver to filter | |||
unwanted sessions by category. It is a session-level | unwanted sessions by category. It is a session-level | |||
attribute, and is not dependent on charset. | attribute, and is not dependent on charset. | |||
a=keywds:<keywords> | a=keywds:<keywords> | |||
skipping to change at page 26, line 8 | skipping to change at page 25, line 43 | |||
size. This attribute is probably only meaningful for audio | size. This attribute is probably only meaningful for audio | |||
data, but may be used with other media types if it makes | data, but may be used with other media types if it makes | |||
sense. It is a media attribute, and is not dependent on | sense. It is a media attribute, and is not dependent on | |||
charset. Note that this attribute was introduced after RFC | charset. Note that this attribute was introduced after RFC | |||
2327, and non updated implementations will ignore this | 2327, and non updated implementations will ignore this | |||
attribute. | attribute. | |||
a=rtpmap:<payload type> <encoding name>/<clock rate> | a=rtpmap:<payload type> <encoding name>/<clock rate> | |||
[/<encoding parameters>] | [/<encoding parameters>] | |||
See Section 5.14. This may be a session or media attribute. | See Section 5.14. This may be a session or media attribute | |||
and is not dependent on charset. | ||||
a=recvonly | a=recvonly | |||
This specifies that the tools should be started in receive | This specifies that the tools should be started in receive | |||
only mode where applicable. It can be either a session or | only mode where applicable. It can be either a session or | |||
media attribute, and is not dependent on charset. Note that | media attribute, and is not dependent on charset. Note that | |||
recvonly applies to the media only, not to any associated | recvonly applies to the media only, not to any associated | |||
control protocol (e.g. an RTP based system in recvonly mode | control protocol (e.g. an RTP based system in recvonly mode | |||
SHOULD still send RTCP packets). | SHOULD still send RTCP packets). | |||
skipping to change at page 27, line 37 | skipping to change at page 27, line 28 | |||
safely avoid displaying this session description to users. | safely avoid displaying this session description to users. | |||
The type attribute is a session-level attribute, and is not | The type attribute is a session-level attribute, and is not | |||
dependent on charset. | dependent on charset. | |||
a=charset:<character set> | a=charset:<character set> | |||
This specifies the character set to be used to display the | This specifies the character set to be used to display the | |||
session name and information data. By default, the ISO-10646 | session name and information data. By default, the ISO-10646 | |||
character set in UTF-8 encoding is used. If a more compact | character set in UTF-8 encoding is used. If a more compact | |||
representation is required, other character sets may be used | representation is required, other character sets may be used. | |||
such as ISO-8859-1 for Northern European languages. In | For example, the ISO 8859-1 is specified with the following | |||
particular, the ISO 8859-1 is specified with the following | ||||
SDP attribute: | SDP attribute: | |||
a=charset:ISO-8859-1 | a=charset:ISO-8859-1 | |||
This is a session-level attribute; if this attribute is | This is a session-level attribute and is not dependent on | |||
present, it MUST be before the first media field. The charset | charset. The charset specified MUST be one of those registered | |||
specified MUST be one of those registered with IANA, such as | with IANA, such as ISO-8859-1. The character set identifier is | |||
ISO-8859-1. The character set identifier is a US-ASCII string | a US-ASCII string and MUST be compared against the IANA | |||
and MUST be compared against the IANA identifiers using a | identifiers using a case insensitive comparison. If the | |||
case- insensitive comparison. If the identifier is not | identifier is not recognised or not supported, all strings that | |||
recognised or not supported, all strings that are affected by | are affected by it SHOULD be regarded as octet strings. | |||
it SHOULD be regarded as octet strings. | ||||
Note that a character set specified MUST still prohibit the | Note that a character set specified MUST still prohibit the | |||
use of bytes 0x00 (Nul), 0x0A (LF) and 0x0d (CR). Character | use of bytes 0x00 (Nul), 0x0A (LF) and 0x0d (CR). Character | |||
sets requiring the use of these characters MUST define a | sets requiring the use of these characters MUST define a | |||
quoting mechanism that prevents these bytes appearing within | quoting mechanism that prevents these bytes appearing within | |||
text fields. | text fields. | |||
a=sdplang:<language tag> | a=sdplang:<language tag> | |||
This can be a session level attribute or a media level | This can be a session level attribute or a media level | |||
skipping to change at page 32, line 49 | skipping to change at page 32, line 36 | |||
RFC XXXX | RFC XXXX | |||
Applications which use this media type: | Applications which use this media type: | |||
Voice over IP, video teleconferencing, streaming media, instant | Voice over IP, video teleconferencing, streaming media, instant | |||
messaging, etc. See also section 3 of RFC XXXX. | messaging, etc. See also section 3 of RFC XXXX. | |||
Additional information: | Additional information: | |||
Magic number(s): None. | Magic number(s): None. | |||
File extension(s): The extension ".sdp" is commonly used. | File extension(s): The extension ".sdp" is commonly used. | |||
Macintosh File Type Code(s): | Macintosh File Type Code(s): "sdp " | |||
Person & email address to contact for further information: | Person & email address to contact for further information: | |||
Colin Perkins <csp@csperkins.org> | Colin Perkins <csp@csperkins.org> | |||
IETF MMUSIC working group | IETF MMUSIC working group | |||
Intended usage: COMMON | Intended usage: COMMON | |||
Author/Change controller: | Author/Change controller: | |||
Authors of RFC XXXX | Authors of RFC XXXX | |||
IETF MMUSIC working group | IETF MMUSIC working group | |||
skipping to change at page 35, line 22 | skipping to change at page 34, line 48 | |||
expected to see widespread use and interoperability, SHOULD be | expected to see widespread use and interoperability, SHOULD be | |||
documented with a standards-track RFC that specifies the attribute | documented with a standards-track RFC that specifies the attribute | |||
more precisely. | more precisely. | |||
Submitters of registrations should ensure that the specification is | Submitters of registrations should ensure that the specification is | |||
in the spirit of SDP attributes, most notably that the attribute is | in the spirit of SDP attributes, most notably that the attribute is | |||
platform independent in the sense that it makes no implicit | platform independent in the sense that it makes no implicit | |||
assumptions about operating systems and does not name specific pieces | assumptions about operating systems and does not name specific pieces | |||
of software in a manner that might inhibit interoperability. | of software in a manner that might inhibit interoperability. | |||
IANA is requested to register the following initial set of attribute | ||||
names ("att-field" values), with definitions as in Section 6 of this | ||||
memo (these definitions update those in RFC 2327): | ||||
Name | Session or Media level? | Dependent on charset? | ||||
----------+-------------------------+---------------------- | ||||
cat | Session | No | ||||
keywds | Session | Yes | ||||
tool | Session | No | ||||
ptime | Media | No | ||||
maxptime | Media | No | ||||
rtpmap | Either | No | ||||
recvonly | Either | No | ||||
sendrecv | Either | No | ||||
sendonly | Either | No | ||||
inactive | Either | No | ||||
orient | Media | No | ||||
type | Session | No | ||||
charset | Session | No | ||||
sdplang | Either | No | ||||
lang | Either | No | ||||
framerate | Media | No | ||||
quality | Media | No | ||||
fmtp | Media | No | ||||
9.2.5 Bandwidth specifiers ("bwtype") | 9.2.5 Bandwidth specifiers ("bwtype") | |||
A proliferation of bandwidth specifiers is strongly discouraged. | A proliferation of bandwidth specifiers is strongly discouraged. | |||
New bandwidth specifiers ("bwtype" fields) MUST be registered with | New bandwidth specifiers ("bwtype" fields) MUST be registered with | |||
IANA. The submission MUST reference a standards-track RFC specifying | IANA. The submission MUST reference a standards-track RFC specifying | |||
the semantics of the bandwidth specifier precisely, and indicating | the semantics of the bandwidth specifier precisely, and indicating | |||
when it should be used, and why the existing registered bandwidth | when it should be used, and why the existing registered bandwidth | |||
specifiers do not suffice. | specifiers do not suffice. | |||
IANA is requested to register the bandwith specifiers "CT" and "AS" | ||||
with definitions as in Section 5.8 of this memo (these definitions | ||||
update those in RFC 2327). | ||||
9.2.6 Network types ("nettype") | 9.2.6 Network types ("nettype") | |||
New network types (the "nettype" field) may be registered with IANA | New network types (the "nettype" field) may be registered with IANA | |||
if SDP needs to be used in the context of non-Internet environments. | if SDP needs to be used in the context of non-Internet environments. | |||
Whilst these are not normally the preserve of IANA, there may be | Whilst these are not normally the preserve of IANA, there may be | |||
circumstances when an Internet application needs to interoperate with | circumstances when an Internet application needs to interoperate with | |||
a non- Internet application, such as when gatewaying an Internet | a non- Internet application, such as when gatewaying an Internet | |||
telephony call into the PSTN. The number of network types should be | telephony call into the PSTN. The number of network types should be | |||
small and should be rarely extended. A new network type cannot be | small and should be rarely extended. A new network type cannot be | |||
registered without registering at least one address type to be used | registered without registering at least one address type to be used | |||
with that network type. A new network type registration MUST | with that network type. A new network type registration MUST | |||
reference an RFC which gives details of the network type and address | reference an RFC which gives details of the network type and address | |||
type and specifies how and when they would be used. Such an RFC MAY | type and specifies how and when they would be used. Such an RFC MAY | |||
be Informational. | be Informational. | |||
IANA is requested to register the network type "IN" to represent the | ||||
Internet, with definition as in Sections 5.2 and 5.7 of this memo | ||||
(these definitions update those in RFC 2327). | ||||
9.2.7 Address types ("addrtype") | 9.2.7 Address types ("addrtype") | |||
New address types ("addrtype") may be registered with IANA. An | New address types ("addrtype") may be registered with IANA. An | |||
address type is only meaningful in the context of a network type, and | address type is only meaningful in the context of a network type, and | |||
any registration of an address type MUST specify a registered network | any registration of an address type MUST specify a registered network | |||
type, or be submitted along with a network type registration. A new | type, or be submitted along with a network type registration. A new | |||
address type registration MUST reference an RFC giving details of the | address type registration MUST reference an RFC giving details of the | |||
syntax of the address type. Such an RFC MAY be Informational. | syntax of the address type. Such an RFC MAY be Informational. | |||
Address types are not expected to be registered frequently. | Address types are not expected to be registered frequently. | |||
IANA is requested to register the address types "IP4" and "IP6" with | ||||
definitions as in Sections 5.2 and 5.7 of this memo (these | ||||
definitions update those in RFC 2327). | ||||
9.2.8 Registration Procedure | 9.2.8 Registration Procedure | |||
In the RFC documentation that registers SDP "media", "proto", "fmt", | In the RFC documentation that registers SDP "media", "proto", "fmt", | |||
"bwtype", "nettype" and "addrtype" fields, the authors MUST include | "bwtype", "nettype" and "addrtype" fields, the authors MUST include | |||
the following information for IANA to place in the appropriate | the following information for IANA to place in the appropriate | |||
registry: | registry: | |||
o contact name, email address and telephone number | o contact name, email address and telephone number | |||
o name being registered (as it will appear in SDP) | o name being registered (as it will appear in SDP) | |||
o long-form name in English | o long-form name in English | |||
o type of name ("media", "proto", "fmt", "bwtype", "nettype", or | o type of name ("media", "proto", "fmt", "bwtype", "nettype", or | |||
"addrtype") | "addrtype") | |||
o a one paragraph explanation of the purpose of the registered name. | o a one paragraph explanation of the purpose of the registered name. | |||
o a reference to the specification (e.g. RFC number) of the | o a reference to the specification (e.g. RFC number) of the | |||
registered name. | registered name. | |||
IANA may refer any registration to the IESG Transport Area Directors | IANA may refer any registration to the IESG Transport Area Directors | |||
for review, and may request revisions to be made before a | for review, and may request revisions to be made before a | |||
registration will be made. | registration will be made. | |||
9.3 Encryption Key Access Methods | ||||
The IANA currently maintains a table of SDP encryption key access | ||||
method ("enckey") names. This table is obsolete and SHOULD be | ||||
removed, since the "k=" line is not extensible. New registrations | ||||
MUST NOT be accepted. | ||||
Appendix A. SDP Grammar | Appendix A. SDP Grammar | |||
This appendix provides an Augmented BNF grammar for SDP. ABNF is | This appendix provides an Augmented BNF grammar for SDP. ABNF is | |||
defined in [2]. | defined in [2]. | |||
; SDP Syntax | ; SDP Syntax | |||
announcement = proto-version | session-description = proto-version | |||
origin-field | origin-field | |||
session-name-field | session-name-field | |||
information-field | information-field | |||
uri-field | uri-field | |||
email-fields | email-fields | |||
phone-fields | phone-fields | |||
connection-field | connection-field | |||
bandwidth-fields | bandwidth-fields | |||
time-fields | time-fields | |||
key-field | key-field | |||
skipping to change at page 38, line 33 | skipping to change at page 39, line 4 | |||
; sub-rules of 'u=' | ; sub-rules of 'u=' | |||
uri = URI-reference; see RFC1630 and RFC2732 | uri = URI-reference; see RFC1630 and RFC2732 | |||
; sub-rules of 'e=' | ; sub-rules of 'e=' | |||
email-address = email *SP "(" 1*email-safe ")" / | email-address = email *SP "(" 1*email-safe ")" / | |||
1*email-safe "<" email ">" / | 1*email-safe "<" email ">" / | |||
email = addr-spec ; defined in RFC2822 | email = addr-spec ; defined in RFC2822 | |||
; modified to remove CFWS | ; modified to remove CFWS | |||
; sub-rules of 'p=' | ; sub-rules of 'p=' | |||
phone-number = phone *SP "(" 1*email-safe ")" / | phone-number = phone *SP "(" 1*email-safe ")" / | |||
1*email-safe "<" phone ">" / | 1*email-safe "<" phone ">" / | |||
phone | phone | |||
phone = "+" POS-DIGIT 1*(SP / "-" / DIGIT) | phone = "+" POS-DIGIT 1*(SP / "-" / DIGIT) | |||
;there must be a space or hyphen between | ||||
;the international code and the rest of | ||||
;the number. | ||||
; sub-rules of 'c=' | ; sub-rules of 'c=' | |||
connection-address = multicast-address / unicast-address | connection-address = multicast-address / unicast-address | |||
; sub-rules of 'b=' | ; sub-rules of 'b=' | |||
bwtype = token | bwtype = token | |||
bandwidth = 1*DIGIT | bandwidth = 1*DIGIT | |||
; sub-rules of 't=' | ; sub-rules of 't=' | |||
start-time = time / "0" | start-time = time / "0" | |||
stop-time = time / "0" | stop-time = time / "0" | |||
time = POS-DIGIT 9*DIGIT | time = POS-DIGIT 9*DIGIT | |||
; 10-digit NTP time represents times between | ; 10-digit NTP time represents times between | |||
; 1931 and 5068 AD. 9* allows times after | ; 1931 and 5068 AD. 9* allows times after | |||
; that as well. | ; that as well. | |||
skipping to change at page 39, line 37 | skipping to change at page 40, line 4 | |||
base64 = *base64-unit [base64-pad] | base64 = *base64-unit [base64-pad] | |||
base64-unit = 4base64-char | base64-unit = 4base64-char | |||
base64-pad = 2base64-char "==" / 3base64-char "=" | base64-pad = 2base64-char "==" / 3base64-char "=" | |||
base64-char = ALPHA / DIGIT / "+" / "/" | base64-char = ALPHA / DIGIT / "+" / "/" | |||
key-method = token | key-method = token | |||
; sub-rules of 'a=' | ; sub-rules of 'a=' | |||
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 | |||
; sub-rules of 'm=' | ; sub-rules of 'm=' | |||
media = token | media = token | |||
;typically "audio", "video", "application" | ;typically "audio", "video", "text", | |||
;or "data" | ;"application" or "data" | |||
fmt = token | fmt = token | |||
;typically an RTP payload type for audio | ;typically an RTP payload type for audio | |||
;and video media | ;and video media | |||
proto = token "/" token | proto = token "/" token | |||
/ token | / token | |||
;typically "RTP/AVP" or "udp" for IP4 | ;typically "RTP/AVP", "udp" or "tcp" | |||
port = 1*DIGIT | port = 1*DIGIT | |||
;should be either "0" or in the range "1024" | ;should be either "0" or in the range "1024" | |||
;to "65535" inclusive for UDP based media | ;to "65535" inclusive for UDP based media | |||
;(a value of "0" is used to signal special | ;(a value of "0" is used to signal special | |||
;conditions in some uses of SDP) | ;conditions in some uses of SDP) | |||
; generic sub-rules: addressing | ; generic sub-rules: addressing | |||
unicast-address = IP4-address / IP6-address / FQDN / extn-addr | unicast-address = IP4-address / IP6-address / FQDN / extn-addr | |||
skipping to change at page 41, line 49 | skipping to change at page 42, line 15 | |||
; ALPHA, DIGIT, CRLF, SP, VCHAR: from RFC 2234 | ; ALPHA, DIGIT, CRLF, SP, VCHAR: from RFC 2234 | |||
; URI-reference: from RFC1630 and RFC2732 | ; URI-reference: from RFC1630 and RFC2732 | |||
; addr-spec: from RFC 2822 | ; addr-spec: from RFC 2822 | |||
Appendix B. Acknowledgments | Appendix B. Acknowledgments | |||
Many people in the IETF MMUSIC working group have made comments and | Many people in the IETF MMUSIC working group have made comments and | |||
suggestions contributing to this document. In particular, we would | suggestions contributing to this document. In particular, we would | |||
like to thank Eve Schooler, Steve Casner, Bill Fenner, Allison | like to thank Eve Schooler, Steve Casner, Bill Fenner, Allison | |||
Mankin, Ross Finlayson, Peter Parnes, Joerg Ott, Carsten Bormann, | Mankin, Ross Finlayson, Peter Parnes, Joerg Ott, Carsten Bormann, | |||
Steve Hanna and Jonathan Lennox. | Steve Hanna, Jonathan Lennox and Keith Drage. | |||
Normative References | 10. References | |||
10.1 Normative References | ||||
[1] Bradner, S., "Key words for use in RFCs to Indicate Requirement | [1] Bradner, S., "Key words for use in RFCs to Indicate Requirement | |||
Levels", BCP 14, RFC 2119, March 1997. | Levels", BCP 14, RFC 2119, March 1997. | |||
[2] Crocker, D. and P. Overell, "Augmented BNF for Syntax | [2] Crocker, D. and P. Overell, "Augmented BNF for Syntax | |||
Specifications: ABNF", RFC 2234, November 1997. | Specifications: ABNF", RFC 2234, November 1997. | |||
[3] Yergeau, F., "UTF-8, a transformation format of ISO 10646", RFC | [3] Yergeau, F., "UTF-8, a transformation format of ISO 10646", RFC | |||
2279, January 1998. | 2279, January 1998. | |||
[4] Berners-Lee, T., Fielding, R. and L. Masinter, "Uniform Resource | [4] Berners-Lee, T., Fielding, R. and L. Masinter, "Uniform Resource | |||
Identifiers (URI): Generic Syntax", RFC 2396, August 1998. | Identifiers (URI): Generic Syntax", RFC 2396, August 1998. | |||
[5] Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA | [5] Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA | |||
Considerations Section in RFCs", BCP 26, RFC 2434, October 1998. | Considerations Section in RFCs", BCP 26, RFC 2434, October 1998. | |||
[6] Alvestrand, H., "Tags for the Identification of Languages", BCP | [6] Alvestrand, H., "Tags for the Identification of Languages", BCP | |||
47, RFC 3066, January 2001. | 47, RFC 3066, January 2001. | |||
Informative References | 10.2 Informative References | |||
[7] Mills, D., "Network Time Protocol (Version 3) Specification, | [7] Mills, D., "Network Time Protocol (Version 3) Specification, | |||
Implementation", RFC 1305, March 1992. | Implementation", RFC 1305, March 1992. | |||
[8] Handley, M., Perkins, C. and E. Whelan, "Session Announcement | [8] Handley, M., Perkins, C. and E. Whelan, "Session Announcement | |||
Protocol", RFC 2974, October 2000. | Protocol", RFC 2974, October 2000. | |||
[9] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A., | [9] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A., | |||
Peterson, J., Sparks, R., Handley, M. and E. Schooler, "SIP: | Peterson, J., Sparks, R., Handley, M. and E. Schooler, "SIP: | |||
Session Initiation Protocol", RFC 3261, June 2002. | Session Initiation Protocol", RFC 3261, June 2002. | |||
skipping to change at page 44, line 8 | skipping to change at page 45, line 8 | |||
University of Glasgow | University of Glasgow | |||
17 Lilybank Gardens | 17 Lilybank Gardens | |||
Glasgow G12 8QQ | Glasgow G12 8QQ | |||
UK | UK | |||
EMail: csp@csperkins.org | EMail: csp@csperkins.org | |||
Intellectual Property Statement | Intellectual Property Statement | |||
The IETF takes no position regarding the validity or scope of any | The IETF takes no position regarding the validity or scope of any | |||
intellectual property or other rights that might be claimed to | Intellectual Property Rights or other rights that might be claimed to | |||
pertain to the implementation or use of the technology described in | pertain to the implementation or use of the technology described in | |||
this document or the extent to which any license under such rights | this document or the extent to which any license under such rights | |||
might or might not be available; neither does it represent that it | might or might not be available; nor does it represent that it has | |||
has made any effort to identify any such rights. Information on the | made any independent effort to identify any such rights. Information | |||
IETF's procedures with respect to rights in standards-track and | on the IETF's procedures with respect to rights in IETF Documents can | |||
standards-related documentation can be found in BCP-11. Copies of | be found in BCP 78 and BCP 79. | |||
claims of rights made available for publication and any assurances of | ||||
licenses to be made available, or the result of an attempt made to | Copies of IPR disclosures made to the IETF Secretariat and any | |||
obtain a general license or permission for the use of such | assurances of licenses to be made available, or the result of an | |||
proprietary rights by implementors or users of this specification can | attempt made to obtain a general license or permission for the use of | |||
be obtained from the IETF Secretariat. | such proprietary rights by implementers or users of this | |||
specification can be obtained from the IETF on-line IPR repository at | ||||
http://www.ietf.org/ipr. | ||||
The IETF invites any interested party to bring to its attention any | The IETF invites any interested party to bring to its attention any | |||
copyrights, patents or patent applications, or other proprietary | copyrights, patents or patent applications, or other proprietary | |||
rights which may cover technology that may be required to practice | rights that may cover technology that may be required to implement | |||
this standard. Please address the information to the IETF Executive | this standard. Please address the information to the IETF at | |||
Director. | ietf-ipr@ietf.org. | |||
Full Copyright Statement | ||||
Copyright (C) The Internet Society (2003). All Rights Reserved. | Disclaimer of Validity | |||
This document and translations of it may be copied and furnished to | This document and the information contained herein are provided on an | |||
others, and derivative works that comment on or otherwise explain it | "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS | |||
or assist in its implementation may be prepared, copied, published | OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET | |||
and distributed, in whole or in part, without restriction of any | ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, | |||
kind, provided that the above copyright notice and this paragraph are | INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE | |||
included on all such copies and derivative works. However, this | INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED | |||
document itself may not be modified in any way, such as by removing | WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | |||
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 | Copyright Statement | |||
revoked by the Internet Society or its successors or assignees. | ||||
This document and the information contained herein is provided on an | Copyright (C) The Internet Society (2004). This document is subject | |||
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING | to the rights, licenses and restrictions contained in BCP 78, and | |||
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING | except as set forth therein, the authors retain all their rights. | |||
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. | ||||
Acknowledgment | Acknowledgment | |||
Funding for the RFC Editor function is currently provided by the | Funding for the RFC Editor function is currently provided by the | |||
Internet Society. | Internet Society. | |||
End of changes. | ||||
This html diff was produced by rfcdiff 1.23, available from http://www.levkowetz.com/ietf/tools/rfcdiff/ |