RFC 8849

Mapping RTP Streams to Controlling Multiple Streams for Telepresence (CLUE) Media Captures

πŸ“… published January 2021, from ietf

1. Introduction ✨

okay so bestie, this is the RFC that explains how RTP streams (the little packet streams that carry your video and audio πŸŽ₯) get matched up with CLUE Media Captures (the "this is my camera, this is my slides" labels in telepresence systems) πŸ’–. It's giving "everything has to line up or the call looks cursed" energy, and it's iconic πŸ¦‹

Here's the full RFC header situation, so you know what you're looking at πŸŽ€:

Internet Engineering Task Force (IETF)                           R. Even
Request for Comments: 8849
Category: Standards Track                                      J. Lennox
ISSN: 2070-1721                                              8x8 / Jitsi
                                                            January 2021

So it's an Internet Standards Track doc πŸ‘‘, written by R. Even and J. Lennox (from 8x8 / Jitsi) 🫢, published in January 2021 🌸. It's RFC 8849, titled "Mapping RTP Streams to Controlling Multiple Streams for Telepresence (CLUE) Media Captures" πŸ’…. Nothing in the header says it obsoletes or updates anything, so it's a fresh standard, no drama πŸ™ˆ.

Abstract

okay so the abstract says this doc explains how RTP is used with CLUE 🌈. It covers the mechanisms and the recommended practice for mapping RTP media streams (the ones SDP describes) to CLUE Media Captures, and it defines a brand new RTP header extension called CaptureID πŸ”₯✨.

Status of This Memo

the status bit is giving official πŸ’…. It's an Internet Standards Track document, it's the consensus of the IETF community, it got public review, and the IESG approved it for publication πŸ‘‘. If you want the deeper status stuff, go read Section 2 of RFC 7841 🧚. The errata and feedback page lives at https://www.rfc-editor.org/info/rfc8849 πŸ’œ.

okay this part is legal-brain stuff, but the vibe is: 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 publication date 🌸. Please review those carefully, because they spell out your rights and restrictions for this document πŸ™ˆ. If you extract Code Components from this document, they must include the Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions, and they come without warranty as described in that license ⭐.

Table of Contents

1.  Introduction
2.  Terminology
3.  RTP Topologies for CLUE
4.  Mapping CLUE Capture Encodings to RTP Streams
5.  MCC Constituent CaptureID Definition
  5.1.  RTCP CaptureID SDES Item
  5.2.  RTP Header Extension
6.  Examples
7.  Communication Security
8.  IANA Considerations
9.  Security Considerations
10. References
  10.1.  Normative References
  10.2.  Informative References
Acknowledgments
Authors' Addresses

1. Introduction ✨

okay so telepresence systems can send and receive a bunch of media streams at once πŸ“ΉπŸŽ€. The CLUE Framework [RFC8845] defines Media Captures (MCs) as a source of media, coming from one or more Capture Devices πŸ¦‹. An MC can also be built out of other media streams, and a middlebox can describe the conceptual MCs it builds from streams it receives πŸ’…. A Multiple Content Capture (MCC) is a special MC made of several MCs, so it's basically a captures-within-a-capture situation 🌈🫢.

SIP Offer/Answer [RFC3264] uses SDP [RFC4566] to describe the RTP media streams [RFC3550] πŸ’–. Every RTP stream has a unique Synchronization Source (SSRC) within its RTP session 🧚. The content of an RTP stream is made by an encoder in the endpoint. It can be original content from a camera, or content made by an intermediary like a Multipoint Control Unit (MCU) πŸ”₯.

This document makes recommendations for the CLUE architecture about how RTP and RTP Control Protocol (RTCP) streams should be encoded and transmitted, and how they should be related to CLUE Media Captures πŸ¦‹βœ¨. The solution supports multiple RTP topologies [RFC7667] πŸ‘‘.

About the media itself (audio, video, and timed text), CLUE systems use RTP for the media, SDP for codec and media transport negotiation (CLUE individual encodings), and the CLUE protocol for Media Capture description and selection πŸŽ€. To tie everything together across the different protocols, three mappings need to be specified 🌸:

  1. CLUE individual encodings to SDP
  2. RTP streams to SDP (this is not a CLUE-specific mapping)
  3. RTP streams to MC, to map the received RTP stream to the current MC in the MCC

2. Terminology πŸ’…

okay the key words bit is super important πŸ™ˆ. The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" are to be read as described in BCP 14 [RFC2119] [RFC8174], but only when they show up in ALL CAPS like that πŸ”₯. Definitions from the CLUE Framework (see Section 3 of [RFC8845]) get used in this doc too 🫢.


3. RTP Topologies for CLUE 🌈

okay so CLUE telepresence systems use typical RTP topologies that set different behaviors for how RTP and RTCP get distributed πŸ¦‹. Several topologies are described in [RFC7667] πŸ’œ. For CLUE telepresence, the relevant ones are Point-to-Point, plus the Media-Mixing Mixers, Media-Switching Mixers, and Selective Forwarding Middleboxes πŸ‘‘.

In Point-to-Point, one peer talks directly to a single peer over unicast ✨. There can be one or more RTP sessions, each sent on its own 5-tuple, and each has its own SSRC space πŸŽ€. Every RTP session carries several RTP streams, identified by their SSRC 🌸. All the SSRCs are recognized by the peers through the RTCP Source Description (SDES) report, which includes the Canonical Name (CNAME) and the SSRC of each sent RTP stream 🧚. There are different Point-to-Point use cases, specified in the CLUE use case [RFC7205] πŸ’–. Sometimes a CLUE session that's Point-to-Point overall might still have an RTP stream that's best described by one of the mixer topologies πŸ”₯. For example, a CLUE endpoint can produce composite or switched captures for a receiver that has fewer displays than the sender has cameras 🫢. The Media Capture can be described with an MCC πŸ’….

For the media mixer topology [RFC7667], the peers only talk to the mixer πŸ¦‹. The mixer provides mixed or composited media streams, using its own SSRC for the streams it sends πŸ‘‘. If the CLUE endpoint needs it, the conference roster info (conference participants, endpoints, media, and media-id (SSRC)) can be found using the conference event package [RFC4575] element 🌈.

Media-Switching Mixers and Selective Forwarding Middleboxes behave as described in [RFC7667] ⭐.


4. Mapping CLUE Capture Encodings to RTP Streams πŸŽ€

okay so the different topologies from Section 3 create different SSRC distribution models and different RTP stream multiplexing points πŸ’–.

Most video conferencing systems today can separate multiple RTP sources by putting them into RTP sessions using the SDP description, and the app can also know what each RTP session is for 🌸. For example, an app with a main video source and a slides video source can send each one in its own RTP session with a content attribute [RFC4796], so the receiver can behave differently for each source πŸ¦‹. Demultiplexing is pretty straightforward, because each Media Capture is sent as a single RTP stream, each RTP stream goes in its own RTP session, on a distinct UDP 5-tuple πŸ”₯. This also holds when mapping RTP streams to Capture Encodings, as long as each Capture Encoding uses its own RTP session and the consumer can identify it from the receiving RTP port 🧚. In that case, SDP only needs to label the RTP session with an identifier that can be used to find the Media Capture in the CLUE description, and the SDP label attribute is that identifier πŸ’œ.

Each Capture Encoding MUST be sent as a separate RTP stream. CLUE endpoints MUST support sending each such RTP stream in a separate RTP session signaled by an SDP "m=" line. They MAY also support sending some or all of the RTP streams in a single RTP session, using the mechanism described in [RFC8843] to relate RTP streams to SDP "m=" lines πŸ™ˆβœ¨.

