RFC2327 - SDP: Session Description Protocol

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. 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值