summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc8888.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/rfc8888.txt
parentea76e11061bda059ae9f9ad130a9895cc85607db (diff)
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc8888.txt')
-rw-r--r--doc/rfc/rfc8888.txt731
1 files changed, 731 insertions, 0 deletions
diff --git a/doc/rfc/rfc8888.txt b/doc/rfc/rfc8888.txt
new file mode 100644
index 0000000..7f0985b
--- /dev/null
+++ b/doc/rfc/rfc8888.txt
@@ -0,0 +1,731 @@
+
+
+
+
+Internet Engineering Task Force (IETF) Z. Sarker
+Request for Comments: 8888 Ericsson AB
+Category: Standards Track C. Perkins
+ISSN: 2070-1721 University of Glasgow
+ V. Singh
+ callstats.io
+ M. Ramalho
+ AcousticComms
+ January 2021
+
+
+ RTP Control Protocol (RTCP) Feedback for Congestion Control
+
+Abstract
+
+ An effective RTP congestion control algorithm requires more fine-
+ grained feedback on packet loss, timing, and Explicit Congestion
+ Notification (ECN) marks than is provided by the standard RTP Control
+ Protocol (RTCP) Sender Report (SR) and Receiver Report (RR) packets.
+ This document describes an RTCP feedback message intended to enable
+ congestion control for interactive real-time traffic using RTP. The
+ feedback message is designed for use with a sender-based congestion
+ control algorithm, in which the receiver of an RTP flow sends back to
+ the sender RTCP feedback packets containing the information the
+ sender needs to perform congestion control.
+
+Status of This Memo
+
+ This is an Internet Standards Track document.
+
+ This document is a product of the Internet Engineering Task Force
+ (IETF). It represents the consensus of the IETF community. It has
+ received public review and has been approved for publication by the
+ Internet Engineering Steering Group (IESG). Further information on
+ Internet Standards is available in Section 2 of RFC 7841.
+
+ Information about the current status of this document, any errata,
+ and how to provide feedback on it may be obtained at
+ https://www.rfc-editor.org/info/rfc8888.
+
+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. Terminology
+ 3. RTCP Feedback for Congestion Control
+ 3.1. RTCP Congestion Control Feedback Report
+ 4. Feedback Frequency and Overhead
+ 5. Response to Loss of Feedback Packets
+ 6. SDP Signaling
+ 7. Relationship to RFC 6679
+ 8. Design Rationale
+ 9. IANA Considerations
+ 10. Security Considerations
+ 11. References
+ 11.1. Normative References
+ 11.2. Informative References
+ Acknowledgements
+ Authors' Addresses
+
+1. Introduction
+
+ For interactive real-time traffic, such as video conferencing flows,
+ the typical protocol choice is the Real-time Transport Protocol (RTP)
+ [RFC3550] running over the User Datagram Protocol (UDP). RTP does
+ not provide any guarantee of Quality of Service (QoS), reliability,
+ or timely delivery, and expects the underlying transport protocol to
+ do so. UDP alone certainly does not meet that expectation. However,
+ the RTP Control Protocol (RTCP) [RFC3550] provides a mechanism by
+ which the receiver of an RTP flow can periodically send transport and
+ media quality metrics to the sender of that RTP flow. This
+ information can be used by the sender to perform congestion control.
+ In the absence of standardized messages for this purpose, designers
+ of congestion control algorithms have developed proprietary RTCP
+ messages that convey only those parameters needed for their
+ respective designs. As a direct result, the different congestion
+ control designs are not interoperable. To enable algorithm evolution
+ as well as interoperability across designs (e.g., different rate
+ adaptation algorithms), it is highly desirable to have a generic
+ congestion control feedback format.
+
+ To help achieve interoperability for unicast RTP congestion control,
+ this memo specifies a common RTCP feedback packet format that can be
+ used by Network-Assisted Dynamic Adaptation (NADA) [RFC8698], Self-
+ Clocked Rate Adaptation for Multimedia (SCReAM) [RFC8298], Google
+ Congestion Control [Google-GCC], and Shared Bottleneck Detection
+ [RFC8382], and, hopefully, also by future RTP congestion control
+ algorithms.
+
+2. Terminology
+
+ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+ "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
+ "OPTIONAL" in this document are to be interpreted as described in
+ BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
+ capitals, as shown here.
+
+ In addition, the terminology defined in [RFC3550], [RFC4585], and
+ [RFC5506] applies.
+
+3. RTCP Feedback for Congestion Control
+
+ Based on an analysis of NADA [RFC8698], SCReAM [RFC8298], Google
+ Congestion Control [Google-GCC], and Shared Bottleneck Detection
+ [RFC8382], the following per-RTP packet congestion control feedback
+ information has been determined to be necessary:
+
+ RTP Sequence Number: The receiver of an RTP flow needs to feed the
+ sequence numbers of the received RTP packets back to the sender,
+ so the sender can determine which packets were received and which
+ were lost. Packet loss is used as an indication of congestion by
+ many congestion control algorithms.
+
+ Packet Arrival Time: The receiver of an RTP flow needs to feed the
+ arrival time of each RTP packet back to the sender. Packet delay
+ and/or delay variation (jitter) is used as a congestion signal by
+ some congestion control algorithms.
+
+ Packet Explicit Congestion Notification (ECN) Marking: If ECN
+ [RFC3168] [RFC6679] is used, it is necessary to feed back the
+ 2-bit ECN mark in received RTP packets, indicating for each RTP
+ packet whether it is marked not-ECT, ECT(0), ECT(1), or ECN
+ Congestion Experienced (ECN-CE). ("ECT" stands for "ECN-Capable
+ Transport".) If the path used by the RTP traffic is ECN capable,
+ the sender can use ECN-CE marking information as a congestion
+ control signal.
+
+ Every RTP flow is identified by its Synchronization Source (SSRC)
+ identifier. Accordingly, the RTCP feedback format needs to group its
+ reports by SSRC, sending one report block per received SSRC.
+
+ As a practical matter, we note that host operating system (OS)
+ process interruptions can occur at inopportune times. Accordingly,
+ recording RTP packet send times at the sender, and the corresponding
+ RTP packet arrival times at the receiver, needs to be done with
+ deliberate care. This is because the time duration of host OS
+ interruptions can be significant relative to the precision desired in
+ the one-way delay estimates. Specifically, the send time needs to be
+ recorded at the last opportunity prior to transmitting the RTP packet
+ at the sender, and the arrival time at the receiver needs to be
+ recorded at the earliest available opportunity.
+
+3.1. RTCP Congestion Control Feedback Report
+
+ Congestion control feedback can be sent as part of a regular
+ scheduled RTCP report or in an RTP/AVPF early feedback packet. If
+ sent as early feedback, congestion control feedback MAY be sent in a
+ non-compound RTCP packet [RFC5506] if the RTP/AVPF profile [RFC4585]
+ or the RTP/SAVPF profile [RFC5124] is used.
+
+ Irrespective of how it is transported, the congestion control
+ feedback is sent as a Transport-Layer Feedback Message (RTCP packet
+ type 205). The format of this RTCP packet is shown in Figure 1:
+
+ 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
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |V=2|P| FMT=11 | PT = 205 | length |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | SSRC of RTCP packet sender |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | SSRC of 1st RTP Stream |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | begin_seq | num_reports |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |R|ECN| Arrival time offset | ... .
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ . .
+ . .
+ . .
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | SSRC of nth RTP Stream |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | begin_seq | num_reports |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ |R|ECN| Arrival time offset | ... |
+ . .
+ . .
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ | Report Timestamp (32 bits) |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+
+ Figure 1: RTCP Congestion Control Feedback Packet Format
+
+ The first 8 octets comprise a standard RTCP header, with PT=205 and
+ FMT=11 indicating that this is a congestion control feedback packet,
+ and with the SSRC set to that of the sender of the RTCP packet.
+
+ Section 6.1 of [RFC4585] requires the RTCP header to be followed by
+ the SSRC of the RTP flow being reported upon. Accordingly, the RTCP
+ header is followed by a report block for each SSRC from which RTP
+ packets have been received, followed by a Report Timestamp.
+
+ Each report block begins with the SSRC of the received RTP stream on
+ which it is reporting. Following this, the report block contains a
+ 16-bit packet metric block for each RTP packet that has a sequence
+ number in the range begin_seq to begin_seq+num_reports inclusive
+ (calculated using arithmetic modulo 65536 to account for possible
+ sequence number wrap-around). If the number of 16-bit packet metric
+ blocks included in the report block is not a multiple of two, then 16
+ bits of zero padding MUST be added after the last packet metric
+ block, to align the end of the packet metric blocks with the next
+ 32-bit boundary. The value of num_reports MAY be 0, indicating that
+ there are no packet metric blocks included for that SSRC. Each
+ report block MUST NOT include more than 16384 packet metric blocks
+ (i.e., it MUST NOT report on more than one quarter of the sequence
+ number space in a single report).
+
+ The contents of each 16-bit packet metric block comprise the R, ECN,
+ and ATO fields as follows:
+
+ Received (R, 1 bit): A boolean that indicates whether the packet was
+ received. 0 indicates that the packet was not yet received and
+ the subsequent 15 bits (ECN and ATO) in this 16-bit packet metric
+ block are also set to 0 and MUST be ignored. 1 indicates that the
+ packet was received and the subsequent bits in the block need to
+ be parsed.
+
+ ECN (2 bits): The echoed ECN mark of the packet. These bits are set
+ to 00 if not received or if ECN is not used.
+
+ Arrival time offset (ATO, 13 bits): The arrival time of the RTP
+ packet at the receiver, as an offset before the time represented
+ by the Report Timestamp (RTS) field of this RTCP congestion
+ control feedback report. The ATO field is in units of 1/1024
+ seconds (this unit is chosen to give exact offsets from the RTS
+ field) so, for example, an ATO value of 512 indicates that the
+ corresponding RTP packet arrived exactly half a second before the
+ time instant represented by the RTS field. If the measured value
+ is greater than 8189/1024 seconds (the value that would be coded
+ as 0x1FFD), the value 0x1FFE MUST be reported to indicate an over-
+ range measurement. If the measurement is unavailable or if the
+ arrival time of the RTP packet is after the time represented by
+ the RTS field, then an ATO value of 0x1FFF MUST be reported for
+ the packet.
+
+ The RTCP congestion control feedback report packet concludes with the
+ Report Timestamp field (RTS, 32 bits). This denotes the time instant
+ on which this packet is reporting and is the instant from which the
+ arrival time offset values are calculated. The value of the RTS
+ field is derived from the same clock used to generate the NTP
+ timestamp field in RTCP Sender Report (SR) packets. It is formatted
+ as the middle 32 bits of an NTP format timestamp, as described in
+ Section 4 of [RFC3550].
+
+ RTCP Congestion Control Feedback Packets SHOULD include a report
+ block for every active SSRC. The sequence number ranges reported on
+ in consecutive reports for a given SSRC will generally be contiguous,
+ but overlapping reports MAY be sent (and need to be sent in cases
+ where RTP packet reordering occurs across the boundary between
+ consecutive reports). If an RTP packet was reported as received in
+ one report, that packet MUST also be reported as received in any
+ overlapping reports sent later that cover its sequence number range.
+ If feedback reports covering overlapping sequence number ranges are
+ sent, information in later feedback reports may update any data sent
+ in previous reports for RTP packets included in both feedback
+ reports.
+
+ RTCP Congestion Control Feedback Packets can be large if they are
+ sent infrequently relative to the number of RTP data packets. If an
+ RTCP Congestion Control Feedback Packet is too large to fit within
+ the path MTU, its sender SHOULD split it into multiple feedback
+ packets. The RTCP reporting interval SHOULD be chosen such that
+ feedback packets are sent often enough that they are small enough to
+ fit within the path MTU. ([RTCP-Multimedia-Feedback] discusses how
+ to choose the reporting interval; specifications for RTP congestion
+ control algorithms can also provide guidance.)
+
+ If duplicate copies of a particular RTP packet are received, then the
+ arrival time of the first copy to arrive MUST be reported. If any of
+ the copies of the duplicated packet are ECN-CE marked, then an ECN-CE
+ mark MUST be reported for that packet; otherwise, the ECN mark of the
+ first copy to arrive is reported.
+
+ If no packets are received from an SSRC in a reporting interval, a
+ report block MAY be sent with begin_seq set to the highest sequence
+ number previously received from that SSRC and num_reports set to 0
+ (or the report can simply be omitted). The corresponding Sender
+ Report / Receiver Report (SR/RR) packet will have a non-increased
+ extended highest sequence number received field that will inform the
+ sender that no packets have been received, but it can ease processing
+ to have that information available in the congestion control feedback
+ reports too.
+
+ A report block indicating that certain RTP packets were lost is not
+ to be interpreted as a request to retransmit the lost packets. The
+ receiver of such a report might choose to retransmit such packets,
+ provided a retransmission payload format has been negotiated, but
+ there is no requirement that it do so.
+
+4. Feedback Frequency and Overhead
+
+ There is a trade-off between speed and accuracy of reporting, and the
+ overhead of the reports. [RTCP-Multimedia-Feedback] discusses this
+ trade-off, suggests desirable RTCP feedback rates, and provides
+ guidance on how to configure, for example, the RTCP bandwidth
+ fraction to make appropriate use of the reporting block described in
+ this memo. Specifications for RTP congestion control algorithms can
+ also provide guidance.
+
+ It is generally understood that congestion control algorithms work
+ better with more frequent feedback. However, RTCP bandwidth and
+ transmission rules put some upper limits on how frequently the RTCP
+ feedback messages can be sent from an RTP receiver to the RTP sender.
+ In many cases, sending feedback once per frame is an upper bound
+ before the reporting overhead becomes excessive, although this will
+ depend on the media rate and more frequent feedback might be needed
+ with high-rate media flows [RTCP-Multimedia-Feedback]. Analysis
+ [feedback-requirements] has also shown that some candidate congestion
+ control algorithms can operate with less frequent feedback, using a
+ feedback interval range of 50-200 ms. Applications need to negotiate
+ an appropriate congestion control feedback interval at session setup
+ time, based on the choice of congestion control algorithm, the
+ expected media bitrate, and the acceptable feedback overhead.
+
+5. Response to Loss of Feedback Packets
+
+ Like all RTCP packets, RTCP Congestion Control Feedback Packets might
+ be lost. All RTP congestion control algorithms MUST specify how they
+ respond to the loss of feedback packets.
+
+ RTCP packets do not contain a sequence number, so loss of feedback
+ packets has to be inferred based on the time since the last feedback
+ packet. If only a single congestion control feedback packet is lost,
+ an appropriate response is to assume that the level of congestion has
+ remained roughly the same as the previous report. However, if
+ multiple consecutive congestion control feedback packets are lost,
+ then the media sender SHOULD rapidly reduce its sending rate as this
+ likely indicates a path failure. The RTP circuit breaker
+ specification [RFC8083] provides further guidance.
+
+6. SDP Signaling
+
+ A new "ack" feedback parameter, "ccfb", is defined for use with the
+ "a=rtcp-fb:" Session Description Protocol (SDP) extension to indicate
+ the use of the RTP Congestion Control Feedback Packet format defined
+ in Section 3. The ABNF definition [RFC5234] of this SDP parameter
+ extension is:
+
+ rtcp-fb-ack-param = <See Section 4.2 of [RFC4585]>
+ rtcp-fb-ack-param =/ ccfb-par
+ ccfb-par = SP "ccfb"
+
+ The payload type used with "ccfb" feedback MUST be the wildcard type
+ ("*"). This implies that the congestion control feedback is sent for
+ all payload types in use in the session, including any Forward Error
+ Correction (FEC) and retransmission payload types. An example of the
+ resulting SDP attribute is:
+
+ a=rtcp-fb:* ack ccfb
+
+ The offer/answer rules for these SDP feedback parameters are
+ specified in Section 4.2 of the RTP/AVPF profile [RFC4585].
+
+ An SDP offer might indicate support for both the congestion control
+ feedback mechanism specified in this memo and one or more alternative
+ congestion control feedback mechanisms that offer substantially the
+ same semantics. In this case, the answering party SHOULD include
+ only one of the offered congestion control feedback mechanisms in its
+ answer. If a subsequent offer containing the same set of congestion
+ control feedback mechanisms is received, the generated answer SHOULD
+ choose the same congestion control feedback mechanism as in the
+ original answer where possible.
+
+ When the SDP BUNDLE extension [RFC8843] is used for multiplexing, the
+ "a=rtcp-fb:" attribute has multiplexing category IDENTICAL-PER-PT
+ [RFC8859].
+
+7. Relationship to RFC 6679
+
+ The use of Explicit Congestion Notification (ECN) with RTP is
+ described in [RFC6679], which specifies how to negotiate the use of
+ ECN with RTP and defines an RTCP ECN Feedback Packet to carry ECN
+ feedback reports. It uses an SDP "a=ecn-capable-rtp:" attribute to
+ negotiate the use of ECN, and the "a=rtcp-fb:" attribute with the
+ "nack" parameter "ecn" to negotiate the use of RTCP ECN Feedback
+ Packets.
+
+ The RTCP ECN Feedback Packet is not useful when ECN is used with the
+ RTP Congestion Control Feedback Packet defined in this memo, since it
+ provides duplicate information. When congestion control feedback is
+ to be used with RTP and ECN, the SDP offer generated MUST include an
+ "a=ecn-capable-rtp:" attribute to negotiate ECN support, along with
+ an "a=rtcp-fb:" attribute with the "ack" parameter "ccfb" to indicate
+ that the RTP Congestion Control Feedback Packet can be used. The
+ "a=rtcp-fb:" attribute MAY also include the "nack" parameter "ecn" to
+ indicate that the RTCP ECN Feedback Packet is also supported. If an
+ SDP offer signals support for both RTP Congestion Control Feedback
+ Packets and the RTCP ECN Feedback Packet, the answering party SHOULD
+ signal support for one, but not both, formats in its SDP answer to
+ avoid sending duplicate feedback.
+
+ When using ECN with RTP, the guidelines in Section 7.2 of [RFC6679]
+ MUST be followed to initiate the use of ECN in an RTP session. The
+ guidelines in Section 7.3 of [RFC6679] regarding the ongoing use of
+ ECN within an RTP session MUST also be followed, with the exception
+ that feedback is sent using the RTCP Congestion Control Feedback
+ Packets described in this memo rather than using RTP ECN Feedback
+ Packets. Similarly, the guidance in Section 7.4 of [RFC6679] related
+ to detecting failures MUST be followed, with the exception that the
+ necessary information is retrieved from the RTCP Congestion Control
+ Feedback Packets rather than from RTP ECN Feedback Packets.
+
+8. Design Rationale
+
+ The primary function of RTCP SR/RR packets is to report statistics on
+ the reception of RTP packets. The reception report blocks sent in
+ these packets contain information about observed jitter, fractional
+ packet loss, and cumulative packet loss. It was intended that this
+ information could be used to support congestion control algorithms,
+ but experience has shown that it is not sufficient for that purpose.
+ An efficient congestion control algorithm requires more fine-grained
+ information on per-packet reception quality than is provided by SR/RR
+ packets to react effectively. The feedback format defined in this
+ memo provides such fine-grained feedback.
+
+ Several other RTCP extensions also provide more detailed feedback
+ than SR/RR packets:
+
+ TMMBR: The codec control messages for the RTP/AVPF profile [RFC5104]
+ include a Temporary Maximum Media Stream Bit Rate Request (TMMBR)
+ message. This is used to convey a temporary maximum bitrate
+ limitation from a receiver of RTP packets to their sender. Even
+ though it was not designed to replace congestion control, TMMBR
+ has been used as a means to do receiver-based congestion control
+ where the session bandwidth is high enough to send frequent TMMBR
+ messages, especially when used with non-compound RTCP packets
+ [RFC5506]. This approach requires the receiver of the RTP packets
+ to monitor their reception, determine the level of congestion, and
+ recommend a maximum bitrate suitable for current available
+ bandwidth on the path; it also assumes that the RTP sender
+ can/will respect that bitrate. This is the opposite of the
+ sender-based congestion control approach suggested in this memo,
+ so TMMBR cannot be used to convey the information needed for
+ sender-based congestion control. TMMBR could, however, be viewed
+ as a complementary mechanism that can inform the sender of the
+ receiver's current view of an acceptable maximum bitrate.
+ Mechanisms that convey the receiver's estimate of the maximum
+ available bitrate provide similar feedback.
+
+ RTCP Extended Reports (XRs): Numerous RTCP XR blocks have been
+ defined to report details of packet loss, arrival times [RFC3611],
+ delay [RFC6843], and ECN marking [RFC6679]. It is possible to
+ combine several such XR blocks into a compound RTCP packet, to
+ report the detailed loss, arrival time, and ECN marking
+ information needed for effective sender-based congestion control.
+ However, the result has high overhead in terms of both bandwidth
+ and complexity, due to the need to stack multiple reports.
+
+ Transport-wide Congestion Control: The format defined in this memo
+ provides individual feedback on each SSRC. An alternative is to
+ add a header extension to each RTP packet, containing a single,
+ transport-wide, packet sequence number, then have the receiver
+ send RTCP reports giving feedback on these additional sequence
+ numbers [RTP-Ext-for-CC]. Such an approach increases the size of
+ each RTP packet by 8 octets, due to the header extension, but
+ reduces the size of the RTCP feedback packets, and can simplify
+ the rate calculation at the sender if it maintains a single rate
+ limit that applies to all RTP packets sent, irrespective of their
+ SSRC. Equally, the use of transport-wide feedback makes it more
+ difficult to adapt the sending rate, or respond to lost packets,
+ based on the reception and/or loss patterns observed on a per-SSRC
+ basis (for example, to perform differential rate control and
+ repair for audio and video flows, based on knowledge of what
+ packets from each flow were lost). Transport-wide feedback is
+ also a less natural fit with the wider RTP framework, which makes
+ extensive use of per-SSRC sequence numbers and feedback.
+
+ Considering these issues, we believe it appropriate to design a new
+ RTCP feedback mechanism to convey information for sender-based
+ congestion control algorithms. The new congestion control feedback
+ RTCP packet described in Section 3 provides such a mechanism.
+
+9. IANA Considerations
+
+ The IANA has registered one new RTP/AVPF Transport-Layer Feedback
+ Message in the "FMT Values for RTPFB Payload Types" table [RFC4585]
+ as defined in Section 3.1:
+
+ Name: CCFB
+ Long name: RTP Congestion Control Feedback
+ Value: 11
+ Reference: RFC 8888
+
+ The IANA has also registered one new SDP "rtcp-fb" attribute "ack"
+ parameter, "ccfb", in the SDP '"ack" and "nack" Attribute Values'
+ registry:
+
+ Value name: ccfb
+ Long name: Congestion Control Feedback
+ Usable with: ack
+ Mux: IDENTICAL-PER-PT
+ Reference: RFC 8888
+
+10. Security Considerations
+
+ The security considerations of the RTP specification [RFC3550], the
+ applicable RTP profile (e.g., [RFC3551], [RFC3711], or [RFC4585]),
+ and the RTP congestion control algorithm being used (e.g., [RFC8698],
+ [RFC8298], [Google-GCC], or [RFC8382]) apply.
+
+ A receiver that intentionally generates inaccurate RTCP congestion
+ control feedback reports might be able to trick the sender into
+ sending at a greater rate than the path can support, thereby causing
+ congestion on the path. This scenario will negatively impact the
+ quality of experience of that receiver, potentially causing both
+ denial of service to other traffic sharing the path and excessively
+ increased resource usage at the media sender. Since RTP is an
+ unreliable transport, a sender can intentionally drop a packet,
+ leaving a gap in the RTP sequence number space without causing
+ serious harm, to check that the receiver is correctly reporting
+ losses. (This needs to be done with care and some awareness of the
+ media data being sent, to limit impact on the user experience.)
+
+ An on-path attacker that can modify RTCP Congestion Control Feedback
+ Packets can change the reports to trick the sender into sending at
+ either an excessively high or excessively low rate, leading to denial
+ of service. The secure RTCP profile [RFC3711] can be used to
+ authenticate RTCP packets to protect against this attack.
+
+ An off-path attacker that can spoof RTCP Congestion Control Feedback
+ Packets can similarly trick a sender into sending at an incorrect
+ rate, leading to denial of service. This attack is difficult, since
+ the attacker needs to guess the SSRC and sequence number in addition
+ to the destination transport address. As with on-path attacks, the
+ secure RTCP profile [RFC3711] can be used to authenticate RTCP
+ packets to protect against this attack.
+
+11. References
+
+11.1. Normative References
+
+ [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119,
+ DOI 10.17487/RFC2119, March 1997,
+ <https://www.rfc-editor.org/info/rfc2119>.
+
+ [RFC3168] Ramakrishnan, K., Floyd, S., and D. Black, "The Addition
+ of Explicit Congestion Notification (ECN) to IP",
+ RFC 3168, DOI 10.17487/RFC3168, September 2001,
+ <https://www.rfc-editor.org/info/rfc3168>.
+
+ [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>.
+
+ [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>.
+
+ [RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax
+ Specifications: ABNF", STD 68, RFC 5234,
+ DOI 10.17487/RFC5234, January 2008,
+ <https://www.rfc-editor.org/info/rfc5234>.
+
+ [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>.
+
+ [RFC6679] Westerlund, M., Johansson, I., Perkins, C., O'Hanlon, P.,
+ and K. Carlberg, "Explicit Congestion Notification (ECN)
+ for RTP over UDP", RFC 6679, DOI 10.17487/RFC6679, August
+ 2012, <https://www.rfc-editor.org/info/rfc6679>.
+
+ [RFC8083] Perkins, C. and V. Singh, "Multimedia Congestion Control:
+ Circuit Breakers for Unicast RTP Sessions", RFC 8083,
+ DOI 10.17487/RFC8083, March 2017,
+ <https://www.rfc-editor.org/info/rfc8083>.
+
+ [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>.
+
+ [RFC8859] Nandakumar, S., "A Framework for Session Description
+ Protocol (SDP) Attributes When Multiplexing", RFC 8859,
+ DOI 10.17487/RFC8859, January 2021,
+ <https://www.rfc-editor.org/info/rfc8859>.
+
+11.2. Informative References
+
+ [feedback-requirements]
+ "RMCAT Feedback Requirements", IETF 95, April 2016,
+ <https://www.ietf.org/proceedings/95/slides/slides-95-
+ rmcat-1.pdf>.
+
+ [Google-GCC]
+ Holmer, S., Lundin, H., Carlucci, G., De Cicco, L., and S.
+ Mascolo, "A Google Congestion Control Algorithm for Real-
+ Time Communication", Work in Progress, Internet-Draft,
+ draft-ietf-rmcat-gcc-02, 8 July 2016,
+ <https://tools.ietf.org/html/draft-ietf-rmcat-gcc-02>.
+
+ [RFC3611] Friedman, T., Ed., Caceres, R., Ed., and A. Clark, Ed.,
+ "RTP Control Protocol Extended Reports (RTCP XR)",
+ RFC 3611, DOI 10.17487/RFC3611, November 2003,
+ <https://www.rfc-editor.org/info/rfc3611>.
+
+ [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>.
+
+ [RFC6843] Clark, A., Gross, K., and Q. Wu, "RTP Control Protocol
+ (RTCP) Extended Report (XR) Block for Delay Metric
+ Reporting", RFC 6843, DOI 10.17487/RFC6843, January 2013,
+ <https://www.rfc-editor.org/info/rfc6843>.
+
+ [RFC8298] Johansson, I. and Z. Sarker, "Self-Clocked Rate Adaptation
+ for Multimedia", RFC 8298, DOI 10.17487/RFC8298, December
+ 2017, <https://www.rfc-editor.org/info/rfc8298>.
+
+ [RFC8382] Hayes, D., Ed., Ferlin, S., Welzl, M., and K. Hiorth,
+ "Shared Bottleneck Detection for Coupled Congestion
+ Control for RTP Media", RFC 8382, DOI 10.17487/RFC8382,
+ June 2018, <https://www.rfc-editor.org/info/rfc8382>.
+
+ [RFC8698] Zhu, X., Pan, R., Ramalho, M., and S. Mena, "Network-
+ Assisted Dynamic Adaptation (NADA): A Unified Congestion
+ Control Scheme for Real-Time Media", RFC 8698,
+ DOI 10.17487/RFC8698, February 2020,
+ <https://www.rfc-editor.org/info/rfc8698>.
+
+ [RTCP-Multimedia-Feedback]
+ Perkins, C., "RTP Control Protocol (RTCP) Feedback for
+ Congestion Control in Interactive Multimedia Conferences",
+ Work in Progress, Internet-Draft, draft-ietf-rmcat-rtp-cc-
+ feedback-05, 4 November 2019,
+ <https://tools.ietf.org/html/draft-ietf-rmcat-rtp-cc-
+ feedback-05>.
+
+ [RTP-Ext-for-CC]
+ Holmer, S., Flodman, M., and E. Sprang, "RTP Extensions
+ for Transport-wide Congestion Control", Work in Progress,
+ Internet-Draft, draft-holmer-rmcat-transport-wide-cc-
+ extensions-01, 19 October 2015,
+ <https://tools.ietf.org/html/draft-holmer-rmcat-transport-
+ wide-cc-extensions-01>.
+
+Acknowledgements
+
+ This document is based on the outcome of a design team discussion in
+ the RTP Media Congestion Avoidance Techniques (RMCAT) Working Group.
+ The authors would like to thank David Hayes, Stefan Holmer, Randell
+ Jesup, Ingemar Johansson, Jonathan Lennox, Sergio Mena, Nils
+ Ohlmeier, Magnus Westerlund, and Xiaoqing Zhu for their valuable
+ feedback.
+
+Authors' Addresses
+
+ Zaheduzzaman Sarker
+ Ericsson AB
+ Torshamnsgatan 23
+ SE-164 83 Stockholm
+ Sweden
+
+ Phone: +46 10 717 37 43
+ Email: zaheduzzaman.sarker@ericsson.com
+
+
+ Colin Perkins
+ University of Glasgow
+ School of Computing Science
+ Glasgow
+ G12 8QQ
+ United Kingdom
+
+ Email: csp@csperkins.org
+
+
+ Varun Singh
+ CALLSTATS I/O Oy
+ Annankatu 31-33 C 42
+ FI-00100 Helsinki
+ Finland
+
+ Email: varun.singh@iki.fi
+ URI: https://www.callstats.io/
+
+
+ Michael A. Ramalho
+ AcousticComms Consulting
+ 6310 Watercrest Way Unit 203
+ Lakewood Ranch, FL 34202-5122
+ United States of America
+
+ Phone: +1 732 832 9723
+ Email: mar42@cornell.edu
+ URI: http://ramalho.webhop.info/