您的位置:首页 > 其它

RFC2327 - SDP: Session Description Protocol

2012-02-24 11:06 417 查看
Network Working Group M. Handley
Request for Comments: 2327 V. Jacobson
Category: Standards Track ISI/LBNL
APRil 1998

SDP: session Description Protocol

Status of this Memo

This document specifies an Internetstandards track protocol for the
Internet community, and requests discussionand suggestions for
improvements. Please refer to the currentedition of the "Internet
Official Protocol Standards" (STD 1)for the standardization state
and status of this protocol. Distributionof this memo is unlimited.

Copyright Notice

Copyright (C) The Internet Society (1998).All Rights Reserved.

Abstract

This document defines the SessionDescription Protocol, SDP. SDP is
intended for describing multimedia sessionsfor the purposes of
session announcement, session invitation,and other forms of
multimedia session initiation.

This document is a prodUCt of theMultiparty Multimedia Session
Control (MMUSIC) working group of theInternet Engineering Task
Force. Comments are solicited and should beaddressed to the working
group's mailing list at confctrl@isi.eduand/or the authors.

1. Introduction

On the Internet multicast backbone (Mbone),a session Directory tool
is used to advertise multimedia conferencesand communicate the
conference addresses and conferencetool-specific information
necessary for participation. This documentdefines a session
description protocol for this purpose, andfor general real-time
multimedia session description purposes.This memo does not describe
multicast address allocation or thedistribution of SDP messages in
detail. These are described in accompanyingmemos. SDP is not
intended for negotiation of mediaencodings.

2. Background

The Mbone is the part of the internet thatsupports IP multicast, and
thus permits efficient many-to-manycommunication. It is used
extensively for multimedia conferencing.Such conferences usually
have the property that tight coordinationof conference membership is
not necessary; to receive a conference, auser at an Mbone site only
has to know the conference's multicastgroup address and the UDP
ports for the conference data streams.

Session directories assist theadvertisement of conference sessions
and communicate the relevant conferencesetup information to
prospective participants. SDP is designedto convey such information
to recipients. SDP is purely a format forsession description - it
does not incorporate a transport protocol,and is intended to use
different transport protocols asappropriate including the Session
Announcement Protocol [4], SessionInitiation Protocol [11], Real-
Time Streaming Protocol [12], electronicmail using the MIME
extensions, and the Hypertext TransportProtocol.

SDP is intended to be general purpose sothat it can be used for a
wider range of network environments andapplications than just
multicast session directories. However, itis not intended to
support negotiation of session content ormedia encodings - this is
viewed as outside the scope of sessiondescription.

3. Glossary of Terms

The following terms are used in thisdocument, and have specific
meaning within the context of thisdocument.

Conference
A multimedia conference is a set of two ormore communicating users
along with the software they are using tocommunicate.

Session
A multimedia session is a set of multimediasenders and receivers
and the data streams flowing from sendersto receivers. A
multimedia conference is an example of amultimedia session.

Session Advertisement
See session announcement.

Session Announcement
A session announcement is a mechanism bywhich a session
description is conveyed to users in aproactive fashion, i.e., the
session description was not eXPlicitlyrequested by the user.

Session Description
A well defined format for conveyingsufficient information to
discover and participate in a multimediasession.

3.1. Terminology

The key Words "MUST", "MUSTNOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT","RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as describedin RFC2119.

4. SDP Usage

4.1. Multicast Announcements

SDP is a session description protocol formultimedia sessions. A
common mode of usage is for a client toannounce a conference session
by periodically multicasting anannouncement packet to a well known
multicast address and port using theSession Announcement Protocol
(SAP).

SAP packets are UDP packets with the followingformat:

--------------------
SAP header
--------------------
text payload
//////////

The header is the Session AnnouncementProtocol header. SAP is
described in more detail in a companionmemo [4]

The text payload is an SDP sessiondescription, as described in this
memo. The text payload should be no greaterthan 1 Kbyte in length.
If announced by SAP, only one sessionannouncement is permitted in a
single packet.

4.2. Email and WWW Announcements

Alternative means of conveying sessiondescriptions include
electronic mail and the World Wide Web. Forboth email and WWW
distribution, the use of the MIME contenttype "application/sdp"
should be used. This enables the automaticlaunching of applications
for participation in the session from theWWW client or mail reader
in a standard manner.

Note that announcements of multicastsessions made only via email or
the World Wide Web (WWW) do not have theproperty that the receiver
of a session announcement can necessarilyreceive the session because
the multicast sessions may be restricted inscope, and access to the
WWW server or reception of email ispossible outside this scope. SAP
announcements do not suffer from thismismatch.

5. Requirements and Recommendations

The purpose of SDP is to convey informationabout media streams in
multimedia sessions to allow the recipientsof a session description
to participate in the session. SDP isprimarily intended for use in
an internetwork, although it issufficiently general that it can
describe conferences in other networkenvironments.

A multimedia session, for these purposes,is defined as a set of
media streams that exist for some durationof time. Media streams
can be many-to-many. The times during whichthe session is active
need not be continuous.

Thus far, multicast based sessions on theInternet have differed from
many other forms of conferencing in thatanyone receiving the traffic
can join the session (unless the sessiontraffic is encrypted). In
such an environment, SDP serves two primarypurposes. It is a means
to communicate the existence of a session,and is a means to convey
sufficient information to enable joiningand participating in the
session. In a unicast environment, only thelatter purpose is likely
to be relevant.

Thus SDP includes:

o Session name and purpose

o Time(s) the session is active

o The media comprising the session

o Information to receive those media(addresses, ports, formats and
so on)

As resources necessary to participate in asession may be limited,
some additional information may also bedesirable:

o Information about the bandwidth to beused by the conference

o Contact information for the personresponsible for the session

In general, SDP must convey sufficientinformation to be able to join
a session (with the possible exception ofencryption keys) and to
announce the resources to be used tonon-participants that may need
to know.

5.1. Media Information

SDP includes:

o The type of media (video, audio, etc)

o The transport protocol (RTP/UDP/IP,H.320, etc)

o The format of the media (H.261 video,MPEG video, etc)

For an IP multicast session, the followingare also conveyed:

o Multicast address for media

o Transport Port for media

This address and port are the destinationaddress and destination
port of the multicast stream, whether beingsent, received, or both.

For an IP unicast session, the followingare conveyed:

o Remote address for media

o Transport port for contact address

The semantics of this address and portdepend on the media and
transport protocol defined. By default,this is the remote address
and remote port to which data is sent, andthe remote address and
local port on which to receive data.However, some media may define
to use these to establish a control channelfor the actual media
flow.

5.2. Timing Information

Sessions may either be bounded or unboundedin time. Whether or not
they are bounded, they may be only activeat specific times.

SDP can convey:

o An arbitrary list of start and stop timesbounding the session

o For each bound, repeat times such as"every Wednesday at 10am for
one hour"

This timing information is globallyconsistent, irrespective of local
time zone or daylight saving time.

5.3. Private Sessions

It is possible to create both publicsessions and private sessions.
Private sessions will typically be conveyedby encrypting the session
description to distribute it. The detailsof how encryption is
performed are dependent on the mechanismused to convey SDP - see [4]
for how this is done for sessionannouncements.

If a session announcement is private it ispossible to use that
private announcement to convey encryptionkeys necessary to decode
each of the media in a conference,including enough information to
know which encryption scheme is used foreach media.

5.4. OBTaining Further Information about aSession

A session description should convey enoughinformation to decide
whether or not to participate in a session.SDP may include
additional pointers in the form ofUniversal Resources Identifiers
(URIs) for more information about thesession.