MCCs bring another mapping issue 🌈. An MCC stands for multiple Media Captures that can be sent as part of the MCC if the consumer configures it that way πŸ‘‘. When a consumer receives an RTP stream mapped to the MCC, it needs to know which original MC that stream is, so it can get the MC parameters from the advertisement πŸ’…. If a consumer requested an MCC, the original MC has no Capture Encoding, so it can't be tied to an "m=" line with a label like in "CLUE Signaling" [RFC8848] πŸ₯ΊπŸ¦‹. This matters because you need the right scaling info for the original MC, and it can be different for each MC contributing to the MCC πŸ”₯.


5. MCC Constituent CaptureID Definition 🫢

okay so for an MCC that can represent multiple switched MCs, you need to know which MC the current RTP stream is representing at any given moment 🌸. That means mapping from the SSRC of the RTP stream carrying a particular MCC to its constituent MC πŸ’–. To make that mapping work, this document defines an RTP header extension and an SDES item that carry the captureID of the original MC 🧚. That way the consumer can use the MC's original source attributes, like spatial info πŸ‘‘.

This mapping temporarily ties the SSRC of the RTP stream carrying a particular MCC to the captureID of the single original MC currently switched into the MCC πŸ¦‹. It can't be used for a composed case where more than one original MC is composed into the MCC at the same time πŸ™ˆ.

If there's only one MC in the MCC, the media provider MUST send the captureID of the current constituent MC in the RTP header extension and as an RTCP CaptureID SDES item πŸ”₯. When the provider switches which MC it sends within the MCC, it MUST send the captureID of the MC that just got switched in, in an RTP header extension and as an RTCP CaptureID SDES item, as specified in [RFC7941] πŸ’…βœ¨.

If more than one MC is composed into the MCC, the media provider MUST NOT send any of the MCs' captureIDs using this mechanism 🌈. However, if an MCC is sending Contributing Source (CSRC) info in the RTP header for a composed capture, it MAY send the captureID values in the RTCP SDES packets that give source info for the SSRC values sent as CSRCs πŸŽ€.

If the media provider sends the captureID of a single MC switched into an MCC, and then later sends one composed stream of multiple MCs in the same MCC, it MUST send the special value "-", a single-dash character, as the captureID RTP header extension and RTCP CaptureID SDES item πŸ₯Ί. The single-dash character means there's no applicable value for the MCC constituent CaptureID πŸ’œ. The media consumer reads that as "any previous CaptureID value tied to this SSRC no longer applies" 🫢. Since [RFC8846] defines captureID syntax as "xs:ID", the single-dash character isn't a legal captureID value, so there's no chance of confusing it with a real captureID πŸ‘‘πŸŒΈ.

5.1. RTCP CaptureID SDES Item ✨

okay bestie, this part is where the CaptureID gets its own RTCP SDES item πŸŽ€ Here's the layout, copied exactly:

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   CaptId=14   |     length    | CaptureID                     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   ....        |
   +-+-+-+-+-+-+-+-+

So the CaptureID is a variable-length UTF-8 string 🌸 It's either a CaptureID that got negotiated in the CLUE protocol, or just the single character "-". Lowkey iconic that there's a fallback character. πŸ’…

This SDES item MUST be sent in an SDES packet within a compound RTCP packet unless support for Reduced-Size RTCP has been negotiated as specified in RFC 5506 [RFC5506]. In that case, it can be sent as an SDES packet in a noncompound RTCP packet. ✨


5.2. RTP Header Extension πŸ¦‹

The CaptureID also rides along in an RTP header extension [RFC8285], using the mechanism defined in [RFC7941]. πŸ’œ

Support gets negotiated inside SDP using the URN "urn:ietf:params:rtp-hdrext:sdes:CaptureID". πŸ“

Why bother putting it in the header extension too? For switched captures, receivers need to know which original MC matches the media being sent for an MCC, so they can apply geometric adjustments to the received media correctly. That's the whole reason, bestie 🧚

Also, you don't have to send the CaptId Header Extension with every single RTP packet. As [RFC7941] explains, senders MAY choose to send it only when a new MC is sent. If they go that route, the header extension SHOULD be sent in the first few RTP packets to lower the chances of losing it to packet loss 🫢 Check [RFC7941] for more on this.


6. Examples πŸŽ€

In this partial advertisement, the media provider advertises a composed capture VC7. It's made of a big picture showing the current speaker (VC3) plus two picture-in-picture boxes for the previous speakers: the previous one (VC5) and the oldest one (VC6). Main character energy, literally πŸ‘‘

  <ns2:mediaCapture
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:type="ns2:videoCaptureType" captureID="VC7"
       mediaType="video">
         <ns2:captureSceneIDREF>CS1</ns2:captureSceneIDREF>
         <ns2:nonSpatiallyDefinable>true</ns2:nonSpatiallyDefinable>
         <ns2:content>
               <ns2:captureIDREF>VC3</ns2:captureIDREF>
               <ns2:captureIDREF>VC5</ns2:captureIDREF>
               <ns2:captureIDREF>VC6</ns2:captureIDREF>
         </ns2:content>
                 <ns2:maxCaptures>3</ns2:maxCaptures>
           <ns2:allowSubsetChoice>false</ns2:allowSubsetChoice>
         <ns2:description lang="en">big picture of the current
           speaker pips about previous speakers</ns2:description>
           <ns2:priority>1</ns2:priority>
           <ns2:lang>it</ns2:lang>
           <ns2:mobility>static</ns2:mobility>
           <ns2:view>individual</ns2:view>
       </ns2:mediaCapture>

In this case, the media provider sends capture IDs VC3, VC5, or VC6 as an RTP header extension and in an RTCP SDES message for the RTP stream tied to the MC. 🌈

Heads up: this is part of the full advertisement message example from the CLUE data model example [RFC8846], and it is not a valid XML document πŸ™ˆ


7. Communication Security πŸ”’

CLUE endpoints MUST support RTP/SAVPF profiles and the Secure Real-time Transport Protocol (SRTP) [RFC3711]. They also MUST support DTLS [RFC6347] and DTLS-SRTP [RFC5763] [RFC5764] for SRTP keying. Non-negotiable, fr fr πŸ’–

All media channels SHOULD be secure via SRTP and the RTP/SAVPF profile, unless the RTP media and its associated RTCP are secure by other means (see [RFC7201] and [RFC7202]). ✨

All CLUE implementations MUST support DTLS 1.2 with the TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 cipher suite and the P-256 curve [FIPS186]. The DTLS-SRTP protection profile SRTP_AES128_CM_HMAC_SHA1_80 MUST be supported for SRTP. Implementations MUST favor cipher suites that support Perfect Forward Secrecy (PFS) over non-PFS cipher suites, and SHOULD favor Authenticated Encryption with Associated Data (AEAD) over non-AEAD cipher suites. Encrypted SRTP Header extensions [RFC6904] MUST be supported. πŸ”₯

Implementations SHOULD implement DTLS 1.2 with the TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 cipher suite. Implementations MUST favor cipher suites that support Perfect Forward Secrecy (PFS) over non-PFS cipher suites, and SHOULD favor Authenticated Encryption with Associated Data (AEAD) over non-AEAD cipher suites. 🌸

NULL Protection profiles MUST NOT be used for RTP or RTCP. Absolutely not, bestie πŸ’€

CLUE endpoints MUST generate short-term persistent RTCP CNAMEs, as specified in [RFC7022], and thus can't be used for long-term tracking of the users. That's the privacy glow-up we love to see πŸ¦‹


8. IANA Considerations 🧚

This document defines a new extension URI in the "RTP SDES Compact Header Extensions" subregistry of the "Real-Time Transport Protocol (RTP) Parameters" registry, according to the following data:

   Extension URI:  urn:ietf:params:rtp-hdrext:sdes:CaptId

   Description:  CLUE CaptId

   Contact:  Roni Even <ron.even.tlv@gmail.com>

   Reference:  RFC 8849

The IANA has registered one new RTCP SDES item in the "RTCP SDES Item Types" registry, as shown here:

   +=======+========+=============+===========+
   | Value | Abbrev | Name        | Reference |
   +=======+========+=============+===========+
   | 14    | CCID   | CLUE CaptId | RFC 8849  |
   +-------+--------+-------------+-----------+

                     Table 1

9. Security Considerations πŸ’…

The security considerations of the RTP specification, the RTP/SAVPF profile, and the various RTP/RTCP extensions and RTP payload formats that make up the complete protocol suite in this memo all apply. It is believed that there are no new security considerations from combining these protocol extensions. 🌈

The "Extended Secure RTP Profile for Real-time Transport Control Protocol (RTCP)-Based Feedback (RTP/SAVPF)" document [RFC5124] handles the fundamental issues by offering confidentiality, integrity, and partial source authentication. Combining this secured RTP profile with DTLS-SRTP keying [RFC5764], as defined in the communication security section of this memo (Section 7), creates a mandatory-to-implement and use media security solution. Iconic πŸ‘‘

RTCP packets carry a CNAME identifier that associates RTP packet streams needing synchronization across related RTP sessions. A bad CNAME choice can be a privacy concern, since long-term persistent CNAME identifiers can track users across multiple calls. 😭 The communication security section of this memo (Section 7) requires short-term persistent RTCP CNAMEs, as specified in [RFC7022], so they can't be used for long-term tracking of the users. 🫢

Some potential denial-of-service attacks exist if the RTCP reporting interval is configured to an inappropriate value. This could happen by setting the RTCP bandwidth fraction to an excessively large or small value using the SDP "b=RR:" or "b=RS:" lines [RFC3556] or some similar mechanism. It could also happen by choosing an excessively large or small value for the RTP/AVPF minimal receiver report interval (if using SDP, this is the "a=rtcp-fb:... trr-int" parameter) [RFC4585]. The risks are:

  1. The RTCP bandwidth could be configured to make the regular reporting interval so large that effective congestion control cannot be maintained, potentially leading to denial of service due to congestion caused by the media traffic;
  2. The RTCP interval could be configured to a very small value, causing endpoints to generate high-rate RTCP traffic, which potentially leads to denial of service due to the non-congestion-controlled RTCP traffic; and
  3. RTCP parameters could be configured differently for each endpoint, with some endpoints using a large reporting interval and some using a smaller interval, leading to denial of service due to premature participant timeouts. Those are due to mismatched timeout periods based on the reporting interval. This is a particular concern if endpoints use a small but non-zero value for the RTP/AVPF minimal receiver report interval (trr-int) [RFC4585], as discussed in [RFC8108].

Premature participant timeout can be avoided by using the fixed (non-reduced) minimum interval when calculating the participant timeout [RFC8108]. To address the other concerns, endpoints SHOULD ignore parameters that configure the RTCP reporting interval to be significantly longer than the default five-second interval specified in [RFC3550] (unless the media data rate is so low that the longer reporting interval roughly corresponds to 5% of the media data rate), or that configure the RTCP reporting interval small enough that the RTCP bandwidth would exceed the media bandwidth. πŸ™ˆ

The guidelines in [RFC6562] apply when using variable bit rate (VBR) audio codecs such as Opus. 🎧

Encryption of the header extensions is RECOMMENDED, unless there are known reasons. Those could be RTP middleboxes doing voice-activity-based source selection, or third-party monitoring that would greatly benefit from the information, and this has to be expressed using API or signaling. If further evidence shows that information leakage is significant from audio level indications, then encryption needs to be mandated at that time. πŸ”

