153a5a1b3Sopenharmony_ci
253a5a1b3Sopenharmony_ci
353a5a1b3Sopenharmony_ci
453a5a1b3Sopenharmony_ci
553a5a1b3Sopenharmony_ci
653a5a1b3Sopenharmony_ci
753a5a1b3Sopenharmony_ciNetwork Working Group                                           M. Handley
853a5a1b3Sopenharmony_ciRequest for Comments: 2327                                     V. Jacobson
953a5a1b3Sopenharmony_ciCategory: Standards Track                                         ISI/LBNL
1053a5a1b3Sopenharmony_ci                                                                April 1998
1153a5a1b3Sopenharmony_ci
1253a5a1b3Sopenharmony_ci
1353a5a1b3Sopenharmony_ci                   SDP: Session Description Protocol
1453a5a1b3Sopenharmony_ci
1553a5a1b3Sopenharmony_ciStatus of this Memo
1653a5a1b3Sopenharmony_ci
1753a5a1b3Sopenharmony_ci   This document specifies an Internet standards track protocol for the
1853a5a1b3Sopenharmony_ci   Internet community, and requests discussion and suggestions for
1953a5a1b3Sopenharmony_ci   improvements.  Please refer to the current edition of the "Internet
2053a5a1b3Sopenharmony_ci   Official Protocol Standards" (STD 1) for the standardization state
2153a5a1b3Sopenharmony_ci   and status of this protocol.  Distribution of this memo is unlimited.
2253a5a1b3Sopenharmony_ci
2353a5a1b3Sopenharmony_ciCopyright Notice
2453a5a1b3Sopenharmony_ci
2553a5a1b3Sopenharmony_ci   Copyright (C) The Internet Society (1998).  All Rights Reserved.
2653a5a1b3Sopenharmony_ci
2753a5a1b3Sopenharmony_ciAbstract
2853a5a1b3Sopenharmony_ci
2953a5a1b3Sopenharmony_ci   This document defines the Session Description Protocol, SDP.  SDP is
3053a5a1b3Sopenharmony_ci   intended for describing multimedia sessions for the purposes of
3153a5a1b3Sopenharmony_ci   session announcement, session invitation, and other forms of
3253a5a1b3Sopenharmony_ci   multimedia session initiation.
3353a5a1b3Sopenharmony_ci
3453a5a1b3Sopenharmony_ci   This document is a product of the Multiparty Multimedia Session
3553a5a1b3Sopenharmony_ci   Control (MMUSIC) working group of the Internet Engineering Task
3653a5a1b3Sopenharmony_ci   Force. Comments are solicited and should be addressed to the working
3753a5a1b3Sopenharmony_ci   group's mailing list at confctrl@isi.edu and/or the authors.
3853a5a1b3Sopenharmony_ci
3953a5a1b3Sopenharmony_ci1.  Introduction
4053a5a1b3Sopenharmony_ci
4153a5a1b3Sopenharmony_ci   On the Internet multicast backbone (Mbone), a session directory tool
4253a5a1b3Sopenharmony_ci   is used to advertise multimedia conferences and communicate the
4353a5a1b3Sopenharmony_ci   conference addresses and conference tool-specific information
4453a5a1b3Sopenharmony_ci   necessary for participation.  This document defines a session
4553a5a1b3Sopenharmony_ci   description protocol for this purpose, and for general real-time
4653a5a1b3Sopenharmony_ci   multimedia session description purposes. This memo does not describe
4753a5a1b3Sopenharmony_ci   multicast address allocation or the distribution of SDP messages in
4853a5a1b3Sopenharmony_ci   detail.  These are described in accompanying memos.  SDP is not
4953a5a1b3Sopenharmony_ci   intended for negotiation of media encodings.
5053a5a1b3Sopenharmony_ci
5153a5a1b3Sopenharmony_ci
5253a5a1b3Sopenharmony_ci
5353a5a1b3Sopenharmony_ci
5453a5a1b3Sopenharmony_ci
5553a5a1b3Sopenharmony_ci
5653a5a1b3Sopenharmony_ci
5753a5a1b3Sopenharmony_ci
5853a5a1b3Sopenharmony_ciHandley & Jacobson          Standards Track                     [Page 1]
5953a5a1b3Sopenharmony_ci
6053a5a1b3Sopenharmony_ciRFC 2327                          SDP                         April 1998
6153a5a1b3Sopenharmony_ci
6253a5a1b3Sopenharmony_ci
6353a5a1b3Sopenharmony_ci2.  Background
6453a5a1b3Sopenharmony_ci
6553a5a1b3Sopenharmony_ci   The Mbone is the part of the internet that supports IP multicast, and
6653a5a1b3Sopenharmony_ci   thus permits efficient many-to-many communication.  It is used
6753a5a1b3Sopenharmony_ci   extensively for multimedia conferencing.  Such conferences usually
6853a5a1b3Sopenharmony_ci   have the property that tight coordination of conference membership is
6953a5a1b3Sopenharmony_ci   not necessary; to receive a conference, a user at an Mbone site only
7053a5a1b3Sopenharmony_ci   has to know the conference's multicast group address and the UDP
7153a5a1b3Sopenharmony_ci   ports for the conference data streams.
7253a5a1b3Sopenharmony_ci
7353a5a1b3Sopenharmony_ci   Session directories assist the advertisement of conference sessions
7453a5a1b3Sopenharmony_ci   and communicate the relevant conference setup information to
7553a5a1b3Sopenharmony_ci   prospective participants.  SDP is designed to convey such information
7653a5a1b3Sopenharmony_ci   to recipients.  SDP is purely a format for session description - it
7753a5a1b3Sopenharmony_ci   does not incorporate a transport protocol, and is intended to use
7853a5a1b3Sopenharmony_ci   different transport protocols as appropriate including the Session
7953a5a1b3Sopenharmony_ci   Announcement Protocol [4], Session Initiation Protocol [11], Real-
8053a5a1b3Sopenharmony_ci   Time Streaming Protocol [12], electronic mail using the MIME
8153a5a1b3Sopenharmony_ci   extensions, and the Hypertext Transport Protocol.
8253a5a1b3Sopenharmony_ci
8353a5a1b3Sopenharmony_ci   SDP is intended to be general purpose so that it can be used for a
8453a5a1b3Sopenharmony_ci   wider range of network environments and applications than just
8553a5a1b3Sopenharmony_ci   multicast session directories.  However, it is not intended to
8653a5a1b3Sopenharmony_ci   support negotiation of session content or media encodings - this is
8753a5a1b3Sopenharmony_ci   viewed as outside the scope of session description.
8853a5a1b3Sopenharmony_ci
8953a5a1b3Sopenharmony_ci3.  Glossary of Terms
9053a5a1b3Sopenharmony_ci
9153a5a1b3Sopenharmony_ci   The following terms are used in this document, and have specific
9253a5a1b3Sopenharmony_ci   meaning within the context of this document.
9353a5a1b3Sopenharmony_ci
9453a5a1b3Sopenharmony_ci   Conference
9553a5a1b3Sopenharmony_ci     A multimedia conference is a set of two or more communicating users
9653a5a1b3Sopenharmony_ci     along with the software they are using to communicate.
9753a5a1b3Sopenharmony_ci
9853a5a1b3Sopenharmony_ci   Session
9953a5a1b3Sopenharmony_ci     A multimedia session is a set of multimedia senders and receivers
10053a5a1b3Sopenharmony_ci     and the data streams flowing from senders to receivers.  A
10153a5a1b3Sopenharmony_ci     multimedia conference is an example of a multimedia session.
10253a5a1b3Sopenharmony_ci
10353a5a1b3Sopenharmony_ci   Session Advertisement
10453a5a1b3Sopenharmony_ci     See session announcement.
10553a5a1b3Sopenharmony_ci
10653a5a1b3Sopenharmony_ci   Session Announcement
10753a5a1b3Sopenharmony_ci     A session announcement is a mechanism by which a session
10853a5a1b3Sopenharmony_ci     description is conveyed to users in a proactive fashion, i.e., the
10953a5a1b3Sopenharmony_ci     session description was not explicitly requested by the user.
11053a5a1b3Sopenharmony_ci
11153a5a1b3Sopenharmony_ci
11253a5a1b3Sopenharmony_ci
11353a5a1b3Sopenharmony_ci
11453a5a1b3Sopenharmony_ciHandley & Jacobson          Standards Track                     [Page 2]
11553a5a1b3Sopenharmony_ci
11653a5a1b3Sopenharmony_ciRFC 2327                          SDP                         April 1998
11753a5a1b3Sopenharmony_ci
11853a5a1b3Sopenharmony_ci
11953a5a1b3Sopenharmony_ci   Session Description
12053a5a1b3Sopenharmony_ci     A well defined format for conveying sufficient information to
12153a5a1b3Sopenharmony_ci     discover and participate in a multimedia session.
12253a5a1b3Sopenharmony_ci
12353a5a1b3Sopenharmony_ci3.1.  Terminology
12453a5a1b3Sopenharmony_ci
12553a5a1b3Sopenharmony_ci   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
12653a5a1b3Sopenharmony_ci   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
12753a5a1b3Sopenharmony_ci   document are to be interpreted as described in RFC 2119.
12853a5a1b3Sopenharmony_ci
12953a5a1b3Sopenharmony_ci4.  SDP Usage
13053a5a1b3Sopenharmony_ci
13153a5a1b3Sopenharmony_ci4.1.  Multicast Announcements
13253a5a1b3Sopenharmony_ci
13353a5a1b3Sopenharmony_ci   SDP is a session description protocol for multimedia sessions. A
13453a5a1b3Sopenharmony_ci   common mode of usage is for a client to announce a conference session
13553a5a1b3Sopenharmony_ci   by periodically multicasting an announcement packet to a well known
13653a5a1b3Sopenharmony_ci   multicast address and port using the Session Announcement Protocol
13753a5a1b3Sopenharmony_ci   (SAP).
13853a5a1b3Sopenharmony_ci
13953a5a1b3Sopenharmony_ci   SAP packets are UDP packets with the following format:
14053a5a1b3Sopenharmony_ci
14153a5a1b3Sopenharmony_ci         |--------------------|
14253a5a1b3Sopenharmony_ci         | SAP header         |
14353a5a1b3Sopenharmony_ci         |--------------------|
14453a5a1b3Sopenharmony_ci         | text payload       |
14553a5a1b3Sopenharmony_ci         |//////////
14653a5a1b3Sopenharmony_ci
14753a5a1b3Sopenharmony_ci
14853a5a1b3Sopenharmony_ci   The header is the Session Announcement Protocol header.  SAP is
14953a5a1b3Sopenharmony_ci   described in more detail in a companion memo [4]
15053a5a1b3Sopenharmony_ci
15153a5a1b3Sopenharmony_ci   The text payload is an SDP session description, as described in this
15253a5a1b3Sopenharmony_ci   memo.  The text payload should be no greater than 1 Kbyte in length.
15353a5a1b3Sopenharmony_ci   If announced by SAP, only one session announcement is permitted in a
15453a5a1b3Sopenharmony_ci   single packet.
15553a5a1b3Sopenharmony_ci
15653a5a1b3Sopenharmony_ci4.2.  Email and WWW Announcements
15753a5a1b3Sopenharmony_ci
15853a5a1b3Sopenharmony_ci   Alternative means of conveying session descriptions include
15953a5a1b3Sopenharmony_ci   electronic mail and the World Wide Web. For both email and WWW
16053a5a1b3Sopenharmony_ci   distribution, the use of the MIME content type "application/sdp"
16153a5a1b3Sopenharmony_ci   should be used.  This enables the automatic launching of applications
16253a5a1b3Sopenharmony_ci   for participation in the session from the WWW client or mail reader
16353a5a1b3Sopenharmony_ci   in a standard manner.
16453a5a1b3Sopenharmony_ci
16553a5a1b3Sopenharmony_ci
16653a5a1b3Sopenharmony_ci
16753a5a1b3Sopenharmony_ci
16853a5a1b3Sopenharmony_ci
16953a5a1b3Sopenharmony_ci
17053a5a1b3Sopenharmony_ciHandley & Jacobson          Standards Track                     [Page 3]
17153a5a1b3Sopenharmony_ci
17253a5a1b3Sopenharmony_ciRFC 2327                          SDP                         April 1998
17353a5a1b3Sopenharmony_ci
17453a5a1b3Sopenharmony_ci
17553a5a1b3Sopenharmony_ci   Note that announcements of multicast sessions made only via email or
17653a5a1b3Sopenharmony_ci   the World Wide Web (WWW) do not have the property that the receiver
17753a5a1b3Sopenharmony_ci   of a session announcement can necessarily receive the session because
17853a5a1b3Sopenharmony_ci   the multicast sessions may be restricted in scope, and access to the
17953a5a1b3Sopenharmony_ci   WWW server or reception of email is possible outside this scope.  SAP
18053a5a1b3Sopenharmony_ci   announcements do not suffer from this mismatch.
18153a5a1b3Sopenharmony_ci
18253a5a1b3Sopenharmony_ci5.  Requirements and Recommendations
18353a5a1b3Sopenharmony_ci
18453a5a1b3Sopenharmony_ci   The purpose of SDP is to convey information about media streams in
18553a5a1b3Sopenharmony_ci   multimedia sessions to allow the recipients of a session description
18653a5a1b3Sopenharmony_ci   to participate in the session.  SDP is primarily intended for use in
18753a5a1b3Sopenharmony_ci   an internetwork, although it is sufficiently general that it can
18853a5a1b3Sopenharmony_ci   describe conferences in other network environments.
18953a5a1b3Sopenharmony_ci
19053a5a1b3Sopenharmony_ci   A multimedia session, for these purposes, is defined as a set of
19153a5a1b3Sopenharmony_ci   media streams that exist for some duration of time.  Media streams
19253a5a1b3Sopenharmony_ci   can be many-to-many.  The times during which the session is active
19353a5a1b3Sopenharmony_ci   need not be continuous.
19453a5a1b3Sopenharmony_ci
19553a5a1b3Sopenharmony_ci   Thus far, multicast based sessions on the Internet have differed from
19653a5a1b3Sopenharmony_ci   many other forms of conferencing in that anyone receiving the traffic
19753a5a1b3Sopenharmony_ci   can join the session (unless the session traffic is encrypted).  In
19853a5a1b3Sopenharmony_ci   such an environment, SDP serves two primary purposes.  It is a means
19953a5a1b3Sopenharmony_ci   to communicate the existence of a session, and is a means to convey
20053a5a1b3Sopenharmony_ci   sufficient information to enable joining and participating in the
20153a5a1b3Sopenharmony_ci   session.  In a unicast environment, only the latter purpose is likely
20253a5a1b3Sopenharmony_ci   to be relevant.
20353a5a1b3Sopenharmony_ci
20453a5a1b3Sopenharmony_ci   Thus SDP includes:
20553a5a1b3Sopenharmony_ci
20653a5a1b3Sopenharmony_ci   o Session name and purpose
20753a5a1b3Sopenharmony_ci
20853a5a1b3Sopenharmony_ci   o Time(s) the session is active
20953a5a1b3Sopenharmony_ci
21053a5a1b3Sopenharmony_ci   o The media comprising the session
21153a5a1b3Sopenharmony_ci
21253a5a1b3Sopenharmony_ci   o Information to receive those media (addresses, ports, formats and
21353a5a1b3Sopenharmony_ci     so on)
21453a5a1b3Sopenharmony_ci
21553a5a1b3Sopenharmony_ci   As resources necessary to participate in a session may be limited,
21653a5a1b3Sopenharmony_ci   some additional information may also be desirable:
21753a5a1b3Sopenharmony_ci
21853a5a1b3Sopenharmony_ci   o Information about the bandwidth to be used by the conference
21953a5a1b3Sopenharmony_ci
22053a5a1b3Sopenharmony_ci   o Contact information for the person responsible for the session
22153a5a1b3Sopenharmony_ci
22253a5a1b3Sopenharmony_ci
22353a5a1b3Sopenharmony_ci
22453a5a1b3Sopenharmony_ci
22553a5a1b3Sopenharmony_ci
22653a5a1b3Sopenharmony_ciHandley & Jacobson          Standards Track                     [Page 4]
22753a5a1b3Sopenharmony_ci
22853a5a1b3Sopenharmony_ciRFC 2327                          SDP                         April 1998
22953a5a1b3Sopenharmony_ci
23053a5a1b3Sopenharmony_ci
23153a5a1b3Sopenharmony_ci   In general, SDP must convey sufficient information to be able to join
23253a5a1b3Sopenharmony_ci   a session (with the possible exception of encryption keys) and to
23353a5a1b3Sopenharmony_ci   announce the resources to be used to non-participants that may need
23453a5a1b3Sopenharmony_ci   to know.
23553a5a1b3Sopenharmony_ci
23653a5a1b3Sopenharmony_ci5.1.  Media Information
23753a5a1b3Sopenharmony_ci
23853a5a1b3Sopenharmony_ci   SDP includes:
23953a5a1b3Sopenharmony_ci
24053a5a1b3Sopenharmony_ci   o The type of media (video, audio, etc)
24153a5a1b3Sopenharmony_ci
24253a5a1b3Sopenharmony_ci   o The transport protocol (RTP/UDP/IP, H.320, etc)
24353a5a1b3Sopenharmony_ci
24453a5a1b3Sopenharmony_ci   o The format of the media (H.261 video, MPEG video, etc)
24553a5a1b3Sopenharmony_ci
24653a5a1b3Sopenharmony_ci   For an IP multicast session, the following are also conveyed:
24753a5a1b3Sopenharmony_ci
24853a5a1b3Sopenharmony_ci   o Multicast address for media
24953a5a1b3Sopenharmony_ci
25053a5a1b3Sopenharmony_ci   o Transport Port for media
25153a5a1b3Sopenharmony_ci
25253a5a1b3Sopenharmony_ci   This address and port are the destination address and destination
25353a5a1b3Sopenharmony_ci   port of the multicast stream, whether being sent, received, or both.
25453a5a1b3Sopenharmony_ci
25553a5a1b3Sopenharmony_ci   For an IP unicast session, the following are conveyed:
25653a5a1b3Sopenharmony_ci
25753a5a1b3Sopenharmony_ci   o Remote address for media
25853a5a1b3Sopenharmony_ci
25953a5a1b3Sopenharmony_ci   o Transport port for contact address
26053a5a1b3Sopenharmony_ci
26153a5a1b3Sopenharmony_ci   The semantics of this address and port depend on the media and
26253a5a1b3Sopenharmony_ci   transport protocol defined.  By default, this is the remote address
26353a5a1b3Sopenharmony_ci   and remote port to which data is sent, and the remote address and
26453a5a1b3Sopenharmony_ci   local port on which to receive data.  However, some media may define
26553a5a1b3Sopenharmony_ci   to use these to establish a control channel for the actual media
26653a5a1b3Sopenharmony_ci   flow.
26753a5a1b3Sopenharmony_ci
26853a5a1b3Sopenharmony_ci5.2.  Timing Information
26953a5a1b3Sopenharmony_ci
27053a5a1b3Sopenharmony_ci   Sessions may either be bounded or unbounded in time. Whether or not
27153a5a1b3Sopenharmony_ci   they are bounded, they may be only active at specific times.
27253a5a1b3Sopenharmony_ci
27353a5a1b3Sopenharmony_ci   SDP can convey:
27453a5a1b3Sopenharmony_ci
27553a5a1b3Sopenharmony_ci   o An arbitrary list of start and stop times bounding the session
27653a5a1b3Sopenharmony_ci
27753a5a1b3Sopenharmony_ci   o For each bound, repeat times such as "every Wednesday at 10am for
27853a5a1b3Sopenharmony_ci     one hour"
27953a5a1b3Sopenharmony_ci
28053a5a1b3Sopenharmony_ci
28153a5a1b3Sopenharmony_ci
28253a5a1b3Sopenharmony_ciHandley & Jacobson          Standards Track                     [Page 5]
28353a5a1b3Sopenharmony_ci
28453a5a1b3Sopenharmony_ciRFC 2327                          SDP                         April 1998
28553a5a1b3Sopenharmony_ci
28653a5a1b3Sopenharmony_ci
28753a5a1b3Sopenharmony_ci   This timing information is globally consistent, irrespective of local
28853a5a1b3Sopenharmony_ci   time zone or daylight saving time.
28953a5a1b3Sopenharmony_ci
29053a5a1b3Sopenharmony_ci5.3.  Private Sessions
29153a5a1b3Sopenharmony_ci
29253a5a1b3Sopenharmony_ci   It is possible to create both public sessions and private sessions.
29353a5a1b3Sopenharmony_ci   Private sessions will typically be conveyed by encrypting the session
29453a5a1b3Sopenharmony_ci   description to distribute it.  The details of how encryption is
29553a5a1b3Sopenharmony_ci   performed are dependent on the mechanism used to convey SDP - see [4]
29653a5a1b3Sopenharmony_ci   for how this is done for session announcements.
29753a5a1b3Sopenharmony_ci
29853a5a1b3Sopenharmony_ci   If a session announcement is private it is possible to use that
29953a5a1b3Sopenharmony_ci   private announcement to convey encryption keys necessary to decode
30053a5a1b3Sopenharmony_ci   each of the media in a conference, including enough information to
30153a5a1b3Sopenharmony_ci   know which encryption scheme is used for each media.
30253a5a1b3Sopenharmony_ci
30353a5a1b3Sopenharmony_ci5.4.  Obtaining Further Information about a Session
30453a5a1b3Sopenharmony_ci
30553a5a1b3Sopenharmony_ci   A session description should convey enough information to decide
30653a5a1b3Sopenharmony_ci   whether or not to participate in a session.  SDP may include
30753a5a1b3Sopenharmony_ci   additional pointers in the form of Universal Resources Identifiers
30853a5a1b3Sopenharmony_ci   (URIs) for more information about the session.
30953a5a1b3Sopenharmony_ci
31053a5a1b3Sopenharmony_ci5.5.  Categorisation
31153a5a1b3Sopenharmony_ci
31253a5a1b3Sopenharmony_ci   When many session descriptions are being distributed by SAP or any
31353a5a1b3Sopenharmony_ci   other advertisement mechanism, it may be desirable to filter
31453a5a1b3Sopenharmony_ci   announcements that are of interest from those that are not.  SDP
31553a5a1b3Sopenharmony_ci   supports a categorisation mechanism for sessions that is capable of
31653a5a1b3Sopenharmony_ci   being automated.
31753a5a1b3Sopenharmony_ci
31853a5a1b3Sopenharmony_ci5.6.  Internationalization
31953a5a1b3Sopenharmony_ci
32053a5a1b3Sopenharmony_ci   The SDP specification recommends the use of the ISO 10646 character
32153a5a1b3Sopenharmony_ci   sets in the UTF-8 encoding (RFC 2044) to allow many different
32253a5a1b3Sopenharmony_ci   languages to be represented.  However, to assist in compact
32353a5a1b3Sopenharmony_ci   representations, SDP also allows other character sets such as ISO
32453a5a1b3Sopenharmony_ci   8859-1 to be used when desired.  Internationalization only applies to
32553a5a1b3Sopenharmony_ci   free-text fields (session name and background information), and not
32653a5a1b3Sopenharmony_ci   to SDP as a whole.
32753a5a1b3Sopenharmony_ci
32853a5a1b3Sopenharmony_ci6.  SDP Specification
32953a5a1b3Sopenharmony_ci
33053a5a1b3Sopenharmony_ci   SDP session descriptions are entirely textual using the ISO 10646
33153a5a1b3Sopenharmony_ci   character set in UTF-8 encoding. SDP field names and attributes names
33253a5a1b3Sopenharmony_ci   use only the US-ASCII subset of UTF-8, but textual fields and
33353a5a1b3Sopenharmony_ci   attribute values may use the full ISO 10646 character set.  The
33453a5a1b3Sopenharmony_ci   textual form, as opposed to a binary encoding such as ASN/1 or XDR,
33553a5a1b3Sopenharmony_ci
33653a5a1b3Sopenharmony_ci
33753a5a1b3Sopenharmony_ci
33853a5a1b3Sopenharmony_ciHandley & Jacobson          Standards Track                     [Page 6]
33953a5a1b3Sopenharmony_ci
34053a5a1b3Sopenharmony_ciRFC 2327                          SDP                         April 1998
34153a5a1b3Sopenharmony_ci
34253a5a1b3Sopenharmony_ci
34353a5a1b3Sopenharmony_ci   was chosen to enhance portability, to enable a variety of transports
34453a5a1b3Sopenharmony_ci   to be used (e.g, session description in a MIME email message) and to
34553a5a1b3Sopenharmony_ci   allow flexible, text-based toolkits (e.g., Tcl/Tk ) to be used to
34653a5a1b3Sopenharmony_ci   generate and to process session descriptions.  However, since the
34753a5a1b3Sopenharmony_ci   total bandwidth allocated to all SAP announcements is strictly
34853a5a1b3Sopenharmony_ci   limited, the encoding is deliberately compact.  Also, since
34953a5a1b3Sopenharmony_ci   announcements may be transported via very unreliable means (e.g.,
35053a5a1b3Sopenharmony_ci   email) or damaged by an intermediate caching server, the encoding was
35153a5a1b3Sopenharmony_ci   designed with strict order and formatting rules so that most errors
35253a5a1b3Sopenharmony_ci   would result in malformed announcements which could be detected
35353a5a1b3Sopenharmony_ci   easily and discarded. This also allows rapid discarding of encrypted
35453a5a1b3Sopenharmony_ci   announcements for which a receiver does not have the correct key.
35553a5a1b3Sopenharmony_ci
35653a5a1b3Sopenharmony_ci   An SDP session description consists of a number of lines of text of
35753a5a1b3Sopenharmony_ci   the form <type>=<value> <type> is always exactly one character and is
35853a5a1b3Sopenharmony_ci   case-significant.  <value> is a structured text string whose format
35953a5a1b3Sopenharmony_ci   depends on <type>.  It also will be case-significant unless a
36053a5a1b3Sopenharmony_ci   specific field defines otherwise.  Whitespace is not permitted either
36153a5a1b3Sopenharmony_ci   side of the `=' sign. In general <value> is either a number of fields
36253a5a1b3Sopenharmony_ci   delimited by a single space character or a free format string.
36353a5a1b3Sopenharmony_ci
36453a5a1b3Sopenharmony_ci   A session description consists of a session-level description
36553a5a1b3Sopenharmony_ci   (details that apply to the whole session and all media streams) and
36653a5a1b3Sopenharmony_ci   optionally several media-level descriptions (details that apply onto
36753a5a1b3Sopenharmony_ci   to a single media stream).
36853a5a1b3Sopenharmony_ci
36953a5a1b3Sopenharmony_ci   An announcement consists of a session-level section followed by zero
37053a5a1b3Sopenharmony_ci   or more media-level sections.  The session-level part starts with a
37153a5a1b3Sopenharmony_ci   `v=' line and continues to the first media-level section.  The media
37253a5a1b3Sopenharmony_ci   description starts with an `m=' line and continues to the next media
37353a5a1b3Sopenharmony_ci   description or end of the whole session description.  In general,
37453a5a1b3Sopenharmony_ci   session-level values are the default for all media unless overridden
37553a5a1b3Sopenharmony_ci   by an equivalent media-level value.
37653a5a1b3Sopenharmony_ci
37753a5a1b3Sopenharmony_ci   When SDP is conveyed by SAP, only one session description is allowed
37853a5a1b3Sopenharmony_ci   per packet.  When SDP is conveyed by other means, many SDP session
37953a5a1b3Sopenharmony_ci   descriptions may be concatenated together (the `v=' line indicating
38053a5a1b3Sopenharmony_ci   the start of a session description terminates the previous
38153a5a1b3Sopenharmony_ci   description).  Some lines in each description are required and some
38253a5a1b3Sopenharmony_ci   are optional but all must appear in exactly the order given here (the
38353a5a1b3Sopenharmony_ci   fixed order greatly enhances error detection and allows for a simple
38453a5a1b3Sopenharmony_ci   parser). Optional items are marked with a `*'.
38553a5a1b3Sopenharmony_ci
38653a5a1b3Sopenharmony_ciSession description
38753a5a1b3Sopenharmony_ci        v=  (protocol version)
38853a5a1b3Sopenharmony_ci        o=  (owner/creator and session identifier).
38953a5a1b3Sopenharmony_ci        s=  (session name)
39053a5a1b3Sopenharmony_ci        i=* (session information)
39153a5a1b3Sopenharmony_ci
39253a5a1b3Sopenharmony_ci
39353a5a1b3Sopenharmony_ci
39453a5a1b3Sopenharmony_ciHandley & Jacobson          Standards Track                     [Page 7]
39553a5a1b3Sopenharmony_ci
39653a5a1b3Sopenharmony_ciRFC 2327                          SDP                         April 1998
39753a5a1b3Sopenharmony_ci
39853a5a1b3Sopenharmony_ci
39953a5a1b3Sopenharmony_ci        u=* (URI of description)
40053a5a1b3Sopenharmony_ci        e=* (email address)
40153a5a1b3Sopenharmony_ci        p=* (phone number)
40253a5a1b3Sopenharmony_ci        c=* (connection information - not required if included in all media)
40353a5a1b3Sopenharmony_ci        b=* (bandwidth information)
40453a5a1b3Sopenharmony_ci        One or more time descriptions (see below)
40553a5a1b3Sopenharmony_ci        z=* (time zone adjustments)
40653a5a1b3Sopenharmony_ci        k=* (encryption key)
40753a5a1b3Sopenharmony_ci        a=* (zero or more session attribute lines)
40853a5a1b3Sopenharmony_ci        Zero or more media descriptions (see below)
40953a5a1b3Sopenharmony_ci
41053a5a1b3Sopenharmony_ciTime description
41153a5a1b3Sopenharmony_ci        t=  (time the session is active)
41253a5a1b3Sopenharmony_ci        r=* (zero or more repeat times)
41353a5a1b3Sopenharmony_ci
41453a5a1b3Sopenharmony_ciMedia description
41553a5a1b3Sopenharmony_ci        m=  (media name and transport address)
41653a5a1b3Sopenharmony_ci        i=* (media title)
41753a5a1b3Sopenharmony_ci        c=* (connection information - optional if included at session-level)
41853a5a1b3Sopenharmony_ci        b=* (bandwidth information)
41953a5a1b3Sopenharmony_ci        k=* (encryption key)
42053a5a1b3Sopenharmony_ci        a=* (zero or more media attribute lines)
42153a5a1b3Sopenharmony_ci
42253a5a1b3Sopenharmony_ci   The set of `type' letters is deliberately small and not intended to
42353a5a1b3Sopenharmony_ci   be extensible -- SDP parsers must completely ignore any announcement
42453a5a1b3Sopenharmony_ci   that contains a `type' letter that it does not understand. The
42553a5a1b3Sopenharmony_ci   `attribute' mechanism ("a=" described below) is the primary means for
42653a5a1b3Sopenharmony_ci   extending SDP and tailoring it to particular applications or media.
42753a5a1b3Sopenharmony_ci   Some attributes (the ones listed in this document) have a defined
42853a5a1b3Sopenharmony_ci   meaning but others may be added on an application-, media- or
42953a5a1b3Sopenharmony_ci   session-specific basis.  A session directory must ignore any
43053a5a1b3Sopenharmony_ci   attribute it doesn't understand.
43153a5a1b3Sopenharmony_ci
43253a5a1b3Sopenharmony_ci   The connection (`c=') and attribute (`a=') information in the
43353a5a1b3Sopenharmony_ci   session-level section applies to all the media of that session unless
43453a5a1b3Sopenharmony_ci   overridden by connection information or an attribute of the same name
43553a5a1b3Sopenharmony_ci   in the media description.  For instance, in the example below, each
43653a5a1b3Sopenharmony_ci   media behaves as if it were given a `recvonly' attribute.
43753a5a1b3Sopenharmony_ci
43853a5a1b3Sopenharmony_ci   An example SDP description is:
43953a5a1b3Sopenharmony_ci
44053a5a1b3Sopenharmony_ci        v=0
44153a5a1b3Sopenharmony_ci        o=mhandley 2890844526 2890842807 IN IP4 126.16.64.4
44253a5a1b3Sopenharmony_ci        s=SDP Seminar
44353a5a1b3Sopenharmony_ci        i=A Seminar on the session description protocol
44453a5a1b3Sopenharmony_ci        u=http://www.cs.ucl.ac.uk/staff/M.Handley/sdp.03.ps
44553a5a1b3Sopenharmony_ci        e=mjh@isi.edu (Mark Handley)
44653a5a1b3Sopenharmony_ci        c=IN IP4 224.2.17.12/127
44753a5a1b3Sopenharmony_ci
44853a5a1b3Sopenharmony_ci
44953a5a1b3Sopenharmony_ci
45053a5a1b3Sopenharmony_ciHandley & Jacobson          Standards Track                     [Page 8]
45153a5a1b3Sopenharmony_ci
45253a5a1b3Sopenharmony_ciRFC 2327                          SDP                         April 1998
45353a5a1b3Sopenharmony_ci
45453a5a1b3Sopenharmony_ci
45553a5a1b3Sopenharmony_ci        t=2873397496 2873404696
45653a5a1b3Sopenharmony_ci        a=recvonly
45753a5a1b3Sopenharmony_ci        m=audio 49170 RTP/AVP 0
45853a5a1b3Sopenharmony_ci        m=video 51372 RTP/AVP 31
45953a5a1b3Sopenharmony_ci        m=application 32416 udp wb
46053a5a1b3Sopenharmony_ci        a=orient:portrait
46153a5a1b3Sopenharmony_ci
46253a5a1b3Sopenharmony_ci   Text records such as the session name and information are bytes
46353a5a1b3Sopenharmony_ci   strings which may contain any byte with the exceptions of 0x00 (Nul),
46453a5a1b3Sopenharmony_ci   0x0a (ASCII newline) and 0x0d (ASCII carriage return).  The sequence
46553a5a1b3Sopenharmony_ci   CRLF (0x0d0a) is used to end a record, although parsers should be
46653a5a1b3Sopenharmony_ci   tolerant and also accept records terminated with a single newline
46753a5a1b3Sopenharmony_ci   character.  By default these byte strings contain ISO-10646
46853a5a1b3Sopenharmony_ci   characters in UTF-8 encoding, but this default may be changed using
46953a5a1b3Sopenharmony_ci   the `charset' attribute.
47053a5a1b3Sopenharmony_ci
47153a5a1b3Sopenharmony_ci   Protocol Version
47253a5a1b3Sopenharmony_ci
47353a5a1b3Sopenharmony_ci   v=0
47453a5a1b3Sopenharmony_ci
47553a5a1b3Sopenharmony_ci   The "v=" field gives the version of the Session Description Protocol.
47653a5a1b3Sopenharmony_ci   There is no minor version number.
47753a5a1b3Sopenharmony_ci
47853a5a1b3Sopenharmony_ci   Origin
47953a5a1b3Sopenharmony_ci
48053a5a1b3Sopenharmony_ci   o=<username> <session id> <version> <network type> <address type>
48153a5a1b3Sopenharmony_ci   <address>
48253a5a1b3Sopenharmony_ci
48353a5a1b3Sopenharmony_ci   The "o=" field gives the originator of the session (their username
48453a5a1b3Sopenharmony_ci   and the address of the user's host) plus a session id and session
48553a5a1b3Sopenharmony_ci   version number.
48653a5a1b3Sopenharmony_ci
48753a5a1b3Sopenharmony_ci   <username> is the user's login on the originating host, or it is "-"
48853a5a1b3Sopenharmony_ci   if the originating host does not support the concept of user ids.
48953a5a1b3Sopenharmony_ci   <username> must not contain spaces.  <session id> is a numeric string
49053a5a1b3Sopenharmony_ci   such that the tuple of <username>, <session id>, <network type>,
49153a5a1b3Sopenharmony_ci   <address type> and <address> form a globally unique identifier for
49253a5a1b3Sopenharmony_ci   the session.
49353a5a1b3Sopenharmony_ci
49453a5a1b3Sopenharmony_ci   The method of <session id> allocation is up to the creating tool, but
49553a5a1b3Sopenharmony_ci   it has been suggested that a Network Time Protocol (NTP) timestamp be
49653a5a1b3Sopenharmony_ci   used to ensure uniqueness [1].
49753a5a1b3Sopenharmony_ci
49853a5a1b3Sopenharmony_ci   <version> is a version number for this announcement.  It is needed
49953a5a1b3Sopenharmony_ci   for proxy announcements to detect which of several announcements for
50053a5a1b3Sopenharmony_ci   the same session is the most recent.  Again its usage is up to the
50153a5a1b3Sopenharmony_ci
50253a5a1b3Sopenharmony_ci
50353a5a1b3Sopenharmony_ci
50453a5a1b3Sopenharmony_ci
50553a5a1b3Sopenharmony_ci
50653a5a1b3Sopenharmony_ciHandley & Jacobson          Standards Track                     [Page 9]
50753a5a1b3Sopenharmony_ci
50853a5a1b3Sopenharmony_ciRFC 2327                          SDP                         April 1998
50953a5a1b3Sopenharmony_ci
51053a5a1b3Sopenharmony_ci
51153a5a1b3Sopenharmony_ci   creating tool, so long as <version> is increased when a modification
51253a5a1b3Sopenharmony_ci   is made to the session data.  Again, it is recommended (but not
51353a5a1b3Sopenharmony_ci   mandatory) that an NTP timestamp is used.
51453a5a1b3Sopenharmony_ci
51553a5a1b3Sopenharmony_ci   <network type> is a text string giving the type of network.
51653a5a1b3Sopenharmony_ci   Initially "IN" is defined to have the meaning "Internet".  <address
51753a5a1b3Sopenharmony_ci   type> is a text string giving the type of the address that follows.
51853a5a1b3Sopenharmony_ci   Initially "IP4" and "IP6" are defined.  <address> is the globally
51953a5a1b3Sopenharmony_ci   unique address of the machine from which the session was created.
52053a5a1b3Sopenharmony_ci   For an address type of IP4, this is either the fully-qualified domain
52153a5a1b3Sopenharmony_ci   name of the machine, or the dotted-decimal representation of the IP
52253a5a1b3Sopenharmony_ci   version 4 address of the machine.  For an address type of IP6, this
52353a5a1b3Sopenharmony_ci   is either the fully-qualified domain name of the machine, or the
52453a5a1b3Sopenharmony_ci   compressed textual representation of the IP version 6 address of the
52553a5a1b3Sopenharmony_ci   machine.  For both IP4 and IP6, the fully-qualified domain name is
52653a5a1b3Sopenharmony_ci   the form that SHOULD be given unless this is unavailable, in which
52753a5a1b3Sopenharmony_ci   case the globally unique address may be substituted.  A local IP
52853a5a1b3Sopenharmony_ci   address MUST NOT be used in any context where the SDP description
52953a5a1b3Sopenharmony_ci   might leave the scope in which the address is meaningful.
53053a5a1b3Sopenharmony_ci
53153a5a1b3Sopenharmony_ci   In general, the "o=" field serves as a globally unique identifier for
53253a5a1b3Sopenharmony_ci   this version of this session description, and the subfields excepting
53353a5a1b3Sopenharmony_ci   the version taken together identify the session irrespective of any
53453a5a1b3Sopenharmony_ci   modifications.
53553a5a1b3Sopenharmony_ci
53653a5a1b3Sopenharmony_ci   Session Name
53753a5a1b3Sopenharmony_ci
53853a5a1b3Sopenharmony_ci   s=<session name>
53953a5a1b3Sopenharmony_ci
54053a5a1b3Sopenharmony_ci   The "s=" field is the session name.  There must be one and only one
54153a5a1b3Sopenharmony_ci   "s=" field per session description, and it must contain ISO 10646
54253a5a1b3Sopenharmony_ci   characters (but see also the `charset' attribute below).
54353a5a1b3Sopenharmony_ci
54453a5a1b3Sopenharmony_ci   Session and Media Information
54553a5a1b3Sopenharmony_ci
54653a5a1b3Sopenharmony_ci   i=<session description>
54753a5a1b3Sopenharmony_ci
54853a5a1b3Sopenharmony_ci   The "i=" field is information about the session.  There may be at
54953a5a1b3Sopenharmony_ci   most one session-level "i=" field per session description, and at
55053a5a1b3Sopenharmony_ci   most one "i=" field per media. Although it may be omitted, this is
55153a5a1b3Sopenharmony_ci   discouraged for session announcements, and user interfaces for
55253a5a1b3Sopenharmony_ci   composing sessions should require text to be entered.  If it is
55353a5a1b3Sopenharmony_ci   present it must contain ISO 10646 characters (but see also the
55453a5a1b3Sopenharmony_ci   `charset' attribute below).
55553a5a1b3Sopenharmony_ci
55653a5a1b3Sopenharmony_ci   A single "i=" field can also be used for each media definition.  In
55753a5a1b3Sopenharmony_ci   media definitions, "i=" fields are primarily intended for labeling
55853a5a1b3Sopenharmony_ci   media streams. As such, they are most likely to be useful when a
55953a5a1b3Sopenharmony_ci
56053a5a1b3Sopenharmony_ci
56153a5a1b3Sopenharmony_ci
56253a5a1b3Sopenharmony_ciHandley & Jacobson          Standards Track                    [Page 10]
56353a5a1b3Sopenharmony_ci
56453a5a1b3Sopenharmony_ciRFC 2327                          SDP                         April 1998
56553a5a1b3Sopenharmony_ci
56653a5a1b3Sopenharmony_ci
56753a5a1b3Sopenharmony_ci   single session has more than one distinct media stream of the same
56853a5a1b3Sopenharmony_ci   media type.  An example would be two different whiteboards, one for
56953a5a1b3Sopenharmony_ci   slides and one for feedback and questions.
57053a5a1b3Sopenharmony_ci
57153a5a1b3Sopenharmony_ci   URI
57253a5a1b3Sopenharmony_ci
57353a5a1b3Sopenharmony_ci   u=<URI>
57453a5a1b3Sopenharmony_ci
57553a5a1b3Sopenharmony_ci   o A URI is a Universal Resource Identifier as used by WWW clients
57653a5a1b3Sopenharmony_ci
57753a5a1b3Sopenharmony_ci   o The URI should be a pointer to additional information about the
57853a5a1b3Sopenharmony_ci     conference
57953a5a1b3Sopenharmony_ci
58053a5a1b3Sopenharmony_ci   o This field is optional, but if it is present it should be specified
58153a5a1b3Sopenharmony_ci     before the first media field
58253a5a1b3Sopenharmony_ci
58353a5a1b3Sopenharmony_ci   o No more than one URI field is allowed per session description
58453a5a1b3Sopenharmony_ci
58553a5a1b3Sopenharmony_ci
58653a5a1b3Sopenharmony_ci   Email Address and Phone Number
58753a5a1b3Sopenharmony_ci
58853a5a1b3Sopenharmony_ci   e=<email address>
58953a5a1b3Sopenharmony_ci   p=<phone number>
59053a5a1b3Sopenharmony_ci
59153a5a1b3Sopenharmony_ci   o These specify contact information for the person responsible for
59253a5a1b3Sopenharmony_ci     the conference.  This is not necessarily the same person that
59353a5a1b3Sopenharmony_ci     created the conference announcement.
59453a5a1b3Sopenharmony_ci
59553a5a1b3Sopenharmony_ci   o Either an email field or a phone field must be specified.
59653a5a1b3Sopenharmony_ci     Additional email and phone fields are allowed.
59753a5a1b3Sopenharmony_ci
59853a5a1b3Sopenharmony_ci   o If these are present, they should be specified before the first
59953a5a1b3Sopenharmony_ci     media field.
60053a5a1b3Sopenharmony_ci
60153a5a1b3Sopenharmony_ci   o More than one email or phone field can be given for a session
60253a5a1b3Sopenharmony_ci     description.
60353a5a1b3Sopenharmony_ci
60453a5a1b3Sopenharmony_ci   o Phone numbers should be given in the conventional international
60553a5a1b3Sopenharmony_ci
60653a5a1b3Sopenharmony_ci     format - preceded by a "+ and the international country code.
60753a5a1b3Sopenharmony_ci     There must be a space or a hyphen ("-") between the country code
60853a5a1b3Sopenharmony_ci     and the rest of the phone number.  Spaces and hyphens may be used
60953a5a1b3Sopenharmony_ci     to split up a phone field to aid readability if desired. For
61053a5a1b3Sopenharmony_ci     example:
61153a5a1b3Sopenharmony_ci
61253a5a1b3Sopenharmony_ci                   p=+44-171-380-7777 or p=+1 617 253 6011
61353a5a1b3Sopenharmony_ci
61453a5a1b3Sopenharmony_ci
61553a5a1b3Sopenharmony_ci
61653a5a1b3Sopenharmony_ci
61753a5a1b3Sopenharmony_ci
61853a5a1b3Sopenharmony_ciHandley & Jacobson          Standards Track                    [Page 11]
61953a5a1b3Sopenharmony_ci
62053a5a1b3Sopenharmony_ciRFC 2327                          SDP                         April 1998
62153a5a1b3Sopenharmony_ci
62253a5a1b3Sopenharmony_ci
62353a5a1b3Sopenharmony_ci   o Both email addresses and phone numbers can have an optional free
62453a5a1b3Sopenharmony_ci     text string associated with them, normally giving the name of the
62553a5a1b3Sopenharmony_ci     person who may be contacted.  This should be enclosed in
62653a5a1b3Sopenharmony_ci     parenthesis if it is present.  For example:
62753a5a1b3Sopenharmony_ci
62853a5a1b3Sopenharmony_ci                        e=mjh@isi.edu (Mark Handley)
62953a5a1b3Sopenharmony_ci
63053a5a1b3Sopenharmony_ci     The alternative RFC822 name quoting convention is also allowed for
63153a5a1b3Sopenharmony_ci     both email addresses and phone numbers.  For example,
63253a5a1b3Sopenharmony_ci
63353a5a1b3Sopenharmony_ci                        e=Mark Handley <mjh@isi.edu>
63453a5a1b3Sopenharmony_ci
63553a5a1b3Sopenharmony_ci     The free text string should be in the ISO-10646 character set with
63653a5a1b3Sopenharmony_ci     UTF-8 encoding, or alternatively in ISO-8859-1 or other encodings
63753a5a1b3Sopenharmony_ci     if the appropriate charset session-level attribute is set.
63853a5a1b3Sopenharmony_ci
63953a5a1b3Sopenharmony_ci   Connection Data
64053a5a1b3Sopenharmony_ci
64153a5a1b3Sopenharmony_ci   c=<network type> <address type> <connection address>
64253a5a1b3Sopenharmony_ci
64353a5a1b3Sopenharmony_ci   The "c=" field contains connection data.
64453a5a1b3Sopenharmony_ci
64553a5a1b3Sopenharmony_ci   A session announcement must contain one "c=" field in each media
64653a5a1b3Sopenharmony_ci   description (see below) or a "c=" field at the session-level.  It may
64753a5a1b3Sopenharmony_ci   contain a session-level "c=" field and one additional "c=" field per
64853a5a1b3Sopenharmony_ci   media description, in which case the per-media values override the
64953a5a1b3Sopenharmony_ci   session-level settings for the relevant media.
65053a5a1b3Sopenharmony_ci
65153a5a1b3Sopenharmony_ci   The first sub-field is the network type, which is a text string
65253a5a1b3Sopenharmony_ci   giving the type of network.  Initially "IN" is defined to have the
65353a5a1b3Sopenharmony_ci   meaning "Internet".
65453a5a1b3Sopenharmony_ci
65553a5a1b3Sopenharmony_ci   The second sub-field is the address type.  This allows SDP to be used
65653a5a1b3Sopenharmony_ci   for sessions that are not IP based.  Currently only IP4 is defined.
65753a5a1b3Sopenharmony_ci
65853a5a1b3Sopenharmony_ci   The third sub-field is the connection address.  Optional extra
65953a5a1b3Sopenharmony_ci   subfields may be added after the connection address depending on the
66053a5a1b3Sopenharmony_ci   value of the <address type> field.
66153a5a1b3Sopenharmony_ci
66253a5a1b3Sopenharmony_ci   For IP4 addresses, the connection address is defined as follows:
66353a5a1b3Sopenharmony_ci
66453a5a1b3Sopenharmony_ci   o Typically the connection address will be a class-D IP multicast
66553a5a1b3Sopenharmony_ci
66653a5a1b3Sopenharmony_ci     group address.  If the session is not multicast, then the
66753a5a1b3Sopenharmony_ci     connection address contains the fully-qualified domain name or the
66853a5a1b3Sopenharmony_ci     unicast IP address of the expected data source or data relay or
66953a5a1b3Sopenharmony_ci     data sink as determined by additional attribute fields. It is not
67053a5a1b3Sopenharmony_ci     expected that fully-qualified domain names or unicast addresses
67153a5a1b3Sopenharmony_ci
67253a5a1b3Sopenharmony_ci
67353a5a1b3Sopenharmony_ci
67453a5a1b3Sopenharmony_ciHandley & Jacobson          Standards Track                    [Page 12]
67553a5a1b3Sopenharmony_ci
67653a5a1b3Sopenharmony_ciRFC 2327                          SDP                         April 1998
67753a5a1b3Sopenharmony_ci
67853a5a1b3Sopenharmony_ci
67953a5a1b3Sopenharmony_ci     will be given in a session description that is communicated by a
68053a5a1b3Sopenharmony_ci     multicast announcement, though this is not prohibited.  If a
68153a5a1b3Sopenharmony_ci     unicast data stream is to pass through a network address
68253a5a1b3Sopenharmony_ci     translator, the use of a fully-qualified domain name rather than an
68353a5a1b3Sopenharmony_ci     unicast IP address is RECOMMENDED.  In other cases, the use of an
68453a5a1b3Sopenharmony_ci     IP address to specify a particular interface on a multi-homed host
68553a5a1b3Sopenharmony_ci     might be required.  Thus this specification leaves the decision as
68653a5a1b3Sopenharmony_ci     to which to use up to the individual application, but all
68753a5a1b3Sopenharmony_ci     applications MUST be able to cope with receiving both formats.
68853a5a1b3Sopenharmony_ci
68953a5a1b3Sopenharmony_ci   o Conferences using an IP multicast connection address must also have
69053a5a1b3Sopenharmony_ci     a time to live (TTL) value present in addition to the multicast
69153a5a1b3Sopenharmony_ci     address.  The TTL and the address together define the scope with
69253a5a1b3Sopenharmony_ci     which multicast packets sent in this conference will be sent. TTL
69353a5a1b3Sopenharmony_ci     values must be in the range 0-255.
69453a5a1b3Sopenharmony_ci
69553a5a1b3Sopenharmony_ci     The TTL for the session is appended to the address using a slash as
69653a5a1b3Sopenharmony_ci     a separator.  An example is:
69753a5a1b3Sopenharmony_ci
69853a5a1b3Sopenharmony_ci                           c=IN IP4 224.2.1.1/127
69953a5a1b3Sopenharmony_ci
70053a5a1b3Sopenharmony_ci     Hierarchical or layered encoding schemes are data streams where the
70153a5a1b3Sopenharmony_ci     encoding from a single media source is split into a number of
70253a5a1b3Sopenharmony_ci     layers.  The receiver can choose the desired quality (and hence
70353a5a1b3Sopenharmony_ci     bandwidth) by only subscribing to a subset of these layers.  Such
70453a5a1b3Sopenharmony_ci     layered encodings are normally transmitted in multiple multicast
70553a5a1b3Sopenharmony_ci     groups to allow multicast pruning.  This technique keeps unwanted
70653a5a1b3Sopenharmony_ci     traffic from sites only requiring certain levels of the hierarchy.
70753a5a1b3Sopenharmony_ci     For applications requiring multiple multicast groups, we allow the
70853a5a1b3Sopenharmony_ci     following notation to be used for the connection address:
70953a5a1b3Sopenharmony_ci
71053a5a1b3Sopenharmony_ci            <base multicast address>/<ttl>/<number of addresses>
71153a5a1b3Sopenharmony_ci
71253a5a1b3Sopenharmony_ci     If the number of addresses is not given it is assumed to be one.
71353a5a1b3Sopenharmony_ci     Multicast addresses so assigned are contiguously allocated above
71453a5a1b3Sopenharmony_ci     the base address, so that, for example:
71553a5a1b3Sopenharmony_ci
71653a5a1b3Sopenharmony_ci                          c=IN IP4 224.2.1.1/127/3
71753a5a1b3Sopenharmony_ci
71853a5a1b3Sopenharmony_ci     would state that addresses 224.2.1.1, 224.2.1.2 and 224.2.1.3 are
71953a5a1b3Sopenharmony_ci     to be used at a ttl of 127.  This is semantically identical to
72053a5a1b3Sopenharmony_ci     including multiple "c=" lines in a media description:
72153a5a1b3Sopenharmony_ci
72253a5a1b3Sopenharmony_ci                           c=IN IP4 224.2.1.1/127
72353a5a1b3Sopenharmony_ci                           c=IN IP4 224.2.1.2/127
72453a5a1b3Sopenharmony_ci                           c=IN IP4 224.2.1.3/127
72553a5a1b3Sopenharmony_ci
72653a5a1b3Sopenharmony_ci
72753a5a1b3Sopenharmony_ci
72853a5a1b3Sopenharmony_ci
72953a5a1b3Sopenharmony_ci
73053a5a1b3Sopenharmony_ciHandley & Jacobson          Standards Track                    [Page 13]
73153a5a1b3Sopenharmony_ci
73253a5a1b3Sopenharmony_ciRFC 2327                          SDP                         April 1998
73353a5a1b3Sopenharmony_ci
73453a5a1b3Sopenharmony_ci
73553a5a1b3Sopenharmony_ci     Multiple addresses or "c=" lines can only be specified on a per-
73653a5a1b3Sopenharmony_ci     media basis, and not for a session-level "c=" field.
73753a5a1b3Sopenharmony_ci
73853a5a1b3Sopenharmony_ci     It is illegal for the slash notation described above to be used for
73953a5a1b3Sopenharmony_ci     IP unicast addresses.
74053a5a1b3Sopenharmony_ci
74153a5a1b3Sopenharmony_ci   Bandwidth
74253a5a1b3Sopenharmony_ci
74353a5a1b3Sopenharmony_ci   b=<modifier>:<bandwidth-value>
74453a5a1b3Sopenharmony_ci
74553a5a1b3Sopenharmony_ci   o This specifies the proposed bandwidth to be used by the session or
74653a5a1b3Sopenharmony_ci     media, and is optional.
74753a5a1b3Sopenharmony_ci
74853a5a1b3Sopenharmony_ci   o <bandwidth-value> is in kilobits per second
74953a5a1b3Sopenharmony_ci
75053a5a1b3Sopenharmony_ci   o <modifier> is a single alphanumeric word giving the meaning of the
75153a5a1b3Sopenharmony_ci     bandwidth figure.
75253a5a1b3Sopenharmony_ci
75353a5a1b3Sopenharmony_ci   o Two modifiers are initially defined:
75453a5a1b3Sopenharmony_ci
75553a5a1b3Sopenharmony_ci   CT Conference Total: An implicit maximum bandwidth is associated with
75653a5a1b3Sopenharmony_ci     each TTL on the Mbone or within a particular multicast
75753a5a1b3Sopenharmony_ci     administrative scope region (the Mbone bandwidth vs. TTL limits are
75853a5a1b3Sopenharmony_ci     given in the MBone FAQ). If the bandwidth of a session or media in
75953a5a1b3Sopenharmony_ci     a session is different from the bandwidth implicit from the scope,
76053a5a1b3Sopenharmony_ci     a `b=CT:...' line should be supplied for the session giving the
76153a5a1b3Sopenharmony_ci     proposed upper limit to the bandwidth used. The primary purpose of
76253a5a1b3Sopenharmony_ci     this is to give an approximate idea as to whether two or more
76353a5a1b3Sopenharmony_ci     conferences can co-exist simultaneously.
76453a5a1b3Sopenharmony_ci
76553a5a1b3Sopenharmony_ci   AS Application-Specific Maximum: The bandwidth is interpreted to be
76653a5a1b3Sopenharmony_ci     application-specific, i.e., will be the application's concept of
76753a5a1b3Sopenharmony_ci     maximum bandwidth.  Normally this will coincide with what is set on
76853a5a1b3Sopenharmony_ci     the application's "maximum bandwidth" control if applicable.
76953a5a1b3Sopenharmony_ci
77053a5a1b3Sopenharmony_ci     Note that CT gives a total bandwidth figure for all the media at
77153a5a1b3Sopenharmony_ci     all sites.  AS gives a bandwidth figure for a single media at a
77253a5a1b3Sopenharmony_ci     single site, although there may be many sites sending
77353a5a1b3Sopenharmony_ci     simultaneously.
77453a5a1b3Sopenharmony_ci
77553a5a1b3Sopenharmony_ci   o Extension Mechanism: Tool writers can define experimental bandwidth
77653a5a1b3Sopenharmony_ci     modifiers by prefixing their modifier with "X-". For example:
77753a5a1b3Sopenharmony_ci
77853a5a1b3Sopenharmony_ci                                 b=X-YZ:128
77953a5a1b3Sopenharmony_ci
78053a5a1b3Sopenharmony_ci     SDP parsers should ignore bandwidth fields with unknown modifiers.
78153a5a1b3Sopenharmony_ci     Modifiers should be alpha-numeric and, although no length limit is
78253a5a1b3Sopenharmony_ci     given, they are recommended to be short.
78353a5a1b3Sopenharmony_ci
78453a5a1b3Sopenharmony_ci
78553a5a1b3Sopenharmony_ci
78653a5a1b3Sopenharmony_ciHandley & Jacobson          Standards Track                    [Page 14]
78753a5a1b3Sopenharmony_ci
78853a5a1b3Sopenharmony_ciRFC 2327                          SDP                         April 1998
78953a5a1b3Sopenharmony_ci
79053a5a1b3Sopenharmony_ci
79153a5a1b3Sopenharmony_ci   Times, Repeat Times and Time Zones
79253a5a1b3Sopenharmony_ci
79353a5a1b3Sopenharmony_ci   t=<start time>  <stop time>
79453a5a1b3Sopenharmony_ci
79553a5a1b3Sopenharmony_ci   o "t=" fields specify the start and stop times for a conference
79653a5a1b3Sopenharmony_ci     session.  Multiple "t=" fields may be used if a session is active
79753a5a1b3Sopenharmony_ci     at multiple irregularly spaced times; each additional "t=" field
79853a5a1b3Sopenharmony_ci     specifies an additional period of time for which the session will
79953a5a1b3Sopenharmony_ci     be active.  If the session is active at regular times, an "r="
80053a5a1b3Sopenharmony_ci     field (see below) should be used in addition to and following a
80153a5a1b3Sopenharmony_ci     "t=" field - in which case the "t=" field specifies the start and
80253a5a1b3Sopenharmony_ci     stop times of the repeat sequence.
80353a5a1b3Sopenharmony_ci
80453a5a1b3Sopenharmony_ci   o The first and second sub-fields give the start and stop times for
80553a5a1b3Sopenharmony_ci     the conference respectively.  These values are the decimal
80653a5a1b3Sopenharmony_ci     representation of Network Time Protocol (NTP) time values in
80753a5a1b3Sopenharmony_ci     seconds [1].  To convert these values to UNIX time, subtract
80853a5a1b3Sopenharmony_ci     decimal 2208988800.
80953a5a1b3Sopenharmony_ci
81053a5a1b3Sopenharmony_ci   o If the stop-time is set to zero, then the session is not bounded,
81153a5a1b3Sopenharmony_ci     though it will not become active until after the start-time.  If
81253a5a1b3Sopenharmony_ci     the start-time is also zero, the session is regarded as permanent.
81353a5a1b3Sopenharmony_ci
81453a5a1b3Sopenharmony_ci     User interfaces should strongly discourage the creation of
81553a5a1b3Sopenharmony_ci     unbounded and permanent sessions as they give no information about
81653a5a1b3Sopenharmony_ci     when the session is actually going to terminate, and so make
81753a5a1b3Sopenharmony_ci     scheduling difficult.
81853a5a1b3Sopenharmony_ci
81953a5a1b3Sopenharmony_ci     The general assumption may be made, when displaying unbounded
82053a5a1b3Sopenharmony_ci     sessions that have not timed out to the user, that an unbounded
82153a5a1b3Sopenharmony_ci     session will only be active until half an hour from the current
82253a5a1b3Sopenharmony_ci     time or the session start time, whichever is the later.  If
82353a5a1b3Sopenharmony_ci     behaviour other than this is required, an end-time should be given
82453a5a1b3Sopenharmony_ci     and modified as appropriate when new information becomes available
82553a5a1b3Sopenharmony_ci     about when the session should really end.
82653a5a1b3Sopenharmony_ci
82753a5a1b3Sopenharmony_ci     Permanent sessions may be shown to the user as never being active
82853a5a1b3Sopenharmony_ci     unless there are associated repeat times which state precisely when
82953a5a1b3Sopenharmony_ci     the session will be active.  In general, permanent sessions should
83053a5a1b3Sopenharmony_ci     not be created for any session expected to have a duration of less
83153a5a1b3Sopenharmony_ci     than 2 months, and should be discouraged for sessions expected to
83253a5a1b3Sopenharmony_ci     have a duration of less than 6 months.
83353a5a1b3Sopenharmony_ci
83453a5a1b3Sopenharmony_ci     r=<repeat interval> <active duration> <list of offsets from start-
83553a5a1b3Sopenharmony_ci     time>
83653a5a1b3Sopenharmony_ci
83753a5a1b3Sopenharmony_ci   o "r=" fields specify repeat times for a session.  For example, if
83853a5a1b3Sopenharmony_ci     a session is active at 10am on Monday and 11am on Tuesday for one
83953a5a1b3Sopenharmony_ci
84053a5a1b3Sopenharmony_ci
84153a5a1b3Sopenharmony_ci
84253a5a1b3Sopenharmony_ciHandley & Jacobson          Standards Track                    [Page 15]
84353a5a1b3Sopenharmony_ci
84453a5a1b3Sopenharmony_ciRFC 2327                          SDP                         April 1998
84553a5a1b3Sopenharmony_ci
84653a5a1b3Sopenharmony_ci
84753a5a1b3Sopenharmony_ci     hour each week for three months, then the <start time> in the
84853a5a1b3Sopenharmony_ci     corresponding "t=" field would be the NTP representation of 10am on
84953a5a1b3Sopenharmony_ci     the first Monday, the <repeat interval> would be 1 week, the
85053a5a1b3Sopenharmony_ci     <active duration> would be 1 hour, and the offsets would be zero
85153a5a1b3Sopenharmony_ci     and 25 hours. The corresponding "t=" field stop time would be the
85253a5a1b3Sopenharmony_ci     NTP representation of the end of the last session three months
85353a5a1b3Sopenharmony_ci     later. By default all fields are in seconds, so the "r=" and "t="
85453a5a1b3Sopenharmony_ci     fields might be:
85553a5a1b3Sopenharmony_ci
85653a5a1b3Sopenharmony_ci                           t=3034423619 3042462419
85753a5a1b3Sopenharmony_ci                            r=604800 3600 0 90000
85853a5a1b3Sopenharmony_ci
85953a5a1b3Sopenharmony_ci    To make announcements more compact, times may also be given in units
86053a5a1b3Sopenharmony_ci    of days, hours or minutes. The syntax for these is a number
86153a5a1b3Sopenharmony_ci    immediately followed by a single case-sensitive character.
86253a5a1b3Sopenharmony_ci    Fractional units are not allowed - a smaller unit should be used
86353a5a1b3Sopenharmony_ci    instead.  The following unit specification characters are allowed:
86453a5a1b3Sopenharmony_ci
86553a5a1b3Sopenharmony_ci                         d - days (86400 seconds)
86653a5a1b3Sopenharmony_ci                        h - minutes (3600 seconds)
86753a5a1b3Sopenharmony_ci                         m - minutes (60 seconds)
86853a5a1b3Sopenharmony_ci         s - seconds (allowed for completeness but not recommended)
86953a5a1b3Sopenharmony_ci
87053a5a1b3Sopenharmony_ci   Thus, the above announcement could also have been written:
87153a5a1b3Sopenharmony_ci
87253a5a1b3Sopenharmony_ci                               r=7d 1h 0 25h
87353a5a1b3Sopenharmony_ci
87453a5a1b3Sopenharmony_ci     Monthly and yearly repeats cannot currently be directly specified
87553a5a1b3Sopenharmony_ci     with a single SDP repeat time - instead separate "t" fields should
87653a5a1b3Sopenharmony_ci     be used to explicitly list the session times.
87753a5a1b3Sopenharmony_ci
87853a5a1b3Sopenharmony_ci        z=<adjustment time> <offset> <adjustment time> <offset> ....
87953a5a1b3Sopenharmony_ci
88053a5a1b3Sopenharmony_ci   o To schedule a repeated session which spans a change from daylight-
88153a5a1b3Sopenharmony_ci     saving time to standard time or vice-versa, it is necessary to
88253a5a1b3Sopenharmony_ci     specify offsets from the base repeat times. This is required
88353a5a1b3Sopenharmony_ci     because different time zones change time at different times of day,
88453a5a1b3Sopenharmony_ci     different countries change to or from daylight time on different
88553a5a1b3Sopenharmony_ci     dates, and some countries do not have daylight saving time at all.
88653a5a1b3Sopenharmony_ci
88753a5a1b3Sopenharmony_ci     Thus in order to schedule a session that is at the same time winter
88853a5a1b3Sopenharmony_ci     and summer, it must be possible to specify unambiguously by whose
88953a5a1b3Sopenharmony_ci     time zone a session is scheduled.  To simplify this task for
89053a5a1b3Sopenharmony_ci     receivers, we allow the sender to specify the NTP time that a time
89153a5a1b3Sopenharmony_ci     zone adjustment happens and the offset from the time when the
89253a5a1b3Sopenharmony_ci     session was first scheduled.  The "z" field allows the sender to
89353a5a1b3Sopenharmony_ci     specify a list of these adjustment times and offsets from the base
89453a5a1b3Sopenharmony_ci     time.
89553a5a1b3Sopenharmony_ci
89653a5a1b3Sopenharmony_ci
89753a5a1b3Sopenharmony_ci
89853a5a1b3Sopenharmony_ciHandley & Jacobson          Standards Track                    [Page 16]
89953a5a1b3Sopenharmony_ci
90053a5a1b3Sopenharmony_ciRFC 2327                          SDP                         April 1998
90153a5a1b3Sopenharmony_ci
90253a5a1b3Sopenharmony_ci
90353a5a1b3Sopenharmony_ci     An example might be:
90453a5a1b3Sopenharmony_ci
90553a5a1b3Sopenharmony_ci                        z=2882844526 -1h 2898848070 0
90653a5a1b3Sopenharmony_ci
90753a5a1b3Sopenharmony_ci     This specifies that at time 2882844526 the time base by which the
90853a5a1b3Sopenharmony_ci     session's repeat times are calculated is shifted back by 1 hour,
90953a5a1b3Sopenharmony_ci     and that at time 2898848070 the session's original time base is
91053a5a1b3Sopenharmony_ci     restored. Adjustments are always relative to the specified start
91153a5a1b3Sopenharmony_ci     time - they are not cumulative.
91253a5a1b3Sopenharmony_ci
91353a5a1b3Sopenharmony_ci   o    If a session is likely to last several years, it is  expected
91453a5a1b3Sopenharmony_ci   that
91553a5a1b3Sopenharmony_ci     the session announcement will be modified periodically rather than
91653a5a1b3Sopenharmony_ci     transmit several years worth of adjustments in one announcement.
91753a5a1b3Sopenharmony_ci
91853a5a1b3Sopenharmony_ci   Encryption Keys
91953a5a1b3Sopenharmony_ci
92053a5a1b3Sopenharmony_ci   k=<method>
92153a5a1b3Sopenharmony_ci   k=<method>:<encryption key>
92253a5a1b3Sopenharmony_ci
92353a5a1b3Sopenharmony_ci   o The session description protocol may be used to convey encryption
92453a5a1b3Sopenharmony_ci     keys.  A key field is permitted before the first media entry (in
92553a5a1b3Sopenharmony_ci     which case it applies to all media in the session), or for each
92653a5a1b3Sopenharmony_ci     media entry as required.
92753a5a1b3Sopenharmony_ci
92853a5a1b3Sopenharmony_ci   o The format of keys and their usage is outside the scope of this
92953a5a1b3Sopenharmony_ci     document, but see [3].
93053a5a1b3Sopenharmony_ci
93153a5a1b3Sopenharmony_ci   o The method indicates the mechanism to be used to obtain a usable
93253a5a1b3Sopenharmony_ci     key by external means, or from the encoded encryption key given.
93353a5a1b3Sopenharmony_ci
93453a5a1b3Sopenharmony_ci     The following methods are defined:
93553a5a1b3Sopenharmony_ci
93653a5a1b3Sopenharmony_ci      k=clear:<encryption key>
93753a5a1b3Sopenharmony_ci        The encryption key (as described in [3] for  RTP  media  streams
93853a5a1b3Sopenharmony_ci        under  the  AV  profile)  is  included untransformed in this key
93953a5a1b3Sopenharmony_ci        field.
94053a5a1b3Sopenharmony_ci
94153a5a1b3Sopenharmony_ci      k=base64:<encoded encryption key>
94253a5a1b3Sopenharmony_ci        The encryption key (as described in [3] for RTP media streams
94353a5a1b3Sopenharmony_ci        under the AV profile) is included in this key field but has been
94453a5a1b3Sopenharmony_ci        base64 encoded because it includes characters that are
94553a5a1b3Sopenharmony_ci        prohibited in SDP.
94653a5a1b3Sopenharmony_ci
94753a5a1b3Sopenharmony_ci      k=uri:<URI to obtain key>
94853a5a1b3Sopenharmony_ci        A Universal Resource Identifier as used by WWW clients is
94953a5a1b3Sopenharmony_ci        included in this key field.  The URI refers to the data
95053a5a1b3Sopenharmony_ci        containing the key, and may require additional authentication
95153a5a1b3Sopenharmony_ci
95253a5a1b3Sopenharmony_ci
95353a5a1b3Sopenharmony_ci
95453a5a1b3Sopenharmony_ciHandley & Jacobson          Standards Track                    [Page 17]
95553a5a1b3Sopenharmony_ci
95653a5a1b3Sopenharmony_ciRFC 2327                          SDP                         April 1998
95753a5a1b3Sopenharmony_ci
95853a5a1b3Sopenharmony_ci
95953a5a1b3Sopenharmony_ci        before the key can be returned.  When a request is made to the
96053a5a1b3Sopenharmony_ci        given URI, the MIME content-type of the reply specifies the
96153a5a1b3Sopenharmony_ci        encoding for the key in the reply.  The key should not be
96253a5a1b3Sopenharmony_ci        obtained until the user wishes to join the session to reduce
96353a5a1b3Sopenharmony_ci        synchronisation of requests to the WWW server(s).
96453a5a1b3Sopenharmony_ci
96553a5a1b3Sopenharmony_ci      k=prompt
96653a5a1b3Sopenharmony_ci        No key is included in this SDP description, but the session or
96753a5a1b3Sopenharmony_ci        media stream referred to by this key field is encrypted.  The
96853a5a1b3Sopenharmony_ci        user should be prompted for the key when attempting to join the
96953a5a1b3Sopenharmony_ci        session, and this user-supplied key should then be used to
97053a5a1b3Sopenharmony_ci        decrypt the media streams.
97153a5a1b3Sopenharmony_ci
97253a5a1b3Sopenharmony_ci   Attributes
97353a5a1b3Sopenharmony_ci
97453a5a1b3Sopenharmony_ci   a=<attribute>
97553a5a1b3Sopenharmony_ci   a=<attribute>:<value>
97653a5a1b3Sopenharmony_ci
97753a5a1b3Sopenharmony_ci   Attributes are the primary means for extending SDP.  Attributes may
97853a5a1b3Sopenharmony_ci   be defined to be used as "session-level" attributes, "media-level"
97953a5a1b3Sopenharmony_ci   attributes, or both.
98053a5a1b3Sopenharmony_ci
98153a5a1b3Sopenharmony_ci   A media description may have any number of attributes ("a=" fields)
98253a5a1b3Sopenharmony_ci   which are media specific.  These are referred to as "media-level"
98353a5a1b3Sopenharmony_ci   attributes and add information about the media stream.  Attribute
98453a5a1b3Sopenharmony_ci   fields can also be added before the first media field; these
98553a5a1b3Sopenharmony_ci   "session-level" attributes convey additional information that applies
98653a5a1b3Sopenharmony_ci   to the conference as a whole rather than to individual media; an
98753a5a1b3Sopenharmony_ci   example might be the conference's floor control policy.
98853a5a1b3Sopenharmony_ci
98953a5a1b3Sopenharmony_ci   Attribute fields may be of two forms:
99053a5a1b3Sopenharmony_ci
99153a5a1b3Sopenharmony_ci   o property attributes.  A property attribute is simply of the form
99253a5a1b3Sopenharmony_ci     "a=<flag>".  These are binary attributes, and the presence of the
99353a5a1b3Sopenharmony_ci     attribute conveys that the attribute is a property of the session.
99453a5a1b3Sopenharmony_ci     An example might be "a=recvonly".
99553a5a1b3Sopenharmony_ci
99653a5a1b3Sopenharmony_ci   o value attributes.  A value attribute is of the form
99753a5a1b3Sopenharmony_ci     "a=<attribute>:<value>".  An example might be that a whiteboard
99853a5a1b3Sopenharmony_ci     could have the value attribute "a=orient:landscape"
99953a5a1b3Sopenharmony_ci
100053a5a1b3Sopenharmony_ci   Attribute interpretation depends on the media tool being invoked.
100153a5a1b3Sopenharmony_ci   Thus receivers of session descriptions should be configurable in
100253a5a1b3Sopenharmony_ci   their interpretation of announcements in general and of attributes in
100353a5a1b3Sopenharmony_ci   particular.
100453a5a1b3Sopenharmony_ci
100553a5a1b3Sopenharmony_ci   Attribute names must be in the US-ASCII subset of ISO-10646/UTF-8.
100653a5a1b3Sopenharmony_ci
100753a5a1b3Sopenharmony_ci
100853a5a1b3Sopenharmony_ci
100953a5a1b3Sopenharmony_ci
101053a5a1b3Sopenharmony_ciHandley & Jacobson          Standards Track                    [Page 18]
101153a5a1b3Sopenharmony_ci
101253a5a1b3Sopenharmony_ciRFC 2327                          SDP                         April 1998
101353a5a1b3Sopenharmony_ci
101453a5a1b3Sopenharmony_ci
101553a5a1b3Sopenharmony_ci   Attribute values are byte strings, and MAY use any byte value except
101653a5a1b3Sopenharmony_ci   0x00 (Nul), 0x0A (LF), and 0x0D (CR). By default, attribute values
101753a5a1b3Sopenharmony_ci   are to be interpreted as in ISO-10646 character set with UTF-8
101853a5a1b3Sopenharmony_ci   encoding.  Unlike other text fields, attribute values are NOT
101953a5a1b3Sopenharmony_ci   normally affected by the `charset' attribute as this would make
102053a5a1b3Sopenharmony_ci   comparisons against known values problematic.  However, when an
102153a5a1b3Sopenharmony_ci   attribute is defined, it can be defined to be charset-dependent, in
102253a5a1b3Sopenharmony_ci   which case it's value should be interpreted in the session charset
102353a5a1b3Sopenharmony_ci   rather than in ISO-10646.
102453a5a1b3Sopenharmony_ci
102553a5a1b3Sopenharmony_ci   Attributes that will be commonly used can be registered with IANA
102653a5a1b3Sopenharmony_ci   (see Appendix B).  Unregistered attributes should begin with "X-" to
102753a5a1b3Sopenharmony_ci   prevent inadvertent collision with registered attributes.  In either
102853a5a1b3Sopenharmony_ci   case, if an attribute is received that is not understood, it should
102953a5a1b3Sopenharmony_ci   simply be ignored by the receiver.
103053a5a1b3Sopenharmony_ci
103153a5a1b3Sopenharmony_ci   Media Announcements
103253a5a1b3Sopenharmony_ci
103353a5a1b3Sopenharmony_ci   m=<media> <port> <transport> <fmt list>
103453a5a1b3Sopenharmony_ci
103553a5a1b3Sopenharmony_ci   A session description may contain a number of media descriptions.
103653a5a1b3Sopenharmony_ci   Each media description starts with an "m=" field, and is terminated
103753a5a1b3Sopenharmony_ci   by either the next "m=" field or by the end of the session
103853a5a1b3Sopenharmony_ci   description.  A media field also has several sub-fields:
103953a5a1b3Sopenharmony_ci
104053a5a1b3Sopenharmony_ci   o The first sub-field is the media type.  Currently defined media are
104153a5a1b3Sopenharmony_ci     "audio", "video", "application", "data" and "control", though this
104253a5a1b3Sopenharmony_ci     list may be extended as new communication modalities emerge (e.g.,
104353a5a1b3Sopenharmony_ci     telepresense).  The difference between "application" and "data" is
104453a5a1b3Sopenharmony_ci     that the former is a media flow such as whiteboard information, and
104553a5a1b3Sopenharmony_ci     the latter is bulk-data transfer such as multicasting of program
104653a5a1b3Sopenharmony_ci     executables which will not typically be displayed to the user.
104753a5a1b3Sopenharmony_ci     "control" is used to specify an additional conference control
104853a5a1b3Sopenharmony_ci     channel for the session.
104953a5a1b3Sopenharmony_ci
105053a5a1b3Sopenharmony_ci   o The second sub-field is the transport port to which the media
105153a5a1b3Sopenharmony_ci     stream will be sent.  The meaning of the transport port depends on
105253a5a1b3Sopenharmony_ci     the network being used as specified in the relevant "c" field and
105353a5a1b3Sopenharmony_ci     on the transport protocol defined in the third sub-field.  Other
105453a5a1b3Sopenharmony_ci     ports used by the media application (such as the RTCP port, see
105553a5a1b3Sopenharmony_ci     [2]) should be derived algorithmically from the base media port.
105653a5a1b3Sopenharmony_ci
105753a5a1b3Sopenharmony_ci     Note: For transports based on UDP, the value should be in the range
105853a5a1b3Sopenharmony_ci     1024 to 65535 inclusive.  For RTP compliance it should be an even
105953a5a1b3Sopenharmony_ci     number.
106053a5a1b3Sopenharmony_ci
106153a5a1b3Sopenharmony_ci
106253a5a1b3Sopenharmony_ci
106353a5a1b3Sopenharmony_ci
106453a5a1b3Sopenharmony_ci
106553a5a1b3Sopenharmony_ci
106653a5a1b3Sopenharmony_ciHandley & Jacobson          Standards Track                    [Page 19]
106753a5a1b3Sopenharmony_ci
106853a5a1b3Sopenharmony_ciRFC 2327                          SDP                         April 1998
106953a5a1b3Sopenharmony_ci
107053a5a1b3Sopenharmony_ci
107153a5a1b3Sopenharmony_ci     For applications where hierarchically encoded streams are being
107253a5a1b3Sopenharmony_ci     sent to a unicast address, it may be necessary to specify multiple
107353a5a1b3Sopenharmony_ci     transport ports.  This is done using a similar notation to that
107453a5a1b3Sopenharmony_ci     used for IP multicast addresses in the "c=" field:
107553a5a1b3Sopenharmony_ci
107653a5a1b3Sopenharmony_ci          m=<media> <port>/<number of ports> <transport> <fmt list>
107753a5a1b3Sopenharmony_ci
107853a5a1b3Sopenharmony_ci     In such a case, the ports used depend on the transport protocol.
107953a5a1b3Sopenharmony_ci     For RTP, only the even ports are used for data and the
108053a5a1b3Sopenharmony_ci     corresponding one-higher odd port is used for RTCP.  For example:
108153a5a1b3Sopenharmony_ci
108253a5a1b3Sopenharmony_ci                         m=video 49170/2 RTP/AVP 31
108353a5a1b3Sopenharmony_ci
108453a5a1b3Sopenharmony_ci     would specify that ports 49170 and 49171 form one RTP/RTCP pair and
108553a5a1b3Sopenharmony_ci     49172 and 49173 form the second RTP/RTCP pair.  RTP/AVP is the
108653a5a1b3Sopenharmony_ci     transport protocol and 31 is the format (see below).
108753a5a1b3Sopenharmony_ci
108853a5a1b3Sopenharmony_ci     It is illegal for both multiple addresses to be specified in the
108953a5a1b3Sopenharmony_ci     "c=" field and for multiple ports to be specified in the "m=" field
109053a5a1b3Sopenharmony_ci     in the same session description.
109153a5a1b3Sopenharmony_ci
109253a5a1b3Sopenharmony_ci   o The third sub-field is the transport protocol.  The transport
109353a5a1b3Sopenharmony_ci     protocol values are dependent on the address-type field in the "c="
109453a5a1b3Sopenharmony_ci     fields.  Thus a "c=" field of IP4 defines that the transport
109553a5a1b3Sopenharmony_ci     protocol runs over IP4.  For IP4, it is normally expected that most
109653a5a1b3Sopenharmony_ci     media traffic will be carried as RTP over UDP.  The following
109753a5a1b3Sopenharmony_ci     transport protocols are preliminarily defined, but may be extended
109853a5a1b3Sopenharmony_ci     through registration of new protocols with IANA:
109953a5a1b3Sopenharmony_ci
110053a5a1b3Sopenharmony_ci     - RTP/AVP - the IETF's Realtime Transport Protocol using the
110153a5a1b3Sopenharmony_ci       Audio/Video profile carried over UDP.
110253a5a1b3Sopenharmony_ci
110353a5a1b3Sopenharmony_ci     - udp - User Datagram Protocol
110453a5a1b3Sopenharmony_ci
110553a5a1b3Sopenharmony_ci     If an application uses a single combined proprietary media format
110653a5a1b3Sopenharmony_ci     and transport protocol over UDP, then simply specifying the
110753a5a1b3Sopenharmony_ci     transport protocol as udp and using the format field to distinguish
110853a5a1b3Sopenharmony_ci     the combined protocol is recommended.  If a transport protocol is
110953a5a1b3Sopenharmony_ci     used over UDP to carry several distinct media types that need to be
111053a5a1b3Sopenharmony_ci     distinguished by a session directory, then specifying the transport
111153a5a1b3Sopenharmony_ci     protocol and media format separately is necessary. RTP is an
111253a5a1b3Sopenharmony_ci     example of a transport-protocol that carries multiple payload
111353a5a1b3Sopenharmony_ci     formats that must be distinguished by the session directory for it
111453a5a1b3Sopenharmony_ci     to know how to start appropriate tools, relays, mixers or
111553a5a1b3Sopenharmony_ci     recorders.
111653a5a1b3Sopenharmony_ci
111753a5a1b3Sopenharmony_ci
111853a5a1b3Sopenharmony_ci
111953a5a1b3Sopenharmony_ci
112053a5a1b3Sopenharmony_ci
112153a5a1b3Sopenharmony_ci
112253a5a1b3Sopenharmony_ciHandley & Jacobson          Standards Track                    [Page 20]
112353a5a1b3Sopenharmony_ci
112453a5a1b3Sopenharmony_ciRFC 2327                          SDP                         April 1998
112553a5a1b3Sopenharmony_ci
112653a5a1b3Sopenharmony_ci
112753a5a1b3Sopenharmony_ci     The main reason to specify the transport-protocol in addition to
112853a5a1b3Sopenharmony_ci     the media format is that the same standard media formats may be
112953a5a1b3Sopenharmony_ci     carried over different transport protocols even when the network
113053a5a1b3Sopenharmony_ci     protocol is the same - a historical example is vat PCM audio and
113153a5a1b3Sopenharmony_ci     RTP PCM audio.  In addition, relays and monitoring tools that are
113253a5a1b3Sopenharmony_ci     transport-protocol-specific but format-independent are possible.
113353a5a1b3Sopenharmony_ci
113453a5a1b3Sopenharmony_ci     For RTP media streams operating under the RTP Audio/Video Profile
113553a5a1b3Sopenharmony_ci     [3], the protocol field is "RTP/AVP".  Should other RTP profiles be
113653a5a1b3Sopenharmony_ci     defined in the future, their profiles will be specified in the same
113753a5a1b3Sopenharmony_ci     way.  For example, the protocol field "RTP/XYZ" would specify RTP
113853a5a1b3Sopenharmony_ci     operating under a profile whose short name is "XYZ".
113953a5a1b3Sopenharmony_ci
114053a5a1b3Sopenharmony_ci   o The fourth and subsequent sub-fields are media formats.  For audio
114153a5a1b3Sopenharmony_ci     and video, these will normally be a media payload type as defined
114253a5a1b3Sopenharmony_ci     in the RTP Audio/Video Profile.
114353a5a1b3Sopenharmony_ci
114453a5a1b3Sopenharmony_ci     When a list of payload formats is given, this implies that all of
114553a5a1b3Sopenharmony_ci     these formats may be used in the session, but the first of these
114653a5a1b3Sopenharmony_ci     formats is the default format for the session.
114753a5a1b3Sopenharmony_ci
114853a5a1b3Sopenharmony_ci     For media whose transport protocol is not RTP or UDP the format
114953a5a1b3Sopenharmony_ci     field is protocol specific.  Such formats should be defined in an
115053a5a1b3Sopenharmony_ci     additional specification document.
115153a5a1b3Sopenharmony_ci
115253a5a1b3Sopenharmony_ci     For media whose transport protocol is RTP, SDP can be used to
115353a5a1b3Sopenharmony_ci     provide a dynamic binding of media encoding to RTP payload type.
115453a5a1b3Sopenharmony_ci     The encoding names in the RTP AV Profile do not specify unique
115553a5a1b3Sopenharmony_ci     audio encodings (in terms of clock rate and number of audio
115653a5a1b3Sopenharmony_ci     channels), and so they are not used directly in SDP format fields.
115753a5a1b3Sopenharmony_ci     Instead, the payload type number should be used to specify the
115853a5a1b3Sopenharmony_ci     format for static payload types and the payload type number along
115953a5a1b3Sopenharmony_ci     with additional encoding information should be used for dynamically
116053a5a1b3Sopenharmony_ci     allocated payload types.
116153a5a1b3Sopenharmony_ci
116253a5a1b3Sopenharmony_ci     An example of a static payload type is u-law PCM coded single
116353a5a1b3Sopenharmony_ci     channel audio sampled at 8KHz.  This is completely defined in the
116453a5a1b3Sopenharmony_ci     RTP Audio/Video profile as payload type 0, so the media field for
116553a5a1b3Sopenharmony_ci     such a stream sent to UDP port 49232 is:
116653a5a1b3Sopenharmony_ci
116753a5a1b3Sopenharmony_ci                           m=video 49232 RTP/AVP 0
116853a5a1b3Sopenharmony_ci
116953a5a1b3Sopenharmony_ci     An example of a dynamic payload type is 16 bit linear encoded
117053a5a1b3Sopenharmony_ci     stereo audio sampled at 16KHz.  If we wish to use dynamic RTP/AVP
117153a5a1b3Sopenharmony_ci     payload type 98 for such a stream, additional information is
117253a5a1b3Sopenharmony_ci     required to decode it:
117353a5a1b3Sopenharmony_ci
117453a5a1b3Sopenharmony_ci                          m=video 49232 RTP/AVP 98
117553a5a1b3Sopenharmony_ci
117653a5a1b3Sopenharmony_ci
117753a5a1b3Sopenharmony_ci
117853a5a1b3Sopenharmony_ciHandley & Jacobson          Standards Track                    [Page 21]
117953a5a1b3Sopenharmony_ci
118053a5a1b3Sopenharmony_ciRFC 2327                          SDP                         April 1998
118153a5a1b3Sopenharmony_ci
118253a5a1b3Sopenharmony_ci
118353a5a1b3Sopenharmony_ci                           a=rtpmap:98 L16/16000/2
118453a5a1b3Sopenharmony_ci
118553a5a1b3Sopenharmony_ci     The general form of an rtpmap attribute is:
118653a5a1b3Sopenharmony_ci
118753a5a1b3Sopenharmony_ci     a=rtpmap:<payload type> <encoding name>/<clock rate>[/<encoding
118853a5a1b3Sopenharmony_ci     parameters>]
118953a5a1b3Sopenharmony_ci
119053a5a1b3Sopenharmony_ci     For audio streams, <encoding parameters> may specify the number of
119153a5a1b3Sopenharmony_ci     audio channels.  This parameter may be omitted if the number of
119253a5a1b3Sopenharmony_ci     channels is one provided no additional parameters are needed.  For
119353a5a1b3Sopenharmony_ci     video streams, no encoding parameters are currently specified.
119453a5a1b3Sopenharmony_ci
119553a5a1b3Sopenharmony_ci     Additional parameters may be defined in the future, but
119653a5a1b3Sopenharmony_ci     codecspecific parameters should not be added.  Parameters added to
119753a5a1b3Sopenharmony_ci     an rtpmap attribute should only be those required for a session
119853a5a1b3Sopenharmony_ci     directory to make the choice of appropriate media too to
119953a5a1b3Sopenharmony_ci     participate in a session.  Codec-specific parameters should be
120053a5a1b3Sopenharmony_ci     added in other attributes.
120153a5a1b3Sopenharmony_ci
120253a5a1b3Sopenharmony_ci     Up to one rtpmap attribute can be defined for each media format
120353a5a1b3Sopenharmony_ci     specified. Thus we might have:
120453a5a1b3Sopenharmony_ci
120553a5a1b3Sopenharmony_ci                       m=audio 49230 RTP/AVP 96 97 98
120653a5a1b3Sopenharmony_ci                             a=rtpmap:96 L8/8000
120753a5a1b3Sopenharmony_ci                            a=rtpmap:97 L16/8000
120853a5a1b3Sopenharmony_ci                           a=rtpmap:98 L16/11025/2
120953a5a1b3Sopenharmony_ci
121053a5a1b3Sopenharmony_ci     RTP profiles that specify the use of dynamic payload types must
121153a5a1b3Sopenharmony_ci     define the set of valid encoding names and/or a means to register
121253a5a1b3Sopenharmony_ci     encoding names if that profile is to be used with SDP.
121353a5a1b3Sopenharmony_ci
121453a5a1b3Sopenharmony_ci     Experimental encoding formats can also be specified using rtpmap.
121553a5a1b3Sopenharmony_ci     RTP formats that are not registered as standard format names must
121653a5a1b3Sopenharmony_ci     be preceded by "X-".  Thus a new experimental redundant audio
121753a5a1b3Sopenharmony_ci     stream called GSMLPC using dynamic payload type 99 could be
121853a5a1b3Sopenharmony_ci     specified as:
121953a5a1b3Sopenharmony_ci
122053a5a1b3Sopenharmony_ci                          m=video 49232 RTP/AVP 99
122153a5a1b3Sopenharmony_ci                          a=rtpmap:99 X-GSMLPC/8000
122253a5a1b3Sopenharmony_ci
122353a5a1b3Sopenharmony_ci     Such an experimental encoding requires that any site wishing to
122453a5a1b3Sopenharmony_ci     receive the media stream has relevant configured state in its
122553a5a1b3Sopenharmony_ci     session directory to know which tools are appropriate.
122653a5a1b3Sopenharmony_ci
122753a5a1b3Sopenharmony_ci     Note that RTP audio formats typically do not include information
122853a5a1b3Sopenharmony_ci     about the number of samples per packet.  If a non-default (as
122953a5a1b3Sopenharmony_ci     defined in the RTP Audio/Video Profile) packetisation is required,
123053a5a1b3Sopenharmony_ci     the "ptime" attribute is used as given below.
123153a5a1b3Sopenharmony_ci
123253a5a1b3Sopenharmony_ci
123353a5a1b3Sopenharmony_ci
123453a5a1b3Sopenharmony_ciHandley & Jacobson          Standards Track                    [Page 22]
123553a5a1b3Sopenharmony_ci
123653a5a1b3Sopenharmony_ciRFC 2327                          SDP                         April 1998
123753a5a1b3Sopenharmony_ci
123853a5a1b3Sopenharmony_ci
123953a5a1b3Sopenharmony_ci     For more details on RTP audio and video formats, see [3].
124053a5a1b3Sopenharmony_ci
124153a5a1b3Sopenharmony_ci   o Formats for non-RTP media should be registered as MIME content
124253a5a1b3Sopenharmony_ci     types as described in Appendix B.  For example, the LBL whiteboard
124353a5a1b3Sopenharmony_ci     application might be registered as MIME content-type application/wb
124453a5a1b3Sopenharmony_ci     with encoding considerations specifying that it operates over UDP,
124553a5a1b3Sopenharmony_ci     with no appropriate file format.  In SDP this would then be
124653a5a1b3Sopenharmony_ci     expressed using a combination of the "media" field and the "fmt"
124753a5a1b3Sopenharmony_ci     field, as follows:
124853a5a1b3Sopenharmony_ci
124953a5a1b3Sopenharmony_ci                         m=application 32416 udp wb
125053a5a1b3Sopenharmony_ci
125153a5a1b3Sopenharmony_ci   Suggested Attributes
125253a5a1b3Sopenharmony_ci
125353a5a1b3Sopenharmony_ci   The following attributes are suggested.  Since application writers
125453a5a1b3Sopenharmony_ci   may add new attributes as they are required, this list is not
125553a5a1b3Sopenharmony_ci   exhaustive.
125653a5a1b3Sopenharmony_ci
125753a5a1b3Sopenharmony_ci   a=cat:<category>
125853a5a1b3Sopenharmony_ci       This attribute gives the dot-separated hierarchical category of
125953a5a1b3Sopenharmony_ci       the session.  This is to enable a receiver to filter unwanted
126053a5a1b3Sopenharmony_ci       sessions by category.  It would probably have been a compulsory
126153a5a1b3Sopenharmony_ci       separate field, except for its experimental nature at this time.
126253a5a1b3Sopenharmony_ci       It is a session-level attribute, and is not dependent on charset.
126353a5a1b3Sopenharmony_ci
126453a5a1b3Sopenharmony_ci   a=keywds:<keywords>
126553a5a1b3Sopenharmony_ci       Like the cat attribute, this is to assist identifying wanted
126653a5a1b3Sopenharmony_ci       sessions at the receiver.  This allows a receiver to select
126753a5a1b3Sopenharmony_ci       interesting session based on keywords describing the purpose of
126853a5a1b3Sopenharmony_ci       the session.  It is a session-level attribute. It is a charset
126953a5a1b3Sopenharmony_ci       dependent attribute, meaning that its value should be interpreted
127053a5a1b3Sopenharmony_ci       in the charset specified for the session description if one is
127153a5a1b3Sopenharmony_ci       specified, or by default in ISO 10646/UTF-8.
127253a5a1b3Sopenharmony_ci
127353a5a1b3Sopenharmony_ci   a=tool:<name and version of tool>
127453a5a1b3Sopenharmony_ci       This gives the name and version number of the tool used to create
127553a5a1b3Sopenharmony_ci       the session description.  It is a session-level attribute, and is
127653a5a1b3Sopenharmony_ci       not dependent on charset.
127753a5a1b3Sopenharmony_ci
127853a5a1b3Sopenharmony_ci   a=ptime:<packet time>
127953a5a1b3Sopenharmony_ci       This gives the length of time in milliseconds represented by the
128053a5a1b3Sopenharmony_ci       media in a packet. This is probably only meaningful for audio
128153a5a1b3Sopenharmony_ci       data.  It should not be necessary to know ptime to decode RTP or
128253a5a1b3Sopenharmony_ci       vat audio, and it is intended as a recommendation for the
128353a5a1b3Sopenharmony_ci       encoding/packetisation of audio.  It is a media attribute, and is
128453a5a1b3Sopenharmony_ci       not dependent on charset.
128553a5a1b3Sopenharmony_ci
128653a5a1b3Sopenharmony_ci
128753a5a1b3Sopenharmony_ci
128853a5a1b3Sopenharmony_ci
128953a5a1b3Sopenharmony_ci
129053a5a1b3Sopenharmony_ciHandley & Jacobson          Standards Track                    [Page 23]
129153a5a1b3Sopenharmony_ci
129253a5a1b3Sopenharmony_ciRFC 2327                          SDP                         April 1998
129353a5a1b3Sopenharmony_ci
129453a5a1b3Sopenharmony_ci
129553a5a1b3Sopenharmony_ci   a=recvonly
129653a5a1b3Sopenharmony_ci       This specifies that the tools should be started in receive-only
129753a5a1b3Sopenharmony_ci       mode where applicable. It can be either a session or media
129853a5a1b3Sopenharmony_ci       attribute, and is not dependent on charset.
129953a5a1b3Sopenharmony_ci
130053a5a1b3Sopenharmony_ci   a=sendrecv
130153a5a1b3Sopenharmony_ci       This specifies that the tools should be started in send and
130253a5a1b3Sopenharmony_ci       receive mode.  This is necessary for interactive conferences with
130353a5a1b3Sopenharmony_ci       tools such as wb which defaults to receive only mode. It can be
130453a5a1b3Sopenharmony_ci       either a session or media attribute, and is not dependent on
130553a5a1b3Sopenharmony_ci       charset.
130653a5a1b3Sopenharmony_ci
130753a5a1b3Sopenharmony_ci   a=sendonly
130853a5a1b3Sopenharmony_ci       This specifies that the tools should be started in send-only
130953a5a1b3Sopenharmony_ci       mode.  An example may be where a different unicast address is to
131053a5a1b3Sopenharmony_ci       be used for a traffic destination than for a traffic source. In
131153a5a1b3Sopenharmony_ci       such a case, two media descriptions may be use, one sendonly and
131253a5a1b3Sopenharmony_ci       one recvonly. It can be either a session or media attribute, but
131353a5a1b3Sopenharmony_ci       would normally only be used as a media attribute, and is not
131453a5a1b3Sopenharmony_ci       dependent on charset.
131553a5a1b3Sopenharmony_ci
131653a5a1b3Sopenharmony_ci   a=orient:<whiteboard orientation>
131753a5a1b3Sopenharmony_ci       Normally this is only used in a whiteboard media specification.
131853a5a1b3Sopenharmony_ci       It specifies the orientation of a the whiteboard on the screen.
131953a5a1b3Sopenharmony_ci       It is a media attribute. Permitted values are `portrait',
132053a5a1b3Sopenharmony_ci       `landscape' and `seascape' (upside down landscape). It is not
132153a5a1b3Sopenharmony_ci       dependent on charset
132253a5a1b3Sopenharmony_ci
132353a5a1b3Sopenharmony_ci   a=type:<conference type>
132453a5a1b3Sopenharmony_ci       This specifies the type of the conference.  Suggested values are
132553a5a1b3Sopenharmony_ci       `broadcast', `meeting', `moderated', `test' and `H332'.
132653a5a1b3Sopenharmony_ci       `recvonly' should be the default for `type:broadcast' sessions,
132753a5a1b3Sopenharmony_ci       `type:meeting' should imply `sendrecv' and `type:moderated'
132853a5a1b3Sopenharmony_ci       should indicate the use of a floor control tool and that the
132953a5a1b3Sopenharmony_ci       media tools are started so as to "mute" new sites joining the
133053a5a1b3Sopenharmony_ci       conference.
133153a5a1b3Sopenharmony_ci
133253a5a1b3Sopenharmony_ci       Specifying the attribute type:H332 indicates that this loosely
133353a5a1b3Sopenharmony_ci       coupled session is part of a H.332 session as defined in the ITU
133453a5a1b3Sopenharmony_ci       H.332 specification [10].  Media tools should be started
133553a5a1b3Sopenharmony_ci       `recvonly'.
133653a5a1b3Sopenharmony_ci
133753a5a1b3Sopenharmony_ci       Specifying the attribute type:test is suggested as a hint that,
133853a5a1b3Sopenharmony_ci       unless explicitly requested otherwise, receivers can safely avoid
133953a5a1b3Sopenharmony_ci       displaying this session description to users.
134053a5a1b3Sopenharmony_ci
134153a5a1b3Sopenharmony_ci       The type attribute is a session-level attribute, and is not
134253a5a1b3Sopenharmony_ci       dependent on charset.
134353a5a1b3Sopenharmony_ci
134453a5a1b3Sopenharmony_ci
134553a5a1b3Sopenharmony_ci
134653a5a1b3Sopenharmony_ciHandley & Jacobson          Standards Track                    [Page 24]
134753a5a1b3Sopenharmony_ci
134853a5a1b3Sopenharmony_ciRFC 2327                          SDP                         April 1998
134953a5a1b3Sopenharmony_ci
135053a5a1b3Sopenharmony_ci
135153a5a1b3Sopenharmony_ci   a=charset:<character set>
135253a5a1b3Sopenharmony_ci       This specifies the character set to be used to display the
135353a5a1b3Sopenharmony_ci       session name and information data.  By default, the ISO-10646
135453a5a1b3Sopenharmony_ci       character set in UTF-8 encoding is used. If a more compact
135553a5a1b3Sopenharmony_ci       representation is required, other character sets may be used such
135653a5a1b3Sopenharmony_ci       as ISO-8859-1 for Northern European languages.  In particular,
135753a5a1b3Sopenharmony_ci       the ISO 8859-1 is specified with the following SDP attribute:
135853a5a1b3Sopenharmony_ci
135953a5a1b3Sopenharmony_ci                             a=charset:ISO-8859-1
136053a5a1b3Sopenharmony_ci
136153a5a1b3Sopenharmony_ci       This is a session-level attribute; if this attribute is present,
136253a5a1b3Sopenharmony_ci       it must be before the first media field.  The charset specified
136353a5a1b3Sopenharmony_ci       MUST be one of those registered with IANA, such as ISO-8859-1.
136453a5a1b3Sopenharmony_ci       The character set identifier is a US-ASCII string and MUST be
136553a5a1b3Sopenharmony_ci       compared against the IANA identifiers using a case-insensitive
136653a5a1b3Sopenharmony_ci       comparison.  If the identifier is not recognised or not
136753a5a1b3Sopenharmony_ci       supported, all strings that are affected by it SHOULD be regarded
136853a5a1b3Sopenharmony_ci       as byte strings.
136953a5a1b3Sopenharmony_ci
137053a5a1b3Sopenharmony_ci       Note that a character set specified MUST still prohibit the use
137153a5a1b3Sopenharmony_ci       of bytes 0x00 (Nul), 0x0A (LF) and 0x0d (CR). Character sets
137253a5a1b3Sopenharmony_ci       requiring the use of these characters MUST define a quoting
137353a5a1b3Sopenharmony_ci       mechanism that prevents these bytes appearing within text fields.
137453a5a1b3Sopenharmony_ci
137553a5a1b3Sopenharmony_ci   a=sdplang:<language tag>
137653a5a1b3Sopenharmony_ci       This can be a session level attribute or a media level attribute.
137753a5a1b3Sopenharmony_ci       As a session level attribute, it specifies the language for the
137853a5a1b3Sopenharmony_ci       session description.  As a media level attribute, it specifies
137953a5a1b3Sopenharmony_ci       the language for any media-level SDP information field associated
138053a5a1b3Sopenharmony_ci       with that media.  Multiple sdplang attributes can be provided
138153a5a1b3Sopenharmony_ci       either at session or media level if multiple languages in the
138253a5a1b3Sopenharmony_ci       session description or media use multiple languages, in which
138353a5a1b3Sopenharmony_ci       case the order of the attributes indicates the order of
138453a5a1b3Sopenharmony_ci       importance of the various languages in the session or media from
138553a5a1b3Sopenharmony_ci       most important to least important.
138653a5a1b3Sopenharmony_ci
138753a5a1b3Sopenharmony_ci       In general, sending session descriptions consisting of multiple
138853a5a1b3Sopenharmony_ci       languages should be discouraged.  Instead, multiple descriptions
138953a5a1b3Sopenharmony_ci       should be sent describing the session, one in each language.
139053a5a1b3Sopenharmony_ci       However this is not possible with all transport mechanisms, and
139153a5a1b3Sopenharmony_ci       so multiple sdplang attributes are allowed although not
139253a5a1b3Sopenharmony_ci       recommended.
139353a5a1b3Sopenharmony_ci
139453a5a1b3Sopenharmony_ci       The sdplang attribute value must be a single RFC 1766 language
139553a5a1b3Sopenharmony_ci       tag in US-ASCII.  It is not dependent on the charset attribute.
139653a5a1b3Sopenharmony_ci       An sdplang attribute SHOULD be specified when a session is of
139753a5a1b3Sopenharmony_ci
139853a5a1b3Sopenharmony_ci
139953a5a1b3Sopenharmony_ci
140053a5a1b3Sopenharmony_ci
140153a5a1b3Sopenharmony_ci
140253a5a1b3Sopenharmony_ciHandley & Jacobson          Standards Track                    [Page 25]
140353a5a1b3Sopenharmony_ci
140453a5a1b3Sopenharmony_ciRFC 2327                          SDP                         April 1998
140553a5a1b3Sopenharmony_ci
140653a5a1b3Sopenharmony_ci
140753a5a1b3Sopenharmony_ci       sufficient scope to cross geographic boundaries where the
140853a5a1b3Sopenharmony_ci       language of recipients cannot be assumed, or where the session is
140953a5a1b3Sopenharmony_ci       in a different language from the locally assumed norm.
141053a5a1b3Sopenharmony_ci
141153a5a1b3Sopenharmony_ci   a=lang:<language tag>
141253a5a1b3Sopenharmony_ci       This can be a session level attribute or a media level attribute.
141353a5a1b3Sopenharmony_ci       As a session level attribute, it specifies the default language
141453a5a1b3Sopenharmony_ci       for the session being described.  As a media level attribute, it
141553a5a1b3Sopenharmony_ci       specifies the language for that media, overriding any session-
141653a5a1b3Sopenharmony_ci       level language specified.  Multiple lang attributes can be
141753a5a1b3Sopenharmony_ci       provided either at session or media level if multiple languages
141853a5a1b3Sopenharmony_ci       if the session description or media use multiple languages, in
141953a5a1b3Sopenharmony_ci       which case the order of the attributes indicates the order of
142053a5a1b3Sopenharmony_ci       importance of the various languages in the session or media from
142153a5a1b3Sopenharmony_ci       most important to least important.
142253a5a1b3Sopenharmony_ci
142353a5a1b3Sopenharmony_ci       The lang attribute value must be a single RFC 1766 language tag
142453a5a1b3Sopenharmony_ci       in US-ASCII. It is not dependent on the charset attribute.  A
142553a5a1b3Sopenharmony_ci       lang attribute SHOULD be specified when a session is of
142653a5a1b3Sopenharmony_ci       sufficient scope to cross geographic boundaries where the
142753a5a1b3Sopenharmony_ci       language of recipients cannot be assumed, or where the session is
142853a5a1b3Sopenharmony_ci       in a different language from the locally assumed norm.
142953a5a1b3Sopenharmony_ci
143053a5a1b3Sopenharmony_ci   a=framerate:<frame rate>
143153a5a1b3Sopenharmony_ci       This gives the maximum video frame rate in frames/sec.  It is
143253a5a1b3Sopenharmony_ci       intended as a recommendation for the encoding of video data.
143353a5a1b3Sopenharmony_ci       Decimal representations of fractional values using the notation
143453a5a1b3Sopenharmony_ci       "<integer>.<fraction>" are allowed.  It is a media attribute, is
143553a5a1b3Sopenharmony_ci       only defined for video media, and is not dependent on charset.
143653a5a1b3Sopenharmony_ci
143753a5a1b3Sopenharmony_ci   a=quality:<quality>
143853a5a1b3Sopenharmony_ci       This gives a suggestion for the quality of the encoding as an
143953a5a1b3Sopenharmony_ci       integer value.
144053a5a1b3Sopenharmony_ci
144153a5a1b3Sopenharmony_ci       The intention of the quality attribute for video is to specify a
144253a5a1b3Sopenharmony_ci       non-default trade-off between frame-rate and still-image quality.
144353a5a1b3Sopenharmony_ci       For video, the value in the range 0 to 10, with the following
144453a5a1b3Sopenharmony_ci       suggested meaning:
144553a5a1b3Sopenharmony_ci
144653a5a1b3Sopenharmony_ci       10 - the best still-image quality the compression scheme can
144753a5a1b3Sopenharmony_ci       give.
144853a5a1b3Sopenharmony_ci
144953a5a1b3Sopenharmony_ci       5 - the default behaviour given no quality suggestion.
145053a5a1b3Sopenharmony_ci
145153a5a1b3Sopenharmony_ci       0 - the worst still-image quality the codec designer thinks is
145253a5a1b3Sopenharmony_ci           still usable.
145353a5a1b3Sopenharmony_ci
145453a5a1b3Sopenharmony_ci       It is a media attribute, and is not dependent on charset.
145553a5a1b3Sopenharmony_ci
145653a5a1b3Sopenharmony_ci
145753a5a1b3Sopenharmony_ci
145853a5a1b3Sopenharmony_ciHandley & Jacobson          Standards Track                    [Page 26]
145953a5a1b3Sopenharmony_ci
146053a5a1b3Sopenharmony_ciRFC 2327                          SDP                         April 1998
146153a5a1b3Sopenharmony_ci
146253a5a1b3Sopenharmony_ci
146353a5a1b3Sopenharmony_ci   a=fmtp:<format> <format specific parameters>
146453a5a1b3Sopenharmony_ci       This attribute allows parameters that are specific to a
146553a5a1b3Sopenharmony_ci       particular format to be conveyed in a way that SDP doesn't have
146653a5a1b3Sopenharmony_ci       to understand them.  The format must be one of the formats
146753a5a1b3Sopenharmony_ci       specified for the media.  Format-specific parameters may be any
146853a5a1b3Sopenharmony_ci       set of parameters required to be conveyed by SDP and given
146953a5a1b3Sopenharmony_ci       unchanged to the media tool that will use this format.
147053a5a1b3Sopenharmony_ci
147153a5a1b3Sopenharmony_ci       It is a media attribute, and is not dependent on charset.
147253a5a1b3Sopenharmony_ci
147353a5a1b3Sopenharmony_ci6.1.  Communicating Conference Control Policy
147453a5a1b3Sopenharmony_ci
147553a5a1b3Sopenharmony_ci   There is some debate over the way conference control policy should be
147653a5a1b3Sopenharmony_ci   communicated.  In general, the authors believe that an implicit
147753a5a1b3Sopenharmony_ci   declarative style of specifying conference control is desirable where
147853a5a1b3Sopenharmony_ci   possible.
147953a5a1b3Sopenharmony_ci
148053a5a1b3Sopenharmony_ci   A simple declarative style uses a single conference attribute field
148153a5a1b3Sopenharmony_ci   before the first media field, possibly supplemented by properties
148253a5a1b3Sopenharmony_ci   such as `recvonly' for some of the media tools.  This conference
148353a5a1b3Sopenharmony_ci   attribute conveys the conference control policy. An example might be:
148453a5a1b3Sopenharmony_ci
148553a5a1b3Sopenharmony_ci                             a=type:moderated
148653a5a1b3Sopenharmony_ci
148753a5a1b3Sopenharmony_ci   In some cases, however, it is possible that this may be insufficient
148853a5a1b3Sopenharmony_ci   to communicate the details of an unusual conference control policy.
148953a5a1b3Sopenharmony_ci   If this is the case, then a conference attribute specifying external
149053a5a1b3Sopenharmony_ci   control might be set, and then one or more "media" fields might be
149153a5a1b3Sopenharmony_ci   used to specify the conference control tools and configuration data
149253a5a1b3Sopenharmony_ci   for those tools. An example is an ITU H.332 session:
149353a5a1b3Sopenharmony_ci
149453a5a1b3Sopenharmony_ci                c=IN IP4 224.5.6.7
149553a5a1b3Sopenharmony_ci                a=type:H332
149653a5a1b3Sopenharmony_ci                m=audio 49230 RTP/AVP 0
149753a5a1b3Sopenharmony_ci                m=video 49232 RTP/AVP 31
149853a5a1b3Sopenharmony_ci                m=application 12349 udp wb
149953a5a1b3Sopenharmony_ci                m=control 49234 H323 mc
150053a5a1b3Sopenharmony_ci                c=IN IP4 134.134.157.81
150153a5a1b3Sopenharmony_ci
150253a5a1b3Sopenharmony_ci   In this example, a general conference attribute (type:H332) is
150353a5a1b3Sopenharmony_ci   specified stating that conference control will be provided by an
150453a5a1b3Sopenharmony_ci   external H.332 tool, and a contact addresses for the H.323 session
150553a5a1b3Sopenharmony_ci   multipoint controller is given.
150653a5a1b3Sopenharmony_ci
150753a5a1b3Sopenharmony_ci   In this document, only the declarative style of conference control
150853a5a1b3Sopenharmony_ci   declaration is specified.  Other forms of conference control should
150953a5a1b3Sopenharmony_ci   specify an appropriate type attribute, and should define the
151053a5a1b3Sopenharmony_ci   implications this has for control media.
151153a5a1b3Sopenharmony_ci
151253a5a1b3Sopenharmony_ci
151353a5a1b3Sopenharmony_ci
151453a5a1b3Sopenharmony_ciHandley & Jacobson          Standards Track                    [Page 27]
151553a5a1b3Sopenharmony_ci
151653a5a1b3Sopenharmony_ciRFC 2327                          SDP                         April 1998
151753a5a1b3Sopenharmony_ci
151853a5a1b3Sopenharmony_ci
151953a5a1b3Sopenharmony_ci7.  Security Considerations
152053a5a1b3Sopenharmony_ci
152153a5a1b3Sopenharmony_ci   SDP is a session description format that describes multimedia
152253a5a1b3Sopenharmony_ci   sessions.  A session description should not be trusted unless it has
152353a5a1b3Sopenharmony_ci   been obtained by an authenticated transport protocol from a trusted
152453a5a1b3Sopenharmony_ci   source.  Many different transport protocols may be used to distribute
152553a5a1b3Sopenharmony_ci   session description, and the nature of the authentication will differ
152653a5a1b3Sopenharmony_ci   from transport to transport.
152753a5a1b3Sopenharmony_ci
152853a5a1b3Sopenharmony_ci   One transport that will frequently be used to distribute session
152953a5a1b3Sopenharmony_ci   descriptions is the Session Announcement Protocol (SAP).  SAP
153053a5a1b3Sopenharmony_ci   provides both encryption and authentication mechanisms but due to the
153153a5a1b3Sopenharmony_ci   nature of session announcements it is likely that there are many
153253a5a1b3Sopenharmony_ci   occasions where the originator of a session announcement cannot be
153353a5a1b3Sopenharmony_ci   authenticated because they are previously unknown to the receiver of
153453a5a1b3Sopenharmony_ci   the announcement and because no common public key infrastructure is
153553a5a1b3Sopenharmony_ci   available.
153653a5a1b3Sopenharmony_ci
153753a5a1b3Sopenharmony_ci   On receiving a session description over an unauthenticated transport
153853a5a1b3Sopenharmony_ci   mechanism or from an untrusted party, software parsing the session
153953a5a1b3Sopenharmony_ci   should take a few precautions. Session description contain
154053a5a1b3Sopenharmony_ci   information required to start software on the receivers system.
154153a5a1b3Sopenharmony_ci   Software that parses a session description MUST not be able to start
154253a5a1b3Sopenharmony_ci   other software except that which is specifically configured as
154353a5a1b3Sopenharmony_ci   appropriate software to participate in multimedia sessions.  It is
154453a5a1b3Sopenharmony_ci   normally considered INAPPROPRIATE for software parsing a session
154553a5a1b3Sopenharmony_ci   description to start, on a user's system, software that is
154653a5a1b3Sopenharmony_ci   appropriate to participate in multimedia sessions, without the user
154753a5a1b3Sopenharmony_ci   first being informed that such software will be started and giving
154853a5a1b3Sopenharmony_ci   their consent.  Thus a session description arriving by session
154953a5a1b3Sopenharmony_ci   announcement, email, session invitation, or WWW page SHOULD not
155053a5a1b3Sopenharmony_ci   deliver the user into an {it interactive} multimedia session without
155153a5a1b3Sopenharmony_ci   the user being aware that this will happen.  As it is not always
155253a5a1b3Sopenharmony_ci   simple to tell whether a session is interactive or not, applications
155353a5a1b3Sopenharmony_ci   that are unsure should assume sessions are interactive.
155453a5a1b3Sopenharmony_ci
155553a5a1b3Sopenharmony_ci   In this specification, there are no attributes which would allow the
155653a5a1b3Sopenharmony_ci   recipient of a session description to be informed to start multimedia
155753a5a1b3Sopenharmony_ci   tools in a mode where they default to transmitting.  Under some
155853a5a1b3Sopenharmony_ci   circumstances it might be appropriate to define such attributes.  If
155953a5a1b3Sopenharmony_ci   this is done an application parsing a session description containing
156053a5a1b3Sopenharmony_ci   such attributes SHOULD either ignore them, or inform the user that
156153a5a1b3Sopenharmony_ci   joining this session will result in the automatic transmission of
156253a5a1b3Sopenharmony_ci   multimedia data.  The default behaviour for an unknown attribute is
156353a5a1b3Sopenharmony_ci   to ignore it.
156453a5a1b3Sopenharmony_ci
156553a5a1b3Sopenharmony_ci
156653a5a1b3Sopenharmony_ci
156753a5a1b3Sopenharmony_ci
156853a5a1b3Sopenharmony_ci
156953a5a1b3Sopenharmony_ci
157053a5a1b3Sopenharmony_ciHandley & Jacobson          Standards Track                    [Page 28]
157153a5a1b3Sopenharmony_ci
157253a5a1b3Sopenharmony_ciRFC 2327                          SDP                         April 1998
157353a5a1b3Sopenharmony_ci
157453a5a1b3Sopenharmony_ci
157553a5a1b3Sopenharmony_ci   Session descriptions may be parsed at intermediate systems such as
157653a5a1b3Sopenharmony_ci   firewalls for the purposes of opening a hole in the firewall to allow
157753a5a1b3Sopenharmony_ci   the participation in multimedia sessions.  It is considered
157853a5a1b3Sopenharmony_ci   INAPPROPRIATE for a firewall to open such holes for unicast data
157953a5a1b3Sopenharmony_ci   streams unless the session description comes in a request from inside
158053a5a1b3Sopenharmony_ci   the firewall.
158153a5a1b3Sopenharmony_ci
158253a5a1b3Sopenharmony_ci   For multicast sessions, it is likely that local administrators will
158353a5a1b3Sopenharmony_ci   apply their own policies, but the exclusive use of "local" or "site-
158453a5a1b3Sopenharmony_ci   local" administrative scope within the firewall and the refusal of
158553a5a1b3Sopenharmony_ci   the firewall to open a hole for such scopes will provide separation
158653a5a1b3Sopenharmony_ci   of global multicast sessions from local ones.
158753a5a1b3Sopenharmony_ci
158853a5a1b3Sopenharmony_ci
158953a5a1b3Sopenharmony_ci
159053a5a1b3Sopenharmony_ci
159153a5a1b3Sopenharmony_ci
159253a5a1b3Sopenharmony_ci
159353a5a1b3Sopenharmony_ci
159453a5a1b3Sopenharmony_ci
159553a5a1b3Sopenharmony_ci
159653a5a1b3Sopenharmony_ci
159753a5a1b3Sopenharmony_ci
159853a5a1b3Sopenharmony_ci
159953a5a1b3Sopenharmony_ci
160053a5a1b3Sopenharmony_ci
160153a5a1b3Sopenharmony_ci
160253a5a1b3Sopenharmony_ci
160353a5a1b3Sopenharmony_ci
160453a5a1b3Sopenharmony_ci
160553a5a1b3Sopenharmony_ci
160653a5a1b3Sopenharmony_ci
160753a5a1b3Sopenharmony_ci
160853a5a1b3Sopenharmony_ci
160953a5a1b3Sopenharmony_ci
161053a5a1b3Sopenharmony_ci
161153a5a1b3Sopenharmony_ci
161253a5a1b3Sopenharmony_ci
161353a5a1b3Sopenharmony_ci
161453a5a1b3Sopenharmony_ci
161553a5a1b3Sopenharmony_ci
161653a5a1b3Sopenharmony_ci
161753a5a1b3Sopenharmony_ci
161853a5a1b3Sopenharmony_ci
161953a5a1b3Sopenharmony_ci
162053a5a1b3Sopenharmony_ci
162153a5a1b3Sopenharmony_ci
162253a5a1b3Sopenharmony_ci
162353a5a1b3Sopenharmony_ci
162453a5a1b3Sopenharmony_ci
162553a5a1b3Sopenharmony_ci
162653a5a1b3Sopenharmony_ciHandley & Jacobson          Standards Track                    [Page 29]
162753a5a1b3Sopenharmony_ci
162853a5a1b3Sopenharmony_ciRFC 2327                          SDP                         April 1998
162953a5a1b3Sopenharmony_ci
163053a5a1b3Sopenharmony_ci
163153a5a1b3Sopenharmony_ciAppendix A: SDP Grammar
163253a5a1b3Sopenharmony_ci
163353a5a1b3Sopenharmony_ci   This appendix provides an Augmented BNF grammar for SDP. ABNF is
163453a5a1b3Sopenharmony_ci   defined in RFC 2234.
163553a5a1b3Sopenharmony_ci
163653a5a1b3Sopenharmony_ci
163753a5a1b3Sopenharmony_ci   announcement =        proto-version
163853a5a1b3Sopenharmony_ci                         origin-field
163953a5a1b3Sopenharmony_ci                         session-name-field
164053a5a1b3Sopenharmony_ci                         information-field
164153a5a1b3Sopenharmony_ci                         uri-field
164253a5a1b3Sopenharmony_ci                         email-fields
164353a5a1b3Sopenharmony_ci                         phone-fields
164453a5a1b3Sopenharmony_ci                         connection-field
164553a5a1b3Sopenharmony_ci                         bandwidth-fields
164653a5a1b3Sopenharmony_ci                         time-fields
164753a5a1b3Sopenharmony_ci                         key-field
164853a5a1b3Sopenharmony_ci                         attribute-fields
164953a5a1b3Sopenharmony_ci                         media-descriptions
165053a5a1b3Sopenharmony_ci
165153a5a1b3Sopenharmony_ci   proto-version =       "v=" 1*DIGIT CRLF
165253a5a1b3Sopenharmony_ci                         ;this memo describes version 0
165353a5a1b3Sopenharmony_ci
165453a5a1b3Sopenharmony_ci   origin-field =        "o=" username space
165553a5a1b3Sopenharmony_ci                         sess-id space sess-version space
165653a5a1b3Sopenharmony_ci                         nettype space addrtype space
165753a5a1b3Sopenharmony_ci                         addr CRLF
165853a5a1b3Sopenharmony_ci
165953a5a1b3Sopenharmony_ci   session-name-field =  "s=" text CRLF
166053a5a1b3Sopenharmony_ci
166153a5a1b3Sopenharmony_ci   information-field =   ["i=" text CRLF]
166253a5a1b3Sopenharmony_ci
166353a5a1b3Sopenharmony_ci   uri-field =           ["u=" uri CRLF]
166453a5a1b3Sopenharmony_ci
166553a5a1b3Sopenharmony_ci   email-fields =        *("e=" email-address CRLF)
166653a5a1b3Sopenharmony_ci
166753a5a1b3Sopenharmony_ci   phone-fields =        *("p=" phone-number CRLF)
166853a5a1b3Sopenharmony_ci
166953a5a1b3Sopenharmony_ci
167053a5a1b3Sopenharmony_ci   connection-field =    ["c=" nettype space addrtype space
167153a5a1b3Sopenharmony_ci                         connection-address CRLF]
167253a5a1b3Sopenharmony_ci                         ;a connection field must be present
167353a5a1b3Sopenharmony_ci                         ;in every media description or at the
167453a5a1b3Sopenharmony_ci                         ;session-level
167553a5a1b3Sopenharmony_ci
167653a5a1b3Sopenharmony_ci
167753a5a1b3Sopenharmony_ci   bandwidth-fields =    *("b=" bwtype ":" bandwidth CRLF)
167853a5a1b3Sopenharmony_ci
167953a5a1b3Sopenharmony_ci
168053a5a1b3Sopenharmony_ci
168153a5a1b3Sopenharmony_ci
168253a5a1b3Sopenharmony_ciHandley & Jacobson          Standards Track                    [Page 30]
168353a5a1b3Sopenharmony_ci
168453a5a1b3Sopenharmony_ciRFC 2327                          SDP                         April 1998
168553a5a1b3Sopenharmony_ci
168653a5a1b3Sopenharmony_ci
168753a5a1b3Sopenharmony_ci   time-fields =         1*( "t=" start-time space stop-time
168853a5a1b3Sopenharmony_ci                         *(CRLF repeat-fields) CRLF)
168953a5a1b3Sopenharmony_ci                         [zone-adjustments CRLF]
169053a5a1b3Sopenharmony_ci
169153a5a1b3Sopenharmony_ci
169253a5a1b3Sopenharmony_ci   repeat-fields =       "r=" repeat-interval space typed-time
169353a5a1b3Sopenharmony_ci                         1*(space typed-time)
169453a5a1b3Sopenharmony_ci
169553a5a1b3Sopenharmony_ci
169653a5a1b3Sopenharmony_ci   zone-adjustments =    time space ["-"] typed-time
169753a5a1b3Sopenharmony_ci                         *(space time space ["-"] typed-time)
169853a5a1b3Sopenharmony_ci
169953a5a1b3Sopenharmony_ci
170053a5a1b3Sopenharmony_ci   key-field =           ["k=" key-type CRLF]
170153a5a1b3Sopenharmony_ci
170253a5a1b3Sopenharmony_ci
170353a5a1b3Sopenharmony_ci   key-type =            "prompt" |
170453a5a1b3Sopenharmony_ci                         "clear:" key-data |
170553a5a1b3Sopenharmony_ci                         "base64:" key-data |
170653a5a1b3Sopenharmony_ci                         "uri:" uri
170753a5a1b3Sopenharmony_ci
170853a5a1b3Sopenharmony_ci
170953a5a1b3Sopenharmony_ci   key-data =            email-safe | "~" | "
171053a5a1b3Sopenharmony_ci
171153a5a1b3Sopenharmony_ci
171253a5a1b3Sopenharmony_ci   attribute-fields =    *("a=" attribute CRLF)
171353a5a1b3Sopenharmony_ci
171453a5a1b3Sopenharmony_ci
171553a5a1b3Sopenharmony_ci   media-descriptions =  *( media-field
171653a5a1b3Sopenharmony_ci                         information-field
171753a5a1b3Sopenharmony_ci                         *(connection-field)
171853a5a1b3Sopenharmony_ci                         bandwidth-fields
171953a5a1b3Sopenharmony_ci                         key-field
172053a5a1b3Sopenharmony_ci                         attribute-fields )
172153a5a1b3Sopenharmony_ci
172253a5a1b3Sopenharmony_ci
172353a5a1b3Sopenharmony_ci   media-field =         "m=" media space port ["/" integer]
172453a5a1b3Sopenharmony_ci                         space proto 1*(space fmt) CRLF
172553a5a1b3Sopenharmony_ci
172653a5a1b3Sopenharmony_ci
172753a5a1b3Sopenharmony_ci   media =               1*(alpha-numeric)
172853a5a1b3Sopenharmony_ci                         ;typically "audio", "video", "application"
172953a5a1b3Sopenharmony_ci                         ;or "data"
173053a5a1b3Sopenharmony_ci
173153a5a1b3Sopenharmony_ci   fmt =                 1*(alpha-numeric)
173253a5a1b3Sopenharmony_ci                         ;typically an RTP payload type for audio
173353a5a1b3Sopenharmony_ci                         ;and video media
173453a5a1b3Sopenharmony_ci
173553a5a1b3Sopenharmony_ci
173653a5a1b3Sopenharmony_ci
173753a5a1b3Sopenharmony_ci
173853a5a1b3Sopenharmony_ciHandley & Jacobson          Standards Track                    [Page 31]
173953a5a1b3Sopenharmony_ci
174053a5a1b3Sopenharmony_ciRFC 2327                          SDP                         April 1998
174153a5a1b3Sopenharmony_ci
174253a5a1b3Sopenharmony_ci
174353a5a1b3Sopenharmony_ci   proto =               1*(alpha-numeric)
174453a5a1b3Sopenharmony_ci                         ;typically "RTP/AVP" or "udp" for IP4
174553a5a1b3Sopenharmony_ci
174653a5a1b3Sopenharmony_ci
174753a5a1b3Sopenharmony_ci   port =                1*(DIGIT)
174853a5a1b3Sopenharmony_ci                         ;should in the range "1024" to "65535" inclusive
174953a5a1b3Sopenharmony_ci                         ;for UDP based media
175053a5a1b3Sopenharmony_ci
175153a5a1b3Sopenharmony_ci
175253a5a1b3Sopenharmony_ci   attribute =           (att-field ":" att-value) | att-field
175353a5a1b3Sopenharmony_ci
175453a5a1b3Sopenharmony_ci
175553a5a1b3Sopenharmony_ci   att-field =           1*(alpha-numeric)
175653a5a1b3Sopenharmony_ci
175753a5a1b3Sopenharmony_ci
175853a5a1b3Sopenharmony_ci   att-value =           byte-string
175953a5a1b3Sopenharmony_ci
176053a5a1b3Sopenharmony_ci
176153a5a1b3Sopenharmony_ci   sess-id =             1*(DIGIT)
176253a5a1b3Sopenharmony_ci                         ;should be unique for this originating username/host
176353a5a1b3Sopenharmony_ci
176453a5a1b3Sopenharmony_ci
176553a5a1b3Sopenharmony_ci   sess-version =        1*(DIGIT)
176653a5a1b3Sopenharmony_ci                         ;0 is a new session
176753a5a1b3Sopenharmony_ci
176853a5a1b3Sopenharmony_ci
176953a5a1b3Sopenharmony_ci   connection-address =  multicast-address
177053a5a1b3Sopenharmony_ci                         | addr
177153a5a1b3Sopenharmony_ci
177253a5a1b3Sopenharmony_ci
177353a5a1b3Sopenharmony_ci   multicast-address =   3*(decimal-uchar ".") decimal-uchar "/" ttl
177453a5a1b3Sopenharmony_ci                         [ "/" integer ]
177553a5a1b3Sopenharmony_ci                         ;multicast addresses may be in the range
177653a5a1b3Sopenharmony_ci                         ;224.0.0.0 to 239.255.255.255
177753a5a1b3Sopenharmony_ci
177853a5a1b3Sopenharmony_ci   ttl =                 decimal-uchar
177953a5a1b3Sopenharmony_ci
178053a5a1b3Sopenharmony_ci   start-time =          time | "0"
178153a5a1b3Sopenharmony_ci
178253a5a1b3Sopenharmony_ci   stop-time =           time | "0"
178353a5a1b3Sopenharmony_ci
178453a5a1b3Sopenharmony_ci   time =                POS-DIGIT 9*(DIGIT)
178553a5a1b3Sopenharmony_ci                         ;sufficient for 2 more centuries
178653a5a1b3Sopenharmony_ci
178753a5a1b3Sopenharmony_ci
178853a5a1b3Sopenharmony_ci   repeat-interval =     typed-time
178953a5a1b3Sopenharmony_ci
179053a5a1b3Sopenharmony_ci
179153a5a1b3Sopenharmony_ci
179253a5a1b3Sopenharmony_ci
179353a5a1b3Sopenharmony_ci
179453a5a1b3Sopenharmony_ciHandley & Jacobson          Standards Track                    [Page 32]
179553a5a1b3Sopenharmony_ci
179653a5a1b3Sopenharmony_ciRFC 2327                          SDP                         April 1998
179753a5a1b3Sopenharmony_ci
179853a5a1b3Sopenharmony_ci
179953a5a1b3Sopenharmony_ci   typed-time =          1*(DIGIT) [fixed-len-time-unit]
180053a5a1b3Sopenharmony_ci
180153a5a1b3Sopenharmony_ci
180253a5a1b3Sopenharmony_ci   fixed-len-time-unit = "d" | "h" | "m" | "s"
180353a5a1b3Sopenharmony_ci
180453a5a1b3Sopenharmony_ci
180553a5a1b3Sopenharmony_ci   bwtype =              1*(alpha-numeric)
180653a5a1b3Sopenharmony_ci
180753a5a1b3Sopenharmony_ci   bandwidth =           1*(DIGIT)
180853a5a1b3Sopenharmony_ci
180953a5a1b3Sopenharmony_ci
181053a5a1b3Sopenharmony_ci   username =            safe
181153a5a1b3Sopenharmony_ci                         ;pretty wide definition, but doesn't include space
181253a5a1b3Sopenharmony_ci
181353a5a1b3Sopenharmony_ci
181453a5a1b3Sopenharmony_ci   email-address =       email | email "(" email-safe ")" |
181553a5a1b3Sopenharmony_ci                         email-safe "<" email ">"
181653a5a1b3Sopenharmony_ci
181753a5a1b3Sopenharmony_ci
181853a5a1b3Sopenharmony_ci   email =               ;defined in RFC822
181953a5a1b3Sopenharmony_ci
182053a5a1b3Sopenharmony_ci
182153a5a1b3Sopenharmony_ci   uri=                  ;defined in RFC1630
182253a5a1b3Sopenharmony_ci
182353a5a1b3Sopenharmony_ci
182453a5a1b3Sopenharmony_ci   phone-number =        phone | phone "(" email-safe ")" |
182553a5a1b3Sopenharmony_ci                         email-safe "<" phone ">"
182653a5a1b3Sopenharmony_ci
182753a5a1b3Sopenharmony_ci
182853a5a1b3Sopenharmony_ci   phone =               "+" POS-DIGIT 1*(space | "-" | DIGIT)
182953a5a1b3Sopenharmony_ci                         ;there must be a space or hyphen between the
183053a5a1b3Sopenharmony_ci                         ;international code and the rest of the number.
183153a5a1b3Sopenharmony_ci
183253a5a1b3Sopenharmony_ci
183353a5a1b3Sopenharmony_ci   nettype =             "IN"
183453a5a1b3Sopenharmony_ci                         ;list to be extended
183553a5a1b3Sopenharmony_ci
183653a5a1b3Sopenharmony_ci
183753a5a1b3Sopenharmony_ci   addrtype =            "IP4" | "IP6"
183853a5a1b3Sopenharmony_ci                         ;list to be extended
183953a5a1b3Sopenharmony_ci
184053a5a1b3Sopenharmony_ci
184153a5a1b3Sopenharmony_ci   addr =                FQDN | unicast-address
184253a5a1b3Sopenharmony_ci
184353a5a1b3Sopenharmony_ci
184453a5a1b3Sopenharmony_ci   FQDN =                4*(alpha-numeric|"-"|".")
184553a5a1b3Sopenharmony_ci                         ;fully qualified domain name as specified in RFC1035
184653a5a1b3Sopenharmony_ci
184753a5a1b3Sopenharmony_ci
184853a5a1b3Sopenharmony_ci
184953a5a1b3Sopenharmony_ci
185053a5a1b3Sopenharmony_ciHandley & Jacobson          Standards Track                    [Page 33]
185153a5a1b3Sopenharmony_ci
185253a5a1b3Sopenharmony_ciRFC 2327                          SDP                         April 1998
185353a5a1b3Sopenharmony_ci
185453a5a1b3Sopenharmony_ci
185553a5a1b3Sopenharmony_ci   unicast-address =     IP4-address | IP6-address
185653a5a1b3Sopenharmony_ci
185753a5a1b3Sopenharmony_ci
185853a5a1b3Sopenharmony_ci   IP4-address =         b1 "." decimal-uchar "." decimal-uchar "." b4
185953a5a1b3Sopenharmony_ci   b1 =                  decimal-uchar
186053a5a1b3Sopenharmony_ci                         ;less than "224"; not "0" or "127"
186153a5a1b3Sopenharmony_ci   b4 =                  decimal-uchar
186253a5a1b3Sopenharmony_ci                         ;not "0"
186353a5a1b3Sopenharmony_ci
186453a5a1b3Sopenharmony_ci   IP6-address =         ;to be defined
186553a5a1b3Sopenharmony_ci
186653a5a1b3Sopenharmony_ci
186753a5a1b3Sopenharmony_ci   text =                byte-string
186853a5a1b3Sopenharmony_ci                         ;default is to interpret this as IS0-10646 UTF8
186953a5a1b3Sopenharmony_ci                         ;ISO 8859-1 requires a "a=charset:ISO-8859-1"
187053a5a1b3Sopenharmony_ci                         ;session-level attribute to be used
187153a5a1b3Sopenharmony_ci
187253a5a1b3Sopenharmony_ci
187353a5a1b3Sopenharmony_ci   byte-string =         1*(0x01..0x09|0x0b|0x0c|0x0e..0xff)
187453a5a1b3Sopenharmony_ci                         ;any byte except NUL, CR or LF
187553a5a1b3Sopenharmony_ci
187653a5a1b3Sopenharmony_ci
187753a5a1b3Sopenharmony_ci   decimal-uchar =       DIGIT
187853a5a1b3Sopenharmony_ci                         | POS-DIGIT DIGIT
187953a5a1b3Sopenharmony_ci                         | ("1" 2*(DIGIT))
188053a5a1b3Sopenharmony_ci                         | ("2" ("0"|"1"|"2"|"3"|"4") DIGIT)
188153a5a1b3Sopenharmony_ci                         | ("2" "5" ("0"|"1"|"2"|"3"|"4"|"5"))
188253a5a1b3Sopenharmony_ci
188353a5a1b3Sopenharmony_ci
188453a5a1b3Sopenharmony_ci   integer =             POS-DIGIT *(DIGIT)
188553a5a1b3Sopenharmony_ci
188653a5a1b3Sopenharmony_ci
188753a5a1b3Sopenharmony_ci   alpha-numeric =       ALPHA | DIGIT
188853a5a1b3Sopenharmony_ci
188953a5a1b3Sopenharmony_ci
189053a5a1b3Sopenharmony_ci   DIGIT =               "0" | POS-DIGIT
189153a5a1b3Sopenharmony_ci
189253a5a1b3Sopenharmony_ci
189353a5a1b3Sopenharmony_ci   POS-DIGIT =           "1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9"
189453a5a1b3Sopenharmony_ci
189553a5a1b3Sopenharmony_ci
189653a5a1b3Sopenharmony_ci   ALPHA =               "a"|"b"|"c"|"d"|"e"|"f"|"g"|"h"|"i"|"j"|"k"|
189753a5a1b3Sopenharmony_ci                         "l"|"m"|"n"|"o "|"p"|"q"|"r"|"s"|"t"|"u"|"v"|
189853a5a1b3Sopenharmony_ci                         "w"|"x"|"y"|"z"|"A"|"B"|"C "|"D"|"E"|"F"|"G"|
189953a5a1b3Sopenharmony_ci                         "H"|"I"|"J"|"K"|"L"|"M"|"N"|"O"|"P"|" Q"|"R"|
190053a5a1b3Sopenharmony_ci                         "S"|"T"|"U"|"V"|"W"|"X"|"Y"|"Z"
190153a5a1b3Sopenharmony_ci
190253a5a1b3Sopenharmony_ci
190353a5a1b3Sopenharmony_ci
190453a5a1b3Sopenharmony_ci
190553a5a1b3Sopenharmony_ci
190653a5a1b3Sopenharmony_ciHandley & Jacobson          Standards Track                    [Page 34]
190753a5a1b3Sopenharmony_ci
190853a5a1b3Sopenharmony_ciRFC 2327                          SDP                         April 1998
190953a5a1b3Sopenharmony_ci
191053a5a1b3Sopenharmony_ci
191153a5a1b3Sopenharmony_ci   email-safe =          safe | space | tab
191253a5a1b3Sopenharmony_ci
191353a5a1b3Sopenharmony_ci
191453a5a1b3Sopenharmony_ci   safe =                alpha-numeric |
191553a5a1b3Sopenharmony_ci                         "'" | "'" | "-" | "." | "/" | ":" | "?" | """ |
191653a5a1b3Sopenharmony_ci                         "#" | "$" | "&" | "*" | ";" | "=" | "@" | "[" |
191753a5a1b3Sopenharmony_ci                         "]" | "^" | "_" | "`" | "{" | "|" | "}" | "+" |
191853a5a1b3Sopenharmony_ci                         "~" | "
191953a5a1b3Sopenharmony_ci
192053a5a1b3Sopenharmony_ci
192153a5a1b3Sopenharmony_ci   space =               %d32
192253a5a1b3Sopenharmony_ci   tab =                 %d9
192353a5a1b3Sopenharmony_ci   CRLF =                %d13.10
192453a5a1b3Sopenharmony_ci
192553a5a1b3Sopenharmony_ci
192653a5a1b3Sopenharmony_ci
192753a5a1b3Sopenharmony_ci
192853a5a1b3Sopenharmony_ci
192953a5a1b3Sopenharmony_ci
193053a5a1b3Sopenharmony_ci
193153a5a1b3Sopenharmony_ci
193253a5a1b3Sopenharmony_ci
193353a5a1b3Sopenharmony_ci
193453a5a1b3Sopenharmony_ci
193553a5a1b3Sopenharmony_ci
193653a5a1b3Sopenharmony_ci
193753a5a1b3Sopenharmony_ci
193853a5a1b3Sopenharmony_ci
193953a5a1b3Sopenharmony_ci
194053a5a1b3Sopenharmony_ci
194153a5a1b3Sopenharmony_ci
194253a5a1b3Sopenharmony_ci
194353a5a1b3Sopenharmony_ci
194453a5a1b3Sopenharmony_ci
194553a5a1b3Sopenharmony_ci
194653a5a1b3Sopenharmony_ci
194753a5a1b3Sopenharmony_ci
194853a5a1b3Sopenharmony_ci
194953a5a1b3Sopenharmony_ci
195053a5a1b3Sopenharmony_ci
195153a5a1b3Sopenharmony_ci
195253a5a1b3Sopenharmony_ci
195353a5a1b3Sopenharmony_ci
195453a5a1b3Sopenharmony_ci
195553a5a1b3Sopenharmony_ci
195653a5a1b3Sopenharmony_ci
195753a5a1b3Sopenharmony_ci
195853a5a1b3Sopenharmony_ci
195953a5a1b3Sopenharmony_ci
196053a5a1b3Sopenharmony_ci
196153a5a1b3Sopenharmony_ci
196253a5a1b3Sopenharmony_ciHandley & Jacobson          Standards Track                    [Page 35]
196353a5a1b3Sopenharmony_ci
196453a5a1b3Sopenharmony_ciRFC 2327                          SDP                         April 1998
196553a5a1b3Sopenharmony_ci
196653a5a1b3Sopenharmony_ci
196753a5a1b3Sopenharmony_ciAppendix B: Guidelines for registering SDP names with IANA
196853a5a1b3Sopenharmony_ci
196953a5a1b3Sopenharmony_ci   There are seven field names that may be registered with IANA. Using
197053a5a1b3Sopenharmony_ci   the terminology in the SDP specification BNF, they are "media",
197153a5a1b3Sopenharmony_ci   "proto", "fmt", "att-field", "bwtype", "nettype" and "addrtype".
197253a5a1b3Sopenharmony_ci
197353a5a1b3Sopenharmony_ci   "media" (eg, audio, video, application, data).
197453a5a1b3Sopenharmony_ci
197553a5a1b3Sopenharmony_ci       Packetized media types, such as those used by RTP, share the
197653a5a1b3Sopenharmony_ci       namespace used by media types registry [RFC 2048] (i.e. "MIME
197753a5a1b3Sopenharmony_ci       types").  The list of valid media names is the set of top-level
197853a5a1b3Sopenharmony_ci       MIME content types.  The set of media is intended to be small and
197953a5a1b3Sopenharmony_ci       not to be extended except under rare circumstances.  (The MIME
198053a5a1b3Sopenharmony_ci       subtype corresponds to the "fmt" parameter below).
198153a5a1b3Sopenharmony_ci
198253a5a1b3Sopenharmony_ci   "proto"
198353a5a1b3Sopenharmony_ci
198453a5a1b3Sopenharmony_ci       In general this should be an IETF standards-track transport
198553a5a1b3Sopenharmony_ci       protocol identifier such as RTP/AVP (rfc 1889 under the rfc 1890
198653a5a1b3Sopenharmony_ci       profile).
198753a5a1b3Sopenharmony_ci
198853a5a1b3Sopenharmony_ci       However, people will want to invent their own proprietary
198953a5a1b3Sopenharmony_ci       transport protocols.  Some of these should be registered as a
199053a5a1b3Sopenharmony_ci       "fmt" using "udp" as the protocol and some of which probably
199153a5a1b3Sopenharmony_ci       can't be.
199253a5a1b3Sopenharmony_ci
199353a5a1b3Sopenharmony_ci       Where the protocol and the application are intimately linked,
199453a5a1b3Sopenharmony_ci       such as with the LBL whiteboard wb which used a proprietary and
199553a5a1b3Sopenharmony_ci       special purpose protocol over UDP, the protocol name should be
199653a5a1b3Sopenharmony_ci       "udp" and the format name that should be registered is "wb".  The
199753a5a1b3Sopenharmony_ci       rules for formats (see below) apply to such registrations.
199853a5a1b3Sopenharmony_ci
199953a5a1b3Sopenharmony_ci       Where the proprietary transport protocol really carries many
200053a5a1b3Sopenharmony_ci       different data formats, it is possible to register a new protocol
200153a5a1b3Sopenharmony_ci       name with IANA. In such a case, an RFC MUST be produced
200253a5a1b3Sopenharmony_ci       describing the protocol and referenced in the registration.  Such
200353a5a1b3Sopenharmony_ci       an RFC MAY be informational, although it is preferable if it is
200453a5a1b3Sopenharmony_ci       standards-track.
200553a5a1b3Sopenharmony_ci
200653a5a1b3Sopenharmony_ci   "fmt"
200753a5a1b3Sopenharmony_ci
200853a5a1b3Sopenharmony_ci       The format namespace is dependent on the context of the "proto"
200953a5a1b3Sopenharmony_ci       field, so a format cannot be registered without specifying one or
201053a5a1b3Sopenharmony_ci       more transport protocols that it applies to.
201153a5a1b3Sopenharmony_ci
201253a5a1b3Sopenharmony_ci       Formats cover all the possible encodings that might want to be
201353a5a1b3Sopenharmony_ci       transported in a multimedia session.
201453a5a1b3Sopenharmony_ci
201553a5a1b3Sopenharmony_ci
201653a5a1b3Sopenharmony_ci
201753a5a1b3Sopenharmony_ci
201853a5a1b3Sopenharmony_ciHandley & Jacobson          Standards Track                    [Page 36]
201953a5a1b3Sopenharmony_ci
202053a5a1b3Sopenharmony_ciRFC 2327                          SDP                         April 1998
202153a5a1b3Sopenharmony_ci
202253a5a1b3Sopenharmony_ci
202353a5a1b3Sopenharmony_ci       For RTP formats that have been assigned static payload types, the
202453a5a1b3Sopenharmony_ci       payload type number is used.  For RTP formats using a dynamic
202553a5a1b3Sopenharmony_ci       payload type number, the dynamic payload type number is given as
202653a5a1b3Sopenharmony_ci       the format and an additional "rtpmap" attribute specifies the
202753a5a1b3Sopenharmony_ci       format and parameters.
202853a5a1b3Sopenharmony_ci
202953a5a1b3Sopenharmony_ci       For non-RTP formats, any unregistered format name may be
203053a5a1b3Sopenharmony_ci       registered through the MIME-type registration process [RFC 2048].
203153a5a1b3Sopenharmony_ci       The type given here is the MIME subtype only (the top-level MIME
203253a5a1b3Sopenharmony_ci       content type is specified by the media parameter).  The MIME type
203353a5a1b3Sopenharmony_ci       registration SHOULD reference a standards-track RFC which
203453a5a1b3Sopenharmony_ci       describes the transport protocol for this media type.  If there
203553a5a1b3Sopenharmony_ci       is an existing MIME type for this format, the MIME registration
203653a5a1b3Sopenharmony_ci       should be augmented to reference the transport specification for
203753a5a1b3Sopenharmony_ci       this media type.  If there is not an existing MIME type for this
203853a5a1b3Sopenharmony_ci       format, and there exists no appropriate file format, this should
203953a5a1b3Sopenharmony_ci       be noted in the encoding considerations as "no appropriate file
204053a5a1b3Sopenharmony_ci       format".
204153a5a1b3Sopenharmony_ci
204253a5a1b3Sopenharmony_ci   "att-field" (Attribute names)
204353a5a1b3Sopenharmony_ci
204453a5a1b3Sopenharmony_ci       Attribute field names MAY be registered with IANA, although this
204553a5a1b3Sopenharmony_ci       is not compulsory, and unknown attributes are simply ignored.
204653a5a1b3Sopenharmony_ci
204753a5a1b3Sopenharmony_ci       When an attribute is registered, it must be accompanied by a
204853a5a1b3Sopenharmony_ci       brief specification stating the following:
204953a5a1b3Sopenharmony_ci
205053a5a1b3Sopenharmony_ci       o contact name, email address and telephone number
205153a5a1b3Sopenharmony_ci
205253a5a1b3Sopenharmony_ci       o attribute-name (as it will appear in SDP)
205353a5a1b3Sopenharmony_ci
205453a5a1b3Sopenharmony_ci       o long-form attribute name in English
205553a5a1b3Sopenharmony_ci
205653a5a1b3Sopenharmony_ci       o type of attribute (session level, media level, or both)
205753a5a1b3Sopenharmony_ci
205853a5a1b3Sopenharmony_ci       o whether the attribute value is subject to the charset
205953a5a1b3Sopenharmony_ci       attribute.
206053a5a1b3Sopenharmony_ci
206153a5a1b3Sopenharmony_ci       o a one paragraph explanation of the purpose of the attribute.
206253a5a1b3Sopenharmony_ci
206353a5a1b3Sopenharmony_ci       o a specification of appropriate attribute values for this
206453a5a1b3Sopenharmony_ci         attribute.
206553a5a1b3Sopenharmony_ci
206653a5a1b3Sopenharmony_ci       IANA will not sanity check such attribute registrations except to
206753a5a1b3Sopenharmony_ci       ensure that they do not clash with existing registrations.
206853a5a1b3Sopenharmony_ci
206953a5a1b3Sopenharmony_ci
207053a5a1b3Sopenharmony_ci
207153a5a1b3Sopenharmony_ci
207253a5a1b3Sopenharmony_ci
207353a5a1b3Sopenharmony_ci
207453a5a1b3Sopenharmony_ciHandley & Jacobson          Standards Track                    [Page 37]
207553a5a1b3Sopenharmony_ci
207653a5a1b3Sopenharmony_ciRFC 2327                          SDP                         April 1998
207753a5a1b3Sopenharmony_ci
207853a5a1b3Sopenharmony_ci
207953a5a1b3Sopenharmony_ci       Although the above is the minimum that IANA will accept, if the
208053a5a1b3Sopenharmony_ci       attribute is expected to see widespread use and interoperability
208153a5a1b3Sopenharmony_ci       is an issue, authors are encouraged to produce a standards-track
208253a5a1b3Sopenharmony_ci       RFC that specifies the attribute more precisely.
208353a5a1b3Sopenharmony_ci
208453a5a1b3Sopenharmony_ci       Submitters of registrations should ensure that the specification
208553a5a1b3Sopenharmony_ci       is in the spirit of SDP attributes, most notably that the
208653a5a1b3Sopenharmony_ci       attribute is platform independent in the sense that it makes no
208753a5a1b3Sopenharmony_ci       implicit assumptions about operating systems and does not name
208853a5a1b3Sopenharmony_ci       specific pieces of software in a manner that might inhibit
208953a5a1b3Sopenharmony_ci       interoperability.
209053a5a1b3Sopenharmony_ci
209153a5a1b3Sopenharmony_ci   "bwtype" (bandwidth specifiers)
209253a5a1b3Sopenharmony_ci
209353a5a1b3Sopenharmony_ci       A proliferation of bandwidth specifiers is strongly discouraged.
209453a5a1b3Sopenharmony_ci
209553a5a1b3Sopenharmony_ci       New bandwidth specifiers may be registered with IANA.  The
209653a5a1b3Sopenharmony_ci       submission MUST reference a standards-track RFC specifying the
209753a5a1b3Sopenharmony_ci       semantics of the bandwidth specifier precisely, and indicating
209853a5a1b3Sopenharmony_ci       when it should be used, and why the existing registered bandwidth
209953a5a1b3Sopenharmony_ci       specifiers do not suffice.
210053a5a1b3Sopenharmony_ci
210153a5a1b3Sopenharmony_ci   "nettype" (Network Type)
210253a5a1b3Sopenharmony_ci
210353a5a1b3Sopenharmony_ci       New network types may be registered with IANA if SDP needs to be
210453a5a1b3Sopenharmony_ci       used in the context of non-internet environments. Whilst these
210553a5a1b3Sopenharmony_ci       are not normally the preserve of IANA, there may be circumstances
210653a5a1b3Sopenharmony_ci       when an Internet application needs to interoperate with a non-
210753a5a1b3Sopenharmony_ci       internet application, such as when gatewaying an internet
210853a5a1b3Sopenharmony_ci       telephony call into the PSTN.  The number of network types should
210953a5a1b3Sopenharmony_ci       be small and should be rarely extended.  A new network type
211053a5a1b3Sopenharmony_ci       cannot be registered without registering at least one address
211153a5a1b3Sopenharmony_ci       type to be used with that network type.  A new network type
211253a5a1b3Sopenharmony_ci       registration MUST reference an RFC which gives details of the
211353a5a1b3Sopenharmony_ci       network type and address type and specifies how and when they
211453a5a1b3Sopenharmony_ci       would be used.  Such an RFC MAY be Informational.
211553a5a1b3Sopenharmony_ci
211653a5a1b3Sopenharmony_ci   "addrtype" (Address Type)
211753a5a1b3Sopenharmony_ci
211853a5a1b3Sopenharmony_ci       New address types may be registered with IANA.  An address type
211953a5a1b3Sopenharmony_ci       is only meaningful in the context of a network type, and any
212053a5a1b3Sopenharmony_ci       registration of an address type MUST specify a registered network
212153a5a1b3Sopenharmony_ci       type, or be submitted along with a network type registration.  A
212253a5a1b3Sopenharmony_ci       new address type registration MUST reference an RFC giving
212353a5a1b3Sopenharmony_ci       details of the syntax of the address type.  Such an RFC MAY be
212453a5a1b3Sopenharmony_ci       Informational.  Address types are not expected to be registered
212553a5a1b3Sopenharmony_ci       frequently.
212653a5a1b3Sopenharmony_ci
212753a5a1b3Sopenharmony_ci
212853a5a1b3Sopenharmony_ci
212953a5a1b3Sopenharmony_ci
213053a5a1b3Sopenharmony_ciHandley & Jacobson          Standards Track                    [Page 38]
213153a5a1b3Sopenharmony_ci
213253a5a1b3Sopenharmony_ciRFC 2327                          SDP                         April 1998
213353a5a1b3Sopenharmony_ci
213453a5a1b3Sopenharmony_ci
213553a5a1b3Sopenharmony_ci   Registration Procedure
213653a5a1b3Sopenharmony_ci
213753a5a1b3Sopenharmony_ci   To register a name the above guidelines should be followed regarding
213853a5a1b3Sopenharmony_ci   the required  level  of  documentation  that  is required.  The
213953a5a1b3Sopenharmony_ci   registration itself should be sent to IANA.  Attribute registrations
214053a5a1b3Sopenharmony_ci   should  include the  information  given  above.   Other registrations
214153a5a1b3Sopenharmony_ci   should include the following additional information:
214253a5a1b3Sopenharmony_ci
214353a5a1b3Sopenharmony_ci   o contact name, email address and telephone number
214453a5a1b3Sopenharmony_ci
214553a5a1b3Sopenharmony_ci   o name being registered (as it will appear in SDP)
214653a5a1b3Sopenharmony_ci
214753a5a1b3Sopenharmony_ci   o long-form name in English
214853a5a1b3Sopenharmony_ci
214953a5a1b3Sopenharmony_ci   o type of name ("media", "proto", "fmt", "bwtype", "nettype", or
215053a5a1b3Sopenharmony_ci     "addrtype")
215153a5a1b3Sopenharmony_ci
215253a5a1b3Sopenharmony_ci   o a one paragraph explanation of the purpose of the registered name.
215353a5a1b3Sopenharmony_ci
215453a5a1b3Sopenharmony_ci   o a reference to the specification (eg RFC number) of the registered
215553a5a1b3Sopenharmony_ci     name.
215653a5a1b3Sopenharmony_ci
215753a5a1b3Sopenharmony_ci   IANA may refer any registration to the IESG or to any appropriate
215853a5a1b3Sopenharmony_ci   IETF working group for review, and may request revisions to be made
215953a5a1b3Sopenharmony_ci   before a registration will be made.
216053a5a1b3Sopenharmony_ci
216153a5a1b3Sopenharmony_ci
216253a5a1b3Sopenharmony_ci
216353a5a1b3Sopenharmony_ci
216453a5a1b3Sopenharmony_ci
216553a5a1b3Sopenharmony_ci
216653a5a1b3Sopenharmony_ci
216753a5a1b3Sopenharmony_ci
216853a5a1b3Sopenharmony_ci
216953a5a1b3Sopenharmony_ci
217053a5a1b3Sopenharmony_ci
217153a5a1b3Sopenharmony_ci
217253a5a1b3Sopenharmony_ci
217353a5a1b3Sopenharmony_ci
217453a5a1b3Sopenharmony_ci
217553a5a1b3Sopenharmony_ci
217653a5a1b3Sopenharmony_ci
217753a5a1b3Sopenharmony_ci
217853a5a1b3Sopenharmony_ci
217953a5a1b3Sopenharmony_ci
218053a5a1b3Sopenharmony_ci
218153a5a1b3Sopenharmony_ci
218253a5a1b3Sopenharmony_ci
218353a5a1b3Sopenharmony_ci
218453a5a1b3Sopenharmony_ci
218553a5a1b3Sopenharmony_ci
218653a5a1b3Sopenharmony_ciHandley & Jacobson          Standards Track                    [Page 39]
218753a5a1b3Sopenharmony_ci
218853a5a1b3Sopenharmony_ciRFC 2327                          SDP                         April 1998
218953a5a1b3Sopenharmony_ci
219053a5a1b3Sopenharmony_ci
219153a5a1b3Sopenharmony_ciAppendix C: Authors' Addresses
219253a5a1b3Sopenharmony_ci
219353a5a1b3Sopenharmony_ci   Mark Handley
219453a5a1b3Sopenharmony_ci   Information Sciences Institute
219553a5a1b3Sopenharmony_ci   c/o MIT Laboratory for Computer Science
219653a5a1b3Sopenharmony_ci   545 Technology Square
219753a5a1b3Sopenharmony_ci   Cambridge, MA 02139
219853a5a1b3Sopenharmony_ci   United States
219953a5a1b3Sopenharmony_ci   electronic mail: mjh@isi.edu
220053a5a1b3Sopenharmony_ci
220153a5a1b3Sopenharmony_ci   Van Jacobson
220253a5a1b3Sopenharmony_ci   MS 46a-1121
220353a5a1b3Sopenharmony_ci   Lawrence Berkeley Laboratory
220453a5a1b3Sopenharmony_ci   Berkeley, CA 94720
220553a5a1b3Sopenharmony_ci   United States
220653a5a1b3Sopenharmony_ci   electronic mail: van@ee.lbl.gov
220753a5a1b3Sopenharmony_ci
220853a5a1b3Sopenharmony_ciAcknowledgments
220953a5a1b3Sopenharmony_ci
221053a5a1b3Sopenharmony_ci   Many people in the IETF MMUSIC working group have made comments and
221153a5a1b3Sopenharmony_ci   suggestions contributing to this document.  In particular, we would
221253a5a1b3Sopenharmony_ci   like to thank Eve Schooler, Steve Casner, Bill Fenner, Allison
221353a5a1b3Sopenharmony_ci   Mankin, Ross Finlayson, Peter Parnes, Joerg Ott, Carsten Bormann, Rob
221453a5a1b3Sopenharmony_ci   Lanphier and Steve Hanna.
221553a5a1b3Sopenharmony_ci
221653a5a1b3Sopenharmony_ciReferences
221753a5a1b3Sopenharmony_ci
221853a5a1b3Sopenharmony_ci   [1] Mills, D., "Network Time Protocol (version 3) specification and
221953a5a1b3Sopenharmony_ci   implementation", RFC 1305, March 1992.
222053a5a1b3Sopenharmony_ci
222153a5a1b3Sopenharmony_ci   [2] Schulzrinne, H., Casner, S., Frederick, R. and V. Jacobson, "RTP:
222253a5a1b3Sopenharmony_ci   A Transport Protocol for Real-Time Applications", RFC 1889, January
222353a5a1b3Sopenharmony_ci   1996.
222453a5a1b3Sopenharmony_ci
222553a5a1b3Sopenharmony_ci   [3] Schulzrinne, H., "RTP Profile for Audio and Video Conferences
222653a5a1b3Sopenharmony_ci   with Minimal Control", RFC 1890, January 1996
222753a5a1b3Sopenharmony_ci
222853a5a1b3Sopenharmony_ci   [4] Handley, M., "SAP - Session Announcement Protocol", Work in
222953a5a1b3Sopenharmony_ci   Progress.
223053a5a1b3Sopenharmony_ci
223153a5a1b3Sopenharmony_ci   [5] V. Jacobson, S. McCanne, "vat - X11-based audio teleconferencing
223253a5a1b3Sopenharmony_ci   tool" vat manual page, Lawrence Berkeley Laboratory, 1994.
223353a5a1b3Sopenharmony_ci
223453a5a1b3Sopenharmony_ci   [6] The Unicode Consortium, "The Unicode Standard -- Version 2.0",
223553a5a1b3Sopenharmony_ci   Addison-Wesley, 1996.
223653a5a1b3Sopenharmony_ci
223753a5a1b3Sopenharmony_ci
223853a5a1b3Sopenharmony_ci
223953a5a1b3Sopenharmony_ci
224053a5a1b3Sopenharmony_ci
224153a5a1b3Sopenharmony_ci
224253a5a1b3Sopenharmony_ciHandley & Jacobson          Standards Track                    [Page 40]
224353a5a1b3Sopenharmony_ci
224453a5a1b3Sopenharmony_ciRFC 2327                          SDP                         April 1998
224553a5a1b3Sopenharmony_ci
224653a5a1b3Sopenharmony_ci
224753a5a1b3Sopenharmony_ci   [7] ISO/IEC 10646-1:1993. International Standard -- Information
224853a5a1b3Sopenharmony_ci   technol- ogy -- Universal Multiple-Octet Coded Character Set (UCS) --
224953a5a1b3Sopenharmony_ci   Part 1: Architecture and Basic Multilingual Plane.  Five amendments
225053a5a1b3Sopenharmony_ci   and a techn- ical  corrigendum  have been published up to now.  UTF-8
225153a5a1b3Sopenharmony_ci   is described in Annex R, published as Amendment 2.
225253a5a1b3Sopenharmony_ci
225353a5a1b3Sopenharmony_ci   [8] Goldsmith, D., and M. Davis, "Using Unicode with MIME", RFC 1641,
225453a5a1b3Sopenharmony_ci   July 1994.
225553a5a1b3Sopenharmony_ci
225653a5a1b3Sopenharmony_ci   [9] Yergeau, F., "UTF-8, a transformation format of Unicode and ISO
225753a5a1b3Sopenharmony_ci   10646", RFC 2044, October 1996.
225853a5a1b3Sopenharmony_ci
225953a5a1b3Sopenharmony_ci   [10] ITU-T Recommendation H.332 (1998): "Multimedia Terminal for
226053a5a1b3Sopenharmony_ci   Receiving Internet-based H.323 Conferences", ITU, Geneva.
226153a5a1b3Sopenharmony_ci
226253a5a1b3Sopenharmony_ci   [11] Handley, M., Schooler, E., and H. Schulzrinne, "Session
226353a5a1b3Sopenharmony_ci   Initiation Protocol (SIP)", Work in Progress.
226453a5a1b3Sopenharmony_ci
226553a5a1b3Sopenharmony_ci   [12] Schulzrinne, H., Rao, A., and R. Lanphier, "Real Time Streaming
226653a5a1b3Sopenharmony_ci   Protocol (RTSP)", RFC 2326, April 1998.
226753a5a1b3Sopenharmony_ci
226853a5a1b3Sopenharmony_ci
226953a5a1b3Sopenharmony_ci
227053a5a1b3Sopenharmony_ci
227153a5a1b3Sopenharmony_ci
227253a5a1b3Sopenharmony_ci
227353a5a1b3Sopenharmony_ci
227453a5a1b3Sopenharmony_ci
227553a5a1b3Sopenharmony_ci
227653a5a1b3Sopenharmony_ci
227753a5a1b3Sopenharmony_ci
227853a5a1b3Sopenharmony_ci
227953a5a1b3Sopenharmony_ci
228053a5a1b3Sopenharmony_ci
228153a5a1b3Sopenharmony_ci
228253a5a1b3Sopenharmony_ci
228353a5a1b3Sopenharmony_ci
228453a5a1b3Sopenharmony_ci
228553a5a1b3Sopenharmony_ci
228653a5a1b3Sopenharmony_ci
228753a5a1b3Sopenharmony_ci
228853a5a1b3Sopenharmony_ci
228953a5a1b3Sopenharmony_ci
229053a5a1b3Sopenharmony_ci
229153a5a1b3Sopenharmony_ci
229253a5a1b3Sopenharmony_ci
229353a5a1b3Sopenharmony_ci
229453a5a1b3Sopenharmony_ci
229553a5a1b3Sopenharmony_ci
229653a5a1b3Sopenharmony_ci
229753a5a1b3Sopenharmony_ci
229853a5a1b3Sopenharmony_ciHandley & Jacobson          Standards Track                    [Page 41]
229953a5a1b3Sopenharmony_ci
230053a5a1b3Sopenharmony_ciRFC 2327                          SDP                         April 1998
230153a5a1b3Sopenharmony_ci
230253a5a1b3Sopenharmony_ci
230353a5a1b3Sopenharmony_ciFull Copyright Statement
230453a5a1b3Sopenharmony_ci
230553a5a1b3Sopenharmony_ci   Copyright (C) The Internet Society (1998).  All Rights Reserved.
230653a5a1b3Sopenharmony_ci
230753a5a1b3Sopenharmony_ci   This document and translations of it may be copied and furnished to
230853a5a1b3Sopenharmony_ci   others, and derivative works that comment on or otherwise explain it
230953a5a1b3Sopenharmony_ci   or assist in its implementation may be prepared, copied, published
231053a5a1b3Sopenharmony_ci   and distributed, in whole or in part, without restriction of any
231153a5a1b3Sopenharmony_ci   kind, provided that the above copyright notice and this paragraph are
231253a5a1b3Sopenharmony_ci   included on all such copies and derivative works.  However, this
231353a5a1b3Sopenharmony_ci   document itself may not be modified in any way, such as by removing
231453a5a1b3Sopenharmony_ci   the copyright notice or references to the Internet Society or other
231553a5a1b3Sopenharmony_ci   Internet organizations, except as needed for the purpose of
231653a5a1b3Sopenharmony_ci   developing Internet standards in which case the procedures for
231753a5a1b3Sopenharmony_ci   copyrights defined in the Internet Standards process must be
231853a5a1b3Sopenharmony_ci   followed, or as required to translate it into languages other than
231953a5a1b3Sopenharmony_ci   English.
232053a5a1b3Sopenharmony_ci
232153a5a1b3Sopenharmony_ci   The limited permissions granted above are perpetual and will not be
232253a5a1b3Sopenharmony_ci   revoked by the Internet Society or its successors or assigns.
232353a5a1b3Sopenharmony_ci
232453a5a1b3Sopenharmony_ci   This document and the information contained herein is provided on an
232553a5a1b3Sopenharmony_ci   "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
232653a5a1b3Sopenharmony_ci   TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
232753a5a1b3Sopenharmony_ci   BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
232853a5a1b3Sopenharmony_ci   HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
232953a5a1b3Sopenharmony_ci   MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
233053a5a1b3Sopenharmony_ci
233153a5a1b3Sopenharmony_ci
233253a5a1b3Sopenharmony_ci
233353a5a1b3Sopenharmony_ci
233453a5a1b3Sopenharmony_ci
233553a5a1b3Sopenharmony_ci
233653a5a1b3Sopenharmony_ci
233753a5a1b3Sopenharmony_ci
233853a5a1b3Sopenharmony_ci
233953a5a1b3Sopenharmony_ci
234053a5a1b3Sopenharmony_ci
234153a5a1b3Sopenharmony_ci
234253a5a1b3Sopenharmony_ci
234353a5a1b3Sopenharmony_ci
234453a5a1b3Sopenharmony_ci
234553a5a1b3Sopenharmony_ci
234653a5a1b3Sopenharmony_ci
234753a5a1b3Sopenharmony_ci
234853a5a1b3Sopenharmony_ci
234953a5a1b3Sopenharmony_ci
235053a5a1b3Sopenharmony_ci
235153a5a1b3Sopenharmony_ci
235253a5a1b3Sopenharmony_ci
235353a5a1b3Sopenharmony_ci
235453a5a1b3Sopenharmony_ciHandley & Jacobson          Standards Track                    [Page 42]
235553a5a1b3Sopenharmony_ci
2356