5.5. Categorisation

When many session descriptions are beingdistributed by SAP or any
other advertisement mechanism, it may bedesirable to filter
announcements that are of interest fromthose that are not. SDP
supports a categorisation mechanism forsessions that is capable of
being automated.

5.6. Internationalization

The SDP specification recommends the use ofthe ISO 10646 character
sets in the UTF-8 encoding (RFC2044) toallow many different
languages to be represented. However, toassist in compact
representations, SDP also allows othercharacter sets such as ISO
8859-1 to be used when desired.Internationalization only applies to
free-text fields (session name andbackground information), and not
to SDP as a whole.

6. SDP Specification

SDP session descriptions are entirelytextual using the ISO 10646
character set in UTF-8 encoding. SDP fieldnames and attributes names
use only the US-ASCII subset of UTF-8, buttextual fields and
attribute values may use the full ISO 10646character set. The
textual form, as opposed to a binaryencoding such as ASN/1 or XDR,

was chosen to enhance portability, toenable a variety of transports
to be used (e.g, session description in aMIME email message) and to
allow flexible, text-based toolkits (e.g.,Tcl/Tk ) to be used to
generate and to process sessiondescriptions. However, since the
total bandwidth allocated to all SAPannouncements is strictly
limited, the encoding is deliberatelycompact. Also, since
announcements may be transported via veryunreliable means (e.g.,
email) or damaged by an intermediatecaching server, the encoding was
designed with strict order and formattingrules so that most errors
would result in malformed announcementswhich could be detected
easily and discarded. This also allowsrapid discarding of encrypted
announcements for which a receiver does nothave the correct key.

An SDP session description consists of anumber of lines of text of
the form <type>=<value><type> is always exactly one character and is
case-significant. <value> is astructured text string whose format
depends on <type>. It also will becase-significant unless a
specific field defines otherwise.Whitespace is not permitted either
side of the `=' sign. In general<value> is either a number of fields
delimited by a single space character or afree format string.

A session description consists of asession-level description
(details that apply to the whole sessionand all media streams) and
optionally several media-level descriptions(details that apply onto
to a single media stream).

An announcement consists of a session-levelsection followed by zero
or more media-level sections. Thesession-level part starts with a
`v=' line and continues to the firstmedia-level section. The media
description starts with an `m=' line andcontinues to the next media
description or end of the whole sessiondescription. In general,
session-level values are the default forall media unless overridden
by an equivalent media-level value.

When SDP is conveyed by SAP, only onesession description is allowed
per packet. When SDP is conveyed by othermeans, many SDP session
descriptions may be concatenated together(the `v=' line indicating
the start of a session descriptionterminates the previous
description). Some lines in eachdescription are required and some
are optional but all must appear in exactlythe order given here (the
fixed order greatly enhances errordetection and allows for a simple
parser). Optional items are marked with a`*'.

Session description
v= (protocol version)
o= (owner/creator and session identifier).
s= (session name)
i=* (session information)

u=* (URI of description)
e=* (email address)
p=* (phone number)
c=* (connection information - not requiredif included in all media)
b=* (bandwidth information)
One or more time descriptions (see below)
z=* (time zone adjustments)
k=* (encryption key)
a=* (zero or more session attribute lines)
Zero or more media descriptions (see below)

Time description
t= (time the session is active)
r=* (zero or more repeat times)

Media description
m= (media name and transport address)
i=* (media title)
c=* (connection information - optional ifincluded at session-level)
b=* (bandwidth information)
k=* (encryption key)
a=* (zero or more media attribute lines)

The set of `type' letters is deliberatelysmall and not intended to
be extensible -- SDP parsers mustcompletely ignore any announcement
that contains a `type' letter that it doesnot understand. The
`attribute' mechanism ("a="described below) is the primary means for
extending SDP and tailoring it toparticular applications or media.
Some attributes (the ones listed in thisdocument) have a defined
meaning but others may be added on anapplication-, media- or
session-specific basis. A session directorymust ignore any
attribute it doesn't understand.