In multi-party communication scenarios using RTP middleboxes, the middleboxes are REQUIRED, by this protocol, to not weaken the sessions' security. The middlebox SHOULD maintain confidentiality, maintain integrity, and perform source authentication. The middlebox MAY perform checks that prevent any endpoint participating in a conference from impersonating another. Some additional security considerations regarding multi-party topologies can be found in [RFC7667]. 🌸

The CaptureID is created as part of the CLUE protocol. The CaptId SDES item conveys the same CaptureID value. When sending the SDES item, the security considerations in Section 6 of [RFC7941] and in the communication security section of this memo (see Section 7) apply. Also, since the CaptureID is carried in CLUE protocol messages too, it is RECOMMENDED that this SDES item use at least similar protection profiles as the CLUE protocol messages carried in the CLUE data channel. ✨


10. References πŸ“š

10.1. Normative References πŸŽ€

okay so these are the docs the spec straight up leans on, so you need them to get the full picture πŸ’…

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <https://www.rfc-editor.org/info/rfc2119>.

[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>.

[RFC5763] Fischl, J., Tschofenig, H., and E. Rescorla, "Framework for Establishing a Secure Real-time Transport Protocol (SRTP) Security Context Using Datagram Transport Layer Security (DTLS)", RFC 5763, DOI 10.17487/RFC5763, May 2010, <https://www.rfc-editor.org/info/rfc5763>.

[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>.

[RFC6347] Rescorla, E. and N. Modadugu, "Datagram Transport Layer Security Version 1.2", RFC 6347, DOI 10.17487/RFC6347, January 2012, <https://www.rfc-editor.org/info/rfc6347>.

[RFC6904] Lennox, J., "Encryption of Header Extensions in the Secure Real-time Transport Protocol (SRTP)", RFC 6904, DOI 10.17487/RFC6904, April 2013, <https://www.rfc-editor.org/info/rfc6904>.

[RFC7941] Westerlund, M., Burman, B., Even, R., and M. Zanaty, "RTP Header Extension for the RTP Control Protocol (RTCP) Source Description Items", RFC 7941, DOI 10.17487/RFC7941, August 2016, <https://www.rfc-editor.org/info/rfc7941>.

[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, <https://www.rfc-editor.org/info/rfc8174>.

[RFC8843] Holmberg, C., Alvestrand, H., and C. Jennings, "Negotiating Media Multiplexing Using the Session Description Protocol (SDP)", RFC 8843, DOI 10.17487/RFC8843, January 2021, <https://www.rfc-editor.org/info/rfc8843>.

[RFC8845] Duckworth, M., Ed., Pepperell, A., and S. Wenger, "Framework for Telepresence Multi-Streams", RFC 8845, DOI 10.17487/RFC8845, January 2021, <https://www.rfc-editor.org/info/rfc8845>.

[RFC8846] Presta, R. and S P. Romano, "An XML Schema for the Controlling Multiple Streams for Telepresence (CLUE) Data Model", RFC 8846, DOI 10.17487/RFC8846, January 2021, <http://www.rfc-editor.org/info/rfc8846>.


10.2. Informative References 🌸

these ones are the extra reading: background, use cases, and related specs that help you see the bigger picture 🧚

[FIPS186] National Institute of Standards and Technology (NIST), "Digital Signature Standard (DSS)", FIPS, PUB 186-4, DOI 10.6028/NIST.FIPS.186-4, July 2013, <https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.186-4.pdf>.

[RFC3264] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model with Session Description Protocol (SDP)", RFC 3264, DOI 10.17487/RFC3264, June 2002, <https://www.rfc-editor.org/info/rfc3264>.

[RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V. Jacobson, "RTP: A Transport Protocol for Real-Time Applications", STD 64, RFC 3550, DOI 10.17487/RFC3550, July 2003, <https://www.rfc-editor.org/info/rfc3550>.

[RFC3556] Casner, S., "Session Description Protocol (SDP) Bandwidth Modifiers for RTP Control Protocol (RTCP) Bandwidth", RFC 3556, DOI 10.17487/RFC3556, July 2003, <https://www.rfc-editor.org/info/rfc3556>.

[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>.

[RFC4575] Rosenberg, J., Schulzrinne, H., and O. Levin, Ed., "A Session Initiation Protocol (SIP) Event Package for Conference State", RFC 4575, DOI 10.17487/RFC4575, August 2006, <https://www.rfc-editor.org/info/rfc4575>.

[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>.

[RFC4796] Hautakorpi, J. and G. Camarillo, "The Session Description Protocol (SDP) Content Attribute", RFC 4796, DOI 10.17487/RFC4796, February 2007, <https://www.rfc-editor.org/info/rfc4796>.

[RFC5124] Ott, J. and E. Carrara, "Extended Secure RTP Profile for Real-time Transport Control Protocol (RTCP)-Based Feedback (RTP/SAVPF)", RFC 5124, DOI 10.17487/RFC5124, February 2008, <https://www.rfc-editor.org/info/rfc5124>.

[RFC5506] Johansson, I. and M. Westerlund, "Support for Reduced-Size Real-Time Transport Control Protocol (RTCP): Opportunities and Consequences", RFC 5506, DOI 10.17487/RFC5506, April 2009, <https://www.rfc-editor.org/info/rfc5506>.

[RFC6562] Perkins, C. and JM. Valin, "Guidelines for the Use of Variable Bit Rate Audio with Secure RTP", RFC 6562, DOI 10.17487/RFC6562, March 2012, <https://www.rfc-editor.org/info/rfc6562>.

[RFC7022] Begen, A., Perkins, C., Wing, D., and E. Rescorla, "Guidelines for Choosing RTP Control Protocol (RTCP) Canonical Names (CNAMEs)", RFC 7022, DOI 10.17487/RFC7022, September 2013, <https://www.rfc-editor.org/info/rfc7022>.

[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>.

[RFC7202] Perkins, C. and M. Westerlund, "Securing the RTP Framework: Why RTP Does Not Mandate a Single Media Security Solution", RFC 7202, DOI 10.17487/RFC7202, April 2014, <https://www.rfc-editor.org/info/rfc7202>.

[RFC7205] Romanow, A., Botzko, S., Duckworth, M., and R. Even, Ed., "Use Cases for Telepresence Multistreams", RFC 7205, DOI 10.17487/RFC7205, April 2014, <https://www.rfc-editor.org/info/rfc7205>.

[RFC7667] Westerlund, M. and S. Wenger, "RTP Topologies", RFC 7667, DOI 10.17487/RFC7667, November 2015, <https://www.rfc-editor.org/info/rfc7667>.

[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>.

[RFC8285] Singer, D., Desineni, H., and R. Even, Ed., "A General Mechanism for RTP Header Extensions", RFC 8285, DOI 10.17487/RFC8285, October 2017, <https://www.rfc-editor.org/info/rfc8285>.

[RFC8848] Hanton, R., Kyzivat, P., Xiao, L., and C. Groves, "Session Signaling for Controlling Multiple Streams for Telepresence (CLUE)", RFC 8848, DOI 10.17487/RFC8848, January 2021, <https://www.rfc-editor.org/info/rfc8848>.


Acknowledgments 🫢

big thank-yous to Allyn Romanow and Paul Witty, who contributed text to this work πŸ’– and Magnus Westerlund, who helped draft the security section πŸ”₯


Authors' Addresses πŸ¦‹

Roni Even Tel Aviv Israel

Email: ron.even.tlv@gmail.com

Jonathan Lennox 8x8, Inc. / Jitsi Jersey City, NJ 07302 United States of America

Email: jonathan.lennox@8x8.com

πŸ“¦ where this page comes from