summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc8853.txt
diff options
context:
space:
mode:
authorThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
committerThomas Voss <mail@thomasvoss.com> 2024-11-27 20:54:24 +0100
commit4bfd864f10b68b71482b35c818559068ef8d5797 (patch)
treee3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc8853.txt
parentea76e11061bda059ae9f9ad130a9895cc85607db (diff)
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc8853.txt')
-rw-r--r--doc/rfc/rfc8853.txt1610
1 files changed, 1610 insertions, 0 deletions
diff --git a/doc/rfc/rfc8853.txt b/doc/rfc/rfc8853.txt
new file mode 100644
index 0000000..8ea73e7
--- /dev/null
+++ b/doc/rfc/rfc8853.txt
@@ -0,0 +1,1610 @@
+
+
+
+
+Internet Engineering Task Force (IETF) B. Burman
+Request for Comments: 8853 M. Westerlund
+Category: Standards Track Ericsson
+ISSN: 2070-1721 S. Nandakumar
+ M. Zanaty
+ Cisco
+ January 2021
+
+
+ Using Simulcast in Session Description Protocol (SDP) and RTP Sessions
+
+Abstract
+
+ In some application scenarios, it may be desirable to send multiple
+ differently encoded versions of the same media source in different
+ RTP streams. This is called simulcast. This document describes how
+ to accomplish simulcast in RTP and how to signal it in the Session
+ Description Protocol (SDP). The described solution uses an RTP/RTCP
+ identification method to identify RTP streams belonging to the same
+ media source and makes an extension to SDP to indicate that those RTP
+ streams are different simulcast formats of that media source. The
+ SDP extension consists of a new media-level SDP attribute that
+ expresses capability to send and/or receive simulcast RTP streams.
+
+Status of This Memo
+
+ This is an Internet Standards Track document.
+
+ This document is a product of the Internet Engineering Task Force
+ (IETF). It represents the consensus of the IETF community. It has
+ received public review and has been approved for publication by the
+ Internet Engineering Steering Group (IESG). Further information on
+ Internet Standards is available in Section 2 of RFC 7841.
+
+ 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/rfc8853.
+
+Copyright Notice
+
+ Copyright (c) 2021 IETF Trust and the persons identified as the
+ document authors. All rights reserved.
+
+ This document is subject to BCP 78 and the IETF Trust's Legal
+ Provisions Relating to IETF Documents
+ (https://trustee.ietf.org/license-info) in effect on the date of
+ publication of this document. Please review these documents
+ carefully, as they describe your rights and restrictions with respect
+ to this document. Code Components extracted from this document must
+ include Simplified BSD License text as described in Section 4.e of
+ the Trust Legal Provisions and are provided without warranty as
+ described in the Simplified BSD License.
+
+Table of Contents
+
+ 1. Introduction
+ 2. Definitions
+ 2.1. Terminology
+ 2.2. Requirements Language
+ 3. Use Cases
+ 3.1. Reaching a Diverse Set of Receivers
+ 3.2. Application-Specific Media Source Handling
+ 3.3. Receiver Media-Source Preferences
+ 4. Overview
+ 5. Detailed Description
+ 5.1. Simulcast Attribute
+ 5.2. Simulcast Capability
+ 5.3. Offer/Answer Use
+ 5.3.1. Generating the Initial SDP Offer
+ 5.3.2. Creating the SDP Answer
+ 5.3.3. Offerer Processing the SDP Answer
+ 5.3.4. Modifying the Session
+ 5.4. Use with Declarative SDP
+ 5.5. Relating Simulcast Streams
+ 5.6. Signaling Examples
+ 5.6.1. Single-Source Client
+ 5.6.2. Multisource Client
+ 5.6.3. Simulcast and Redundancy
+ 6. RTP Aspects
+ 6.1. Outgoing from Endpoint with Media Source
+ 6.2. RTP Middlebox to Receiver
+ 6.2.1. Media-Switching Mixer
+ 6.2.2. Selective Forwarding Middlebox
+ 6.3. RTP Middlebox to RTP Middlebox
+ 7. Network Aspects
+ 7.1. Bitrate Adaptation
+ 8. Limitation
+ 9. IANA Considerations
+ 10. Security Considerations
+ 11. References
+ 11.1. Normative References
+ 11.2. Informative References
+ Appendix A. Requirements
+ Acknowledgements
+ Contributors
+ Authors' Addresses
+
+1. Introduction
+
+ Most of today's multiparty video-conference solutions make use of
+ centralized servers to reduce the bandwidth and CPU consumption in
+ the endpoints. Those servers receive RTP streams from each
+ participant and send some suitable set of possibly modified RTP
+ streams to the rest of the participants, which usually have
+ heterogeneous capabilities (screen size, CPU, bandwidth, codec,
+ etc.). One of the biggest issues is how to perform RTP stream
+ adaptation to different participants' constraints with the minimum
+ possible impact on both video quality and server performance.
+
+ Simulcast is defined in this memo as the act of simultaneously
+ sending multiple different encoded streams of the same media source
+ -- e.g., the same video source encoded with different video-encoder
+ types or image resolutions. This can be done in several ways and for
+ different purposes. This document focuses on the case where it is
+ desirable to provide a media source as multiple encoded streams over
+ RTP [RFC3550] towards an intermediary so that the intermediary can
+ provide the wanted functionality by selecting which RTP stream(s) to
+ forward to other participants in the session, and more specifically
+ how the identification and grouping of the involved RTP streams are
+ done.
+
+ The intended scope of the defined mechanism is to support negotiation
+ and usage of simulcast when using SDP offer/answer and media
+ transport over RTP. The media transport topologies considered are
+ point-to-point RTP sessions, as well as centralized multiparty RTP
+ sessions, where a media sender will provide the simulcasted streams
+ to an RTP middlebox or endpoint, and middleboxes may further
+ distribute the simulcast streams to other middleboxes or endpoints.
+ Simulcast could be used point to point between middleboxes as part of
+ a distributed multiparty scenario. Usage of multicast or broadcast
+ transport is out of scope and left for future extensions.
+
+ This document describes a few scenarios that motivate the use of
+ simulcast and also defines the needed RTP/RTCP and SDP signaling for
+ it.
+
+2. Definitions
+
+2.1. Terminology
+
+ This document makes use of the terminology defined in "A Taxonomy of
+ Semantics and Mechanisms for Real-Time Transport Protocol (RTP)
+ Sources" [RFC7656] and "RTP Topologies" [RFC7667]. The following
+ terms are especially noted or here defined:
+
+ RTP mixer: An RTP middlebox, in the wide sense of the term,
+ encompassing Sections 3.6 to 3.9 of [RFC7667].
+
+ RTP session: An association among a group of participants
+ communicating with RTP, as defined in [RFC3550] and amended by
+ [RFC7656].
+
+ RTP stream: A stream of RTP packets containing media data, as
+ defined in [RFC7656].
+
+ RTP switch: A common short term for the terms "switching RTP mixer",
+ "source projecting middlebox", and "video switching Multipoint
+ Control Unit (MCU)", as discussed in [RFC7667].
+
+ Simulcast stream: One encoded stream or dependent stream from a set
+ of concurrently transmitted encoded streams and optional dependent
+ streams, all sharing a common media source, as defined in
+ [RFC7656]. For example, HD and thumbnail video simulcast versions
+ of a single media source sent concurrently as separate RTP
+ streams.
+
+ Simulcast format: Different formats of a simulcast stream serve the
+ same purpose as alternative RTP payload types in nonsimulcast SDP:
+ to allow multiple alternative media formats for a given RTP
+ stream. As for multiple RTP payload types on the "m=" line in
+ offer/answer [RFC3264], any one of the negotiated alternative
+ formats can be used in a single RTP stream at a given point in
+ time, but not more than one (based on RTP timestamp). What format
+ is used can change dynamically from one RTP packet to another.
+
+2.2. Requirements Language
+
+ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+ "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
+ "OPTIONAL" in this document are to be interpreted as described in
+ BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
+ capitals, as shown here.
+
+3. Use Cases
+
+ The use cases of simulcast described in this document relate to a
+ multiparty communication session where one or more central nodes are
+ used to adapt the view of the communication session towards
+ individual participants and facilitate the media transport between
+ participants. Thus, these cases target the RTP mixer type of
+ topology.
+
+ There are two principal approaches for an RTP mixer to provide this
+ adapted view of the communication session to each receiving
+ participant:
+
+ * Transcoding (decoding and re-encoding) received RTP streams with
+ characteristics adapted to each receiving participant. This often
+ includes mixing or composition of media sources from multiple
+ participants into a mixed media source originated by the RTP
+ mixer. The main advantage of this approach is that it achieves
+ close-to-optimal adaptation to individual receiving participants.
+ The main disadvantages are that it can be very computationally
+ expensive to the RTP mixer, typically degrades media Quality of
+ Experience (QoE) such as creating end-to-end delay for the
+ receiving participants, and requires the RTP mixer to have access
+ to media content.
+
+ * Switching a subset of all received RTP streams or substreams to
+ each receiving participant, where the used subset is typically
+ specific to each receiving participant. The main advantages of
+ this approach are that it is computationally cheap to the RTP
+ mixer, has very limited impact on media QoE, and does not require
+ the RTP mixer to have (full) access to media content. The main
+ disadvantage is that it can be difficult to combine a subset of
+ received RTP streams into a perfect fit for the resource situation
+ of a receiving participant. It is also a disadvantage that
+ sending multiple RTP streams consumes more network resources from
+ the sending participant to the RTP mixer.
+
+ The use of simulcast relates to the latter approach, where it is more
+ important to reduce the load on the RTP mixer and/or minimize QoE
+ impact than to achieve an optimal adaptation of resource usage.
+
+3.1. Reaching a Diverse Set of Receivers
+
+ The media sources provided by a sending participant potentially need
+ to reach several receiving participants that differ in terms of
+ available resources. The receiver resources that typically differ
+ include, but are not limited to:
+
+ Codec: This includes codec type (such as RTP payload format MIME
+ type) and can include codec configuration. A couple of codec
+ resources that differ only in codec configuration will be
+ "different" if they are somehow not "compatible", such as if they
+ differ in video codec profile or the transport packetization
+ configuration.
+
+ Sampling: This relates to how the media source is sampled, in
+ spatial as well as temporal domain. For video streams, spatial
+ sampling affects image resolution, and temporal sampling affects
+ video frame rate. For audio, spatial sampling relates to the
+ number of audio channels, and temporal sampling affects audio
+ bandwidth. This may be used to suit different rendering
+ capabilities or needs at the receiving endpoints.
+
+ Bitrate: This relates to the number of bits sent per second to
+ transmit the media source as an RTP stream, which typically also
+ affects the QoE for the receiving user.
+
+ Letting the sending participant create a simulcast of a few
+ differently configured RTP streams per media source can be a good
+ trade-off when using an RTP switch as middlebox, instead of sending a
+ single RTP stream and using an RTP mixer to create individual
+ transcodings to each receiving participant.
+
+ This requires that the receiving participants can be categorized in
+ terms of available resources and that the sending participant can
+ choose a matching configuration for a single RTP stream per category
+ and media source. For example, a set of receiving participants
+ differ only in screen resolution; some are able to display video with
+ at most 360p resolution, and some support 720p resolution. A sending
+ participant can then reach all receivers with best possible
+ resolution by creating a simulcast of RTP streams with 360p and 720p
+ resolution for each sent video media source.
+
+ The maximum number of simulcasted RTP streams that can be sent is
+ mainly limited by the amount of processing and uplink network
+ resources available to the sending participant.
+
+3.2. Application-Specific Media Source Handling
+
+ The application logic that controls the communication session may
+ include special handling of some media sources. It is, for example,
+ commonly the case that the media from a sending participant is not
+ sent back to itself.
+
+ It is also common that a currently active speaker participant is
+ shown in larger size or higher quality than other participants (the
+ sampling or bitrate aspects of Section 3.1) in a receiving client.
+ Many conferencing systems do not send the active speaker's media back
+ to the sender itself, which means there is some other participant's
+ media that instead is forwarded to the active speaker -- typically
+ the previous active speaker. This way, the previously active speaker
+ is needed both in larger size (to current active speaker) and in
+ small size (to the rest of the participants), which can be solved
+ with a simulcast from the previously active speaker to the RTP
+ switch.
+
+3.3. Receiver Media-Source Preferences
+
+ The application logic that controls the communication session may
+ allow receiving participants to state preferences on the
+ characteristics of the RTP stream they like to receive, for example
+ in terms of the aspects listed in Section 3.1. Sending a simulcast
+ of RTP streams is one way of accommodating receivers with conflicting
+ or otherwise incompatible preferences.
+
+4. Overview
+
+ This memo defines SDP [RFC4566] signaling that covers the above
+ described simulcast use cases and functionalities. A number of
+ requirements for such signaling are elaborated in Appendix A.
+
+ The Restriction Identifier (RID) mechanism, as defined in [RFC8851],
+ enables an SDP offerer or answerer to specify a number of different
+ RTP stream restrictions for a rid-id by using the "a=rid" line.
+ Examples of such restrictions are maximum bitrate, maximum spatial
+ video resolution (width and height), maximum video frame rate, etc.
+ Each rid-id may also be restricted to use only a subset of the RTP
+ payload types in the associated SDP media description. Those RTP
+ payload types can have their own configurations and parameters
+ affecting what can be sent or received, using the "a=fmtp" line as
+ well as other SDP attributes.
+
+ A new SDP media-level attribute, "a=simulcast", is defined. The
+ attribute describes, independently for "send" and "receive"
+ directions, the number of simulcast RTP streams as well as potential
+ alternative formats for each simulcast RTP stream. Each simulcast
+ RTP stream, including alternatives, is identified using the RID
+ identifier (rid-id), defined in [RFC8851].
+
+ a=simulcast:send 1;2,3 recv 4
+
+ If this line is included in an SDP offer, the "send" part indicates
+ the offerer's capability and proposal to send two simulcast RTP
+ streams. Each simulcast stream is described by one or more RTP
+ stream identifiers (rid-ids), and each group of rid-ids for a
+ simulcast stream is separated by a semicolon (";"). When a simulcast
+ stream has multiple rid-ids that are separated by a comma (","), they
+ describe alternative representations for that particular simulcast
+ RTP stream. Thus, the "send" part shown above is interpreted as an
+ intention to send two simulcast RTP streams. The first simulcast RTP
+ stream is identified and restricted according to rid-id 1. The
+ second simulcast RTP stream can be sent as two alternatives,
+ identified and restricted according to rid-ids 2 and 3. The "recv"
+ part of the line shown here indicates that the offerer desires to
+ receive a single RTP stream (no simulcast) according to rid-id 4.
+
+ A more complete example SDP-offer media description is provided in
+ Figure 1.
+
+ m=video 49300 RTP/AVP 97 98 99
+ a=rtpmap:97 H264/90000
+ a=rtpmap:98 H264/90000
+ a=rtpmap:99 VP8/90000
+ a=fmtp:97 profile-level-id=42c01f;max-fs=3600;max-mbps=108000
+ a=fmtp:98 profile-level-id=42c00b;max-fs=240;max-mbps=3600
+ a=fmtp:99 max-fs=240; max-fr=30
+ a=rid:1 send pt=97;max-width=1280;max-height=720
+ a=rid:2 send pt=98;max-width=320;max-height=180
+ a=rid:3 send pt=99;max-width=320;max-height=180
+ a=rid:4 recv pt=97
+ a=simulcast:send 1;2,3 recv 4
+ a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
+
+ Figure 1: Example Simulcast Media Description in Offer
+
+ The SDP media description in Figure 1 can be interpreted at a high
+ level to say that the offerer is capable of sending two simulcast RTP
+ streams: one H.264 encoded stream in up to 720p resolution, and one
+ additional stream encoded as either H.264 or VP8 with a maximum
+ resolution of 320x180 pixels. The offerer can receive one H.264
+ stream with maximum 720p resolution.
+
+ The receiver of this SDP offer can generate an SDP answer that
+ indicates what it accepts. It uses the "a=simulcast" attribute to
+ indicate simulcast capability and specify what simulcast RTP streams
+ and alternatives to receive and/or send. An example of such an
+ answering "a=simulcast" attribute, corresponding to the above offer,
+ is:
+
+ a=simulcast:recv 1;2 send 4
+
+ With this SDP answer, the answerer indicates in the "recv" part that
+ it wants to receive the two simulcast RTP streams. It has removed an
+ alternative that it doesn't support (rid-id 3). The "send" part
+ confirms to the offerer that it will receive one stream for this
+ media source according to rid-id 4. The corresponding, more complete
+ example SDP answer media description could look like Figure 2.
+
+ m=video 49674 RTP/AVP 97 98
+ a=rtpmap:97 H264/90000
+ a=rtpmap:98 H264/90000
+ a=fmtp:97 profile-level-id=42c01f;max-fs=3600;max-mbps=108000
+ a=fmtp:98 profile-level-id=42c00b;max-fs=240;max-mbps=3600
+ a=rid:1 recv pt=97;max-width=1280;max-height=720
+ a=rid:2 recv pt=98;max-width=320;max-height=180
+ a=rid:4 send pt=97
+ a=simulcast:recv 1;2 send 4
+ a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
+
+ Figure 2: Example Simulcast Media Description in Answer
+
+ It is assumed that a single SDP media description is used to describe
+ a single media source. This is aligned with the concepts defined in
+ [RFC7656] and will work in a WebRTC context, both with and without
+ BUNDLE grouping of media descriptions [RFC8843].
+
+ To summarize, the "a=simulcast" line describes "send"- and "receive"-
+ direction simulcast streams separately. Each direction can in turn
+ describe one or more simulcast streams, separated by semicolons. The
+ identifiers describing simulcast streams on the "a=simulcast" line
+ are rid-ids, as defined by "a=rid" lines in [RFC8851]. Each
+ simulcast stream can be offered as a list of alternative rid-ids,
+ with each alternative separated by a comma as shown in the example
+ offer in Figure 1. A detailed specification can be found in
+ Section 5, and more detailed examples are outlined in Section 5.6.
+
+5. Detailed Description
+
+ This section provides further details to the overview in Section 4.
+ First, formal syntax is provided (Section 5.1), followed by the rest
+ of the SDP attribute definition in Section 5.2. "Relating Simulcast
+ Streams" (Section 5.5) provides the definition of the RTP/RTCP
+ mechanisms used. The section concludes with a number of examples.
+
+5.1. Simulcast Attribute
+
+ This document defines a new SDP media-level "a=simulcast" attribute,
+ with value according to the syntax in Figure 3, which uses ABNF
+ [RFC5234] and its update, "Case-Sensitive String Support in ABNF"
+ [RFC7405]:
+
+ sc-value = ( sc-send [SP sc-recv] ) / ( sc-recv [SP sc-send] )
+ sc-send = %s"send" SP sc-str-list
+ sc-recv = %s"recv" SP sc-str-list
+ sc-str-list = sc-alt-list *( ";" sc-alt-list )
+ sc-alt-list = sc-id *( "," sc-id )
+ sc-id-paused = "~"
+ sc-id = [sc-id-paused] rid-id
+ ; SP defined in [RFC5234]
+ ; rid-id defined in [RFC8851]
+
+ Figure 3: ABNF for Simulcast Value
+
+ The "a=simulcast" attribute has a parameter in the form of one or two
+ simulcast stream descriptions, each consisting of a direction ("send"
+ or "recv"), followed by a list of one or more simulcast streams.
+ Each simulcast stream consists of one or more alternative simulcast
+ formats. Each simulcast format is identified by a simulcast stream
+ identifier (rid-id). The rid-id MUST have the form of an RTP stream
+ identifier, as described by "RTP Payload Format Restrictions"
+ [RFC8851].
+
+ In the list of simulcast streams, each simulcast stream is separated
+ by a semicolon (";"). Each simulcast stream can, in turn, be offered
+ in one or more alternative formats, represented by rid-ids, separated
+ by commas (","). Each rid-id can also be specified as initially
+ paused [RFC7728], indicated by prepending a "~" to the rid-id. The
+ reason to allow separate initial pause states for each rid-id is that
+ pause capability can be specified individually for each RTP payload
+ type referenced by a rid-id. Since pause capability specified via
+ the "a=rtcp-fb" attribute applies only to specified payload types,
+ and a rid-id specified by "a=rid" can refer to multiple different
+ payload types, it is unfeasible to pause streams with rid-id where
+ any of the related RTP payload type(s) do not have pause capability.
+
+5.2. Simulcast Capability
+
+ Simulcast capability is expressed through a new media-level SDP
+ attribute, "a=simulcast" (Section 5.1). The use of this attribute at
+ the session level is undefined. Implementations of this
+ specification MUST NOT use it at the session level and MUST ignore it
+ if received at the session level. Extensions to this specification
+ may define such session-level usage. Each SDP media description MUST
+ contain at most one "a=simulcast" line.
+
+ There are separate and independent sets of simulcast streams in the
+ "send" and "receive" directions. When listing multiple directions,
+ each direction MUST NOT occur more than once on the same line.
+
+ Simulcast streams using undefined rid-ids MUST NOT be used as valid
+ simulcast streams by an RTP stream receiver. The direction for a
+ rid-id MUST be aligned with the direction specified for the
+ corresponding RTP stream identifier on the "a=rid" line.
+
+ The listed number of simulcast streams for a direction sets a limit
+ to the number of supported simulcast streams in that direction. The
+ order of the listed simulcast streams in the "send" direction
+ suggests a proposed order of preference, in decreasing order: the
+ rid-id listed first is the most preferred, and subsequent streams
+ have progressively lower preference. The order of the listed rid-ids
+ in the "recv" direction expresses which simulcast streams are
+ preferred, with the leftmost being most preferred. This can be of
+ importance if the number of actually sent simulcast streams has to be
+ reduced for some reason.
+
+ rid-ids that have explicit dependencies [RFC5583] [RFC8851] to other
+ rid-ids (even in the same media description) MAY be used.
+
+ Use of more than a single, alternative simulcast format for a
+ simulcast stream MAY be specified as part of the attribute parameters
+ by expressing the simulcast stream as a comma-separated list of
+ alternative rid-ids. The order of the rid-id alternatives within a
+ simulcast stream is significant; the rid-id alternatives are listed
+ from (left) most preferred to (right) least preferred. For the use
+ of simulcast, this overrides the normal codec preference as expressed
+ by format-type ordering on the "m=" line, using regular SDP rules.
+ This is to enable a separation of general codec preferences and
+ simulcast-stream configuration preferences. However, the choice of
+ which alternative to use per simulcast stream is independent, and
+ there is currently no mechanism for the offerer to force the answerer
+ to choose the same alternative for multiple simulcast streams.
+
+ A simulcast stream can use a codec defined such that the same RTP
+ synchronization source (SSRC) can change RTP payload type multiple
+ times during a session, possibly even on a per-packet basis. A
+ typical example is a speech codec that makes use of formats for
+ Comfort Noise [RFC3389] and/or dual-tone multifrequency (DTMF)
+ [RFC4733].
+
+ If RTP stream pause/resume [RFC7728] is supported, any rid-id MAY be
+ prefixed by a "~" character to indicate that the corresponding
+ simulcast stream is paused already from the start of the RTP session.
+ In this case, support for RTP stream pause/resume MUST also be
+ included under the same "m=" line where "a=simulcast" is included.
+ All RTP payload types related to such an initially paused simulcast
+ stream MUST be listed in the SDP as pause/resume capable as specified
+ by [RFC7728] -- e.g., by using the "*" wildcard format for "a=rtcp-
+ fb".
+
+ An initially paused simulcast stream in the "send" direction for the
+ endpoint sending the SDP MUST be considered equivalent to an
+ unsolicited locally paused stream and handled accordingly. Initially
+ paused simulcast streams are resumed as described by the RTP pause/
+ resume specification. An RTP stream receiver that wishes to resume
+ an unsolicited locally paused stream needs to know the SSRC of that
+ stream. The SSRC of an initially paused simulcast stream can be
+ obtained from an RTP stream sender RTCP Sender Report (SR) or
+ Receiver Report (RR) that includes both the desired SSRC as initial
+ SSRC in the source description (SDES) chunk, optionally a MID SDES
+ item [RFC8843] (if used and if rid-ids are not unique across "m="
+ lines), and the rid-id value in an RtpStreamId RTCP SDES item
+ [RFC8852].
+
+ If the endpoint sending the SDP includes a "recv"-direction simulcast
+ stream that is initially paused, then the remote RTP sender receiving
+ the SDP SHOULD put its RTP stream in an unsolicited locally paused
+ state. The simulcast stream sender does not put the stream in the
+ locally paused state if there are other RTP stream receivers in the
+ session that do not mark the simulcast stream as initially paused.
+ However, in centralized conferencing, the RTP sender usually does not
+ see the SDP signaling from RTP receivers and cannot make this
+ determination. The reason for requiring that an initially paused
+ "recv" stream be considered locally paused by the remote RTP sender
+ instead of making it equivalent to implicitly sending a pause request
+ is that the pausing RTP sender cannot know which receiving SSRC owns
+ the restriction when Temporary Maximum Media Stream Bit Rate Request
+ (TMMBR) and Temporary Maximum Media Stream Bit Rate Notification
+ (TMMBN) are used for pause/resume signaling (Section 5.6 of
+ [RFC7728]); this is because the RTP receiver's SSRC in the "send"
+ direction is sometimes not yet known.
+
+ Use of the redundant audio data format [RFC2198] could be seen as a
+ form of simulcast for loss-protection purposes, but it is not
+ considered conflicting with the mechanisms described in this memo and
+ MAY therefore be used as any other format. In this case, the "red"
+ format, rather than the carried formats, SHOULD be the one to list as
+ a simulcast stream on the "a=simulcast" line.
+
+ The media formats and corresponding characteristics of simulcast
+ streams SHOULD be chosen such that they are different -- e.g., as
+ different SDP formats with differing "a=rtpmap" and/or "a=fmtp"
+ lines, or as differently defined RTP payload format restrictions. If
+ this difference is not required, it is RECOMMENDED to use RTP
+ duplication procedures [RFC7104] instead of simulcast. To avoid
+ complications in implementations, a single rid-id MUST NOT occur more
+ than once per "a=simulcast" line. Note that this does not eliminate
+ use of simulcast as an RTP duplication mechanism, since it is
+ possible to define multiple different rid-ids that are effectively
+ equivalent.
+
+5.3. Offer/Answer Use
+
+ Note: The inclusion of "a=simulcast" or the use of simulcast does
+ not change any of the interpretation or Offer/Answer procedures
+ for other SDP attributes, such as "a=fmtp" or "a=rid".
+
+5.3.1. Generating the Initial SDP Offer
+
+ An offerer wanting to use simulcast for a media description SHALL
+ include one "a=simulcast" attribute in that media description in the
+ offer. An offerer listing a set of receive simulcast streams and/or
+ alternative formats as rid-ids in the offer MUST be prepared to
+ receive RTP streams for any of those simulcast streams and/or
+ alternative formats from the answerer.
+
+5.3.2. Creating the SDP Answer
+
+ An answerer that does not understand the concept of simulcast will
+ also not know the attribute and will remove it in the SDP answer, as
+ defined in existing SDP offer/answer procedures [RFC3264]. Since SDP
+ session-level simulcast is undefined in this memo, an answerer that
+ receives an offer with the "a=simulcast" attribute on the SDP session
+ level SHALL remove it in the answer. An answerer that understands
+ the attribute but receives multiple "a=simulcast" attributes in the
+ same media description SHALL disable use of simulcast by removing all
+ "a=simulcast" lines for that media description in the answer.
+
+ An answerer that does understand the attribute and wants to support
+ simulcast in an indicated direction SHALL reverse directionality of
+ the unidirectional direction parameters -- "send" becomes "recv" and
+ vice versa -- and include it in the answer.
+
+ An answerer that receives an offer with simulcast containing an
+ "a=simulcast" attribute listing alternative rid-ids MAY keep all the
+ alternative rid-ids in the answer, but it MAY also choose to remove
+ any nondesirable alternative rid-ids in the answer. The answerer
+ MUST NOT add any alternative rid-ids in the "send" direction in the
+ answer that were not present in the offer receive direction. The
+ answerer MUST be prepared to receive any of the receive-direction
+ rid-id alternatives and MAY send any of the "send"-direction
+ alternatives that are part of the answer.
+
+ An answerer that receives an offer with simulcast that lists a number
+ of simulcast streams MAY reduce the number of simulcast streams in
+ the answer, but it MUST NOT add simulcast streams.
+
+ An answerer that receives an offer without RTP stream pause/resume
+ capability MUST NOT mark any simulcast streams as initially paused in
+ the answer.
+
+ An RTP stream answerer capable of pause/resume that receives an offer
+ with RTP stream pause/resume capability MAY mark any rid-ids that
+ refer to pause/resume capable formats as initially paused in the
+ answer.
+
+ An answerer that receives indication in an offer of a rid-id being
+ initially paused SHOULD mark that rid-id as initially paused also in
+ the answer, regardless of direction, unless it has good reason for
+ the rid-id not being initially paused. One reason to remove an
+ initial pause in the answer compared to the offer could be, for
+ example, that all "receive"-direction simulcast streams for a media
+ source the answerer accepts in the answer would otherwise be paused.
+
+5.3.3. Offerer Processing the SDP Answer
+
+ An offerer that receives an answer without "a=simulcast" MUST NOT use
+ simulcast towards the answerer. An offerer that receives an answer
+ with "a=simulcast" without any rid-id in a specified direction MUST
+ NOT use simulcast in that direction.
+
+ An offerer that receives an answer where some rid-id alternatives are
+ kept MUST be prepared to receive any of the kept "send"-direction
+ rid-id alternatives and MAY send any of the kept "receive"-direction
+ rid-id alternatives.
+
+ An offerer that receives an answer where some of the rid-ids are
+ removed compared to the offer MAY release the corresponding resources
+ (codec, transport, etc) in its "receive" direction and MUST NOT send
+ any RTP packets corresponding to the removed rid-ids.
+
+ An offerer that offered some of its rid-ids as initially paused and
+ receives an answer that does not indicate RTP stream pause/resume
+ capability MUST NOT initially pause any simulcast streams.
+
+ An offerer with RTP stream pause/resume capability that receives an
+ answer where some rid-ids are marked as initially paused SHOULD
+ initially pause those RTP streams, even if they were marked as
+ initially paused also in the offer, unless it has good reason for
+ those RTP streams not being initially paused. One such reason could
+ be, for example, that the answerer would otherwise initially not
+ receive any media of that type at all.
+
+5.3.4. Modifying the Session
+
+ Offers inside an existing session follow the same rules as for
+ initial SDP offer, with these additions:
+
+ 1. rid-ids marked as initially paused in the offerer's "send"
+ direction SHALL reflect the offerer's opinion of the current
+ pause state at the time of creating the offer. This is purely
+ informational, and RTP stream pause/resume signaling [RFC7728] in
+ the ongoing session SHALL take precedence in case of any conflict
+ or ambiguity.
+
+ 2. rid-ids marked as initially paused in the offerer's "receive"
+ direction SHALL (as in an initial offer) reflect the offerer's
+ desired rid-id pause state. Except for the case where the
+ offerer already paused the corresponding RTP stream through RTP
+ stream pause/resume [RFC7728] signaling, this is identical to the
+ conditions at an initial offer.
+
+ Creation of SDP answers and processing of SDP answers inside an
+ existing session follow the same rules as described above for initial
+ SDP offer/answer.
+
+ Session modification restrictions in Section 6.5 of "RTP Payload
+ Format Restrictions" [RFC8851] also apply.
+
+5.4. Use with Declarative SDP
+
+ This document does not define the use of "a=simulcast" in declarative
+ SDP, partly because use of the simulcast format identification
+ [RFC8851] is not defined for use in declarative SDP. If concrete use
+ cases for simulcast in declarative SDP are identified in the future,
+ the authors of this memo expect that additional specifications will
+ address such use.
+
+5.5. Relating Simulcast Streams
+
+ Simulcast RTP streams MUST be related on the RTP level through
+ RtpStreamId [RFC8852], as specified in the SDP "a=simulcast"
+ attribute (Section 5.2) parameters. This is sufficient as long as
+ there is only a single media source per SDP media description. When
+ using BUNDLE [RFC8843], where multiple SDP media descriptions jointly
+ specify a single RTP session, the SDES MID (Media Identification)
+ mechanism in BUNDLE allows relating RTP streams back to individual
+ media descriptions, after which the RtpStreamId relations described
+ above can be used. Use of the RTP header extension for the RTCP
+ source description items [RFC7941] for both MID and RtpStreamId
+ identifications can be important to ensure rapid initial reception,
+ required to correctly interpret and process the RTP streams.
+ Implementers of this specification MUST support the RTCP source
+ description (SDES) item method and SHOULD support RTP header
+ extension method to signal RtpStreamId on the RTP level.
+
+ NOTE: For the case where it is clear from SDP that the RTP PT
+ uniquely maps to a corresponding RtpStreamId, an RTP receiver can
+ use RTP PT to relate simulcast streams. This can sometimes enable
+ decoding even in advance of receiving RtpStreamId information in
+ RTCP SDES and/or RTP header extensions.
+
+ RTP streams MUST only use a single alternative rid-id at a time
+ (based on RTP timestamps) but MAY change format (and rid-id) on a
+ per-RTP packet basis. This corresponds to the existing
+ (nonsimulcast) SDP offer/answer case when multiple formats are
+ included on the "m=" line in the SDP answer, enabling per-RTP packet
+ change of RTP payload type.
+
+5.6. Signaling Examples
+
+ These examples describe a client-to-video-conference service, using a
+ centralized media topology with an RTP mixer.
+
+ +---+ +-----------+ +---+
+ | A |<---->| |<---->| B |
+ +---+ | | +---+
+ | Mixer |
+ +---+ | | +---+
+ | F |<---->| |<---->| J |
+ +---+ +-----------+ +---+
+
+ Figure 4: Four-Party Mixer-Based Conference
+
+5.6.1. Single-Source Client
+
+ Alice is calling in to the mixer with a simulcast-enabled client
+ capable of a single media source per media type. The client can send
+ a simulcast of 2 video resolutions and frame rates: HD 1280x720p
+ 30fps and thumbnail 320x180p 15fps. This is defined below using the
+ "imageattr" [RFC6236]. In this example, only the "pt" "a=rid"
+ parameter is used to describe simulcast stream formats, effectively
+ achieving a 1:1 mapping between RtpStreamId and media formats (RTP
+ payload types). Alice's Offer:
+
+ v=0
+ o=alice 2362969037 2362969040 IN IP4 192.0.2.156
+ s=Simulcast-Enabled Client
+ c=IN IP4 192.0.2.156
+ t=0 0
+ m=audio 49200 RTP/AVP 0
+ a=rtpmap:0 PCMU/8000
+ m=video 49300 RTP/AVP 97 98
+ a=rtpmap:97 H264/90000
+ a=rtpmap:98 H264/90000
+ a=fmtp:97 profile-level-id=42c01f;max-fs=3600;max-mbps=108000
+ a=fmtp:98 profile-level-id=42c00b;max-fs=240;max-mbps=3600
+ a=imageattr:97 send [x=1280,y=720] recv [x=1280,y=720]
+ a=imageattr:98 send [x=320,y=180] recv [x=320,y=180]
+ a=rid:1 send pt=97
+ a=rid:2 send pt=98
+ a=rid:3 recv pt=97
+ a=simulcast:send 1;2 recv 3
+ a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
+
+ Figure 5: Single-Source Simulcast Offer
+
+ The only thing in the SDP that indicates simulcast capability is the
+ line in the video media description containing the "simulcast"
+ attribute. The included "a=fmtp" and "a=imageattr" parameters
+ indicate that sent simulcast streams can differ in video resolution.
+ The RTP header extension for RtpStreamId is offered to avoid issues
+ with the initial binding between RTP streams (SSRCs) and the
+ RtpStreamId identifying the simulcast stream and its format.
+
+ The answer from the server indicates that it, too, is simulcast
+ capable. Should it not have been simulcast capable, the
+ "a=simulcast" line would not have been present, and communication
+ would have started with the media negotiated in the SDP. Also, the
+ usage of the RtpStreamId RTP header extension is accepted.
+
+ v=0
+ o=server 823479283 1209384938 IN IP4 192.0.2.2
+ s=Answer to Simulcast-Enabled Client
+ c=IN IP4 192.0.2.43
+ t=0 0
+ m=audio 49672 RTP/AVP 0
+ a=rtpmap:0 PCMU/8000
+ m=video 49674 RTP/AVP 97 98
+ a=rtpmap:97 H264/90000
+ a=rtpmap:98 H264/90000
+ a=fmtp:97 profile-level-id=42c01f;max-fs=3600;max-mbps=108000
+ a=fmtp:98 profile-level-id=42c00b;max-fs=240;max-mbps=3600
+ a=imageattr:97 send [x=1280,y=720] recv [x=1280,y=720]
+ a=imageattr:98 send [x=320,y=180] recv [x=320,y=180]
+ a=rid:1 recv pt=97
+ a=rid:2 recv pt=98
+ a=rid:3 send pt=97
+ a=simulcast:recv 1;2 send 3
+ a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
+
+ Figure 6: Single-Source Simulcast Answer
+
+ Since the server is the simulcast media receiver, it reverses the
+ direction of the "simulcast" and "rid" attribute parameters.
+
+5.6.2. Multisource Client
+
+ Fred is calling in to the same conference as in the example above
+ with a two-camera, two-display system, thus capable of handling two
+ separate media sources in each direction, where each media source is
+ simulcast enabled in the "send" direction. Fred's client is
+ restricted to a single media source per media description.
+
+ The first two simulcast streams for the first media source use
+ different codecs, H264-SVC [RFC6190] and H264 [RFC6184]. These two
+ simulcast streams also have a temporal dependency. Two different
+ video codecs, VP8 [RFC7741] and H264, are offered as alternatives for
+ the third simulcast stream for the first media source. Only the
+ highest-fidelity simulcast stream is sent from start, the lower-
+ fidelity streams being initially paused.
+
+ The second media source is offered with three different simulcast
+ streams. All video streams of this second media source are loss
+ protected by RTP retransmission [RFC4588]. In addition, all but the
+ highest-fidelity simulcast stream are initially paused. Note that
+ the lower resolution is more prioritized than the medium-resolution
+ simulcast stream.
+
+ Fred's client is also using BUNDLE to send all RTP streams from all
+ media descriptions in the same RTP session on a single media
+ transport. Although using many different simulcast streams in this
+ example, the use of RtpStreamId as simulcast stream identification
+ enables use of a low number of RTP payload types. Note that when
+ using both BUNDLE [RFC8843] and "a=rid" [RFC8851], it is recommended
+ to use the RTP header extension for the RTCP source descriptions
+ items [RFC7941] for carrying these RTP stream-identification fields,
+ which is consequently also included in the SDP. Note also that for
+ "a=rid", the corresponding RtpStreamId SDES attribute RTP header
+ extension is named rtp-stream-id [RFC8852].
+
+ v=0
+ o=fred 238947129 823479223 IN IP6 2001:db8::c000:27d
+ s=Offer from Simulcast-Enabled Multi-Source Client
+ c=IN IP6 2001:db8::c000:27d
+ t=0 0
+ a=group:BUNDLE foo bar zen
+ m=audio 49200 RTP/AVP 99
+ a=mid:foo
+ a=rtpmap:99 G722/8000
+ m=video 49600 RTP/AVPF 100 101 103
+ a=mid:bar
+ a=rtpmap:100 H264-SVC/90000
+ a=rtpmap:101 H264/90000
+ a=rtpmap:103 VP8/90000
+ a=fmtp:100 profile-level-id=42400d;max-fs=3600;max-mbps=216000; \
+ mst-mode=NI-TC
+ a=fmtp:101 profile-level-id=42c00d;max-fs=3600;max-mbps=108000
+ a=fmtp:103 max-fs=900; max-fr=30
+ a=rid:1 send pt=100;max-width=1280;max-height=720;max-fps=60;depend=2
+ a=rid:2 send pt=101;max-width=1280;max-height=720;max-fps=30
+ a=rid:3 send pt=101;max-width=640;max-height=360
+ a=rid:4 send pt=103;max-width=640;max-height=360
+ a=depend:100 lay bar:101
+ a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid
+ a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
+ a=rtcp-fb:* ccm pause nowait
+ a=simulcast:send 1;2;~4,3
+ m=video 49602 RTP/AVPF 96 104
+ a=mid:zen
+ a=rtpmap:96 VP8/90000
+ a=fmtp:96 max-fs=3600; max-fr=30
+ a=rtpmap:104 rtx/90000
+ a=fmtp:104 apt=96;rtx-time=200
+ a=rid:1 send max-fs=921600;max-fps=30
+ a=rid:2 send max-fs=614400;max-fps=15
+ a=rid:3 send max-fs=230400;max-fps=30
+ a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid
+ a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
+ a=extmap:3 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
+ a=rtcp-fb:* ccm pause nowait
+ a=simulcast:send 1;~3;~2
+
+ Figure 7: Fred's Multisource Simulcast Offer
+
+5.6.3. Simulcast and Redundancy
+
+ The example in this section looks at applying simulcast with audio
+ and video redundancy formats. The audio media description uses codec
+ and bitrate restrictions, combined with the RTP payload for redundant
+ audio data [RFC2198] for enhanced packet-loss resilience. The video
+ media description applies both resolution and bitrate restrictions,
+ combined with Forward Error Correction (FEC) in the form of flexible
+ FEC [RFC8627] and RTP retransmission [RFC4588].
+
+ The audio source is offered to be sent as two simulcast streams. The
+ first simulcast stream is encoded with Opus, restricted to 64 kbps
+ (rid-id=1), and the second simulcast stream (rid-id=2) is encoded
+ with either G.711, or G.711 combined with linear predictive coding
+ (LPC) for redundancy and explicit comfort noise (CN). Both simulcast
+ streams include telephone-event capability. In this example, stand-
+ alone LPC is not offered as a possible payload type for the second
+ simulcast stream's RID, which could be motivated by, for example, not
+ providing sufficient quality.
+
+ The video source is offered to be sent as two simulcast streams, both
+ with two alternative simulcast formats. Redundancy and repair are
+ offered in the form of both flexible FEC and RTP retransmission. The
+ flexible FEC is not bound to any particular RTP streams and is
+ therefore able to be used across all RTP streams that are being sent
+ as part of this media description.
+
+ o=fred 238947129 823479223 IN IP6 2001:db8::c000:27d
+ s=Offer from Simulcast-Enabled Client using Redundancy
+ c=IN IP6 2001:db8::c000:27d
+ t=0 0
+ a=group:BUNDLE foo bar
+ m=audio 49200 RTP/AVP 97 98 99 100 101 102
+ a=mid:foo
+ a=rtpmap:97 G711/8000
+ a=rtpmap:98 LPC/8000
+ a=rtpmap:99 OPUS/48000/1
+ a=rtpmap:100 RED/8000/1
+ a=rtpmap:101 CN/8000
+ a=rtpmap:102 telephone-event/8000
+ a=fmtp:99 useinbandfec=1;usedtx=0
+ a=fmtp:100 97/98
+ a=fmtp:102 0-15
+ a=ptime:20
+ a=maxptime:40
+ a=rid:1 send pt=99,102;max-br=64000
+ a=rid:2 send pt=100,97,101,102
+ a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid
+ a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
+ a=simulcast:send 1;2
+ m=video 49600 RTP/AVPF 103 104 105 106 107
+ a=mid:bar
+ a=rtpmap:103 H264/90000
+ a=rtpmap:104 VP8/90000
+ a=rtpmap:105 rtx/90000
+ a=rtpmap:106 rtx/90000
+ a=rtpmap:107 flexfec/90000
+ a=fmtp:103 profile-level-id=42c00d;max-fs=3600;max-mbps=108000
+ a=fmtp:104 max-fs=3600; max-fr=30
+ a=fmtp:105 apt=103;rtx-time=200
+ a=fmtp:106 apt=104;rtx-time=200
+ a=fmtp:107 repair-window=100000
+ a=rid:1 send pt=103;max-width=1280;max-height=720;max-fps=30
+ a=rid:2 send pt=104;max-width=1280;max-height=720;max-fps=30
+ a=rid:3 send pt=103;max-width=640;max-height=360;max-br=300000
+ a=rid:4 send pt=104;max-width=640;max-height=360;max-br=300000
+ a=extmap:1 urn:ietf:params:rtp-hdrext:sdes:mid
+ a=extmap:2 urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id
+ a=extmap:3 urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id
+ a=rtcp-fb:* ccm pause nowait
+ a=simulcast:send 1,2;3,4
+
+ Figure 8: Simulcast and Redundancy Example
+
+6. RTP Aspects
+
+ This section discusses what the different entities in a simulcast
+ media path can expect to happen on the RTP level. This is explored
+ from source to sink by starting in an endpoint with a media source
+ that is simulcasted to an RTP middlebox. That RTP middlebox sends
+ media sources to other RTP middleboxes (cascaded middleboxes), as
+ well as selecting some simulcast format of the media source and
+ sending it to receiving endpoints. Different types of RTP
+ middleboxes and their usage of the different simulcast formats
+ results in several different behaviors.
+
+6.1. Outgoing from Endpoint with Media Source
+
+ The most straightforward simulcast case is the RTP streams being
+ emitted from the endpoint that originates a media source. When
+ simulcast has been negotiated in the sending direction, the endpoint
+ can transmit up to the number of RTP streams needed for the
+ negotiated simulcast streams for that media source. Each RTP stream
+ (SSRC) is identified by associating it (Section 5.5) with an
+ RtpStreamId SDES item, transmitted in RTCP and possibly also as an
+ RTP header extension. In cases where multiple media sources have
+ been negotiated for the same RTP session and thus BUNDLE [RFC8843] is
+ used, the MID SDES item will also be sent, similarly to the
+ RtpStreamId.
+
+ Each RTP stream might not be continuously transmitted due to any of
+ the following reasons: temporarily paused using Pause/Resume
+ [RFC7728], sender-side application logic temporarily pausing it, or
+ lack of network resources to transmit this simulcast stream.
+ However, all simulcast streams that have been negotiated have active
+ and maintained SSRCs (at least in regular RTCP reports), even if no
+ RTP packets are currently transmitted. The relation between an RTP
+ stream (SSRC) and a particular simulcast stream is not expected to
+ change, except in exceptional situations such as SSRC collisions. At
+ SSRC changes, the usage of MID and RtpStreamId should enable the
+ receiver to correctly identify the RTP streams even after an SSRC
+ change.
+
+6.2. RTP Middlebox to Receiver
+
+ RTP streams in a multiparty RTP session can be used in multiple
+ different ways when the session utilizes simulcast at least on the
+ media-source-to-middlebox legs. This is to a large degree due to the
+ different RTP middlebox behaviors, but also the needs of the
+ application. This text assumes that the RTP middlebox will select a
+ media source and choose which simulcast stream for that media source
+ to deliver to a specific receiver. In many cases, at most one
+ simulcast stream per media source will be forwarded to a particular
+ receiver at any instant in time, even if the selected simulcast
+ stream may vary. For cases where this does not hold due to
+ application needs, the RTP stream aspects will fall under the
+ middlebox-to-middlebox case (Section 6.3).
+
+ The selection of which simulcast streams to forward towards the
+ receiver is application specific. However, in conferencing
+ applications, active speaker selection is common. In case the number
+ of media sources possible to forward, N, is less than the total
+ number of media sources available in a multimedia session, the
+ current and previous speakers (up to N in total) are often the ones
+ forwarded. To avoid the need for media-specific processing to
+ determine the current speaker(s) in the RTP middlebox, the endpoint
+ providing a media source may include metadata, such as the RTP header
+ extension for client-to-mixer audio level indication [RFC6464].
+
+ The possibilities for stream switching are media type specific, but
+ for media types with significant interframe dependencies in the
+ encoding, like most video coding, the switching needs to be made at
+ suitable switching points in the media stream that breaks or
+ otherwise deals with the dependency structure. Even if switching
+ points can be included periodically, it is common to use mechanisms
+ like Full Intra Requests [RFC5104] to request switching points from
+ the endpoint performing the encoding of the media source.
+
+ Inclusion of the RtpStreamId SDES item for an SSRC in the middlebox-
+ to-receiver direction should only occur when use of RtpStreamId has
+ been negotiated in that direction. It is worth noting that one can
+ signal multiple RtpStreamIds when simulcast signaling indicates only
+ a single simulcast stream, allowing one to use all of the
+ RtpStreamIds as alternatives for that simulcast stream. One reason
+ for including the RtpStreamId in the middlebox-to-receiver direction
+ for an RTP stream is to let the receiver know which restrictions
+ apply to the currently delivered RTP stream. In case the RtpStreamId
+ is negotiated to be used, it is important to remember that the used
+ identifiers will be specific to each signaling session. Even if the
+ central entity can attempt to coordinate, it is likely that the
+ RtpStreamIds need to be translated to the leg-specific values. The
+ below cases will assume that RtpStreamId is not used in the mixer to
+ receiver direction.
+
+6.2.1. Media-Switching Mixer
+
+ This section discusses the behavior in cases where the RTP middlebox
+ behaves like the media-switching mixer in RTP topologies
+ (Section 3.6.2 of [RFC7667]). The fundamental aspect here is that
+ the media sources delivered from the middlebox will be the mixer's
+ conceptual or functional ones. For example, one media source may be
+ the main speaker in high-resolution video, while a number of other
+ media sources are thumbnails of each participant.
+
+ The above results in the RTP stream produced by the mixer being one
+ that switches between a number of received incoming RTP streams for
+ different media sources and in different simulcast versions. The
+ mixer selects the media source to be sent as one of the RTP streams
+ and then selects among the available simulcast streams for the most
+ appropriate one. The selection criteria include available bandwidth
+ on the mixer-to-receiver path and restrictions based on the
+ functional usage of the RTP stream delivered to the receiver. As an
+ example of the latter, it is unnecessary to forward a full HD video
+ to a receiver if the display area is just a thumbnail. Thus,
+ restrictions may exist to not allow some simulcast streams to be
+ forwarded for some of the mixer's media sources.
+
+ This will result in a single RTP stream being used for each of the
+ RTP mixer's media sources. At any point in time, this RTP stream is
+ a selection of one particular RTP stream arriving to the mixer, where
+ the RTP header-field values are rewritten to provide a consistent,
+ single RTP stream. If the RTP mixer doesn't receive any incoming
+ stream matched to this media source, the SSRC will not transmit but
+ be kept alive using RTCP. The SSRC and thus RTP stream for the
+ mixer's media source is expected to be long-term stable. It will
+ only be changed by signaling or other disruptive events. Note that
+ although the above talks about a single RTP stream, there can in some
+ cases be multiple RTP streams carrying the selected simulcast stream
+ for the originating media source, including redundancy or other
+ auxiliary RTP streams.
+
+ The mixer may communicate the identity of the originating media
+ source to the receiver by including the Contributing Source (CSRC)
+ field with the originating media source's SSRC value. Note that due
+ to the possibility that the RTP mixer switches between simulcast
+ versions of the media source, the CSRC value may change, even if the
+ media source is kept the same.
+
+ It is important to note that any MID SDES item from the originating
+ media source needs to be removed and not be associated with the RTP
+ stream's SSRC. That is, there is nothing in the signaling between
+ the mixer and the receiver that is structured around the originating
+ media sources, only the mixer's media sources. If they were
+ associated with the SSRC, the receiver would likely believe that
+ there has been an SSRC collision and the RTP stream is spurious,
+ because it doesn't carry the identifiers used to relate it to the
+ correct context. However, this is not true for CSRC values, as long
+ as they are never used as an SSRC. In these cases, one could provide
+ CNAME and MID as SDES items. A receiver could use this to determine
+ which CSRC values that are associated with the same originating media
+ source.
+
+ If RtpStreamIds are used in the scenario described by this section,
+ it should be noted that the RtpStreamId on a particular SSRC will
+ change based on the actual simulcast stream selected for switching.
+ These RtpStreamId identifiers will be local to this leg's signaling
+ context. In addition, the defined RtpStreamIds and their parameters
+ need to cover all the media sources and simulcast streams received by
+ the RTP mixer that can be switched into this media source, sent by
+ the RTP mixer.
+
+6.2.2. Selective Forwarding Middlebox
+
+ This section discusses the behavior in cases where the RTP middlebox
+ behaves like the Selective Forwarding Middlebox in RTP topologies
+ (Section 3.7 of [RFC7667]). Applications for this type of RTP
+ middlebox result in each originating media source having a
+ corresponding media source on the leg between the middlebox and the
+ receiver. A Selective Forwarding Middlebox (SFM) could go as far as
+ exposing all the simulcast streams for a media source; however, this
+ section will focus on having a single simulcast stream that can
+ contain any of the simulcast formats. This section will assume that
+ the SFM projection mechanism works on the media-source level and maps
+ one of the media source's simulcast streams onto one RTP stream from
+ the SFM to the receiver.
+
+ This usage will result in the individual RTP stream(s) for one media
+ source being able to switch between being active and paused, based on
+ the subset of media sources the SFM wants to provide the receiver for
+ the moment. With SFMs, there exist no reasons to use CSRC to
+ indicate the originating stream, as there is a one-to-one media-
+ source mapping. If the application requires knowing the simulcast
+ version received to function well, then RtpStreamId should be
+ negotiated on the SFM to receiver leg. Which simulcast stream that
+ is being forwarded is not made explicit unless RtpStreamId is used on
+ the leg.
+
+ Any MID SDES items being sent by the SFM to the receiver are only
+ those agreed between the SFM and the receiver, and no MID values from
+ the originating side of the SFM are to be forwarded.
+
+ An SFM could expose corresponding RTP streams for all the media
+ sources and their simulcast streams and then, for any media source
+ that is to be provided, forward one selected simulcast stream.
+ However, this is not recommended, as it would unnecessarily increase
+ the number of RTP streams and require the receiver to timely detect
+ switching between simulcast streams. The above usage requires the
+ same SFM functionality for switching, while avoiding the
+ uncertainties of timely detecting that an RTP stream ends. The
+ benefit would be that the received simulcast stream would be
+ implicitly provided by which RTP stream would be active for a media
+ source. However, using RtpStreamId to make this explicit also
+ exposes which alternative format is used. The conclusion is that
+ using one RTP stream per simulcast stream is unnecessary. The issue
+ with timely detecting end of streams, independent of whether they are
+ stopped temporarily or long term, is that there is no explicit
+ indication that the transmission has intentionally been stopped. The
+ RTCP-based pause and resume mechanism [RFC7728] includes a PAUSED
+ indication that provides the last RTP sequence number transmitted
+ prior to the pause. Due to usage, the timeliness of this solution
+ depends on when delivery using RTCP can occur in relation to the
+ transmission of the last RTP packet. If no explicit information is
+ provided at all, then detection based on nonincreasing RTCP SR field
+ values and timers need to be used to determine pause in RTP packet
+ delivery. As a result, when the last RTP packet arrives (if it
+ arrives), one usually cannot determine that this will be the last.
+ That it was the last is something that one learns later.
+
+6.3. RTP Middlebox to RTP Middlebox
+
+ This relates to the transmission of simulcast streams between RTP
+ middleboxes or other usages where one wants to enable the delivery of
+ multiple simultaneous simulcast streams per media source, but the
+ transmitting entity is not the originating endpoint. For a
+ particular direction between middleboxes A and B, this looks very
+ similar to the originating-to-middlebox case on a media-source basis.
+ However, in this case, there are usually multiple media sources,
+ originating from multiple endpoints. This can create situations
+ where limitations in the number of simultaneously received media
+ streams can arise -- for example, due to limitation in network
+ bandwidth. In this case, a subset of not only the simulcast streams
+ but also media sources can be selected. As a result, individual RTP
+ streams can become paused at any point and later be resumed based on
+ various criteria.
+
+ The MIDs used between A and B are the ones agreed between these two
+ identities in signaling. The RtpStreamId values will also be
+ provided to ensure explicit information about which simulcast stream
+ they are. The RTP-stream-to-MID and -RtpStreamId associations should
+ here be long-term stable.
+
+7. Network Aspects
+
+ Simulcast is in this memo defined as the act of sending multiple
+ alternative encoded streams of the same underlying media source.
+ Transmitting multiple independent streams that originate from the
+ same source could potentially be done in several different ways using
+ RTP. A general discussion on considerations for use of the different
+ RTP multiplexing alternatives can be found in "Guidelines for Using
+ the Multiplexing Features of RTP to Support Multiple Media Streams"
+ [RFC8872]. Discussion and clarification on how to handle multiple
+ streams in an RTP session can be found in [RFC8108].
+
+ The network aspects that are relevant for simulcast are:
+
+ Quality of Service (QoS): When using simulcast, it might be of
+ interest to prioritize a particular simulcast stream, rather than
+ applying equal treatment to all streams. For example, lower-
+ bitrate streams may be prioritized over higher-bitrate streams to
+ minimize congestion or packet losses in the low-bitrate streams.
+ Thus, there is a benefit to using a simulcast solution with good
+ QoS support.
+
+ NAT/FW Traversal (Network Address Translator / Firewall
+ Traversal): Using multiple RTP sessions incurs more cost for NAT/FW
+ traversal unless they can reuse the same transport flow, which can
+ be achieved by multiplexing negotiation using SDP port numbers
+ [RFC8843].
+
+
+7.1. Bitrate Adaptation
+
+ Use of multiple simulcast streams can require a significant amount of
+ network resources. The aggregate bandwidth for all simulcast streams
+ for a media source (and thus SDP media description) is bounded by any
+ SDP "b=" line applicable to that media source. It is assumed that a
+ suitable congestion-control mechanism is used by the application to
+ ensure that it doesn't cause persistent congestion. If the amount of
+ available network resources varies during an RTP session such that it
+ does not match what is negotiated in SDP, the bitrate used by the
+ different simulcast streams may have to be reduced dynamically. When
+ a simulcasting media source uses a single media transport for all of
+ the simulcast streams, it is likely that a joint congestion control
+ across all simulcast streams is used for that media source. What
+ simulcast streams to prioritize when allocating available bitrate
+ among the simulcast streams in such adaptation SHOULD be taken from
+ the simulcast stream order on the "a=simulcast" line and ordering of
+ alternative simulcast formats (Section 5.2). Simulcast streams that
+ have pause/resume capability and that would be given such low bitrate
+ by the adaptation process that they are considered not really useful
+ can be temporarily paused until the limiting condition clears.
+
+8. Limitation
+
+ The chosen approach has a limitation that relates to the use of a
+ single RTP session for all simulcast formats of a media source, which
+ comes from sending all simulcast streams related to a media source
+ under the same SDP media description.
+
+ It is not possible to use different simulcast streams on different
+ media transports, which limits the possibilities for applying
+ different QoS to different simulcast streams. When using unicast,
+ QoS mechanisms based on individual packet marking are feasible, since
+ they do not require separation of simulcast streams into different
+ RTP sessions to apply different QoS.
+
+ It is also not possible to separate different simulcast streams into
+ different multicast groups to allow a multicast receiver to pick the
+ stream it wants, rather than receive all of them. In this case, the
+ only reasonable implementation is to use different RTP sessions for
+ each multicast group so that reporting and other RTCP functions
+ operate as intended. Such simulcast usage in a multicast context is
+ out of scope for the current document and would require additional
+ specification.
+
+9. IANA Considerations
+
+ This document registers a new media-level SDP attribute, "simulcast",
+ in the "att-field (media level only)" registry within the "Session
+ Description Protocol (SDP) Parameters" registry, according to the
+ procedures of [RFC4566] and [RFC8859].
+
+ Contact name, email: The IESG (iesg@ietf.org)
+
+ Attribute name: simulcast
+
+ Long-form attribute name: Simulcast stream description
+
+ Charset dependent: No
+
+ Attribute value: sc-value; see Section 5.1 of RFC 8853.
+
+ Purpose: Signals simulcast capability for a set of RTP streams
+
+ Mux category: NORMAL
+
+10. Security Considerations
+
+ The simulcast capability, configuration attributes, and parameters
+ are vulnerable to attacks in signaling.
+
+ A false inclusion of the "a=simulcast" attribute may result in
+ simultaneous transmission of multiple RTP streams that would
+ otherwise not be generated. The impact is limited by the media
+ description joint bandwidth, shared by all simulcast streams
+ irrespective of their number. However, there may be a large number
+ of unwanted RTP streams that will impact the share of bandwidth
+ allocated for the originally wanted RTP stream.
+
+ A hostile removal of the "a=simulcast" attribute will result in
+ simulcast not being used.
+
+ Integrity protection and source authentication of all SDP signaling,
+ including simulcast attributes, can mitigate the risks of such
+ attacks that attempt to alter signaling.
+
+ Security considerations related to the use of "a=rid" and the
+ RtpStreamId SDES item are covered in [RFC8851] and [RFC8852]. There
+ are no additional security concerns related to their use in this
+ specification.
+
+11. References
+
+11.1. Normative References
+
+ [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119,
+ DOI 10.17487/RFC2119, March 1997,
+ <https://www.rfc-editor.org/info/rfc2119>.
+
+ [RFC3264] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model
+ with Session Description Protocol (SDP)", RFC 3264,
+ DOI 10.17487/RFC3264, June 2002,
+ <https://www.rfc-editor.org/info/rfc3264>.
+
+ [RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V.
+ Jacobson, "RTP: A Transport Protocol for Real-Time
+ Applications", STD 64, RFC 3550, DOI 10.17487/RFC3550,
+ July 2003, <https://www.rfc-editor.org/info/rfc3550>.
+
+ [RFC4566] Handley, M., Jacobson, V., and C. Perkins, "SDP: Session
+ Description Protocol", RFC 4566, DOI 10.17487/RFC4566,
+ July 2006, <https://www.rfc-editor.org/info/rfc4566>.
+
+ [RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax
+ Specifications: ABNF", STD 68, RFC 5234,
+ DOI 10.17487/RFC5234, January 2008,
+ <https://www.rfc-editor.org/info/rfc5234>.
+
+ [RFC7405] Kyzivat, P., "Case-Sensitive String Support in ABNF",
+ RFC 7405, DOI 10.17487/RFC7405, December 2014,
+ <https://www.rfc-editor.org/info/rfc7405>.
+
+ [RFC7728] Burman, B., Akram, A., Even, R., and M. Westerlund, "RTP
+ Stream Pause and Resume", RFC 7728, DOI 10.17487/RFC7728,
+ February 2016, <https://www.rfc-editor.org/info/rfc7728>.
+
+ [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
+ 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
+ May 2017, <https://www.rfc-editor.org/info/rfc8174>.
+
+ [RFC8843] Holmberg, C., Alvestrand, H., and C. Jennings,
+ "Negotiating Media Multiplexing Using the Session
+ Description Protocol (SDP)", RFC 8843,
+ DOI 10.17487/RFC8843, January 2021,
+ <https://www.rfc-editor.org/info/rfc8843>.
+
+ [RFC8851] Roach, A.B., Ed., "RTP Payload Format Restrictions",
+ RFC 8851, DOI 10.17487/RFC8851, January 2021,
+ <https://www.rfc-editor.org/info/rfc8851>.
+
+ [RFC8852] Roach, A.B., Nandakumar, S., and P. Thatcher, "RTP Stream
+ Identifier Source Description (SDES)", RFC 8852,
+ DOI 10.17487/RFC8852, January 2021,
+ <https://www.rfc-editor.org/info/rfc8852>.
+
+ [RFC8859] Nandakumar, S., "A Framework for Session Description
+ Protocol (SDP) Attributes When Multiplexing", RFC 8859,
+ DOI 10.17487/RFC8859, January 2021,
+ <https://www.rfc-editor.org/info/rfc8859>.
+
+11.2. Informative References
+
+ [RFC2198] Perkins, C., Kouvelas, I., Hodson, O., Hardman, V.,
+ Handley, M., Bolot, J.C., Vega-Garcia, A., and S. Fosse-
+ Parisis, "RTP Payload for Redundant Audio Data", RFC 2198,
+ DOI 10.17487/RFC2198, September 1997,
+ <https://www.rfc-editor.org/info/rfc2198>.
+
+ [RFC3389] Zopf, R., "Real-time Transport Protocol (RTP) Payload for
+ Comfort Noise (CN)", RFC 3389, DOI 10.17487/RFC3389,
+ September 2002, <https://www.rfc-editor.org/info/rfc3389>.
+
+ [RFC4588] Rey, J., Leon, D., Miyazaki, A., Varsa, V., and R.
+ Hakenberg, "RTP Retransmission Payload Format", RFC 4588,
+ DOI 10.17487/RFC4588, July 2006,
+ <https://www.rfc-editor.org/info/rfc4588>.
+
+ [RFC4733] Schulzrinne, H. and T. Taylor, "RTP Payload for DTMF
+ Digits, Telephony Tones, and Telephony Signals", RFC 4733,
+ DOI 10.17487/RFC4733, December 2006,
+ <https://www.rfc-editor.org/info/rfc4733>.
+
+ [RFC5104] Wenger, S., Chandra, U., Westerlund, M., and B. Burman,
+ "Codec Control Messages in the RTP Audio-Visual Profile
+ with Feedback (AVPF)", RFC 5104, DOI 10.17487/RFC5104,
+ February 2008, <https://www.rfc-editor.org/info/rfc5104>.
+
+ [RFC5109] Li, A., Ed., "RTP Payload Format for Generic Forward Error
+ Correction", RFC 5109, DOI 10.17487/RFC5109, December
+ 2007, <https://www.rfc-editor.org/info/rfc5109>.
+
+ [RFC5583] Schierl, T. and S. Wenger, "Signaling Media Decoding
+ Dependency in the Session Description Protocol (SDP)",
+ RFC 5583, DOI 10.17487/RFC5583, July 2009,
+ <https://www.rfc-editor.org/info/rfc5583>.
+
+ [RFC6184] Wang, Y.-K., Even, R., Kristensen, T., and R. Jesup, "RTP
+ Payload Format for H.264 Video", RFC 6184,
+ DOI 10.17487/RFC6184, May 2011,
+ <https://www.rfc-editor.org/info/rfc6184>.
+
+ [RFC6190] Wenger, S., Wang, Y.-K., Schierl, T., and A.
+ Eleftheriadis, "RTP Payload Format for Scalable Video
+ Coding", RFC 6190, DOI 10.17487/RFC6190, May 2011,
+ <https://www.rfc-editor.org/info/rfc6190>.
+
+ [RFC6236] Johansson, I. and K. Jung, "Negotiation of Generic Image
+ Attributes in the Session Description Protocol (SDP)",
+ RFC 6236, DOI 10.17487/RFC6236, May 2011,
+ <https://www.rfc-editor.org/info/rfc6236>.
+
+ [RFC6464] Lennox, J., Ed., Ivov, E., and E. Marocco, "A Real-time
+ Transport Protocol (RTP) Header Extension for Client-to-
+ Mixer Audio Level Indication", RFC 6464,
+ DOI 10.17487/RFC6464, December 2011,
+ <https://www.rfc-editor.org/info/rfc6464>.
+
+ [RFC7104] Begen, A., Cai, Y., and H. Ou, "Duplication Grouping
+ Semantics in the Session Description Protocol", RFC 7104,
+ DOI 10.17487/RFC7104, January 2014,
+ <https://www.rfc-editor.org/info/rfc7104>.
+
+ [RFC7656] Lennox, J., Gross, K., Nandakumar, S., Salgueiro, G., and
+ B. Burman, Ed., "A Taxonomy of Semantics and Mechanisms
+ for Real-Time Transport Protocol (RTP) Sources", RFC 7656,
+ DOI 10.17487/RFC7656, November 2015,
+ <https://www.rfc-editor.org/info/rfc7656>.
+
+ [RFC7667] Westerlund, M. and S. Wenger, "RTP Topologies", RFC 7667,
+ DOI 10.17487/RFC7667, November 2015,
+ <https://www.rfc-editor.org/info/rfc7667>.
+
+ [RFC7741] Westin, P., Lundin, H., Glover, M., Uberti, J., and F.
+ Galligan, "RTP Payload Format for VP8 Video", RFC 7741,
+ DOI 10.17487/RFC7741, March 2016,
+ <https://www.rfc-editor.org/info/rfc7741>.
+
+ [RFC7941] Westerlund, M., Burman, B., Even, R., and M. Zanaty, "RTP
+ Header Extension for the RTP Control Protocol (RTCP)
+ Source Description Items", RFC 7941, DOI 10.17487/RFC7941,
+ August 2016, <https://www.rfc-editor.org/info/rfc7941>.
+
+ [RFC8108] Lennox, J., Westerlund, M., Wu, Q., and C. Perkins,
+ "Sending Multiple RTP Streams in a Single RTP Session",
+ RFC 8108, DOI 10.17487/RFC8108, March 2017,
+ <https://www.rfc-editor.org/info/rfc8108>.
+
+ [RFC8627] Zanaty, M., Singh, V., Begen, A., and G. Mandyam, "RTP
+ Payload Format for Flexible Forward Error Correction
+ (FEC)", RFC 8627, DOI 10.17487/RFC8627, July 2019,
+ <https://www.rfc-editor.org/info/rfc8627>.
+
+ [RFC8872] Westerlund, M., Burman, B., Perkins, C., Alvestrand, H.,
+ and R. Even, "Guidelines for Using the Multiplexing
+ Features of RTP to Support Multiple Media Streams",
+ RFC 8872, DOI 10.17487/RFC8872, January 2021,
+ <https://www.rfc-editor.org/info/rfc8872>.
+
+Appendix A. Requirements
+
+ The following requirements are met by the defined solution to support
+ the use cases (Section 3):
+
+ REQ-1: Identification:
+
+ REQ-1.1: It must be possible to identify a set of simulcasted RTP
+ streams as originating from the same media source in SDP
+ signaling.
+
+ REQ-1.2: An RTP endpoint must be capable of identifying the
+ simulcast stream that a received RTP stream is associated with,
+ knowing the content of the SDP signaling.
+
+ REQ-2: Transport usage. The solution must work when using:
+
+ REQ-2.1: Legacy SDP with separate media transports per SDP media
+ description.
+
+ REQ-2.2: Bundled [RFC8843] SDP media descriptions.
+
+ REQ-3: Capability negotiation. The following must be possible:
+
+ REQ-3.1: The sender can express capability of sending simulcast.
+
+ REQ-3.2: The receiver can express capability of receiving
+ simulcast.
+
+ REQ-3.3: The sender can express the maximum number of simulcast
+ streams that can be provided.
+
+ REQ-3.4: The receiver can express the maximum number of simulcast
+ streams that can be received.
+
+ REQ-3.5: The sender can detail the characteristics of the
+ simulcast streams that can be provided.
+
+ REQ-3.6: The receiver can detail the characteristics of the
+ simulcast streams that it prefers to receive.
+
+ REQ-4: Distinguishing features. It must be possible to have
+ different simulcast streams use different codec parameters, as can
+ be expressed by SDP format values and RTP payload types.
+
+ REQ-5: Compatibility. It must be possible to use simulcast in
+ combination with other RTP mechanisms that generate additional RTP
+ streams:
+
+ REQ-5.1: RTP retransmission [RFC4588].
+
+ REQ-5.2: RTP Forward Error Correction [RFC5109].
+
+ REQ-5.3: Related payload types such as audio Comfort Noise and/or
+ DTMF.
+
+ REQ-5.4: A single simulcast stream can consist of multiple RTP
+ streams, to support codecs where a dependent stream is
+ dependent on a set of encoded and dependent streams, each
+ potentially carried in their own RTP stream.
+
+ REQ-6: Interoperability. The solution must be possible to use in:
+
+ REQ-6.1: Interworking with nonsimulcast legacy clients using a
+ single media source per media type.
+
+ REQ-6.2: WebRTC environment with a single media source per SDP
+ media description.
+
+Acknowledgements
+
+ The authors would like to thank Bernard Aboba, Thomas Belling, Roni
+ Even, Adam Roach, Iñaki Baz Castillo, Paul Kyzivat, and Arun
+ Arunachalam for the feedback they provided during the development of
+ this document.
+
+Contributors
+
+ Morgan Lindqvist and Fredrik Jansson, both from Ericsson, have
+ contributed with important material to the first draft versions of
+ this document. Robert Hanton and Cullen Jennings from Cisco, Peter
+ Thatcher from Google, and Adam Roach from Mozilla contributed
+ significantly to subsequent versions.
+
+Authors' Addresses
+
+ Bo Burman
+ Ericsson
+ Gronlandsgatan 31
+ SE-164 60 Stockholm
+ Sweden
+
+ Email: bo.burman@ericsson.com
+
+
+ Magnus Westerlund
+ Ericsson
+ Torshamnsgatan 23
+ SE-164 83 Stockholm
+ Sweden
+
+ Email: magnus.westerlund@ericsson.com
+
+
+ Suhas Nandakumar
+ Cisco
+ 170 West Tasman Drive
+ San Jose, CA 95134
+ United States of America
+
+ Email: snandaku@cisco.com
+
+
+ Mo Zanaty
+ Cisco
+ 170 West Tasman Drive
+ San Jose, CA 95134
+ United States of America
+
+ Email: mzanaty@cisco.com