The connection (`c=') and attribute (`a=')information in the
session-level section applies to all themedia of that session unless
overridden by connection information or anattribute of the same name
in the media description. For instance, inthe example below, each
media behaves as if it were given a`recvonly' attribute.

An example SDP description is:

v=0
o=mhandley 2890844526 2890842807 IN IP4126.16.64.4
s=SDP Seminar
i=A Seminar on the session descriptionprotocol
u=http://www.cs.ucl.ac.uk/staff/M.Handley/sdp.03.ps
e=mjh@isi.edu (Mark Handley)
c=IN IP4 224.2.17.12/127

t=2873397496 2873404696
a=recvonly
m=audio 49170 RTP/AVP 0
m=video 51372 RTP/AVP 31
m=application 32416 udp wb
a=orient:portrait

Text records such as the session name andinformation are bytes
strings which may contain any byte with theexceptions of 0x00 (Nul),
0x0a (ASCII newline) and 0x0d (ASCIIcarriage return). The sequence
CRLF (0x0d0a) is used to end a record,although parsers should be
tolerant and also accept records terminatedwith a single newline
character. By default these byte stringscontain ISO-10646
characters in UTF-8 encoding, but thisdefault may be changed using
the `charset' attribute.

Protocol Version

v=0

The "v=" field gives the versionof the Session Description Protocol.
There is no minor version number.

Origin

o=<username> <session id><version> <network type> <address type>
<address>

The "o=" field gives theoriginator of the session (their username
and the address of the user's host) plus asession id and session
version number.

<username> is the user's login on theoriginating host, or it is "-"
if the originating host does not supportthe concept of user ids.
<username> must not contain spaces.<session id> is a numeric string
such that the tuple of <username>,<session id>, <network type>,
<address type> and <address>form a globally unique identifier for
the session.

The method of <session id> allocationis up to the creating tool, but
it has been suggested that a Network TimeProtocol (NTP) timestamp be
used to ensure uniqueness [1].

<version> is a version number forthis announcement. It is needed
for proxy announcements to detect which ofseveral announcements for
the same session is the most recent. Againits usage is up to the

creating tool, so long as <version>is increased when a modification
is made to the session data. Again, it isrecommended (but not
mandatory) that an NTP timestamp is used.

<network type> is a text stringgiving the type of network.
Initially "IN" is defined to havethe meaning "Internet". <address
type> is a text string giving the typeof the address that follows.
Initially "IP4" and"IP6" are defined. <address> is the globally
unique address of the machine from whichthe session was created.
For an address type of IP4, this is eitherthe fully-qualified domain
name of the machine, or the dotted-decimalrepresentation of the IP
version 4 address of the machine. For anaddress type of IP6, this
is either the fully-qualified domain nameof the machine, or the
compressed textual representation of the IPversion 6 address of the
machine. For both IP4 and IP6, thefully-qualified domain name is
the form that SHOULD be given unless thisis unavailable, in which
case the globally unique address may besubstituted. A local IP
address MUST NOT be used in any contextwhere the SDP description
might leave the scope in which the addressis meaningful.

In general, the "o=" field servesas a globally unique identifier for
this version of this session description,and the subfields excepting
the version taken together identify thesession irrespective of any
modifications.

Session Name

s=<session name>

The "s=" field is the sessionname. There must be one and only one
"s=" field per sessiondescription, and it must contain ISO 10646
characters (but see also the `charset'attribute below).

Session and Media Information

i=<session description>

The "i=" field is informationabout the session. There may be at
most one session-level "i=" fieldper session description, and at
most one "i=" field per media.Although it may be omitted, this is
discouraged for session announcements, anduser interfaces for
composing sessions should require text tobe entered. If it is
present it must contain ISO 10646characters (but see also the
`charset' attribute below).

A single "i=" field can also beused for each media definition. In
media definitions, "i=" fieldsare primarily intended for labeling
media streams. As such, they are mostlikely to be useful when a

single session has more than one distinctmedia stream of the same
media type. An example would be twodifferent whiteboards, one for
slides and one for feedback and questions.

URI

u=<URI>

o A URI is a Universal Resource Identifieras used by WWW clients

o The URI should be a pointer to additionalinformation about the
conference

o This field is optional, but if it ispresent it should be specified
before the first media field

o No more than one URI field is allowed persession description

Email Address and Phone Number

e=<email address>
p=<phone number>

o These specify contact information for theperson responsible for
the conference. This is not necessarily thesame person that
created the conference announcement.

o Either an email field or a phone fieldmust be specified.
Additional email and phone fields areallowed.

o If these are present, they should bespecified before the first
media field.

o More than one email or phone field can begiven for a session
description.

o Phone numbers should be given in theconventional international

format - preceded by a "+ and theinternational country code.
There must be a space or a hyphen("-") between the country code
and the rest of the phone number. Spacesand hyphens may be used
to split up a phone field to aidreadability if desired. For
example:

p=+44-171-380-7777 or p=+1 617 253 6011

o Both email addresses and phone numberscan have an optional free
text string associated with them, normallygiving the name of the
person who may be contacted. This should beenclosed in
parenthesis if it is present. For example:

e=mjh@isi.edu (Mark Handley)

The alternative RFC822 name quotingconvention is also allowed for
both email addresses and phone numbers. Forexample,

e=Mark Handley <mjh@isi.edu>

The free text string should be in theISO-10646 character set with
UTF-8 encoding, or alternatively in ISO-8859-1or other encodings
if the appropriate charset session-levelattribute is set.

Connection Data

c=<network type> <address type><connection address>

The "c=" field containsconnection data.

A session announcement must contain one"c=" field in each media
description (see below) or a "c="field at the session-level. It may
contain a session-level "c="field and one additional "c=" field per
media description, in which case theper-media values override the
session-level settings for the relevant media.

The first sub-field is the network type,which is a text string
giving the type of network. Initially"IN" is defined to have the
meaning "Internet".

The second sub-field is the address type.This allows SDP to be used
for sessions that are not IP based.Currently only IP4 is defined.

The third sub-field is the connectionaddress. Optional extra
subfields may be added after the connectionaddress depending on the
value of the <address type> field.

For IP4 addresses, the connection addressis defined as follows:

o Typically the connection address will bea class-D IP multicast

group address. If the session is notmulticast, then the
connection address contains thefully-qualified domain name or the
unicast IP address of the expected datasource or data relay or
data sink as determined by additionalattribute fields. It is not
expected that fully-qualified domain namesor unicast addresses

will be given in a session description thatis communicated by a
multicast announcement, though this is notprohibited. If a
unicast data stream is to pass through anetwork address
translator, the use of a fully-qualifieddomain name rather than an
unicast IP address is RECOMMENDED. In othercases, the use of an
IP address to specify a particularinterface on a multi-homed host
might be required. Thus this specificationleaves the decision as
to which to use up to the individualapplication, but all
applications MUST be able to cope withreceiving both formats.

o Conferences using an IP multicastconnection address must also have
a time to live (TTL) value present inaddition to the multicast
address. The TTL and the address togetherdefine the scope with
which multicast packets sent in thisconference will be sent. TTL
values must be in the range 0-255.

The TTL for the session is appended to theaddress using a slash as
a separator. An example is:

c=IN IP4 224.2.1.1/127

Hierarchical or layered encoding schemesare data streams where the
encoding from a single media source issplit into a number of
layers. The receiver can choose the desiredquality (and hence
bandwidth) by only subscribing to a subsetof these layers. Such
layered encodings are normally transmittedin multiple multicast
groups to allow multicast pruning. Thistechnique keeps unwanted
traffic from sites only requiring certainlevels of the hierarchy.
For applications requiring multiplemulticast groups, we allow the
following notation to be used for theconnection address:

<base multicast address>/<ttl>/<numberof addresses>

If the number of addresses is not given itis assumed to be one.
Multicast addresses so assigned arecontiguously allocated above
the base address, so that, for example:

c=IN IP4 224.2.1.1/127/3

would state that addresses 224.2.1.1,224.2.1.2 and 224.2.1.3 are
to be used at a ttl of 127. This issemantically identical to
including multiple "c=" lines ina media description:

c=IN IP4 224.2.1.1/127
c=IN IP4 224.2.1.2/127
c=IN IP4 224.2.1.3/127

Multiple addresses or "c=" linescan only be specified on a per-
media basis, and not for a session-level"c=" field.

It is illegal for the slash notationdescribed above to be used for
IP unicast addresses.

Bandwidth

b=<modifier>:<bandwidth-value>

o This specifies the proposed bandwidth tobe used by the session or
media, and is optional.

o <bandwidth-value> is in kilobitsper second

o <modifier> is a single alphanumericword giving the meaning of the
bandwidth figure.

o Two modifiers are initially defined:

CT Conference Total: An implicit maximumbandwidth is associated with
each TTL on the Mbone or within aparticular multicast
administrative scope region (the Mbonebandwidth vs. TTL limits are
given in the MBone FAQ). If the bandwidthof a session or media in
a session is different from the bandwidthimplicit from the scope,
a `b=CT:...' line should be supplied forthe session giving the
proposed upper limit to the bandwidth used.The primary purpose of
this is to give an approximate idea as towhether two or more
conferences can co-exist simultaneously.

AS Application-Specific Maximum: Thebandwidth is interpreted to be
application-specific, i.e., will be theapplication's concept of
maximum bandwidth. Normally this willcoincide with what is set on
the application's "maximumbandwidth" control if applicable.

Note that CT gives a total bandwidth figurefor all the media at
all sites. AS gives a bandwidth figure fora single media at a
single site, although there may be manysites sending
simultaneously.

o Extension Mechanism: Tool writers candefine experimental bandwidth
modifiers by prefixing their modifier with"X-". For example:

b=X-YZ:128

SDP parsers should ignore bandwidth fieldswith unknown modifiers.
Modifiers should be alpha-numeric and,although no length limit is
given, they are recommended to be short.

Times, Repeat Times and Time Zones

t=<start time> <stop time>

o "t=" fields specify the startand stop times for a conference
session. Multiple "t=" fields maybe used if a session is active
at multiple irregularly spaced times; eachadditional "t=" field
specifies an additional period of time forwhich the session will
be active. If the session is active atregular times, an "r="
field (see below) should be used inaddition to and following a
"t=" field - in which case the"t=" field specifies the start and
stop times of the repeat sequence.

o The first and second sub-fields give thestart and stop times for
the conference respectively. These valuesare the decimal
representation of Network Time Protocol(NTP) time values in
seconds [1]. To convert these values toUNIX time, subtract
decimal 2208988800.

o If the stop-time is set to zero, then thesession is not bounded,
though it will not become active untilafter the start-time. If
the start-time is also zero, the session isregarded as permanent.

User interfaces should strongly discouragethe creation of
unbounded and permanent sessions as theygive no information about
when the session is actually going toterminate, and so make
scheduling difficult.

The general assumption may be made, whendisplaying unbounded
sessions that have not timed out to theuser, that an unbounded
session will only be active until half anhour from the current
time or the session start time, whicheveris the later. If
behaviour other than this is required, anend-time should be given
and modified as appropriate when newinformation becomes available
about when the session should really end.

Permanent sessions may be shown to the useras never being active
unless there are associated repeat timeswhich state precisely when
the session will be active. In general,permanent sessions should
not be created for any session expected tohave a duration of less
than 2 months, and should be discouragedfor sessions expected to
have a duration of less than 6 months.

r=<repeat interval> <activeduration> <list of offsets from start-
time>

o "r=" fields specify repeattimes for a session. For example, if
a session is active at 10am on Monday and11am on Tuesday for one

hour each week for three months, then the<start time> in the
corresponding "t=" field would bethe NTP representation of 10am on
the first Monday, the <repeatinterval> would be 1 week, the
<active duration> would be 1 hour,and the offsets would be zero
and 25 hours. The corresponding"t=" field stop time would be the
NTP representation of the end of the lastsession three months
later. By default all fields are inseconds, so the "r=" and "t="
fields might be:

t=3034423619 3042462419
r=604800 3600 0 90000

To make announcements more compact, timesmay also be given in units
of days, hours or minutes. The syntax forthese is a number
immediately followed by a singlecase-sensitive character.
Fractional units are not allowed - asmaller unit should be used
instead. The following unit specificationcharacters are allowed:

d - days (86400 seconds)
h - minutes (3600 seconds)
m - minutes (60 seconds)
s - seconds (allowed for completeness butnot recommended)

Thus, the above announcement could alsohave been written:

r=7d 1h 0 25h

Monthly and yearly repeats cannot currentlybe directly specified
with a single SDP repeat time - instead separate"t" fields should
be used to explicitly list the sessiontimes.

z=<adjustment time> <offset><adjustment time> <offset> ....

o To schedule a repeated session whichspans a change from daylight-
saving time to standard time or vice-versa,it is necessary to
specify offsets from the base repeat times.This is required
because different time zones change time atdifferent times of day,
different countries change to or fromdaylight time on different
dates, and some countries do not havedaylight saving time at all.

Thus in order to schedule a session that isat the same time winter
and summer, it must be possible to specifyunambiguously by whose
time zone a session is scheduled. Tosimplify this task for
receivers, we allow the sender to specifythe NTP time that a time
zone adjustment happens and the offset fromthe time when the
session was first scheduled. The"z" field allows the sender to
specify a list of these adjustment timesand offsets from the base
time.

An example might be:

z=2882844526 -1h 2898848070 0

This specifies that at time 2882844526 thetime base by which the
session's repeat times are calculated isshifted back by 1 hour,
and that at time 2898848070 the session'soriginal time base is
restored. Adjustments are always relativeto the specified start
time - they are not cumulative.

o If a session is likely to last severalyears, it is expected
that
the session announcement will be modifiedperiodically rather than
transmit several years worth of adjustmentsin one announcement.

Encryption Keys

k=<method>
k=<method>:<encryption key>

o The session description protocol may beused to convey encryption
keys. A key field is permitted before thefirst media entry (in
which case it applies to all media in thesession), or for each
media entry as required.

o The format of keys and their usage isoutside the scope of this
document, but see [3].

o The method indicates the mechanism to beused to obtain a usable
key by external means, or from the encodedencryption key given.

The following methods are defined:

k=clear:<encryption key>
The encryption key (as described in [3] forRTP media streams
under the AV profile) is includeduntransformed in this key
field.

k=base64:<encoded encryption key>
The encryption key (as described in [3] forRTP media streams
under the AV profile) is included in thiskey field but has been
base64 encoded because it includescharacters that are
prohibited in SDP.

k=uri:<URI to obtain key>
A Universal Resource Identifier as used byWWW clients is
included in this key field. The URI refersto the data
containing the key, and may requireadditional authentication

before the key can be returned. When arequest is made to the
given URI, the MIME content-type of thereply specifies the
encoding for the key in the reply. The keyshould not be
obtained until the user wishes to join thesession to reduce
synchronisation of requests to the WWWserver(s).

k=prompt
No key is included in this SDP description,but the session or
media stream referred to by this key fieldis encrypted. The
user should be prompted for the key whenattempting to join the
session, and this user-supplied key shouldthen be used to
decrypt the media streams.

Attributes

a=<attribute>
a=<attribute>:<value>

Attributes are the primary means forextending SDP. Attributes may
be defined to be used as"session-level" attributes, "media-level"
attributes, or both.

A media description may have any number ofattributes ("a=" fields)
which are media specific. These arereferred to as "media-level"
attributes and add information about themedia stream. Attribute
fields can also be added before the firstmedia field; these
"session-level" attributes conveyadditional information that applies
to the conference as a whole rather than toindividual media; an
example might be the conference's floorcontrol policy.

Attribute fields may be of two forms:

o property attributes. A property attributeis simply of the form
"a=<flag>". These arebinary attributes, and the presence of the
attribute conveys that the attribute is aproperty of the session.
An example might be "a=recvonly".

o value attributes. A value attribute is ofthe form
"a=<attribute>:<value>".An example might be that a whiteboard
could have the value attribute"a=orient:landscape"

Attribute interpretation depends on themedia tool being invoked.
Thus receivers of session descriptionsshould be configurable in
their interpretation of announcements ingeneral and of attributes in
particular.

Attribute names must be in the US-ASCIIsubset of ISO-10646/UTF-8.

Attribute values are byte strings, and MAYuse any byte value except
0x00 (Nul), 0x0A (LF), and 0x0D (CR). Bydefault, attribute values
are to be interpreted as in ISO-10646character set with UTF-8
encoding. Unlike other text fields,attribute values are NOT
normally affected by the `charset'attribute as this would make
comparisons against known valuesproblematic. However, when an
attribute is defined, it can be defined tobe charset-dependent, in
which case it's value should be interpretedin the session charset
rather than in ISO-10646.

Attributes that will be commonly used canbe registered with IANA
(see Appendix B). Unregistered attributesshould begin with "X-" to
prevent inadvertent collision withregistered attributes. In either
case, if an attribute is received that isnot understood, it should
simply be ignored by the receiver.

Media Announcements

m=<media> <port><transport> <fmt list>

A session description may contain a numberof media descriptions.
Each media description starts with an"m=" field, and is terminated
by either the next "m=" field orby the end of the session
description. A media field also has severalsub-fields:

o The first sub-field is the media type.Currently defined media are
"audio", "video","application", "data" and "control", though this
list may be extended as new communicationmodalities emerge (e.g.,
telepresense). The difference between"application" and "data" is
that the former is a media flow such aswhiteboard information, and
the latter is bulk-data transfer such asmulticasting of program
executables which will not typically bedisplayed to the user.
"control" is used to specify anadditional conference control
channel for the session.

o The second sub-field is the transportport to which the media
stream will be sent. The meaning of thetransport port depends on
the network being used as specified in therelevant "c" field and
on the transport protocol defined in thethird sub-field. Other
ports used by the media application (suchas the RTCP port, see
[2]) should be derived algorithmically fromthe base media port.

Note: For transports based on UDP, thevalue should be in the range
1024 to 65535 inclusive. For RTP complianceit should be an even
number.

For applications where hierarchicallyencoded streams are being
sent to a unicast address, it may benecessary to specify multiple
transport ports. This is done using asimilar notation to that
used for IP multicast addresses in the"c=" field:

m=<media> <port>/<number ofports> <transport> <fmt list>

In such a case, the ports used depend onthe transport protocol.
For RTP, only the even ports are used fordata and the
corresponding one-higher odd port is usedfor RTCP. For example:

m=video 49170/2 RTP/AVP 31

would specify that ports 49170 and 49171form one RTP/RTCP pair and
49172 and 49173 form the second RTP/RTCPpair. RTP/AVP is the
transport protocol and 31 is the format(see below).

It is illegal for both multiple addressesto be specified in the
"c=" field and for multiple portsto be specified in the "m=" field
in the same session description.

o The third sub-field is the transportprotocol. The transport
protocol values are dependent on theaddress-type field in the "c="
fields. Thus a "c=" field of IP4defines that the transport
protocol runs over IP4. For IP4, it isnormally expected that most
media traffic will be carried as RTP overUDP. The following
transport protocols are preliminarilydefined, but may be extended
through registration of new protocols withIANA:

- RTP/AVP - the IETF's Realtime TransportProtocol using the
Audio/Video profile carried over UDP.

- udp - User Datagram Protocol

If an application uses a single combinedproprietary media format
and transport protocol over UDP, thensimply specifying the
transport protocol as udp and using theformat field to distinguish
the combined protocol is recommended. If atransport protocol is
used over UDP to carry several distinctmedia types that need to be
distinguished by a session directory, thenspecifying the transport
protocol and media format separately isnecessary. RTP is an
example of a transport-protocol thatcarries multiple payload
formats that must be distinguished by thesession directory for it
to know how to start appropriate tools,relays, mixers or
recorders.

The main reason to specify thetransport-protocol in addition to
the media format is that the same standardmedia formats may be
carried over different transport protocolseven when the network
protocol is the same - a historical exampleis vat PCM audio and
RTP PCM audio. In addition, relays andmonitoring tools that are
transport-protocol-specific butformat-independent are possible.

For RTP media streams Operating under theRTP Audio/Video Profile
[3], the protocol field is"RTP/AVP". Should other RTP profiles be
defined in the future, their profiles willbe specified in the same
way. For example, the protocol field"RTP/XYZ" would specify RTP
operating under a profile whose short nameis "XYZ".

o The fourth and subsequent sub-fields aremedia formats. For audio
and video, these will normally be a mediapayload type as defined
in the RTP Audio/Video Profile.

When a list of payload formats is given,this implies that all of
these formats may be used in the session,but the first of these
formats is the default format for thesession.

For media whose transport protocol is notRTP or UDP the format
field is protocol specific. Such formatsshould be defined in an
additional specification document.

For media whose transport protocol is RTP,SDP can be used to
provide a dynamic binding of media encodingto RTP payload type.
The encoding names in the RTP AV Profile donot specify unique
audio encodings (in terms of clock rate andnumber of audio
channels), and so they are not useddirectly in SDP format fields.
Instead, the payload type number should beused to specify the
format for static payload types and thepayload type number along
with additional encoding information shouldbe used for dynamically
allocated payload types.

An example of a static payload type isu-law PCM coded single
channel audio sampled at 8KHz. This iscompletely defined in the
RTP Audio/Video profile as payload type 0,so the media field for
such a stream sent to UDP port 49232 is:

m=video 49232 RTP/AVP 0

An example of a dynamic payload type is 16bit linear encoded
stereo audio sampled at 16KHz. If we wishto use dynamic RTP/AVP
payload type 98 for such a stream,additional information is
required to decode it:

m=video 49232 RTP/AVP 98

a=rtpmap:98 L16/16000/2

The general form of an rtpmap attribute is:

a=rtpmap:<payload type> <encodingname>/<clock rate>[/<encoding
parameters>]

For audio streams, <encodingparameters> may specify the number of
audio channels. This parameter may beomitted if the number of
channels is one provided no additionalparameters are needed. For
video streams, no encoding parameters arecurrently specified.

Additional parameters may be defined in thefuture, but
codecspecific parameters should not beadded. Parameters added to
an rtpmap attribute should only be thoserequired for a session
directory to make the choice of appropriatemedia too to
participate in a session. Codec-specificparameters should be
added in other attributes.

Up to one rtpmap attribute can be definedfor each media format
specified. Thus we might have:

m=audio 49230 RTP/AVP 96 97 98
a=rtpmap:96 L8/8000
a=rtpmap:97 L16/8000
a=rtpmap:98 L16/11025/2

RTP profiles that specify the use ofdynamic payload types must
define the set of valid encoding namesand/or a means to register
encoding names if that profile is to beused with SDP.

Experimental encoding formats can also bespecified using rtpmap.
RTP formats that are not registered asstandard format names must
be preceded by "X-". Thus a newexperimental redundant audio
stream called GSMLPC using dynamic payloadtype 99 could be
specified as:

m=video 49232 RTP/AVP 99
a=rtpmap:99 X-GSMLPC/8000

Such an experimental encoding requires thatany site wishing to
receive the media stream has relevantconfigured state in its
session directory to know which tools areappropriate.

Note that RTP audio formats typically donot include information
about the number of samples per packet. Ifa non-default (as
defined in the RTP Audio/Video Profile)packetisation is required,
the "ptime" attribute is used asgiven below.

For more details on RTP audio and videoformats, see [3].

o Formats for non-RTP media should beregistered as MIME content
types as described in Appendix B. Forexample, the LBL whiteboard
application might be registered as MIMEcontent-type application/wb
with encoding considerations specifyingthat it operates over UDP,
with no appropriate file format. In SDPthis would then be
expressed using a combination of the"media" field and the "fmt"
field, as follows:

m=application 32416 udp wb

Suggested Attributes

The following attributes are suggested.Since application writers
may add new attributes as they arerequired, this list is not
exhaustive.

a=cat:<category>
This attribute gives the dot-separatedhierarchical category of
the session. This is to enable a receiverto filter unwanted
sessions by category. It would probablyhave been a compulsory
separate field, except for its experimentalnature at this time.
It is a session-level attribute, and is notdependent on charset.

a=keywds:<keywords>
Like the cat attribute, this is to assistidentifying wanted
sessions at the receiver. This allows areceiver to select
interesting session based on keywordsdescribing the purpose of
the session. It is a session-levelattribute. It is a charset
dependent attribute, meaning that its valueshould be interpreted
in the charset specified for the sessiondescription if one is
specified, or by default in ISO10646/UTF-8.

a=tool:<name and version of tool>
This gives the name and version number ofthe tool used to create
the session description. It is asession-level attribute, and is
not dependent on charset.

a=ptime:<packet time>
This gives the length of time inmilliseconds represented by the
media in a packet. This is probably onlymeaningful for audio
data. It should not be necessary to knowptime to decode RTP or
vat audio, and it is intended as arecommendation for the
encoding/packetisation of audio. It is amedia attribute, and is
not dependent on charset.

a=recvonly
This specifies that the tools should bestarted in receive-only
mode where applicable. It can be either asession or media
attribute, and is not dependent on charset.

a=sendrecv
This specifies that the tools should bestarted in send and
receive mode. This is necessary forinteractive conferences with
tools such as wb which defaults to receiveonly mode. It can be
either a session or media attribute, and isnot dependent on
charset.

a=sendonly
This specifies that the tools should bestarted in send-only
mode. An example may be where a differentunicast address is to
be used for a traffic destination than fora traffic source. In
such a case, two media descriptions may beuse, one sendonly and
one recvonly. It can be either a session ormedia attribute, but
would normally only be used as a mediaattribute, and is not
dependent on charset.

a=orient:<whiteboard orientation>
Normally this is only used in a whiteboardmedia specification.
It specifies the orientation of a thewhiteboard on the screen.
It is a media attribute. Permitted valuesare `portrait',
`landscape' and `seascape' (upside downlandscape). It is not
dependent on charset

a=type:<conference type>
This specifies the type of the conference.Suggested values are
`broadcast', `meeting', `moderated', `test'and `H332'.
`recvonly' should be the default for`type:broadcast' sessions,
`type:meeting' should imply `sendrecv' and`type:moderated'
should indicate the use of a floor controltool and that the
media tools are started so as to"mute" new sites joining the
conference.

Specifying the attribute type:H332indicates that this loosely
coupled session is part of a H.332 sessionas defined in the ITU
H.332 specification [10]. Media toolsshould be started
`recvonly'.

Specifying the attribute type:test issuggested as a hint that,
unless explicitly requested otherwise,receivers can safely avoid
displaying this session description tousers.

The type attribute is a session-levelattribute, and is not
dependent on charset.

a=charset:<character set>
This specifies the character set to be usedto display the
session name and information data. Bydefault, the ISO-10646
character set in UTF-8 encoding is used. Ifa more compact
representation is required, other charactersets may be used such
as ISO-8859-1 for Northern Europeanlanguages. In particular,
the ISO 8859-1 is specified with the followingSDP attribute:

a=charset:ISO-8859-1

This is a session-level attribute; if thisattribute is present,
it must be before the first media field.The charset specified
MUST be one of those registered with IANA,such as ISO-8859-1.
The character set identifier is a US-ASCIIstring and MUST be
compared against the IANA identifiers usinga case-insensitive
comparison. If the identifier is notrecognised or not
supported, all strings that are affected byit SHOULD be regarded
as byte strings.

Note that a character set specified MUSTstill prohibit the use
of bytes 0x00 (Nul), 0x0A (LF) and 0x0d(CR). Character sets
requiring the use of these characters MUSTdefine a quoting
mechanism that prevents these bytesappearing within text fields.

a=sdplang:<language tag>
This can be a session level attribute or amedia level attribute.
As a session level attribute, it specifiesthe language for the
session description. As a media levelattribute, it specifies
the language for any media-level SDP informationfield associated
with that media. Multiple sdplangattributes can be provided
either at session or media level ifmultiple languages in the
session description or media use multiplelanguages, in which
case the order of the attributes indicatesthe order of
importance of the various languages in thesession or media from
most important to least important.

In general, sending session descriptionsconsisting of multiple
languages should be discouraged. Instead,multiple descriptions
should be sent describing the session, onein each language.
However this is not possible with alltransport mechanisms, and
so multiple sdplang attributes are allowedalthough not
recommended.

The sdplang attribute value must be asingle RFC1766 language
tag in US-ASCII. It is not dependent on thecharset attribute.
An sdplang attribute SHOULD be specifiedwhen a session is of

sufficient scope to cross geographicboundaries where the
language of recipients cannot be assumed,or where the session is
in a different language from the locallyassumed norm.

a=lang:<language tag>
This can be a session level attribute or amedia level attribute.
As a session level attribute, it specifiesthe default language
for the session being described. As a medialevel attribute, it
specifies the language for that media,overriding any session-
level language specified. Multiple langattributes can be
provided either at session or media levelif multiple languages
if the session description or media usemultiple languages, in
which case the order of the attributesindicates the order of
importance of the various languages in thesession or media from
most important to least important.

The lang attribute value must be a singleRFC1766 language tag
in US-ASCII. It is not dependent on thecharset attribute. A
lang attribute SHOULD be specified when asession is of
sufficient scope to cross geographicboundaries where the
language of recipients cannot be assumed,or where the session is
in a different language from the locally assumednorm.

a=framerate:<frame rate>
This gives the maximum video frame rate inframes/sec. It is
intended as a recommendation for theencoding of video data.
Decimal representations of fractionalvalues using the notation
"<integer>.<fraction>"are allowed. It is a media attribute, is
only defined for video media, and is notdependent on charset.

a=quality:<quality>
This gives a suggestion for the quality ofthe encoding as an
integer value.

The intention of the quality attribute forvideo is to specify a
non-default trade-off between frame-rateand still-image quality.
For video, the value in the range 0 to 10,with the following
suggested meaning:

10 - the best still-image quality thecompression scheme can
give.

5 - the default behaviour given no qualitysuggestion.

0 - the worst still-image quality the codecdesigner thinks is
still usable.

It is a media attribute, and is notdependent on charset.

a=fmtp:<format> <format specificparameters>
This attribute allows parameters that arespecific to a
particular format to be conveyed in a waythat SDP doesn't have
to understand them. The format must be oneof the formats
specified for the media. Format-specificparameters may be any
set of parameters required to be conveyedby SDP and given
unchanged to the media tool that will usethis format.

It is a media attribute, and is notdependent on charset.

6.1. Communicating Conference ControlPolicy

There is some debate over the way conferencecontrol policy should be
communicated. In general, the authorsbelieve that an implicit
declarative style of specifying conferencecontrol is desirable where
possible.

A simple declarative style uses a singleconference attribute field
before the first media field, possiblysupplemented by properties
such as `recvonly' for some of the mediatools. This conference
attribute conveys the conference controlpolicy. An example might be:

a=type:moderated

In some cases, however, it is possible thatthis may be insufficient
to communicate the details of an unusualconference control policy.
If this is the case, then a conferenceattribute specifying external
control might be set, and then one or more"media" fields might be
used to specify the conference controltools and configuration data
for those tools. An example is an ITU H.332session:

c=IN IP4 224.5.6.7
a=type:H332
m=audio 49230 RTP/AVP 0
m=video 49232 RTP/AVP 31
m=application 12349 udp wb
m=control 49234 H323 mc
c=IN IP4 134.134.157.81

In this example, a general conferenceattribute (type:H332) is
specified stating that conference controlwill be provided by an
external H.332 tool, and a contactaddresses for the H.323 session
multipoint controller is given.

In this document, only the declarativestyle of conference control
declaration is specified. Other forms ofconference control should
specify an appropriate type attribute, andshould define the
implications this has for control media.

7. Security Considerations

SDP is a session description format thatdescribes multimedia
sessions. A session description should notbe trusted unless it has
been obtained by an authenticated transportprotocol from a trusted
source. Many different transport protocolsmay be used to distribute
session description, and the nature of theauthentication will differ
from transport to transport.

One transport that will frequently be usedto distribute session
descriptions is the Session AnnouncementProtocol (SAP). SAP
provides both encryption and authenticationmechanisms but due to the
nature of session announcements it islikely that there are many
occasions where the originator of a sessionannouncement cannot be
authenticated because they are previouslyunknown to the receiver of
the announcement and because no commonpublic key infrastructure is
available.

On receiving a session description over anunauthenticated transport
mechanism or from an untrusted party,software parsing the session
should take a few precautions. Session descriptioncontain
information required to start software onthe receivers system.
Software that parses a session descriptionMUST not be able to start
other software except that which isspecifically configured as
appropriate software to participate in multimediasessions. It is
normally considered INAPPROPRIATE forsoftware parsing a session
description to start, on a user's system,software that is
appropriate to participate in multimediasessions, without the user
first being informed that such softwarewill be started and giving
their consent. Thus a session descriptionarriving by session
announcement, email, session invitation, orWWW page SHOULD not
deliver the user into an {it interactive}multimedia session without
the user being aware that this will happen.As it is not always
simple to tell whether a session isinteractive or not, applications
that are unsure should assume sessions areinteractive.

In this specification, there are noattributes which would allow the
recipient of a session description to beinformed to start multimedia
tools in a mode where they default totransmitting. Under some
circumstances it might be appropriate todefine such attributes. If
this is done an application parsing asession description containing
such attributes SHOULD either ignore them,or inform the user that
joining this session will result in theautomatic transmission of
multimedia data. The default behaviour foran unknown attribute is
to ignore it.

Session descriptions may be parsed atintermediate systems such as
firewalls for the purposes of opening ahole in the firewall to allow
the participation in multimedia sessions.It is considered
INAPPROPRIATE for a firewall to open suchholes for unicast data
streams unless the session descriptioncomes in a request from inside
the firewall.

For multicast sessions, it is likely thatlocal administrators will
apply their own policies, but the exclusiveuse of "local" or "site-
local" administrative scope within thefirewall and the refusal of
the firewall to open a hole for such scopeswill provide separation
of global multicast sessions from localones.

Appendix A: SDP Grammar

This appendix provides an Augmented BNFgrammar for SDP. ABNF is
defined in RFC2234.

announcement = proto-version
origin-field
session-name-field
information-field
uri-field
email-fields
phone-fields
connection-field
bandwidth-fields
time-fields
key-field
attribute-fields
media-descriptions

proto-version = "v=" 1*DIGIT CRLF
;this memo describes version 0

origin-field = "o=" usernamespace
sess-id space sess-version space
nettype space addrtype space
addr CRLF

session-name-field = "s=" textCRLF

information-field = ["i=" textCRLF]

uri-field = ["u=" uri CRLF]

email-fields = *("e="email-address CRLF)

phone-fields = *("p="phone-number CRLF)

connection-field = ["c=" nettypespace addrtype space
connection-address CRLF]
;a connection field must be present
;in every media description or at the
;session-level

bandwidth-fields = *("b=" bwtype":" bandwidth CRLF)

time-fields = 1*( "t=" start-timespace stop-time
*(CRLF repeat-fields) CRLF)
[zone-adjustments CRLF]

repeat-fields = "r="repeat-interval space typed-time
1*(space typed-time)

zone-adjustments = time space["-"] typed-time
*(space time space ["-"]typed-time)

key-field = ["k=" key-type CRLF]

key-type = "prompt"
"clear:" key-data
"base64:" key-data
"uri:" uri

key-data = email-safe "~" "

attribute-fields = *("a="attribute CRLF)

media-descriptions = *( media-field
information-field
*(connection-field)
bandwidth-fields
key-field
attribute-fields )

media-field = "m=" media spaceport ["/" integer]
space proto 1*(space fmt) CRLF

media = 1*(alpha-numeric)
;typically "audio","video", "application"
;or "data"

fmt = 1*(alpha-numeric)
;typically an RTP payload type for audio
;and video media

proto = 1*(alpha-numeric)
;typically "RTP/AVP" or"udp" for IP4

port = 1*(DIGIT)
;should in the range "1024" to"65535" inclusive
;for UDP based media

attribute = (att-field ":"att-value) att-field

att-field = 1*(alpha-numeric)

att-value = byte-string

sess-id = 1*(DIGIT)
;should be unique for this originatingusername/host

sess-version = 1*(DIGIT)
;0 is a new session

connection-address = multicast-address
addr

multicast-address = 3*(decimal-uchar".") decimal-uchar "/" ttl
[ "/" integer ]
;multicast addresses may be in the range
;224.0.0.0 to 239.255.255.255

ttl = decimal-uchar

start-time = time "0"

stop-time = time "0"

time = POS-DIGIT 9*(DIGIT)
;sufficient for 2 more centuries

repeat-interval = typed-time

typed-time = 1*(DIGIT)[fixed-len-time-unit]

fixed-len-time-unit = "d""h" "m" "s"

bwtype = 1*(alpha-numeric)

bandwidth = 1*(DIGIT)

username = safe
;pretty wide definition, but doesn'tinclude space

email-address = email email "("email-safe ")"
email-safe "<" email">"

email = ;defined in RFC822

uri= ;defined in RFC1630

phone-number = phone phone "("email-safe ")"
email-safe "<" phone">"

phone = "+" POS-DIGIT 1*(space"-" DIGIT)
;there must be a space or hyphen betweenthe
;international code and the rest of thenumber.

nettype = "IN"
;list to be extended

addrtype = "IP4" "IP6"
;list to be extended

addr = FQDN unicast-address

FQDN = 4*(alpha-numeric"-"".")
;fully qualified domain name as specifiedin RFC1035

unicast-address = IP4-address IP6-address

IP4-address = b1 "."decimal-uchar "." decimal-uchar "." b4
b1 = decimal-uchar
;less than "224"; not"0" or "127"
b4 = decimal-uchar
;not "0"

IP6-address = ;to be defined

text = byte-string
;default is to interpret this as IS0-10646UTF8
;ISO 8859-1 requires a"a=charset:ISO-8859-1"
;session-level attribute to be used

byte-string =1*(0x01..0x090x0b0x0c0x0e..0xff)
;any byte except NUL, CR or LF

decimal-uchar = DIGIT
POS-DIGIT DIGIT
("1" 2*(DIGIT))
("2"("0""1""2""3""4") DIGIT)
("2" "5"("0""1""2""3""4""5"))

integer = POS-DIGIT *(DIGIT)

alpha-numeric = ALPHA DIGIT

DIGIT = "0" POS-DIGIT

POS-DIGIT ="1""2""3""4""5""6""7""8""9"

ALPHA ="a""b""c""d""e""f""g""h""i""j""k"
"l""m""n""o""p""q""r""s""t""u""v"
"w""x""y""z""A""B""C""D""E""F""G"
"H""I""J""K""L""M""N""O""P""Q""R"
"S""T""U""V""W""X""Y""Z"

email-safe = safe space tab

safe = alpha-numeric
"'" "'" "-""." "/" ":" "?" """
"#" "$""&" "*" ";" "=" "@""["
"]" "^" "_""`" "{" "" "}" "+"
"~" "

space = %d32
tab = %d9
CRLF = %d13.10

Appendix B: Guidelines for registering SDPnames with IANA

There are seven field names that may beregistered with IANA. Using
the terminology in the SDP specificationBNF, they are "media",
"proto", "fmt","att-field", "bwtype", "nettype" and"addrtype".

"media" (eg, audio, video,application, data).

Packetized media types, such as those usedby RTP, share the
namespace used by media types registry[RFC2048] (i.e. "MIME
types"). The list of valid media namesis the set of top-level
MIME content types. The set of media isintended to be small and
not to be extended except under rarecircumstances. (The MIME
subtype corresponds to the "fmt"parameter below).

"proto"

In general this should be an IETFstandards-track transport
protocol identifier such as RTP/AVP (rfc1889 under the rfc 1890
profile).

However, people will want to invent theirown proprietary
transport protocols. Some of these shouldbe registered as a
"fmt" using "udp" asthe protocol and some of which probably
can't be.

Where the protocol and the application areintimately linked,
such as with the LBL whiteboard wb whichused a proprietary and
special purpose protocol over UDP, theprotocol name should be
"udp" and the format name thatshould be registered is "wb". The
rules for formats (see below) apply to suchregistrations.

Where the proprietary transport protocolreally carries many
different data formats, it is possible toregister a new protocol
name with IANA. In such a case, an RFCMUSTbe produced
describing the protocol and referenced inthe registration. Such
an RFCMAY be informational, although it ispreferable if it is
standards-track.

"fmt"

The format namespace is dependent on thecontext of the "proto"
field, so a format cannot be registeredwithout specifying one or
more transport protocols that it appliesto.

Formats cover all the possible encodingsthat might want to be
transported in a multimedia session.

For RTP formats that have been assignedstatic payload types, the
payload type number is used. For RTPformats using a dynamic
payload type number, the dynamic payloadtype number is given as
the format and an additional "rtpmap"attribute specifies the
format and parameters.

For non-RTP formats, any unregisteredformat name may be
registered through the MIME-typeregistration process [RFC2048].
The type given here is the MIME subtypeonly (the top-level MIME
content type is specified by the mediaparameter). The MIME type
registration SHOULD reference astandards-track RFCwhich
describes the transport protocol for thismedia type. If there
is an existing MIME type for this format,the MIME registration
should be augmented to reference thetransport specification for
this media type. If there is not anexisting MIME type for this
format, and there exists no appropriatefile format, this should
be noted in the encoding considerations as"no appropriate file
format".

"att-field" (Attribute names)

Attribute field names MAY be registeredwith IANA, although this
is not compulsory, and unknown attributesare simply ignored.

When an attribute is registered, it must beaccompanied by a
brief specification stating the following:

o contact name, email address and telephonenumber

o attribute-name (as it will appear in SDP)

o long-form attribute name in English

o type of attribute (session level, medialevel, or both)

o whether the attribute value is subject tothe charset
attribute.

o a one paragraph explanation of thepurpose of the attribute.

o a specification of appropriate attributevalues for this
attribute.

IANA will not sanity check such attributeregistrations except to
ensure that they do not clash with existingregistrations.

Although the above is the minimum that IANAwill accept, if the
attribute is expected to see widespread useand interoperability
is an issue, authors are encouraged toproduce a standards-track
RFCthat specifies the attribute moreprecisely.

Submitters of registrations should ensurethat the specification
is in the spirit of SDP attributes, mostnotably that the
attribute is platform independent in thesense that it makes no
implicit assumptions about operatingsystems and does not name
specific pieces of software in a mannerthat might inhibit
interoperability.

"bwtype" (bandwidth specifiers)

A proliferation of bandwidth specifiers isstrongly discouraged.

New bandwidth specifiers may be registeredwith IANA. The
submission MUST reference a standards-trackRFCspecifying the
semantics of the bandwidth specifierprecisely, and indicating
when it should be used, and why theexisting registered bandwidth
specifiers do not suffice.

"nettype" (Network Type)

New network types may be registered withIANA if SDP needs to be
used in the context of non-internetenvironments. Whilst these
are not normally the preserve of IANA,there may be circumstances
when an Internet application needs tointeroperate with a non-
internet application, such as whengatewaying an internet
telephony call into the PSTN. The number ofnetwork types should
be small and should be rarely extended. Anew network type
cannot be registered without registering atleast one address
type to be used with that network type. Anew network type
registration MUST reference an RFCwhichgives details of the
network type and address type and specifieshow and when they
would be used. Such an RFCMAY beInformational.

"addrtype" (Address Type)

New address types may be registered withIANA. An address type
is only meaningful in the context of anetwork type, and any
registration of an address type MUSTspecify a registered network
type, or be submitted along with a networktype registration. A
new address type registration MUSTreference an RFCgiving
details of the syntax of the address type.Such an RFCMAY be
Informational. Address types are notexpected to be registered
frequently.

Registration Procedure

To register a name the above guidelinesshould be followed regarding
the required level of documentation that isrequired. The
registration itself should be sent to IANA.Attribute registrations
should include the information given above.Other registrations
should include the following additionalinformation:

o contact name, email address and telephonenumber

o name being registered (as it will appearin SDP)

o long-form name in English

o type of name ("media","proto", "fmt", "bwtype", "nettype", or
"addrtype")

o a one paragraph explanation of thepurpose of the registered name.

o a reference to the specification (egRFCnumber) of the registered
name.

IANA may refer any registration to the IESGor to any appropriate
IETF working group for review, and mayrequest revisions to be made
before a registration will be made.

Appendix C: Authors' Addresses

Mark Handley
Information Sciences Institute
c/o MIT Laboratory for Computer Science
545 Technology Square
Cambridge, MA 02139
United States
electronic mail: mjh@isi.edu

Van Jacobson
MS 46a-1121
Lawrence Berkeley Laboratory
Berkeley, CA 94720
United States
electronic mail: van@ee.lbl.gov

Acknowledgments

Many people in the IETF MMUSIC workinggroup have made comments and
suggestions contributing to this document.In particular, we would
like to thank Eve Schooler, Steve Casner,Bill Fenner, Allison
Mankin, Ross Finlayson, Peter Parnes, JoergOtt, Carsten Bormann, Rob
Lanphier and Steve Hanna.

References

[1] Mills, D., "Network Time Protocol(version 3) specification and
implementation", RFC1305, March 1992.

[2] Schulzrinne, H., Casner, S., Frederick,R. and V. Jacobson, "RTP:
A Transport Protocol for Real-TimeApplications", RFC1889, January
1996.

[3] Schulzrinne, H., "RTP Profile forAudio and Video Conferences
with Minimal Control", RFC1890,January 1996

[4] Handley, M., "SAP - SessionAnnouncement Protocol", Work in
Progress.

[5] V. Jacobson, S. McCanne, "vat -X11-based audio teleconferencing
tool" vat manual page, LawrenceBerkeley Laboratory, 1994.

[6] The Unicode Consortium, "TheUnicode Standard -- Version 2.0",
Addison-Wesley, 1996.

[7] ISO/IEC 10646-1:1993. InternationalStandard -- Information
technol- ogy -- Universal Multiple-OctetCoded Character Set (UCS) --
Part 1: Architecture and Basic MultilingualPlane. Five amendments
and a techn- ical corrigendum have beenpublished up to now. UTF-8
is described in Annex R, published asAmendment 2.

[8] Goldsmith, D., and M. Davis,"Using Unicode with MIME", RFC1641,
July 1994.

[9] Yergeau, F., "UTF-8, atransformation format of Unicode and ISO
10646", RFC2044, October 1996.

[10] ITU-T Recommendation H.332 (1998):"Multimedia Terminal for
Receiving Internet-based H.323Conferences", ITU, Geneva.

[11] Handley, M., Schooler, E., and H.Schulzrinne, "Session
Initiation Protocol (SIP)", Work inProgress.

[12] Schulzrinne, H., Rao, A., and R.Lanphier, "Real Time Streaming
Protocol (RTSP)", RFC2326, April 1998.

Full Copyright Statement

Copyright (C) The Internet Society (1998).All Rights Reserved.

This document and translations of it may becopied and furnished to
others, and derivative works that commenton or otherwise explain it
or assist in its implementation may beprepared, copied, published
and distributed, in whole or in part,without restriction of any
kind, provided that the above copyrightnotice and this paragraph are
included on all such copies and derivativeworks. However, this
document itself may not be modified in anyway, such as by removing
the copyright notice or references to theInternet Society or other
Internet organizations, except as neededfor the purpose of
developing Internet standards in which casethe procedures for
copyrights defined in the InternetStandards process must be
followed, or as required to translate itinto languages other than
English.

The limited permissions granted above areperpetual and will not be
revoked by the Internet Society or itssuccessors or assigns.

This document and the information containedherein is provided on an
"AS IS" basis and THE INTERNETSOCIETY AND THE INTERNET ENGINEERING
TASK FORCE DISCLAIMS ALL WARRANTIES,EXPRESS OR IMPLIED, INCLUDING
BUT NOT LIMITED TO ANY WARRANTY THAT THEUSE OF THE INFORMATION
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANYIMPLIED WARRANTIES OF
MERCHANTABILITY OR FITNESS FOR A PARTICULARPURPOSE.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: