summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc8872.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/rfc8872.txt
parentea76e11061bda059ae9f9ad130a9895cc85607db (diff)
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc8872.txt')
-rw-r--r--doc/rfc/rfc8872.txt2046
1 files changed, 2046 insertions, 0 deletions
diff --git a/doc/rfc/rfc8872.txt b/doc/rfc/rfc8872.txt
new file mode 100644
index 0000000..326b481
--- /dev/null
+++ b/doc/rfc/rfc8872.txt
@@ -0,0 +1,2046 @@
+
+
+
+
+Internet Engineering Task Force (IETF) M. Westerlund
+Request for Comments: 8872 B. Burman
+Category: Informational Ericsson
+ISSN: 2070-1721 C. Perkins
+ University of Glasgow
+ H. Alvestrand
+ Google
+ R. Even
+ January 2021
+
+
+ Guidelines for Using the Multiplexing Features of RTP to Support
+ Multiple Media Streams
+
+Abstract
+
+ The Real-time Transport Protocol (RTP) is a flexible protocol that
+ can be used in a wide range of applications, networks, and system
+ topologies. That flexibility makes for wide applicability but can
+ complicate the application design process. One particular design
+ question that has received much attention is how to support multiple
+ media streams in RTP. This memo discusses the available options and
+ design trade-offs, and provides guidelines on how to use the
+ multiplexing features of RTP to support multiple media streams.
+
+Status of This Memo
+
+ This document is not an Internet Standards Track specification; it is
+ published for informational purposes.
+
+ 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). Not all documents
+ approved by the IESG are candidates for any level of Internet
+ Standard; see 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/rfc8872.
+
+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. Focus of This Document
+ 3. RTP Multiplexing Overview
+ 3.1. Reasons for Multiplexing and Grouping RTP Streams
+ 3.2. RTP Multiplexing Points
+ 3.2.1. RTP Session
+ 3.2.2. Synchronization Source (SSRC)
+ 3.2.3. Contributing Source (CSRC)
+ 3.2.4. RTP Payload Type
+ 3.3. Issues Related to RTP Topologies
+ 3.4. Issues Related to RTP and RTCP
+ 3.4.1. The RTP Specification
+ 3.4.2. Multiple SSRCs in a Session
+ 3.4.3. Binding Related Sources
+ 3.4.4. Forward Error Correction
+ 4. Considerations for RTP Multiplexing
+ 4.1. Interworking Considerations
+ 4.1.1. Application Interworking
+ 4.1.2. RTP Translator Interworking
+ 4.1.3. Gateway Interworking
+ 4.1.4. Legacy Considerations for Multiple SSRCs
+ 4.2. Network Considerations
+ 4.2.1. Quality of Service
+ 4.2.2. NAT and Firewall Traversal
+ 4.2.3. Multicast
+ 4.3. Security and Key-Management Considerations
+ 4.3.1. Security Context Scope
+ 4.3.2. Key Management for Multi-party Sessions
+ 4.3.3. Complexity Implications
+ 5. RTP Multiplexing Design Choices
+ 5.1. Multiple Media Types in One Session
+ 5.2. Multiple SSRCs of the Same Media Type
+ 5.3. Multiple Sessions for One Media Type
+ 5.4. Single SSRC per Endpoint
+ 5.5. Summary
+ 6. Guidelines
+ 7. IANA Considerations
+ 8. Security Considerations
+ 9. References
+ 9.1. Normative References
+ 9.2. Informative References
+ Appendix A. Dismissing Payload Type Multiplexing
+ Appendix B. Signaling Considerations
+ B.1. Session-Oriented Properties
+ B.2. SDP Prevents Multiple Media Types
+ B.3. Signaling RTP Stream Usage
+ Acknowledgments
+ Contributors
+ Authors' Addresses
+
+1. Introduction
+
+ The Real-time Transport Protocol (RTP) [RFC3550] is a commonly used
+ protocol for real-time media transport. It is a protocol that
+ provides great flexibility and can support a large set of different
+ applications. From the beginning, RTP was designed for multiple
+ participants in a communication session. It supports many topology
+ paradigms and usages, as defined in [RFC7667]. RTP has several
+ multiplexing points designed for different purposes; these points
+ enable support of multiple RTP streams and switching between
+ different encoding or packetization techniques for the media. By
+ using multiple RTP sessions, sets of RTP streams can be structured
+ for efficient processing or identification. Thus, to meet an
+ application's needs, an RTP application designer needs to understand
+ how best to use the RTP session, the RTP stream identifier
+ (synchronization source (SSRC)), and the RTP payload type.
+
+ There has been increased interest in more-advanced usage of RTP. For
+ example, multiple RTP streams can be used when a single endpoint has
+ multiple media sources (like multiple cameras or microphones) from
+ which streams of media need to be sent simultaneously. Consequently,
+ questions are raised regarding the most appropriate RTP usage. The
+ limitations in some implementations, RTP/RTCP extensions, and
+ signaling have also been exposed. This document aims to clarify the
+ usefulness of some functionalities in RTP that, hopefully, will
+ result in future implementations that are more complete.
+
+ The purpose of this document is to provide clear information about
+ the possibilities of RTP when it comes to multiplexing. The RTP
+ application designer needs to understand the implications arising
+ from a particular usage of the RTP multiplexing points. This
+ document provides some guidelines and recommends against some usages
+ as being unsuitable, in general or for particular purposes.
+
+ This document starts with some definitions and then goes into
+ existing RTP functionalities around multiplexing. Both the desired
+ behavior and the implications of a particular behavior depend on
+ which topologies are used; therefore, this topic requires some
+ consideration. We then discuss some choices regarding multiplexing
+ behavior and the impacts of those choices. Some designs of RTP usage
+ are also discussed. Finally, some guidelines and examples are
+ provided.
+
+2. Definitions
+
+2.1. Terminology
+
+ The definitions in Section 3 of [RFC3550] are referenced normatively.
+
+ The taxonomy defined in [RFC7656] is referenced normatively.
+
+ The following terms and abbreviations are used in this document:
+
+ Multi-party:
+ Communication that includes multiple endpoints. In this document,
+ "multi-party" will be used to refer to scenarios where more than
+ two endpoints communicate.
+
+ Multiplexing:
+ An operation that takes multiple entities as input, aggregating
+ them onto some common resource while keeping the individual
+ entities addressable such that they can later be fully and
+ unambiguously separated (demultiplexed) again.
+
+ RTP Receiver:
+ An endpoint or middlebox receiving RTP streams and RTCP messages.
+ It uses at least one SSRC to send RTCP messages. An RTP receiver
+ may also be an RTP sender.
+
+ RTP Sender:
+ An endpoint sending one or more RTP streams but also sending RTCP
+ messages.
+
+ RTP Session Group:
+ One or more RTP sessions that are used together to perform some
+ function. Examples include multiple RTP sessions used to carry
+ different layers of a layered encoding. In an RTP Session Group,
+ CNAMEs are assumed to be valid across all RTP sessions and
+ designate synchronization contexts that can cross RTP sessions;
+ i.e., SSRCs that map to a common CNAME can be assumed to have RTCP
+ Sender Report (SR) timing information derived from a common clock
+ such that they can be synchronized for playout.
+
+ Signaling:
+ The process of configuring endpoints to participate in one or more
+ RTP sessions.
+
+ | Note: The above definitions of "RTP receiver" and "RTP sender"
+ | are consistent with the usage in [RFC3550].
+
+2.2. Focus of This Document
+
+ This document is focused on issues that affect RTP. Thus, issues
+ that involve signaling protocols -- such as whether SIP [RFC3261],
+ Jingle [JINGLE], or some other protocol is in use for session
+ configuration; the particular syntaxes used to define RTP session
+ properties; or the constraints imposed by particular choices in the
+ signaling protocols -- are mentioned only as examples in order to
+ describe the RTP issues more precisely.
+
+ This document assumes that the applications will use RTCP. While
+ there are applications that don't send RTCP, they do not conform to
+ the RTP specification and thus can be regarded as reusing the RTP
+ packet format but not implementing RTP.
+
+3. RTP Multiplexing Overview
+
+3.1. Reasons for Multiplexing and Grouping RTP Streams
+
+ There are several reasons why an endpoint might choose to send
+ multiple media streams. In the discussion below, please keep in mind
+ that the reasons for having multiple RTP streams vary and include,
+ but are not limited to, the following:
+
+ * There might be multiple media sources.
+
+ * Multiple RTP streams might be needed to represent one media
+ source, for example:
+
+ - To carry different layers of a scalable encoding of a media
+ source
+
+ - Alternative encodings during simulcast, using different codecs
+ for the same audio stream
+
+ - Alternative formats during simulcast, multiple resolutions of
+ the same video stream
+
+ * A retransmission stream might repeat some parts of the content of
+ another RTP stream.
+
+ * A Forward Error Correction (FEC) stream might provide material
+ that can be used to repair another RTP stream.
+
+ For each of these reasons, it is necessary to decide whether each
+ additional RTP stream is sent within the same RTP session as the
+ other RTP streams or it is necessary to use additional RTP sessions
+ to group the RTP streams. For a combination of reasons, the suitable
+ choice for one situation might not be the suitable choice for another
+ situation. The choice is easiest when multiplexing multiple media
+ sources of the same media type. However, all reasons warrant
+ discussion and clarification regarding how to deal with them. As the
+ discussion below will show, a single solution does not suit all
+ purposes. To utilize RTP well and as efficiently as possible, both
+ are needed. The real issue is knowing when to create multiple RTP
+ sessions versus when to send multiple RTP streams in a single RTP
+ session.
+
+3.2. RTP Multiplexing Points
+
+ This section describes the multiplexing points present in RTP that
+ can be used to distinguish RTP streams and groups of RTP streams.
+ Figure 1 outlines the process of demultiplexing incoming RTP streams,
+ starting with one or more sockets representing the reception of one
+ or more transport flows, e.g., based on the UDP destination port. It
+ also demultiplexes RTP/RTCP from any other protocols, such as Session
+ Traversal Utilities for NAT (STUN) [RFC5389] and DTLS-SRTP [RFC5764]
+ on the same transport as described in [RFC7983]. The Processing and
+ Buffering (PB) step in Figure 1 terminates RTP/RTCP and prepares the
+ RTP payload for input to the decoder.
+
+ | | |
+ | | | packets
+ +-- v v v
+ | +------------+
+ | | Socket(s) | Transport Protocol Demultiplexing
+ | +------------+
+ | || ||
+ RTP | RTP/ || |+-----> DTLS (SRTP keying, SCTP, etc.)
+ Session | RTCP || +------> STUN (multiplexed using same port)
+ +-- ||
+ +-- ||
+ | ++(split by SSRC)-++---> Identify SSRC collision
+ | || || || ||
+ | (associate with signaling by MID/RID)
+ | vv vv vv vv
+ RTP | +--+ +--+ +--+ +--+ Jitter buffer,
+ Streams | |PB| |PB| |PB| |PB| process RTCP, etc.
+ | +--+ +--+ +--+ +--+
+ +-- | | | |
+ (select decoder based on payload type (PT))
+ +-- | / | /
+ | +-----+ | /
+ | / | |/
+ Payload | v v v
+ Formats | +---+ +---+ +---+
+ | |Dec| |Dec| |Dec| Decoders
+ | +---+ +---+ +---+
+ +--
+
+ Figure 1: RTP Demultiplexing Process
+
+3.2.1. RTP Session
+
+ An RTP session is the highest semantic layer in RTP and represents an
+ association between a group of communicating endpoints. RTP does not
+ contain a session identifier, yet different RTP sessions must be
+ possible to identify both across a set of different endpoints and
+ from the perspective of a single endpoint.
+
+ For RTP session separation across endpoints, the set of participants
+ that form an RTP session is defined as those that share a single SSRC
+ space [RFC3550]. That is, if a group of participants are each aware
+ of the SSRC identifiers belonging to the other participants, then
+ those participants are in a single RTP session. A participant can
+ become aware of an SSRC identifier by receiving an RTP packet
+ containing the identifier in the SSRC field or contributing source
+ (CSRC) list, by receiving an RTCP packet listing it in an SSRC field,
+ or through signaling (e.g., the Session Description Protocol (SDP)
+ [RFC4566] "a=ssrc:" attribute [RFC5576]). Thus, the scope of an RTP
+ session is determined by the participants' network interconnection
+ topology, in combination with RTP and RTCP forwarding strategies
+ deployed by the endpoints and any middleboxes, and by the signaling.
+
+ For RTP session separation within a single endpoint, RTP relies on
+ the underlying transport layer and the signaling to identify RTP
+ sessions in a manner that is meaningful to the application. A single
+ endpoint can have one or more transport flows for the same RTP
+ session, and a single RTP session can span multiple transport-layer
+ flows even if all endpoints use a single transport-layer flow per
+ endpoint for that RTP session. The signaling layer might give RTP
+ sessions an explicit identifier, or the identification might be
+ implicit based on the addresses and ports used. Accordingly, a
+ single RTP session can have multiple associated identifiers, explicit
+ and implicit, belonging to different contexts. For example, when
+ running RTP on top of UDP/IP, an endpoint can identify and delimit an
+ RTP session from other RTP sessions by their UDP source and
+ destination IP addresses and their UDP port numbers. A single RTP
+ session can be using multiple IP/UDP flows for receiving and/or
+ sending RTP packets to other endpoints or middleboxes, even if the
+ endpoint does not have multiple IP addresses. Using multiple IP
+ addresses only makes it more likely that multiple IP/UDP flows will
+ be required. Another example is SDP media descriptions (the "m="
+ line and the subsequent associated lines) that signal the transport
+ flow and RTP session configuration for the endpoint's part of the RTP
+ session. The SDP grouping framework [RFC5888] allows labeling of the
+ media descriptions to be used so that RTP Session Groups can be
+ created. Through the use of "Negotiating Media Multiplexing Using
+ the Session Description Protocol (SDP)" [RFC8843], multiple media
+ descriptions become part of a common RTP session where each media
+ description represents the RTP streams sent or received for a media
+ source.
+
+ RTP makes no normative statements about the relationship between
+ different RTP sessions; however, applications that use more than one
+ RTP session need to understand how the different RTP sessions that
+ they create relate to one another.
+
+3.2.2. Synchronization Source (SSRC)
+
+ An SSRC identifies a source of an RTP stream, or an RTP receiver when
+ sending RTCP. Every endpoint has at least one SSRC identifier, even
+ if it does not send RTP packets. RTP endpoints that are only RTP
+ receivers still send RTCP and use their SSRC identifiers in the RTCP
+ packets they send. An endpoint can have multiple SSRC identifiers if
+ it sends multiple RTP streams. Endpoints that function as both RTP
+ sender and RTP receiver use the same SSRC(s) in both roles.
+
+ The SSRC is a 32-bit identifier. It is present in every RTP and RTCP
+ packet header and in the payload of some RTCP packet types. It can
+ also be present in SDP signaling. Unless presignaled, e.g., using
+ the SDP "a=ssrc:" attribute [RFC5576], the SSRC is chosen at random.
+ It is not dependent on the network address of the endpoint and is
+ intended to be unique within an RTP session. SSRC collisions can
+ occur and are handled as specified in [RFC3550] and [RFC5576],
+ resulting in the SSRC of the colliding RTP streams or receivers
+ changing. An endpoint that changes its network transport address
+ during a session has to choose a new SSRC identifier to avoid being
+ interpreted as a looped source, unless a mechanism providing a
+ virtual transport (such as Interactive Connectivity Establishment
+ (ICE) [RFC8445]) abstracts the changes.
+
+ SSRC identifiers that belong to the same synchronization context
+ (i.e., that represent RTP streams that can be synchronized using
+ information in RTCP SR packets) use identical CNAME chunks in
+ corresponding RTCP source description (SDES) packets. SDP signaling
+ can also be used to provide explicit SSRC grouping [RFC5576].
+
+ In some cases, the same SSRC identifier value is used to relate
+ streams in two different RTP sessions, such as in RTP retransmission
+ [RFC4588]. This is to be avoided, since there is no guarantee that
+ SSRC values are unique across RTP sessions. In the case of RTP
+ retransmission [RFC4588], it is recommended to use explicit binding
+ of the source RTP stream and the redundancy stream, e.g., using the
+ RepairedRtpStreamId RTCP SDES item [RFC8852]. The
+ RepairedRtpStreamId is a rather recent mechanism, so one cannot
+ expect older applications to follow this recommendation.
+
+ Note that the RTP sequence number and RTP timestamp are scoped by the
+ SSRC and are thus specific per RTP stream.
+
+ Different types of entities use an SSRC to identify themselves, as
+ follows:
+
+ * A real media source uses the SSRC to identify a "physical" media
+ source.
+
+ * A conceptual media source uses the SSRC to identify the result of
+ applying some filtering function in a network node -- for example,
+ a filtering function in an RTP mixer that provides the most active
+ speaker based on some criteria, or a mix representing a set of
+ other sources.
+
+ * An RTP receiver uses the SSRC to identify itself as the source of
+ its RTCP reports.
+
+ An endpoint that generates more than one media type, e.g., a
+ conference participant sending both audio and video, need not (and,
+ indeed, should not) use the same SSRC value across RTP sessions.
+ Using RTCP compound packets containing the CNAME SDES item is the
+ designated method for binding an SSRC to a CNAME, effectively cross-
+ correlating SSRCs within and between RTP sessions as coming from the
+ same endpoint. The main property attributed to SSRCs associated with
+ the same CNAME is that they are from a particular synchronization
+ context and can be synchronized at playback.
+
+ An RTP receiver receiving a previously unseen SSRC value will
+ interpret it as a new source. It might in fact be a previously
+ existing source that had to change its SSRC number due to an SSRC
+ conflict. Using the media identification (MID) extension [RFC8843]
+ helps to identify which media source the new SSRC represents, and
+ using the restriction identifier (RID) extension [RFC8851] helps to
+ identify what encoding or redundancy stream it represents, even
+ though the SSRC changed. However, the originator of the previous
+ SSRC ought to have ended the conflicting source by sending an RTCP
+ BYE for it prior to starting to send with the new SSRC, making the
+ new SSRC a new source.
+
+3.2.3. Contributing Source (CSRC)
+
+ The CSRC is not a separate identifier. Rather, an SSRC identifier is
+ listed as a CSRC in the RTP header of a packet generated by an RTP
+ mixer or video Multipoint Control Unit (MCU) / switch, if the
+ corresponding SSRC was in the header of one of the packets that
+ contributed to the output.
+
+ It is not possible, in general, to extract media represented by an
+ individual CSRC, since it is typically the result of a media merge
+ (e.g., mix) operation on the individual media streams corresponding
+ to the CSRC identifiers. The exception is the case where only a
+ single CSRC is indicated, as this represents the forwarding of an RTP
+ stream that might have been modified. The RTP header extension ("A
+ Real-time Transport Protocol (RTP) Header Extension for
+ Mixer-to-Client Audio Level Indication" [RFC6465]) expands on the
+ receiver's information about a packet with a CSRC list. Due to these
+ restrictions, a CSRC will not be considered a fully qualified
+ multiplexing point and will be disregarded in the rest of this
+ document.
+
+3.2.4. RTP Payload Type
+
+ Each RTP stream utilizes one or more RTP payload formats. An RTP
+ payload format describes how the output of a particular media codec
+ is framed and encoded into RTP packets. The payload format is
+ identified by the payload type (PT) field in the RTP packet header.
+ The combination of SSRC and PT therefore identifies a specific RTP
+ stream in a specific encoding format. The format definition can be
+ taken from [RFC3551] for statically allocated payload types but ought
+ to be explicitly defined in signaling, such as SDP, for both static
+ and dynamic payload types. The term "format" here includes those
+ aspects described by out-of-band signaling means; in SDP, the term
+ "format" includes media type, RTP timestamp sampling rate, codec,
+ codec configuration, payload format configurations, and various
+ robustness mechanisms such as redundant encodings [RFC2198].
+
+ The RTP payload type is scoped by the sending endpoint within an RTP
+ session. PT has the same meaning across all RTP streams in an RTP
+ session. All SSRCs sent from a single endpoint share the same
+ payload type definitions. The RTP payload type is designed such that
+ only a single payload type is valid at any instant in time in the RTP
+ stream's timestamp timeline, effectively time-multiplexing different
+ payload types if any change occurs. The payload type can change on a
+ per-packet basis for an SSRC -- for example, a speech codec making
+ use of generic comfort noise [RFC3389]. If there is a true need to
+ send multiple payload types for the same SSRC that are valid for the
+ same instant, then redundant encodings [RFC2198] can be used.
+ Several additional constraints, other than those mentioned above,
+ need to be met to enable this usage, one of which is that the
+ combined payload sizes of the different payload types ought not
+ exceed the transport MTU.
+
+ Other aspects of using the RTP payload format are described in "How
+ to Write an RTP Payload Format" [RFC8088].
+
+ The payload type is not a multiplexing point at the RTP layer (see
+ Appendix A for a detailed discussion of why using the payload type as
+ an RTP multiplexing point does not work). The RTP payload type is,
+ however, used to determine how to consume and decode an RTP stream.
+ The RTP payload type number is sometimes used to associate an RTP
+ stream with the signaling, which in general requires that unique RTP
+ payload type numbers be used in each context. Using MID, e.g., when
+ bundling "m=" sections [RFC8843], can replace the payload type as a
+ signaling association, and unique RTP payload types are then no
+ longer required for that purpose.
+
+3.3. Issues Related to RTP Topologies
+
+ The impact of how RTP multiplexing is performed will in general vary
+ with how the RTP session participants are interconnected, as
+ described in "RTP Topologies" [RFC7667].
+
+ Even the most basic use case -- "Topo-Point-to-Point" as described in
+ [RFC7667] -- raises a number of considerations, which are discussed
+ in detail in the following sections. They range over such aspects as
+ the following:
+
+ * Does my communication peer support RTP as defined with multiple
+ SSRCs per RTP session?
+
+ * Do I need network differentiation in the form of QoS
+ (Section 4.2.1)?
+
+ * Can the application more easily process and handle the media
+ streams if they are in different RTP sessions?
+
+ * Do I need to use additional RTP streams for RTP retransmission or
+ FEC?
+
+ For some point-to-multipoint topologies (e.g., Topo-ASM and Topo-SSM
+ [RFC7667]), multicast is used to interconnect the session
+ participants. Special considerations (documented in Section 4.2.3)
+ are then needed, as multicast is a one-to-many distribution system.
+
+ Sometimes, an RTP communication session can end up in a situation
+ where the communicating peers are not compatible, for various
+ reasons:
+
+ * No common media codec for a media type, thus requiring
+ transcoding.
+
+ * Different support for multiple RTP streams and RTP sessions.
+
+ * Usage of different media transport protocols (i.e., one peer uses
+ RTP, but the other peer uses a different transport protocol).
+
+ * Usage of different transport protocols, e.g., UDP, the Datagram
+ Congestion Control Protocol (DCCP), or TCP.
+
+ * Different security solutions (e.g., IPsec, TLS, DTLS, or the
+ Secure Real-time Transport Protocol (SRTP)) with different keying
+ mechanisms.
+
+ These compatibility issues can often be resolved by the inclusion of
+ a translator between the two peers -- the Topo-PtP-Translator, as
+ described in [RFC7667]. The translator's main purpose is to make the
+ peers look compatible to each other. There can also be reasons other
+ than compatibility for inserting a translator in the form of a
+ middlebox or gateway -- for example, a need to monitor the RTP
+ streams. Beware that changing the stream transport characteristics
+ in the translator can require a thorough understanding of aspects
+ ranging from congestion control and media-level adaptations to
+ application-layer semantics.
+
+ Within the uses enabled by the RTP standard, the point-to-point
+ topology can contain one or more RTP sessions with one or more media
+ sources per session, each having one or more RTP streams per media
+ source.
+
+3.4. Issues Related to RTP and RTCP
+
+ Using multiple RTP streams is a well-supported feature of RTP.
+ However, for most implementers or people writing RTP/RTCP
+ applications or extensions attempting to apply multiple streams, it
+ can be unclear when it is most appropriate to add an additional RTP
+ stream in an existing RTP session and when it is better to use
+ multiple RTP sessions. This section discusses the various
+ considerations that need to be taken into account.
+
+3.4.1. The RTP Specification
+
+ RFC 3550 contains some recommendations and a numbered list
+ (Section 5.2 of [RFC3550]) of five arguments regarding different
+ aspects of RTP multiplexing. Please review Section 5.2 of [RFC3550].
+ Five important aspects are quoted below.
+
+ 1. | If, say, two audio streams shared the same RTP session and the
+ | same SSRC value, and one were to change encodings and thus
+ | acquire a different RTP payload type, there would be no
+ | general way of identifying which stream had changed encodings.
+
+ This argument advocates the use of different SSRCs for each
+ individual RTP stream, as this is fundamental to RTP operation.
+
+ 2. | An SSRC is defined to identify a single timing and sequence
+ | number space. Interleaving multiple payload types would
+ | require different timing spaces if the media clock rates
+ | differ and would require different sequence number spaces to
+ | tell which payload type suffered packet loss.
+
+ This argument advocates against demultiplexing RTP streams within
+ a session based only on their RTP payload type numbers; it still
+ stands, as can be seen by the extensive list of issues discussed
+ in Appendix A.
+
+ 3. | The RTCP sender and receiver reports (see Section 6.4) can
+ | only describe one timing and sequence number space per SSRC
+ | and do not carry a payload type field.
+
+ This argument is yet another argument against payload type
+ multiplexing.
+
+ 4. | An RTP mixer would not be able to combine interleaved streams
+ | of incompatible media into one stream.
+
+ This argument advocates against multiplexing RTP packets that
+ require different handling into the same session. In most cases,
+ the RTP mixer must embed application logic to handle streams; the
+ separation of streams according to stream type is just another
+ piece of application logic, which might or might not be
+ appropriate for a particular application. One type of
+ application that can mix different media sources blindly is the
+ audio-only telephone bridge, although the ability to do that
+ comes from the well-defined scenario that is aided by the use of
+ a single media type, even though individual streams may use
+ incompatible codec types; most other types of applications need
+ application-specific logic to perform the mix correctly.
+
+ 5. | Carrying multiple media in one RTP session precludes: the use
+ | of different network paths or network resource allocations if
+ | appropriate; reception of a subset of the media if desired,
+ | for example just audio if video would exceed the available
+ | bandwidth; and receiver implementations that use separate
+ | processes for the different media, whereas using separate RTP
+ | sessions permits either single- or multiple-process
+ | implementations.
+
+ This argument discusses network aspects that are described in
+ Section 4.2. It also goes into aspects of implementation, like
+ split component terminals (see Section 3.10 of [RFC7667]) --
+ endpoints where different processes or interconnected devices
+ handle different aspects of the whole multimedia session.
+
+ To summarize, RFC 3550's view on multiplexing is to use unique SSRCs
+ for anything that is its own media/packet stream and use different
+ RTP sessions for media streams that don't share a media type. This
+ document supports the first point; it is very valid. The latter
+ needs further discussion, as imposing a single solution on all usages
+ of RTP is inappropriate. "Sending Multiple Types of Media in a
+ Single RTP Session" [RFC8860] updates RFC 3550 to allow multiple
+ media types in an RTP session and provides a detailed analysis of the
+ potential benefits and issues related to having multiple media types
+ in the same RTP session. Thus, [RFC8860] provides a wider scope for
+ an RTP session and considers multiple media types in one RTP session
+ as a possible choice for the RTP application designer.
+
+3.4.2. Multiple SSRCs in a Session
+
+ Using multiple SSRCs at one endpoint in an RTP session requires that
+ some unclear aspects of the RTP specification be resolved. These
+ items could potentially lead to some interoperability issues as well
+ as some potential significant inefficiencies, as further discussed in
+ "Sending Multiple RTP Streams in a Single RTP Session" [RFC8108]. An
+ RTP application designer should consider these issues and the
+ application's possible impact caused by a lack of appropriate RTP
+ handling or optimization in the peer endpoints.
+
+ Using multiple RTP sessions can potentially mitigate application
+ issues caused by multiple SSRCs in an RTP session.
+
+3.4.3. Binding Related Sources
+
+ A common problem in a number of various RTP extensions has been how
+ to bind related RTP streams together. This issue is common to both
+ using additional SSRCs and multiple RTP sessions.
+
+ The solutions can be divided into a few groups:
+
+ * RTP/RTCP based
+
+ * Signaling based, e.g., SDP
+
+ * Grouping related RTP sessions
+
+ * Grouping SSRCs within an RTP session
+
+ Most solutions are explicit, but some implicit methods have also been
+ applied to the problem.
+
+ The SDP-based signaling solutions are:
+
+ SDP media description grouping:
+ The SDP grouping framework [RFC5888] uses various semantics to
+ group any number of media descriptions. SDP media description
+ grouping has primarily been used to group RTP sessions, but in
+ combination with [RFC8843], it can also group multiple media
+ descriptions within a single RTP session.
+
+ SDP media multiplexing:
+ "Negotiating Media Multiplexing Using the Session Description
+ Protocol (SDP)" [RFC8843] uses information taken from both SDP and
+ RTCP to associate RTP streams to SDP media descriptions. This
+ allows both SDP and RTCP to group RTP streams belonging to an SDP
+ media description and group multiple SDP media descriptions into a
+ single RTP session.
+
+ SDP SSRC grouping:
+ "Source-Specific Media Attributes in the Session Description
+ Protocol (SDP)" [RFC5576] includes a solution for grouping SSRCs
+ in the same way that the grouping framework groups media
+ descriptions.
+
+ The above grouping constructs support many use cases. Those
+ solutions have shortcomings in cases where the session's dynamic
+ properties are such that it is difficult or a drain on resources to
+ keep the list of related SSRCs up to date.
+
+ One RTP/RTCP-based grouping solution is to use the RTCP SDES CNAME to
+ bind related RTP streams to an endpoint or a synchronization context.
+ For applications with a single RTP stream per type (media, source, or
+ redundancy stream), the CNAME is sufficient for that purpose,
+ independent of whether one or more RTP sessions are used. However,
+ some applications choose not to use a CNAME because of perceived
+ complexity or a desire not to implement RTCP and instead use the same
+ SSRC value to bind related RTP streams across multiple RTP sessions.
+ RTP retransmission [RFC4588], when configured to use multiple RTP
+ sessions, and generic FEC [RFC5109] both use the CNAME method to
+ relate the RTP streams, which may work but might have some downsides
+ in RTP sessions with many participating SSRCs. It is not recommended
+ to use identical SSRC values across RTP sessions to relate RTP
+ streams; when an SSRC collision occurs, this will force a change of
+ that SSRC in all RTP sessions and will thus resynchronize all of the
+ streams instead of only the single media stream experiencing the
+ collision.
+
+ Another method for implicitly binding SSRCs is used by RTP
+ retransmission [RFC4588] when using the same RTP session as the
+ source RTP stream for retransmissions. A receiver that is missing a
+ packet issues an RTP retransmission request and then awaits a new
+ SSRC carrying the RTP retransmission payload, where that SSRC is from
+ the same CNAME. This limits a requester to having only one
+ outstanding retransmission request on any new SSRCs per endpoint.
+
+ "RTP Payload Format Restrictions" [RFC8851] provides an RTP/RTCP-
+ based mechanism to unambiguously identify the RTP streams within an
+ RTP session and restrict the streams' payload format parameters in a
+ codec-agnostic way beyond what is provided with the regular payload
+ types. The mapping is done by specifying an "a=rid" value in the SDP
+ offer/answer signaling and having the corresponding RtpStreamId value
+ as an SDES item and an RTP header extension [RFC8852]. The RID
+ solution also includes a solution for binding redundancy RTP streams
+ to their original source RTP streams, given that those streams use
+ RID identifiers. The redundancy stream uses the RepairedRtpStreamId
+ SDES item and RTP header extension to declare the RtpStreamId value
+ of the source stream to create the binding.
+
+ Experience has shown that an explicit binding between the RTP
+ streams, agnostic of SSRC values, behaves well. That way, solutions
+ using multiple RTP streams in a single RTP session and in multiple
+ RTP sessions will use the same type of binding.
+
+3.4.4. Forward Error Correction
+
+ There exist a number of FEC-based schemes designed to mitigate packet
+ loss in the original streams. Most of the FEC schemes protect a
+ single source flow. This protection is achieved by transmitting a
+ certain amount of redundant information that is encoded such that it
+ can repair one or more instances of packet loss over the set of
+ packets the redundant information protects. This sequence of
+ redundant information needs to be transmitted as its own media stream
+ or, in some cases, instead of the original media stream. Thus, many
+ of these schemes create a need for binding related flows, as
+ discussed above. Looking at the history of these schemes, there are
+ schemes using multiple SSRCs and schemes using multiple RTP sessions,
+ and some schemes that support both modes of operation.
+
+ Using multiple RTP sessions supports the case where some set of
+ receivers might not be able to utilize the FEC information. By
+ placing it in a separate RTP session and if separating RTP sessions
+ at the transport level, FEC can easily be ignored at the transport
+ level, without considering any RTP-layer information.
+
+ In usages involving multicast, sending FEC information in a separate
+ multicast group allows for similar flexibility. This is especially
+ useful when receivers see heterogeneous packet loss rates. A
+ receiver can decide, based on measurement of experienced packet loss
+ rates, whether to join a multicast group with suitable FEC data
+ repair capabilities.
+
+4. Considerations for RTP Multiplexing
+
+4.1. Interworking Considerations
+
+ There are several different kinds of interworking, and this section
+ discusses two: interworking directly between different applications
+ and the interworking of applications through an RTP translator. The
+ discussion includes the implications of potentially different RTP
+ multiplexing point choices and limitations that have to be considered
+ when working with some legacy applications.
+
+4.1.1. Application Interworking
+
+ It is not uncommon that applications or services of similar but not
+ identical usage, especially those intended for interactive
+ communication, encounter a situation where one wants to interconnect
+ two or more of these applications.
+
+ In these cases, one ends up in a situation where one might use a
+ gateway to interconnect applications. This gateway must then either
+ change the multiplexing structure or adhere to the respective
+ limitations in each application.
+
+ There are two fundamental approaches to building a gateway: using RTP
+ translator interworking (RTP bridging), where the gateway acts as an
+ RTP translator with the two interconnected applications being members
+ of the same RTP session; or using gateway interworking
+ (Section 4.1.3) with RTP termination, where there are independent RTP
+ sessions between each interconnected application and the gateway.
+
+ For interworking to be feasible, any security solution in use needs
+ to be compatible and capable of exchanging keys with either the peer
+ or the gateway under the trust model being used. Secondly, the
+ applications need to use media streams in a way that makes sense in
+ both applications.
+
+4.1.2. RTP Translator Interworking
+
+ From an RTP perspective, the RTP translator approach could work if
+ all the applications are using the same codecs with the same payload
+ types, have made the same multiplexing choices, and have the same
+ capabilities regarding the number of simultaneous RTP streams
+ combined with the same set of RTP/RTCP extensions being supported.
+ Unfortunately, this might not always be true.
+
+ When a gateway is implemented via an RTP translator, an important
+ consideration is if the two applications being interconnected need to
+ use the same approach to multiplexing. If one side is using RTP
+ session multiplexing and the other is using SSRC multiplexing with
+ BUNDLE [RFC8843], it may be possible for the RTP translator to map
+ the RTP streams between both sides using some method, e.g., based on
+ the number and order of SDP "m=" lines from each side. There are
+ also challenges related to SSRC collision handling, since, unless
+ SSRC translation is applied on the RTP translator, there may be a
+ collision on the SSRC multiplexing side that the RTP session
+ multiplexing side will not be aware of. Furthermore, if one of the
+ applications is capable of working in several modes (such as being
+ able to use additional RTP streams in one RTP session or multiple RTP
+ sessions at will) and the other one is not, successful
+ interconnection depends on locking the more flexible application into
+ the operating mode where interconnection can be successful, even if
+ none of the participants are using the less flexible application when
+ the RTP sessions are being created.
+
+4.1.3. Gateway Interworking
+
+ When one terminates RTP sessions at the gateway, there are certain
+ tasks that the gateway has to carry out:
+
+ * Generating appropriate RTCP reports for all RTP streams (possibly
+ based on incoming RTCP reports) originating from SSRCs controlled
+ by the gateway.
+
+ * Handling SSRC collision resolution in each application's RTP
+ sessions.
+
+ * Signaling, choosing, and policing appropriate bitrates for each
+ session.
+
+ For applications that use any security mechanism, e.g., in the form
+ of SRTP, the gateway needs to be able to decrypt and verify source
+ integrity of the incoming packets and then re-encrypt, integrity
+ protect, and sign the packets as the peer in the other application's
+ security context. This is necessary even if all that's needed is a
+ simple remapping of SSRC numbers. If this is done, the gateway also
+ needs to be a member of the security contexts of both sides and thus
+ a trusted entity.
+
+ The gateway might also need to apply transcoding (for incompatible
+ codec types), media-level adaptations that cannot be solved through
+ media negotiation (such as rescaling for incompatible video size
+ requirements), suppression of content that is known not to be handled
+ in the destination application, or the addition or removal of
+ redundancy coding or scalability layers to fit the needs of the
+ destination domain.
+
+ From the above, we can see that the gateway needs to have an intimate
+ knowledge of the application requirements; a gateway is by its nature
+ application specific and not a commodity product.
+
+ These gateways might therefore potentially block application
+ evolution by blocking RTP and RTCP extensions that the applications
+ have been extended with but that are unknown to the gateway.
+
+ If one uses a security mechanism like SRTP, the gateway and the
+ necessary trust in it by the peers pose an additional risk to
+ communication security. The gateway also incurs additional
+ complexities in the form of the decrypt-encrypt cycles needed for
+ each forwarded packet. SRTP, due to its keying structure, also
+ requires that each RTP session need different master keys, as the use
+ of the same key in two RTP sessions can, for some ciphers, result in
+ a reuse of a one-time pad that completely breaks the confidentiality
+ of the packets.
+
+4.1.4. Legacy Considerations for Multiple SSRCs
+
+ Historically, the most common RTP use cases have been point-to-point
+ Voice over IP (VoIP) or streaming applications, commonly with no more
+ than one media source per endpoint and media type (typically audio or
+ video). Even in conferencing applications, especially voice-only,
+ the conference focus or bridge provides to each participant a single
+ stream containing a mix of the other participants. It is also common
+ to have individual RTP sessions between each endpoint and the RTP
+ mixer, meaning that the mixer functions as an RTP-terminating
+ gateway.
+
+ Applications and systems that aren't updated to handle multiple
+ streams following these recommendations can have issues with
+ participating in RTP sessions containing multiple SSRCs within a
+ single session, such as:
+
+ 1. The need to handle more than one stream simultaneously rather
+ than replacing an already-existing stream with a new one.
+
+ 2. Being capable of decoding multiple streams simultaneously.
+
+ 3. Being capable of rendering multiple streams simultaneously.
+
+ This indicates that gateways attempting to interconnect to this class
+ of devices have to make sure that only one RTP stream of each media
+ type gets delivered to the endpoint if it's expecting only one and
+ that the multiplexing format is what the device expects. It is
+ highly unlikely that RTP translator-based interworking can be made to
+ function successfully in such a context.
+
+4.2. Network Considerations
+
+ The RTP implementer needs to consider that the RTP multiplexing
+ choice also impacts network-level mechanisms.
+
+4.2.1. Quality of Service
+
+ QoS mechanisms are either flow based or packet marking based. RSVP
+ [RFC2205] is an example of a flow-based mechanism, while Diffserv
+ [RFC2474] is an example of a packet-marking-based mechanism.
+
+ For a flow-based scheme, additional SSRCs will receive the same QoS
+ as all other RTP streams being part of the same 5-tuple (protocol,
+ source address, destination address, source port, destination port),
+ which is the most common selector for flow-based QoS.
+
+ For a packet-marking-based scheme, the method of multiplexing will
+ not affect the possibility of using QoS. Different Differentiated
+ Services Code Points (DSCPs) can be assigned to different packets
+ within a transport flow (5-tuple) as well as within an RTP stream,
+ assuming the usage of UDP or other transport protocols that do not
+ have issues with packet reordering within the transport flow
+ (5-tuple). To avoid packet-reordering issues, packets belonging to
+ the same RTP flow should limit their use of DSCPs to packets whose
+ corresponding Per-Hop Behavior (PHB) do not enable reordering. If
+ the transport protocol being used assumes in-order delivery of
+ packets (e.g., TCP and the Stream Control Transmission Protocol
+ (SCTP)), then a single DSCP should be used. For more discussion on
+ this topic, see [RFC7657].
+
+ The method for assigning marking to packets can impact what number of
+ RTP sessions to choose. If this marking is done using a network
+ ingress function, it can have issues discriminating the different RTP
+ streams. The network API on the endpoint also needs to be capable of
+ setting the marking on a per-packet basis to reach full
+ functionality.
+
+4.2.2. NAT and Firewall Traversal
+
+ In today's networks, there exist a large number of middleboxes.
+ Those that normally have the most impact on RTP are Network Address
+ Translators (NATs) and Firewalls (FWs).
+
+ Below, we analyze and comment on the impact of requiring more
+ underlying transport flows in the presence of NATs and FWs:
+
+ Endpoint Port Consumption:
+ A given IP address only has 65536 available local ports per
+ transport protocol for all consumers of ports that exist on the
+ machine. This is normally never an issue for an end-user machine.
+ It can become an issue for servers that handle a large number of
+ simultaneous streams. However, if the application uses ICE to
+ authenticate STUN requests, a server can serve multiple endpoints
+ from the same local port and use the whole 5-tuple (source and
+ destination address, source and destination port, protocol) as the
+ identifier of flows after having securely bound them to the remote
+ endpoint address using the STUN request. In theory, the minimum
+ number of media server ports needed is the maximum number of
+ simultaneous RTP sessions a single endpoint can use. In practice,
+ implementations will probably benefit from using more server ports
+ to simplify implementation or avoid performance bottlenecks.
+
+ NAT State:
+ If an endpoint sits behind a NAT, each flow it generates to an
+ external address will result in a state that has to be kept in the
+ NAT. That state is a limited resource. In home or Small
+ Office/Home Office (SOHO) NATs, the most limited resource is
+ memory or processing. For large-scale NATs serving many internal
+ endpoints, available external ports are likely the scarce
+ resource. Port limitations are primarily a problem for larger
+ centralized NATs where endpoint-independent mapping requires each
+ flow to use one port for the external IP address. This affects
+ the maximum number of internal users per external IP address.
+ However, as a comparison, a real-time video conference session
+ with audio and video likely uses less than 10 UDP flows, compared
+ to certain web applications that can use 100+ TCP flows to various
+ servers from a single browser instance.
+
+ Extra Delay Added by NAT Traversal:
+ Performing the NAT/FW traversal takes a certain amount of time for
+ each flow. The best-case scenario for additional NAT/FW traversal
+ time after finding the first valid candidate pair following the
+ specified ICE procedures is 1.5*RTT + Ta*(Additional_Flows-1),
+ where Ta is the pacing timer. That assumes a message in one
+ direction, immediately followed by a return message in the
+ opposite direction to confirm reachability. It isn't more,
+ because ICE first finds one candidate pair that works, prior to
+ attempting to establish multiple flows. Thus, there is no extra
+ time until one has found a working candidate pair. Based on that
+ working pair, the extra time is needed to establish the additional
+ flows (two or three, in most cases) in parallel. However, packet
+ loss causes extra delays of at least 500 ms (the minimal
+ retransmission timer for ICE).
+
+ NAT Traversal Failure Rate:
+ Due to the need to establish more than a single flow through the
+ NAT, there is some risk that establishing the first flow will
+ succeed but one or more of the additional flows will fail. The
+ risk of this happening is hard to quantify but should be fairly
+ low, as one flow from the same interfaces has just been
+ successfully established. Thus, only such rare events as NAT
+ resource overload, selecting particular port numbers that are
+ filtered, etc., ought to be reasons for failure.
+
+ Deep Packet Inspection and Multiple Streams:
+ FWs differ in how deeply they inspect packets. Previous
+ experience using FWs and Session Border Gateways (SBGs) with RTP
+ shows that there is a significant risk that the FWs and SBGs will
+ reject RTP sessions that use multiple SSRCs.
+
+ Using additional RTP streams in the same RTP session and transport
+ flow does not introduce any additional NAT traversal complexities per
+ RTP stream. This can be compared with (normally) one or two
+ additional transport flows per RTP session when using multiple RTP
+ sessions. Additional lower-layer transport flows will be needed,
+ unless an explicit demultiplexing layer is added between RTP and the
+ transport protocol. At the time of this writing, no such mechanism
+ was defined.
+
+4.2.3. Multicast
+
+ Multicast groups provide a powerful tool for a number of real-time
+ applications, especially those that desire broadcast-like behaviors
+ with one endpoint transmitting to a large number of receivers, like
+ in IPTV. An RTP/RTCP extension to better support Source-Specific
+ Multicast (SSM) [RFC5760] is also available. Many-to-many
+ communication, which RTP [RFC3550] was originally built to support,
+ has several limitations in common with multicast.
+
+ One limitation is that, for any group, sender-side adaptations with
+ the intent to suit all receivers would have to adapt to the most
+ limited receiver experiencing the worst conditions among the group
+ participants, which imposes degradation for all participants. For
+ broadcast-type applications with a large number of receivers, this is
+ not acceptable. Instead, various receiver-based solutions are
+ employed to ensure that the receivers achieve the best possible
+ performance. By using scalable encoding and placing each scalability
+ layer in a different multicast group, the receiver can control the
+ amount of traffic it receives. To have each scalability layer in a
+ different multicast group, one RTP session per multicast group is
+ used.
+
+ In addition, the transport flow considerations in multicast are a bit
+ different from unicast; NATs with port translation are not useful in
+ the multicast environment, meaning that the entire port range of each
+ multicast address is available for distinguishing between RTP
+ sessions.
+
+ Thus, when using broadcast applications it appears easiest and most
+ straightforward to use multiple RTP sessions for sending different
+ media flows used for adapting to network conditions. It is also
+ common that streams improving transport robustness are sent in their
+ own multicast group to allow for interworking with legacy
+ applications or to support different levels of protection.
+
+ Many-to-many applications have different needs, and the most
+ appropriate multiplexing choice will depend on how the actual
+ application is realized. Multicast applications that are capable of
+ using sender-side congestion control can avoid the use of multiple
+ multicast sessions and RTP sessions that result from the use of
+ receiver-side congestion control.
+
+ The properties of a broadcast application using RTP multicast are as
+ follows:
+
+ 1. The application uses a group of RTP sessions -- not just one.
+ Each endpoint will need to be a member of a number of RTP
+ sessions in order to perform well.
+
+ 2. Within each RTP session, the number of RTP receivers is likely to
+ be much larger than the number of RTP senders.
+
+ 3. The application needs signaling functions to identify the
+ relationships between RTP sessions.
+
+ 4. The application needs signaling or RTP/RTCP functions to identify
+ the relationships between SSRCs in different RTP sessions when
+ more complex relations than those that can be expressed by the
+ CNAME exist.
+
+ Both broadcast and many-to-many multicast applications share a
+ signaling requirement; all of the participants need the same RTP and
+ payload type configuration. Otherwise, A could, for example, be
+ using payload type 97 as the video codec H.264 while B thinks it is
+ MPEG-2. SDP offer/answer [RFC3264] is not appropriate for ensuring
+ this property in a broadcast/multicast context. The signaling
+ aspects of broadcast/multicast are not explored further in this memo.
+
+ Security solutions for this type of group communication are also
+ challenging. First, the key-management mechanism and the security
+ protocol need to support group communication. Second, source
+ authentication requires special solutions. For more discussion on
+ this topic, please review "Options for Securing RTP Sessions"
+ [RFC7201].
+
+4.3. Security and Key-Management Considerations
+
+ When dealing with point-to-point two-member RTP sessions only, there
+ are few security issues that are relevant to the choice of having one
+ RTP session or multiple RTP sessions. However, there are a few
+ aspects of multi-party sessions that might warrant consideration.
+ For general information regarding possible methods of securing RTP,
+ please review [RFC7201].
+
+4.3.1. Security Context Scope
+
+ When using SRTP [RFC3711], the security context scope is important
+ and can be a necessary differentiation in some applications. As
+ SRTP's crypto suites are (so far) built around symmetric keys, the
+ receiver will need to have the same key as the sender. As a result,
+ no one in a multi-party session can be certain that a received packet
+ was really sent by the claimed sender and not by another party having
+ access to the key. The single SRTP algorithm not having this
+ property is Timed Efficient Stream Loss-Tolerant Authentication
+ (TESLA) source authentication [RFC4383]. However, TESLA adds delay
+ to achieve source authentication. In most cases, symmetric ciphers
+ provide sufficient security properties, but in a few cases they can
+ create issues.
+
+ The first case is when someone leaves a multi-party session and one
+ wants to ensure that the party that left can no longer access the RTP
+ streams. This requires that everyone rekey without disclosing the
+ new keys to the excluded party.
+
+ A second case is when security is used as an enforcing mechanism for
+ stream access differentiation between different receivers. Take, for
+ example, a scalable layer or a high-quality simulcast version that
+ only users paying a premium are allowed to access. The mechanism
+ preventing a receiver from getting the high-quality stream can be
+ based on the stream being encrypted with a key that users can't
+ access without paying a premium, using the key-management mechanism
+ to limit access to the key.
+
+ As specified in [RFC3711], SRTP uses unique keys per SSRC; however,
+ the original assumption was a single-session master key from which
+ SSRC-specific RTP and RTCP keys were derived. However, that
+ assumption was proven incorrect, as the application usage and the
+ developed key-management mechanisms have chosen many different
+ methods for ensuring unique keys per SSRC. The key-management
+ functions have different abilities to establish different sets of
+ keys, normally on a per-endpoint basis. For example, DTLS-SRTP
+ [RFC5764] and Security Descriptions [RFC4568] establish different
+ keys for outgoing and incoming traffic from an endpoint. This key
+ usage has to be written into the cryptographic context, possibly
+ associated with different SSRCs. Thus, limitations do exist,
+ depending on the chosen key-management method and due to the
+ integration of particular implementations of the key-management
+ method and SRTP.
+
+4.3.2. Key Management for Multi-party Sessions
+
+ The capabilities of the key-management method combined with the RTP
+ multiplexing choices affect the resulting security properties,
+ control over the secured media, and who has access to it.
+
+ Multi-party sessions contain at least one RTP stream from each active
+ participant. Depending on the multi-party topology [RFC7667], each
+ participant can both send and receive multiple RTP streams.
+ Transport translator-based sessions (Topo-Trn-Translator) and
+ multicast sessions (Topo-ASM) can use neither Security Descriptions
+ [RFC4568] nor DTLS-SRTP [RFC5764] without an extension, because each
+ endpoint provides its own set of keys. In centralized conferences,
+ the signaling counterpart is a conference server, and the transport
+ translator is the media-plane unicast counterpart (to which DTLS
+ messages would be sent). Thus, an extension like Encrypted Key
+ Transport [RFC8870] or a solution based on Multimedia Internet KEYing
+ (MIKEY) [RFC3830] that allows for keying all session participants
+ with the same master key is needed.
+
+ Privacy-Enhanced RTP Conferencing (PERC) also enables a different
+ trust model with semi-trusted media-switching RTP middleboxes
+ [RFC8871].
+
+4.3.3. Complexity Implications
+
+ There can be complex interactions between the choice of multiplexing
+ and topology and the security functions. This becomes especially
+ evident in RTP topologies having any type of middlebox that processes
+ or modifies RTP/RTCP packets. While the overhead of an RTP
+ translator or mixer rewriting an SSRC value in the RTP packet of an
+ unencrypted session is low, the cost is higher when using
+ cryptographic security functions. For example, if using SRTP
+ [RFC3711], the actual security context and exact crypto key are
+ determined by the SSRC field value. If one changes the SSRC value,
+ the encryption and authentication must use another key. Thus,
+ changing the SSRC value implies a decryption using the old SSRC and
+ its security context, followed by an encryption using the new one.
+
+5. RTP Multiplexing Design Choices
+
+ This section discusses how some RTP multiplexing design choices can
+ be used in applications to achieve certain goals and summarizes the
+ implications of such choices. The benefits and downsides of each
+ design are also discussed.
+
+5.1. Multiple Media Types in One Session
+
+ This design uses a single RTP session for multiple different media
+ types, like audio and video, and possibly also transport robustness
+ mechanisms like FEC or retransmission. An endpoint can send zero,
+ one, or multiple media sources per media type, resulting in a number
+ of RTP streams of various media types for both source and redundancy
+ streams.
+
+ Advantages:
+
+ 1. Only a single RTP session is used, which implies:
+
+ * Minimal need to keep NAT/FW state.
+
+ * Minimal NAT/FW traversal cost.
+
+ * Fate-sharing for all media flows.
+
+ * Minimal overhead for security association establishment.
+
+ 2. Dynamic allocation of RTP streams can be handled almost entirely
+ at the RTP level. The extent to which this allocation can be
+ kept at the RTP level depends on the application's needs for an
+ explicit indication of stream usage and in how timely a fashion
+ that information can be signaled.
+
+ Disadvantages:
+
+ 1. It is less suitable for interworking with other applications that
+ use individual RTP sessions per media type or multiple sessions
+ for a single media type, due to the risk of SSRC collisions and
+ thus a potential need for SSRC translation.
+
+ 2. Negotiation of individual bandwidths for the different media
+ types is currently only possible in SDP when using RID [RFC8851].
+
+ 3. It is not suitable for split component terminals (see
+ Section 3.10 of [RFC7667]).
+
+ 4. Flow-based QoS cannot be used to provide separate treatment of
+ RTP streams compared to others in the single RTP session.
+
+ 5. If there is significant asymmetry between the RTP streams' RTCP
+ reporting needs, there are some challenges related to
+ configuration and usage to avoid wasting RTCP reporting on the
+ RTP stream that does not need such frequent reporting.
+
+ 6. It is not suitable for applications where some receivers like to
+ receive only a subset of the RTP streams, especially if multicast
+ or a transport translator is being used.
+
+ 7. There are some additional concerns regarding legacy
+ implementations that do not support the RTP specification fully
+ when it comes to handling multiple SSRCs per endpoint, as
+ multiple simultaneous media types are sent as separate SSRCs in
+ the same RTP session.
+
+ 8. If the applications need finer control over which session
+ participants are included in different sets of security
+ associations, most key-management mechanisms will have
+ difficulties establishing such a session.
+
+5.2. Multiple SSRCs of the Same Media Type
+
+ In this design, each RTP session serves only a single media type.
+ The RTP session can contain multiple RTP streams, from either a
+ single endpoint or multiple endpoints. This commonly creates a low
+ number of RTP sessions, typically only one for audio and one for
+ video, with a corresponding need for two listening ports when using
+ RTP/RTCP multiplexing [RFC5761].
+
+ Advantages:
+
+ 1. It works well with split component terminals (see Section 3.10 of
+ [RFC7667]) where the split is per media type.
+
+ 2. It enables flow-based QoS with different prioritization levels
+ between media types.
+
+ 3. For applications with dynamic usage of RTP streams (i.e., streams
+ are frequently added and removed), having much of the state
+ associated with the RTP session rather than per individual SSRC
+ can avoid the need for in-session signaling of meta-information
+ about each SSRC. In simple cases, this allows for unsignaled RTP
+ streams where session-level information and an RTCP SDES item
+ (e.g., CNAME) are sufficient. In the more complex cases where
+ more source-specific metadata needs to be signaled, the SSRC can
+ be associated with an intermediate identifier, e.g., the MID
+ conveyed as an SDES item as defined in Section 15 of [RFC8843].
+
+ 4. The overhead of security association establishment is low.
+
+ Disadvantages:
+
+ 1. A slightly higher number of RTP sessions are needed, compared to
+ multiple media types in one session (Section 5.1). This implies
+ the following:
+
+ * More NAT/FW state is needed.
+
+ * The cost of NAT/FW traversal is increased in terms of both
+ processing and delay.
+
+ 2. There is some potential for concern regarding legacy
+ implementations that don't support the RTP specification fully
+ when it comes to handling multiple SSRCs per endpoint.
+
+ 3. It is not possible to control security associations for sets of
+ RTP streams within the same media type with today's key-
+ management mechanisms, unless these are split into different RTP
+ sessions (Section 5.3).
+
+ For RTP applications where all RTP streams of the same media type
+ share the same usage, this structure provides efficiency gains in the
+ amount of network state used and provides more fate-sharing with
+ other media flows of the same type. At the same time, it still
+ maintains almost all functionalities for the negotiation signaling of
+ properties per individual media type and also enables flow-based QoS
+ prioritization between media types. It handles multi-party sessions
+ well, independently of multicast or centralized transport
+ distribution, as additional sources can dynamically enter and leave
+ the session.
+
+5.3. Multiple Sessions for One Media Type
+
+ This design goes one step further than the design discussed in
+ Section 5.2 by also using multiple RTP sessions for a single media
+ type. The main reason for going in this direction is that the RTP
+ application needs separation of the RTP streams according to their
+ usage, such as, for example, scalability over multicast, simulcast,
+ the need for extended QoS prioritization, or the need for fine-
+ grained signaling using RTP session-focused signaling tools.
+
+ Advantages:
+
+ 1. This design is more suitable for multicast usage where receivers
+ can individually select which RTP sessions they want to
+ participate in, assuming that each RTP session has its own
+ multicast group.
+
+ 2. When multiple different usages exist, the application can
+ indicate its usage of the RTP streams at the RTP session level.
+
+ 3. There is less need for SSRC-specific explicit signaling for each
+ media stream and thus a reduced need for explicit and timely
+ signaling when RTP streams are added or removed.
+
+ 4. It enables detailed QoS prioritization for flow-based mechanisms.
+
+ 5. It works well with split component terminals (see Section 3.10 of
+ [RFC7667]).
+
+ 6. The scope for who is included in a security association can be
+ structured around the different RTP sessions, thus enabling such
+ functionality with existing key-management mechanisms.
+
+ Disadvantages:
+
+ 1. There is an increased amount of session configuration state
+ compared to multiple SSRCs of the same media type (Section 5.2),
+ due to the increased amount of RTP sessions.
+
+ 2. For RTP streams that are part of scalability, simulcast, or
+ transport robustness, a method for binding sources across
+ multiple RTP sessions is needed.
+
+ 3. There is some potential for concern regarding legacy
+ implementations that don't support the RTP specification fully
+ when it comes to handling multiple SSRCs per endpoint.
+
+ 4. The overhead of security association establishment is higher, due
+ to the increased number of RTP sessions.
+
+ 5. If the applications need finer control over which participants in
+ a given RTP session are included in different sets of security
+ associations, most of today's key-management mechanisms will have
+ difficulties establishing such a session.
+
+ For more-complex RTP applications that have several different usages
+ for RTP streams of the same media type or that use scalability or
+ simulcast, this solution can enable those functions, at the cost of
+ increased overhead associated with the additional sessions. This
+ type of structure is suitable for more-advanced applications as well
+ as multicast-based applications requiring differentiation to
+ different participants.
+
+5.4. Single SSRC per Endpoint
+
+ In this design, each endpoint in a point-to-point session has only a
+ single SSRC; thus, the RTP session contains only two SSRCs -- one
+ local and one remote. This session can be used either
+ unidirectionally (i.e., one SSRC sends an RTP stream that is received
+ by the other SSRC) or bidirectionally (i.e., the two SSRCs both send
+ an RTP stream and receive the RTP stream sent by the other endpoint).
+ If the application needs additional media flows between the
+ endpoints, it will have to establish additional RTP sessions.
+
+ Advantages:
+
+ 1. This design has great potential for interoperability with legacy
+ applications, as it will not tax any RTP stack implementations.
+
+ 2. The signaling system makes it possible to negotiate and describe
+ the exact formats and bitrates for each RTP stream, especially
+ using today's tools in SDP.
+
+ 3. It is possible to control security associations per RTP stream
+ with current key-management functions, since each RTP stream is
+ directly related to an RTP session and the most commonly used
+ keying mechanisms operate on a per-session basis.
+
+ Disadvantages:
+
+ 1. The amount of NAT/FW state grows linearly with the number of RTP
+ streams.
+
+ 2. NAT/FW traversal increases delay and resource consumption.
+
+ 3. There are likely more signaling message and signaling processing
+ requirements due to the increased amount of session-related
+ information.
+
+ 4. There is higher potential for a single RTP stream to fail during
+ transport between the endpoints, due to the need for a separate
+ NAT/FW traversal for every RTP stream, since there is only one
+ stream per session.
+
+ 5. The amount of explicit state for relating RTP streams grows,
+ depending on how the application relates RTP streams.
+
+ 6. Port consumption might become a problem for centralized services,
+ where the central node's port or 5-tuple filter consumption grows
+ rapidly with the number of sessions.
+
+ 7. For applications where RTP stream usage is highly dynamic, i.e.,
+ entities frequently enter and leave sessions, the amount of
+ signaling can become high. Issues can also arise from the need
+ for timely establishment of additional RTP sessions.
+
+ 8. If, against the recommendation in [RFC3550], the same SSRC value
+ is reused in multiple RTP sessions rather than being randomly
+ chosen, interworking with applications that use a different
+ multiplexing structure will require SSRC translation.
+
+ RTP applications with a strong need to interwork with legacy RTP
+ applications can potentially benefit from this structure. However, a
+ large number of media descriptions in SDP can also run into issues
+ with existing implementations. For any application needing a larger
+ number of media flows, the overhead can become very significant.
+ This structure is also not suitable for non-mixed multi-party
+ sessions, as any given RTP stream from each participant, although
+ having the same usage in the application, needs its own RTP session.
+ In addition, the dynamic behavior that can arise in multi-party
+ applications can tax the signaling system and make timely media
+ establishment more difficult.
+
+5.5. Summary
+
+ Both the "single SSRC per endpoint" (Section 5.4) and "multiple media
+ types in one session" (Section 5.1) cases require full explicit
+ signaling of the media stream relationships. However, they operate
+ on two different levels, where the first primarily enables session-
+ level binding and the second needs SSRC-level binding. From another
+ perspective, the two solutions are the two extremes when it comes to
+ the number of RTP sessions needed.
+
+ The two other designs -- multiple SSRCs of the same media type
+ (Section 5.2) and multiple sessions for one media type (Section 5.3)
+ -- are two examples that primarily allow for some implicit mapping of
+ the role or usage of the RTP streams based on which RTP session they
+ appear in. Thus, they potentially allow for less signaling and, in
+ particular, reduce the need for real-time signaling in sessions with
+ a dynamically changing number of RTP streams. They also represent
+ points between the first two designs when it comes to the amount of
+ RTP sessions established, i.e., they represent an attempt to balance
+ the amount of RTP sessions with the functionality the communication
+ session provides at both the network level and the signaling level.
+
+6. Guidelines
+
+ This section contains a number of multi-stream guidelines for
+ implementers, system designers, and specification writers.
+
+ Do not require the use of the same SSRC value across RTP sessions:
+ As discussed in Section 3.4.3, there are downsides to using the
+ same SSRC in multiple RTP sessions as a mechanism to bind related
+ RTP streams together. It is instead recommended to use a
+ mechanism to explicitly signal the relationship, in either
+ RTP/RTCP or the signaling mechanism used to establish the RTP
+ session(s).
+
+ Use additional RTP streams for additional media sources:
+ In the cases where an RTP endpoint needs to transmit additional
+ RTP streams of the same media type in the application, with the
+ same processing requirements at the network and RTP layers, it is
+ suggested to send them in the same RTP session. For example, in
+ the case of a telepresence room where there are three cameras and
+ each camera captures two persons sitting at the table, we suggest
+ that each camera send its own RTP stream within a single RTP
+ session.
+
+ Use additional RTP sessions for streams with different
+ requirements:
+ When RTP streams have different processing requirements from the
+ network or the RTP layer at the endpoints, it is suggested that
+ the different types of streams be put in different RTP sessions.
+ This includes the case where different participants want different
+ subsets of the set of RTP streams.
+
+ Use grouping when using multiple RTP sessions:
+ When using multiple RTP session solutions, it is suggested to
+ explicitly group the involved RTP sessions when needed using a
+ signaling mechanism -- for example, see "The Session Description
+ Protocol (SDP) Grouping Framework" [RFC5888] -- using some
+ appropriate grouping semantics.
+
+ Ensure that RTP/RTCP extensions support multiple RTP streams as
+ well as multiple RTP sessions:
+ When defining an RTP or RTCP extension, the creator needs to
+ consider if this extension is applicable for use with additional
+ SSRCs and multiple RTP sessions. Any extension intended to be
+ generic must support both. Extensions that are not as generally
+ applicable will have to consider whether interoperability is
+ better served by defining a single solution or providing both
+ options.
+
+ Provide adequate extensions for transport support:
+ When defining new RTP/RTCP extensions intended for transport
+ support, like the retransmission or FEC mechanisms, they must
+ include support for both multiple RTP streams in the same RTP
+ session and multiple RTP sessions, such that application
+ developers can choose freely from the set of mechanisms without
+ concerning themselves with which of the multiplexing choices a
+ particular solution supports.
+
+7. IANA Considerations
+
+ This document has no IANA actions.
+
+8. Security Considerations
+
+ The security considerations discussed in the RTP specification
+ [RFC3550]; any applicable RTP profile [RFC3551] [RFC4585] [RFC3711];
+ and the extensions for sending multiple media types in a single RTP
+ session [RFC8860], RID [RFC8851], BUNDLE [RFC8843], [RFC5760], and
+ [RFC5761] apply if selected and thus need to be considered in the
+ evaluation.
+
+ Section 4.3 discusses the security implications of choosing multiple
+ SSRCs vs. multiple RTP sessions.
+
+9. References
+
+9.1. Normative References
+
+ [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>.
+
+ [RFC3551] Schulzrinne, H. and S. Casner, "RTP Profile for Audio and
+ Video Conferences with Minimal Control", STD 65, RFC 3551,
+ DOI 10.17487/RFC3551, July 2003,
+ <https://www.rfc-editor.org/info/rfc3551>.
+
+ [RFC3711] Baugher, M., McGrew, D., Naslund, M., Carrara, E., and K.
+ Norrman, "The Secure Real-time Transport Protocol (SRTP)",
+ RFC 3711, DOI 10.17487/RFC3711, March 2004,
+ <https://www.rfc-editor.org/info/rfc3711>.
+
+ [RFC4585] Ott, J., Wenger, S., Sato, N., Burmeister, C., and J. Rey,
+ "Extended RTP Profile for Real-time Transport Control
+ Protocol (RTCP)-Based Feedback (RTP/AVPF)", RFC 4585,
+ DOI 10.17487/RFC4585, July 2006,
+ <https://www.rfc-editor.org/info/rfc4585>.
+
+ [RFC5576] Lennox, J., Ott, J., and T. Schierl, "Source-Specific
+ Media Attributes in the Session Description Protocol
+ (SDP)", RFC 5576, DOI 10.17487/RFC5576, June 2009,
+ <https://www.rfc-editor.org/info/rfc5576>.
+
+ [RFC5760] Ott, J., Chesterfield, J., and E. Schooler, "RTP Control
+ Protocol (RTCP) Extensions for Single-Source Multicast
+ Sessions with Unicast Feedback", RFC 5760,
+ DOI 10.17487/RFC5760, February 2010,
+ <https://www.rfc-editor.org/info/rfc5760>.
+
+ [RFC5761] Perkins, C. and M. Westerlund, "Multiplexing RTP Data and
+ Control Packets on a Single Port", RFC 5761,
+ DOI 10.17487/RFC5761, April 2010,
+ <https://www.rfc-editor.org/info/rfc5761>.
+
+ [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>.
+
+ [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>.
+
+ [RFC8860] Westerlund, M., Perkins, C., and J. Lennox, "Sending
+ Multiple Types of Media in a Single RTP Session",
+ RFC 8860, DOI 10.17487/RFC8860, January 2021,
+ <https://www.rfc-editor.org/info/rfc8860>.
+
+ [RFC8870] Jennings, C., Mattsson, J., McGrew, D., Wing, D., and F.
+ Andreasen, "Encrypted Key Transport for DTLS and Secure
+ RTP", RFC 8870, DOI 10.17487/RFC8870, January 2021,
+ <https://www.rfc-editor.org/info/rfc8870>.
+
+9.2. Informative References
+
+ [JINGLE] Ludwig, S., Beda, J., Saint-Andre, P., McQueen, R., Egan,
+ S., and J. Hildebrand, "XEP-0166: Jingle", September 2018,
+ <https://xmpp.org/extensions/xep-0166.html>.
+
+ [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>.
+
+ [RFC2205] Braden, R., Ed., Zhang, L., Berson, S., Herzog, S., and S.
+ Jamin, "Resource ReSerVation Protocol (RSVP) -- Version 1
+ Functional Specification", RFC 2205, DOI 10.17487/RFC2205,
+ September 1997, <https://www.rfc-editor.org/info/rfc2205>.
+
+ [RFC2474] Nichols, K., Blake, S., Baker, F., and D. Black,
+ "Definition of the Differentiated Services Field (DS
+ Field) in the IPv4 and IPv6 Headers", RFC 2474,
+ DOI 10.17487/RFC2474, December 1998,
+ <https://www.rfc-editor.org/info/rfc2474>.
+
+ [RFC2974] Handley, M., Perkins, C., and E. Whelan, "Session
+ Announcement Protocol", RFC 2974, DOI 10.17487/RFC2974,
+ October 2000, <https://www.rfc-editor.org/info/rfc2974>.
+
+ [RFC3261] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston,
+ A., Peterson, J., Sparks, R., Handley, M., and E.
+ Schooler, "SIP: Session Initiation Protocol", RFC 3261,
+ DOI 10.17487/RFC3261, June 2002,
+ <https://www.rfc-editor.org/info/rfc3261>.
+
+ [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>.
+
+ [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>.
+
+ [RFC3830] Arkko, J., Carrara, E., Lindholm, F., Naslund, M., and K.
+ Norrman, "MIKEY: Multimedia Internet KEYing", RFC 3830,
+ DOI 10.17487/RFC3830, August 2004,
+ <https://www.rfc-editor.org/info/rfc3830>.
+
+ [RFC4103] Hellstrom, G. and P. Jones, "RTP Payload for Text
+ Conversation", RFC 4103, DOI 10.17487/RFC4103, June 2005,
+ <https://www.rfc-editor.org/info/rfc4103>.
+
+ [RFC4383] Baugher, M. and E. Carrara, "The Use of Timed Efficient
+ Stream Loss-Tolerant Authentication (TESLA) in the Secure
+ Real-time Transport Protocol (SRTP)", RFC 4383,
+ DOI 10.17487/RFC4383, February 2006,
+ <https://www.rfc-editor.org/info/rfc4383>.
+
+ [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>.
+
+ [RFC4568] Andreasen, F., Baugher, M., and D. Wing, "Session
+ Description Protocol (SDP) Security Descriptions for Media
+ Streams", RFC 4568, DOI 10.17487/RFC4568, July 2006,
+ <https://www.rfc-editor.org/info/rfc4568>.
+
+ [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>.
+
+ [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>.
+
+ [RFC5389] Rosenberg, J., Mahy, R., Matthews, P., and D. Wing,
+ "Session Traversal Utilities for NAT (STUN)", RFC 5389,
+ DOI 10.17487/RFC5389, October 2008,
+ <https://www.rfc-editor.org/info/rfc5389>.
+
+ [RFC5764] McGrew, D. and E. Rescorla, "Datagram Transport Layer
+ Security (DTLS) Extension to Establish Keys for the Secure
+ Real-time Transport Protocol (SRTP)", RFC 5764,
+ DOI 10.17487/RFC5764, May 2010,
+ <https://www.rfc-editor.org/info/rfc5764>.
+
+ [RFC5888] Camarillo, G. and H. Schulzrinne, "The Session Description
+ Protocol (SDP) Grouping Framework", RFC 5888,
+ DOI 10.17487/RFC5888, June 2010,
+ <https://www.rfc-editor.org/info/rfc5888>.
+
+ [RFC6465] Ivov, E., Ed., Marocco, E., Ed., and J. Lennox, "A Real-
+ time Transport Protocol (RTP) Header Extension for Mixer-
+ to-Client Audio Level Indication", RFC 6465,
+ DOI 10.17487/RFC6465, December 2011,
+ <https://www.rfc-editor.org/info/rfc6465>.
+
+ [RFC7201] Westerlund, M. and C. Perkins, "Options for Securing RTP
+ Sessions", RFC 7201, DOI 10.17487/RFC7201, April 2014,
+ <https://www.rfc-editor.org/info/rfc7201>.
+
+ [RFC7657] Black, D., Ed. and P. Jones, "Differentiated Services
+ (Diffserv) and Real-Time Communication", RFC 7657,
+ DOI 10.17487/RFC7657, November 2015,
+ <https://www.rfc-editor.org/info/rfc7657>.
+
+ [RFC7826] Schulzrinne, H., Rao, A., Lanphier, R., Westerlund, M.,
+ and M. Stiemerling, Ed., "Real-Time Streaming Protocol
+ Version 2.0", RFC 7826, DOI 10.17487/RFC7826, December
+ 2016, <https://www.rfc-editor.org/info/rfc7826>.
+
+ [RFC7983] Petit-Huguenin, M. and G. Salgueiro, "Multiplexing Scheme
+ Updates for Secure Real-time Transport Protocol (SRTP)
+ Extension for Datagram Transport Layer Security (DTLS)",
+ RFC 7983, DOI 10.17487/RFC7983, September 2016,
+ <https://www.rfc-editor.org/info/rfc7983>.
+
+ [RFC8088] Westerlund, M., "How to Write an RTP Payload Format",
+ RFC 8088, DOI 10.17487/RFC8088, May 2017,
+ <https://www.rfc-editor.org/info/rfc8088>.
+
+ [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>.
+
+ [RFC8445] Keranen, A., Holmberg, C., and J. Rosenberg, "Interactive
+ Connectivity Establishment (ICE): A Protocol for Network
+ Address Translator (NAT) Traversal", RFC 8445,
+ DOI 10.17487/RFC8445, July 2018,
+ <https://www.rfc-editor.org/info/rfc8445>.
+
+ [RFC8871] Jones, P., Benham, D., and C. Groves, "A Solution
+ Framework for Private Media in Privacy-Enhanced RTP
+ Conferencing (PERC)", RFC 8871, DOI 10.17487/RFC8871,
+ January 2021, <https://www.rfc-editor.org/info/rfc8871>.
+
+Appendix A. Dismissing Payload Type Multiplexing
+
+ This section documents a number of reasons why using the payload type
+ as a multiplexing point is unsuitable for most issues related to
+ multiple RTP streams. Attempting to use payload type multiplexing
+ beyond its defined usage has well-known negative effects on RTP, as
+ discussed below. To use the payload type as the single discriminator
+ for multiple streams implies that all the different RTP streams are
+ being sent with the same SSRC, thus using the same timestamp and
+ sequence number space. The many effects of using payload type
+ multiplexing are as follows:
+
+ 1. Constraints are placed on the RTP timestamp rate for the
+ multiplexed media. For example, RTP streams that use different
+ RTP timestamp rates cannot be combined, as the timestamp values
+ need to be consistent across all multiplexed media frames.
+ Thus, streams are forced to use the same RTP timestamp rate.
+ When this is not possible, payload type multiplexing cannot be
+ used.
+
+ 2. Many RTP payload formats can fragment a media object over
+ multiple RTP packets, like parts of a video frame. These
+ payload formats need to determine the order of the fragments to
+ correctly decode them. Thus, it is important to ensure that all
+ fragments related to a frame or a similar media object are
+ transmitted in sequence and without interruptions within the
+ object. This can be done relatively easily on the sender side
+ by ensuring that the fragments of each RTP stream are sent in
+ sequence.
+
+ 3. Some media formats require uninterrupted sequence number space
+ between media parts. These are media formats where any missing
+ RTP sequence number will result in decoding failure or invoking
+ a repair mechanism within a single media context. The text/t140
+ payload format [RFC4103] is an example of such a format. These
+ formats will need a sequence numbering abstraction function
+ between RTP and the individual RTP stream before being used with
+ payload type multiplexing.
+
+ 4. Sending multiple media streams in the same sequence number space
+ makes it impossible to determine which media stream lost a
+ packet. Such a scenario causes difficulties, since the receiver
+ cannot determine to which stream it should apply packet-loss
+ concealment or other stream-specific loss-mitigation mechanisms.
+
+ 5. If RTP retransmission [RFC4588] is used and packet loss occurs,
+ it is possible to ask for the missing packet(s) by SSRC and
+ sequence number -- not by payload type. If only some of the
+ payload type multiplexed streams are of interest, there is no
+ way to tell which missing packet or packets belong to the stream
+ or streams of interest, and all lost packets need to be
+ requested, wasting bandwidth.
+
+ 6. The current RTCP feedback mechanisms are built around providing
+ feedback on RTP streams based on stream ID (SSRC), packet
+ (sequence numbers), and time interval (RTP timestamps). There
+ is almost never a field to indicate which payload type is
+ reported, so sending feedback for a specific RTP payload type is
+ difficult without extending existing RTCP reporting.
+
+ 7. The current RTCP media control messages specification [RFC5104]
+ is oriented around controlling particular media flows, i.e.,
+ requests are done by addressing a particular SSRC. Such
+ mechanisms would need to be redefined to support payload type
+ multiplexing.
+
+ 8. The number of payload types is inherently limited. Accordingly,
+ using payload type multiplexing limits the number of streams
+ that can be multiplexed and does not scale. This limitation is
+ exacerbated if one uses solutions like RTP and RTCP multiplexing
+ [RFC5761] where a number of payload types are blocked due to the
+ overlap between RTP and RTCP.
+
+ 9. At times, there is a need to group multiplexed streams. This is
+ currently possible for RTP sessions and SSRCs, but there is no
+ defined way to group payload types.
+
+ 10. It is currently not possible to signal bandwidth requirements
+ per RTP stream when using payload type multiplexing.
+
+ 11. Most existing SDP media-level attributes cannot be applied on a
+ per-payload-type basis and would require redefinition in that
+ context.
+
+ 12. A legacy endpoint that does not understand the indication that
+ different RTP payload types are different RTP streams might be
+ slightly confused by the large amount of possibly overlapping or
+ identically defined RTP payload types.
+
+Appendix B. Signaling Considerations
+
+ Signaling is not an architectural consideration for RTP itself, so
+ this discussion has been moved to an appendix. However, it is
+ extremely important for anyone building complete applications, so it
+ is deserving of discussion.
+
+ We document some issues here that need to be addressed when using
+ some form of signaling to establish RTP sessions. These issues
+ cannot be addressed by simply tweaking, extending, or profiling RTP;
+ rather, they require a dedicated and in-depth look at the signaling
+ primitives that set up the RTP sessions.
+
+ There exist various signaling solutions for establishing RTP
+ sessions. Many are based on SDP [RFC4566]; however, SDP
+ functionality is also dependent on the signaling protocols carrying
+ the SDP. The Real-Time Streaming Protocol (RTSP) [RFC7826] and the
+ Session Announcement Protocol (SAP) [RFC2974] both use SDP in a
+ declarative fashion, while SIP [RFC3261] uses SDP with the additional
+ definition of offer/answer [RFC3264]. The impact on signaling, and
+ especially on SDP, needs to be considered, as it can greatly affect
+ how to deploy a certain multiplexing point choice.
+
+B.1. Session-Oriented Properties
+
+ One aspect of existing signaling protocols is that they are focused
+ on RTP sessions or, in the case of SDP, the concept of media
+ descriptions. A number of things are signaled at the media
+ description level, but those are not necessarily strictly bound to an
+ RTP session and could be of interest for signaling, especially for a
+ particular RTP stream (SSRC) within the session. The following
+ properties have been identified as being potentially useful for
+ signaling, and not only at the RTP session level:
+
+ * Bitrate and/or bandwidth can be specified today only as an
+ aggregate limit, or as a common "any RTP stream" limit, unless
+ either codec-specific bandwidth limiting or RTCP signaling using
+ Temporary Maximum Media Stream Bit Rate Request (TMMBR) messages
+ [RFC5104] is used.
+
+ * Which SSRC will use which RTP payload type (this information will
+ be visible in the first media packet but is sometimes useful to
+ have before the packet arrives).
+
+ Some of these issues are clearly SDP's problem rather than RTP
+ limitations. However, if the aim is to deploy a solution that uses
+ several SSRCs and contains several sets of RTP streams with different
+ properties (encoding/packetization parameters, bitrate, etc.),
+ putting each set in a different RTP session would directly enable
+ negotiation of the parameters for each set. If insisting on
+ additional SSRCs only, a number of signaling extensions are needed to
+ clarify that there are multiple sets of RTP streams with different
+ properties and that they in fact need to be kept different, since a
+ single set will not satisfy the application's requirements.
+
+ For some parameters, such as RTP payload type, resolution, and frame
+ rate, an SSRC-linked mechanism has been proposed in [RFC8851].
+
+B.2. SDP Prevents Multiple Media Types
+
+ SDP uses the "m=" line to both delineate an RTP session and specify
+ the top-level media type: audio, video, text, image, application.
+ This media type is used as the top-level media type for identifying
+ the actual payload format and is bound to a particular payload type
+ using the "a=rtpmap:" attribute. This binding has to be loosened in
+ order to use SDP to describe RTP sessions containing multiple top-
+ level media types.
+
+ [RFC8843] describes how to let multiple SDP media descriptions use a
+ single underlying transport in SDP, which allows the definition of
+ one RTP session with different top-level media types.
+
+B.3. Signaling RTP Stream Usage
+
+ RTP streams being transported in RTP have a particular usage in an
+ RTP application. In many applications to date, this usage of the RTP
+ stream is implicitly signaled. For example, an application might
+ choose to take all incoming audio RTP streams, mix them, and play
+ them out. However, in more-advanced applications that use multiple
+ RTP streams, there will be more than a single usage or purpose among
+ the set of RTP streams being sent or received. RTP applications will
+ need to somehow signal this usage. The signaling that is used will
+ have to identify the RTP streams affected by their RTP-level
+ identifiers, which means that they have to be identified by either
+ their session or their SSRC + session.
+
+ In some applications, the receiver cannot utilize the RTP stream at
+ all before it has received the signaling message describing the RTP
+ stream and its usage. In other applications, there exists a default
+ handling method that is appropriate.
+
+ If all RTP streams in an RTP session are to be treated in the same
+ way, identifying the session is enough. If SSRCs in a session are to
+ be treated differently, signaling needs to identify both the session
+ and the SSRC.
+
+ If this signaling affects how any RTP central node, like an RTP mixer
+ or translator that selects, mixes, or processes streams, treats the
+ streams, the node will also need to receive the same signaling to
+ know how to treat RTP streams with different usages in the right
+ fashion.
+
+Acknowledgments
+
+ The authors would like to acknowledge and thank Cullen Jennings, Dale
+ R. Worley, Huang Yihong (Rachel), Benjamin Kaduk, Mirja Kühlewind,
+ and Vijay Gurbani for review and comments.
+
+Contributors
+
+ Hui Zheng (Marvin) contributed to WG draft versions -04 and -05 of
+ the document.
+
+Authors' Addresses
+
+ Magnus Westerlund
+ Ericsson
+ Torshamnsgatan 23
+ SE-164 80 Kista
+ Sweden
+
+ Email: magnus.westerlund@ericsson.com
+
+
+ Bo Burman
+ Ericsson
+ Gronlandsgatan 31
+ SE-164 60 Kista
+ Sweden
+
+ Email: bo.burman@ericsson.com
+
+
+ Colin Perkins
+ University of Glasgow
+ School of Computing Science
+ Glasgow
+ G12 8QQ
+ United Kingdom
+
+ Email: csp@csperkins.org
+
+
+ Harald Tveit Alvestrand
+ Google
+ Kungsbron 2
+ SE-11122 Stockholm
+ Sweden
+
+ Email: harald@alvestrand.no
+
+
+ Roni Even
+
+ Email: ron.even.tlv@gmail.com