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 ">" | | ||||
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/ |