draft-ietf-mmusic-sdp-new-25.txt | draft-ietf-mmusic-sdp-new-26.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: January 17, 2006 C. Perkins | Expires: July 28, 2006 C. Perkins | |||
University of Glasgow | University of Glasgow | |||
July 16, 2005 | January 24, 2006 | |||
SDP: Session Description Protocol | SDP: Session Description Protocol | |||
draft-ietf-mmusic-sdp-new-25.txt | draft-ietf-mmusic-sdp-new-26.txt | |||
Status of this Memo | Status of this Memo | |||
By submitting this Internet-Draft, each author represents that any | By submitting this Internet-Draft, each author represents that any | |||
applicable patent or other IPR claims of which he or she is aware | applicable patent or other IPR claims of which he or she is aware | |||
have been or will be disclosed, and any of which he or she becomes | have been or will be disclosed, and any of which he or she becomes | |||
aware will be disclosed, in accordance with Section 6 of BCP 79. | aware will be disclosed, in accordance with Section 6 of BCP 79. | |||
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 | Task Force (IETF), its areas, and its working groups. Note that | |||
skipping to change at page 1, line 37 | skipping to change at page 1, line 37 | |||
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 | The list of current Internet-Drafts can be accessed at | |||
http://www.ietf.org/ietf/1id-abstracts.txt. | http://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 January 17, 2006. | This Internet-Draft will expire on July 28, 2006. | |||
Copyright Notice | Copyright Notice | |||
Copyright (C) The Internet Society (2005). | Copyright (C) The Internet Society (2006). | |||
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 . . . . . . . . . . . . . . . . . . . . 4 | |||
3.1 Multicast Session Announcement . . . . . . . . . . . . . . 4 | 3.1. Session Initiation . . . . . . . . . . . . . . . . . . . . 4 | |||
3.2 Session Initiation . . . . . . . . . . . . . . . . . . . . 4 | 3.2. Streaming media . . . . . . . . . . . . . . . . . . . . . 4 | |||
3.3 Streaming media . . . . . . . . . . . . . . . . . . . . . 4 | 3.3. Email and the World Wide Web . . . . . . . . . . . . . . . 4 | |||
3.4 Email and the World Wide Web . . . . . . . . . . . . . . . 4 | 3.4. Multicast Session Announcement . . . . . . . . . . . . . . 4 | |||
4. Requirements and Recommendations . . . . . . . . . . . . . . 5 | 4. Requirements and Recommendations . . . . . . . . . . . . . . . 5 | |||
4.1 Media and Transport Information . . . . . . . . . . . . . 6 | 4.1. Media and Transport Information . . . . . . . . . . . . . 6 | |||
4.2 Timing Information . . . . . . . . . . . . . . . . . . . . 6 | 4.2. Timing Information . . . . . . . . . . . . . . . . . . . . 6 | |||
4.3 Private Sessions . . . . . . . . . . . . . . . . . . . . . 7 | 4.3. Private Sessions . . . . . . . . . . . . . . . . . . . . . 7 | |||
4.4 Obtaining Further Information about a Session . . . . . . 7 | 4.4. Obtaining Further Information about a Session . . . . . . 7 | |||
4.5 Categorisation . . . . . . . . . . . . . . . . . . . . . . 7 | 4.5. Categorisation . . . . . . . . . . . . . . . . . . . . . . 7 | |||
4.6 Internationalisation . . . . . . . . . . . . . . . . . . . 7 | 4.6. Internationalisation . . . . . . . . . . . . . . . . . . . 7 | |||
5. SDP Specification . . . . . . . . . . . . . . . . . . . . . 7 | 5. SDP Specification . . . . . . . . . . . . . . . . . . . . . . 7 | |||
5.1 Protocol Version ("v=") . . . . . . . . . . . . . . . . . 10 | 5.1. Protocol Version ("v=") . . . . . . . . . . . . . . . . . 10 | |||
5.2 Origin ("o=") . . . . . . . . . . . . . . . . . . . . . . 10 | 5.2. Origin ("o=") . . . . . . . . . . . . . . . . . . . . . . 10 | |||
5.3 Session Name ("s=") . . . . . . . . . . . . . . . . . . . 12 | 5.3. Session Name ("s=") . . . . . . . . . . . . . . . . . . . 12 | |||
5.4 Session Information ("i=") . . . . . . . . . . . . . . . . 12 | 5.4. Session Information ("i=") . . . . . . . . . . . . . . . . 12 | |||
5.5 URI ("u=") . . . . . . . . . . . . . . . . . . . . . . . . 12 | 5.5. URI ("u=") . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
5.6 Email Address and Phone Number ("e=" and "p=") . . . . . . 13 | 5.6. Email Address and Phone Number ("e=" and "p=") . . . . . . 13 | |||
5.7 Connection Data ("c=") . . . . . . . . . . . . . . . . . . 13 | 5.7. Connection Data ("c=") . . . . . . . . . . . . . . . . . . 13 | |||
5.8 Bandwidth ("b=") . . . . . . . . . . . . . . . . . . . . . 15 | 5.8. Bandwidth ("b=") . . . . . . . . . . . . . . . . . . . . . 15 | |||
5.9 Timing ("t=") . . . . . . . . . . . . . . . . . . . . . . 16 | 5.9. Timing ("t=") . . . . . . . . . . . . . . . . . . . . . . 16 | |||
5.10 Repeat Times ("r=") . . . . . . . . . . . . . . . . . . 17 | 5.10. Repeat Times ("r=") . . . . . . . . . . . . . . . . . . . 17 | |||
5.11 Time Zones ("z=") . . . . . . . . . . . . . . . . . . . 18 | 5.11. Time Zones ("z=") . . . . . . . . . . . . . . . . . . . . 18 | |||
5.12 Encryption Keys ("k=") . . . . . . . . . . . . . . . . . 19 | 5.12. Encryption Keys ("k=") . . . . . . . . . . . . . . . . . . 19 | |||
5.13 Attributes ("a=") . . . . . . . . . . . . . . . . . . . 21 | 5.13. Attributes ("a=") . . . . . . . . . . . . . . . . . . . . 20 | |||
5.14 Media Descriptions ("m=") . . . . . . . . . . . . . . . 22 | 5.14. Media Descriptions ("m=") . . . . . . . . . . . . . . . . 21 | |||
6. SDP Attributes . . . . . . . . . . . . . . . . . . . . . . . 25 | 6. SDP Attributes . . . . . . . . . . . . . . . . . . . . . . . . 24 | |||
7. Security Considerations . . . . . . . . . . . . . . . . . . 31 | 7. Security Considerations . . . . . . . . . . . . . . . . . . . 30 | |||
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . 32 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 32 | |||
8.1 The "application/sdp" media type . . . . . . . . . . . . . 32 | 8.1. The "application/sdp" media type . . . . . . . . . . . . . 32 | |||
8.2 Registration of Parameters . . . . . . . . . . . . . . . . 34 | 8.2. Registration of Parameters . . . . . . . . . . . . . . . . 34 | |||
8.3 Encryption Key Access Methods . . . . . . . . . . . . . . 38 | 8.3. Encryption Key Access Methods . . . . . . . . . . . . . . 38 | |||
9. SDP Grammar . . . . . . . . . . . . . . . . . . . . . . . . 39 | 9. SDP Grammar . . . . . . . . . . . . . . . . . . . . . . . . . 39 | |||
10. Summary of Changes from RFC 2327 . . . . . . . . . . . . . . 44 | 10. Summary of Changes from RFC 2327 . . . . . . . . . . . . . . . 44 | |||
11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 44 | 11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 44 | |||
12. References . . . . . . . . . . . . . . . . . . . . . . . . . 45 | 12. References . . . . . . . . . . . . . . . . . . . . . . . . . . 45 | |||
12.1 Normative References . . . . . . . . . . . . . . . . . . 45 | 12.1. Normative References . . . . . . . . . . . . . . . . . . . 45 | |||
12.2 Informative References . . . . . . . . . . . . . . . . . 46 | 12.2. Informative References . . . . . . . . . . . . . . . . . . 46 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 47 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 48 | |||
Intellectual Property and Copyright Statements . . . . . . . 48 | Intellectual Property and Copyright Statements . . . . . . . . . . 49 | |||
1. Introduction | 1. Introduction | |||
When initiating multimedia teleconferences, voice-over-IP calls, | When initiating multimedia teleconferences, voice-over-IP calls, | |||
streaming video, or other sessions, there is a requirement to convey | streaming video, or other sessions, there is a requirement to convey | |||
media details, transport addresses, and other session description | media details, transport addresses, and other session 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 [14], | appropriate, including the Session Announcement Protocol [15], | |||
Session Initiation Protocol [15], Real-Time Streaming Protocol [16], | Session Initiation Protocol [16], Real-Time Streaming Protocol [17], | |||
electronic mail using the MIME extensions, and the Hypertext | electronic mail using the MIME extensions, and the Hypertext | |||
Transport Protocol. | Transport Protocol. | |||
SDP is intended to be general purpose so that it can be used in a | SDP is intended to be general purpose so that it can be used in a | |||
wide range of network environments and applications. However, it is | wide range of network environments and applications. However, it is | |||
not intended to support negotiation of session content or media | not intended to support negotiation of session content or media | |||
encodings: this is viewed as outside the scope of session | encodings: this is viewed as outside the scope of session | |||
description. | description. | |||
This memo updates RFC 2327 [6] in the light of implementation | This memo obsoletes RFC 2327 [6] and RFC 3266 [11]. Section 10 | |||
experience, and adds a small number of new features. Section 10 | ||||
outlines the changes introduced in this memo. | outlines the changes introduced in this memo. | |||
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. | |||
skipping to change at page 4, line 7 | skipping to change at page 4, line 7 | |||
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 [3]. | document are to be interpreted as described in RFC 2119 [3]. | |||
3. Examples of SDP Usage | 3. Examples of SDP Usage | |||
3.1 Multicast Session Announcement | 3.1. Session Initiation | |||
In order to assist the advertisement of multicast multimedia | ||||
conferences and other multicast sessions, and to communicate the | ||||
relevant session setup information to prospective participants, a | ||||
distributed session directory may be used. An instance of such a | ||||
session directory periodically sends packets containing a description | ||||
of the session to a well known multicast group. These advertisements | ||||
are received by other session directories such that potential remote | ||||
participants can use the session description to start the tools | ||||
required to participate in the session. | ||||
One protocol commonly used to implement such a distributed directory | ||||
is the Session Announcement Protocol, SAP [14]. SDP provides the | ||||
recommended session description format for such session | ||||
announcements. | ||||
3.2 Session Initiation | ||||
The Session Initiation Protocol, SIP [15] is an application layer | The Session Initiation Protocol, SIP [16] 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 [17] | formatted using SDP. When used with SIP, the offer/answer model [18] | |||
provides a limited framework for negotiation using SDP. | provides a limited framework for negotiation using SDP. | |||
3.3 Streaming media | 3.2. Streaming media | |||
The Real Time Streaming Protocol, RTSP [16], is an application-level | The Real Time Streaming Protocol, RTSP [17], is an application-level | |||
protocol for control over the delivery of data with real-time | protocol for control over the delivery of data with real-time | |||
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.3. 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 MIME content type "application/sdp" is used. This | distribution, the MIME content type "application/sdp" is used. This | |||
enables the automatic launching of applications for participation in | enables the automatic launching of applications for participation in | |||
the session from the WWW client or mail reader in a standard manner. | the session from the WWW client or mail reader in a 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. | WWW server or reception of email is possible outside this scope. | |||
Session announcements made using SAP do not suffer this mismatch. | ||||
3.4. Multicast Session Announcement | ||||
In order to assist the advertisement of multicast multimedia | ||||
conferences and other multicast sessions, and to communicate the | ||||
relevant session setup information to prospective participants, a | ||||
distributed session directory may be used. An instance of such a | ||||
session directory periodically sends packets containing a description | ||||
of the session to a well known multicast group. These advertisements | ||||
are received by other session directories such that potential remote | ||||
participants can use the session description to start the tools | ||||
required to participate in the session. | ||||
One protocol used to implement such a distributed directory is the | ||||
Session Announcement Protocol, SAP [15]. SDP provides the | ||||
recommended session description format for such session | ||||
announcements. | ||||
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. Media streams | describe conferences in other network environments. Media streams | |||
can be many-to-many. The times during which the session is active | can be many-to-many. Sessions need not be continually 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 6, line 7 | skipping to change at page 6, line 5 | |||
o Contact information for the person responsible for the session | o Contact information for the person responsible for the session | |||
In general, SDP must convey sufficient information to enable | In general, SDP must convey sufficient information to enable | |||
applications to join a session (with the possible exception of | applications to join a session (with the possible exception of | |||
encryption keys), and to announce the resources to be used to any | encryption keys), and to announce the resources to be used to any | |||
non-participants that may need to know (this latter feature is | non-participants that may need to know (this latter feature is | |||
primarily useful when SDP is used with a multicast session | primarily useful when SDP is used with a multicast session | |||
announcement protocol). | announcement protocol). | |||
4.1 Media and Transport Information | 4.1. Media and Transport Information | |||
An SDP session description includes the following media information: | An SDP session description includes the following media information: | |||
o The type of media (video, audio, etc.) | o The type of media (video, audio, etc.) | |||
o The transport protocol (RTP/UDP/IP, H.320, etc.) | o The transport protocol (RTP/UDP/IP, H.320, etc.) | |||
o The format of the media (H.261 video, MPEG video, etc.) | o The format of the media (H.261 video, MPEG video, etc.) | |||
In addition to media format and transport protocol, SDP conveys | In addition to media format and transport protocol, SDP conveys | |||
skipping to change at page 6, line 36 | skipping to change at page 6, line 34 | |||
port of the multicast stream, whether being sent, received, or both. | port of the multicast stream, whether being sent, received, or both. | |||
For unicast IP sessions, the following are conveyed: | For unicast IP sessions, the following are conveyed: | |||
o The remote address for media | o The remote address for media | |||
o The remote transport port for media | o The remote transport port for media | |||
The semantics of this address and port depend on the media and | The semantics of this address and port depend on the media and | |||
transport protocol defined. By default, this SHOULD be the remote | transport protocol defined. By default, this SHOULD be the remote | |||
address and remote port to which data is sent. Some media types MAY | address and remote port to which data is sent. Some media types may | |||
redefine this behaviour, but this is NOT RECOMMENDED. | redefine this behaviour, but this is NOT RECOMMENDED since it | |||
complicates implementations (including middleboxes that must parse | ||||
the addresses to open NAT or firewall pinholes). | ||||
4.2 Timing Information | 4.2. Timing Information | |||
Sessions may either be bounded or unbounded in time. Whether or not | Sessions may either be bounded or unbounded in time. Whether or not | |||
they are bounded, they may be only active at specific times. SDP can | they are bounded, they may be only active at specific times. SDP can | |||
convey: | convey: | |||
o An arbitrary list of start and stop times bounding the session | o An arbitrary list of start and stop times bounding the session | |||
o For each bound, repeat times such as "every Wednesday at 10am for | o For each bound, repeat times such as "every Wednesday at 10am for | |||
one hour" | one hour" | |||
This timing information is globally consistent, irrespective of local | This timing information is globally consistent, irrespective of local | |||
time zone or daylight saving time. | time zone or daylight saving time (see Section 5.9). | |||
4.3 Private Sessions | 4.3. Private Sessions | |||
It is possible to create both public sessions and private sessions. | It is possible to create both public sessions and private sessions. | |||
SDP itself does not distinguish between these: private sessions are | SDP itself does not distinguish between these; private sessions are | |||
typically conveyed by encrypting the session description during | typically conveyed by encrypting the session description during | |||
distribution. The details of how encryption is performed are | distribution. The details of how encryption is performed are | |||
dependent on the mechanism used to convey SDP: mechanisms are | dependent on the mechanism used to convey SDP; mechanisms are | |||
currently defined for SDP transported using SAP [14] and SIP [15], | currently defined for SDP transported using SAP [15] and SIP [16], | |||
others may be defined in future. | others may be defined in future. | |||
If a session announcement is private it is possible to use that | If a session announcement is private it is possible to use that | |||
private announcement to convey encryption keys necessary to decode | private announcement to convey encryption keys necessary to decode | |||
each of the media in a conference, including enough information to | each of the media in a conference, including enough information to | |||
know which encryption scheme is used for each media. | know which encryption scheme is used for each media. | |||
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 session | 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 (the "a=cat:" attribute; see Section 6). | |||
4.6 Internationalisation | 4.6. Internationalisation | |||
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 [5] to allow many different languages to | sets in the UTF-8 encoding [5] 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. Internationalisation only applies to free-text fields | desired. Internationalisation 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 | |||
skipping to change at page 10, line 30 | skipping to change at page 10, line 30 | |||
a=rtpmap:99 h263-1998/90000 | a=rtpmap:99 h263-1998/90000 | |||
Text fields 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. If the "a=charset" attribute is not present, | newline character. If the "a=charset" attribute is not present, | |||
these octet strings MUST be interpreted as containing ISO-10646 | these octet strings MUST be interpreted as containing ISO-10646 | |||
characters in UTF-8 encoding (the presence of the "a=charset" | characters in UTF-8 encoding (the presence of the "a=charset" | |||
attribute MAY force some fields to be interpreted differently). | attribute may force some fields to be interpreted differently). | |||
A session description can contain domain names in the "o=", "u=", | A session description can contain domain names in the "o=", "u=", | |||
"e=", "c=" and "a=" lines. Any domain name used in SDP MUST comply | "e=", "c=" and "a=" lines. Any domain name used in SDP MUST comply | |||
with [1], [2]. Internationalised domain names (IDNs) MUST be | with [1], [2]. Internationalised domain names (IDNs) MUST be | |||
represented using the ASCII Compatible Encoding (ACE) form defined in | represented using the ASCII Compatible Encoding (ACE) form defined in | |||
[11] and MUST NOT be directly represented in UTF-8 or any other | [12] and MUST NOT be directly represented in UTF-8 or any other | |||
encoding (this requirement is for compatibility with RFC 2327 and | encoding (this requirement is for compatibility with RFC 2327 and | |||
other SDP-related standards, which predate the development of | other SDP-related standards, which predate the development of | |||
internationalized domain names). | internationalized domain names). | |||
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. | |||
This memo defines version 0. 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> <sess-id> <sess-version> <nettype> <addrtype> | o=<username> <sess-id> <sess-version> <nettype> <addrtype> | |||
<unicast-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 identifier and 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. | |||
The <username> MUST NOT contain spaces. | The <username> MUST NOT contain spaces. | |||
<sess-id> is a numeric string such that the tuple of <username>, | <sess-id> is a numeric string such that the tuple of <username>, | |||
<sess-id>, <nettype>, <addrtype> and <unicast-address> form a | <sess-id>, <nettype>, <addrtype> and <unicast-address> form a | |||
globally unique identifier for the session. The method of | globally unique identifier for the session. The method of | |||
<sess-id> allocation is up to the creating tool, but it has been | <sess-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 [13]. | used to ensure uniqueness [14]. | |||
<sess-version> is a version number for this session description. Its | <sess-version> is a version number for this session description. Its | |||
usage is up to the creating tool, so long as <sess-version> is | usage is up to the creating tool, so long as <sess-version> is | |||
increased when a modification is made to the session data. Again, | increased when a modification is made to the session data. Again, | |||
it is RECOMMENDED that an NTP format timestamp is used. | it is RECOMMENDED that an NTP format timestamp is used. | |||
<nettype> is a text string giving the type of network. Initially | <nettype> is a text string giving the type of network. Initially | |||
"IN" is defined to have the meaning "Internet", but other values | "IN" is defined to have the meaning "Internet", but other values | |||
MAY be registered in future (see Section 8). | MAY be registered in future (see Section 8). | |||
skipping to change at page 11, line 43 | skipping to change at page 11, line 43 | |||
session was created. For an address type of IP4, this is either | session was created. For an address type of IP4, this is either | |||
the fully-qualified domain name of the machine, or the dotted- | the fully-qualified domain name of the machine, or the dotted- | |||
decimal representation of the IP version 4 address of the machine. | decimal representation of the IP version 4 address of the machine. | |||
For an address type of IP6, this is either the fully-qualified | For an address type of IP6, this is either the fully-qualified | |||
domain name of the machine, or the compressed textual | domain name of the machine, or the compressed textual | |||
representation of the IP version 6 address of the machine. For | representation of the IP version 6 address of the machine. For | |||
both IP4 and IP6, the fully-qualified domain name is the form that | both IP4 and IP6, the fully-qualified domain name is the form that | |||
SHOULD be given unless this is unavailable, in which case the | 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 (for example, a | |||
local address MUST NOT be included in an application-level | ||||
referral that might leave the scope). | ||||
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. | |||
For privacy reasons, it is sometimes desirable to obfuscate the | For privacy reasons, it is sometimes desirable to obfuscate the | |||
username and IP address of the session originator. If this is a | username and IP address of the session originator. If this is a | |||
concern, an arbitrary <username> and private <unicast-address> MAY be | concern, an arbitrary <username> and private <unicast-address> MAY be | |||
chosen to populate the "o=" field, provided these are selected in a | chosen to populate the "o=" field, provided these are selected in a | |||
manner that does not affect the global uniqueness of the field. | manner that does not affect the global uniqueness of the field. | |||
5.3 Session Name ("s=") | 5.3. Session Name ("s=") | |||
s=<session name> | s=<session name> | |||
The "s=" field is the textual session name. There MUST be one and | The "s=" field is the textual session name. There MUST be one and | |||
only one "s=" field per session description. The "s=" field MUST NOT | only one "s=" field per session description. The "s=" field MUST NOT | |||
be empty and SHOULD contain ISO 10646 characters (but see also the | be empty and SHOULD contain ISO 10646 characters (but see also the | |||
"a=charset" attribute). If a session has no meaningful name, the | "a=charset" attribute). If a session has no meaningful name, the | |||
value "s= " 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 Information ("i=") | 5.4. Session Information ("i=") | |||
i=<session description> | i=<session description> | |||
The "i=" field provides textual information about the session. There | The "i=" field provides textual information about the session. There | |||
MUST be at most one session-level "i=" field per session description, | MUST be at most one session-level "i=" field per session description, | |||
and at most one "i=" field per media. If the "a=charset" attribute | and at most one "i=" field per media. If the "a=charset" attribute | |||
is present, it specifies the character set used in the "i=" field. | is present, it specifies the character set used in the "i=" field. | |||
If the "a=charset" attribute is not present, the "i=" field MUST | If the "a=charset" attribute is not present, the "i=" field MUST | |||
contain ISO 10646 characters in UTF-8 encoding. | contain ISO 10646 characters in UTF-8 encoding. | |||
skipping to change at page 12, line 40 | skipping to change at page 12, line 43 | |||
media definitions, "i=" fields are primarily intended for labelling | media definitions, "i=" fields are primarily intended for labelling | |||
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. | |||
The "i=" field is intended to provide a free-form human readable | The "i=" field is intended to provide a free-form human readable | |||
description of the session or the purpose of a media stream. It is | description of the session or the purpose of a media stream. It is | |||
not suitable for parsing by automata. | not suitable for parsing by automata. | |||
5.5 URI ("u=") | 5.5. URI ("u=") | |||
u=<uri> | u=<uri> | |||
A URI is a Universal Resource Identifier as used by WWW clients [7], | A URI is a Universal Resource Identifier as used by WWW clients [7], | |||
[9]. The URI should be a pointer to additional information about the | [9]. The URI should be a pointer to additional information about the | |||
session. This field is OPTIONAL, but if it is present it MUST be | session. This field is OPTIONAL, but if it is present it MUST be | |||
specified before the first media field. No more than one URI field | specified before the first media field. No more than one URI field | |||
is allowed per session description. | is 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> | |||
The "e=" and "p=" lines specify contact information for the person | The "e=" and "p=" lines specify contact information for the person | |||
responsible for the conference. This is not necessarily the same | responsible for the conference. This is not necessarily the same | |||
person that created the 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 | |||
skipping to change at page 13, line 46 | skipping to change at page 13, line 46 | |||
The alternative RFC 2822 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 session-level "a=charset" attribute is set. | the appropriate session-level "a=charset" attribute is set. | |||
5.7 Connection Data ("c=") | 5.7. Connection Data ("c=") | |||
c=<nettype> <addrtype> <connection-address> | c=<nettype> <addrtype> <connection-address> | |||
The "c=" field contains connection data. | The "c=" field contains connection data. | |||
A session description MUST contain either at least one "c=" field in | A session description MUST contain either at least one "c=" field in | |||
each media description or a single "c=" field at the session level. | each media description or a single "c=" field at the session level. | |||
It MAY contain a single session-level "c=" field and additional "c=" | It MAY contain a single session-level "c=" field and additional "c=" | |||
field(s) per media description, in which case the per-media values | field(s) per media description, in which case the per-media values | |||
override the session-level settings for the respective media. | override the session-level settings for the respective media. | |||
skipping to change at page 15, line 51 | skipping to change at page 15, line 51 | |||
(remembering that the TTL field is not present in IPv6 multicast). | (remembering that the TTL field is not present in IPv6 multicast). | |||
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 for multiple addresses described above MUST NOT be | The slash notation for multiple addresses described above MUST NOT be | |||
used for IP unicast addresses. | used for IP unicast addresses. | |||
5.8 Bandwidth ("b=") | 5.8. Bandwidth ("b=") | |||
b=<bwtype>:<bandwidth> | b=<bwtype>:<bandwidth> | |||
This OPTIONAL field denotes the proposed bandwidth to be used by the | This OPTIONAL field denotes the proposed bandwidth to be used by the | |||
session or media. The <bwtype> is an alphanumeric modifier giving | session or media. The <bwtype> is an alphanumeric modifier giving | |||
the meaning of the <bandwidth> figure. Two values are defined in | the meaning of the <bandwidth> figure. Two values are defined in | |||
this specification, but other values MAY be registered in future (see | this specification, but other values MAY be registered in future (see | |||
Section 8 and [20], [24]): | Section 8 and [22], [26]): | |||
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 "conference total" bandwidth). The | to the bandwidth used (the "conference total" bandwidth). The | |||
primary purpose of this is to give an approximate idea as to | primary purpose of this is to give an approximate idea as to | |||
whether two or more sessions can co-exist simultaneously. When | whether two or more sessions can co-exist simultaneously. When | |||
using the CT modifier with RTP, if several RTP sessions are part | using the CT modifier with RTP, if several RTP sessions are part | |||
of the conference, the conference total refers to total bandwidth | of the conference, the conference total refers to total bandwidth | |||
of all RTP sessions. | 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 | |||
[18]. | [20]. | |||
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. | |||
A prefix "X-" is defined for <bwtype> names. This is intended for | A prefix "X-" is defined for <bwtype> names. This is intended for | |||
experimental purposes only. For example: | experimental purposes only. For example: | |||
b=X-YZ:128 | b=X-YZ:128 | |||
skipping to change at page 16, line 49 | skipping to change at page 16, line 49 | |||
SHOULD be registered with IANA in the standard namespace. SDP | SHOULD be registered with IANA in the standard namespace. SDP | |||
parsers MUST ignore bandwidth fields with unknown modifiers. | parsers MUST ignore bandwidth fields with unknown modifiers. | |||
Modifiers MUST be alpha-numeric and, although no length limit is | Modifiers MUST be alpha-numeric and, although no length limit is | |||
given, they are recommended to be short. | given, they are recommended to be short. | |||
The <bandwidth> is interpreted as kilobits per second by default. | The <bandwidth> is interpreted as kilobits per second by default. | |||
The definition of a new <bwtype> modifier MAY specify that the | The definition of a new <bwtype> modifier MAY specify that the | |||
bandwidth is to be interpreted in some alternative unit (the "CT" and | bandwidth is to be interpreted in some alternative unit (the "CT" and | |||
"AS" modifiers defined in this memo use the default units). | "AS" 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> | |||
The "t=" lines specify the start and stop times for a session. | The "t=" lines specify the start and stop times for a session. | |||
Multiple "t=" lines 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=" lines 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=" line (see below) | the session is active at regular times, an "r=" line (see below) | |||
should be used in addition to, and following, a "t=" line - in which | should be used in addition to, and following, a "t=" line - in which | |||
case the "t=" line 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 since 1900 [13]. | Network Time Protocol (NTP) time values in seconds since 1900 [14]. | |||
To convert these values to UNIX time, subtract decimal 2208988800. | To convert these values to UNIX time, subtract decimal 2208988800. | |||
NTP timestamps are elsewhere represented by 64 bit values which wrap | NTP timestamps are elsewhere represented by 64 bit values which wrap | |||
sometime in the year 2036. Since SDP uses an arbitrary length | sometime in the year 2036. Since SDP uses an arbitrary length | |||
decimal representation, this should not cause an issue (SDP | decimal representation, this should not cause an issue (SDP | |||
timestamps MUST continue counting seconds since 1900, NTP will use | timestamps MUST continue counting seconds since 1900, NTP will use | |||
the value modulo the 64 bit limit). | 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 | though it will not become active until after the <start-time>. If | |||
skipping to change at page 17, line 43 | skipping to change at page 17, line 43 | |||
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 | |||
other than this is required, an end-time SHOULD be given and modified | other than this is required, an end-time SHOULD be given and modified | |||
as appropriate when new information becomes available about when the | as appropriate when new information becomes available about when the | |||
session should really end. | session should really end. | |||
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. | |||
NOT be created for any session expected to have a duration of less | ||||
than 2 months, and should be discouraged for sessions expected to | ||||
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: | |||
skipping to change at page 18, line 27 | skipping to change at page 18, line 24 | |||
To make description more compact, times may also be given in units of | To make description more compact, times may also be given in units of | |||
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) | |||
Thus, the above session 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> .... | |||
To schedule a repeated session which spans a change from daylight | To schedule a repeated session which spans a change from daylight | |||
saving time to standard time or vice-versa, it is necessary to | saving time to standard time or vice-versa, it is necessary to | |||
specify offsets from the base time. This is required because | specify offsets from the base time. This is required because | |||
different time zones change time at different times of day, different | different time zones change time at different times of day, different | |||
countries change to or from daylight time on different dates, and | countries change to or from daylight time on different dates, and | |||
some countries do not have daylight saving time at all. | some countries do not have daylight saving time at all. | |||
skipping to change at page 19, line 24 | skipping to change at page 19, line 21 | |||
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 session | transmit several years worth of adjustments in one session | |||
announcement. | 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 | |||
implementations and its use is NOT RECOMMENDED. Work is in progress | implementations and its use is NOT RECOMMENDED. Work is in progress | |||
to define new key exchange mechanisms for use with SDP [26] [27] and | to define new key exchange mechanisms for use with SDP [28] [29] and | |||
it is expected that new applications will use those mechanisms. | it is expected that new applications will use those mechanisms. | |||
A key field is permitted before the first media entry (in which case | A key field is permitted before the first media entry (in which case | |||
it applies to all media in the session), or for each media entry as | it applies to all media in the session), or for each media entry as | |||
required. The format of keys and their usage is outside the scope of | required. The format of keys and their usage is outside the scope of | |||
this document, and the key field provides no way to indicate the | this document, and the key field provides no way to indicate the | |||
encryption algorithm to be used, key type, or other information about | encryption algorithm to be used, key type, or other information about | |||
the key: this is assumed to be provided by the higher-level protocol | the key: this is assumed to be provided by the higher-level protocol | |||
using SDP. If there is a need to convey this information within SDP, | using SDP. If there is a need to convey this information within SDP, | |||
the extensions mentioned previously SHOULD be used. Many security | the extensions mentioned previously SHOULD be used. Many security | |||
skipping to change at page 20, line 17 | skipping to change at page 20, line 12 | |||
The encryption key is included untransformed in this key field. | The encryption key is included untransformed in this key field. | |||
This method MUST NOT be used unless it can be guaranteed that | This method MUST NOT be used unless it can be guaranteed that | |||
the SDP is conveyed over a secure channel. The encryption key | the SDP is conveyed over a secure channel. The encryption key | |||
is interpreted as text according to the charset attribute, use | is interpreted as text according to the charset attribute, use | |||
the "k=base64:" method to convey characters that are otherwise | the "k=base64:" method to convey characters that are otherwise | |||
prohibited in SDP. | prohibited in SDP. | |||
k=base64:<encoded encryption key> | k=base64:<encoded encryption key> | |||
The encryption key is included in this key field but has been | The encryption key is included in this key field but has been | |||
base64 encoded [12] because it includes characters that are | base64 encoded [13] because it includes characters that are | |||
prohibited in SDP. This method MUST NOT be used unless it can | prohibited in SDP. This method MUST NOT be used unless it can | |||
be guaranteed that the SDP is conveyed over a secure channel. | be guaranteed that the SDP is conveyed over a secure channel. | |||
k=uri:<URI to obtain key> | k=uri:<URI to obtain key> | |||
A Universal Resource Identifier is included in the key field. | A Universal Resource Identifier is included in the key field. | |||
The URI refers to the data containing the key, and may require | The URI refers to the data containing the key, and may require | |||
additional authentication before the key can be returned. When | additional authentication before the key can be returned. When | |||
a request is made to the given URI, the reply should specify | a request is made to the given URI, the reply should specify | |||
the encoding for the key. The URI is often a secure HTTP URI, | the encoding for the key. The URI is often a a SSL/ | |||
although this is not required. | TLS-protected HTTP URI ("https:"), although this is not | |||
required. | ||||
k=prompt | k=prompt | |||
No key is included in this SDP description, but the session or | No key is included in this SDP description, but the session or | |||
media stream referred to by this key field is encrypted. The | media stream referred to by this key field is encrypted. The | |||
user should be prompted for the key when attempting to join the | user should be prompted for the key when attempting to join the | |||
session, and this user-supplied key should then be used to | session, and this user-supplied key should then be used to | |||
decrypt the media streams. The use of user-specified keys is | decrypt the media streams. The use of user-specified keys is | |||
NOT RECOMMENDED, since such keys tend to have weak security | NOT RECOMMENDED, since such keys tend to have weak security | |||
properties. | properties. | |||
The key field MUST NOT be used unless it can be guaranteed that the | The key field MUST NOT be used unless it can be guaranteed that the | |||
SDP is conveyed over a secure and trusted channel. An example of | SDP is conveyed over a secure and trusted channel. An example of | |||
such a channel might be SDP embedded inside an S/MIME message or a | such a channel might be SDP embedded inside an S/MIME message or a | |||
TLS-protected HTTP session. It is important to ensure that the | TLS-protected HTTP session. It is important to ensure that the | |||
secure channel is with the party that is authorised to join the | secure channel is with the party that is authorised to join the | |||
session, not an intermediary: if a caching proxy server is used, it | session, not an intermediary: if a caching proxy server is used, it | |||
is important to ensure that the proxy is either trusted or unable to | is important to ensure that the proxy is either trusted or unable to | |||
access the SDP. Definition of appropriate security measures is | access the SDP. | |||
beyond the scope of this specification, and should be defined by the | ||||
users of SDP. | ||||
5.13 Attributes ("a=") | 5.13. Attributes ("a=") | |||
a=<attribute> | a=<attribute> | |||
a=<attribute>:<value> | a=<attribute>:<value> | |||
Attributes are the primary means for extending SDP. Attributes may | Attributes are the primary means for extending SDP. Attributes may | |||
be defined to be used as "session-level" attributes, "media-level" | be defined to be used as "session-level" attributes, "media-level" | |||
attributes, or both. | attributes, or both. | |||
A media description may have any number of attributes ("a=" fields) | A media description may have any number of attributes ("a=" fields) | |||
which are media specific. These are referred to as "media-level" | which are media specific. These are referred to as "media-level" | |||
skipping to change at page 22, line 5 | skipping to change at page 21, line 45 | |||
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 its value should be interpreted in the session charset | which case its 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 8). If an | Attributes MUST be registered with IANA (see Section 8). 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 Descriptions ("m=") | 5.14. Media Descriptions ("m=") | |||
m=<media> <port> <proto> <fmt> ... | 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: | |||
<media> is the media type. Currently defined media are "audio", | <media> is the media type. Currently defined media are "audio", | |||
"video", "text", "application" and "message", although this list | "video", "text", "application" and "message", although this list | |||
may be extended in future (see Section 8). | may be extended in future (see Section 8). | |||
<port> is the transport port to which the media stream is sent. The | <port> is the transport port to which the media stream is sent. The | |||
meaning of the transport port depends on the network being used as | meaning of the transport port depends on the network being used as | |||
specified in the relevant "c=" field, and on the transport | specified in the relevant "c=" field, and on the transport | |||
protocol defined in the <proto> sub-field of the media field. | protocol defined in the <proto> sub-field of the media field. | |||
Other ports used by the media application (such as the RTCP port | Other ports used by the media application (such as the RTCP port | |||
[18]) MAY be derived algorithmically from the base media port or | [20]) MAY be derived algorithmically from the base media port or | |||
MAY be specified in a separate attribute (for example "a=rtcp:" as | MAY be specified in a separate attribute (for example "a=rtcp:" as | |||
defined in [21]). | defined in [23]). | |||
If non-contiguous ports are used or if they don't follow the | If non-contiguous ports are used or if they don't follow the | |||
parity rule of even RTP ports and odd RTCP ports, the "a=rtcp:" | parity rule of even RTP ports and odd RTCP ports, the "a=rtcp:" | |||
attribute MUST be used. Applications that are requested to send | attribute MUST be used. Applications that are requested to send | |||
media to a <port> that is odd and where the "a=rtcp:" is present | media to a <port> that is odd and where the "a=rtcp:" is present | |||
MUST NOT substract 1 to the RTP port: i.e, they MUST send the RTP | MUST NOT substract 1 to the RTP port: i.e, they MUST send the RTP | |||
to the port indicated in <port> and send the RTCP to the port | to the port indicated in <port> and send the RTCP to the port | |||
indicated in the "a=rtcp" attribute. | indicated in the "a=rtcp" attribute. | |||
For applications where hierarchically encoded streams are being | For applications where hierarchically encoded streams are being | |||
skipping to change at page 23, line 4 | skipping to change at page 22, line 41 | |||
m=<media> <port>/<number of ports> <proto> <fmt> ... | m=<media> <port>/<number of ports> <proto> <fmt> ... | |||
In such a case, the ports used depend on the transport protocol. | 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 | for data with the corresponding one-higher odd ports used for the | |||
RTCP belonging to the RTP session, and the <number of ports> | RTCP belonging to the RTP session, and the <number of ports> | |||
denoting the number of RTP sessions. For example: | denoting the 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 | 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 | and 49172 and 49173 form the second RTP/RTCP pair. RTP/AVP is the | |||
transport protocol and 31 is the format (see below). If non- | transport protocol and 31 is the format (see below). If non- | |||
contiguous ports are required, they must be signalled using a | contiguous ports are required, they must be signalled using a | |||
separate attribute (for example "a=rtcp:" as defined in [21]). | separate attribute (for example "a=rtcp:" as defined in [23]). | |||
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 | ports are specified in the "m=" field, a one-to-one mapping from | |||
port to the corresponding address is implied. For example: | port 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 combination of ports specified in "m=" lines and IP addresses | The semantics of multiple "m=" lines using the same transport | |||
specified in "c=" lines MUST comply with the following rules for | address are undefined. This implies that, unlike limited past | |||
RTP-based media streams (other protocols SHOULD define similar | practice, there is no implicit grouping defined by such means and | |||
rules): | an explicit grouping framework (for example [19]) should instead | |||
be used to express the intended semantics. | ||||
1. If two media sessions have the same transport address (i.e. | ||||
identical IP address and port numbers), the associated payload | ||||
types (e.g. given in the "a=rtpmap:" attribute) MUST NOT be in | ||||
conflict, i.e. the same payload type MUST NOT be mapped to | ||||
different media types. | ||||
2. If two media sessions have the same transport address, they | ||||
MUST use compatible media (e.g. both audio or both video). | ||||
3. If two media sessions have the same transport address, they | ||||
SHOULD operate under the same RTP profile. The sessions MAY | ||||
use two different RTP profiles only if those profiles are | ||||
specifically designed to be compatible. | ||||
4. If two media sessions have the same RTP transport address, | ||||
they MUST also use the same RTCP address and vice versa. | ||||
Two media sessions with the same transport address indicate | ||||
alternatives for the same media stream, i.e. all profiles, media | ||||
types, and payload types provided in any of the "m=" lines are | ||||
valid. | ||||
<proto> is the transport protocol. The meaning of the transport | <proto> is the transport protocol. The meaning of the transport | |||
protocol is dependent on the address type field in the relevant | protocol is dependent on the address type field in the relevant | |||
"c=" field. Thus a "c=" field of IP4 indicates that the transport | "c=" field. Thus a "c=" field of IP4 indicates that the transport | |||
protocol runs over IP4. The following transport protocols are | protocol runs over IP4. The following transport protocols are | |||
defined, but may be extended through registration of new protocols | defined, but may be extended through registration of new protocols | |||
with IANA (see Section 8): | with IANA (see Section 8): | |||
* udp: denotes an unspecified protocol running over UDP. | * udp: denotes an unspecified protocol running over UDP. | |||
* RTP/AVP: denotes RTP [18] used under the RTP Profile for Audio | * RTP/AVP: denotes RTP [20] used under the RTP Profile for Audio | |||
and Video Conferences with Minimal Control [19] running over | and Video Conferences with Minimal Control [21] running over | |||
UDP. | UDP. | |||
* RTP/SAVP: denotes the Secure Real-time Transport Protocol [22] | * RTP/SAVP: denotes the Secure Real-time Transport Protocol [24] | |||
running over UDP. | running over UDP. | |||
The main reason to specify the transport-protocol in addition to | The main reason to specify the transport-protocol in addition to | |||
the media format is that the same standard media formats may be | the media format is that the same standard media formats may be | |||
carried over different transport protocols even when the network | carried over different transport protocols even when the network | |||
protocol is the same - a historical example is vat PCM audio and | protocol is the same - a historical example is vat PCM audio and | |||
RTP PCM audio, another might be TCP/RTP PCM audio. In addition, | RTP PCM audio, another might be TCP/RTP PCM audio. In addition, | |||
relays and monitoring tools that are transport-protocol-specific | relays and monitoring tools that are transport-protocol-specific | |||
but format-independent are possible. | but format-independent are possible. | |||
skipping to change at page 25, line 19 | skipping to change at page 24, line 27 | |||
6. SDP Attributes | 6. SDP Attributes | |||
The following attributes are defined. Since application writers may | The following attributes are defined. Since application writers may | |||
add new attributes as they are required, this list is not exhaustive. | add new attributes as they are required, this list is not exhaustive. | |||
Registration procedures for new attributes are defined in Section | Registration procedures for new attributes are defined in Section | |||
8.2.4. | 8.2.4. | |||
a=cat:<category> | a=cat:<category> | |||
This attribute gives the dot-separated hierarchical category | This attribute gives the dot-separated hierarchical category of | |||
of the session. This is to enable a receiver to filter | the session. This is to enable a receiver to filter unwanted | |||
unwanted sessions by category. It is a session-level | sessions by category. There is no central registry of | |||
attribute, and is not dependent on charset. | categories. It is a session-level attribute, and is not | |||
dependent on charset. | ||||
a=keywds:<keywords> | a=keywds:<keywords> | |||
Like the cat attribute, this is to assist identifying wanted | Like the cat attribute, this is to assist identifying wanted | |||
sessions at the receiver. This allows a receiver to select | sessions at the receiver. This allows a receiver to select | |||
interesting session based on keywords describing the purpose | interesting session based on keywords describing the purpose of | |||
of the session. It is a session-level attribute. It is a | the session; there is no central registry of keywords. It is a | |||
charset dependent attribute, meaning that its value should be | session-level attribute. It is a charset dependent attribute, | |||
interpreted in the charset specified for the session | meaning that its value should be interpreted in the charset | |||
description if one is specified, or by default in ISO | specified for the session description if one is specified, or | |||
10646/UTF-8. | by default in ISO 10646/UTF-8. | |||
a=tool:<name and version of tool> | a=tool:<name and version of tool> | |||
This gives the name and version number of the tool used to | This gives the name and version number of the tool used to | |||
create the session description. It is a session-level | create the session description. It is a session-level | |||
attribute, and is not dependent on charset. | attribute, and is not dependent on charset. | |||
a=ptime:<packet time> | a=ptime:<packet time> | |||
This gives the length of time in milliseconds represented by | This gives the length of time in milliseconds represented by | |||
skipping to change at page 26, line 4 | skipping to change at page 25, line 16 | |||
This gives the length of time in milliseconds represented by | This gives the length of time in milliseconds represented by | |||
the media in a packet. This is probably only meaningful for | the media in a packet. This is probably only meaningful for | |||
audio data, but may be used with other media types if it makes | audio data, but may be used with other media types if it makes | |||
sense. It should not be necessary to know ptime to decode RTP | sense. It should not be necessary to know ptime to decode RTP | |||
or vat audio, and it is intended as a recommendation for the | or vat audio, and it is intended as a recommendation for the | |||
encoding/packetisation of audio. It is a media attribute, and | encoding/packetisation of audio. It is a media attribute, and | |||
is not dependent on charset. | is not dependent on charset. | |||
a=maxptime:<maximum packet time> | a=maxptime:<maximum packet time> | |||
The maximum amount of media which can be encapsulated in each | The maximum amount of media which can be encapsulated in each | |||
packet, expressed as time in milliseconds. The time SHALL be | packet, expressed as time in milliseconds. The time SHALL be | |||
calculated as the sum of the time the media present in the | calculated as the sum of the time the media present in the | |||
packet represents. For frame based codecs, the time SHOULD | packet represents. For frame based codecs, the time SHOULD be | |||
be an integer multiple of the frame size. This attribute is | an integer multiple of the frame size. This attribute is | |||
probably only meaningful for audio data, but may be used with | probably only meaningful for audio data, but may be used with | |||
other media types if it makes sense. It is a media attribute, | other media types if it makes sense. It is a media attribute, | |||
and is not dependent on charset. Note that this attribute was | and is not dependent on charset. Note that this attribute was | |||
introduced after RFC 2327, and non updated implementations will | introduced after RFC 2327, and non updated implementations will | |||
ignore this attribute. | ignore this attribute. | |||
a=rtpmap:<payload type> <encoding name>/<clock rate> | a=rtpmap:<payload type> <encoding name>/<clock rate> [/<encoding | |||
[/<encoding parameters>] | parameters>] | |||
This attribute maps from an RTP payload type number (as used in | This attribute maps from an RTP payload type number (as used in | |||
an "m=" line) to an encoding name denoting the payload format | an "m=" line) to an encoding name denoting the payload format | |||
to be used. It also provides information on the clock rate and | to be used. It also provides information on the clock rate and | |||
encoding parameters. It is a media level attribute that is not | encoding parameters. It is a media level attribute that is not | |||
dependent on charset. | dependent on charset. | |||
While an RTP profile may make static assignments of payload | While an RTP profile may make static assignments of payload | |||
type numbers to payload formats, it is more common for that | type numbers to payload formats, it is more common for that | |||
assignment to be done dynamically using "a=rtpmap:" attributes. | assignment to be done dynamically using "a=rtpmap:" attributes. | |||
skipping to change at page 27, line 8 | skipping to change at page 26, line 21 | |||
m=audio 49230 RTP/AVP 96 97 98 | m=audio 49230 RTP/AVP 96 97 98 | |||
a=rtpmap:96 L8/8000 | a=rtpmap:96 L8/8000 | |||
a=rtpmap:97 L16/8000 | a=rtpmap:97 L16/8000 | |||
a=rtpmap:98 L16/11025/2 | a=rtpmap:98 L16/11025/2 | |||
RTP profiles that specify the use of dynamic payload types MUST | RTP profiles that specify the use of dynamic payload types MUST | |||
define the set of valid encoding names and/or a means to | define the set of valid encoding names and/or a means to | |||
register encoding names if that profile is to be used with SDP. | register encoding names if that profile is to be used with SDP. | |||
The "RTP/AVP" and "RTP/SAVP" profiles use MIME sub-types for | The "RTP/AVP" and "RTP/SAVP" profiles use MIME sub-types for | |||
encoding names, under the top-level media type denoted in the | encoding names, under the top-level media type denoted in the | |||
"m=" line. In the example above, the media types are "audio/l8" | "m=" line. In the example above, the media types are | |||
and "audio/l16". | "audio/l8" and "audio/l16". | |||
For audio streams, <encoding parameters> indicates the | For audio streams, <encoding parameters> indicates the number | |||
number of audio channels. This parameter is OPTIONAL and | of audio channels. This parameter is OPTIONAL and may be | |||
may be omitted if the number of channels is one, provided | omitted if the number of channels is one, provided no | |||
no additional parameters are needed. | additional parameters are needed. | |||
For video streams, no encoding parameters are currently | For video streams, no encoding parameters are currently | |||
specified. | specified. | |||
Additional encoding parameters MAY be defined in the future, | Additional encoding parameters MAY be defined in the future, | |||
but codec specific parameters SHOULD NOT be added. Parameters | but codec specific parameters SHOULD NOT be added. Parameters | |||
added to an "a=rtpmap:" attribute SHOULD only be those required | added to an "a=rtpmap:" attribute SHOULD only be those required | |||
for a session directory to make the choice of appropriate media | for a session directory to make the choice of appropriate media | |||
to participate in a session. Codec-specific parameters should | to participate in a session. Codec-specific parameters should | |||
be added in other attributes (for example, "a=fmtp:"). | be added in other attributes (for example, "a=fmtp:"). | |||
Note: RTP audio formats typically do not include information | Note: RTP audio formats typically do not include information | |||
about the number of samples per packet. If a non-default (as | about the number of samples per packet. If a non-default (as | |||
defined in the RTP Audio/Video Profile) packetisation is | defined in the RTP Audio/Video Profile) packetisation is | |||
required, the "ptime" attribute is used as given below. | required, the "ptime" attribute is used as given below. | |||
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 | |||
only mode where applicable. It can be either a session or | mode where applicable. It can be either a session or media | |||
media attribute, and is not dependent on charset. Note that | attribute, and is not dependent on charset. Note that recvonly | |||
recvonly applies to the media only, not to any associated | applies to the media only, not to any associated control | |||
control protocol (e.g. an RTP based system in recvonly mode | protocol (e.g. an RTP based system in recvonly mode SHOULD | |||
SHOULD still send RTCP packets). | still send RTCP packets). | |||
a=sendrecv | a=sendrecv | |||
This specifies that the tools should be started in send and | This specifies that the tools should be started in send and | |||
receive mode. This is necessary for interactive conferences | receive mode. This is necessary for interactive conferences | |||
with tools that default to receive only mode. It can be either | with tools that default to receive only mode. It can be either | |||
a session or media attribute, and is not dependent on charset. | a session or media attribute, and is not dependent on charset. | |||
If none of the attributes "sendonly", "recvonly", "inactive", | If none of the attributes "sendonly", "recvonly", "inactive", | |||
and "sendrecv" is present, "sendrecv" SHOULD be assumed as the | and "sendrecv" is present, "sendrecv" SHOULD be assumed as the | |||
default for sessions which are not of the conference type | default for sessions which are not of the conference type | |||
"broadcast" or "H332" (see below). | "broadcast" or "H332" (see below). | |||
a=sendonly | a=sendonly | |||
This specifies that the tools should be started in send-only | This specifies that the tools should be started in send-only | |||
mode. An example may be where a different unicast address is | mode. An example may be where a different unicast address is | |||
to be used for a traffic destination than for a traffic | to be used for a traffic destination than for a traffic source. | |||
source. In such a case, two media descriptions may be used, | In such a case, two media descriptions may be used, one | |||
one sendonly and one recvonly. It can be either a session or | sendonly and one recvonly. It can be either a session or media | |||
media attribute, but would normally only be used as a media | attribute, but would normally only be used as a media | |||
attribute. It is not dependent on charset. Note that sendonly | attribute. It is not dependent on charset. Note that sendonly | |||
applies only to the media, and any associated control protocol | applies only to the media, and any associated control protocol | |||
(e.g. RTCP) SHOULD still be received and processed as normal. | (e.g. RTCP) SHOULD still be received and processed as normal. | |||
a=inactive | a=inactive | |||
This specifies that the tools should be started in inactive | This specifies that the tools should be started in inactive | |||
mode. This is necessary for interactive conferences where | mode. This is necessary for interactive conferences where | |||
users can put other users on hold. No media is sent over an | users can put other users on hold. No media is sent over an | |||
inactive media stream. Note that an RTP based system SHOULD | inactive media stream. Note that an RTP based system SHOULD | |||
still send RTCP, even if started inactive. It can be either a | still send RTCP, even if started inactive. It can be either a | |||
session or media attribute, and is not dependent on charset. | session or media attribute, and is not dependent on charset. | |||
a=orient:<orientation> | a=orient:<orientation> | |||
Normally this is only used for a whiteboard or presentation | Normally this is only used for a whiteboard or presentation | |||
tool. It specifies the orientation of a the workspace on | tool. It specifies the orientation of a the workspace on the | |||
the screen. It is a media attribute. Permitted values are | screen. It is a media attribute. Permitted values are | |||
"portrait", "landscape" and "seascape" (upside down landscape). | "portrait", "landscape" and "seascape" (upside down landscape). | |||
It is not dependent on charset. | It is not dependent on charset. | |||
a=type:<conference type> | a=type:<conference type> | |||
This specifies the type of the conference. Suggested values | This specifies the type of the conference. Suggested values | |||
are "broadcast", "meeting", "moderated", "test" and "H332". | are "broadcast", "meeting", "moderated", "test" and "H332". | |||
"recvonly" should be the default for "type:broadcast" | "recvonly" should be the default for "type:broadcast" sessions, | |||
sessions, "type:meeting" should imply "sendrecv" and | "type:meeting" should imply "sendrecv" and "type:moderated" | |||
"type:moderated" should indicate the use of a floor control | should indicate the use of a floor control tool and that the | |||
tool and that the media tools are started so as to mute new | media tools are started so as to mute new sites joining the | |||
sites joining the conference. | conference. | |||
Specifying the attribute "type:H332" indicates that this | Specifying the attribute "type:H332" indicates that this | |||
loosely coupled session is part of a H.332 session as defined | loosely coupled session is part of a H.332 session as defined | |||
in the ITU H.332 specification [15]. Media tools should be | in the ITU H.332 specification [27]. Media tools should be | |||
started "recvonly". | started "recvonly". | |||
Specifying the attribute "type:test" is suggested as a hint | Specifying the attribute "type:test" is suggested as a hint | |||
that, unless explicitly requested otherwise, receivers can | that, unless explicitly requested otherwise, receivers can | |||
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. | |||
For example, the ISO 8859-1 is specified with the following | For example, the ISO 8859-1 is specified with the following SDP | |||
SDP attribute: | attribute: | |||
a=charset:ISO-8859-1 | a=charset:ISO-8859-1 | |||
This is a session-level attribute and is not dependent on | This is a session-level attribute and is not dependent on | |||
charset. The charset specified MUST be one of those registered | charset. The charset specified MUST be one of those registered | |||
with IANA, such as ISO-8859-1. The character set identifier is | with IANA, such as ISO-8859-1. The character set identifier is | |||
a US-ASCII string and MUST be compared against the IANA | a US-ASCII string and MUST be compared against the IANA | |||
identifiers using a case insensitive comparison. If the | identifiers using a case insensitive comparison. If the | |||
identifier is not recognised or not supported, all strings that | identifier is not recognised or not supported, all strings that | |||
are affected by it SHOULD be regarded as octet strings. | are affected by 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 | |||
use of bytes 0x00 (Nul), 0x0A (LF) and 0x0d (CR). Character | of bytes 0x00 (Nul), 0x0A (LF) and 0x0d (CR). Character sets | |||
sets requiring the use of these characters MUST define a | requiring the use of these characters MUST define a quoting | |||
quoting mechanism that prevents these bytes appearing within | mechanism that prevents these bytes appearing within text | |||
text fields. | 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 | |||
attribute. As a session level attribute, it specifies the | attribute. As a session level attribute, it specifies the | |||
language for the session description. As a media level | language for the session description. As a media level | |||
attribute, it specifies the language for any media-level SDP | attribute, it specifies the language for any media-level SDP | |||
information field associated with that media. Multiple | information field associated with that media. Multiple sdplang | |||
sdplang attributes can be provided either at session or media | attributes can be provided either at session or media level if | |||
level if multiple languages in the session description or | multiple languages in the session description or media use | |||
media use multiple languages, in which case the order of the | multiple languages, in which case the order of the attributes | |||
attributes indicates the order of importance of the various | indicates the order of importance of the various languages in | |||
languages in the session or media from most important to least | the session or media from most important to least important. | |||
important. | ||||
In general, sending session descriptions consisting of | In general, sending session descriptions consisting of multiple | |||
multiple languages is discouraged. Instead, multiple | languages is discouraged. Instead, multiple descriptions | |||
descriptions SHOULD be sent describing the session, one in | SHOULD be sent describing the session, one in each language. | |||
each language. However this is not possible with all | However this is not possible with all transport mechanisms, and | |||
transport mechanisms, and so multiple sdplang attributes are | so multiple sdplang attributes are allowed although NOT | |||
allowed although NOT RECOMMENDED. | RECOMMENDED. | |||
The "sdplang" attribute value must be a single RFC 3066 | The "sdplang" attribute value must be a single RFC 3066 | |||
language tag in US-ASCII [6]. It is not dependent on | language tag in US-ASCII [10]. It is not dependent on the | |||
the charset attribute. An "sdplang" attribute SHOULD be | charset attribute. An "sdplang" attribute SHOULD be specified | |||
specified when a session is of sufficient scope to cross | when a session is of sufficient scope to cross geographic | |||
geographic boundaries where the language of recipients cannot | boundaries where the language of recipients cannot be assumed, | |||
be assumed, or where the session is in a different language | or where the session is in a different language from the | |||
from the locally assumed norm. | locally assumed norm. | |||
a=lang:<language tag> | a=lang:<language tag> | |||
This can be a session level attribute or a media level | This can be a session level attribute or a media level | |||
attribute. As a session level attribute, it specifies the | attribute. As a session level attribute, it specifies the | |||
default language for the session being described. As a media | default language for the session being described. As a media | |||
level attribute, it specifies the language for that media, | level attribute, it specifies the language for that media, | |||
overriding any session-level language specified. Multiple | overriding any session-level language specified. Multiple lang | |||
lang attributes can be provided either at session or media | attributes can be provided either at session or media level if | |||
level if the session description or media use multiple | the session description or media use multiple languages, in | |||
languages, in which case the order of the attributes indicates | which case the order of the attributes indicates the order of | |||
the order of importance of the various languages in the | importance of the various languages in the session or media | |||
session or media from most important to least important. | from most important to least important. | |||
The "lang" attribute value must be a single RFC 3066 language | The "lang" attribute value must be a single RFC 3066 language | |||
tag in US-ASCII [6]. It is not dependent on the charset | tag in US-ASCII [10]. It is not dependent on the charset | |||
attribute. A "lang" attribute SHOULD be specified when a | attribute. A "lang" attribute SHOULD be specified when a | |||
session is of sufficient scope to cross geographic boundaries | session is of sufficient scope to cross geographic boundaries | |||
where the language of recipients cannot be assumed, or where | where the language of recipients cannot be assumed, or where | |||
the session is in a different language from the locally | the session is in a different language from the locally assumed | |||
assumed norm. | norm. | |||
a=framerate:<frame rate> | a=framerate:<frame rate> | |||
This gives the maximum video frame rate in frames/sec. It is | This gives the maximum video frame rate in frames/sec. It is | |||
intended as a recommendation for the encoding of video data. | intended as a recommendation for the encoding of video data. | |||
Decimal representations of fractional values using the | Decimal representations of fractional values using the notation | |||
notation "<integer>.<fraction>" are allowed. It is a | "<integer>.<fraction>" are allowed. It is a media attribute, | |||
media attribute, defined only for video media, and is not | defined only for video media, and is not dependent on charset. | |||
dependent on charset. | ||||
a=quality:<quality> | a=quality:<quality> | |||
This gives a suggestion for the quality of the encoding as an | This gives a suggestion for the quality of the encoding as an | |||
integer value. The intention of the quality attribute for | integer value. The intention of the quality attribute for | |||
video is to specify a non-default trade-off between frame-rate | video is to specify a non-default trade-off between frame-rate | |||
and still-image quality. For video, the value in the range 0 | and still-image quality. For video, the value in the range 0 | |||
to 10, with the following suggested meaning: | to 10, with the following suggested meaning: | |||
10 - the best still-image quality the compression scheme | 10 - the best still-image quality the compression scheme | |||
skipping to change at page 31, line 4 | skipping to change at page 30, line 15 | |||
a=quality:<quality> | a=quality:<quality> | |||
This gives a suggestion for the quality of the encoding as an | This gives a suggestion for the quality of the encoding as an | |||
integer value. The intention of the quality attribute for | integer value. The intention of the quality attribute for | |||
video is to specify a non-default trade-off between frame-rate | video is to specify a non-default trade-off between frame-rate | |||
and still-image quality. For video, the value in the range 0 | and still-image quality. For video, the value in the range 0 | |||
to 10, with the following suggested meaning: | to 10, with the following suggested meaning: | |||
10 - the best still-image quality the compression scheme | 10 - the best still-image quality the compression scheme | |||
can give. | can give. | |||
5 - the default behaviour given no quality suggestion. | 5 - the default behaviour given no quality suggestion. | |||
0 - the worst still-image quality the codec designer | 0 - the worst still-image quality the codec designer | |||
thinks is still usable. | thinks is still usable. | |||
It is a media attribute, and is not dependent on charset. | It is a media attribute, and is not dependent on charset. | |||
a=fmtp:<format> <format specific parameters> | a=fmtp:<format> <format specific parameters> | |||
This attribute allows parameters that are specific to a | This attribute allows parameters that are specific to a | |||
particular format to be conveyed in a way that SDP doesn't | particular format to be conveyed in a way that SDP doesn't have | |||
have to understand them. The format must be one of the | to understand them. The format must be one of the formats | |||
formats specified for the media. Format-specific parameters | specified for the media. Format-specific parameters may be any | |||
may be any set of parameters required to be conveyed by SDP | set of parameters required to be conveyed by SDP and given | |||
and given unchanged to the media tool that will use this | unchanged to the media tool that will use this format. At most | |||
format. At most one instance of this attribute is allowed | one instance of this attribute is allowed for each format. | |||
for each format. | ||||
It is a media attribute, and is not dependent on charset. | It is a media attribute, and is not dependent on charset. | |||
7. Security Considerations | 7. Security Considerations | |||
SDP is frequently used with the Session Initiation Protocol [15] | SDP is frequently used with the Session Initiation Protocol [16] | |||
using the offer/answer model [17] to agree parameters for unicast | using the offer/answer model [18] to agree on parameters for unicast | |||
sessions. When used in this manner, the security considerations of | sessions. When used in this manner, the security considerations of | |||
those protocols apply. | those protocols apply. | |||
SDP is a session description format that describes multimedia | SDP is a session description format that describes multimedia | |||
sessions. A session description SHOULD NOT be trusted unless it has | sessions. Entities receiving and acting upon an SDP message SHOULD | |||
been obtained by an authenticated transport protocol from a trusted | be aware that a session description cannot be trusted unless it has | |||
source. Many different transport protocols may be used to distribute | been obtained by an authenticated transport protocol from a known and | |||
session description, and the nature of the authentication will differ | trusted source. Many different transport protocols may be used to | |||
from transport to transport. | distribute session description, and the nature of the authentication | |||
will differ from transport to transport. For some transports, | ||||
security features are often not deployed. In case a session | ||||
description has not been obtained in a trusted manner, the endpoint | ||||
SHOULD exercise care because, among other attacks, the media sessions | ||||
received may not be the intended ones, the destination where media is | ||||
sent to may not be the expected one, any the parameters of the | ||||
session may be incorrect, or the media security may be compromised. | ||||
It is up to the endpoint to take a sensible decision taking into | ||||
account the security risks of the application and the user | ||||
preferences and may decide to inquire the user whether or not to | ||||
accept the session. | ||||
One transport that will frequently be used to distribute session | One transport that can be used to distribute session descriptions is | |||
descriptions is the Session Announcement Protocol (SAP). SAP | the Session Announcement Protocol (SAP). SAP provides both | |||
provides both encryption and authentication mechanisms but due to the | encryption and authentication mechanisms but due to the nature of | |||
nature of session announcements it is likely that there are many | session announcements it is likely that there are many occasions | |||
occasions where the originator of a session announcement cannot be | where the originator of a session announcement cannot be | |||
authenticated because they are previously unknown to the receiver of | authenticated because they are previously unknown to the receiver of | |||
the announcement and because no common public key infrastructure is | the announcement and because no common public key infrastructure is | |||
available. | available. | |||
On receiving a session description over an unauthenticated transport | On receiving a session description over an unauthenticated transport | |||
mechanism or from an untrusted party, software parsing the session | mechanism or from an untrusted party, software parsing the session | |||
should take a few precautions. Session descriptions contain | should take a few precautions. Session descriptions contain | |||
information required to start software on the receivers system. | information required to start software on the receivers system. | |||
Software that parses a session description MUST NOT be able to start | Software that parses a session description MUST NOT be able to start | |||
other software except that which is specifically configured as | other software except that which is specifically configured as | |||
skipping to change at page 32, line 27 | skipping to change at page 31, line 47 | |||
In this specification, there are no attributes which would allow the | In this specification, there are no attributes which would allow the | |||
recipient of a session description to be informed to start multimedia | recipient of a session description to be informed to start multimedia | |||
tools in a mode where they default to transmitting. Under some | tools in a mode where they default to transmitting. Under some | |||
circumstances it might be appropriate to define such attributes. If | circumstances it might be appropriate to define such attributes. If | |||
this is done an application parsing a session description containing | this is done an application parsing a session description containing | |||
such attributes SHOULD either ignore them, or inform the user that | such attributes SHOULD either ignore them, or inform the user that | |||
joining this session will result in the automatic transmission of | joining this session will result in the automatic transmission of | |||
multimedia data. The default behaviour for an unknown attribute is | multimedia data. The default behaviour for an unknown attribute is | |||
to ignore it. | to ignore it. | |||
Session descriptions may be parsed at intermediate systems such as | In certain environments is has become common for intermediary systems | |||
firewalls for the purposes of opening a hole in the firewall to allow | to intercept and analyse session descriptions contained within other | |||
participation in multimedia sessions. This SHOULD NOT be done unless | signalling protocols. This is done for a range of purposes, | |||
the SDP is conveyed in a manner that allows proper authentication and | including but not limited to: opening holes in firewalls to allow | |||
authorization checks to ensure that firewall holes are only opened in | media streams to pass, or to mark, prioritize, or block traffic | |||
accordance with applicable security policy. SDP by itself does not | selectively. In some cases, such intermediary systems may modify the | |||
include sufficient information to enable these checks: they depend on | session description, for example to have the contents of the session | |||
the encapsulating protocol (e.g. SIP or RTSP). | description match NAT bindings dynamically created. These behaviors | |||
are NOT RECOMMENDED unless the session description is conveyed in | ||||
such a manner that allows the intermediary system to conduct proper | ||||
checks to establish the authenticity of the session description, and | ||||
the authority of its source to establish such communication sessions. | ||||
SDP by itself does not include sufficient information to enable these | ||||
checks: they depend on the encapsulating protocol (e.g. SIP or | ||||
RTSP). | ||||
Use of the "k=" field poses a significant security risk, since it | Use of the "k=" field poses a significant security risk, since it | |||
conveys session encryption keys in the clear. SDP MUST NOT be used | conveys session encryption keys in the clear. SDP MUST NOT be used | |||
to convey key material, unless it can be guaranteed that the channel | to convey key material, unless it can be guaranteed that the channel | |||
over which the SDP is delivered is both private and authenticated. | over which the SDP is delivered is both private and authenticated. | |||
8. IANA Considerations | 8. IANA Considerations | |||
8.1 The "application/sdp" media type | 8.1. The "application/sdp" media type | |||
One MIME media type registration from RFC 2327 is to be updated, as | One MIME media type registration from RFC 2327 is to be updated, as | |||
defined below. | defined below. | |||
To: ietf-types@iana.org | To: ietf-types@iana.org | |||
Subject: Registration of media type "application/sdp" | Subject: Registration of media type "application/sdp" | |||
MIME media type name: application | MIME media type name: application | |||
MIME subtype name: sdp | MIME subtype name: sdp | |||
skipping to change at page 34, line 5 | skipping to change at page 34, line 5 | |||
Mark Handley <M.Handley@cs.ucl.ac.uk> | Mark Handley <M.Handley@cs.ucl.ac.uk> | |||
Colin Perkins <csp@csperkins.org> | Colin Perkins <csp@csperkins.org> | |||
IETF MMUSIC working group <mmusic@ietf.org> | IETF MMUSIC working group <mmusic@ietf.org> | |||
Intended usage: COMMON | Intended usage: COMMON | |||
Author/Change controller: | Author/Change controller: | |||
Authors of RFC XXXX | Authors of RFC XXXX | |||
IETF MMUSIC working group delegated from the IESG | IETF MMUSIC working group delegated from the IESG | |||
8.2 Registration of Parameters | 8.2. Registration of Parameters | |||
There are seven field names that may be registered with IANA. Using | There are seven field names that may be registered with IANA. Using | |||
the terminology in the SDP specification BNF, they are "media", | the terminology in the SDP specification BNF, they are "media", | |||
"proto", "fmt", "att-field", "bwtype", "nettype" and "addrtype". | "proto", "fmt", "att-field", "bwtype", "nettype" and "addrtype". | |||
8.2.1 Media types ("media") | 8.2.1. Media types ("media") | |||
The set of media types is intended to be small and SHOULD NOT be | The set of media types is intended to be small and SHOULD NOT be | |||
extended except under rare circumstances. The same rules should | extended except under rare circumstances. The same rules should | |||
apply for media names as for top-level MIME content types, and where | apply for media names as for top-level MIME content types, and where | |||
possible the same name should be registered for SDP as for MIME. For | possible the same name should be registered for SDP as for MIME. For | |||
media other than existing MIME top-level content types, a standards- | media other than existing MIME top-level content types, a standards- | |||
track RFC MUST be produced for a new top-level content type to be | track RFC MUST be produced for a new top-level content type to be | |||
registered, and the registration MUST provide good justification why | registered, and the registration MUST provide good justification why | |||
no existing media name is appropriate (the "Standards Action" policy | no existing media name is appropriate (the "Standards Action" policy | |||
of RFC 2434 [8]. | of RFC 2434 [8]. | |||
This memo registers the media types "audio", "video", "text", | This memo registers the media types "audio", "video", "text", | |||
"application" and "message". | "application" and "message". | |||
Note: The media types "control" and "data" were listed as valid in | Note: The media types "control" and "data" were listed as valid in | |||
the previous version of this specification [6], however their | the previous version of this specification [6], however their | |||
semantics were never fully specified and they are not widely used. | semantics were never fully specified and they are not widely used. | |||
These media types have been removed in this specification, although | These media types have been removed in this specification, although | |||
they still remain valid media type capabilities for a SIP user agent | they still remain valid media type capabilities for a SIP user agent | |||
as defined in RFC 3840 [23]. If these media types are considered | as defined in RFC 3840 [25]. If these media types are considered | |||
useful in future, a Standards Track RFC MUST be produced to document | useful in future, a Standards Track RFC MUST be produced to document | |||
their use. Until that is done, applications SHOULD NOT use these | their use. Until that is done, applications SHOULD NOT use these | |||
types and SHOULD NOT declare support for them in SIP capabilities | types and SHOULD NOT declare support for them in SIP capabilities | |||
declarations (even though they exist in the registry created by RFC | declarations (even though they exist in the registry created by RFC | |||
3840). | 3840). | |||
8.2.2 Transport protocols ("proto") | 8.2.2. Transport protocols ("proto") | |||
The "proto" field describes the transport protocol used. This SHOULD | The "proto" field describes the transport protocol used. This SHOULD | |||
reference a standards-track protocol RFC. This memo registers three | reference a standards-track protocol RFC. This memo registers three | |||
values: "RTP/AVP" is a reference to RTP [18] used under the RTP | values: "RTP/AVP" is a reference to RTP [20] used under the RTP | |||
Profile for Audio and Video Conferences with Minimal Control [19] | Profile for Audio and Video Conferences with Minimal Control [21] | |||
running over UDP/IP, "RTP/SAVP" is a reference to the Secure Real- | running over UDP/IP, "RTP/SAVP" is a reference to the Secure Real- | |||
time Transport Protocol [22], and "udp" indicates an unspecified | time Transport Protocol [24], and "udp" indicates an unspecified | |||
protocol over UDP. | protocol over UDP. | |||
If other RTP profiles are defined in the future, their "proto" name | If other RTP profiles are defined in the future, their "proto" name | |||
SHOULD be specified in the same manner. For example, an RTP profile | SHOULD be specified in the same manner. For example, an RTP profile | |||
whose short name is "XYZ" would be denoted by a "proto" field of | whose short name is "XYZ" would be denoted by a "proto" field of | |||
"RTP/XYZ". | "RTP/XYZ". | |||
New transport protocols SHOULD be registered with IANA. | New transport protocols SHOULD be registered with IANA. | |||
Registrations MUST reference an RFC describing the protocol. Such an | Registrations MUST reference an RFC describing the protocol. Such an | |||
RFC MAY be Experimental or Informational, although it is preferable | RFC MAY be Experimental or Informational, although it is preferable | |||
if it is Standards-Track. Registrations MUST also define the rules | if it is Standards-Track. Registrations MUST also define the rules | |||
by which their "fmt" namespace is managed (see below). | by which their "fmt" namespace is managed (see below). | |||
8.2.3 Media formats ("fmt") | 8.2.3. Media formats ("fmt") | |||
Each transport protocol, defined by the "proto" field, has an | Each transport protocol, defined by the "proto" field, has an | |||
associated "fmt" namespace that describes the media formats which may | associated "fmt" namespace that describes the media formats which may | |||
conveyed by that protocol. Formats cover all the possible encodings | conveyed by that protocol. Formats cover all the possible encodings | |||
that might want to be transported in a multimedia session. | that might want to be transported in a multimedia session. | |||
RTP payload formats under the "RTP/AVP" and "RTP/SAVP" profiles MUST | RTP payload formats under the "RTP/AVP" and "RTP/SAVP" profiles MUST | |||
use the payload type number as their "fmt" value. If the payload | use the payload type number as their "fmt" value. If the payload | |||
type number is dynamically assigned by this session description, an | type number is dynamically assigned by this session description, an | |||
additional "rtpmap" attribute MUST be included to specify the format | additional "rtpmap" attribute MUST be included to specify the format | |||
skipping to change at page 35, line 40 | skipping to change at page 35, line 40 | |||
through the IETF process (RFC 2048) by production of, or reference | through the IETF process (RFC 2048) by production of, or reference | |||
to, a standards-track RFC that defines the transport protocol for the | to, a standards-track RFC that defines the transport protocol for the | |||
format. | format. | |||
For other protocols, formats MAY be registered according to the rules | For other protocols, formats MAY be registered according to the rules | |||
of the associated "proto" specification. | of the associated "proto" specification. | |||
Registrations of new formats MUST specify which transport protocols | Registrations of new formats MUST specify which transport protocols | |||
they apply to. | they apply to. | |||
8.2.4 Attribute names ("att-field") | 8.2.4. Attribute names ("att-field") | |||
Attribute field names ("att-field") MUST be registered with IANA and | Attribute field names ("att-field") MUST be registered with IANA and | |||
documented, because of noticeable issues due to conflicting | documented, because of noticeable issues due to conflicting | |||
attributes under the same name. Unknown attributes in SDP are simply | attributes under the same name. Unknown attributes in SDP are simply | |||
ignored, but conflicting ones that fragment the protocol are a | ignored, but conflicting ones that fragment the protocol are a | |||
serious problem. | serious problem. | |||
New attribute registrations are accepted according to the | New attribute registrations are accepted according to the | |||
"Specification Required" policy of RFC 2434, provided that the | "Specification Required" policy of RFC 2434, provided that the | |||
specification includes the following information: | specification includes the following information: | |||
skipping to change at page 37, line 26 | skipping to change at page 37, line 26 | |||
inactive | Either | No | inactive | Either | No | |||
orient | Media | No | orient | Media | No | |||
type | Session | No | type | Session | No | |||
charset | Session | No | charset | Session | No | |||
sdplang | Either | No | sdplang | Either | No | |||
lang | Either | No | lang | Either | No | |||
framerate | Media | No | framerate | Media | No | |||
quality | Media | No | quality | Media | No | |||
fmtp | Media | No | fmtp | Media | No | |||
8.2.5 Bandwidth specifiers ("bwtype") | 8.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" | IANA is requested to register the bandwith specifiers "CT" and "AS" | |||
with definitions as in Section 5.8 of this memo (these definitions | with definitions as in Section 5.8 of this memo (these definitions | |||
update those in RFC 2327). | update those in RFC 2327). | |||
8.2.6 Network types ("nettype") | 8.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. | type and specifies how and when they would be used. | |||
IANA is requested to register the network type "IN" to represent the | 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 | Internet, with definition as in Sections 5.2 and 5.7 of this memo | |||
(these definitions update those in RFC 2327). | (these definitions update those in RFC 2327). | |||
8.2.7 Address types ("addrtype") | 8.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. Address types are not expected to be | syntax of the address type. Address types are not expected to be | |||
registered frequently. | registered frequently. | |||
IANA is requested to register the address types "IP4" and "IP6" with | 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 as in Sections 5.2 and 5.7 of this memo (these | |||
definitions update those in RFC 2327). | definitions update those in RFC 2327). | |||
8.2.8 Registration Procedure | 8.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) | |||
skipping to change at page 38, line 49 | skipping to change at page 38, line 48 | |||
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 for the registered name (this | o a reference to the specification for the registered name (this | |||
will typically be an RFC number). | will typically be an RFC number). | |||
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. | |||
8.3 Encryption Key Access Methods | 8.3. Encryption Key Access Methods | |||
The IANA currently maintains a table of SDP encryption key access | The IANA currently maintains a table of SDP encryption key access | |||
method ("enckey") names. This table is obsolete and SHOULD be | method ("enckey") names. This table is obsolete and SHOULD be | |||
removed, since the "k=" line is not extensible. New registrations | removed, since the "k=" line is not extensible. New registrations | |||
MUST NOT be accepted. | MUST NOT be accepted. | |||
9. SDP Grammar | 9. SDP Grammar | |||
This section provides an Augmented BNF grammar for SDP. ABNF is | This section provides an Augmented BNF grammar for SDP. ABNF is | |||
defined in [4]. | defined in [4]. | |||
skipping to change at page 45, line 6 | skipping to change at page 45, line 7 | |||
Most uses of the "x-" prefix notation for experimental parameters are | Most uses of the "x-" prefix notation for experimental parameters are | |||
disallowed and the other uses are deprecated. | disallowed and the other uses are deprecated. | |||
11. Acknowledgements | 11. Acknowledgements | |||
Many people in the IETF Multiparty Multimedia Session Control | Many people in the IETF Multiparty Multimedia Session Control | |||
(MMUSIC) working group have made comments and suggestions | (MMUSIC) working group have made comments and suggestions | |||
contributing to this document. In particular, we would like to thank | contributing to this document. In particular, we would like to thank | |||
Eve Schooler, Steve Casner, Bill Fenner, Allison Mankin, Ross | Eve Schooler, Steve Casner, Bill Fenner, Allison Mankin, Ross | |||
Finlayson, Peter Parnes, Joerg Ott, Carsten Bormann, Steve Hanna, | Finlayson, Peter Parnes, Joerg Ott, Carsten Bormann, Steve Hanna, | |||
Jonathan Lennox, Keith Drage, Sean Olson, Bernie Hoeneisen and | Jonathan Lennox, Keith Drage, Sean Olson, Bernie Hoeneisen, Jonathan | |||
Jonathan Rosenberg. | Rosenberg, John Elwell, Flemming Andreasen, Jon Peterson and Spencer | |||
Dawkins. | ||||
12. References | 12. References | |||
12.1 Normative References | 12.1. Normative References | |||
[1] Mockapetris, P., "Domain names - concepts and facilities", | [1] Mockapetris, P., "Domain names - concepts and facilities", | |||
STD 13, RFC 1034, November 1987. | STD 13, RFC 1034, November 1987. | |||
[2] Mockapetris, P., "Domain names - implementation and | [2] Mockapetris, P., "Domain names - implementation and | |||
specification", STD 13, RFC 1035, November 1987. | specification", STD 13, RFC 1035, November 1987. | |||
[3] Bradner, S., "Key words for use in RFCs to Indicate Requirement | [3] 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. | |||
skipping to change at page 45, line 45 | skipping to change at page 45, line 47 | |||
[8] Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA | [8] Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA | |||
Considerations Section in RFCs", BCP 26, RFC 2434, | Considerations Section in RFCs", BCP 26, RFC 2434, | |||
October 1998. | October 1998. | |||
[9] Hinden, R., Carpenter, B., and L. Masinter, "Format for Literal | [9] Hinden, R., Carpenter, B., and L. Masinter, "Format for Literal | |||
IPv6 Addresses in URL's", RFC 2732, December 1999. | IPv6 Addresses in URL's", RFC 2732, December 1999. | |||
[10] Alvestrand, H., "Tags for the Identification of Languages", | [10] Alvestrand, H., "Tags for the Identification of Languages", | |||
BCP 47, RFC 3066, January 2001. | BCP 47, RFC 3066, January 2001. | |||
[11] Faltstrom, P., Hoffman, P., and A. Costello, | [11] Olson, S., Camarillo, G., and A. Roach, "Support for IPv6 in | |||
Session Description Protocol (SDP)", RFC 3266, June 2002. | ||||
[12] Faltstrom, P., Hoffman, P., and A. Costello, | ||||
"Internationalizing Domain Names in Applications (IDNA)", | "Internationalizing Domain Names in Applications (IDNA)", | |||
RFC 3490, March 2003. | RFC 3490, March 2003. | |||
[12] Josefsson, S., "The Base16, Base32, and Base64 Data Encodings", | [13] Josefsson, S., "The Base16, Base32, and Base64 Data Encodings", | |||
RFC 3548, July 2003. | RFC 3548, July 2003. | |||
12.2 Informative References | 12.2. Informative References | |||
[13] Mills, D., "Network Time Protocol (Version 3) Specification, | [14] Mills, D., "Network Time Protocol (Version 3) Specification, | |||
Implementation", RFC 1305, March 1992. | Implementation", RFC 1305, March 1992. | |||
[14] Handley, M., Perkins, C., and E. Whelan, "Session Announcement | [15] Handley, M., Perkins, C., and E. Whelan, "Session Announcement | |||
Protocol", RFC 2974, October 2000. | Protocol", RFC 2974, October 2000. | |||
[15] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A., | [16] 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. | |||
[16] Schulzrinne, H., Rao, A., and R. Lanphier, "Real Time Streaming | [17] Schulzrinne, H., Rao, A., and R. Lanphier, "Real Time Streaming | |||
Protocol (RTSP)", RFC 2326, April 1998. | Protocol (RTSP)", RFC 2326, April 1998. | |||
[17] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model with | [18] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model with | |||
Session Description Protocol (SDP)", RFC 3264, June 2002. | Session Description Protocol (SDP)", RFC 3264, June 2002. | |||
[18] Schulzrinne, H., Casner, S., Frederick, R., and V. Jacobson, | [19] Camarillo, G., Eriksson, G., Holler, J., and H. Schulzrinne, | |||
"Grouping of Media Lines in the Session Description Protocol | ||||
(SDP)", RFC 3388, December 2002. | ||||
[20] Schulzrinne, H., Casner, S., Frederick, R., and V. Jacobson, | ||||
"RTP: A Transport Protocol for Real-Time Applications", STD 64, | "RTP: A Transport Protocol for Real-Time Applications", STD 64, | |||
RFC 3550, July 2003. | RFC 3550, July 2003. | |||
[19] Schulzrinne, H. and S. Casner, "RTP Profile for Audio and Video | [21] Schulzrinne, H. and S. Casner, "RTP Profile for Audio and Video | |||
Conferences with Minimal Control", STD 65, RFC 3551, July 2003. | Conferences with Minimal Control", STD 65, RFC 3551, July 2003. | |||
[20] Casner, S., "Session Description Protocol (SDP) Bandwidth | [22] Casner, S., "Session Description Protocol (SDP) Bandwidth | |||
Modifiers for RTP Control Protocol (RTCP) Bandwidth", RFC 3556, | Modifiers for RTP Control Protocol (RTCP) Bandwidth", RFC 3556, | |||
July 2003. | July 2003. | |||
[21] Huitema, C., "Real Time Control Protocol (RTCP) attribute in | [23] Huitema, C., "Real Time Control Protocol (RTCP) attribute in | |||
Session Description Protocol (SDP)", RFC 3605, October 2003. | Session Description Protocol (SDP)", RFC 3605, October 2003. | |||
[22] Baugher, M., McGrew, D., Naslund, M., Carrara, E., and K. | [24] Baugher, M., McGrew, D., Naslund, M., Carrara, E., and K. | |||
Norrman, "The Secure Real-time Transport Protocol (SRTP)", | Norrman, "The Secure Real-time Transport Protocol (SRTP)", | |||
RFC 3711, March 2004. | RFC 3711, March 2004. | |||
[23] Rosenberg, J., Schulzrinne, H., and P. Kyzivat, "Indicating | [25] Rosenberg, J., Schulzrinne, H., and P. Kyzivat, "Indicating | |||
User Agent Capabilities in the Session Initiation Protocol | User Agent Capabilities in the Session Initiation Protocol | |||
(SIP)", RFC 3840, August 2004. | (SIP)", RFC 3840, August 2004. | |||
[24] Westerlund, M., "A Transport Independent Bandwidth Modifier for | [26] Westerlund, M., "A Transport Independent Bandwidth Modifier for | |||
the Session Description Protocol (SDP)", RFC 3890, | the Session Description Protocol (SDP)", RFC 3890, | |||
September 2004. | September 2004. | |||
[25] International Telecommunications Union, "H.323 extended for | [27] International Telecommunications Union, "H.323 extended for | |||
loosely coupled conferences", ITU Recommendation H.332, | loosely coupled conferences", ITU Recommendation H.332, | |||
September 1998. | September 1998. | |||
[26] Arkko, J., Carrara, E., Lindholm, F., Naslund, M., and K. | [28] Arkko, J., Carrara, E., Lindholm, F., Naslund, M., and K. | |||
Norrman, "Key Management Extensions for Session Description | Norrman, "Key Management Extensions for Session Description | |||
Protocol (SDP) and Real Time Streaming Protocol (RTSP)", | Protocol (SDP) and Real Time Streaming Protocol (RTSP)", | |||
draft-ietf-mmusic-kmgmt-ext-12 (work in progress), | draft-ietf-mmusic-kmgmt-ext-12 (work in progress), | |||
November 2004. | November 2004. | |||
[27] Andreasen, F., Baugher, M., and D. Wing, "Session Description | [29] Andreasen, F., Baugher, M., and D. Wing, "Session Description | |||
Protocol Security Descriptions for Media Streams", | Protocol Security Descriptions for Media Streams", | |||
draft-ietf-mmusic-sdescriptions-07 (work in progress), | draft-ietf-mmusic-sdescriptions-07 (work in progress), | |||
July 2004. | July 2004. | |||
Authors' Addresses | Authors' Addresses | |||
Mark Handley | Mark Handley | |||
University College London | University College London | |||
Department of Computer Science | Department of Computer Science | |||
Gower Street | Gower Street | |||
skipping to change at page 48, line 41 | skipping to change at page 49, line 41 | |||
This document and the information contained herein are provided on an | This document and the information contained herein are provided on an | |||
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS | "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS | |||
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET | OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET | |||
ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, | ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, | |||
INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE | INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE | |||
INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED | INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED | |||
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | |||
Copyright Statement | Copyright Statement | |||
Copyright (C) The Internet Society (2005). This document is subject | Copyright (C) The Internet Society (2006). This document is subject | |||
to the rights, licenses and restrictions contained in BCP 78, and | to the rights, licenses and restrictions contained in BCP 78, and | |||
except as set forth therein, the authors retain all their rights. | except as set forth therein, the authors retain all their rights. | |||
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. 124 change blocks. | ||||
298 lines changed or deleted | 300 lines changed or added | |||
This html diff was produced by rfcdiff 1.28, available from http://www.levkowetz.com/ietf/tools/rfcdiff/ |