draft-ietf-mmusic-sdp-new-03.txt   draft-ietf-mmusic-sdp-new-04.txt 
Internet Engineering Task Force MMUSIC WG Internet Engineering Task Force MMUSIC WG
INTERNET-DRAFT Mark Handley/ACIRI INTERNET-DRAFT Mark Handley/ACIRI
draft-ietf-mmusic-sdp-new-03.txt Van Jacobson/Packet Design draft-ietf-mmusic-sdp-new-04.txt Van Jacobson/Packet Design
Colin Perkins/ISI Colin Perkins/ISI
13 July 2001 21 November 2001
Expires: January 2002 Expires: May 2002
SDP: Session Description Protocol SDP: Session Description Protocol
Status of this Memo Status of this Memo
This document is an Internet-Draft and is in full conformance with all This document is an Internet-Draft and is in full conformance with all
provisions of Section 10 of RFC2026. provisions of Section 10 of RFC2026.
Internet-Drafts are working documents of the Internet Engineering Task Internet-Drafts are working documents of the Internet Engineering Task
Force (IETF), its areas, and its working groups. Note that other groups Force (IETF), its areas, and its working groups. Note that other groups
skipping to change at page 8, line 17 skipping to change at page 8, line 17
<type>=<value> <type>=<value>
<type> is always exactly one character and is case-significant. <value> <type> is always exactly one character and is case-significant. <value>
is a structured text string whose format depends on <type>. It also is a structured text string whose format depends on <type>. It also
will be case-significant unless a specific field defines otherwise. will be case-significant unless a specific field defines otherwise.
Whitespace MUST NOT be used either side of the `=' sign. In general Whitespace MUST NOT be used either side of the `=' sign. In general
<value> is either a number of fields delimited by a single space <value> is either a number of fields delimited by a single space
character or a free format string. character or a free format string.
A session description consists of a session-level description (details A session description consists of a session-level description (details
that apply to the whole session and all media streams) and optionally that apply to the whole session and all media streams) and optionally
several media-level descriptions (details that apply onto to a single several media-level descriptions (details that apply only to a single
media stream). media stream).
An announcement consists of a session-level section followed by zero or An announcement consists of a session-level section followed by zero or
more media-level sections. The session-level part starts with a `v=' more media-level sections. The session-level part starts with a `v='
line and continues to the first media-level section. The media line and continues to the first media-level section. The media
description starts with an `m=' line and continues to the next media description starts with an `m=' line and continues to the next media
description or end of the whole session description. In general, description or end of the whole session description. In general,
session-level values are the default for all media unless overridden by session-level values are the default for all media unless overridden by
an equivalent media-level value. an equivalent media-level value.
skipping to change at page 11, line 34 skipping to change at page 11, line 34
this version of this session description, and the subfields excepting this version of this session description, and the subfields excepting
the version taken together identify the session irrespective of any the version taken together identify the session irrespective of any
modifications. modifications.
Session Name Session Name
s=<session name> s=<session name>
The ``s='' field is the session name. There MUST be one and only one The ``s='' field is the session name. There MUST be one and only one
``s='' field per session description, and it SHOULD contain ISO 10646 ``s='' field per session description, and it SHOULD contain ISO 10646
characters (but see also the `charset' attribute below). characters (but see also the `charset' attribute below). If a session
has no meaningful name, the value ``s=-'' SHOULD be used.
Session and Media Information Session and Media Information
i=<session description> i=<session description>
The ``i='' field is information about the session. There may be at most The ``i='' field is information about the session. There may be at most
one session-level ``i='' field per session description, and at most one one session-level ``i='' field per session description, and at most one
``i='' field per media. Although it may be omitted, this is NOT ``i='' field per media. Although it may be omitted, this is NOT
RECOMMENDED for session announcements, and user interfaces for composing RECOMMENDED for session announcements, and user interfaces for composing
sessions should require text to be entered. If it is present it must sessions should require text to be entered. If it is present it must
skipping to change at page 13, line 29 skipping to change at page 13, line 29
The free text string should be in the ISO-10646 character set with The free text string should be in the ISO-10646 character set with
UTF-8 encoding, or alternatively in ISO-8859-1 or other encodings if UTF-8 encoding, or alternatively in ISO-8859-1 or other encodings if
the appropriate charset session-level attribute is set. the appropriate charset session-level attribute is set.
Connection Data Connection Data
c=<network type> <address type> <connection address> c=<network type> <address type> <connection address>
The ``c='' field contains connection data. The ``c='' field contains connection data.
A session announcement MUST contain one ``c='' field in each media A session announcement MUST contain either one ``c='' field in each
description (see below) or a ``c='' field at the session-level. It MAY media description (see below) or a ``c='' field at the session-level.
contain a session-level ``c='' field and one additional ``c='' field per It MAY contain a session-level ``c='' field and one additional ``c=''
media description, in which case the per-media values override the field per media description, in which case the per-media values override
session-level settings for the relevant media. the session-level settings for the relevant media.
The first sub-field is the network type, which is a text string giving 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 the type of network. Initially ``IN'' is defined to have the meaning
``Internet''. ``Internet''.
The second sub-field is the address type. This allows SDP to be used The second sub-field is the address type. This allows SDP to be used
for sessions that are not IP based. Currently only IP4 and IP6 are for sessions that are not IP based. Currently only IP4 and IP6 are
defined. defined.
The third sub-field is the connection address. Optional extra sub- The third sub-field is the connection address. Optional extra sub-
skipping to change at page 14, line 18 skipping to change at page 14, line 18
o Conferences using an IP multicast connection address MUST also have o Conferences using an IP multicast connection address MUST also have
a time to live (TTL) value present in addition to the multicast a time to live (TTL) value present in addition to the multicast
address. The TTL and the address together define the scope with address. The TTL and the address together define the scope with
which multicast packets sent in this conference will be sent. TTL which multicast packets sent in this conference will be sent. TTL
values MUST be in the range 0-255. values MUST be in the range 0-255.
The TTL for the session is appended to the address using a slash as The TTL for the session is appended to the address using a slash as
a separator. An example is: a separator. An example is:
c=IN IP4 224.2.1.1/127 c=IN IP6 FF00:03AD::7F2E:172A:1E24/127
Hierarchical or layered encoding schemes are data streams where the Hierarchical or layered encoding schemes are data streams where the
encoding from a single media source is split into a number of encoding from a single media source is split into a number of
layers. The receiver can choose the desired quality (and hence layers. The receiver can choose the desired quality (and hence
bandwidth) by only subscribing to a subset of these layers. Such bandwidth) by only subscribing to a subset of these layers. Such
layered encodings are normally transmitted in multiple multicast layered encodings are normally transmitted in multiple multicast
groups to allow multicast pruning. This technique keeps unwanted groups to allow multicast pruning. This technique keeps unwanted
traffic from sites only requiring certain levels of the hierarchy. traffic from sites only requiring certain levels of the hierarchy.
For applications requiring multiple multicast groups, we allow the For applications requiring multiple multicast groups, we allow the
following notation to be used for the connection address: following notation to be used for the connection address:
skipping to change at page 15, line 35 skipping to change at page 15, line 35
session is different from the bandwidth implicit from the scope, a session is different from the bandwidth implicit from the scope, a
`b=CT:...' line should be supplied for the session giving the `b=CT:...' line should be supplied for the session giving the
proposed upper limit to the bandwidth used. The primary purpose proposed upper limit to the bandwidth used. The primary purpose
of this is to give an approximate idea as to whether two or more of this is to give an approximate idea as to whether two or more
sessions can co-exist simultaneously. sessions can co-exist simultaneously.
AS Application-Specific Maximum: The bandwidth is interpreted to be AS Application-Specific Maximum: The bandwidth is interpreted to be
application-specific, i.e., will be the application's concept of application-specific, i.e., will be the application's concept of
maximum bandwidth. Normally this will coincide with what is set maximum bandwidth. Normally this will coincide with what is set
on the application's ``maximum bandwidth'' control if applicable. on the application's ``maximum bandwidth'' control if applicable.
For RTP based applications, AS gives the RTP ``session bandwidth''
as defined in section 6.2 of [2].
Note that CT gives a total bandwidth figure for all the media at all Note that CT gives a total bandwidth figure for all the media at all
sites. AS gives a bandwidth figure for a single media at a single sites. AS gives a bandwidth figure for a single media at a single
site, although there may be many sites sending simultaneously. site, although there may be many sites sending simultaneously.
o Extension Mechanism: Tool writers can define experimental bandwidth o Extension Mechanism: Tool writers can define experimental bandwidth
modifiers by prefixing their modifier with ``X-''. For example: modifiers by prefixing their modifier with ``X-''. For example:
b=X-YZ:128 b=X-YZ:128
skipping to change at page 17, line 28 skipping to change at page 17, line 28
t=3034423619 3042462419 t=3034423619 3042462419
r=604800 3600 0 90000 r=604800 3600 0 90000
To make description more compact, times may also be given in units To make description more compact, times may also be given in units
of days, hours or minutes. The syntax for these is a number of days, hours or minutes. The syntax for these is a number
immediately followed by a single case-sensitive character. immediately followed by a single case-sensitive character.
Fractional units are not allowed - a smaller unit should be used Fractional units are not allowed - a smaller unit should be used
instead. The following unit specification characters are allowed: instead. The following unit specification characters are allowed:
d - days (86400 seconds) d - days (86400 seconds)
h - minutes (3600 seconds) h - hours (3600 seconds)
m - minutes (60 seconds) m - minutes (60 seconds)
s - seconds (allowed for completeness but not recommended) s - seconds (allowed for completeness but not recommended)
Thus, the above announcement could also have been written: Thus, the above announcement could also have been written:
r=7d 1h 0 25h r=7d 1h 0 25h
Monthly and yearly repeats cannot currently be directly specified Monthly and yearly repeats cannot currently be directly specified
with a single SDP repeat time - instead separate "t" fields should with a single SDP repeat time - instead separate "t" fields should
be used to explicitly list the session times. be used to explicitly list the session times.
skipping to change at page 24, line 5 skipping to change at page 24, line 5
RTP profiles that specify the use of dynamic payload types must RTP profiles that specify the use of dynamic payload types must
define the set of valid encoding names and/or a means to register define the set of valid encoding names and/or a means to register
encoding names if that profile is to be used with SDP. encoding names if that profile is to be used with SDP.
Experimental encoding formats can also be specified using rtpmap. Experimental encoding formats can also be specified using rtpmap.
RTP formats that are not registered as standard format names must be RTP formats that are not registered as standard format names must be
preceded by ``X-''. Thus a new experimental redundant audio stream preceded by ``X-''. Thus a new experimental redundant audio stream
called GSMLPC using dynamic payload type 99 could be specified as: called GSMLPC using dynamic payload type 99 could be specified as:
m=video 49232 RTP/AVP 99 m=audio 49232 RTP/AVP 99
a=rtpmap:99 X-GSMLPC/8000 a=rtpmap:99 X-GSMLPC/8000
Such an experimental encoding requires that any site wishing to Such an experimental encoding requires that any site wishing to
receive the media stream has relevant configured state in its receive the media stream has relevant configured state in its
session directory to know which tools are appropriate. session directory to know which tools are appropriate.
Note that RTP audio formats typically do not include information Note that RTP audio formats typically do not include information
about the number of samples per packet. If a non-default (as about the number of samples per packet. If a non-default (as
defined in the RTP Audio/Video Profile) packetisation is required, defined in the RTP Audio/Video Profile) packetisation is required,
the``ptime'' attribute is used as given below. the``ptime'' attribute is used as given below.
skipping to change at page 25, line 19 skipping to change at page 25, line 19
and it is intended as a recommendation for the and it is intended as a recommendation for the
encoding/packetisation of audio. It is a media attribute, and is encoding/packetisation of audio. It is a media attribute, and is
not dependent on charset. not dependent on charset.
a=maxptime:<maximum packet time> a=maxptime:<maximum packet time>
The maximum amount of media which can be encapsulated in each The maximum amount of media which can be encapsulated in each
packet, expressed as time in milliseconds. The time shall be packet, expressed as time in milliseconds. The time shall be
calculated as the sum of the time the media present in the packet calculated as the sum of the time the media present in the packet
represents. The time SHOULD be a multiple of the frame size. This is represents. The time SHOULD be a multiple of the frame size. This is
probably only meaningful for audio data. It is a media attribute, probably only meaningful for audio data. It is a media attribute,
and is not dependent on charset. and is not dependent on charset. Note that this attribute was
introduced after RFC 2327, and non updated implementations will
ignore this attribute.
a=rtpmap:<payload type> <encoding name>/<clock rate>[/<encoding
parameters>]
See the section on Media Announcements (the ``m='' field). This is a
media attribute.
a=recvonly a=recvonly
This specifies that the tools should be started in receive-only mode This specifies that the tools should be started in receive-only mode
where applicable. It can be either a session or media attribute, and where applicable. It can be either a session or media attribute, and
is not dependent on charset. is not dependent on charset.
a=sendrecv a=sendrecv
This specifies that the tools should be started in send and receive This specifies that the tools should be started in send and receive
mode. This is necessary for interactive conferences with tools such mode. This is necessary for interactive conferences with tools such
as wb which defaults to receive only mode. It can be either a as wb which defaults to receive only mode. It can be either a
session or media attribute, and is not dependent on charset. session or media attribute, and is not dependent on charset.
a=sendonly a=sendonly
This specifies that the tools should be started in send-only mode. This specifies that the tools should be started in send-only mode.
An example may be where a different unicast address is to be used An example may be where a different unicast address is to be used
for a traffic destination than for a traffic source. In such a case, for a traffic destination than for a traffic source. In such a case,
two media descriptions may be use, one sendonly and one recvonly. It two media descriptions may be use, one sendonly and one recvonly. It
can be either a session or media attribute, but would normally only can be either a session or media attribute, but would normally only
be used as a media attribute, and is not dependent on charset. be used as a media attribute, and is not dependent on charset.
a=inactive
This specifies that the tools should be started in inactive mode.
This is necessary for interactive conferences where users can put
other users on hold. No media is sent over an inactive media stream.
It can be either a session or media attribute, and is not dependent
on charset.
a=orient:<whiteboard orientation> a=orient:<whiteboard orientation>
Normally this is only used in a whiteboard media specification. It Normally this is only used in a whiteboard media specification. It
specifies the orientation of a the whiteboard on the screen. It is specifies the orientation of a the whiteboard on the screen. It is
a media attribute. Permitted values are `portrait', `landscape' and a media attribute. Permitted values are `portrait', `landscape' and
`seascape' (upside down landscape). It is not dependent on charset `seascape' (upside down landscape). It is not dependent on charset
a=type:<conference type> a=type:<conference type>
This specifies the type of the conference. Suggested values are This specifies the type of the conference. Suggested values are
`broadcast', `meeting', `moderated', `test' and `H332'. `recvonly' `broadcast', `meeting', `moderated', `test' and `H332'. `recvonly'
should be the default for `type:broadcast' sessions, `type:meeting' should be the default for `type:broadcast' sessions, `type:meeting'
skipping to change at page 32, line 10 skipping to change at page 32, line 10
administrators will apply their own policies, but the exclusive use of administrators will apply their own policies, but the exclusive use of
"local" or "site-local" administrative scope within the firewall and the "local" or "site-local" administrative scope within the firewall and the
refusal of the firewall to open a hole for such scopes will provide refusal of the firewall to open a hole for such scopes will provide
separation of global multicast sessions from local ones. separation of global multicast sessions from local ones.
Appendix A: SDP Grammar Appendix A: SDP Grammar
This appendix provides an Augmented BNF grammar for SDP. ABNF is This appendix provides an Augmented BNF grammar for SDP. ABNF is
defined in RFC 2234. defined in RFC 2234.
announcement = proto-version ; SDP Syntax
origin-field announcement = proto-version
session-name-field origin-field
information-field session-name-field
uri-field information-field
email-fields uri-field
phone-fields email-fields
connection-field phone-fields
bandwidth-fields connection-field
time-fields bandwidth-fields
key-field time-fields
attribute-fields key-field
media-descriptions attribute-fields
media-descriptions
proto-version = "v=" 1*DIGIT CRLF
;this draft describes version 0
origin-field = "o=" username space
sess-id space sess-version space
nettype space addrtype space
addr CRLF
session-name-field = "s=" text CRLF proto-version = "v=" 1*DIGIT CRLF
;this memo describes version 0
information-field = ["i=" text CRLF] origin-field = "o=" username SP sess-id SP sess-version SP
nettype SP addrtype SP addr CRLF
uri-field = ["u=" uri CRLF] session-name-field = ["s=" text CRLF]
email-fields = *("e=" email-address CRLF) information-field = ["i=" text CRLF]
phone-fields = *("p=" phone-number CRLF) uri-field = ["u=" uri CRLF]
connection-field = ["c=" nettype space addrtype space email-fields = *("e=" email-address CRLF)
connection-address CRLF]
;a connection field must be present
;in every media description or at the
;session-level
bandwidth-fields = *("b=" bwtype ":" bandwidth CRLF) phone-fields = *("p=" phone-number CRLF)
time-fields = 1*( "t=" start-time space stop-time connection-field = ["c=" nettype SP addrtype SP
*(CRLF repeat-fields) CRLF) connection-address CRLF]
[zone-adjustments CRLF] ;a connection field must be present
;in every media description or at the
;session-level
repeat-fields = "r=" repeat-interval space typed-time bandwidth-fields = *("b=" bwtype ":" bandwidth CRLF)
1*(space typed-time)
zone-adjustments = time space [``-''] typed-time time-fields = 1*( "t=" start-time SP stop-time
*(space time space [``-''] typed-time) *(CRLF repeat-fields) CRLF)
[zone-adjustments CRLF]
key-field = ["k=" key-type CRLF] repeat-fields = "r=" repeat-interval SP typed-time
1*(SP typed-time)
key-type = "prompt" | zone-adjustments = "z=" time SP ["-"] typed-time
"clear:" key-data | *(SP time SP ["-"] typed-time)
"base64:" key-data |
"uri:" uri
key-data = email-safe | "~" | "\" key-field = ["k=" key-type CRLF]
attribute-fields = *("a=" attribute CRLF) attribute-fields = *("a=" attribute CRLF)
media-descriptions = *( media-field media-descriptions = *( media-field
information-field information-field
*(connection-field) *connection-field
bandwidth-fields bandwidth-fields
key-field key-field
attribute-fields ) attribute-fields )
media-field = "m=" media space port ["/" integer] media-field = "m=" media SP port ["/" integer]
space proto 1*(space fmt) CRLF SP proto 1*(SP fmt) CRLF
media = 1*(alpha-numeric) ; sub-rules of 'o='
;typically "audio", "video", "application" username = non-ws-string
;or "data" ;pretty wide definition, but doesn't include space
fmt = 1*(alpha-numeric) sess-id = 1*DIGIT
;typically an RTP payload type for audio ;should be unique for this originating username/host
;and video media
proto = 1*(alpha-numeric) sess-version = 1*DIGIT
;typically "RTP/AVP" or "udp" for IP4 ;0 is a new session
port = 1*(DIGIT) nettype = token
;should in the range "1024" to "65535" inclusive ;typically "IN"
;for UDP based media
attribute = (att-field ":" att-value) | att-field addrtype = token
;typically "IP4" or "IP6"
att-field = 1*(alpha-numeric) ; sub-rules of 'u='
uri = URI-reference; defined in RFC2396/2732
att-value = byte-string ; sub-rules of 'e='
email-address = email *SP "(" 1*email-safe ")" |
1*email-safe "<" email ">" |
email
sess-id = 1*(DIGIT) email = addr-spec ; defined in RFC2822
;should be unique for this originating username/host ; modified to remove CFWS
sess-version = 1*(DIGIT) ; sub-rules of 'p='
;0 is a new session phone-number = phone *SP "(" 1*email-safe ")" |
1*email-safe "<" phone ">" |
phone
connection-address = multicast-address phone = "+" POS-DIGIT 1*(SP | "-" | DIGIT)
| unicast-address ;there must be a space or hyphen between the
;international code and the rest of the number.
multicast-address = IP4-multicast | IP6-multicast ; Should this use the tel: URL syntax?
IP4-multicast = m1 3*(decimal_uchar ".") decimal_uchar "/" ttl ; sub-rules of 'c='
[ "/" integer ] connection-address = multicast-address
;IPv4 multicast addresses may be in the range | addr
;224.0.0.0 to 239.255.255.255
m1 = ("22" ("4"|"5"|"6"|"7"|"8"|"9")) | ("23" DIGIT )) ; sub-rules of 'b='
IP6-multicast = hexpart [ ":" IP4-multicast ] "/" ttl [ "/" integer ] bwtype = token
; IPv6 address starting with FF00
ttl = decimal_uchar bandwidth = 1*DIGIT
start-time = time | "0" ; sub-rules of 't='
start-time = time | "0"
stop-time = time | "0" stop-time = time | "0"
time = POS-DIGIT 9*(DIGIT) time = POS-DIGIT 9*DIGIT
;sufficient for 2 more centuries ; 10-digit NTP time represents times between
; 1931 and 5068 AD. 9* allows times after that
; as well.
repeat-interval = typed-time ; sub-rules of 'r=' and 'z='
repeat-interval = typed-time
typed-time = 1*(DIGIT) [fixed-len-time-unit] typed-time = POS-DIGIT *DIGIT [fixed-len-time-unit]
fixed-len-time-unit = ``d'' | ``h'' | ``m'' | ``s'' fixed-len-time-unit = "d" | "h" | "m" | "s"
bwtype = 1*(alpha-numeric) ; sub-rules of 'k='
key-type = "prompt" |
"clear:" text |
"base64:" base64 |
"uri:" uri |
key-method [ ":" text ]
bandwidth = 1*(DIGIT) base64 = *base64-unit [base64-pad]
base64-unit = 4base64-char
base64-pad = 2base64-char "==" | 3base64-char "="
base64-char = ALPHA | DIGIT | "+" | "/"
username = safe key-method = token
;pretty wide definition, but doesn't include space ; sub-rules of 'a='
attribute = (att-field ":" att-value) | att-field
email-address = email | email "(" email-safe ")" | att-field = token
email-safe "<" email ">"
email = ;defined in RFC822 att-value = byte-string
uri= ;defined in RFC1630 and RFC2732 ; sub-rules of 'm='
media = token
;typically "audio", "video", "application"
;or "data"
phone-number = phone | phone "(" email-safe ")" | fmt = token
email-safe "<" phone ">" ;typically an RTP payload type for audio
;and video media
phone = "+" POS-DIGIT 1*(space | "-" | DIGIT) proto = token "/" token
;there must be a space or hyphen between the | token
;international code and the rest of the number. ;typically "RTP/AVP" or "udp" for IP4
nettype = "IN" port = 1*DIGIT
;list to be extended ;should in the range "1024" to "65535" inclusive
;for UDP based media
addrtype = "IP4" | "IP6" ; generic sub-rules: addressing
;list to be extended multicast-address = addr "/" ttl [ "/" integer ]
;IPv4 multicast addresses must be in the range
;224.0.0.0 to 239.255.255.255
;IPv6 multicast addresses must begin with the byte
;FF or include an IPv4 multicast address
addr = FQDN | unicast-address ttl = (POS-DIGIT *2DIGIT) | "0"
FQDN = 4*(alpha-numeric|"-"|".") addr = IPv4address | IPv6address | FQDN | extension-addr
;fully qualified domain name as specified in RFC1035
unicast-address = IP4-address | IP6-address FQDN = *( domainlabel "." ) toplabel
domainlabel = alpha-numeric restoflabel
IP4-address = b1 "." decimal_uchar "." decimal_uchar "." b4 toplabel = ALPHA restoflabel
b1 = decimal_uchar
;less than "224"; not "0" or "127"
b4 = decimal_uchar
;not "0"
IP6-address = hexpart [ ":" IP4-address ] restoflabel = *(*("-") alpha-numeric)
hexpart = hexseq | hexseq "::" [ hexseq ] | "::" [ hexseq ]
hexseq = hex4 *( ":" hex4)
hex4 = 1*4HEXDIG
text = byte-string extension-addr = non-ws-string
;default is to interpret this as IS0-10646 UTF8
;ISO 8859-1 requires a "a=charset:ISO-8859-1"
;session-level attribute to be used
byte-string = 1*(0x01..0x09|0x0b|0x0c|0x0e..0xff) ; generic sub-rules: datatypes
;any byte except NUL, CR or LF text = byte-string
;default is to interpret this as IS0-10646 UTF8
;ISO 8859-1 requires a "a=charset:ISO-8859-1"
;session-level attribute to be used
decimal_uchar = DIGIT byte-string = 1*(%x01-09|%x0b-0c|%x0e-ff)
| POS-DIGIT DIGIT ;any byte except NUL, CR or LF
| ("1" 2*(DIGIT))
| ("2" ("0"|"1"|"2"|"3"|"4") DIGIT)
| ("2" "5" ("0"|"1"|"2"|"3"|"4"|"5"))
integer = POS-DIGIT *(DIGIT) non-ws-string = 1*(VCHAR|%x80-ff)
;string of visible US-ASCII, or high-bit, characters
alpha-numeric = ALPHA | DIGIT token-char = %x21|%x23-27|%x2a-2b|%x2d-2e|%x30-39|
%x41-5a|%x5e-7e
; definition from RFC 2045 -
; "any (US-ASCII) CHAR except SPACE, CTLs,
; or tspecials".
; the tspecials are ()<>@,;:
DIGIT = "0" | POS-DIGIT token = 1*(token-char)
POS-DIGIT = "1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9" email-safe = 1*(%x01-09|%x0b-0c|%x0e-27|
%x2a-3b|%x3d|%x3e-ff)
;any byte except NUL, CR, LF, or the quoting
;characters ()<>
ALPHA = "a"|"b"|"c"|"d"|"e"|"f"|"g"|"h"|"i"|"j"|"k"| integer = POS-DIGIT *DIGIT
"l"|"m"|"n"|"o "|"p"|"q"|"r"|"s"|"t"|"u"|"v"| ; generic sub-rules: primitives
"w"|"x"|"y"|"z"|"A"|"B"|"C "|"D"|"E"|"F"|"G"| alpha-numeric = ALPHA | DIGIT
"H"|"I"|"J"|"K"|"L"|"M"|"N"|"O"|"P"|" Q"|"R"|
"S"|"T"|"U"|"V"|"W"|"X"|"Y"|"Z"
email-safe = safe | space | tab POS-DIGIT = %x31-39 ; 1 - 9
safe = alpha-numeric | ; external references:
"'" | "'" | "-" | "." | "/" | ":" | "?" | """ | ; ALPHA, DIGIT, CRLF, SP, VCHAR: from RFC 2234
"#" | "$" | "&" | "*" | ";" | "=" | "@" | "[" | ; IPv4address, IPv6address: From RFC 2373
"]" | "^" | "_" | "`" | "{" | "|" | "}" | "+" | ; URI-reference: from RFC 2396, as modified by RFC 2732
"~" | "\" ; addr-spec: from RFC 2822
space = %d32
tab = %d9
CRLF = %d13.10
Appendix B: Guidelines for registering SDP names with IANA Appendix B: Guidelines for registering SDP names with IANA
There are seven field names that may be registered with IANA. Using the There are seven field names that may be registered with IANA. Using the
terminology in the SDP specification BNF, they are "media", "proto", terminology in the SDP specification BNF, they are "media", "proto",
"fmt", "att-field", "bwtype", "nettype" and "addrtype". "fmt", "att-field", "bwtype", "nettype" and "addrtype".
"media" (eg, audio, video, application, data). "media" (eg, audio, video, application, data).
The set of media is intended to be small and not to be extended The set of media is intended to be small and not to be extended
except under rare circumstances. The same rules should apply for except under rare circumstances. The same rules should apply for
skipping to change at page 42, line 5 skipping to change at page 43, line 5
o a one paragraph explanation of the purpose of the registered name. o a one paragraph explanation of the purpose of the registered name.
o a reference to the specification (eg RFC number) of the registered o a reference to the specification (eg RFC number) of the registered
name. name.
IANA may refer any registration to the IESG or to any appropriate IETF IANA may refer any registration to the IESG or to any appropriate IETF
working group for review, and may request revisions to be made before a working group for review, and may request revisions to be made before a
registration will be made. registration will be made.
Appendix C: Authors' Addresses Appendix C: Changes from RFC 2327
o Rewrite the ABNF syntax (thanks to Jonathan Lennox)
o Add a=inactive attribute.
o Add a=maxptime attribute.
o RFC 2327 mandated that either e= or p= was required. Both are now
optional, to reflect actual usage.
o Removed references to "conference" from the description of the t=
line, to make it less SAP oriented.
o Note about wrap-around of NTP timestamps in t=
o Update BNF to support IPv6.
o References have been updated.
o Section 3.1 was replaced with a reference to RFC 2119, and the memo
has been updated to use the RFC 2119 terminology (MUST, SHOULD,
etc).
o Use of "application/sdp" as MIME a type for SDP files is now "MUST"
rather than "SHOULD".
o A number of sections have been updated to be less SAP specific, and
to reference other current uses of SDP such as RTSP and SIP.
o The section on concatenation of session descriptions (which was not
allowed in SAP, but allowed in other cases) has been removed. It is
assumed that transports of SDP specify will specify this.
o The description of the c= line has been updated to reflect common
usage of SDP, rather than Mbone conferencing with SAP.
o The b= line no longer makes a normative reference to the Mbone FAQ
for bandwidth limits at various TTLs. The AS modifier to b= is
noted as being the RTP session bandwidth.
o Define relation between the m= line and MIME types
o Note use of s= in sessions with no meaningful name
o Note that a=rtpmap is a media level attribute
Appendix D: Authors' Addresses
Mark Handley Mark Handley
AT&T Center for Internet Research at ICSI, AT&T Center for Internet Research at ICSI,
International Computer Science Institute, International Computer Science Institute,
1947 Center Street, Suite 600, 1947 Center Street, Suite 600,
Berkeley, CA 94704, USA Berkeley, CA 94704, USA
Email: mjh@isi.edu Email: mjh@aciri.org
Van Jacobson Van Jacobson
MS 46a-1121 MS 46a-1121
Lawrence Berkeley Laboratory Lawrence Berkeley Laboratory
Berkeley, CA 94720 Berkeley, CA 94720
United States United States
Email: van@ee.lbl.gov Email: van@ee.lbl.gov
Colin Perkins Colin Perkins
USC Information Sciences Institute USC Information Sciences Institute
3811 N. Fairfax Drive, Suite 200 3811 N. Fairfax Drive, Suite 200
Arlington, VA 22203 Arlington, VA 22203
United States United States
Email: csp@isi.edu Email: csp@isi.edu
Acknowledgments Acknowledgments
Many people in the IETF MMUSIC working group have made comments and Many people in the IETF MMUSIC working group have made comments and
suggestions contributing to this document. In particular, we would like suggestions contributing to this document. In particular, we would like
to thank Eve Schooler, Steve Casner, Bill Fenner, Allison Mankin, Ross to thank Eve Schooler, Steve Casner, Bill Fenner, Allison Mankin, Ross
Finlayson, Peter Parnes, Joerg Ott, Carsten Bormann and Steve Hanna. Finlayson, Peter Parnes, Joerg Ott, Carsten Bormann, Steve Hanna and
Jonathan Lennox.
References References
[1] D. Mills, ``Network Time Protocol (version 3) specification and [1] D. Mills, ``Network Time Protocol (version 3) specification and
implementation", RFC 1305, March 1992. implementation", RFC 1305, March 1992.
[2] H. Schulzrinne, S. Casner, R. Frederick and V. Jacobson, ``RTP: A [2] H. Schulzrinne, S. Casner, R. Frederick and V. Jacobson, ``RTP: A
Transport Protocol for Real-Time Applications'', RFC 1889, January Transport Protocol for Real-Time Applications'', RFC 1889, January
1996. 1996.
 End of changes. 76 change blocks. 
166 lines changed or deleted 241 lines changed or added

This html diff was produced by rfcdiff 1.46. The latest version is available from http://tools.ietf.org/tools/rfcdiff/