rfc8866.original | rfc8866.txt | |||
---|---|---|---|---|
Network Working Group A. Begen | Internet Engineering Task Force (IETF) A. Begen | |||
Internet-Draft Networked Media | Request for Comments: 8866 Networked Media | |||
Obsoletes: 4566 (if approved) P. Kyzivat | Obsoletes: 4566 P. Kyzivat | |||
Intended status: Standards Track | Category: Standards Track | |||
Expires: February 10, 2020 C. Perkins | ISSN: 2070-1721 C. Perkins | |||
University of Glasgow | University of Glasgow | |||
M. Handley | M. Handley | |||
UCL | UCL | |||
August 9, 2019 | September 2020 | |||
SDP: Session Description Protocol | SDP: Session Description Protocol | |||
draft-ietf-mmusic-rfc4566bis-37 | ||||
Abstract | Abstract | |||
This memo defines the Session Description Protocol (SDP). SDP is | This memo defines the Session Description Protocol (SDP). SDP is | |||
intended for describing multimedia sessions for the purposes of | intended for describing multimedia sessions for the purposes of | |||
session announcement, session invitation, and other forms of | session announcement, session invitation, and other forms of | |||
multimedia session initiation. This document obsoletes RFC 4566. | multimedia session initiation. This document obsoletes RFC 4566. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on February 10, 2020. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc8866. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2019 IETF Trust and the persons identified as the | Copyright (c) 2020 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
skipping to change at page 2, line 23 ¶ | skipping to change at line 64 ¶ | |||
modifications of such material outside the IETF Standards Process. | modifications of such material outside the IETF Standards Process. | |||
Without obtaining an adequate license from the person(s) controlling | Without obtaining an adequate license from the person(s) controlling | |||
the copyright in such materials, this document may not be modified | the copyright in such materials, this document may not be modified | |||
outside the IETF Standards Process, and derivative works of it may | outside the IETF Standards Process, and derivative works of it may | |||
not be created outside the IETF Standards Process, except to format | not be created outside the IETF Standards Process, except to format | |||
it for publication as an RFC or to translate it into languages other | it for publication as an RFC or to translate it into languages other | |||
than English. | than English. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction | |||
2. Glossary of Terms . . . . . . . . . . . . . . . . . . . . . . 4 | 2. Glossary of Terms | |||
3. Examples of SDP Usage . . . . . . . . . . . . . . . . . . . . 5 | 3. Examples of SDP Usage | |||
3.1. Session Initiation . . . . . . . . . . . . . . . . . . . 5 | 3.1. Session Initiation | |||
3.2. Streaming Media . . . . . . . . . . . . . . . . . . . . . 5 | 3.2. Streaming Media | |||
3.3. Email and the World Wide Web . . . . . . . . . . . . . . 5 | 3.3. Email and the World Wide Web | |||
3.4. Multicast Session Announcement . . . . . . . . . . . . . 5 | 3.4. Multicast Session Announcement | |||
4. Requirements and Recommendations . . . . . . . . . . . . . . 6 | 4. Requirements and Recommendations | |||
4.1. Media and Transport Information . . . . . . . . . . . . . 7 | 4.1. Media and Transport Information | |||
4.2. Timing Information . . . . . . . . . . . . . . . . . . . 7 | 4.2. Timing Information | |||
4.3. Obtaining Further Information about a Session . . . . . . 8 | 4.3. Obtaining Further Information about a Session | |||
4.4. Internationalization . . . . . . . . . . . . . . . . . . 8 | 4.4. Internationalization | |||
5. SDP Specification . . . . . . . . . . . . . . . . . . . . . . 8 | 5. SDP Specification | |||
5.1. Protocol Version ("v=") . . . . . . . . . . . . . . . . . 12 | 5.1. Protocol Version ("v=") | |||
5.2. Origin ("o=") . . . . . . . . . . . . . . . . . . . . . . 12 | 5.2. Origin ("o=") | |||
5.3. Session Name ("s=") . . . . . . . . . . . . . . . . . . . 13 | 5.3. Session Name ("s=") | |||
5.4. Session Information ("i=") . . . . . . . . . . . . . . . 13 | 5.4. Session Information ("i=") | |||
5.5. URI ("u=") . . . . . . . . . . . . . . . . . . . . . . . 14 | 5.5. URI ("u=") | |||
5.6. Email Address and Phone Number ("e=" and "p=") . . . . . 14 | 5.6. Email Address and Phone Number ("e=" and "p=") | |||
5.7. Connection Information ("c=") . . . . . . . . . . . . . . 15 | 5.7. Connection Information ("c=") | |||
5.8. Bandwidth Information ("b=") . . . . . . . . . . . . . . 17 | 5.8. Bandwidth Information ("b=") | |||
5.9. Time Active ("t=") . . . . . . . . . . . . . . . . . . . 18 | 5.9. Time Active ("t=") | |||
5.10. Repeat Times ("r=") . . . . . . . . . . . . . . . . . . . 19 | 5.10. Repeat Times ("r=") | |||
5.11. Time Zone Adjustment ("z=") . . . . . . . . . . . . . . . 20 | 5.11. Time Zone Adjustment ("z=") | |||
5.12. Encryption Keys ("k=") . . . . . . . . . . . . . . . . . 21 | 5.12. Encryption Keys ("k=") | |||
5.13. Attributes ("a=") . . . . . . . . . . . . . . . . . . . . 21 | 5.13. Attributes ("a=") | |||
5.14. Media Descriptions ("m=") . . . . . . . . . . . . . . . . 22 | 5.14. Media Descriptions ("m=") | |||
6. SDP Attributes . . . . . . . . . . . . . . . . . . . . . . . 25 | 6. SDP Attributes | |||
6.1. cat (category) . . . . . . . . . . . . . . . . . . . . . 26 | 6.1. cat (Category) | |||
6.2. keywds (keywords) . . . . . . . . . . . . . . . . . . . . 26 | 6.2. keywds (Keywords) | |||
6.3. tool . . . . . . . . . . . . . . . . . . . . . . . . . . 27 | 6.3. tool | |||
6.4. ptime (packet time) . . . . . . . . . . . . . . . . . . . 27 | 6.4. ptime (Packet Time) | |||
6.5. maxptime (maximum packet time) . . . . . . . . . . . . . 28 | 6.5. maxptime (Maximum Packet Time) | |||
6.6. rtpmap . . . . . . . . . . . . . . . . . . . . . . . . . 28 | 6.6. rtpmap | |||
6.7. Media Direction Attributes . . . . . . . . . . . . . . . 30 | 6.7. Media Direction Attributes | |||
6.7.1. recvonly (receive-only) . . . . . . . . . . . . . . . 31 | 6.7.1. recvonly (Receive-Only) | |||
6.7.2. sendrecv (send-receive) . . . . . . . . . . . . . . . 31 | 6.7.2. sendrecv (Send-Receive) | |||
6.7.3. sendonly (send-only) . . . . . . . . . . . . . . . . 32 | 6.7.3. sendonly (Send-Only) | |||
6.7.4. inactive . . . . . . . . . . . . . . . . . . . . . . 32 | 6.7.4. inactive | |||
6.8. orient (orientation) . . . . . . . . . . . . . . . . . . 33 | 6.8. orient (Orientation) | |||
6.9. type (conference type) . . . . . . . . . . . . . . . . . 33 | 6.9. type (Conference Type) | |||
6.10. charset (character set) . . . . . . . . . . . . . . . . . 34 | 6.10. charset (Character Set) | |||
6.11. sdplang (SDP language) . . . . . . . . . . . . . . . . . 35 | 6.11. sdplang (SDP Language) | |||
6.12. lang (language) . . . . . . . . . . . . . . . . . . . . . 36 | 6.12. lang (Language) | |||
6.13. framerate (frame rate) . . . . . . . . . . . . . . . . . 37 | 6.13. framerate (Frame Rate) | |||
6.14. quality . . . . . . . . . . . . . . . . . . . . . . . . . 37 | 6.14. quality | |||
6.15. fmtp (format parameters) . . . . . . . . . . . . . . . . 38 | 6.15. fmtp (Format Parameters) | |||
7. Security Considerations . . . . . . . . . . . . . . . . . . . 39 | 7. Security Considerations | |||
8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 40 | 8. IANA Considerations | |||
8.1. The "application/sdp" Media Type . . . . . . . . . . . . 40 | 8.1. The "application/sdp" Media Type | |||
8.2. Registration of SDP Parameters with IANA . . . . . . . . 42 | 8.2. Registration of SDP Parameters with IANA | |||
8.2.1. Registration Procedure . . . . . . . . . . . . . . . 42 | 8.2.1. Registration Procedure | |||
8.2.2. Media Types ("media") . . . . . . . . . . . . . . . . 43 | 8.2.2. Media Types (<media>) | |||
8.2.3. Transport Protocols ("proto") . . . . . . . . . . . . 43 | 8.2.3. Transport Protocols (<proto>) | |||
8.2.4. Attribute Names ("att-field") . . . . . . . . . . . . 44 | 8.2.4. Attribute Names (<attribute-name>) | |||
8.2.5. Bandwidth Specifiers ("bwtype") . . . . . . . . . . . 48 | 8.2.5. Bandwidth Specifiers (<bwtype>) | |||
8.2.6. Network Types ("nettype") . . . . . . . . . . . . . . 48 | 8.2.6. Network Types (<nettype>) | |||
8.2.7. Address Types ("addrtype") . . . . . . . . . . . . . 49 | 8.2.7. Address Types (<addrtype>) | |||
8.3. Encryption Key Access Methods (OBSOLETE) . . . . . . . . 50 | 8.3. Encryption Key Access Methods (OBSOLETE) | |||
9. SDP Grammar . . . . . . . . . . . . . . . . . . . . . . . . . 50 | 9. SDP Grammar | |||
10. Summary of Changes from RFC 4566 . . . . . . . . . . . . . . 55 | 10. Summary of Changes from RFC 4566 | |||
11. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 57 | 11. References | |||
12. References . . . . . . . . . . . . . . . . . . . . . . . . . 57 | 11.1. Normative References | |||
12.1. Normative References . . . . . . . . . . . . . . . . . . 57 | 11.2. Informative References | |||
12.2. Informative References . . . . . . . . . . . . . . . . . 60 | Acknowledgements | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 62 | Authors' Addresses | |||
1. Introduction | 1. Introduction | |||
When initiating multimedia teleconferences, voice-over-IP calls, | When initiating multimedia teleconferences, voice-over-IP calls, | |||
streaming video, or other sessions, there is a requirement to convey | streaming video, or other sessions, there is a requirement to convey | |||
media details, transport addresses, and other session description | media details, transport addresses, and other session description | |||
metadata to the participants. | metadata to the participants. | |||
SDP provides a standard representation for such information, | SDP provides a standard representation for such information, | |||
irrespective of how that information is transported. SDP is purely a | irrespective of how that information is transported. SDP is purely a | |||
format for session description -- it does not incorporate a transport | format for session description -- it does not incorporate a transport | |||
protocol, and it is intended to use different transport protocols as | protocol, and it is intended to use different transport protocols as | |||
appropriate, including the Session Announcement Protocol (SAP) | appropriate, including the Session Announcement Protocol (SAP) | |||
[RFC2974], Session Initiation Protocol (SIP) [RFC3261], Real Time | [RFC2974], Session Initiation Protocol (SIP) [RFC3261], Real-Time | |||
Streaming Protocol (RTSP) [RFC7826], electronic mail [RFC5322] using | Streaming Protocol (RTSP) [RFC7826], electronic mail [RFC5322] using | |||
the MIME extensions [RFC2045], and the Hypertext Transport Protocol | the MIME extensions [RFC2045], and the Hypertext Transport Protocol | |||
(HTTP) [RFC7230]. | (HTTP) [RFC7230]. | |||
SDP is intended to be general purpose so that it can be used in a | SDP is intended to be general purpose so that it can be used in a | |||
wide range of network environments and applications. However, it is | wide range of network environments and applications. However, it is | |||
not intended to support negotiation of session content or media | not intended to support negotiation of session content or media | |||
encodings: this is viewed as outside the scope of session | encodings: this is viewed as outside the scope of session | |||
description. | description. | |||
skipping to change at page 4, line 29 ¶ | skipping to change at line 166 ¶ | |||
2. Glossary of Terms | 2. Glossary of Terms | |||
The following terms are used in this document and have specific | The following terms are used in this document and have specific | |||
meaning within the context of this document. | meaning within the context of this document. | |||
Session Description: A well-defined format for conveying sufficient | Session Description: A well-defined format for conveying sufficient | |||
information to discover and participate in a multimedia session. | information to discover and participate in a multimedia session. | |||
Media Description: A Media Description contains the information | Media Description: A Media Description contains the information | |||
needed for one party to establish an application layer network | needed for one party to establish an application-layer network | |||
protocol connection to another party. It starts with an "m=" line | protocol connection to another party. It starts with an "m=" line | |||
and is terminated by either the next "m=" line or by the end of | and is terminated by either the next "m=" line or by the end of | |||
the session description. | the session description. | |||
Session-level Section: This refers to the parts that are not media | Session-Level Section: This refers to the parts that are not media | |||
descriptions, whereas the session description refers to the whole | descriptions, whereas the session description refers to the whole | |||
body that includes the session-level section and the media | body that includes the session-level section and the media | |||
description(s). | description(s). | |||
The terms "multimedia conference" and "multimedia session" are used | The terms "multimedia conference" and "multimedia session" are used | |||
in this document as defined in [RFC7656]. The terms "session" and | in this document as defined in [RFC7656]. The terms "session" and | |||
"multimedia session" are used interchangeably in this document. | "multimedia session" are used interchangeably in this document. | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in | |||
14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
3. Examples of SDP Usage | 3. Examples of SDP Usage | |||
3.1. Session Initiation | 3.1. Session Initiation | |||
The Session Initiation Protocol (SIP) [RFC3261] is an application- | The Session Initiation Protocol (SIP) [RFC3261] is an application- | |||
layer control protocol for creating, modifying, and terminating | layer control protocol for creating, modifying, and terminating | |||
sessions such as Internet multimedia conferences, Internet telephone | sessions such as Internet multimedia conferences, Internet telephone | |||
calls, and multimedia distribution. The SIP messages used to create | calls, and multimedia distribution. The SIP messages used to create | |||
sessions carry session descriptions that allow participants to agree | sessions carry session descriptions that allow participants to agree | |||
on a set of compatible media types [RFC6838]. These session | on a set of compatible media types [RFC6838]. These session | |||
descriptions are commonly formatted using SDP. When used with SIP, | descriptions are commonly formatted using SDP. When used with SIP, | |||
the offer/answer model [RFC3264] provides a limited framework for | the offer/answer model [RFC3264] provides a limited framework for | |||
negotiation using SDP. | negotiation using SDP. | |||
3.2. Streaming Media | 3.2. Streaming Media | |||
The Real Time Streaming Protocol (RTSP) [RFC7826], is an application- | The Real-Time Streaming Protocol (RTSP) [RFC7826], is an application- | |||
level protocol for control over the delivery of data with real-time | level protocol for control over the delivery of data with real-time | |||
properties. RTSP provides an extensible framework to enable | properties. RTSP provides an extensible framework to enable | |||
controlled, on-demand delivery of real-time data, such as audio and | controlled, on-demand delivery of real-time data, such as audio and | |||
video. An RTSP client and server negotiate an appropriate set of | video. An RTSP client and server negotiate an appropriate set of | |||
parameters for media delivery, partially using SDP syntax to describe | parameters for media delivery, partially using SDP syntax to describe | |||
those parameters. | those parameters. | |||
3.3. Email and the World Wide Web | 3.3. Email and the World Wide Web | |||
Alternative means of conveying session descriptions include | Alternative means of conveying session descriptions include | |||
electronic mail and the World Wide Web (WWW). For both email and WWW | electronic mail and the World Wide Web (WWW). For both email and WWW | |||
distribution, the media type "application/sdp" is used. This enables | distribution, the media type "application/sdp" is used. This enables | |||
the automatic launching of applications for participation in the | the automatic launching of applications for participation in the | |||
session from the WWW client or mail reader in a standard manner. | session from the WWW client or mail reader in a standard manner. | |||
Note that descriptions of multicast sessions sent only via email or | Note that descriptions of multicast sessions sent only via email or | |||
the WWW do not have the property that the receiver of a session | the WWW do not have the property that the receiver of a session | |||
description can necessarily receive the session because the multicast | description can necessarily receive the session because the multicast | |||
sessions may be restricted in scope, and access to the WWW server or | sessions may be restricted in scope, and access to the WWW server or | |||
reception of email is possible outside this scope. | reception of email is possibly outside this scope. | |||
3.4. Multicast Session Announcement | 3.4. Multicast Session Announcement | |||
In order to assist the advertisement of multicast multimedia | In order to assist the advertisement of multicast multimedia | |||
conferences and other multicast sessions, and to communicate the | conferences and other multicast sessions, and to communicate the | |||
relevant session setup information to prospective participants, a | relevant session setup information to prospective participants, a | |||
distributed session directory may be used. An instance of such a | distributed session directory may be used. An instance of such a | |||
session directory periodically sends packets containing a description | session directory periodically sends packets containing a description | |||
of the session to a well-known multicast group. These advertisements | of the session to a well-known multicast group. These advertisements | |||
are received by other session directories such that potential remote | are received by other session directories such that potential remote | |||
skipping to change at page 6, line 32 ¶ | skipping to change at line 261 ¶ | |||
many other forms of conferencing in that anyone receiving the traffic | many other forms of conferencing in that anyone receiving the traffic | |||
can join the session (unless the session traffic is encrypted). In | can join the session (unless the session traffic is encrypted). In | |||
such an environment, SDP serves two primary purposes. It is a means | such an environment, SDP serves two primary purposes. It is a means | |||
to communicate the existence of a session, and it is a means to | to communicate the existence of a session, and it is a means to | |||
convey sufficient information to enable joining and participating in | convey sufficient information to enable joining and participating in | |||
the session. In a unicast environment, only the latter purpose is | the session. In a unicast environment, only the latter purpose is | |||
likely to be relevant. | likely to be relevant. | |||
An SDP description includes the following: | An SDP description includes the following: | |||
o Session name and purpose | * Session name and purpose | |||
o Time(s) the session is active | * Time(s) the session is active | |||
o The media comprising the session | * The media comprising the session | |||
o Information needed to receive those media (addresses, ports, | * Information needed to receive those media (addresses, ports, | |||
formats, etc.) | formats, etc.) | |||
As resources necessary to participate in a session may be limited, | As resources necessary to participate in a session may be limited, | |||
some additional information may also be desirable: | some additional information may also be desirable: | |||
o Information about the bandwidth to be used by the session | * Information about the bandwidth to be used by the session | |||
o Contact information for the person responsible for the session | * Contact information for the person responsible for the session | |||
In general, SDP must convey sufficient information to enable | In general, SDP must convey sufficient information to enable | |||
applications to join a session (with the possible exception of | applications to join a session (with the possible exception of | |||
encryption keys) and to announce the resources to be used to any non- | encryption keys) and to announce the resources to be used to any | |||
participants that may need to know. (This latter feature is | nonparticipants that may need to know. (This latter feature is | |||
primarily useful when SDP is used with a multicast session | primarily useful when SDP is used with a multicast session | |||
announcement protocol.) | announcement protocol.) | |||
4.1. Media and Transport Information | 4.1. Media and Transport Information | |||
An SDP description includes the following media information: | An SDP description includes the following media information: | |||
o The type of media (video, audio, etc.) | * The type of media (video, audio, etc.) | |||
o The media transport protocol (RTP/UDP/IP, H.320, etc.) | * The media transport protocol (RTP/UDP/IP, H.320, etc.) | |||
o The format of the media (H.261 video, MPEG video, etc.) | * The format of the media (H.261 video, MPEG video, etc.) | |||
In addition to media format and transport protocol, SDP conveys | In addition to media format and transport protocol, SDP conveys | |||
address and port details. For an IP multicast session, these | address and port details. For an IP multicast session, these | |||
comprise: | comprise: | |||
o The multicast group address for media | * The multicast group address for media | |||
o The transport port for media | * The transport port for media | |||
This address and port are the destination address and destination | This address and port are the destination address and destination | |||
port of the multicast stream, whether being sent, received, or both. | port of the multicast stream, whether being sent, received, or both. | |||
For unicast IP sessions, the following are conveyed: | For unicast IP sessions, the following are conveyed: | |||
o The remote address for media | * The remote address for media | |||
o The remote transport port for media | * The remote transport port for media | |||
The semantics of the address and port depend on context. Typically, | The semantics of the address and port depend on context. Typically, | |||
this SHOULD be the remote address and remote port to which media is | this SHOULD be the remote address and remote port to which media is | |||
to be sent or received. Details may differ based on the network | to be sent or received. Details may differ based on the network | |||
type, address type, protocol and media specified, and whether the SDP | type, address type, protocol, and media specified, and whether the | |||
is being distributed as an advertisement or negotiated in an offer/ | SDP is being distributed as an advertisement or negotiated in an | |||
answer [RFC3264] exchange. (E.g., Some address types or protocols | offer/answer [RFC3264] exchange. (E.g., Some address types or | |||
may not have a notion of port.) Deviating from typical behavior | protocols may not have a notion of port.) Deviating from typical | |||
should be done cautiously since this complicates implementations | behavior should be done cautiously since this complicates | |||
(including middleboxes that must parse the addresses to open Network | implementations (including middleboxes that must parse the addresses | |||
Address Translation (NAT) or firewall pinholes). | to open Network Address Translation (NAT) or firewall pinholes). | |||
4.2. Timing Information | 4.2. Timing Information | |||
Sessions may be either bounded or unbounded in time. Whether or not | Sessions may be either bounded or unbounded in time. Whether or not | |||
they are bounded, they may be only active at specific times. SDP can | they are bounded, they may be only active at specific times. SDP can | |||
convey: | convey: | |||
o An arbitrary list of start and stop times bounding the session | * An arbitrary list of start and stop times bounding the session | |||
o For each bound, repeat times such as "every Wednesday at 10am for | ||||
* For each bound, repeat times such as "every Wednesday at 10am for | ||||
one hour" | one hour" | |||
This timing information is globally consistent, irrespective of local | This timing information is globally consistent, irrespective of local | |||
time zone or daylight saving time (see Section 5.9). | time zone or daylight saving time (see Section 5.9). | |||
4.3. Obtaining Further Information about a Session | 4.3. Obtaining Further Information about a Session | |||
A session description could convey enough information to decide | A session description could convey enough information to decide | |||
whether or not to participate in a session. SDP may include | whether or not to participate in a session. SDP may include | |||
additional pointers in the form of Uniform Resource Identifiers | additional pointers in the form of Uniform Resource Identifiers | |||
skipping to change at page 8, line 26 ¶ | skipping to change at line 352 ¶ | |||
use of URIs to indicate remote resources is subject to the security | use of URIs to indicate remote resources is subject to the security | |||
considerations from [RFC3986].) | considerations from [RFC3986].) | |||
4.4. Internationalization | 4.4. Internationalization | |||
The SDP specification recommends the use of the ISO 10646 character | The SDP specification recommends the use of the ISO 10646 character | |||
set in the UTF-8 encoding [RFC3629] to allow many different languages | set in the UTF-8 encoding [RFC3629] to allow many different languages | |||
to be represented. However, to assist in compact representations, | to be represented. However, to assist in compact representations, | |||
SDP also allows other character sets such as [ISO.8859-1.1998] to be | SDP also allows other character sets such as [ISO.8859-1.1998] to be | |||
used when desired. Internationalization only applies to free-text | used when desired. Internationalization only applies to free-text | |||
sub-fields (session name and background information), and not to SDP | subfields (session name and background information), and not to SDP | |||
as a whole. | as a whole. | |||
5. SDP Specification | 5. SDP Specification | |||
An SDP description is denoted by the media type "application/sdp" | An SDP description is denoted by the media type "application/sdp" | |||
(See Section 8). | (See Section 8). | |||
An SDP description is entirely textual. SDP field names and | An SDP description is entirely textual. SDP field names and | |||
attribute names use only the US-ASCII subset of UTF-8 [RFC3629], but | attribute names use only the US-ASCII subset of UTF-8 [RFC3629], but | |||
textual fields and attribute values MAY use the full ISO 10646 | textual fields and attribute values MAY use the full ISO 10646 | |||
character set in UTF-8 encoding, or some other character set defined | character set in UTF-8 encoding, or some other character set defined | |||
by the "a=charset:" attribute. Field and attribute values that use | by the "a=charset:" attribute (Section 6.10). Field and attribute | |||
the full UTF-8 character set are never directly compared, hence there | values that use the full UTF-8 character set are never directly | |||
is no requirement for UTF-8 normalization. The textual form, as | compared, hence there is no requirement for UTF-8 normalization. The | |||
opposed to a binary encoding such as ASN.1 or XDR, was chosen to | textual form, as opposed to a binary encoding such as ASN.1 or XDR, | |||
enhance portability, to enable a variety of transports to be used, | was chosen to enhance portability, to enable a variety of transports | |||
and to allow flexible, text-based toolkits to be used to generate and | to be used, and to allow flexible, text-based toolkits to be used to | |||
process session descriptions. However, since SDP may be used in | generate and process session descriptions. However, since SDP may be | |||
environments where the maximum permissible size of a session | used in environments where the maximum permissible size of a session | |||
description is limited, the encoding is deliberately compact. Also, | description is limited, the encoding is deliberately compact. Also, | |||
since descriptions may be transported via very unreliable means or | since descriptions may be transported via very unreliable means or | |||
damaged by an intermediate caching server, the encoding was designed | damaged by an intermediate caching server, the encoding was designed | |||
with strict order and formatting rules so that most errors would | with strict order and formatting rules so that most errors would | |||
result in malformed session descriptions that could be detected | result in malformed session descriptions that could be detected | |||
easily and discarded. | easily and discarded. | |||
An SDP description consists of a number of lines of text of the form: | An SDP description consists of a number of lines of text of the form: | |||
<type>=<value> | <type>=<value> | |||
where <type> is exactly one case-significant character and <value> is | where <type> is exactly one case-significant character and <value> is | |||
structured text whose format depends on <type>. In general, <value> | structured text whose format depends on <type>. In general, <value> | |||
is either a number of sub-fields delimited by a single space | is either a number of subfields delimited by a single space character | |||
character or a free format string, and is case-significant unless a | or a free format string, and is case-significant unless a specific | |||
specific field defines otherwise. Whitespace separators are not used | field defines otherwise. Whitespace separators are not used on | |||
on either side of the "=" sign, however, the value can contain a | either side of the "=" sign, however, the value can contain a leading | |||
leading whitespace as part of its syntax, i.e., that whitespace is | whitespace as part of its syntax, i.e., that whitespace is part of | |||
part of the value. | the value. | |||
An SDP description MUST conform to the syntax defined in Section 9. | An SDP description MUST conform to the syntax defined in Section 9. | |||
The following is an overview of the syntax: | The following is an overview of the syntax. | |||
An SDP description consists of a session-level section followed by | An SDP description consists of a session-level section followed by | |||
zero or more media descriptions. The session-level section starts | zero or more media descriptions. The session-level section starts | |||
with a "v=" line and continues to the first media description (or the | with a "v=" line and continues to the first media description (or the | |||
end of the whole description, whichever comes first). Each media | end of the whole description, whichever comes first). Each 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 the end of the whole session description, whichever | description or the end of the whole session description, whichever | |||
comes first. In general, session-level values are the default for | comes first. In general, session-level values are the default for | |||
all media unless overridden by an equivalent media-level value. | all media unless overridden by an equivalent media-level value. | |||
Some lines in each description are required and some are optional, | Some lines in each description are required and some are optional, | |||
but when present must appear in exactly the order given here. (The | but when present, they must appear in exactly the order given here. | |||
fixed order greatly enhances error detection and allows for a simple | (The fixed order greatly enhances error detection and allows for a | |||
parser). In the following overview optional items are marked with a | simple parser). In the following overview, optional items are marked | |||
"*". | with a "*". | |||
Session description | Session description | |||
v= (protocol version) | v= (protocol version) | |||
o= (originator and session identifier) | o= (originator and session identifier) | |||
s= (session name) | s= (session name) | |||
i=* (session information) | i=* (session information) | |||
u=* (URI of description) | u=* (URI of description) | |||
e=* (email address) | e=* (email address) | |||
p=* (phone number) | p=* (phone number) | |||
c=* (connection information -- not required if included in | c=* (connection information -- not required if included in | |||
skipping to change at page 10, line 39 ¶ | skipping to change at line 444 ¶ | |||
i=* (media title) | i=* (media title) | |||
c=* (connection information -- optional if included at | c=* (connection information -- optional if included at | |||
session level) | session level) | |||
b=* (zero or more bandwidth information lines) | b=* (zero or more bandwidth information lines) | |||
k=* (obsolete) | k=* (obsolete) | |||
a=* (zero or more media attribute lines) | a=* (zero or more media attribute lines) | |||
The set of type letters is deliberately small and not intended to be | The set of type letters is deliberately small and not intended to be | |||
extensible -- an SDP parser MUST completely ignore or reject any | extensible -- an SDP parser MUST completely ignore or reject any | |||
session description that contains a type letter that it does not | session description that contains a type letter that it does not | |||
understand. The attribute mechanism ("a=" described below) is the | understand. The attribute mechanism ("a=", described in | |||
primary means for extending SDP and tailoring it to particular | Section 5.13) is the primary means for extending SDP and tailoring it | |||
applications or media. Some attributes (the ones listed in Section 6 | to particular applications or media. Some attributes (the ones | |||
of this memo) have a defined meaning, but others may be added on a | listed in Section 6) have a defined meaning, but others may be added | |||
media- or session-specific basis. (Attribute scopes in addition to | on a media- or session-specific basis. (Attribute scopes in addition | |||
media-specific and session-specific may also be defined in extensions | to media-specific and session-specific scopes may also be defined in | |||
to this document. E.g., [RFC5576], | extensions to this document, e.g., [RFC5576] and [RFC8864].) An SDP | |||
[I-D.ietf-mmusic-data-channel-sdpneg].) An SDP parser MUST ignore | parser MUST ignore any attribute it doesn't understand. | |||
any attribute it doesn't understand. | ||||
An SDP description may contain URIs that reference external content | An SDP description may contain URIs that reference external content | |||
in the "u=", "k=", and "a=" lines. These URIs may be dereferenced in | in the "u=", "k=", and "a=" lines. These URIs may be dereferenced in | |||
some cases, making the session description non-self-contained. | some cases, making the session description non-self-contained. | |||
The connection ("c=") information in the session-level section | The connection ("c=") information in the session-level section | |||
applies to all the media descriptions of that session unless | applies to all the media descriptions of that session unless | |||
overridden by connection information in the media description. For | overridden by connection information in the media description. For | |||
instance, in the example below, each audio media description behaves | instance, in the example below, each audio media description behaves | |||
as if it were given a "c=IN IP4 198.51.100.1". | as if it were given a "c=IN IP4 198.51.100.1". | |||
skipping to change at page 11, line 33 ¶ | skipping to change at line 485 ¶ | |||
m=audio 49180 RTP/AVP 0 | m=audio 49180 RTP/AVP 0 | |||
m=video 51372 RTP/AVP 99 | m=video 51372 RTP/AVP 99 | |||
c=IN IP6 2001:db8::2 | c=IN IP6 2001:db8::2 | |||
a=rtpmap:99 h263-1998/90000 | a=rtpmap:99 h263-1998/90000 | |||
Text-containing fields such as the session-name-field and | Text-containing fields such as the session-name-field and | |||
information-field are octet strings that may contain any octet with | information-field are octet strings that may contain any octet with | |||
the exceptions of 0x00 (Nul), 0x0a (ASCII newline), and 0x0d (ASCII | the exceptions of 0x00 (Nul), 0x0a (ASCII newline), and 0x0d (ASCII | |||
carriage return). The sequence CRLF (0x0d0a) is used to end a line, | carriage return). The sequence CRLF (0x0d0a) is used to end a line, | |||
although parsers SHOULD be tolerant and also accept lines terminated | although parsers SHOULD be tolerant and also accept lines terminated | |||
with a single newline character. If the "a=charset" attribute is not | with a single newline character. If the "a=charset:" attribute is | |||
present, these octet strings MUST be interpreted as containing | not present, these octet strings MUST be interpreted as containing | |||
ISO-10646 characters in UTF-8 encoding. When the "a=charset" | ISO-10646 characters in UTF-8 encoding. When the "a=charset:" | |||
attribute is present the session-name-field, information-field, and | attribute is present the session-name-field, information-field, and | |||
some attribute fields are interpreted according to the selected | some attribute fields are interpreted according to the selected | |||
character set. | character set. | |||
A session description can contain domain names in the "o=", "u=", | A session description can contain domain names in the "o=", "u=", | |||
"e=", "c=", and "a=" lines. Any domain name used in SDP MUST comply | "e=", "c=", and "a=" lines. Any domain name used in SDP MUST comply | |||
with [RFC1034] and [RFC1035]. Internationalized domain names (IDNs) | with [RFC1034] and [RFC1035]. Internationalized domain names (IDNs) | |||
MUST be represented using the ASCII Compatible Encoding (ACE) form | MUST be represented using the ASCII Compatible Encoding (ACE) form | |||
defined in [RFC5890] and MUST NOT be directly represented in UTF-8 or | defined in [RFC5890] and MUST NOT be directly represented in UTF-8 or | |||
any other encoding (this requirement is for compatibility with | any other encoding (this requirement is for compatibility with | |||
[RFC2327] and other early SDP-related standards, which predate the | [RFC2327] and other early SDP-related standards, which predate the | |||
development of internationalized domain names). | development of internationalized domain names). | |||
5.1. Protocol Version ("v=") | 5.1. Protocol Version ("v=") | |||
v=0 | v=0 | |||
The "v=" line (version-field) gives the version of the Session | The "v=" line (version-field) gives the version of the Session | |||
Description Protocol. This memo defines version 0. There is no | Description Protocol. This memo defines version 0. There is no | |||
minor version number. | minor version number. | |||
5.2. Origin ("o=") | 5.2. Origin ("o=") | |||
o=<username> <sess-id> <sess-version> <nettype> <addrtype> | o=<username> <sess-id> <sess-version> <nettype> <addrtype> | |||
<unicast-address> | <unicast-address> | |||
The "o=" line (origin-field) gives the originator of the session (her | The "o=" line (origin-field) gives the originator of the session (her | |||
username and the address of the user's host) plus a session | username and the address of the user's host) plus a session | |||
identifier and version number: | identifier and version number: | |||
<username> is the user's login on the originating host, or it is "-" | <username> is the user's login on the originating host, or it is "-" | |||
if the originating host does not support the concept of user IDs. | if the originating host does not support the concept of user IDs. | |||
The <username> MUST NOT contain spaces. | The <username> MUST NOT contain spaces. | |||
skipping to change at page 12, line 39 ¶ | skipping to change at line 535 ¶ | |||
id> allocation is up to the creating tool, but a timestamp, in | id> allocation is up to the creating tool, but a timestamp, in | |||
seconds since January 1, 1900 UTC, is recommended to ensure | seconds since January 1, 1900 UTC, is recommended to ensure | |||
uniqueness. | uniqueness. | |||
<sess-version> is a version number for this session description. | <sess-version> is a version number for this session description. | |||
Its usage is up to the creating tool, so long as <sess-version> is | Its usage is up to the creating tool, so long as <sess-version> is | |||
increased when a modification is made to the session description. | increased when a modification is made to the session description. | |||
Again, as with <sess-id> it is RECOMMENDED that a timestamp be | Again, as with <sess-id> it is RECOMMENDED that a timestamp be | |||
used. | used. | |||
<nettype> is a text string giving the type of network. Initially | <nettype> is a text string giving the type of network. Initially, | |||
"IN" is defined to have the meaning "Internet", but other values | "IN" is defined to have the meaning "Internet", but other values | |||
MAY be registered in the future (see Section 8). | MAY be registered in the future (see Section 8). | |||
<addrtype> is a text string giving the type of the address that | <addrtype> is a text string giving the type of the address that | |||
follows. Initially "IP4" and "IP6" are defined, but other values | follows. Initially, "IP4" and "IP6" are defined, but other values | |||
MAY be registered in the future (see Section 8). | MAY be registered in the future (see Section 8). | |||
<unicast-address> is an address of the machine from which the | <unicast-address> is an address of the machine from which the | |||
session was created. For an address type of IP4, this is either a | session was created. For an address type of "IP4", this is either | |||
fully qualified domain name of the machine or the dotted-decimal | a fully qualified domain name of the machine or the dotted-decimal | |||
representation of an IP version 4 address of the machine. For an | representation of an IP version 4 address of the machine. For an | |||
address type of IP6, this is either a fully qualified domain name | address type of "IP6", this is either a fully qualified domain | |||
of the machine or the address of the machine represented as | name of the machine or the address of the machine represented as | |||
specified in Section 4 of [RFC5952]. For both IP4 and IP6, the | specified in Section 4 of [RFC5952]. For both "IP4" and "IP6", | |||
fully qualified domain name is the form that SHOULD be given | the fully qualified domain name is the form that SHOULD be given | |||
unless this is unavailable, in which case a globally unique | unless this is unavailable, in which case a globally unique | |||
address MAY be substituted. | address MAY be substituted. | |||
In general, the "o=" line serves as a globally unique identifier for | In general, the "o=" line serves as a globally unique identifier for | |||
this version of the session description, and the sub-fields excepting | this version of the 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. | |||
For privacy reasons, it is sometimes desirable to obfuscate the | For privacy reasons, it is sometimes desirable to obfuscate the | |||
username and IP address of the session originator. If this is a | username and IP address of the session originator. If this is a | |||
concern, an arbitrary <username> and private <unicast-address> MAY be | concern, an arbitrary <username> and private <unicast-address> MAY be | |||
chosen to populate the "o=" line, provided that these are selected in | chosen to populate the "o=" line, provided that these are selected in | |||
a manner that does not affect the global uniqueness of the field. | a manner that does not affect the global uniqueness of the field. | |||
5.3. Session Name ("s=") | 5.3. Session Name ("s=") | |||
s=<session name> | s=<session name> | |||
The "s=" line (session-name-field) is the textual session name. | The "s=" line (session-name-field) is the textual session name. | |||
There MUST be one and only one "s=" line per session description. | There MUST be one and only one "s=" line per session description. | |||
The "s=" line MUST NOT be empty. If a session has no meaningful | The "s=" line MUST NOT be empty. If a session has no meaningful | |||
name, then "s= " or "s=-" (i.e., a single space or dash as the | name, then "s= " or "s=-" (i.e., a single space or dash as the | |||
session name) is RECOMMENDED. If a session-level "a=charset" | session name) is RECOMMENDED. If a session-level "a=charset:" | |||
attribute is present, it specifies the character set used in the "s=" | attribute is present, it specifies the character set used in the "s=" | |||
field. If a session-level "a=charset" attribute is not present, the | field. If a session-level "a=charset:" attribute is not present, the | |||
"s=" field MUST contain ISO 10646 characters in UTF-8 encoding. | "s=" field MUST contain ISO 10646 characters in UTF-8 encoding. | |||
5.4. Session Information ("i=") | 5.4. Session Information ("i=") | |||
i=<session information> | i=<session information> | |||
The "i=" line (information-field) provides textual information about | The "i=" line (information-field) provides textual information about | |||
the session. There can be at most one session-level "i=" line per | the session. There can be at most one session-level "i=" line per | |||
session description, and at most one "i=" line in each media | session description, and at most one "i=" line in each media | |||
description. Unless a media-level "i=" line is provided, the | description. Unless a media-level "i=" line is provided, the | |||
session-level "i=" line applies to that media description. If the | session-level "i=" line applies to that media description. If the | |||
"a=charset" attribute is present, it specifies the character set used | "a=charset:" attribute is present, it specifies the character set | |||
in the "i=" line. If the "a=charset" attribute is not present, the | used in the "i=" line. If the "a=charset:" attribute is not present, | |||
"i=" line MUST contain ISO 10646 characters in UTF-8 encoding. | the "i=" line MUST contain ISO 10646 characters in UTF-8 encoding. | |||
At most one "i=" line can be used for each media description. In | At most one "i=" line can be used for each media description. In | |||
media definitions, "i=" lines are primarily intended for labelling | media definitions, "i=" lines are primarily intended for labeling | |||
media streams. As such, they are most likely to be useful when a | media streams. As such, they are most likely to be useful when a | |||
single session has more than one distinct media stream of the same | single session has more than one distinct media stream of the same | |||
media type. An example would be two different whiteboards, one for | media type. An example would be two different whiteboards, one for | |||
slides and one for feedback and questions. | slides and one for feedback and questions. | |||
The "i=" line is intended to provide a free-form human-readable | The "i=" line is intended to provide a free-form human-readable | |||
description of the session or the purpose of a media stream. It is | description of the session or the purpose of a media stream. It is | |||
not suitable for parsing by automata. | not suitable for parsing by automata. | |||
5.5. URI ("u=") | 5.5. URI ("u=") | |||
skipping to change at page 15, line 7 ¶ | skipping to change at line 648 ¶ | |||
e=j.doe@example.com (Jane Doe) | e=j.doe@example.com (Jane Doe) | |||
The alternative [RFC5322] name quoting convention is also allowed for | The alternative [RFC5322] name quoting convention is also allowed for | |||
both email addresses and phone numbers. For example: | both email addresses and phone numbers. For example: | |||
e=Jane Doe <j.doe@example.com> | e=Jane Doe <j.doe@example.com> | |||
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 session-level "a=charset" attribute is set. | the appropriate session-level "a=charset:" attribute is set. | |||
5.7. Connection Information ("c=") | 5.7. Connection Information ("c=") | |||
c=<nettype> <addrtype> <connection-address> | c=<nettype> <addrtype> <connection-address> | |||
The "c=" line (connection-field) contains information necessary to | The "c=" line (connection-field) contains information necessary to | |||
establish a network connection. | establish a network connection. | |||
A session description MUST contain either at least one "c=" line in | A session description MUST contain either at least one "c=" line in | |||
each media description or a single "c=" line at the session level. | each media description or a single "c=" line at the session level. | |||
It MAY contain a single session-level "c=" line and additional media- | It MAY contain a single session-level "c=" line and additional media- | |||
level "c=" line(s) per-media-description, in which case the media- | level "c=" line(s) per-media-description, in which case the media- | |||
level values override the session-level settings for the respective | level values override the session-level settings for the respective | |||
media. | media. | |||
The first sub-field ("<nettype>") is the network type, which is a | The first subfield (<nettype>) is the network type, which is a text | |||
text string giving the type of network. Initially, "IN" is defined | string giving the type of network. Initially, "IN" is defined to | |||
to have the meaning "Internet", but other values MAY be registered in | have the meaning "Internet", but other values MAY be registered in | |||
the future (see Section 8). | the future (see Section 8). | |||
The second sub-field ("<addrtype>") is the address type. This allows | The second subfield (<addrtype>) is the address type. This allows | |||
SDP to be used for sessions that are not IP based. This memo only | SDP to be used for sessions that are not IP based. This memo only | |||
defines IP4 and IP6, but other values MAY be registered in the future | defines "IP4" and "IP6", but other values MAY be registered in the | |||
(see Section 8). | future (see Section 8). | |||
The third sub-field ("<connection-address>") is the connection | The third subfield (<connection-address>) is the connection address. | |||
address. Additional sub-fields MAY be added after the connection | Additional subfields MAY be added after the connection address | |||
address depending on the value of the <addrtype> sub-field. | depending on the value of the <addrtype> subfield. | |||
When the <addrtype> is IP4 or IP6, the connection address is defined | When the <addrtype> is "IP4" or "IP6", the connection address is | |||
as follows: | defined as follows: | |||
o If the session is multicast, the connection address will be an IP | * If the session is multicast, the connection address will be an IP | |||
multicast group address. If the session is not multicast, then | multicast group address. If the session is not multicast, then | |||
the connection address contains the unicast IP address of the | the connection address contains the unicast IP address of the | |||
expected data source, data relay or data sink as determined by | expected data source, data relay, or data sink as determined by | |||
additional attribute-fields. It is not expected that unicast | additional attribute-fields (Section 5.13). It is not expected | |||
addresses will be given in a session description that is | that unicast addresses will be given in a session description that | |||
communicated by a multicast announcement, though this is not | is communicated by a multicast announcement, though this is not | |||
prohibited. | prohibited. | |||
o Sessions using an IP4 multicast connection address MUST also have | * Sessions using an "IP4" multicast connection address MUST also | |||
a time to live (TTL) value present in addition to the multicast | have a time to live (TTL) value present in addition to the | |||
address. The TTL and the address together define the scope with | multicast address. The TTL and the address together define the | |||
which multicast packets sent in this session will be sent. TTL | scope with which multicast packets sent in this session will be | |||
values MUST be in the range 0-255. Although the TTL MUST be | sent. TTL values MUST be in the range 0-255. Although the TTL | |||
specified, its use to scope multicast traffic is deprecated; | MUST be specified, its use to scope multicast traffic is | |||
applications SHOULD use an administratively scoped address | deprecated; applications SHOULD use an administratively scoped | |||
instead. | address instead. | |||
The TTL for the session is appended to the address using a slash as a | The TTL for the session is appended to the address using a slash as a | |||
separator. An example is: | separator. An example is: | |||
c=IN IP4 233.252.0.1/127 | c=IN IP4 233.252.0.1/127 | |||
IP6 multicast does not use TTL scoping, and hence the TTL value MUST | "IP6" multicast does not use TTL scoping, and hence the TTL value | |||
NOT be present for IP6 multicast. It is expected that IPv6 scoped | MUST NOT be present for "IP6" multicast. It is expected that IPv6 | |||
addresses will be used to limit the scope of multimedia conferences. | scoped addresses will be used to limit the scope of multimedia | |||
conferences. | ||||
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 layers. | encoding from a single media source is split into a number of layers. | |||
The receiver can choose the desired quality (and hence bandwidth) by | The receiver can choose the desired quality (and hence bandwidth) by | |||
only subscribing to a subset of these layers. Such layered encodings | only subscribing to a subset of these layers. Such layered encodings | |||
are normally transmitted in multiple multicast groups to allow | are normally transmitted in multiple multicast groups to allow | |||
multicast pruning. This technique keeps unwanted traffic from sites | multicast pruning. This technique keeps unwanted traffic from sites | |||
only requiring certain levels of the hierarchy. For applications | only requiring certain levels of the hierarchy. For applications | |||
requiring multiple multicast groups, we allow the following notation | requiring multiple multicast groups, we allow the following notation | |||
to be used for the connection address: | to be used for the connection address: | |||
skipping to change at page 17, line 9 ¶ | skipping to change at line 745 ¶ | |||
Similarly, an IPv6 example would be: | Similarly, an IPv6 example would be: | |||
c=IN IP6 ff00::db8:0:101/3 | c=IN IP6 ff00::db8:0:101/3 | |||
which is semantically equivalent to: | which is semantically equivalent to: | |||
c=IN IP6 ff00::db8:0:101 | c=IN IP6 ff00::db8:0:101 | |||
c=IN IP6 ff00::db8:0:102 | c=IN IP6 ff00::db8:0:102 | |||
c=IN IP6 ff00::db8:0:103 | c=IN IP6 ff00::db8:0:103 | |||
(remembering that the TTL sub-field is not present in IP6 multicast). | (remember that the TTL subfield is not present in "IP6" multicast). | |||
Multiple addresses or "c=" lines MAY be specified on a per media | Multiple addresses or "c=" lines MAY be specified on a per media | |||
description basis only if they provide multicast addresses for | description basis only if they provide multicast addresses for | |||
different layers in a hierarchical or layered encoding scheme. | different layers in a hierarchical or layered encoding scheme. | |||
Multiple addresses or "c=" lines MUST NOT be specified at session | Multiple addresses or "c=" lines MUST NOT be specified at session | |||
level. | level. | |||
The slash notation for multiple addresses described above MUST NOT be | The slash notation for multiple addresses described above MUST NOT be | |||
used for IP unicast addresses. | used for IP unicast addresses. | |||
5.8. Bandwidth Information ("b=") | 5.8. Bandwidth Information ("b=") | |||
b=<bwtype>:<bandwidth> | b=<bwtype>:<bandwidth> | |||
The OPTIONAL "b=" line (bandwidth-field) denotes the proposed | The OPTIONAL "b=" line (bandwidth-field) denotes the proposed | |||
bandwidth to be used by the session or media description. The | bandwidth to be used by the session or media description. The | |||
<bwtype> is an alphanumeric modifier giving the meaning of the | <bwtype> is an alphanumeric modifier that provides the meaning of the | |||
<bandwidth> figure. Two values are defined in this specification, | <bandwidth> number. Two values are defined in this specification, | |||
but other values MAY be registered in the future (see Section 8 and | but other values MAY be registered in the future (see Section 8 and | |||
[RFC3556], [RFC3890]): | [RFC3556], [RFC3890]): | |||
CT If the bandwidth of a session is different from the bandwidth | CT If the bandwidth of a session is different from the bandwidth | |||
implicit from the scope, a "b=CT:..." line SHOULD be supplied for | implicit from the scope, a "b=CT:" line SHOULD be supplied for the | |||
the session giving the proposed upper limit to the bandwidth used | session giving the proposed upper limit to the bandwidth used (the | |||
(the "conference total" bandwidth). Similarly, if the bandwidth | "conference total" bandwidth). Similarly, if the bandwidth of | |||
of bundled media streams [I-D.ietf-mmusic-sdp-bundle-negotiation] | bundled media streams [RFC8843] in an "m=" line is different from | |||
in an "m=" line is different from the implicit value from the | the implicit value from the scope, a "b=CT:" line SHOULD be | |||
scope, a "b=CT:..." line SHOULD be supplied in the media level. | supplied in the media level. The primary purpose of this is to | |||
The primary purpose of this is to give an approximate idea as to | give an approximate idea as to whether two or more sessions (or | |||
whether two or more sessions (or bundled media streams) can | bundled media streams) can coexist simultaneously. Note that a | |||
coexist simultaneously. Note that CT gives a total bandwidth | "b=CT:" line gives a total bandwidth figure for all the media at | |||
figure for all the media at all endpoints. | all endpoints. | |||
The Mux Category for CT is NORMAL. This is discussed in | The Mux Category for "b=CT:" is NORMAL. This is discussed in | |||
[I-D.ietf-mmusic-sdp-mux-attributes]. | [RFC8859]. | |||
AS The bandwidth is interpreted to be application specific (it will | AS The bandwidth is interpreted to be application specific (it will | |||
be the application's concept of maximum bandwidth). Normally, | be the application's concept of maximum bandwidth). Normally, | |||
this will coincide with what is set on the application's "maximum | this will coincide with what is set on the application's "maximum | |||
bandwidth" control if applicable. For RTP-based applications, AS | bandwidth" control if applicable. For RTP-based applications, the | |||
gives the RTP "session bandwidth" as defined in Section 6.2 of | "b=AS:" line gives the RTP "session bandwidth" as defined in | |||
[RFC3550]. Note that AS gives a bandwidth figure for a single | Section 6.2 of [RFC3550]. Note that a "b=AS:" line gives a | |||
media at a single endpoint, although there may be many endpoints | bandwidth figure for a single media at a single endpoint, although | |||
sending simultaneously. | there may be many endpoints sending simultaneously. | |||
The Mux Category for AS is SUM. This is discussed in | The Mux Category for "b=AS:" is SUM. This is discussed in | |||
[I-D.ietf-mmusic-sdp-mux-attributes]. | [RFC8859]. | |||
[RFC4566] defined an "X-" prefix for <bwtype> names. This was | [RFC4566] defined an "X-" prefix for <bwtype> names. This was | |||
intended for experimental purposes only. For example: | intended for experimental purposes only. For example: | |||
b=X-YZ:128 | b=X-YZ:128 | |||
Use of the "X-" prefix is NOT RECOMMENDED. Instead new (non "X-" | Use of the "X-" prefix is NOT RECOMMENDED. Instead new (non "X-" | |||
prefix) <bwtype> names SHOULD be defined, and then MUST be registered | prefix) <bwtype> names SHOULD be defined, and then MUST be registered | |||
with IANA in the standard namespace. SDP parsers MUST ignore | with IANA in the standard namespace. SDP parsers MUST ignore | |||
bandwidth-fields with unknown <bwtype> names. The <bwtype> names | bandwidth-fields with unknown <bwtype> names. The <bwtype> names | |||
MUST be alphanumeric and, although no length limit is given, it is | MUST be alphanumeric and, although no length limit is given, it is | |||
recommended that they be short. | recommended that they be short. | |||
The <bandwidth> is interpreted as kilobits per second by default | The <bandwidth> is interpreted as kilobits per second by default | |||
(including the transport and network-layer but not the link-layer | (including the transport and network-layer, but not the link-layer, | |||
overhead). The definition of a new <bwtype> modifier MAY specify | overhead). The definition of a new <bwtype> modifier MAY specify | |||
that the bandwidth is to be interpreted in some alternative unit (the | that the bandwidth is to be interpreted in some alternative unit (the | |||
"CT" and "AS" modifiers defined in this memo use the default units). | "CT" and "AS" modifiers defined in this memo use the default units). | |||
5.9. Time Active ("t=") | 5.9. Time Active ("t=") | |||
t=<start-time> <stop-time> | t=<start-time> <stop-time> | |||
A "t=" line (time-field) begins a time description that specifies the | A "t=" line (time-field) begins a time description that specifies the | |||
start and stop times for a session. Multiple time descriptions MAY | start and stop times for a session. Multiple time descriptions MAY | |||
be used if a session is active at multiple irregularly spaced times; | be used if a session is active at multiple irregularly spaced times; | |||
each additional time description specifies additional periods of time | each additional time description specifies additional periods of time | |||
for which the session will be active. If the session is active at | for which the session will be active. If the session is active at | |||
regular repeat times, a repeat description, begun by an "r=" line | regular repeat times, a repeat description, begun by an "r=" line | |||
(see below) can be included following the time-field -- in which case | (see Section 5.10) can be included following the time-field -- in | |||
the time-field specifies the start and stop times of the entire | which case the time-field specifies the start and stop times of the | |||
repeat sequence. | entire repeat sequence. | |||
The following example specifies two active intervals: | The following example specifies two active intervals: | |||
t=3724394400 3724398000 ; Mon 8-Jan-2018 10:00-11:00 UTC | t=3724394400 3724398000 ; Mon 8-Jan-2018 10:00-11:00 UTC | |||
t=3724484400 3724488000 ; Tue 9-Jan-2018 11:00-12:00 UTC | t=3724484400 3724488000 ; Tue 9-Jan-2018 11:00-12:00 UTC | |||
The first and second sub-fields of the time-field give the start and | The first and second subfields of the time-field give the start and | |||
stop times, respectively, for the session. These are the decimal | stop times, respectively, for the session. These are the decimal | |||
representation of time values in seconds since January 1, 1900 UTC. | representation of time values in seconds since January 1, 1900 UTC. | |||
To convert these values to UNIX time (UTC), subtract decimal | To convert these values to Unix time (UTC), subtract decimal | |||
2208988800. | 2208988800. | |||
Some time representations will wrap in the year 2036. Because SDP | Some time representations will wrap in the year 2036. Because SDP | |||
uses an arbitrary length decimal representation, it does not have | uses an arbitrary length decimal representation, it does not have | |||
this issue. Implementations of SDP need to be prepared to handle | this issue. Implementations of SDP need to be prepared to handle | |||
these larger values. | these larger values. | |||
If the <stop-time> is set to zero, then the session is not bounded, | If the <stop-time> is set to zero, then the session is not bounded, | |||
though it will not become active until after the <start-time>. If | though it will not become active until after the <start-time>. If | |||
the <start-time> is also zero, the session is regarded as permanent. | the <start-time> is also zero, the session is regarded as permanent. | |||
User interfaces SHOULD strongly discourage the creation of unbounded | User interfaces SHOULD strongly discourage the creation of unbounded | |||
and permanent sessions as they give no information about when the | and permanent sessions as they give no information about when the | |||
session is actually going to terminate, and so make scheduling | session is actually going to terminate, and so make scheduling | |||
difficult. | difficult. | |||
The general assumption may be made, when displaying unbounded | The general assumption may be made, when displaying unbounded | |||
sessions that have not timed out to the user, that an unbounded | sessions that have not timed out to the user, that an unbounded | |||
session will only be active until half an hour from the current time | session will only be active until half an hour from the current time | |||
or the session start time, whichever is the later. If behavior other | or the session start time, whichever is the later. If behavior other | |||
than this is required, an end-time SHOULD be given and modified as | than this is required, a <stop-time> SHOULD be given and modified as | |||
appropriate when new information becomes available about when the | appropriate when new information becomes available about when the | |||
session should really end. | session should really end. | |||
Permanent sessions may be shown to the user as never being active | Permanent sessions may be shown to the user as never being active | |||
unless there are associated repeat times that state precisely when | unless there are associated repeat times that state precisely when | |||
the session will be active. | the session will be active. | |||
5.10. Repeat Times ("r=") | 5.10. Repeat Times ("r=") | |||
r=<repeat interval> <active duration> <offsets from start-time> | r=<repeat interval> <active duration> <offsets from start-time> | |||
An"r=" line (repeat-field) specifies repeat times for a session. If | An"r=" line (repeat-field) specifies repeat times for a session. If | |||
needed to express complex schedules, multiple repeat-fields may be | needed to express complex schedules, multiple repeat-fields may be | |||
included. For example, if a session is active at 10am on Monday and | included. For example, if a session is active at 10am on Monday and | |||
11am on Tuesday for one hour each week for three months, then the | 11am on Tuesday for one hour each week for three months, then the | |||
<start-time> in the corresponding "t=" line would be the | <start-time> in the corresponding "t=" line would be the | |||
representation of 10am on the first Monday, the <repeat interval> | representation of 10am on the first Monday, the <repeat interval> | |||
would be 1 week, the <active duration> would be 1 hour, and the | would be 1 week, the <active duration> would be 1 hour, and the | |||
offsets would be zero and 25 hours. The corresponding "t=" line stop | offsets would be zero and 25 hours. The corresponding "t=" line stop | |||
time would be the representation of the end of the last session three | time would be the representation of the end of the last session three | |||
months later. By default, all sub-fields are in seconds, so the "r=" | months later. By default, all subfields are in seconds, so the "r=" | |||
and "t=" lines might be the following: | and "t=" lines might be the following: | |||
t=3724394400 3730536000 ; Mon 8-Jan-2018 10:00-11:00 UTC | t=3724394400 3730536000 ; Mon 8-Jan-2018 10:00-11:00 UTC | |||
; Tues 20-Mar-2018 12:00 UTC | ; Tues 20-Mar-2018 12:00 UTC | |||
r=604800 3600 0 90000 ; 1 week, 1 hour, zero, 25 hours | r=604800 3600 0 90000 ; 1 week, 1 hour, zero, 25 hours | |||
To make the description more compact, times may also be given in | To make the description more compact, times may also be given in | |||
units of days, hours, or minutes. The syntax for these is a number | units 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) | +---+------------------------------------+ | |||
h - hours (3600 seconds) | | d | days (86400 seconds) | | |||
m - minutes (60 seconds) | +---+------------------------------------+ | |||
s - seconds (allowed for completeness) | | h | hours (3600 seconds) | | |||
+---+------------------------------------+ | ||||
| m | minutes (60 seconds) | | ||||
+---+------------------------------------+ | ||||
| s | seconds (allowed for completeness) | | ||||
+---+------------------------------------+ | ||||
Table 1: Time Unit Specification | ||||
Characters | ||||
Thus, the above repeat-field could also have been written: | Thus, the above repeat-field could also have been written: | |||
r=7d 1h 0 25h | r=7d 1h 0 25h | |||
Monthly and yearly repeats cannot be directly specified with a single | Monthly and yearly repeats cannot be directly specified with a single | |||
SDP repeat time; instead, separate time-descriptions should be used | SDP repeat time; instead, separate time-descriptions should be used | |||
to explicitly list the session times. | to explicitly list the session times. | |||
5.11. Time Zone Adjustment ("z=") | 5.11. Time Zone Adjustment ("z=") | |||
skipping to change at page 21, line 37 ¶ | skipping to change at line 967 ¶ | |||
k=<method> | k=<method> | |||
k=<method>:<encryption key> | k=<method>:<encryption key> | |||
The "k=" line (key-field) is obsolete and MUST NOT be used. It is | The "k=" line (key-field) is obsolete and MUST NOT be used. It is | |||
included in this document for legacy reasons. One MUST NOT include a | included in this document for legacy reasons. One MUST NOT include a | |||
"k=" line in an SDP, and MUST discard it if it is received in an SDP. | "k=" line in an SDP, and MUST discard it if it is received in an SDP. | |||
5.13. Attributes ("a=") | 5.13. Attributes ("a=") | |||
a=<attribute> | a=<attribute-name> | |||
a=<attribute>:<value> | a=<attribute-name>:<attribute-value> | |||
Attributes are the primary means for extending SDP. Attributes may | Attributes are the primary means for extending SDP. Attributes may | |||
be defined to be used as "session-level" attributes, "media-level" | be defined to be used as session-level attributes, media-level | |||
attributes, or both. (Attribute scopes in addition to media- and | attributes, or both. (Attribute scopes in addition to media-level | |||
session- level may also be defined in extensions to this document. | and session-level scopes may also be defined in extensions to this | |||
E.g., [RFC5576], [I-D.ietf-mmusic-data-channel-sdpneg].) | document, e.g., [RFC5576] and [RFC8864].) | |||
A media description may contain any number of "a=" lines (attribute- | A media description may contain any number of "a=" lines (attribute- | |||
fields) that are media description specific. These are referred to | fields) that are media description specific. These are referred to | |||
as "media-level" attributes and add information about the media | as media-level attributes and add information about the media | |||
description. Attribute-fields can also be added before the first | description. Attribute-fields can also be added before the first | |||
media description; these "session-level" attributes convey additional | media description; these session-level attributes convey additional | |||
information that applies to the session as a whole rather than to | information that applies to the session as a whole rather than to | |||
individual media descriptions. | individual media descriptions. | |||
Attribute-fields may be of two forms: | Attribute-fields may be of two forms: | |||
o A property attribute is simply of the form "a=<attribute>". These | * A property attribute is simply of the form "a=<attribute-name>". | |||
are binary attributes, and the presence of the attribute conveys | These are binary attributes, and the presence of the attribute | |||
that the attribute is a property of the session. An example might | conveys that the attribute is a property of the session. An | |||
be "a=recvonly". | example might be "a=recvonly". | |||
o A value attribute is of the form "a=<attribute>:<value>". For | * A value attribute is of the form "a=<attribute-name>:<attribute- | |||
example, a whiteboard could have the value attribute | value>". For example, a whiteboard could have the value attribute | |||
"a=orient:landscape" | "a=orient:landscape". | |||
Attribute interpretation depends on the media tool being invoked. | Attribute interpretation depends on the media tool being invoked. | |||
Thus receivers of session descriptions should be configurable in | Thus receivers of session descriptions should be configurable in | |||
their interpretation of session descriptions in general and of | their interpretation of session descriptions in general and of | |||
attributes in particular. | attributes in particular. | |||
Attribute names MUST use the US-ASCII subset of ISO-10646/UTF-8. | Attribute names MUST use the US-ASCII subset of ISO-10646/UTF-8. | |||
Attribute values are octet strings, and MAY use any octet value | Attribute values are octet strings, and MAY use any octet value | |||
except 0x00 (Nul), 0x0A (LF), and 0x0D (CR). By default, attribute | except 0x00 (Nul), 0x0A (LF), and 0x0D (CR). By default, attribute | |||
values are to be interpreted as in ISO-10646 character set with UTF-8 | values are to be interpreted as in ISO-10646 character set with UTF-8 | |||
encoding. Unlike other text fields, attribute values are NOT | encoding. Unlike other text fields, attribute values are NOT | |||
normally affected by the "charset" attribute as this would make | normally affected by the "a=charset:" attribute as this would make | |||
comparisons against known values problematic. However, when an | comparisons against known values problematic. However, when an | |||
attribute is defined, it can be defined to be charset dependent, in | attribute is defined, it can be defined to be charset dependent, in | |||
which case its value should be interpreted in the session charset | which case its value should be interpreted in the session charset | |||
rather than in ISO-10646. | rather than in ISO-10646. | |||
Attributes MUST be registered with IANA (see Section 8). If an | Attributes MUST be registered with IANA (see Section 8). If an | |||
attribute is received that is not understood, it MUST be ignored by | attribute is received that is not understood, it MUST be ignored by | |||
the receiver. | the receiver. | |||
5.14. Media Descriptions ("m=") | 5.14. Media Descriptions ("m=") | |||
m=<media> <port> <proto> <fmt> ... | m=<media> <port> <proto> <fmt> ... | |||
A session description may contain a number of media descriptions. | A session description may contain a number of media descriptions. | |||
Each media description starts with an "m=" line (media-field) and is | Each media description starts with an "m=" line (media-field) and is | |||
terminated by either the next "m=" line or by the end of the session | terminated by either the next "m=" line or by the end of the session | |||
description. A media-field has several sub-fields: | description. A media-field has several subfields: | |||
<media> is the media type. This document defines the values | <media> is the media type. This document defines the values | |||
"audio", "video", "text", "application", and "message". This list | "audio", "video", "text", "application", and "message". This list | |||
is extended by other memos and may be further extended by | is extended by other memos and may be further extended by | |||
additional memos registering media types in the future (see | additional memos registering media types in the future (see | |||
Section 8). For example, [RFC6466] defined the "image" media | Section 8). For example, [RFC6466] defined the "image" media | |||
type. | type. | |||
<port> is the transport port to which the media stream is sent. The | <port> is the transport port to which the media stream is sent. The | |||
meaning of the transport port depends on the network being used as | meaning of the transport port depends on the network being used as | |||
specified in the relevant "c=" line, and on the transport protocol | specified in the relevant "c=" line, and on the transport protocol | |||
defined in the <proto> sub-field of the media-field. Other ports | defined in the <proto> subfield of the media-field. Other ports | |||
used by the media application (such as the RTP Control Protocol | used by the media application (such as the RTP Control Protocol | |||
(RTCP) port [RFC3550]) MAY be derived algorithmically from the | (RTCP) port [RFC3550]) MAY be derived algorithmically from the | |||
base media port or MAY be specified in a separate attribute (for | base media port or MAY be specified in a separate attribute (for | |||
example, "a=rtcp:" as defined in [RFC3605]). | example, the "a=rtcp:" attribute as defined in [RFC3605]). | |||
If non-contiguous ports are used or if they don't follow the | If noncontiguous ports are used or if they don't follow the parity | |||
parity rule of even RTP ports and odd RTCP ports, the "a=rtcp:" | rule of even RTP ports and odd RTCP ports, the "a=rtcp:" attribute | |||
attribute MUST be used. Applications that are requested to send | MUST be used. Applications that are requested to send media to a | |||
media to a <port> that is odd and where the "a=rtcp:" is present | <port> that is odd and where the "a=rtcp:" attribute is present | |||
MUST NOT subtract 1 from the RTP port: that is, they MUST send the | MUST NOT subtract 1 from the RTP port: that is, they MUST send the | |||
RTP to the port indicated in <port> and send the RTCP to the port | RTP to the port indicated in <port> and send the RTCP to the port | |||
indicated in the "a=rtcp" attribute. | indicated in the "a=rtcp:" attribute. | |||
For applications where hierarchically encoded streams are being | For applications where hierarchically encoded streams are being | |||
sent to a unicast address, it may be necessary to specify multiple | sent to a unicast address, it may be necessary to specify multiple | |||
transport ports. This is done using a similar notation to that | transport ports. This is done using a similar notation to that | |||
used for IP multicast addresses in the "c=" line: | used for IP multicast addresses in the "c=" line: | |||
m=<media> <port>/<number of ports> <proto> <fmt> ... | m=<media> <port>/<number of ports> <proto> <fmt> ... | |||
In such a case, the ports used depend on the transport protocol. | In such a case, the ports used depend on the transport protocol. | |||
For RTP, the default is that only the even-numbered ports are used | For RTP, the default is that only the even-numbered ports are used | |||
for data with the corresponding one-higher odd ports used for the | for data with the corresponding one-higher odd ports used for the | |||
RTCP belonging to the RTP session, and the <number of ports> | RTCP belonging to the RTP session, and the <number of ports> | |||
denoting the number of RTP sessions. For example: | denoting the number of RTP sessions. For example: | |||
m=video 49170/2 RTP/AVP 31 | m=video 49170/2 RTP/AVP 31 | |||
would specify that ports 49170 and 49171 form one RTP/RTCP pair | would specify that ports 49170 and 49171 form one RTP/RTCP pair, | |||
and 49172 and 49173 form the second RTP/RTCP pair. RTP/AVP is the | and 49172 and 49173 form the second RTP/RTCP pair. RTP/AVP is the | |||
transport protocol and 31 is the format (see below). | transport protocol, and 31 is the format (see the description of | |||
<fmt> below). | ||||
This document does not include a mechanism for declaring | This document does not include a mechanism for declaring | |||
hierarchically encoded streams using non-contiguous ports. (There | hierarchically encoded streams using noncontiguous ports. (There | |||
is currently no attribute defined that can accomplish this. The | is currently no attribute defined that can accomplish this. The | |||
"a=rtcp:" defined in [RFC3605] does not handle hierarchical | "a=rtcp:" attribute defined in [RFC3605] does not handle | |||
encoding.) If a need arises to declare non-contiguous ports then | hierarchical encoding.) If a need arises to declare noncontiguous | |||
it will be necessary to define a new attribute to do so. | ports then it will be necessary to define a new attribute to do | |||
so. | ||||
If multiple addresses are specified in the "c=" line and multiple | If multiple addresses are specified in the "c=" line and multiple | |||
ports are specified in the "m=" line, a one-to-one mapping from | ports are specified in the "m=" line, a one-to-one mapping from | |||
port to the corresponding address is implied. For example: | port to the corresponding address is implied. For example: | |||
m=video 49170/2 RTP/AVP 31 | m=video 49170/2 RTP/AVP 31 | |||
c=IN IP4 233.252.0.1/127/2 | c=IN IP4 233.252.0.1/127/2 | |||
would imply that address 233.252.0.1 is used with ports 49170 and | would imply that address 233.252.0.1 is used with ports 49170 and | |||
49171, and address 233.252.0.2 is used with ports 49172 and 49173. | 49171, and address 233.252.0.2 is used with ports 49172 and 49173. | |||
The mapping is similar if multiple addresses are specified using | The mapping is similar if multiple addresses are specified using | |||
multiple "c=" lines. For example: | multiple "c=" lines. For example: | |||
m=video 49170/2 RTP/AVP 31 | m=video 49170/2 RTP/AVP 31 | |||
c=IN IP6 ff00::db8:0:101 | c=IN IP6 ff00::db8:0:101 | |||
c=IN IP6 ff00::db8:0:102 | c=IN IP6 ff00::db8:0:102 | |||
would imply that address ff00::db8:0:101 is used with ports 49170 | would imply that address ff00::db8:0:101 is used with ports 49170 | |||
and 49171, and address ff00::db8:0:102 is used with ports 49172 | and 49171, and address ff00::db8:0:102 is used with ports 49172 | |||
and 49173. | and 49173. | |||
This document gives no meaning to assigning the same media address | This document gives no meaning to assigning the same media address | |||
to multiple media-descriptions. Doing so does not implicitly | to multiple media descriptions. Doing so does not implicitly | |||
group those media-descriptions in any way. An explicit grouping | group those media descriptions in any way. An explicit grouping | |||
framework (for example, [RFC5888]) should instead be used to | framework (for example, [RFC5888]) should instead be used to | |||
express the intended semantics. For instance, see | express the intended semantics. For instance, see [RFC8843]. | |||
[I-D.ietf-mmusic-sdp-bundle-negotiation]. | ||||
<proto> is the transport protocol. The meaning of the transport | <proto> is the transport protocol. The meaning of the transport | |||
protocol is dependent on the address type sub-field in the | protocol is dependent on the address type subfield in the relevant | |||
relevant "c=" line. Thus a "c=" line with an address type of IP4 | "c=" line. Thus a "c=" line with an address type of "IP4" | |||
indicates that the transport protocol runs over IPv4. The | indicates that the transport protocol runs over IPv4. The | |||
following transport protocols are defined, but may be extended | following transport protocols are defined, but may be extended | |||
through registration of new protocols with IANA (see Section 8): | through registration of new protocols with IANA (see Section 8): | |||
* udp: denotes that the data is transported directly in UDP with | * udp: denotes that the data is transported directly in UDP with | |||
no additional framing. | no additional framing. | |||
* RTP/AVP: denotes RTP [RFC3550] used under the RTP Profile for | * RTP/AVP: denotes RTP [RFC3550] used under the RTP Profile for | |||
Audio and Video Conferences with Minimal Control [RFC3551] | Audio and Video Conferences with Minimal Control [RFC3551] | |||
running over UDP. | running over UDP. | |||
* RTP/SAVP: denotes the Secure Real-time Transport Protocol | * RTP/SAVP: denotes the Secure Real-time Transport Protocol | |||
[RFC3711] running over UDP. | [RFC3711] running over UDP. | |||
* RTP/SAVPF: denotes SRTP with the Extended SRTP Profile for | ||||
RTCP-Based Feedback [RFC5124] running over UDP. | ||||
The main reason to specify the transport protocol in addition to | The main reason to specify the transport protocol in addition to | |||
the media format is that the same standard media formats may be | the media format is that the same standard media formats may be | |||
carried over different transport protocols even when the network | carried over different transport protocols even when the network | |||
protocol is the same -- a historical example is VAT (MBone's | protocol is the same -- a historical example is vat (MBone's | |||
popular multimedia audio tool) Pulse Code Modulation (PCM) audio | popular multimedia audio tool) Pulse Code Modulation (PCM) audio | |||
and RTP PCM audio; another might be TCP/RTP PCM audio. In | and RTP PCM audio; another might be TCP/RTP PCM audio. In | |||
addition, relays and monitoring tools that are transport-protocol- | addition, relays and monitoring tools that are transport-protocol- | |||
specific but format-independent are possible. | specific but format-independent are possible. | |||
<fmt> is a media format description. The fourth and any subsequent | <fmt> is a media format description. The fourth and any subsequent | |||
sub-fields describe the format of the media. The interpretation | subfields describe the format of the media. The interpretation of | |||
of the media format depends on the value of the <proto> sub-field. | the media format depends on the value of the <proto> subfield. | |||
If the <proto> sub-field is "RTP/AVP" or "RTP/SAVP" the <fmt> sub- | If the <proto> subfield is "RTP/AVP" or "RTP/SAVP", the <fmt> | |||
fields contain RTP payload type numbers. When a list of payload | subfields contain RTP payload type numbers. When a list of | |||
type numbers is given, this implies that all of these payload | payload type numbers is given, this implies that all of these | |||
formats MAY be used in the session, but the first of these formats | payload formats MAY be used in the session, and these payload | |||
SHOULD be used as the default format for the session. For dynamic | formats are listed in order of preference, with the first format | |||
payload type assignments the "a=rtpmap:" attribute (see Section 6) | listed being preferred. When multiple payload formats are listed, | |||
SHOULD be used to map from an RTP payload type number to a media | the first acceptable payload format from the beginning of the list | |||
encoding name that identifies the payload format. The "a=fmtp:" | SHOULD be used for the session. For dynamic payload type | |||
attribute MAY be used to specify format parameters (see | assignments, the "a=rtpmap:" attribute (see Section 6.6) SHOULD be | |||
Section 6). | used to map from an RTP payload type number to a media encoding | |||
name that identifies the payload format. The "a=fmtp:" attribute | ||||
MAY be used to specify format parameters (see Section 6.15). | ||||
If the <proto> sub-field is "udp" the <fmt> sub-fields MUST | If the <proto> subfield is "udp", the <fmt> subfields MUST | |||
reference a media type describing the format under the "audio", | reference a media type describing the format under the "audio", | |||
"video", "text", "application", or "message" top-level media | "video", "text", "application", or "message" top-level media | |||
types. The media type registration SHOULD define the packet | types. The media type registration SHOULD define the packet | |||
format for use with UDP transport. | format for use with UDP transport. | |||
For media using other transport protocols, the <fmt> sub-field is | For media using other transport protocols, the <fmt> subfield is | |||
protocol specific. Rules for interpretation of the <fmt> sub- | protocol specific. Rules for interpretation of the <fmt> subfield | |||
field MUST be defined when registering new protocols (see | MUST be defined when registering new protocols (see | |||
Section 8.2.2). | Section 8.2.2). | |||
Section 3 of [RFC4855] states that the payload format (encoding) | Section 3 of [RFC4855] states that the payload format (encoding) | |||
names defined in the RTP Profile are commonly shown in upper case, | names defined in the RTP profile are commonly shown in upper case, | |||
while media subtype names are commonly shown in lower case. It | while media subtype names are commonly shown in lower case. It | |||
also states that both of these names are case-insensitive in both | also states that both of these names are case-insensitive in both | |||
places, similar to parameter names which are case-insensitive both | places, similar to parameter names which are case-insensitive both | |||
in media type strings and in the default mapping to the SDP a=fmtp | in media type strings and in the default mapping to the SDP | |||
attribute. | "a=fmtp:" attribute. | |||
6. SDP Attributes | 6. SDP Attributes | |||
The following attributes are defined. Since application writers may | The following attributes are defined. Since application writers may | |||
add new attributes as they are required, this list is not exhaustive. | add new attributes as they are required, this list is not exhaustive. | |||
Registration procedures for new attributes are defined in | Registration procedures for new attributes are defined in | |||
Section 8.2.4. Syntax is provided using ABNF [RFC7405] with some of | Section 8.2.4. Syntax is provided using ABNF [RFC7405] with some of | |||
the rules defined further in Section 9. | the rules defined further in Section 9. | |||
6.1. cat (category) | 6.1. cat (Category) | |||
Name: cat | Name: cat | |||
Value: cat-value | Value: cat-value | |||
Usage Level: session | Usage Level: session | |||
Charset Dependent: no | Charset Dependent: no | |||
Syntax: | Syntax: | |||
cat-value = category | cat-value = category | |||
category = non-ws-string | category = non-ws-string | |||
Example: | Example: | |||
a=cat:foo.bar | a=cat:foo.bar | |||
This attribute gives the dot-separated hierarchical category of the | This attribute gives the dot-separated hierarchical category of the | |||
session. This is to enable a receiver to filter unwanted sessions by | session. This is to enable a receiver to filter unwanted sessions by | |||
category. There is no central registry of categories. This | category. There is no central registry of categories. This | |||
attribute is obsolete and SHOULD NOT be used. It SHOULD be ignored | attribute is obsolete and SHOULD NOT be used. It SHOULD be ignored | |||
if received. | if received. | |||
6.2. keywds (keywords) | 6.2. keywds (Keywords) | |||
Name: keywds | Name: keywds | |||
Value: keywds-value | Value: keywds-value | |||
Usage Level: session | Usage Level: session | |||
Charset Dependent: yes | Charset Dependent: yes | |||
Syntax: | Syntax: | |||
keywds-value = keywords | keywds-value = keywords | |||
keywords = text | keywords = text | |||
Example: | Example: | |||
a=keywds:SDP session description protocol | a=keywds:SDP session description protocol | |||
Like the cat attribute, this was intended to assist identifying | Like the "a=cat:" attribute, this was intended to assist identifying | |||
wanted sessions at the receiver. This allows a receiver to select | wanted sessions at the receiver, and to allow a receiver to select | |||
interesting sessions based on keywords describing the purpose of the | interesting sessions based on keywords describing the purpose of the | |||
session; there is no central registry of keywords. Its value should | session; however, there is no central registry of keywords. Its | |||
be interpreted in the charset specified for the session description | value should be interpreted in the charset specified for the session | |||
if one is specified, or by default in ISO 10646/UTF-8. This | description if one is specified, or by default in ISO 10646/UTF-8. | |||
attribute is obsolete and SHOULD NOT be used. It SHOULD be ignored | This attribute is obsolete and SHOULD NOT be used. It SHOULD be | |||
if received. | ignored if received. | |||
6.3. tool | 6.3. tool | |||
Name: tool | Name: tool | |||
Value: tool-value | Value: tool-value | |||
Usage Level: session | Usage Level: session | |||
Charset Dependent: no | Charset Dependent: no | |||
Syntax: | Syntax: | |||
tool-value = tool-name-and-version | tool-value = tool-name-and-version | |||
tool-name-and-version = text | tool-name-and-version = text | |||
Example: | Example: | |||
a=tool:foobar V3.2 | a=tool:foobar V3.2 | |||
This gives the name and version number of the tool used to create the | This gives the name and version number of the tool used to create the | |||
session description. | session description. | |||
6.4. ptime (packet time) | 6.4. ptime (Packet Time) | |||
Name: ptime | Name: ptime | |||
Value: ptime-value | Value: ptime-value | |||
Usage Level: media | Usage Level: media | |||
Charset Dependent: no | Charset Dependent: no | |||
Syntax: | Syntax: | |||
ptime-value = non-zero-int-or-real | ptime-value = non-zero-int-or-real | |||
Example: | Example: | |||
a=ptime:20 | a=ptime:20 | |||
This gives the length of time in milliseconds represented by the | This gives the length of time in milliseconds represented by the | |||
media in a packet. This is probably only meaningful for audio data, | media in a packet. This is probably only meaningful for audio data, | |||
but may be used with other media types if it makes sense. It should | but may be used with other media types if it makes sense. It should | |||
not be necessary to know ptime to decode RTP or vat audio, and it is | not be necessary to know "a=ptime:" to decode RTP or vat audio, and | |||
intended as a recommendation for the encoding/packetization of audio. | it is intended as a recommendation for the encoding/packetization of | |||
audio. | ||||
6.5. maxptime (maximum packet time) | 6.5. maxptime (Maximum Packet Time) | |||
Name: maxptime | Name: maxptime | |||
Value: maxptime-value | Value: maxptime-value | |||
Usage Level: media | Usage Level: media | |||
Charset Dependent: no | Charset Dependent: no | |||
Syntax: | Syntax: | |||
maxptime-value = non-zero-int-or-real | maxptime-value = non-zero-int-or-real | |||
Example: | Example: | |||
a=maxptime:20 | a=maxptime:20 | |||
This gives the maximum amount of media that can be encapsulated in | This gives the maximum amount of media that can be encapsulated in | |||
each packet, expressed as time in milliseconds. The time SHALL be | each 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. For frame-based codecs, the time SHOULD be an integer | represents. For frame-based codecs, the time SHOULD be an integer | |||
multiple of the frame size. This attribute is probably only | multiple of the frame size. This attribute is probably only | |||
meaningful for audio data, but may be used with other media types if | meaningful for audio data, but may be used with other media types if | |||
it makes sense. Note that this attribute was introduced after | it makes sense. Note that this attribute was introduced after | |||
[RFC2327], and non-updated implementations will ignore this | [RFC2327], and implementations that have not been updated will ignore | |||
attribute. | this attribute. | |||
6.6. rtpmap | 6.6. rtpmap | |||
Name: rtpmap | Name: rtpmap | |||
Value: rtpmap-value | Value: rtpmap-value | |||
Usage Level: media | Usage Level: media | |||
Charset Dependent: no | ||||
Charset Dependent: no | ||||
Syntax: | Syntax: | |||
rtpmap-value = payload-type SP encoding-name | rtpmap-value = payload-type SP encoding-name | |||
"/" clock-rate [ "/" encoding-params ] | "/" clock-rate [ "/" encoding-params ] | |||
payload-type = zero-based-integer | payload-type = zero-based-integer | |||
encoding-name = token | encoding-name = token | |||
clock-rate = integer | clock-rate = integer | |||
encoding-params = channels | encoding-params = channels | |||
channels = integer | channels = integer | |||
This attribute maps from an RTP payload type number (as used in an | This attribute maps from an RTP payload type number (as used in an | |||
"m=" line) to an encoding name denoting the payload format to be | "m=" line) to an encoding name denoting the payload format to be | |||
used. It also provides information on the clock rate and encoding | used. It also provides information on the clock rate and encoding | |||
parameters. Note that the payload type number is indicated in a | parameters. Note that the payload type number is indicated in a | |||
7-bit field, limiting the values to inclusively between 0 and 127. | 7-bit field, limiting the values to inclusively between 0 and 127. | |||
Although an RTP profile can make static assignments of payload type | Although an RTP profile can make static assignments of payload type | |||
numbers to payload formats, it is more common for that assignment to | numbers to payload formats, it is more common for that assignment to | |||
be done dynamically using "a=rtpmap:" attributes. As an example of a | be done dynamically using "a=rtpmap:" attributes. As an example of a | |||
static payload type, consider u-law PCM coded single-channel audio | static payload type, consider u-law PCM encoded single-channel audio | |||
sampled at 8 kHz. This is completely defined in the RTP Audio/Video | sampled at 8 kHz. This is completely defined in the RTP audio/video | |||
profile as payload type 0, so there is no need for an "a=rtpmap:" | profile as payload type 0, so there is no need for an "a=rtpmap:" | |||
attribute, and the media for such a stream sent to UDP port 49232 can | attribute, and the media for such a stream sent to UDP port 49232 can | |||
be specified as: | be specified as: | |||
m=audio 49232 RTP/AVP 0 | m=audio 49232 RTP/AVP 0 | |||
An example of a dynamic payload type is 16-bit linear encoded stereo | An example of a dynamic payload type is 16-bit linear encoded stereo | |||
audio sampled at 16 kHz. If we wish to use the dynamic RTP/AVP | audio sampled at 16 kHz. If we wish to use the dynamic RTP/AVP | |||
payload type 98 for this stream, additional information is required | payload type 98 for this stream, additional information is required | |||
to decode it: | to decode it: | |||
m=audio 49232 RTP/AVP 98 | m=audio 49232 RTP/AVP 98 | |||
a=rtpmap:98 L16/16000/2 | a=rtpmap:98 L16/16000/2 | |||
Up to one rtpmap attribute can be defined for each media format | Up to one "a=rtpmap:" attribute can be defined for each media format | |||
specified. Thus, we might have the following: | specified. Thus, we might have the following: | |||
m=audio 49230 RTP/AVP 96 97 98 | m=audio 49230 RTP/AVP 96 97 98 | |||
a=rtpmap:96 L8/8000 | a=rtpmap:96 L8/8000 | |||
a=rtpmap:97 L16/8000 | a=rtpmap:97 L16/8000 | |||
a=rtpmap:98 L16/11025/2 | a=rtpmap:98 L16/11025/2 | |||
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. The "RTP/AVP" | encoding names if that profile is to be used with SDP. The "RTP/AVP" | |||
skipping to change at page 30, line 24 ¶ | skipping to change at line 1382 ¶ | |||
Additional encoding parameters MAY be defined in the future, but | Additional encoding parameters MAY be defined in the future, but | |||
codec-specific parameters SHOULD NOT be added. Parameters added to | codec-specific parameters SHOULD NOT be added. Parameters added to | |||
an "a=rtpmap:" attribute SHOULD only be those required for a session | an "a=rtpmap:" attribute SHOULD only be those required for a session | |||
directory to make the choice of appropriate media to participate in a | directory to make the choice of appropriate media to participate in a | |||
session. Codec-specific parameters should be added in other | session. Codec-specific parameters should be added in other | |||
attributes (for example, "a=fmtp:"). | attributes (for example, "a=fmtp:"). | |||
Note: RTP audio formats typically do not include information about | Note: RTP audio formats typically do not include information about | |||
the number of samples per packet. If a non-default (as defined in | the number of samples per packet. If a non-default (as defined in | |||
the RTP Audio/Video Profile [RFC3551]) packetization is required, the | the RTP Audio/Video Profile [RFC3551]) packetization is required, the | |||
"ptime" attribute is used as given above. | "a=ptime:" attribute is used as given in Section 6.4. | |||
6.7. Media Direction Attributes | 6.7. Media Direction Attributes | |||
At most one occurrence of recvonly, sendrecv, sendonly, or inactive | At most one occurrence of "a=recvonly", "a=sendrecv", "a=sendonly", | |||
MAY appear at session level, and at most one MAY appear in each media | or "a=inactive" MAY appear at session level, and at most one MAY | |||
description. | appear in each media description. | |||
If any one of these appears in a media description then it applies | If any one of these appears in a media description, then it applies | |||
for that media description. If none appear in a media description | for that media description. If none appears in a media description, | |||
then the one from session level, if any, applies to that media | then the one from session level, if any, applies to that media | |||
description. | description. | |||
If none of the media direction attributes is present at either | If none of the media direction attributes is present at either | |||
session level or media level, "sendrecv" SHOULD be assumed as the | session level or media level, "a=sendrecv" SHOULD be assumed as the | |||
default. | default. | |||
Within the following SDP example, the "sendrecv" attribute applies to | Within the following SDP example, the "a=sendrecv" attribute applies | |||
the first audio media and the "inactive" attribute applies to the | to the first audio media and the "a=inactive" attribute applies to | |||
others. | the others. | |||
v=0 | v=0 | |||
o=jdoe 3724395000 3724395001 IN IP6 2001:db8::1 | o=jdoe 3724395000 3724395001 IN IP6 2001:db8::1 | |||
s=- | s=- | |||
c=IN IP6 2001:db8::1 | c=IN IP6 2001:db8::1 | |||
t=0 0 | t=0 0 | |||
a=inactive | a=inactive | |||
m=audio 49170 RTP/AVP 0 | m=audio 49170 RTP/AVP 0 | |||
a=sendrecv | a=sendrecv | |||
m=audio 49180 RTP/AVP 0 | m=audio 49180 RTP/AVP 0 | |||
m=video 51372 RTP/AVP 99 | m=video 51372 RTP/AVP 99 | |||
a=rtpmap:99 h263-1998/90000 | a=rtpmap:99 h263-1998/90000 | |||
6.7.1. recvonly (receive-only) | 6.7.1. recvonly (Receive-Only) | |||
Name: recvonly | Name: recvonly | |||
Value: | Value: | |||
Usage Level: session, media | Usage Level: session, media | |||
Charset Dependent: no | Charset Dependent: no | |||
Example: | Example: | |||
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. Note that recvonly applies to the media only, not | where applicable. Note that receive-only mode applies to the media | |||
to any associated control protocol. An RTP-based system in recvonly | only, not to any associated control protocol. An RTP-based system in | |||
mode MUST still send RTCP packets as described in [RFC3550] | receive-only mode MUST still send RTCP packets as described in | |||
Section 6. | [RFC3550], Section 6. | |||
6.7.2. sendrecv (send-receive) | 6.7.2. sendrecv (Send-Receive) | |||
Name: sendrecv | Name: sendrecv | |||
Value: | Value: | |||
Usage Level: session, media | Usage Level: session, media | |||
Charset Dependent: no | Charset Dependent: no | |||
Example: | Example: | |||
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 multimedia conferences with | mode. This is necessary for interactive multimedia conferences with | |||
tools that default to receive-only mode. | tools that default to receive-only mode. | |||
6.7.3. sendonly (send-only) | 6.7.3. sendonly (Send-Only) | |||
Name: sendonly | Name: sendonly | |||
Value: | Value: | |||
Usage Level: session, media | Usage Level: session, media | |||
Charset Dependent: no | Charset Dependent: no | |||
Example: | Example: | |||
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 for | 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, two | a traffic destination than for a traffic source. In such a case, two | |||
media descriptions may be used, one sendonly and one recvonly. Note | media descriptions may be used, one in send-only mode and one in | |||
that sendonly applies only to the media, and any associated control | receive-vonly mode. Note that send-only mode applies only to the | |||
protocol (e.g., RTCP) SHOULD still be received and processed as | media, and any associated control protocol (e.g., RTCP) SHOULD still | |||
normal. | be received and processed as normal. | |||
6.7.4. inactive | 6.7.4. inactive | |||
Name: inactive | Name: inactive | |||
Value: | Value: | |||
Usage Level: session, media | Usage Level: session, media | |||
Charset Dependent: no | Charset Dependent: no | |||
Example: | Example: | |||
a=inactive | a=inactive | |||
This specifies that the tools should be started in inactive mode. | This specifies that the tools should be started in inactive mode. | |||
This is necessary for interactive multimedia conferences where users | This is necessary for interactive multimedia conferences where users | |||
can put other users on hold. No media is sent over an inactive media | can put other users on hold. No media is sent over an inactive media | |||
stream. Note that an RTP-based system MUST still send RTCP (if RTCP | stream. Note that an RTP-based system MUST still send RTCP (if RTCP | |||
is used), even if started inactive. | is used), even if started in inactive mode. | |||
6.8. orient (orientation) | 6.8. orient (Orientation) | |||
Name: orient | Name: orient | |||
Value: orient-value | Value: orient-value | |||
Usage Level: media | Usage Level: media | |||
Charset Dependent: no | Charset Dependent: no | |||
Syntax: | Syntax: | |||
orient-value = portrait / landscape / seascape | orient-value = portrait / landscape / seascape | |||
portrait = %s"portrait" | portrait = %s"portrait" | |||
landscape = %s"landscape" | landscape = %s"landscape" | |||
seascape = %s"seascape" | seascape = %s"seascape" | |||
; NOTE: These names are case-sensitive. | ; NOTE: These names are case-sensitive. | |||
Example: | Example: | |||
a=orient:portrait | a=orient:portrait | |||
Normally this is only used for a whiteboard or presentation tool. It | Normally this is only used for a whiteboard or presentation tool. It | |||
specifies the orientation of the workspace on the screen. Permitted | specifies the orientation of the workspace on the screen. Permitted | |||
values are "portrait", "landscape", and "seascape" (upside-down | values are "portrait", "landscape", and "seascape" (upside-down | |||
landscape). | landscape). | |||
6.9. type (conference type) | 6.9. type (Conference Type) | |||
Name: type | Name: type | |||
Value: type-value | Value: type-value | |||
Usage Level: session | Usage Level: session | |||
Charset Dependent: no | Charset Dependent: no | |||
Syntax: | Syntax: | |||
type-value = conference-type | type-value = conference-type | |||
conference-type = broadcast / meeting / moderated / test / | conference-type = broadcast / meeting / moderated / test / | |||
H332 | H332 | |||
broadcast = %s"broadcast" | broadcast = %s"broadcast" | |||
meeting = %s"meeting" | meeting = %s"meeting" | |||
moderated = %s"moderated" | moderated = %s"moderated" | |||
test = %s"test" | test = %s"test" | |||
H332 = %s"H332" | H332 = %s"H332" | |||
; NOTE: These names are case-sensitive. | ; NOTE: These names are case-sensitive. | |||
Example: | Example: | |||
a=type:moderated | a=type:moderated | |||
This specifies the type of the multimedia conference. Allowed values | This specifies the type of the multimedia conference. Allowed values | |||
are "broadcast", "meeting", "moderated", "test", and "H332". These | are "broadcast", "meeting", "moderated", "test", and "H332". These | |||
values have implications for other options that are likely to be | values have implications for other options that are likely to be | |||
appropriate: | appropriate: | |||
o When "a=type:broadcast" is specified, "a=recvonly" is probably | * When "a=type:broadcast" is specified, "a=recvonly" is probably | |||
appropriate for those connecting. | appropriate for those connecting. | |||
o When "a=type:meeting" is specified, "a=sendrecv" is likely to be | * When "a=type:meeting" is specified, "a=sendrecv" is likely to be | |||
appropriate. | appropriate. | |||
o "a=type:moderated" suggests the use of a floor control tool and | * "a=type:moderated" suggests the use of a floor control tool and | |||
that the media tools be started so as to mute new sites joining | that the media tools be started so as to mute new sites joining | |||
the multimedia conference. | the multimedia conference. | |||
o Specifying "a=type:H332" indicates that this loosely coupled | * Specifying "a=type:H332" indicates that this loosely coupled | |||
session is part of an H.332 session as defined in the ITU H.332 | session is part of an H.332 session as defined in the ITU H.332 | |||
specification [ITU.H332.1998]. Media tools should be started | specification [ITU.H332.1998]. Media tools should be started | |||
using "a=recvonly". | using "a=recvonly". | |||
o Specifying "a=type:test" is suggested as a hint that, unless | * Specifying "a=type:test" is suggested as a hint that, unless | |||
explicitly requested otherwise, receivers can safely avoid | explicitly requested otherwise, receivers can safely avoid | |||
displaying this session description to users. | displaying this session description to users. | |||
6.10. charset (character set) | 6.10. charset (Character Set) | |||
Name: charset | Name: charset | |||
Value: charset-value | Value: charset-value | |||
Usage Level: session | Usage Level: session | |||
Charset Dependent: no | Charset Dependent: no | |||
Syntax: | Syntax: | |||
charset-value = <defined in [RFC2978]> | charset-value = <defined in [RFC2978]> | |||
This specifies the character set to be used to display the session | This specifies the character set to be used to display the session | |||
name and information data. By default, the ISO-10646 character set | name and information data. By default, the ISO-10646 character set | |||
in UTF-8 encoding is used. If a more compact representation is | in UTF-8 encoding is used. If a more compact representation is | |||
required, other character sets may be used. For example, the ISO | required, other character sets may be used. For example, the ISO | |||
8859-1 is specified with the following SDP attribute: | 8859-1 is specified with the following SDP attribute: | |||
a=charset:ISO-8859-1 | a=charset:ISO-8859-1 | |||
The charset specified MUST be one of those registered in the IANA | The charset specified MUST be one of those registered in the IANA | |||
skipping to change at page 35, line 21 ¶ | skipping to change at line 1608 ¶ | |||
"Preferred MIME Name" field of the registry using a case-insensitive | "Preferred MIME Name" field of the registry using a case-insensitive | |||
comparison. If the identifier is not recognized or not supported, | comparison. If the identifier is not recognized or not supported, | |||
all strings that are affected by it SHOULD be regarded as octet | all strings that are affected by it SHOULD be regarded as octet | |||
strings. | strings. | |||
Charset-dependent fields MUST contain only sequences of bytes that | Charset-dependent fields MUST contain only sequences of bytes that | |||
are valid according to the definition of the selected character set. | are valid according to the definition of the selected character set. | |||
Furthermore, charset-dependent fields MUST NOT contain the bytes 0x00 | Furthermore, charset-dependent fields MUST NOT contain the bytes 0x00 | |||
(Nul), 0x0A (LF), and 0x0d (CR). | (Nul), 0x0A (LF), and 0x0d (CR). | |||
6.11. sdplang (SDP language) | 6.11. sdplang (SDP Language) | |||
Name: sdplang | Name: sdplang | |||
Value: sdplang-value | Value: sdplang-value | |||
Usage Level: session, media | Usage Level: session, media | |||
Charset Dependent: no | Charset Dependent: no | |||
Syntax: | Syntax: | |||
sdplang-value = Language-Tag | sdplang-value = Language-Tag | |||
; Language-Tag defined in RFC5646 | ; Language-Tag defined in RFC 5646 | |||
Example: | Example: | |||
a=sdplang:fr | a=sdplang:fr | |||
Multiple sdplang attributes can be provided either at session or | Multiple "a=sdplang:" attributes can be provided either at session or | |||
media level if the session description or media use multiple | media level if the session description or media use multiple | |||
languages. | languages. | |||
As a session-level attribute, it specifies the language for the | As a session-level attribute, it specifies the language for the | |||
session description (not the language of the media). As a media- | session description (not the language of the media). As a media- | |||
level attribute, it specifies the language for any media-level SDP | level attribute, it specifies the language for any media-level SDP | |||
information-field associated with that media (again not the language | information-field associated with that media (again not the language | |||
of the media), overriding any sdplang attributes specified at session | of the media), overriding any "a=sdplang:" attributes specified at | |||
level. | session level. | |||
In general, sending session descriptions consisting of multiple | In general, sending session descriptions consisting of multiple | |||
languages is discouraged. Instead, multiple sesssion descriptions | languages is discouraged. Instead, multiple session descriptions | |||
SHOULD be sent describing the session, one in each language. | SHOULD be sent describing the session, one in each language. | |||
However, this is not possible with all transport mechanisms, and so | However, this is not possible with all transport mechanisms, and so | |||
multiple sdplang attributes are allowed although NOT RECOMMENDED. | multiple "a=sdplang:" attributes are allowed although NOT | |||
RECOMMENDED. | ||||
The "sdplang" attribute value must be a single [RFC5646] language | The "a=sdplang:" attribute value must be a single language tag | |||
tag. An "sdplang" attribute SHOULD be specified when a session is | [RFC5646]. An "a=sdplang:" attribute SHOULD be specified when a | |||
distributed with sufficient scope to cross geographic boundaries, | session is distributed with sufficient scope to cross geographic | |||
where the language of recipients cannot be assumed, or where the | boundaries, where the language of recipients cannot be assumed, or | |||
session is in a different language from the locally assumed norm. | where the session is in a different language from the locally assumed | |||
norm. | ||||
6.12. lang (language) | 6.12. lang (Language) | |||
Name: lang | Name: lang | |||
Value: lang-value | Value: lang-value | |||
Usage Level: session, media | Usage Level: session, media | |||
Charset Dependent: no | Charset Dependent: no | |||
Syntax: | Syntax: | |||
lang-value = Language-Tag | lang-value = Language-Tag | |||
; Language-Tag defined in RFC5646 | ; Language-Tag defined in RFC 5646 | |||
Example: | Example: | |||
a=lang:de | a=lang:de | |||
Multiple lang attributes can be provided either at session or media | Multiple "a=lang:" attributes can be provided either at session or | |||
level if the session or media has capabilities in more than one | media level if the session or media has capabilities in more than one | |||
language, in which case the order of the attributes indicates the | language, in which case the order of the attributes indicates the | |||
order of preference of the various languages in the session or media, | order of preference of the various languages in the session or media, | |||
from most preferred to least preferred. | from most preferred to least preferred. | |||
As a session-level attribute, lang specifies a language capability | As a session-level attribute, "a=lang:" specifies a language | |||
for the session being described. As a media-level attribute, it | capability for the session being described. As a media-level | |||
specifies a language capability for that media, overriding any | attribute, it specifies a language capability for that media, | |||
session-level language(s) specified. | overriding any session-level language(s) specified. | |||
The "lang" attribute value must be a single [RFC5646] language tag. | The "a=lang:" attribute value must be a single [RFC5646] language | |||
A "lang" attribute SHOULD be specified when a session is of | tag. An "a=lang:" attribute SHOULD be specified when a session is of | |||
sufficient scope to cross geographic boundaries where the language of | sufficient scope to cross geographic boundaries where the language of | |||
participants cannot be assumed, or where the session has capabilities | participants cannot be assumed, or where the session has capabilities | |||
in languages different from the locally assumed norm. | in languages different from the locally assumed norm. | |||
The "lang" attribute is supposed to be used for setting the initial | The "a=lang:" attribute is supposed to be used for setting the | |||
language(s) used in the session. Events during the session may | initial language(s) used in the session. Events during the session | |||
influence which language(s) are used, and the participants are not | may influence which language(s) are used, and the participants are | |||
strictly bound to only use the declared languages. | not strictly bound to only use the declared languages. | |||
Most real-time use cases start with just one language used, while | Most real-time use cases start with just one language used, while | |||
other cases involve a range of languages, e.g. an interpreted or | other cases involve a range of languages, e.g., an interpreted or | |||
subtitled session. When more than one 'lang' attribute is specified, | subtitled session. When more than one "a=lang:" attribute is | |||
the "lang" attribute itself does not provide any information about | specified, the "a=lang:" attribute itself does not provide any | |||
multiple languages being intended to be used during the session, or | information about multiple languages being intended to be used during | |||
if the intention is to only select one of the languages. If needed, | the session, or if the intention is to only select one of the | |||
a new attribute can be defined and used to indicate such intentions. | languages. If needed, a new attribute can be defined and used to | |||
Without such semantics, it is assumed that for a negotiated session | indicate such intentions. Without such semantics, it is assumed that | |||
one of the declared languages will be selected and used. | for a negotiated session one of the declared languages will be | |||
selected and used. | ||||
6.13. framerate (frame rate) | 6.13. framerate (Frame Rate) | |||
Name: framerate | Name: framerate | |||
Value: framerate-value | Value: framerate-value | |||
Usage Level: media | Usage Level: media | |||
Charset Dependent: no | Charset Dependent: no | |||
Syntax: | Syntax: | |||
framerate-value = non-zero-int-or-real | framerate-value = non-zero-int-or-real | |||
Example: | Example: | |||
a=framerate:60 | a=framerate:60 | |||
This gives the maximum video frame rate in frames/sec. It is | This gives the maximum video frame rate in frames/sec. It is | |||
intended as a recommendation for the encoding of video data. Decimal | intended as a recommendation for the encoding of video data. Decimal | |||
representations of fractional values are allowed. It is defined only | representations of fractional values are allowed. It is defined only | |||
for video media. | for video media. | |||
6.14. quality | 6.14. quality | |||
Name: quality | Name: quality | |||
Value: quality-value | Value: quality-value | |||
Usage Level: media | Usage Level: media | |||
Charset Dependent: no | ||||
Charset Dependent: no | ||||
Syntax: | Syntax: | |||
quality-value = zero-based-integer | quality-value = zero-based-integer | |||
Example: | Example: | |||
a=quality:10 | a=quality:10 | |||
This gives a suggestion for the quality of the encoding as an integer | This gives a suggestion for the quality of the encoding as an integer | |||
value. The intention of the quality attribute for video is to | value. The intention of the quality attribute for video is to | |||
specify a non-default trade-off between frame-rate and still-image | specify a non-default trade-off between frame-rate and still-image | |||
quality. For video, the value is in the range 0 to 10, with the | quality. For video, the value is in the range 0 to 10, with the | |||
following suggested meaning: | following suggested meaning: | |||
10 - the best still-image quality the compression scheme | +----+----------------------------------------+ | |||
can give. | | 10 | the best still-image quality the | | |||
5 - the default behavior given no quality suggestion. | | | compression scheme can give. | | |||
0 - the worst still-image quality the codec designer | +----+----------------------------------------+ | |||
thinks is still usable. | | 5 | the default behavior given no quality | | |||
| | suggestion. | | ||||
+----+----------------------------------------+ | ||||
| 0 | the worst still-image quality the | | ||||
| | codec designer thinks is still usable. | | ||||
+----+----------------------------------------+ | ||||
6.15. fmtp (format parameters) | Table 2: Encoding Quality Values | |||
Name: fmtp | 6.15. fmtp (Format Parameters) | |||
Value: fmtp-value | Name: fmtp | |||
Usage Level: media | Value: fmtp-value | |||
Charset Dependent: no | Usage Level: media | |||
Charset Dependent: no | ||||
Syntax: | Syntax: | |||
fmtp-value = fmt SP format-specific-params | fmtp-value = fmt SP format-specific-params | |||
format-specific-params = byte-string | format-specific-params = byte-string | |||
; Notes: | ; Notes: | |||
; - The format parameters are media type parameters and | ; - The format parameters are media type parameters and | |||
; need to reflect their syntax. | ; need to reflect their syntax. | |||
Example: | Example: | |||
skipping to change at page 39, line 7 ¶ | skipping to change at line 1794 ¶ | |||
a=fmtp:96 profile-level-id=42e016;max-mbps=108000;max-fs=3600 | a=fmtp:96 profile-level-id=42e016;max-mbps=108000;max-fs=3600 | |||
This attribute allows parameters that are specific to a particular | This attribute allows parameters that are specific to a particular | |||
format to be conveyed in a way that SDP does not have to understand | format to be conveyed in a way that SDP does not have to understand | |||
them. The format must be one of the formats specified for the media. | them. The format must be one of the formats specified for the media. | |||
Format-specific parameters, semicolon separated, may be any set of | Format-specific parameters, semicolon separated, may be any set of | |||
parameters required to be conveyed by SDP and given unchanged to the | parameters required to be conveyed by SDP and given unchanged to the | |||
media tool that will use this format. At most one instance of this | media tool that will use this format. At most one instance of this | |||
attribute is allowed for each format. | attribute is allowed for each format. | |||
The fmtp attribute may be used to specify parameters for any protocol | The "a=fmtp:" attribute may be used to specify parameters for any | |||
and format that defines use of such parameters. | protocol and format that defines use of such parameters. | |||
7. Security Considerations | 7. Security Considerations | |||
SDP is frequently used with the Session Initiation Protocol [RFC3261] | SDP is frequently used with the Session Initiation Protocol [RFC3261] | |||
using the offer/answer model [RFC3264] to agree on parameters for | using the offer/answer model [RFC3264] to agree on parameters for | |||
unicast sessions. When used in this manner, the security | unicast sessions. When used in this manner, the security | |||
considerations of those protocols apply. | considerations of those protocols apply. | |||
SDP is a session description format that describes multimedia | SDP is a session description format that describes multimedia | |||
sessions. Entities receiving and acting upon an SDP message SHOULD | sessions. Entities receiving and acting upon an SDP message SHOULD | |||
be aware that a session description cannot be trusted unless it has | be aware that a session description cannot be trusted unless it has | |||
been obtained by an authenticated and integrity-protected transport | been obtained by an authenticated and integrity-protected transport | |||
protocol from a known and trusted source. Many different transport | protocol from a known and trusted source. Many different transport | |||
protocols may be used to distribute session descriptions, and the | protocols may be used to distribute session descriptions, and the | |||
nature of the authentication and integrity-protection will differ | nature of the authentication and integrity protection will differ | |||
from transport to transport. For some transports, security features | from transport to transport. For some transports, security features | |||
are often not deployed. In case a session description has not been | are often not deployed. In case a session description has not been | |||
obtained in a trusted manner, the endpoint SHOULD exercise care | obtained in a trusted manner, the endpoint SHOULD exercise care | |||
because, among other attacks, the media sessions received may not be | because, among other attacks, the media sessions received may not be | |||
the intended ones, the destination where media is sent to may not be | the intended ones, the destination to where the media is sent may not | |||
the expected one, any of the parameters of the session may be | be the expected one, any of the parameters of the session may be | |||
incorrect, or the media security may be compromised. It is up to the | incorrect, or the media security may be compromised. It is up to the | |||
endpoint to make a sensible decision taking into account the security | endpoint to make a sensible decision, taking into account the | |||
risks of the application and the user preferences - the endpoint may | security risks of the application and the user preferences - the | |||
decide to ask the user whether or not to accept the session. | endpoint may decide to ask the user whether or not to accept the | |||
session. | ||||
On receiving a session description over an unauthenticated transport | On receiving a session description over an unauthenticated transport | |||
mechanism or from an untrusted party, software parsing the session | mechanism or from an untrusted party, software parsing the session | |||
description should take a few precautions. Similar concerns apply if | description should take a few precautions. Similar concerns apply if | |||
integrity protection is not in place. Session descriptions contain | integrity protection is not in place. Session descriptions contain | |||
information required to start software on the receiver's system. | information required to start software on the receiver's system. | |||
Software that parses a session description MUST NOT be able to start | Software that parses a session description MUST NOT be able to start | |||
other software except that which is specifically configured as | other software except that which is specifically configured as | |||
appropriate software to participate in multimedia sessions. It is | appropriate software to participate in multimedia sessions. It is | |||
normally considered inappropriate for software parsing a session | normally considered inappropriate for software parsing a session | |||
skipping to change at page 40, line 32 ¶ | skipping to change at line 1868 ¶ | |||
allow media streams to pass, or to mark, prioritize, or block traffic | allow media streams to pass, or to mark, prioritize, or block traffic | |||
selectively. In some cases, such intermediary systems may modify the | selectively. In some cases, such intermediary systems may modify the | |||
session description, for example, to have the contents of the session | session description, for example, to have the contents of the session | |||
description match NAT bindings dynamically created. These behaviors | description match NAT bindings dynamically created. These behaviors | |||
are NOT RECOMMENDED unless the session description is conveyed in | are NOT RECOMMENDED unless the session description is conveyed in | |||
such a manner that allows the intermediary system to conduct proper | such a manner that allows the intermediary system to conduct proper | |||
checks to establish the authenticity of the session description, and | checks to establish the authenticity of the session description, and | |||
the authority of its source to establish such communication sessions. | the authority of its source to establish such communication sessions. | |||
SDP by itself does not include sufficient information to enable these | SDP by itself does not include sufficient information to enable these | |||
checks: they depend on the encapsulating protocol (e.g., SIP or | checks: they depend on the encapsulating protocol (e.g., SIP or | |||
RTSP). Use of some procedures and SDP extensions (e.g., ICE | RTSP). The use of some procedures and SDP extensions (e.g., | |||
[RFC8445] and ICE-SIP-SDP [I-D.ietf-mmusic-ice-sip-sdp]) may avoid | Interactive Connectivity Establishment (ICE) [RFC8445] and ICE-SIP- | |||
the need for intermediaries to modify SDP. | SDP [RFC8839]) may avoid the need for intermediaries to modify SDP. | |||
SDP MUST NOT be used to convey keying material (e.g., using | SDP MUST NOT be used to convey keying material (e.g., using the | |||
"a=crypto" [RFC4568]) unless it can be guaranteed that the channel | "a=crypto:" attribute [RFC4568]) unless it can be guaranteed that the | |||
over which the SDP is delivered is both private and authenticated. | channel over which the SDP is delivered is both private and | |||
authenticated. | ||||
8. IANA Considerations | 8. IANA Considerations | |||
8.1. The "application/sdp" Media Type | 8.1. The "application/sdp" Media Type | |||
One media type registration from [RFC4566] is to be updated, as | One media type registration from [RFC4566] is to be updated, as | |||
defined below. | defined below. | |||
To: ietf-types@iana.org | Type name: application | |||
Subject: Registration of media type "application/sdp" | ||||
Type name: application | Subtype name: sdp | |||
Subtype name: sdp | ||||
Required parameters: None. | Required parameters: None. | |||
Optional parameters: None. | Optional parameters: None. | |||
Encoding considerations: 8-bit text. | Encoding considerations: 8-bit text. SDP files are primarily UTF-8 | |||
SDP files are primarily UTF-8 format text. The "a=charset:" | format text. The "a=charset:" attribute may be used to signal the | |||
attribute may be used to signal the presence of other character | presence of other character sets in certain parts of an SDP file | |||
sets in certain parts of an SDP file (see Section 6 of RFC | (see Section 6 of RFC 8866). Arbitrary binary content cannot be | |||
XXXX). Arbitrary binary content cannot be directly | directly represented in SDP. | |||
represented in SDP. | ||||
Security considerations: | Security considerations: See Section 7 of RFC 8866. | |||
See Section 7 of RFC XXXX. | ||||
Interoperability considerations: | Interoperability considerations: See RFC 8866. | |||
See RFC XXXX. | ||||
Published specification: | Published specification: See RFC 8866. | |||
See RFC XXXX. | ||||
Applications which use this media type: | Applications which use this media type: | |||
Voice over IP, video teleconferencing, streaming media, instant | Voice over IP, video teleconferencing, streaming media, instant | |||
messaging, among others. See also Section 3 of RFC XXXX. | messaging, among others. See also Section 3 of RFC 8866. | |||
Fragment identifier considerations: None | Fragment identifier considerations: None | |||
Additional information: | Additional information: | |||
Deprecated alias names for this type: N/A | Deprecated alias names for this type: N/A | |||
Magic number(s): None. | Magic number(s): None. | |||
File extension(s): The extension ".sdp" is commonly used. | File extension(s): The extension ".sdp" is commonly used. | |||
Macintosh File Type Code(s): "sdp " | Macintosh File Type Code(s): "sdp" | |||
Person & email address to contact for further information: | Person & email address to contact for further information: IETF | |||
IETF MMUSIC working group <mmusic@ietf.org> | MMUSIC working group <mmusic@ietf.org> | |||
Intended usage: COMMON | Intended usage: COMMON | |||
Restrictions on usage: None | Restrictions on usage: None | |||
Author/Change controller: | Author/Change controller: | |||
Authors of RFC XXXX | ||||
Authors of RFC 8866 | ||||
IETF MMUSIC working group delegated from the IESG | IETF MMUSIC working group delegated from the IESG | |||
8.2. Registration of SDP Parameters with IANA | 8.2. Registration of SDP Parameters with IANA | |||
This document specifies IANA parameter registries for six named SDP | This document specifies IANA parameter registries for six named SDP | |||
sub-fields. Using the terminology in the SDP specification Augmented | subfields. Using the terminology in the SDP specification Augmented | |||
Backus-Naur Form (ABNF), they are "media", "proto", "att-field", | Backus-Naur Form (ABNF), they are <media>, <proto>, <attribute-name>, | |||
"bwtype", "nettype", and "addrtype". | <bwtype>, <nettype>, and <addrtype>. | |||
This document also replaces and updates the definitions of all those | This document also replaces and updates the definitions of all those | |||
parameters previously defined by [RFC4566]. | parameters previously defined by [RFC4566]. | |||
IANA: Please change all references to RFC4566 in these registries to | IANA: Please change all references to RFC4566 in these registries to | |||
instead refer to this document. | instead refer to this document. | |||
The contact name and email address for all parameters registered in | The contact name and email address for all parameters registered in | |||
this document is: | this document is: | |||
The IETF MMUSIC working group <mmusic@ietf.org> or its successor | The IETF MMUSIC working group <mmusic@ietf.org> or its successor | |||
as designated by the IESG. | as designated by the IESG. | |||
All of these registries have a common format: | All of these registries have a common format: | |||
---------------------------------------------------- | +======+==========+================+===========+ | |||
| Type | SDP Name | [other fields] | Reference | | | Type | SDP Name | [other fields] | Reference | | |||
---------------------------------------------------- | +======+==========+================+===========+ | |||
Table 3: Common Format for SDP Registries | ||||
8.2.1. Registration Procedure | 8.2.1. Registration Procedure | |||
A specification document that defines values for SDP "media", | A specification document that defines values for SDP <media>, | |||
"proto", "att-field", "bwtype", "nettype", and "addrtype" parameters | <proto>, <attribute-name>, <bwtype>, <nettype>, and <addrtype> | |||
MUST include the following information: | parameters MUST include the following information: | |||
o contact name; | * Contact name | |||
o contact email address; | * Contact email address | |||
o name being defined (as it will appear in SDP); | * Name being defined (as it will appear in SDP) | |||
o type of name ("media", "proto", "bwtype", "nettype", or | * Type of name (<media>, <proto>, <bwtype>, <nettype>, or | |||
"addrtype"); | <addrtype>) | |||
o a description of the purpose of the defined name; | * A description of the purpose of the defined name | |||
o a stable reference to the document containing this information and | * A stable reference to the document containing this information and | |||
the definition of the value. (This will typically be an RFC | the definition of the value. (This will typically be an RFC | |||
number.) | number.) | |||
The subsections below specify what other information (if any) must be | The subsections below specify what other information (if any) must be | |||
specified for particular parameters, and what other fields are to be | specified for particular parameters, and what other fields are to be | |||
included in the registry. | included in the registry. | |||
8.2.2. Media Types ("media") | 8.2.2. Media Types (<media>) | |||
The set of media types is intended to be small and SHOULD NOT be | The set of media types is intended to be small and SHOULD NOT be | |||
extended except under rare circumstances. The same rules should | extended except under rare circumstances. The same rules should | |||
apply for media names as for top-level media types, and where | apply for media names as well as for top-level media types, and where | |||
possible the same name should be registered for SDP as for MIME. For | possible the same name should be registered for SDP as for MIME. For | |||
media other than existing top-level media types, a Standards Track | media other than existing top-level media types, a Standards Track | |||
RFC MUST be produced for a new top-level media type to be registered, | RFC MUST be produced for a new top-level media type to be registered, | |||
and the registration MUST provide good justification why no existing | and the registration MUST provide good justification why no existing | |||
media name is appropriate (the "Standards Action" policy of | media name is appropriate (the "Standards Action" policy of | |||
[RFC8126]). | [RFC8126]). | |||
This memo registers the media types "audio", "video", "text", | This memo registers the media types "audio", "video", "text", | |||
"application", and "message". | "application", and "message". | |||
Note: The media types "control" and "data" were listed as valid in an | Note: The media types "control" and "data" were listed as valid in an | |||
early version of this specification (RFC 2327); however, their | early version of this specification [RFC2327]; however, their | |||
semantics were never fully specified and they are not widely used. | semantics were never fully specified, and they are not widely used. | |||
These media types have been removed in this specification, although | These media types have been removed in this specification, although | |||
they still remain valid media type capabilities for a SIP user agent | they still remain valid media type capabilities for a SIP user agent | |||
as defined in [RFC3840]. If these media types are considered useful | as defined in [RFC3840]. If these media types are considered useful | |||
in the future, a Standards Track RFC MUST be produced to document | in the future, a Standards Track RFC MUST be produced to document | |||
their use. Until that is done, applications SHOULD NOT use these | their use. Until that is done, applications SHOULD NOT use these | |||
types and SHOULD NOT declare support for them in SIP capabilities | types and SHOULD NOT declare support for them in SIP capabilities | |||
declarations (even though they exist in the registry created by | declarations (even though they exist in the registry created by | |||
[RFC3840]). Also note that [RFC6466] defined the "image" media type. | [RFC3840]). Also note that [RFC6466] defined the "image" media type. | |||
8.2.3. Transport Protocols ("proto") | 8.2.3. Transport Protocols (<proto>) | |||
The "proto" sub-field describes the transport protocol used. The | The <proto> subfield describes the transport protocol used. The | |||
registration procedure for this registry is "RFC Required". | registration procedure for this registry is "RFC Required". | |||
This document registers two values: | This document registers two values: | |||
o "RTP/AVP" is a reference to [RFC3550] used under the RTP Profile | * "RTP/AVP" is a reference to [RFC3550] used under the RTP Profile | |||
for Audio and Video Conferences with Minimal Control [RFC3551] | for Audio and Video Conferences with Minimal Control [RFC3551] | |||
running over UDP/IP, | running over UDP/IP. | |||
o "UDP" indicates direct use of the UDP protocol. | * "udp" indicates direct use of UDP. | |||
New transport protocols MAY be defined, and MUST be registered with | New transport protocols MAY be defined, and MUST be registered with | |||
IANA. Registrations MUST reference an RFC describing the protocol. | IANA. Registrations MUST reference an RFC describing the protocol. | |||
Such an RFC MAY be Experimental or Informational, although it is | Such an RFC MAY be Experimental or Informational, although it is | |||
preferable that it be Standards Track. The RFC defining a new | preferable that it be Standards Track. The RFC defining a new | |||
protocol MUST define the rules by which the "fmt" (see below) | protocol MUST define the rules by which the <fmt> (see below) | |||
namespace is managed. | namespace is managed. | |||
"proto" names starting with "RTP/" MUST only be used for defining | <proto> names starting with "RTP/" MUST only be used for defining | |||
transport protocols that are profiles of the RTP protocol. For | transport protocols that are profiles of RTP. For example, a profile | |||
example, a profile whose short name is "XYZ" would be denoted by a | whose short name is "XYZ" would be denoted by a <proto> subfield of | |||
"proto" sub-field of "RTP/XYZ". | "RTP/XYZ". | |||
Each transport protocol, defined by the "proto" sub-field, has an | Each transport protocol, defined by the <proto> subfield, has an | |||
associated "fmt" namespace that describes the media formats that may | associated <fmt> namespace that describes the media formats that may | |||
be conveyed by that protocol. Formats cover all the possible | be conveyed by that protocol. Formats cover all the possible | |||
encodings that could be transported in a multimedia session. | encodings that could be transported in a multimedia session. | |||
RTP payload formats under the "RTP/AVP" and other "RTP/*" profiles | RTP payload formats under the "RTP/AVP" and other "RTP/*" profiles | |||
MUST use the payload type number as their "fmt" value. If the | MUST use the payload type number as their <fmt> value. If the | |||
payload type number is dynamically assigned by this session | payload type number is dynamically assigned by this session | |||
description, an additional "rtpmap" attribute MUST be included to | description, an additional "a=rtpmap:" attribute MUST be included to | |||
specify the format name and parameters as defined by the media type | specify the format name and parameters as defined by the media type | |||
registration for the payload format. It is RECOMMENDED that other | registration for the payload format. It is RECOMMENDED that other | |||
RTP profiles that are registered (in combination with RTP) as SDP | RTP profiles that are registered (in combination with RTP) as SDP | |||
transport protocols specify the same rules for the "fmt" namespace. | transport protocols specify the same rules for the <fmt> namespace. | |||
For the "UDP" protocol, allowed "fmt" values are media subtypes from | For the "udp" protocol, the allowed <fmt> values are media subtypes | |||
the IANA Media Types registry. The media type and subtype | from the IANA Media Types registry. The media type and subtype | |||
combination <media>/<fmt> specifies the format of the body of UDP | combination <media>/<fmt> specifies the format of the body of UDP | |||
packets. Use of an existing media subtype for the format is | packets. Use of an existing media subtype for the format is | |||
encouraged. If no suitable media subtype exists, it is RECOMMENDED | encouraged. If no suitable media subtype exists, it is RECOMMENDED | |||
that a new one be registered through the IETF process [RFC6838] by | that a new one be registered through the IETF process [RFC6838] by | |||
production of, or reference to, a standards-track RFC that defines | production of, or reference to, a Standards Track RFC that defines | |||
the format. | the format. | |||
For other protocols, formats MAY be registered according to the rules | For other protocols, formats MAY be registered according to the rules | |||
of the associated "proto" specification. | of the associated <proto> specification. | |||
Registrations of new formats MUST specify which transport protocols | Registrations of new formats MUST specify which transport protocols | |||
they apply to. | they apply to. | |||
8.2.4. Attribute Names ("att-field") | 8.2.4. Attribute Names (<attribute-name>) | |||
Attribute-field names ("att-field") MUST be registered with IANA and | Attribute-field names (<attribute-name>) MUST be registered with IANA | |||
documented, to avoid any issues due to conflicting attribute | and documented to avoid any issues due to conflicting attribute | |||
definitions under the same name. (While unknown attributes in SDP | definitions under the same name. (While unknown attributes in SDP | |||
are simply ignored, conflicting ones that fragment the protocol are a | are simply ignored, conflicting ones that fragment the protocol are a | |||
serious problem.) | serious problem.) | |||
The format of the attribute registry is: | The format of the <attribute-name> registry is: | |||
---------------------------------------------------------------------- | +======+==========+=============+==============+===========+ | |||
| | | | Mux | | | | Type | SDP Name | Usage Level | Mux Category | Reference | | |||
| Type | SDP Name | Usage Level | Category | Reference | | +======+==========+=============+==============+===========+ | |||
---------------------------------------------------------------------- | ||||
For example, the attribute "setup" which is defined for both session | Table 4: Format of the <attribute-name> Registry | |||
For example, the attribute "lang", which is defined for both session | ||||
and media level, will be listed in the new registry as follows: | and media level, will be listed in the new registry as follows: | |||
---------------------------------------------------------------------- | +===========+======+==========+===========+========================+ | |||
| | | | Mux | | | | Type | SDP | Usage | Mux | Reference | | |||
| Type | SDP Name | Usage Level | Category | Reference | | | | Name | Level | Category | | | |||
|----------|------------|----------------|----------|----------------| | +===========+======+==========+===========+========================+ | |||
|attribute |setup | session,media, |IDENTICAL | [RFC4145] | | | attribute | lang | session, | TRANSPORT | [RFC8866] [RFC8859] | | |||
| | | dcsa,dcsa(msrp)| | [RFC6135] | | | | | media | | | | |||
| | | | | [I-D.mmusic- | | +-----------+------+----------+-----------+------------------------+ | |||
| | | | | msrp-usage- | | ||||
| | | | | data-channel] | | ||||
---------------------------------------------------------------------- | ||||
This one registry combines all of the previous usage-level-specific | Table 5: <attribute-name> Registry Example | |||
"att-field" registries, including updates made by | ||||
[I-D.ietf-mmusic-sdp-mux-attributes]. IANA is requested to do the | This one <attribute-name> registry combines all of the previous | |||
necessary reformatting. | usage-level-specific "att-field" registries, including updates made | |||
by [RFC8859]. IANA is requested to do the necessary reformatting. | ||||
Section 6 of this document replaces the initial set of attribute | Section 6 of this document replaces the initial set of attribute | |||
definitions made by [RFC4566]. IANA is requested to update the | definitions made by [RFC4566]. IANA is requested to update the | |||
registry accordingly. | registry accordingly. | |||
Documents can define new attributes and can also extend the | Documents can define new attributes and can also extend the | |||
definitions of previously defined attributes: | definitions of previously defined attributes. | |||
8.2.4.1. New Attributes | 8.2.4.1. New Attributes | |||
New attribute registrations are accepted according to the | New attribute registrations are accepted according to the | |||
"Specification Required" policy of [RFC8126], provided that the | "Specification Required" policy of [RFC8126], provided that the | |||
specification includes the following information: | specification includes the following information: | |||
o Contact Name. | * Contact name | |||
o Contact Email Address. | * Contact email address | |||
o Attribute Name: The name of the attribute that will appear in | * Attribute name: the name of the attribute that will appear in SDP. | |||
SDP). This MUST conform to the definition of <att-field>. | This MUST conform to the definition of <attribute-name>. | |||
o Attribute Syntax: For a value attribute (see clause 5.13), an ABNF | * Attribute syntax: for a value attribute (see Section 5.13), an | |||
definition of the attribute value <att-value> syntax (see | ABNF definition of the attribute value <attribute-value> syntax | |||
Section 9) MUST be provided. The syntax MUST follow the rule form | (see Section 9) MUST be provided. The syntax MUST follow the rule | |||
as per Section 2.2 of [RFC5234] and [RFC7405]. This SHALL define | form per Section 2.2 of [RFC5234] and [RFC7405]. This SHALL | |||
the allowable values that the attribute might take. It MAY also | define the allowable values that the attribute might take. It MAY | |||
define an extension method for the addition of future values. For | also define an extension method for the addition of future values. | |||
a property attribute, the ABNF definition is omitted as the | For a property attribute, the ABNF definition is omitted as the | |||
property attribute takes no values. | property attribute takes no values. | |||
o Attribute Semantics: For a value attribute, a semantic description | * Attribute semantics: for a value attribute, a semantic description | |||
of the values that the attribute might take MUST be provided. The | of the values that the attribute might take MUST be provided. The | |||
usage of a property attribute is described under purpose below. | usage of a property attribute is described under Purpose below. | |||
o Attribute Value: The name of an ABNF syntax rule defining the | * Attribute value: the name of an ABNF syntax rule defining the | |||
syntax of the value. Absence of a rule name indicates that the | syntax of the value. Absence of a rule name indicates that the | |||
attribute takes no values. Enclosing the rule name in "[" and "]" | attribute takes no values. Enclosing the rule name in "[" and "]" | |||
indicates that a value is optional. | indicates that a value is optional. | |||
o Usage Level: Usage level(s) of the attribute. This MUST be one or | * Usage level: the usage level(s) of the attribute. This MUST be | |||
more of the following: session, media, source, dcsa and | one or more of the following: session, media, source, dcsa, and | |||
dcsa(subprotocol). For a definition of source level attributes, | dcsa(subprotocol). For a definition of source-level attributes, | |||
see [RFC5576]. For a definition of dcsa attributes see: | see [RFC5576]. For a definition of dcsa attributes see [RFC8864]. | |||
[I-D.ietf-mmusic-data-channel-sdpneg]. | ||||
o Charset Dependent: This MUST be "Yes" or "No" depending on whether | * Charset dependent: this MUST be "Yes" or "No" depending on whether | |||
the attribute value is subject to the charset attribute. | the attribute value is subject to the "a=charset:" attribute. | |||
o Purpose: An explanation of the purpose and usage of the attribute. | * Purpose: an explanation of the purpose and usage of the attribute. | |||
o O/A Procedures: Offer/Answer procedures as explained in [RFC3264]. | * O/A procedures: offer/answer procedures as explained in [RFC3264]. | |||
o Mux Category: This MUST indicate one of the following categories: | * Mux Category: this MUST indicate one of the following categories: | |||
NORMAL, NOT RECOMMENDED, IDENTICAL, SUM, TRANSPORT, INHERIT, | NORMAL, NOT RECOMMENDED, IDENTICAL, SUM, TRANSPORT, INHERIT, | |||
IDENTICAL-PER-PT, SPECIAL or TBD as defined by [I-D.ietf-mmusic- | IDENTICAL-PER-PT, SPECIAL, or TBD as defined by [RFC8859]. | |||
sdp-mux-attributes]. | ||||
o Reference: A reference to the specification defining the | * Reference: a reference to the specification defining the | |||
attribute. | attribute. | |||
The above is the minimum that IANA will accept. Attributes that are | The above is the minimum that IANA will accept. Attributes that are | |||
expected to see widespread use and interoperability SHOULD be | expected to see widespread use and interoperability SHOULD be | |||
documented with a standards-track RFC that specifies the attribute | documented with a Standards Track RFC that specifies the attribute | |||
more precisely. | more precisely. | |||
Submitters of registrations should ensure that the specification is | Submitters of registrations should ensure that the specification is | |||
in the spirit of SDP attributes, most notably that the attribute is | in the spirit of SDP attributes, most notably that the attribute is | |||
platform independent in the sense that it makes no implicit | platform independent in the sense that it makes no implicit | |||
assumptions about operating systems and does not name specific pieces | assumptions about operating systems and does not name specific pieces | |||
of software in a manner that might inhibit interoperability. | of software in a manner that might inhibit interoperability. | |||
Submitters of registrations should also carefully choose the | Submitters of registrations should also carefully choose the | |||
attribute usage level. They should not choose only "session" when | attribute usage level. They should not choose only "session" when | |||
the attribute can have different values when media is disaggregated, | the attribute can have different values when media is disaggregated, | |||
i.e., when each m= section has its own IP address on a different | i.e., when each "m=" section has its own IP address on a different | |||
endpoint. In that case the attribute type chosen should be "session, | endpoint. In that case, the attribute type chosen should be | |||
media" or "media" (depending on desired semantics). The default rule | "session, media" or "media" (depending on desired semantics). The | |||
is that for all new SDP attributes that can occur both in session and | default rule is that for all new SDP attributes that can occur both | |||
media level, the media level overrides the session level. When this | in session and media level, the media level overrides the session | |||
is not the case for a new SDP attribute, it MUST be explicitly | level. When this is not the case for a new SDP attribute, it MUST be | |||
stated. | explicitly stated. | |||
IANA has registered the initial set of attribute names ("att-field" | IANA has registered the initial set of attribute names (<attribute- | |||
values) with definitions as in Section 6 of this memo (these | name> values) with definitions as in Section 6 of this memo (these | |||
definitions replace those in [RFC4566]). | definitions replace those in [RFC4566]). | |||
8.2.4.2. Updates to Existing Attributes | 8.2.4.2. Updates to Existing Attributes | |||
Updated attribute registrations are accepted according to the | Updated attribute registrations are accepted according to the | |||
"Specification Required" policy of [RFC8126]. | "Specification Required" policy of [RFC8126]. | |||
The Designated Expert reviewing the update is requested to evaluate | The Designated Expert reviewing the update is requested to evaluate | |||
whether the update is compatible with the prior intent and use of the | whether the update is compatible with the prior intent and use of the | |||
attribute, and whether the new document is of sufficient maturity and | attribute, and whether the new document is of sufficient maturity and | |||
authority in relation to the prior document. | authority in relation to the prior document. | |||
The specification updating the attribute (for example, by adding a | The specification updating the attribute (for example, by adding a | |||
new value) MUST update registration information items from | new value) MUST update registration information items from | |||
Section 8.2.4.1 according to the following constraints: | Section 8.2.4.1 according to the following constraints: | |||
o Contact Name: A name for an entity responsible for the update MUST | * Contact name: a name for an entity responsible for the update MUST | |||
be provided. | be provided. | |||
o Contact Email Address: An email address for an entity responsible | * Contact email address: an email address for an entity responsible | |||
for the update MUST be provided. | for the update MUST be provided. | |||
o Attribute Name: MUST be provided and MUST NOT be changed. | * Attribute name: MUST be provided and MUST NOT be changed. | |||
Otherwise it is a new attribute. | Otherwise it is a new attribute. | |||
o Attribute Syntax: The existing rule syntax with the syntax | * Attribute syntax: the existing rule syntax with the syntax | |||
extensions MUST be provided if there is a change to the syntax. A | extensions MUST be provided if there is a change to the syntax. A | |||
revision to an existing attribute usage MAY extend the syntax of | revision to an existing attribute usage MAY extend the syntax of | |||
an attribute, but MUST be backward compatible. | an attribute, but MUST be backward compatible. | |||
o Attribute Semantics: A semantic description of new additional | * Attribute semantics: a semantic description of new additional | |||
attribute values or a semantic extension of existing values. | attribute values or a semantic extension of existing values. | |||
Existing attribute values semantics MUST only be extended in a | Existing attribute values semantics MUST only be extended in a | |||
backward compatible manner. | backward compatible manner. | |||
o Usage Level: Updates MAY only add additional levels. | * Usage level: updates MAY only add additional levels. | |||
o Charset Dependent: MUST NOT be changed. | * Charset dependent: MUST NOT be changed. | |||
o Purpose: MAY be extended according to the updated usage. | * Purpose: MAY be extended according to the updated usage. | |||
o O/A Procedures: MAY be updated in a backward compatible manner | * O/A procedures: MAY be updated in a backward compatible manner | |||
and/or it applies to a new usage level only. | and/or it applies to a new usage level only. | |||
o Mux Category: No change unless from "TBD" to another value (see | * Mux Category: no change unless from "TBD" to another value (see | |||
[I-D.ietf-mmusic-sdp-mux-attributes]. It MAY also change if | [RFC8859]. It MAY also change if media level is being added to | |||
'media' level is being added to the definition of an attribute | the definition of an attribute that previously did not include it. | |||
that previously did not include it. | ||||
o Reference: A new (additional or replacement) reference MUST be | * Reference: a new (additional or replacement) reference MUST be | |||
provided. | provided. | |||
Items SHOULD be omitted if there is no impact to them as a result of | Items SHOULD be omitted if there is no impact to them as a result of | |||
the attribute update. | the attribute update. | |||
8.2.5. Bandwidth Specifiers ("bwtype") | 8.2.5. Bandwidth Specifiers (<bwtype>) | |||
A proliferation of bandwidth specifiers is strongly discouraged. | A proliferation of bandwidth specifiers is strongly discouraged. | |||
New bandwidth specifiers (<bwtype> sub-field values) MUST be | New bandwidth specifiers (<bwtype> subfield values) MUST be | |||
registered with IANA. The submission MUST reference a standards- | registered with IANA. The submission MUST reference a Standards | |||
track RFC specifying the semantics of the bandwidth specifier | Track RFC specifying the semantics of the bandwidth specifier | |||
precisely, and indicating when it should be used, and why the | precisely, and indicating when it should be used, and why the | |||
existing registered bandwidth specifiers do not suffice. | existing registered bandwidth specifiers do not suffice. | |||
The RFC MUST specify the Mux Category for this value as defined by | The RFC MUST specify the Mux Category for this value as defined by | |||
[I-D.ietf-mmusic-sdp-mux-attributes]. | [RFC8859]. | |||
The format of the "bwtype" registry is: | The format of the <bwtype> registry is: | |||
-------------------------------------------------- | +======+==========+==============+===========+ | |||
| Type | SDP Name | Mux Category | Reference | | | Type | SDP Name | Mux Category | Reference | | |||
-------------------------------------------------- | +======+==========+==============+===========+ | |||
IANA is requested to update the "bwtype" registry entries for the | Table 6: Format of the <bwtype> Registry | |||
IANA is requested to update the <bwtype> registry entries for the | ||||
bandwidth specifiers "CT" and "AS" with the definitions in | bandwidth specifiers "CT" and "AS" with the definitions in | |||
Section 5.8 of this memo (these definitions replace those in | Section 5.8 of this memo (these definitions replace those in | |||
[RFC4566]). | [RFC4566]). | |||
8.2.6. Network Types ("nettype") | 8.2.6. Network Types (<nettype>) | |||
Network type "IN", representing the Internet, is defined in | Network type "IN", representing the Internet, is defined in | |||
Section 5.2 and Section 5.7 of this memo. (This definition replaces | Section 5.2 and Section 5.7 of this memo (this definition replaces | |||
that in [RFC4566].) | that in [RFC4566]). | |||
To enable SDP to reference a new non-Internet environment a new | ||||
network type (<nettype> sub-field value) MUST be registered with | To enable SDP to reference a new non-Internet environment, a new | |||
IANA. The registration is subject to the "RFC Required" policy of | network type (<nettype> subfield value) MUST be registered with IANA. | |||
The registration is subject to the "RFC Required" policy of | ||||
[RFC8126]. Although non-Internet environments are not normally the | [RFC8126]. Although non-Internet environments are not normally the | |||
preserve of IANA, there may be circumstances when an Internet | preserve of IANA, there may be circumstances when an Internet | |||
application needs to interoperate with a non-Internet application, | application needs to interoperate with a non-Internet application, | |||
such as when gatewaying an Internet telephone call into the Public | such as when gatewaying an Internet telephone call into the Public | |||
Switched Telephone Network (PSTN). The number of network types | Switched Telephone Network (PSTN). The number of network types | |||
should be small and should be rarely extended. A new network type | should be small and should be rarely extended. A new network type | |||
registration MUST reference an RFC that gives details of the network | registration MUST reference an RFC that gives details of the network | |||
type and the address type(s) that may be used with it. | type and the address type(s) that may be used with it. | |||
The format of the "nettype" registry is: | The format of the <nettype> registry is: | |||
-------------------------------------------------------------------- | +======+==========+========================+===========+ | |||
|Type | SDP Name | Usable addrtype Values | Reference | | | Type | SDP Name | Usable addrtype Values | Reference | | |||
-------------------------------------------------------------------- | +======+==========+========================+===========+ | |||
IANA is requested to update the "nettype" registry to this new | Table 7: Format of the <nettype> Registry | |||
format. The following is the updated content of th registry: | ||||
-------------------------------------------------------------------- | IANA is requested to update the <nettype> registry to this new | |||
|Type | SDP Name | Usable addrtype Values | Reference | | format. The following is the updated content of the registry: | |||
-------------------------------------------------------------------- | ||||
|nettype | IN | IP4, IP6 | [RFCXXXX] | | +=========+==========+========================+===========+ | |||
|nettype | TN | RFC2543 | [RFC2848] | | | Type | SDP Name | Usable addrtype Values | Reference | | |||
|nettype | ATM | NSAP, GWID, E164 | [RFC3108] | | +=========+==========+========================+===========+ | |||
|nettype | PSTN | E164 | [RFC7195] | | | nettype | IN | IP4, IP6 | [RFC8866] | | |||
-------------------------------------------------------------------- | +---------+----------+------------------------+-----------+ | |||
| nettype | TN | RFC2543 | [RFC2848] | | ||||
+---------+----------+------------------------+-----------+ | ||||
| nettype | ATM | NSAP, GWID, E164 | [RFC3108] | | ||||
+---------+----------+------------------------+-----------+ | ||||
| nettype | PSTN | E164 | [RFC7195] | | ||||
+---------+----------+------------------------+-----------+ | ||||
Table 8: Content of the <nettype> registry | ||||
Note that both [RFC7195] and [RFC3108] registered "E164" as an | Note that both [RFC7195] and [RFC3108] registered "E164" as an | |||
address type, although [RFC7195] mentions that the "E164" address | address type, although [RFC7195] mentions that the "E164" address | |||
type has a different context for ATM and PSTN networks. | type has a different context for ATM and PSTN networks. | |||
8.2.7. Address Types ("addrtype") | 8.2.7. Address Types (<addrtype>) | |||
New address types ("addrtype") MUST be registered with IANA. The | New address types (<addrtype>) MUST be registered with IANA. The | |||
registration is subject to the "RFC Required" policy of [RFC8126]. A | registration is subject to the "RFC Required" policy of [RFC8126]. A | |||
new address type registration MUST reference an RFC giving details of | new address type registration MUST reference an RFC, giving details | |||
the syntax of the address type. Address types are not expected to be | of the syntax of the address type. Address types are not expected to | |||
registered frequently. | be registered frequently. | |||
Section 5.7 of this document gives new definitions of address types | Section 5.7 of this document gives new definitions of address types | |||
"IP4" and "IP6". | "IP4" and "IP6". | |||
8.3. Encryption Key Access Methods (OBSOLETE) | 8.3. Encryption Key Access Methods (OBSOLETE) | |||
The IANA previously maintained a table of SDP encryption key access | The IANA previously maintained a table of SDP encryption key access | |||
method ("enckey") names. This table is obsolete, since the "k=" line | method ("enckey") names. This table is obsolete, since the "k=" line | |||
is not extensible. New registrations MUST NOT be accepted. | is not extensible. New registrations MUST NOT be accepted. | |||
skipping to change at page 53, line 14 ¶ | skipping to change at line 2468 ¶ | |||
%s"base64:" base64 / | %s"base64:" base64 / | |||
%s"uri:" uri | %s"uri:" uri | |||
; NOTE: These names are case-sensitive. | ; NOTE: These names are case-sensitive. | |||
base64 = *base64-unit [base64-pad] | base64 = *base64-unit [base64-pad] | |||
base64-unit = 4base64-char | base64-unit = 4base64-char | |||
base64-pad = 2base64-char "==" / 3base64-char "=" | base64-pad = 2base64-char "==" / 3base64-char "=" | |||
base64-char = ALPHA / DIGIT / "+" / "/" | base64-char = ALPHA / DIGIT / "+" / "/" | |||
; sub-rules of 'a=' | ; sub-rules of 'a=' | |||
attribute = (att-field ":" att-value) / att-field | attribute = (attribute-name ":" attribute-value) / | |||
attribute-name | ||||
att-field = token | attribute-name = token | |||
att-value = byte-string | attribute-value = byte-string | |||
att-field = attribute-name ; for backward compatibility | ||||
; sub-rules of 'm=' | ; sub-rules of 'm=' | |||
media = token | media = token | |||
;typically "audio", "video", "text", "image" | ;typically "audio", "video", "text", "image" | |||
;or "application" | ;or "application" | |||
fmt = token | fmt = token | |||
;typically an RTP payload type for audio | ;typically an RTP payload type for audio | |||
;and video media | ;and video media | |||
proto = token *("/" token) | proto = token *("/" token) | |||
;typically "RTP/AVP" or "udp" | ;typically "RTP/AVP", "RTP/SAVP", "udp", | |||
;or "RTP/SAVPF" | ||||
port = 1*DIGIT | port = 1*DIGIT | |||
; generic sub-rules: addressing | ; generic sub-rules: addressing | |||
unicast-address = IP4-address / IP6-address / FQDN / extn-addr | unicast-address = IP4-address / IP6-address / FQDN / extn-addr | |||
multicast-address = IP4-multicast / IP6-multicast / FQDN | multicast-address = IP4-multicast / IP6-multicast / FQDN | |||
/ extn-addr | / extn-addr | |||
IP4-multicast = m1 3( "." decimal-uchar ) | IP4-multicast = m1 3( "." decimal-uchar ) | |||
skipping to change at page 55, line 28 ¶ | skipping to change at line 2584 ¶ | |||
POS-DIGIT = %x31-39 ; 1 - 9 | POS-DIGIT = %x31-39 ; 1 - 9 | |||
decimal-uchar = DIGIT | decimal-uchar = DIGIT | |||
/ POS-DIGIT DIGIT | / POS-DIGIT DIGIT | |||
/ ("1" 2(DIGIT)) | / ("1" 2(DIGIT)) | |||
/ ("2" ("0"/"1"/"2"/"3"/"4") DIGIT) | / ("2" ("0"/"1"/"2"/"3"/"4") DIGIT) | |||
/ ("2" "5" ("0"/"1"/"2"/"3"/"4"/"5")) | / ("2" "5" ("0"/"1"/"2"/"3"/"4"/"5")) | |||
; external references: | ; external references: | |||
ALPHA = <ALPHA definition from RFC5234> | ALPHA = <ALPHA definition from RFC 5234> | |||
DIGIT = <DIGIT definition from RFC5234> | DIGIT = <DIGIT definition from RFC 5234> | |||
CRLF = <CRLF definition from RFC5234> | CRLF = <CRLF definition from RFC 5234> | |||
HEXDIG = <HEXDIG definition from RFC5234> | HEXDIG = <HEXDIG definition from RFC 5234> | |||
SP = <SP definition from RFC5234> | SP = <SP definition from RFC 5234> | |||
VCHAR = <VCHAR definition from RFC5234> | VCHAR = <VCHAR definition from RFC 5234> | |||
URI-reference = <URI-reference definition from RFC3986> | URI-reference = <URI-reference definition from RFC 3986> | |||
addr-spec = <addr-spec definition from RFC5322> | addr-spec = <addr-spec definition from RFC 5322> | |||
10. Summary of Changes from RFC 4566 | 10. Summary of Changes from RFC 4566 | |||
o Generally clarified and refined terminology. | * Generally clarified and refined terminology. Aligned terms used | |||
in text with the ABNF. The terms <attribute>, <att-field>, and | ||||
"att-field" are now <attribute-name>. The terms <value> and <att- | ||||
value> are now <attribute-value>. The term "media" is now | ||||
<media>. | ||||
o Identified now-obsolete items: "a=cat", "a=keywds", "k=". | * Identified now-obsolete items: "a=cat:" (Section 6.1), "a=keywds:" | |||
(Section 6.2), and "k=" (Section 5.12). | ||||
o Updated normative and informative references, and added references | * Updated normative and informative references, and added references | |||
to additional relevant related RFCs. | to additional relevant related RFCs. | |||
o Reformatted the SDP Attributes section for readability. The | * Reformatted the SDP Attributes section (Section 6) for | |||
syntax of attribute values is now given in ABNF. | readability. The syntax of attribute values is now given in ABNF. | |||
o Made mandatory the sending of RTCP with inactive media streams. | * Made mandatory the sending of RTCP with inactive media streams | |||
(Section 6.7.4). | ||||
o Removed the section "Private Sessions". That section dates back | * Removed the section "Private Sessions". That section dated back | |||
to a time when the primary use of SDP was with SAP (Session | to a time when the primary use of SDP was with SAP (Session | |||
Announcement Protocol). That has fallen out of use. Now the vast | Announcement Protocol), which has fallen out of use. Now the vast | |||
majority of uses of SDP is for establishment of private sessions. | majority of uses of SDP is for establishment of private sessions. | |||
The considerations for that are covered in Section 7. | The considerations for that are covered in Section 7. | |||
o Expanded and clarified the specification of the "lang" and | * Expanded and clarified the specification of the "a=lang:" | |||
"sdplang" attributes. | (Section 6.12) and "a=sdplang:" (Section 6.11) attributes. | |||
o Removed some references to SAP because it is no longer in | * Removed some references to SAP because it is no longer in | |||
widespread use. | widespread use. | |||
o Changed the way <fmt> values for UDP transport are registered. | * Changed the way <fmt> values for UDP transport are registered | |||
(Section 8.2.3). | ||||
o Changed the mechanism and documentation required for registering | * Changed the mechanism and documentation required for registering | |||
new attributes. | new attributes (Section 8.2.4.1). | |||
o Tightened up IANA registration procedures for extensions. Removed | * Tightened up IANA registration procedures for extensions. Removed | |||
phone number and long-form name. | phone number and long-form name (Section 8.2). | |||
o Expanded the IANA nettype registry to identify valid addrtypes. | * Expanded the IANA <nettype> registry to identify valid <addrtype> | |||
subfields (Section 8.2.6). | ||||
o Reorganized the several IANA att-type registries into a single | * Reorganized the several IANA "att-field" registries into a single | |||
registry | <attribute-name> registry (Section 8.2.4). | |||
o Revised ABNF syntax for clarity. Backward compatibility is | * Revised ABNF syntax (Section 9) for clarity and for alignment with | |||
maintained with a few exceptions: | text. Backward compatibility is maintained with a few exceptions. | |||
Of particular note: | ||||
* Revised the syntax of time descriptions ("t=", "r=", "z=") to | - Revised the syntax of time descriptions ("t=", "r=", "z=") to | |||
remove ambiguities. Clarified that "z=" only modifies the | remove ambiguities. Clarified that "z=" only modifies the | |||
immediately preceding "r=" lines. Made "z=" without a | immediately preceding "r=" lines. Made "z=" without a | |||
preceding "r=" a syntax error. (This is incompatible with | preceding "r=" a syntax error (Section 5.11). (This is | |||
certain aberrant usage.) | incompatible with certain aberrant usage.) | |||
* Updated the "IP6-address" and "IP6-multicast" rules, consistent | - Updated the "IP6-address" and "IP6-multicast" rules, consistent | |||
with the syntax in RFC3986. (This mirrors a bug fix made to | with the syntax in [RFC3986], mirroring a bug fix made to | |||
RFC3261 by RFC5964.) Removed rules that were unused as a | [RFC3261] by [RFC5954]. Removed rules that were unused as a | |||
result of this change. | result of this change. | |||
o Revised normative statements that were redundant with ABNF syntax, | - The "att-field" rule has been renamed "attribute-name" because | |||
making the text non-normative. | elsewhere "*-field" always refers to a complete line. However, | |||
the rulename "att-field" remains defined as a synonym for | ||||
o Revised IPv4 unicast and multicast addresses in the example SDP | backward compatibility with references from other RFCs. | |||
descriptions per RFCs 5735 and 5771. | ||||
o Changed some examples to use IPv6 addresses, and added additional | - The "att-value" rule has been renamed "attribute-value". | |||
examples using IPv6. | ||||
o Incorporated case-insensitivity rules from RFC 4855. | * Revised normative statements that were redundant with ABNF syntax, | |||
making the text non-normative. | ||||
o Revised sections that incorrectly referenced NTP. | * Revised IPv4 unicast and multicast addresses in the example SDP | |||
descriptions per [RFC5735] and [RFC5771]. | ||||
o Clarified the explanation of the impact and use of a=charset. | * Changed some examples to use IPv6 addresses, and added additional | |||
examples using IPv6. | ||||
o Revised the description of a=type to remove implication that it | * Incorporated case-insensitivity rules from [RFC4855]. | |||
sometimes changes the default media direction to something other | ||||
than sendrecv. | ||||
11. Acknowledgements | * Revised sections that incorrectly referenced NTP (Section 5.2, | |||
Section 5.9, Section 5.10, and Section 5.11). | ||||
Many people in the IETF Multiparty Multimedia Session Control | * Clarified the explanation of the impact and use of the | |||
(MMUSIC) working group have made comments and suggestions | "a=charset:" attribute (Section 6.10). | |||
contributing to this document. | ||||
In particular, we would like to thank the following people who | * Revised the description of the "a=type:" attribute to remove | |||
contributed to the creation of this document or one of its | implication that it sometimes changes the default media direction | |||
predecessor documents: Adam Roach, Allison Mankin, Bernie Hoeneisen, | to something other than "a=sendrecv" (Section 6.9). | |||
Bill Fenner, Carsten Bormann, Eve Schooler, Flemming Andreasen, | ||||
Gonzalo Camarillo, Joerg Ott, John Elwell, Jon Peterson, Jonathan | ||||
Lennox, Jonathan Rosenberg, Keith Drage, Peter Parnes, Rob Lanphier, | ||||
Ross Finlayson, Sean Olson, Spencer Dawkins, Steve Casner, Steve | ||||
Hanna, Van Jacobson. | ||||
12. References | 11. References | |||
12.1. Normative References | 11.1. Normative References | |||
[E164] International Telecommunication Union, "E.164 : The | [E164] International Telecommunication Union, "E.164 : The | |||
international public telecommunication numbering plan", | international public telecommunication numbering plan", | |||
ITU Recommendation E.164, November 2010. | ITU Recommendation E.164, November 2010, | |||
<https://www.itu.int/rec/T-REC-E.164-201011-I/en>. | ||||
[I-D.ietf-mmusic-data-channel-sdpneg] | ||||
Drage, K., Makaraju, M., Ejzak, R., Marcon, J., and R. | ||||
Even, "SDP-based Data Channel Negotiation", draft-ietf- | ||||
mmusic-data-channel-sdpneg-28 (work in progress), May | ||||
2019. | ||||
[I-D.ietf-mmusic-sdp-mux-attributes] | ||||
Nandakumar, S., "A Framework for SDP Attributes when | ||||
Multiplexing", draft-ietf-mmusic-sdp-mux-attributes-17 | ||||
(work in progress), February 2018. | ||||
[ISO.8859-1.1998] | [ISO.8859-1.1998] | |||
International Organization for Standardization, | International Organization for Standardization, | |||
"Information technology - 8-bit single byte coded graphic | "Information technology - 8-bit single byte coded graphic | |||
- character sets - Part 1: Latin alphabet No. 1, JTC1/ | - character sets - Part 1: Latin alphabet No. 1, JTC1/ | |||
SC2", ISO/IEC Standard 8859-1, 1998. | SC2", ISO/IEC Standard 8859-1, 1998. | |||
[RFC1034] Mockapetris, P., "Domain names - concepts and facilities", | [RFC1034] Mockapetris, P., "Domain names - concepts and facilities", | |||
STD 13, RFC 1034, DOI 10.17487/RFC1034, November 1987, | STD 13, RFC 1034, DOI 10.17487/RFC1034, November 1987, | |||
<https://www.rfc-editor.org/info/rfc1034>. | <https://www.rfc-editor.org/info/rfc1034>. | |||
skipping to change at page 58, line 47 ¶ | skipping to change at line 2734 ¶ | |||
[RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO | [RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO | |||
10646", STD 63, RFC 3629, DOI 10.17487/RFC3629, November | 10646", STD 63, RFC 3629, DOI 10.17487/RFC3629, November | |||
2003, <https://www.rfc-editor.org/info/rfc3629>. | 2003, <https://www.rfc-editor.org/info/rfc3629>. | |||
[RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | |||
Resource Identifier (URI): Generic Syntax", STD 66, | Resource Identifier (URI): Generic Syntax", STD 66, | |||
RFC 3986, DOI 10.17487/RFC3986, January 2005, | RFC 3986, DOI 10.17487/RFC3986, January 2005, | |||
<https://www.rfc-editor.org/info/rfc3986>. | <https://www.rfc-editor.org/info/rfc3986>. | |||
[RFC4145] Yon, D. and G. Camarillo, "TCP-Based Media Transport in | ||||
the Session Description Protocol (SDP)", RFC 4145, | ||||
DOI 10.17487/RFC4145, September 2005, | ||||
<https://www.rfc-editor.org/info/rfc4145>. | ||||
[RFC4566] Handley, M., Jacobson, V., and C. Perkins, "SDP: Session | [RFC4566] Handley, M., Jacobson, V., and C. Perkins, "SDP: Session | |||
Description Protocol", RFC 4566, DOI 10.17487/RFC4566, | Description Protocol", RFC 4566, DOI 10.17487/RFC4566, | |||
July 2006, <https://www.rfc-editor.org/info/rfc4566>. | July 2006, <https://www.rfc-editor.org/info/rfc4566>. | |||
[RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax | [RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax | |||
Specifications: ABNF", STD 68, RFC 5234, | Specifications: ABNF", STD 68, RFC 5234, | |||
DOI 10.17487/RFC5234, January 2008, | DOI 10.17487/RFC5234, January 2008, | |||
<https://www.rfc-editor.org/info/rfc5234>. | <https://www.rfc-editor.org/info/rfc5234>. | |||
[RFC5576] Lennox, J., Ott, J., and T. Schierl, "Source-Specific | [RFC5576] Lennox, J., Ott, J., and T. Schierl, "Source-Specific | |||
skipping to change at page 59, line 33 ¶ | skipping to change at line 2762 ¶ | |||
[RFC5890] Klensin, J., "Internationalized Domain Names for | [RFC5890] Klensin, J., "Internationalized Domain Names for | |||
Applications (IDNA): Definitions and Document Framework", | Applications (IDNA): Definitions and Document Framework", | |||
RFC 5890, DOI 10.17487/RFC5890, August 2010, | RFC 5890, DOI 10.17487/RFC5890, August 2010, | |||
<https://www.rfc-editor.org/info/rfc5890>. | <https://www.rfc-editor.org/info/rfc5890>. | |||
[RFC5952] Kawamura, S. and M. Kawashima, "A Recommendation for IPv6 | [RFC5952] Kawamura, S. and M. Kawashima, "A Recommendation for IPv6 | |||
Address Text Representation", RFC 5952, | Address Text Representation", RFC 5952, | |||
DOI 10.17487/RFC5952, August 2010, | DOI 10.17487/RFC5952, August 2010, | |||
<https://www.rfc-editor.org/info/rfc5952>. | <https://www.rfc-editor.org/info/rfc5952>. | |||
[RFC6135] Holmberg, C. and S. Blau, "An Alternative Connection Model | ||||
for the Message Session Relay Protocol (MSRP)", RFC 6135, | ||||
DOI 10.17487/RFC6135, February 2011, | ||||
<https://www.rfc-editor.org/info/rfc6135>. | ||||
[RFC7195] Garcia-Martin, M. and S. Veikkolainen, "Session | [RFC7195] Garcia-Martin, M. and S. Veikkolainen, "Session | |||
Description Protocol (SDP) Extension for Setting Audio and | Description Protocol (SDP) Extension for Setting Audio and | |||
Video Media Streams over Circuit-Switched Bearers in the | Video Media Streams over Circuit-Switched Bearers in the | |||
Public Switched Telephone Network (PSTN)", RFC 7195, | Public Switched Telephone Network (PSTN)", RFC 7195, | |||
DOI 10.17487/RFC7195, May 2014, | DOI 10.17487/RFC7195, May 2014, | |||
<https://www.rfc-editor.org/info/rfc7195>. | <https://www.rfc-editor.org/info/rfc7195>. | |||
[RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | |||
Writing an IANA Considerations Section in RFCs", BCP 26, | Writing an IANA Considerations Section in RFCs", BCP 26, | |||
RFC 8126, DOI 10.17487/RFC8126, June 2017, | RFC 8126, DOI 10.17487/RFC8126, June 2017, | |||
<https://www.rfc-editor.org/info/rfc8126>. | <https://www.rfc-editor.org/info/rfc8126>. | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
12.2. Informative References | [RFC8859] Nandakumar, S., "A Framework for Session Description | |||
Protocol (SDP) Attributes When Multiplexing", | ||||
DOI 10.17487/RFC8859, RFC 8859, July 2020, | ||||
<https://www.rfc-editor.org/info/rfc8859>. | ||||
[I-D.ietf-mmusic-ice-sip-sdp] | [RFC8864] Drage, K., Makaraju, M., Ejzak, R., Marcon, J., and R. | |||
Petit-Huguenin, M., Nandakumar, S., Keranen, A., Shpount, | Even, Ed., "SDP-based Data Channel Negotiation", RFC 8864, | |||
R., and C. Holmberg, "Session Description Protocol (SDP) | DOI 10.17487/RFC8864, July 2020, | |||
Offer/Answer procedures for Interactive Connectivity | <https://www.rfc-editor.org/rfc/rfc8864>. | |||
Establishment (ICE)", draft-ietf-mmusic-ice-sip-sdp-38 | ||||
(work in progress), August 2019. | ||||
[I-D.ietf-mmusic-sdp-bundle-negotiation] | 11.2. Informative References | |||
Holmberg, C., Alvestrand, H., and C. Jennings, | ||||
"Negotiating Media Multiplexing Using the Session | ||||
Description Protocol (SDP)", draft-ietf-mmusic-sdp-bundle- | ||||
negotiation-54 (work in progress), December 2018. | ||||
[ITU.H332.1998] | [ITU.H332.1998] | |||
International Telecommunication Union, "H.323 extended for | International Telecommunication Union, "H.332 : H.323 | |||
loosely coupled conferences", ITU Recommendation H.332, | extended for loosely coupled conferences", ITU | |||
September 1998. | Recommendation H.332, September 1998, | |||
<https://www.itu.int/rec/T-REC-H.332-199809-I/en>. | ||||
[RFC2045] Freed, N. and N. Borenstein, "Multipurpose Internet Mail | [RFC2045] Freed, N. and N. Borenstein, "Multipurpose Internet Mail | |||
Extensions (MIME) Part One: Format of Internet Message | Extensions (MIME) Part One: Format of Internet Message | |||
Bodies", RFC 2045, DOI 10.17487/RFC2045, November 1996, | Bodies", RFC 2045, DOI 10.17487/RFC2045, November 1996, | |||
<https://www.rfc-editor.org/info/rfc2045>. | <https://www.rfc-editor.org/info/rfc2045>. | |||
[RFC2327] Handley, M. and V. Jacobson, "SDP: Session Description | [RFC2327] Handley, M. and V. Jacobson, "SDP: Session Description | |||
Protocol", RFC 2327, DOI 10.17487/RFC2327, April 1998, | Protocol", RFC 2327, DOI 10.17487/RFC2327, April 1998, | |||
<https://www.rfc-editor.org/info/rfc2327>. | <https://www.rfc-editor.org/info/rfc2327>. | |||
skipping to change at page 61, line 45 ¶ | skipping to change at line 2865 ¶ | |||
[RFC4568] Andreasen, F., Baugher, M., and D. Wing, "Session | [RFC4568] Andreasen, F., Baugher, M., and D. Wing, "Session | |||
Description Protocol (SDP) Security Descriptions for Media | Description Protocol (SDP) Security Descriptions for Media | |||
Streams", RFC 4568, DOI 10.17487/RFC4568, July 2006, | Streams", RFC 4568, DOI 10.17487/RFC4568, July 2006, | |||
<https://www.rfc-editor.org/info/rfc4568>. | <https://www.rfc-editor.org/info/rfc4568>. | |||
[RFC4855] Casner, S., "Media Type Registration of RTP Payload | [RFC4855] Casner, S., "Media Type Registration of RTP Payload | |||
Formats", RFC 4855, DOI 10.17487/RFC4855, February 2007, | Formats", RFC 4855, DOI 10.17487/RFC4855, February 2007, | |||
<https://www.rfc-editor.org/info/rfc4855>. | <https://www.rfc-editor.org/info/rfc4855>. | |||
[RFC5124] Ott, J. and E. Carrara, "Extended Secure RTP Profile for | ||||
Real-time Transport Control Protocol (RTCP)-Based Feedback | ||||
(RTP/SAVPF)", RFC 5124, DOI 10.17487/RFC5124, February | ||||
2008, <https://www.rfc-editor.org/info/rfc5124>. | ||||
[RFC5322] Resnick, P., Ed., "Internet Message Format", RFC 5322, | [RFC5322] Resnick, P., Ed., "Internet Message Format", RFC 5322, | |||
DOI 10.17487/RFC5322, October 2008, | DOI 10.17487/RFC5322, October 2008, | |||
<https://www.rfc-editor.org/info/rfc5322>. | <https://www.rfc-editor.org/info/rfc5322>. | |||
[RFC5735] Cotton, M. and L. Vegoda, "Special Use IPv4 Addresses", | ||||
RFC 5735, DOI 10.17487/RFC5735, January 2010, | ||||
<https://www.rfc-editor.org/info/rfc5735>. | ||||
[RFC5771] Cotton, M., Vegoda, L., and D. Meyer, "IANA Guidelines for | ||||
IPv4 Multicast Address Assignments", BCP 51, RFC 5771, | ||||
DOI 10.17487/RFC5771, March 2010, | ||||
<https://www.rfc-editor.org/info/rfc5771>. | ||||
[RFC5888] Camarillo, G. and H. Schulzrinne, "The Session Description | [RFC5888] Camarillo, G. and H. Schulzrinne, "The Session Description | |||
Protocol (SDP) Grouping Framework", RFC 5888, | Protocol (SDP) Grouping Framework", RFC 5888, | |||
DOI 10.17487/RFC5888, June 2010, | DOI 10.17487/RFC5888, June 2010, | |||
<https://www.rfc-editor.org/info/rfc5888>. | <https://www.rfc-editor.org/info/rfc5888>. | |||
[RFC5954] Gurbani, V., Ed., Carpenter, B., Ed., and B. Tate, Ed., | ||||
"Essential Correction for IPv6 ABNF and URI Comparison in | ||||
RFC 3261", RFC 5954, DOI 10.17487/RFC5954, August 2010, | ||||
<https://www.rfc-editor.org/info/rfc5954>. | ||||
[RFC6466] Salgueiro, G., "IANA Registration of the 'image' Media | [RFC6466] Salgueiro, G., "IANA Registration of the 'image' Media | |||
Type for the Session Description Protocol (SDP)", | Type for the Session Description Protocol (SDP)", | |||
RFC 6466, DOI 10.17487/RFC6466, December 2011, | RFC 6466, DOI 10.17487/RFC6466, December 2011, | |||
<https://www.rfc-editor.org/info/rfc6466>. | <https://www.rfc-editor.org/info/rfc6466>. | |||
[RFC6838] Freed, N., Klensin, J., and T. Hansen, "Media Type | [RFC6838] Freed, N., Klensin, J., and T. Hansen, "Media Type | |||
Specifications and Registration Procedures", BCP 13, | Specifications and Registration Procedures", BCP 13, | |||
RFC 6838, DOI 10.17487/RFC6838, January 2013, | RFC 6838, DOI 10.17487/RFC6838, January 2013, | |||
<https://www.rfc-editor.org/info/rfc6838>. | <https://www.rfc-editor.org/info/rfc6838>. | |||
skipping to change at page 62, line 41 ¶ | skipping to change at line 2929 ¶ | |||
and M. Stiemerling, Ed., "Real-Time Streaming Protocol | and M. Stiemerling, Ed., "Real-Time Streaming Protocol | |||
Version 2.0", RFC 7826, DOI 10.17487/RFC7826, December | Version 2.0", RFC 7826, DOI 10.17487/RFC7826, December | |||
2016, <https://www.rfc-editor.org/info/rfc7826>. | 2016, <https://www.rfc-editor.org/info/rfc7826>. | |||
[RFC8445] Keranen, A., Holmberg, C., and J. Rosenberg, "Interactive | [RFC8445] Keranen, A., Holmberg, C., and J. Rosenberg, "Interactive | |||
Connectivity Establishment (ICE): A Protocol for Network | Connectivity Establishment (ICE): A Protocol for Network | |||
Address Translator (NAT) Traversal", RFC 8445, | Address Translator (NAT) Traversal", RFC 8445, | |||
DOI 10.17487/RFC8445, July 2018, | DOI 10.17487/RFC8445, July 2018, | |||
<https://www.rfc-editor.org/info/rfc8445>. | <https://www.rfc-editor.org/info/rfc8445>. | |||
[RFC8839] Petit-Huguenin, M., Nandakumar, S., Holmberg, C., Keränen, | ||||
A., and R. Shpount, "Session Description Protocol (SDP) | ||||
Offer/Answer Procedures for Interactive Connectivity | ||||
Establishment (ICE)", RFC 8839, DOI 10.17487/RFC8839, July | ||||
2020, <https://www.rfc-editor.org/info/rfc8839>. | ||||
[RFC8843] Holmberg, C., Alvestrand, H., and C. Jennings, | ||||
"Negotiating Media Multiplexing Using the Session | ||||
Description Protocol (SDP)", RFC 8843, | ||||
DOI 10.17487/RFC8843, July 2020, | ||||
<https://www.rfc-editor.org/info/rfc8843>. | ||||
Acknowledgements | ||||
Many people in the IETF Multiparty Multimedia Session Control | ||||
(MMUSIC) working group have made comments and suggestions | ||||
contributing to this document. | ||||
In particular, we would like to thank the following people who | ||||
contributed to the creation of this document or one of its | ||||
predecessor documents: Adam Roach, Allison Mankin, Bernie Hoeneisen, | ||||
Bill Fenner, Carsten Bormann, Eve Schooler, Flemming Andreasen, | ||||
Gonzalo Camarillo, Jörg Ott, John Elwell, Jon Peterson, Jonathan | ||||
Lennox, Jonathan Rosenberg, Keith Drage, Peter Parnes, Rob Lanphier, | ||||
Ross Finlayson, Sean Olson, Spencer Dawkins, Steve Casner, Steve | ||||
Hanna, Van Jacobson. | ||||
Authors' Addresses | Authors' Addresses | |||
Ali Begen | Ali Begen | |||
Networked Media | Networked Media | |||
Konya | Konya/ | |||
Turkey | Turkey | |||
EMail: ali.begen@networked.media | Email: ali.begen@networked.media | |||
Paul Kyzivat | Paul Kyzivat | |||
USA | United States of America | |||
EMail: pkyzivat@alum.mit.edu | Email: pkyzivat@alum.mit.edu | |||
Colin Perkins | Colin Perkins | |||
University of Glasgow | University of Glasgow | |||
School of Computing Science | School of Computing Science | |||
University of Glasgow | Glasgow | |||
Glasgow G12 8QQ | G12 8QQ | |||
UK | United Kingdom | |||
EMail: csp@csperkins.org | Email: csp@csperkins.org | |||
Mark Handley | Mark Handley | |||
University College London | University College London | |||
Department of Computer Science | Department of Computer Science | |||
London WC1E 6BT | London | |||
UK | WC1E 6BT | |||
United Kingdom | ||||
EMail: M.Handley@cs.ucl.ac.uk | Email: M.Handley@cs.ucl.ac.uk | |||
End of changes. 370 change blocks. | ||||
769 lines changed or deleted | 831 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |