rfc9392.original | rfc9392.txt | |||
---|---|---|---|---|
Network Working Group C. S. Perkins | Internet Engineering Task Force (IETF) C. Perkins | |||
Internet-Draft University of Glasgow | Request for Comments: 9392 University of Glasgow | |||
Intended status: Informational 21 December 2022 | Category: Informational April 2023 | |||
Expires: 24 June 2023 | ISSN: 2070-1721 | |||
Sending RTP Control Protocol (RTCP) Feedback for Congestion Control in | Sending RTP Control Protocol (RTCP) Feedback for Congestion Control in | |||
Interactive Multimedia Conferences | Interactive Multimedia Conferences | |||
draft-ietf-rmcat-rtp-cc-feedback-12 | ||||
Abstract | Abstract | |||
This memo discusses the rate at which congestion control feedback can | This memo discusses the rate at which congestion control feedback can | |||
be sent using the RTP Control Protocol (RTCP) and its suitability for | be sent using the RTP Control Protocol (RTCP) and the suitability of | |||
implementing congestion control for unicast multimedia applications. | RTCP for implementing congestion control for unicast multimedia | |||
applications. | ||||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This document is not an Internet Standards Track specification; it is | |||
provisions of BCP 78 and BCP 79. | published for informational purposes. | |||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Not all documents | |||
approved by the IESG are candidates for any level of Internet | ||||
Standard; see Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on 24 June 2023. | 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/rfc9392. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2022 IETF Trust and the persons identified as the | Copyright (c) 2023 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
extracted from this document must include Revised BSD License text as | to this document. Code Components extracted from this document must | |||
described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
provided without warranty as described in the Revised BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
in the Revised BSD License. | ||||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction | |||
2. Considerations for RTCP Feedback . . . . . . . . . . . . . . 3 | 1.1. Terminology | |||
3. What Feedback is Achievable With RTCP? . . . . . . . . . . . 5 | 2. Considerations for RTCP Feedback | |||
3.1. Scenario 1: Voice Telephony . . . . . . . . . . . . . . . 5 | 3. What Feedback is Achievable with RTCP? | |||
3.2. Scenario 2: Point-to-Point Video Conference . . . . . . . 10 | 3.1. Scenario 1: Voice Telephony | |||
4. Discussion and Conclusions . . . . . . . . . . . . . . . . . 15 | 3.2. Scenario 2: Point-to-Point Video Conference | |||
5. Security Considerations . . . . . . . . . . . . . . . . . . . 16 | 4. Discussion and Conclusions | |||
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 16 | 5. Security Considerations | |||
7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 17 | 6. IANA Considerations | |||
8. Normative References . . . . . . . . . . . . . . . . . . . . 17 | 7. Normative References | |||
9. Informative References . . . . . . . . . . . . . . . . . . . 18 | 8. Informative References | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 19 | Acknowledgements | |||
Author's Address | ||||
1. Introduction | 1. Introduction | |||
The deployment of WebRTC systems [RFC8825] has resulted in high- | The deployment of WebRTC systems [RFC8825] has resulted in high- | |||
quality video conferencing seeing extremely wide use. To ensure the | quality video conferencing seeing extremely wide use. To ensure the | |||
stability of the network in the face of this use, WebRTC systems need | stability of the network in the face of this use, WebRTC systems need | |||
to use some form of congestion control for their RTP-based media | to use some form of congestion control for their RTP-based media | |||
traffic [RFC2914], [RFC8085], [RFC8083], [RFC8834], allowing them to | traffic [RFC2914] [RFC8083] [RFC8085] [RFC8834], allowing them to | |||
adapt and adjust the media data they send to match changes in the | adapt and adjust the media data they send to match changes in the | |||
available network capacity. In addition to ensuring the stable | available network capacity. In addition to ensuring the stable | |||
operation of the network, such adaptation is critical to ensuring a | operation of the network, such adaptation is critical to ensuring a | |||
good user experience, since it allows the sender to match the media | good user experience, since it allows the sender to match the media | |||
to the network capacity, rather than forcing the receiver to | to the network capacity, rather than forcing the receiver to | |||
compensate for uncontrolled packet loss when the available capacity | compensate for uncontrolled packet loss when the available capacity | |||
is exceeded. | is exceeded. | |||
To develop such congestion control, it is necessary to understand the | To develop such congestion control, it is necessary to understand the | |||
sort of congestion feedback that can be provided within the framework | sort of congestion feedback that can be provided within the framework | |||
of RTP [RFC3550] and the RTP Control Protocol (RTCP). It then | of RTP [RFC3550] and the RTP Control Protocol (RTCP). It then | |||
becomes possible to determine if this is sufficient for congestion | becomes possible to determine if this is sufficient for congestion | |||
control, or if some form of RTP extension is needed. | control or if some form of RTP extension is needed. | |||
As this memo will show, if it is desired to use RTCP in something | As this memo will show, if it is desired to use RTCP in something | |||
close to its current form for congestion feedback, the multimedia | close to its current form for congestion feedback, the multimedia | |||
congestion control algorithm needs to be designed to work with | congestion control algorithm needs to be designed to work with | |||
detailed feedback sent every few frames, rather than per-frame | detailed feedback sent every few frames, rather than per-frame | |||
acknowledgement, to match the constraints of RTCP. | acknowledgement, to match the constraints of RTCP. | |||
This memo considers unicast congestion feedback that can be sent | This memo considers unicast congestion feedback that can be sent | |||
using RTCP under the RTP/SAVPF profile [RFC5124] (the secure version | using RTCP under the RTP/SAVPF profile [RFC5124] (the secure version | |||
of the RTP/AVPF profile [RFC4585]). This profile was chosen as it | of the RTP/AVPF profile [RFC4585]). This profile was chosen because | |||
forms the basis for media transport in WebRTC [RFC8834] systems. | it forms the basis for media transport in WebRTC [RFC8834] systems. | |||
Nothing in this memo is specific to the secure version of the | However, nothing in this memo is specific to the secure version of | |||
profile, or to WebRTC, however. It is also assumed that the | the profile or to WebRTC. It is also assumed that the congestion | |||
congestion control feedback mechanism described in [RFC8888], and | control feedback mechanism described in [RFC8888] and common RTCP | |||
common RTCP extensions for efficient feedback [RFC5506], [RFC8108], | extensions for efficient feedback [RFC5506] [RFC8108] [RFC8861] | |||
[RFC8861], and [RFC8872] are used. | [RFC8872] are used. | |||
1.1. Terminology | ||||
Nr: number of frames between feedback reports | ||||
Nrs: number of reduced-size RTCP packets send for every compound | ||||
RTCP packet | ||||
Na: number of audio packets per report | ||||
Nv: number of video packets per reports | ||||
Sc: size of a compound RTCP packet | ||||
Srs: size of a reduced-size RTCP packet | ||||
Tf: duration of a media frame in seconds | ||||
Rf: frame rate 1/Tf | ||||
2. Considerations for RTCP Feedback | 2. Considerations for RTCP Feedback | |||
Several questions need to be answered when providing RTCP feedback | Several questions need to be answered when providing RTCP feedback | |||
for congestion control purposes. These include: | for congestion control purposes. These include: | |||
* How often is feedback needed? | * How often is feedback needed? | |||
* How much overhead is acceptable? | * How much overhead is acceptable? | |||
* How much, and what, data does each report contain? | * How much and what data does each report contain? | |||
The key question is how often does the receiver need to send feedback | However, the key question is as follows: how often does the receiver | |||
on the reception quality it is experiencing and hence the congestion | need to send feedback on the reception quality it is experiencing and | |||
state of the network? | hence the congestion state of the network? | |||
Widely used transport protocols, such as TCP, send acknowledgements | Widely used transport protocols, such as TCP, send acknowledgements | |||
frequently. For example, a TCP receiver will send an acknowledgement | frequently. For example, a TCP receiver will send an acknowledgement | |||
at least once every 0.5 seconds or when new data equal to twice the | at least once every 0.5 seconds or when new data equal to twice the | |||
maximum segment size has been received [RFC9293]). That has | maximum segment size has been received [RFC9293]. That has | |||
relatively low overhead when traffic is bidirectional and | relatively low overhead when traffic is bidirectional and | |||
acknowledgements can be piggybacked onto return path data packets. | acknowledgements can be piggybacked onto return path data packets. | |||
It can also be acceptable, and can have reasonable overhead, to send | It can also be acceptable, and can have reasonable overhead, to send | |||
separate acknowledgement packets when those packets are much smaller | separate acknowledgement packets when those packets are much smaller | |||
than data packets. | than data packets. | |||
Frequent acknowledgements can become a problem, however, when there | Frequent acknowledgements can become a problem, however, when there | |||
is no return traffic on which to piggyback feedback, or if separate | is no return traffic on which to piggyback feedback or if separate | |||
feedback and data packets are sent and the feedback is similar in | feedback and data packets are sent and the feedback is similar in | |||
size to the data being acknowledged. This can be the case for some | size to the data being acknowledged. This can be the case for some | |||
forms of media traffic, especially for voice over IP flows, leading | forms of media traffic, especially for Voice over IP (VoIP) flows, | |||
to high overhead when using a transport protocol that sends frequent | leading to high overhead when using a transport protocol that sends | |||
feedback. Approaches like in-network filtering of acknowledgements | frequent feedback. Approaches like in-network filtering of | |||
that have been proposed to reduce acknowledgement overheads on highly | acknowledgements that have been proposed to reduce acknowledgement | |||
asymmetric links (e.g., as mentioned in [RFC3449]) can also reduce | overheads on highly asymmetric links (e.g., as mentioned in | |||
the feedback frequency and overhead for multimedia traffic, but this | [RFC3449]) can also reduce the feedback frequency and overhead for | |||
so-called "stretch-ACK" behaviour is non-standard and not guaranteed. | multimedia traffic, but this so-called "stretch-ACK" behavior is | |||
nonstandard and not guaranteed. | ||||
Accordingly, when implementing congestion control for RTP-based | Accordingly, when implementing congestion control for RTP-based | |||
multimedia traffic, it might make sense to give the option of sending | multimedia traffic, it might make sense to give the option of sending | |||
congestion feedback less often than TCP does. For example, it might | congestion feedback less often than TCP does. For example, it might | |||
be possible to send a feedback packet once per video frame, or every | be possible to send a feedback packet once per video frame, every few | |||
few frames, or once per network round trip time (RTT). This could | frames, or once per network round-trip time (RTT). This could still | |||
still give sufficiently frequent feedback for the congestion control | give sufficiently frequent feedback for the congestion control loop | |||
loop to be stable and responsive while keeping the overhead | to be stable and responsive while keeping the overhead reasonable | |||
reasonable when the feedback cannot be piggybacked onto returning | when the feedback cannot be piggybacked onto returning data. In this | |||
data. In this case, it is important to note that RTCP can send much | case, it is important to note that RTCP can send much more detailed | |||
more detailed feedback than simple acknowledgements. For example, if | feedback than simple acknowledgements. For example, if it were | |||
it were useful, it could be possible to use an RTCP extended report | useful, it could be possible to use an RTCP extended report (XR) | |||
(XR) packet [RFC3611] to send feedback once per RTT comprising a | packet [RFC3611] to send feedback once per RTT; the feedback could | |||
bitmap of lost and received packets, with reception times, over that | comprise a bitmap of lost and received packets, with reception times, | |||
RTT. As long as feedback is sent frequently enough that the control | over that RTT. As long as feedback is sent frequently enough that | |||
loop is stable, and the sender is kept informed when data leaves the | the control loop is stable and the sender is kept informed when data | |||
network (to provide an equivalent to ACK clocking in TCP), it is not | leaves the network (to provide an equivalent to acknowledgement (ACK) | |||
necessary to report on every packet at the instant it is received. | clocking in TCP), it is not necessary to report on every packet at | |||
Indeed, it is unlikely that a video codec can react instantly to a | the instant it is received. Indeed, it is unlikely that a video | |||
rate change, and there is little point in providing feedback more | codec can react instantly to a rate change, and there is little point | |||
often than the codec can adapt. This suggests that an RTP receiver | in providing feedback more often than the codec can adapt. This | |||
needs to be configured to provide feedback at a rate that matches the | suggests that an RTP receiver needs to be configured to provide | |||
rate of adaptation of the sender. In the best case, this will match | feedback at a rate that matches the rate of adaptation of the sender. | |||
the media frame rate, but might often be slower. | In the best case, this will match the media frame rate but might | |||
often be slower. | ||||
Reducing the feedback frequency compared to TCP will reduce feedback | Reducing the feedback frequency compared to TCP will reduce feedback | |||
overhead but will lead multimedia flows to adapt to congestion more | overhead but will lead multimedia flows to adapt to congestion more | |||
slowly than TCP, raising concerns about inter-flow fairness. Similar | slowly than TCP, raising concerns about inter-flow fairness. Similar | |||
concerns are noted in [RFC5348], and accordingly the congestion | concerns are noted in [RFC5348], and accordingly, the congestion | |||
control algorithm described therein aims for "reasonable" fairness | control algorithm described therein aims for "reasonable" fairness | |||
and a sending rate that is "generally within a factor of two" of that | and a sending rate that is "generally within a factor of two" of what | |||
TCP would achieve under the same conditions. It is to be noted, | TCP would achieve under the same conditions. It is to be noted, | |||
however, that TCP exhibits inter-flow unfairness when flows with | however, that TCP exhibits inter-flow unfairness when flows with | |||
differing round-trip times compete, and stretch acknowledgements due | differing round-trip times compete, and stretch acknowledgements due | |||
to in-network traffic manipulation are not uncommon and also raise | to in-network traffic manipulation are not uncommon and also raise | |||
fairness concerns. Implementations need to balance potential | fairness concerns. Implementations need to balance potential | |||
unfairness against feedback overhead. | unfairness against feedback overhead. | |||
Generating and processing feedback consumes resources at the sender | Generating and processing feedback consumes resources at the sender | |||
and receiver. The feedback packets also incur forwarding costs, | and receiver. The feedback packets also incur forwarding costs, | |||
contribute to link utilization, and can affect the timing of other | contribute to link utilization, and can affect the timing of other | |||
traffic on the network. This can affect performance on some types of | traffic on the network. This can affect performance on some types of | |||
network, that can be impacted by the rate, timing, and size of | networks that can be impacted by the rate, timing, and size of | |||
feedback packets, as well as by the overall volume of feedback bytes. | feedback packets, as well as the overall volume of feedback bytes. | |||
The amount of overhead due to congestion control feedback that is | The amount of overhead due to congestion control feedback that is | |||
considered acceptable has to be determined. RTCP feedback is sent in | considered acceptable has to be determined. RTCP feedback is sent in | |||
separate packets to RTP data, and this has some cost in terms of | separate packets to RTP data, and this has some cost in terms of | |||
additional header overhead compared to protocols that piggyback | additional header overhead compared to protocols that piggyback | |||
feedback on return path data packets. The RTP standards have long | feedback on return path data packets. The RTP standards have long | |||
said that a 5% overhead for RTCP traffic is generally acceptable, | said that a 5% overhead for RTCP traffic is generally acceptable. Is | |||
while providing the ability to change this fraction. Is this still | this still the case for congestion control feedback? Is there a | |||
the case for congestion control feedback? Is there a desire to | desire to provide more responsive feedback and congestion control, | |||
provide more responsive feedback and congestion control, possibly | possibly with a higher overhead? Or is lower overhead wanted, | |||
with a higher overhead? Or is lower overhead wanted, accepting that | accepting that this might reduce responsiveness of the congestion | |||
this might reduce responsiveness of the congestion control algorithm? | control algorithm? | |||
Finally, the details of how much, and what, data is to be sent in | ||||
each report will affect the frequency and/or overhead of feedback. | Finally, the details of how much and what data is to be sent in each | |||
There is a fundamental trade-off that the more frequently feedback | report will affect the frequency and/or overhead of feedback. There | |||
packets are sent, the less data can be included in each packet to | is a fundamental trade-off that the more frequently feedback packets | |||
keep the overhead constant. Does the congestion control need high | are sent, the less data can be included in each packet to keep the | |||
rate but simple feedback (e.g., like TCP acknowledgements), or is it | overhead constant. Does the congestion control need a high rate but | |||
simple feedback (e.g., like TCP acknowledgements), or is it | ||||
acceptable to send more complex feedback less often? Is it useful | acceptable to send more complex feedback less often? Is it useful | |||
for the congestion control to receive frequent feedback, perhaps to | for the congestion control to receive frequent feedback, perhaps to | |||
provide more accurate round-trip time estimates, or to provide | provide more accurate round-trip time estimates, or to provide | |||
robustness in case feedback packets are lost, even if the media | robustness in case feedback packets are lost, even if the media | |||
sending rate cannot quickly be changed? Or is low-rate feedback, | sending rate cannot quickly be changed? Or is low-rate feedback, | |||
resulting in slowly responsive changes to the sending rate, | resulting in slowly responsive changes to the sending rate, | |||
acceptable? Different combinations of congestion control algorithm | acceptable? Different combinations of the congestion control | |||
and media codec might require different trade-offs, and the correct | algorithm and media codec might require different trade-offs, and the | |||
trade-off for interactive, self-paced, real-time multimedia traffic | correct trade-off for interactive, self-paced, real-time multimedia | |||
might not be the same as that for TCP congestion control. | traffic might not be the same as that for TCP congestion control. | |||
3. What Feedback is Achievable With RTCP? | 3. What Feedback is Achievable with RTCP? | |||
The following sections illustrate how the RTCP congestion control | The following sections illustrate how the RTCP congestion control | |||
feedback report [RFC8888] can be used in different scenarios, and | feedback report [RFC8888] can be used in different scenarios and | |||
illustrate the overheads of this approach. | illustrate the overheads of this approach. | |||
3.1. Scenario 1: Voice Telephony | 3.1. Scenario 1: Voice Telephony | |||
In many ways, point-to-point voice telephony is the simplest scenario | In many ways, point-to-point voice telephony is the simplest scenario | |||
for congestion control, since there is only a single media stream to | for congestion control, since there is only a single media stream to | |||
control. It's complicated, however, by severe bandwidth constraints | control. It's complicated, however, by severe bandwidth constraints | |||
on the feedback, to keep the overhead manageable. | on the feedback, to keep the overhead manageable. | |||
Assume a two-party point-to-point voice-over-IP call, using RTP over | Assume a two-party, point-to-point VoIP call, using RTP over UDP/IP. | |||
UDP/IP. A rate adaptive speech codec, such as Opus, is used, encoded | A rate-adaptive speech codec, such as Opus, is used, encoded into RTP | |||
into RTP packets in frames of duration Tf seconds (Tf = 0.020s in | packets in frames of a duration of Tf seconds (Tf = 0.020 s in many | |||
many cases, but values up to 0.060s are not uncommon). The | cases, but values up to 0.060 s are not uncommon). The congestion | |||
congestion control algorithm requires feedback every Nr frames, i.e., | control algorithm requires feedback every Nr frames, i.e., every Nr * | |||
every Nr * Tf seconds, to ensure effective control. Both parties in | Tf seconds, to ensure effective control. Both parties in the call | |||
the call send speech data or comfort noise with sufficient frequency | send speech data or comfort noise with sufficient frequency that they | |||
that they are counted as senders for the purpose of the RTCP | are counted as senders for the purpose of the RTCP reporting interval | |||
reporting interval calculation. | calculation. | |||
RTCP feedback packets can be full, compound, RTCP feedback packets, | RTCP feedback packets can be full (compound) RTCP feedback packets or | |||
or reduced-size RTCP packets [RFC5506]. A compound RTCP packet is | reduced-size RTCP packets [RFC5506]. A compound RTCP packet is sent | |||
sent once for every Nrs reduced-size RTCP packets. | once for every Nrs reduced-size RTCP packets. | |||
Compound RTCP packets contain a Sender Report (SR) packet, a Source | Compound RTCP packets contain a Sender Report (SR) packet, a Source | |||
Description (SDES) packet, and an RTP Congestion Control Feedback | Description (SDES) packet, and an RTP Congestion Control Feedback | |||
(CCFB) packet [RFC8888]. Reduced-size RTCP packets contain only the | (CCFB) packet [RFC8888]. Reduced-size RTCP packets contain only the | |||
CCFB packet. Since each participant sends only a single RTP media | CCFB packet. Since each participant sends only a single RTP media | |||
stream, the extensions for RTCP report aggregation [RFC8108] and | stream, the extensions for RTCP report aggregation [RFC8108] and | |||
reporting group optimisation [RFC8861] are not used. | reporting group optimization [RFC8861] are not used. | |||
Within each compound RTCP packet, the SR packet will contain a sender | Within each compound RTCP packet, the SR packet will contain a sender | |||
information block (28 octets) and a single reception report block (24 | information block (28 octets) and a single reception report block (24 | |||
octets), for a total of 52 octets. A minimal SDES packet will | octets), for a total of 52 octets. A minimal SDES packet will | |||
contain a header (4 octets) and a single chunk containing an SSRC (4 | contain a header (4 octets), a single chunk containing a | |||
octets) and a CNAME item, and if the recommendations for choosing the | synchronization source (SSRC) (4 octets), and a CNAME item, and if | |||
CNAME [RFC7022] are followed, the CNAME item will comprise a 2-octet | the recommendations for choosing the CNAME [RFC7022] are followed, | |||
header, 16 octets of data, and 2 octets of padding, for a total SDES | the CNAME item will comprise a 2-octet header, 16 octets of data, and | |||
packet size of 28 octets. The CCFB packets contain an RTCP header | 2 octets of padding, for a total SDES packet size of 28 octets. The | |||
and SSRC (8 octets), a report timestamp (4 octets), the SSRC, | CCFB packets contain an RTCP header and SSRC (8 octets), a report | |||
beginning and ending sequence numbers (8 octets), and 2*Nr octets of | timestamp (4 octets), the other party's SSRC, beginning and ending | |||
reports, for a total of 20 + 2*Nr octets. The compound Secure RTCP | sequence numbers (8 octets), and 2 * Nr octets of reports, for a | |||
packet will include 4 octets of trailer followed by an 80 bit (10 | total of 20 + (2 * Nr) octets. The compound Secure RTCP (SRTCP) | |||
octet) authentication tag if HMAC-SHA1 authentication is used. If | packet will include 4 octets of trailer, followed by an 80-bit | |||
IPv4 is used, with no IP options, the UDP/IP header will be 28 octets | (10-octet) authentication tag if HMAC-SHA1 authentication is used. | |||
in size. This gives a total compound RTCP packet size of Sc = 142 + | If IPv4 is used, with no IP options, the UDP/IP header will be 28 | |||
2*Nr octets. | octets in size. This gives a total compound RTCP packet size of Sc = | |||
142 + (2 * Nr) octets. | ||||
The reduced-size RTCP packets will comprise just the CCFB packet, | The reduced-size RTCP packets will comprise just the CCFB packet, | |||
SRTCP trailer and authentication tag, and a UDP/IP header. It can be | SRTCP trailer and authentication tag, and a UDP/IP header. It can be | |||
seen that these packets will be Srs = 62 + 2*Nr octets in size. | seen that these packets will be Srs = 62 + (2 * Nr) octets in size. | |||
The RTCP reporting interval calculation ([RFC3550], Section 6.2) for | The RTCP reporting interval calculation (Sections 6.2 and 6.3 of | |||
a two-party session where both participants are senders, reduces to: | [RFC3550] and [RFC4585]) for a two-party session where both | |||
participants are senders reduces to: | ||||
| Trtcp = n * Srtcp / Brtcp | Trtcp = n * Srtcp / Brtcp | |||
where Srtcp = (Sc + Nrs * Srs)/(1 + Nrs) is the average RTCP packet | where Srtcp = (Sc + Nrs * Srs) / (1 + Nrs) is the average RTCP packet | |||
size in octets, Brtcp is the bandwidth allocated to RTCP in octets | size in octets, Brtcp is the bandwidth allocated to RTCP in octets | |||
per second, and n is the number of participants in the RTP session | per second, and n is the number of participants in the RTP session | |||
(in this scenario, n = 2). | (in this scenario, n = 2). | |||
To ensure an RTCP report containing congestion control feedback is | To ensure an RTCP report containing congestion control feedback is | |||
sent after every Nr frames of audio, it is necessary to set the RTCP | sent after every Nr frames of audio, it is necessary to set the RTCP | |||
reporting interval Trtcp = Nr * Tf, which when substituted into the | reporting interval to Trtcp = Nr * Tf, which when substituted into | |||
previous gives Nr * Tf = n * Srtcp/Brtcp. Solving this to give the | the previous, gives Nr * Tf = n * Srtcp / Brtcp. Solving this to | |||
RTCP bandwidth, Brtcp, and expanding the definition of Srtcp gives: | give the RTCP bandwidth (Brtcp) and expanding the definition of Srtcp | |||
gives: | ||||
| Brtcp = (n * (Sc + Nrs * Srs))/(Nr * Tf * (1 + Nrs)). | Brtcp = (n * (Sc + Nrs * Srs)) / (Nr * Tf * (1 + Nrs)) | |||
If we assume every report is a compound RTCP packet (i.e., Nrs = 0), | If we assume every report is a compound RTCP packet (i.e., Nrs = 0), | |||
the frame duration Tf = 20ms, and an RTCP report is sent for every | the frame duration is Tf = 20 ms, and an RTCP report is sent for | |||
second frame (i.e., 25 RTCP reports per second), this gives an RTCP | every second frame (i.e., 25 RTCP reports per second), this gives an | |||
feedback bandwidth, Brtcp = 57kbps. Increasing the frame duration, | RTCP feedback bandwidth of Brtcp = 57 kbps. Increasing the frame | |||
or reducing the frequency of reports, will reduce the RTCP bandwidth | duration or reducing the frequency of reports will reduce the RTCP | |||
as shown in Table 1. | bandwidth, as shown in Table 1. | |||
+--------------+-------------+----------------+ | +==============+=============+================+ | |||
| Tf (seconds) | Nr (frames) | rtcp_bw (kbps) | | | Tf (seconds) | Nr (frames) | rtcp_bw (kbps) | | |||
+--------------+-------------+----------------+ | +==============+=============+================+ | |||
| 0.020 | 2 | 57.0 | | | 0.020 | 2 | 57.0 | | |||
+--------------+-------------+----------------+ | +--------------+-------------+----------------+ | |||
| 0.020 | 4 | 29.3 | | | 0.020 | 4 | 29.3 | | |||
+--------------+-------------+----------------+ | +--------------+-------------+----------------+ | |||
| 0.020 | 8 | 15.4 | | | 0.020 | 8 | 15.4 | | |||
+--------------+-------------+----------------+ | +--------------+-------------+----------------+ | |||
| 0.020 | 16 | 8.5 | | | 0.020 | 16 | 8.5 | | |||
+--------------+-------------+----------------+ | +--------------+-------------+----------------+ | |||
| 0.060 | 2 | 19.0 | | | 0.060 | 2 | 19.0 | | |||
+--------------+-------------+----------------+ | +--------------+-------------+----------------+ | |||
| 0.060 | 4 | 9.8 | | | 0.060 | 4 | 9.8 | | |||
+--------------+-------------+----------------+ | +--------------+-------------+----------------+ | |||
| 0.060 | 8 | 5.1 | | | 0.060 | 8 | 5.1 | | |||
+--------------+-------------+----------------+ | +--------------+-------------+----------------+ | |||
| 0.060 | 16 | 2.8 | | | 0.060 | 16 | 2.8 | | |||
+--------------+-------------+----------------+ | +--------------+-------------+----------------+ | |||
Table 1: RTCP bandwidth needed for VoIP | Table 1: RTCP Bandwidth Needed for VoIP | |||
feedback (compound reports only) | Feedback (Compound Reports Only) | |||
The final row of Table 1 (60ms frames, report every 16 frames) sends | The final row of Table 1 (60 ms frames, reporting every 16 frames) | |||
RTCP reports once per second, giving an RTCP bandwidth overhead of | sends RTCP reports once per second, giving an RTCP bandwidth overhead | |||
2.8kbps. | of 2.8 kbps. | |||
The overhead can be reduced by sending some reports in reduced-size | The overhead can be reduced by sending some reports in reduced-size | |||
RTCP packets [RFC5506]. For example, if we alternate compound and | RTCP packets [RFC5506]. For example, if we alternate compound and | |||
reduced-size RTCP packets, i.e., Nrs = 1, the calculation gives the | reduced-size RTCP packets, i.e., Nrs = 1, the calculation gives the | |||
results shown in Table 2. | results shown in Table 2. | |||
+--------------+-------------+----------------+ | +==============+=============+================+ | |||
| Tf (seconds) | Nr (frames) | rtcp_bw (kbps) | | | Tf (seconds) | Nr (frames) | rtcp_bw (kbps) | | |||
+--------------+-------------+----------------+ | +==============+=============+================+ | |||
| 0.020 | 2 | 41.4 | | | 0.020 | 2 | 41.4 | | |||
+--------------+-------------+----------------+ | +--------------+-------------+----------------+ | |||
| 0.020 | 4 | 21.5 | | | 0.020 | 4 | 21.5 | | |||
+--------------+-------------+----------------+ | +--------------+-------------+----------------+ | |||
| 0.020 | 8 | 11.5 | | | 0.020 | 8 | 11.5 | | |||
+--------------+-------------+----------------+ | +--------------+-------------+----------------+ | |||
| 0.020 | 16 | 6.5 | | | 0.020 | 16 | 6.5 | | |||
+--------------+-------------+----------------+ | +--------------+-------------+----------------+ | |||
| 0.060 | 2 | 13.8 | | | 0.060 | 2 | 13.8 | | |||
+--------------+-------------+----------------+ | +--------------+-------------+----------------+ | |||
| 0.060 | 4 | 7.2 | | | 0.060 | 4 | 7.2 | | |||
+--------------+-------------+----------------+ | +--------------+-------------+----------------+ | |||
| 0.060 | 8 | 3.8 | | | 0.060 | 8 | 3.8 | | |||
+--------------+-------------+----------------+ | +--------------+-------------+----------------+ | |||
| 0.060 | 16 | 2.2 | | | 0.060 | 16 | 2.2 | | |||
+--------------+-------------+----------------+ | +--------------+-------------+----------------+ | |||
Table 2: Required RTCP bandwidth for VoIP | Table 2: Required RTCP Bandwidth for VoIP | |||
feedback (alternating compound and reduced- | Feedback (Alternating Compound and Reduced- | |||
size reports) | Size Reports) | |||
The RTCP bandwidth needed for 60ms frames, reporting every 16 frames | The RTCP bandwidth needed for 60 ms frames, reporting every 16 frames | |||
(once per second), can be seen to drop to 2.2kbps. This calculation | (once per second), can be seen to drop to 2.2 kbps. This calculation | |||
can be repeated for other patterns of compound and reduced-size RTCP | can be repeated for other patterns of compound and reduced-size RTCP | |||
packets, feedback frequency, and frame duration, as needed. | packets, feedback frequency, and frame duration, as needed. | |||
Note: To achieve the RTCP transmission intervals above the RTP/SAVPF | | Note: To achieve the RTCP transmission intervals above, the | |||
profile with T_rr_interval=0 is used, since even when using the | | RTP/SAVPF profile with T_rr_interval=0 is used, since even when | |||
reduced minimal transmission interval, the RTP/SAVP profile would | | using the reduced minimal transmission interval, the RTP/SAVP | |||
only allow sending RTCP at most every 0.11s (every third frame of | | profile would only allow sending RTCP at most every 0.11 s | |||
video). Using RTP/SAVPF with T_rr_interval=0 however is capable of | | (every third frame of video). Using RTP/SAVPF with | |||
fully utilizing the configured 5% RTCP bandwidth fraction. | | T_rr_interval=0, however, enables full utilization of the | |||
| configured 5% RTCP bandwidth fraction. | ||||
The use of IPv6 will increase the overhead by 20 octets per packet, | The use of IPv6 will increase the overhead by 20 octets per packet, | |||
due to the increased size of the IPv6 header compared to IPv4, | due to the increased size of the IPv6 header compared to IPv4, | |||
assuming no IP options in either case. This increases the size of | assuming no IP options in either case. This increases the size of | |||
compound packets to Sc = 162 + 2*Nr octets and reduced size packets | compound packets to Sc = 162 + (2 * Nr) octets and reduced-size | |||
to Srs = 82 + 2*Nr. Re-running the calculations from Table 1 with | packets to Srs = 82 + (2 * Nr). Rerunning the calculations from | |||
these packet sizes gives the results shown in Table 3. As can be | Table 1 with these packet sizes gives the results shown in Table 3. | |||
seen, there is a significant increase in overhead due to the use of | As can be seen, there is a significant increase in overhead due to | |||
IPv6. | the use of IPv6. | |||
+--------------+-------------+----------------+ | +==============+=============+================+ | |||
| Tf (seconds) | Nr (frames) | rtcp_bw (kbps) | | | Tf (seconds) | Nr (frames) | rtcp_bw (kbps) | | |||
+--------------+-------------+----------------+ | +==============+=============+================+ | |||
| 0.020 | 2 | 64.8 | | | 0.020 | 2 | 64.8 | | |||
+--------------+-------------+----------------+ | +--------------+-------------+----------------+ | |||
| 0.020 | 4 | 33.2 | | | 0.020 | 4 | 33.2 | | |||
+--------------+-------------+----------------+ | +--------------+-------------+----------------+ | |||
| 0.020 | 8 | 17.4 | | | 0.020 | 8 | 17.4 | | |||
+--------------+-------------+----------------+ | +--------------+-------------+----------------+ | |||
| 0.020 | 16 | 9.5 | | | 0.020 | 16 | 9.5 | | |||
+--------------+-------------+----------------+ | +--------------+-------------+----------------+ | |||
| 0.060 | 2 | 21.6 | | | 0.060 | 2 | 21.6 | | |||
+--------------+-------------+----------------+ | +--------------+-------------+----------------+ | |||
| 0.060 | 4 | 11.1 | | | 0.060 | 4 | 11.1 | | |||
+--------------+-------------+----------------+ | +--------------+-------------+----------------+ | |||
| 0.060 | 8 | 5.8 | | | 0.060 | 8 | 5.8 | | |||
+--------------+-------------+----------------+ | +--------------+-------------+----------------+ | |||
| 0.060 | 16 | 3.2 | | | 0.060 | 16 | 3.2 | | |||
+--------------+-------------+----------------+ | +--------------+-------------+----------------+ | |||
Table 3: RTCP bandwidth needed for VoIP | Table 3: RTCP Bandwidth Needed for VoIP | |||
feedback (compound reports only) using IPv6 | Feedback (Compound Reports Only) Using IPv6 | |||
Repeating the calculations from Table 2 using IPv6 gives the results | Repeating the calculations from Table 2 using IPv6 gives the results | |||
shown in Table 4. As can be seen, the overhead still increases with | shown in Table 4. As can be seen, the overhead still increases with | |||
IPv6 when a mix of compound and reduced-size reports is used, but the | IPv6 when a mix of compound and reduced-size reports is used, but the | |||
effect is less pronounced than with compound reports only. | effect is less pronounced than with compound reports only. | |||
+--------------+-------------+----------------+ | +==============+=============+================+ | |||
| Tf (seconds) | Nr (frames) | rtcp_bw (kbps) | | | Tf (seconds) | Nr (frames) | rtcp_bw (kbps) | | |||
+--------------+-------------+----------------+ | +==============+=============+================+ | |||
| 0.020 | 2 | 49.2 | | | 0.020 | 2 | 49.2 | | |||
+--------------+-------------+----------------+ | +--------------+-------------+----------------+ | |||
| 0.020 | 4 | 25.4 | | | 0.020 | 4 | 25.4 | | |||
+--------------+-------------+----------------+ | +--------------+-------------+----------------+ | |||
| 0.020 | 8 | 13.5 | | | 0.020 | 8 | 13.5 | | |||
+--------------+-------------+----------------+ | +--------------+-------------+----------------+ | |||
| 0.020 | 16 | 7.5 | | | 0.020 | 16 | 7.5 | | |||
+--------------+-------------+----------------+ | +--------------+-------------+----------------+ | |||
| 0.060 | 2 | 16.4 | | | 0.060 | 2 | 16.4 | | |||
+--------------+-------------+----------------+ | +--------------+-------------+----------------+ | |||
| 0.060 | 4 | 8.5 | | | 0.060 | 4 | 8.5 | | |||
+--------------+-------------+----------------+ | +--------------+-------------+----------------+ | |||
| 0.060 | 8 | 4.5 | | | 0.060 | 8 | 4.5 | | |||
+--------------+-------------+----------------+ | +--------------+-------------+----------------+ | |||
| 0.060 | 16 | 2.5 | | | 0.060 | 16 | 2.5 | | |||
+--------------+-------------+----------------+ | +--------------+-------------+----------------+ | |||
Table 4: Required RTCP bandwidth for VoIP | Table 4: Required RTCP Bandwidth for VoIP | |||
feedback (alternating compound and reduced- | Feedback (Alternating Compound and Reduced- | |||
size reports) using IPv6 | Size Reports) Using IPv6 | |||
3.2. Scenario 2: Point-to-Point Video Conference | 3.2. Scenario 2: Point-to-Point Video Conference | |||
Consider a point-to-point video call between two end systems. There | Consider a point-to-point video call between two end systems. There | |||
will be four RTP flows in this scenario, two audio and two video, | will be four RTP flows in this scenario (two audio and two video), | |||
with all four flows being active for essentially all the time (the | with all four flows being active for essentially all the time (the | |||
audio flows will likely use voice activity detection and comfort | audio flows will likely use voice activity detection and comfort | |||
noise to reduce the packet rate during silent periods, but this does | noise to reduce the packet rate during silent periods, but this does | |||
not cause the transmissions to stop). | not cause the transmissions to stop). | |||
Assume all four flows are sent in a single RTP session, each using a | Assume all four flows are sent in a single RTP session, each using a | |||
separate SSRC. The RTCP reports from the co-located audio and video | separate SSRC. The RTCP reports from the co-located audio and video | |||
SSRCs at each end point are aggregated [RFC8108], the optimisations | SSRCs at each end point are aggregated [RFC8108], the optimizations | |||
in [RFC8861] are used, and RTCP congestion control feedback is sent | in [RFC8861] are used, and RTCP congestion control feedback is sent | |||
[RFC8888]. | [RFC8888]. | |||
As in Section 3.1, when all members are senders the RTCP reporting | As in Section 3.1, when all members are senders, the RTCP reporting | |||
interval calculation in Section 6.2 and 6.3 of [RFC3550] and | interval calculation in Sections 6.2 and 6.3 [RFC3550] and in | |||
[RFC4585] reduces to: | [RFC4585] reduces to: | |||
| Trtcp = n * Srtcp / Brtcp | Trtcp = n * Srtcp / Brtcp | |||
where n is the number of members in the session, Srtcp is the average | where n is the number of members in the session, Srtcp is the average | |||
RTCP packet size in octets, and the Brtcp is the RTCP bandwidth in | RTCP packet size in octets, and Brtcp is the RTCP bandwidth in octets | |||
octets per second. | per second. | |||
The average RTCP packet size, Srtcp, depends on the amount of | The average RTCP packet size (Srtcp) depends on the amount of | |||
feedback sent in each RTCP packet, on the number of members in the | feedback sent in each RTCP packet, the number of members in the | |||
session, on the size of source description (RTCP SDES) information | session, the size of source description (RTCP SDES) information sent, | |||
sent, and on the amount of congestion control feedback sent in each | and the amount of congestion control feedback sent in each packet. | |||
packet. | ||||
As a baseline, each RTCP packet will be a compound RTCP packet that | As a baseline, each RTCP packet will be a compound RTCP packet that | |||
contains an aggregate of a compound RTCP packet generated by the | contains an aggregate of a compound RTCP packet generated by the | |||
video SSRC and a compound RTCP packet generated by the audio SSRC. | video SSRC and a compound RTCP packet generated by the audio SSRC. | |||
When the RTCP reporting group extensions are used, one of these SSRCs | When the RTCP reporting group extensions are used, one of these SSRCs | |||
will be a reporting SSRC, to which the other SSRC will have delegated | will be a reporting SSRC, to which the other SSRC will have delegated | |||
its reports. No reduced-size RTCP packets are sent. | its reports. No reduced-size RTCP packets are sent. | |||
The aggregated compound RTCP packet from the non-reporting SSRC will | The aggregated compound RTCP packet from the non-reporting SSRC will | |||
contain an RTCP SR packet, an RTCP SDES packet, and an RTCP RGRS | contain an RTCP SR packet, an RTCP SDES packet, and an RTCP Reporting | |||
packet. The RTCP SR packet contains the 28 octet UDP/IP header | Group Reporting Sources (RGRS) packet. The RTCP SR packet contains | |||
(assuming IPv4 with no options) and sender information, but no report | the 28-octet UDP/IP header (assuming IPv4 with no options) and sender | |||
blocks (since the reporting is delegated). The RTCP SDES packet will | information but no report blocks (since the reporting is delegated). | |||
comprise a header (4 octets), originating SSRC (4 octets), a CNAME | The RTCP SDES packet will comprise a header (4 octets), the | |||
chunk, a terminating chunk, and any padding. If the CNAME follows | originating SSRC (4 octets), a CNAME chunk, a terminating chunk, and | |||
[RFC7022] and [RFC8834] the CNAME chunk will be 18 octets in size, | any padding. If the CNAME follows [RFC7022] and [RFC8834], the CNAME | |||
and will be followed by one octet of padding and one terminating null | chunk will be 18 octets in size and will be followed by one octet of | |||
octet to align the SDES packet to a 32-bit boundary ([RFC3550], | padding and one terminating null octet to align the SDES packet to a | |||
section 6.5), making the SDES packet 28 octets in size. The RTCP | 32-bit boundary ([RFC3550], Section 6.5), making the SDES packet 28 | |||
RGRS packet will be 12 octets in size. This gives a total of 28 + 28 | octets in size. The RTCP RGRS packet will be 12 octets in size. | |||
+ 12 = 68 octets. | This gives a total of 28 + 28 + 12 = 68 octets. | |||
The aggregated compound RTCP packet from the reporting SSRC will | The aggregated compound RTCP packet from the reporting SSRC will | |||
contain an RTCP SR packet, an RTCP SDES packet, and an RTCP | contain an RTCP SR packet, an RTCP SDES packet, and an RTCP | |||
congestion control feedback packet. The RTCP SR packet will contain | congestion control feedback packet. The RTCP SR packet will contain | |||
two report blocks, one for each of the remote SSRCs (the report for | two report blocks, one for each of the remote SSRCs (the report for | |||
the other local SSRC is suppressed by the reporting group extension), | the other local SSRC is suppressed by the reporting group extension), | |||
for a total of 28 + (2 * 24) = 76 octets. The RTCP SDES packet will | for a total of 28 + (2 * 24) = 76 octets. The RTCP SDES packet will | |||
comprise a header (4 octets), originating SSRC (4 octets), a CNAME | comprise a header (4 octets), originating SSRC (4 octets), a CNAME | |||
chunk, an RGRP chunk, a terminating chunk, and any padding. If the | chunk, a Reporting Group (RGRP) chunk, a terminating chunk, and any | |||
CNAME follows [RFC7022] and [RFC8834] it will be 18 octets in size. | padding. If the CNAME follows [RFC7022] and [RFC8834], it will be 18 | |||
The RGRP chunk similarly comprises 18 octets, and 3 octets of padding | octets in size. The RGRP chunk similarly comprises 18 octets, the | |||
terminating chunk is comprised of 1 octet, and 3 octets of padding | ||||
are needed, for a total of 48 octets. The RTCP congestion control | are needed, for a total of 48 octets. The RTCP congestion control | |||
feedback (CCFB) report comprises an 8-octet RTCP header and SSRC, a | feedback (CCFB) report comprises an 8-octet RTCP header and SSRC, a | |||
4-octet report timestamp, and for each of the remote audio and video | 4-octet report timestamp, and for each of the remote audio and video | |||
SSRCs, an 8-octet report header, and 2 octets per packet reported | SSRCs, an 8-octet report header, 2 octets per packet reported upon, | |||
upon, and padding to a 4-octet boundary if needed; that is 8 + 4 + 8 | and padding to a 4-octet boundary if needed; that is, 8 + 4 + 8 + (2 | |||
+ (2 * Nv) + 8 + (2 * Na) where Nv is the number of video packets per | * Nv) + 8 + (2 * Na), where Nv is the number of video packets per | |||
report, and Na is the number of audio packets per report. | report and Na is the number of audio packets per report. | |||
The complete compound RTCP packet contains the RTCP packets from both | The complete compound RTCP packet contains the RTCP packets from both | |||
the reporting and non-reporting SSRCs, an SRTCP trailer and | the reporting and non-reporting SSRCs, an SRTCP trailer and | |||
authentication tag, and a UDP/IPv4 header. The size of this RTCP | authentication tag, and a UDP/IPv4 header. The size of this RTCP | |||
packet is therefore: 262 + (2 * Nv) + (2 * Na) octets. Since the | packet is therefore 262 + (2 * Nv) + (2 * Na) octets. Since the | |||
aggregate RTCP packet contains reports from two SSRCs, the RTCP | aggregate RTCP packet contains reports from two SSRCs, the RTCP | |||
packet size is halved before use [RFC8108]. Accordingly, the size of | packet size is halved before use [RFC8108]. Accordingly, the size of | |||
the RTCP packets is: | the RTCP packets is: | |||
| Srtcp = (262 + (2 * Nv) + (2 * Na)) / 2 | Srtcp = (262 + (2 * Nv) + (2 * Na)) / 2 | |||
How many RTP packets does the RTCP XR congestion control feedback | How many RTP packets does the RTCP XR congestion control feedback | |||
packet, included in these compound RTCP packets, report on? That is, | packet, included in these compound RTCP packets, report on? That is, | |||
what are the values of Nv and Na? This depends on the RTCP reporting | what are the values of Nv and Na? This depends on the RTCP reporting | |||
interval, Trtcp, the video bit rate and frame rate, Rf, the audio bit | interval (Trtcp), the video bit rate and frame rate (Rf), the audio | |||
rate and framing interval, and whether the receiver chooses to send | bit rate and framing interval, and whether the receiver chooses to | |||
congestion control feedback in each RTCP packet it sends. | send congestion control feedback in each RTCP packet it sends. | |||
To simplify the calculation, assume it is desired to send one RTCP | To simplify the calculation, assume it is desired to send one RTCP | |||
report for each frame of video received (i.e., Trtcp = 1 / Rf) and to | report for each frame of video received (i.e., Trtcp = 1 / Rf) and to | |||
include a congestion control feedback packet in each report. Assume | include a congestion control feedback packet in each report. Assume | |||
that video has constant bit rate and frame rate, and that each frame | that video has a constant bit rate and frame rate and that each frame | |||
of video has to fit into a 1500 octet MTU. Further, assume that the | of video has to fit into a 1500-octet MTU. Further, assume that the | |||
audio takes negligible bandwidth, and that the audio framing interval | audio takes negligible bandwidth and that the audio framing interval | |||
can be varied within reasonable bounds, so that an integral number of | can be varied within reasonable bounds, so that an integral number of | |||
audio frames align with video frame boundaries. | audio frames align with video frame boundaries. | |||
Table 5 shows the resulting values of Nv and Na, the number of video | Table 5 shows the resulting values of Nv and Na (the number of video | |||
and audio packets covered by each congestion control feedback report, | and audio packets covered by each congestion control feedback report) | |||
for a range of data rates and video frame rates, assuming congestion | for a range of data rates and video frame rates, assuming congestion | |||
control feedback is sent once per video frame. The table also shows | control feedback is sent once per video frame. The table also shows | |||
the result of inverting the RTCP reporting interval calculation to | the result of inverting the RTCP reporting interval calculation to | |||
find the corresponding RTCP bandwidth, Brtcp. The RTCP bandwidth is | find the corresponding RTCP bandwidth (Brtcp). The RTCP bandwidth is | |||
given in kbps and as a fraction of the data rate. | given in kbps and as a fraction of the data rate. | |||
It can be seen that, for example, with a date rate of 1024 kbps and | It can be seen that, for example, with a data rate of 1024 kbps and a | |||
video sent at 30 frames-per-second, the RTCP congestion control | video sent at 30 frames per second, the RTCP congestion control | |||
feedback report sent for each video frame will include reports on 3 | feedback report sent for each video frame will include reports on 3 | |||
video packets and 2 audio packets. The RTCP bandwidth needed to | video packets and 2 audio packets. The RTCP bandwidth needed to | |||
sustain this reporting rate is 127.5kbps (12% of the data rate). | sustain this reporting rate is 127.5 kbps (12% of the data rate). | |||
This assumes an audio framing interval of 16.67ms, so that two audio | This assumes an audio framing interval of 16.67 ms, so that 2 audio | |||
packets are sent for each video frame. | packets are sent for each video frame. | |||
+-----------+----------+-------------+-------------+---------------+ | +===========+==========+=============+=============+===============+ | |||
| Data Rate | Video | Video | Audio | Required RTCP | | | Data Rate | Video | Video | Audio | Required RTCP | | |||
| (kbps) | Frame | Packets per | Packets per | bandwidth: | | | (kbps) | Frame | Packets per | Packets per | Bandwidth: | | |||
| | Rate: Rf | Report: Nv | Report: Na | Brtcp (kbps) | | | | Rate: Rf | Report: Nv | Report: Na | Brtcp (kbps) | | |||
+-----------+----------+-------------+-------------+---------------+ | +===========+==========+=============+=============+===============+ | |||
| 100 | 8 | 1 | 6 | 34.5 (34%) | | | 100 | 8 | 1 | 6 | 34.5 (34%) | | |||
+-----------+----------+-------------+-------------+---------------+ | +-----------+----------+-------------+-------------+---------------+ | |||
| 200 | 16 | 1 | 3 | 67.5 (33%) | | | 200 | 16 | 1 | 3 | 67.5 (33%) | | |||
+-----------+----------+-------------+-------------+---------------+ | +-----------+----------+-------------+-------------+---------------+ | |||
| 350 | 30 | 1 | 2 | 125.6 (35%) | | | 350 | 30 | 1 | 2 | 125.6 (35%) | | |||
+-----------+----------+-------------+-------------+---------------+ | +-----------+----------+-------------+-------------+---------------+ | |||
| 700 | 30 | 2 | 2 | 126.6 (18%) | | | 700 | 30 | 2 | 2 | 126.6 (18%) | | |||
+-----------+----------+-------------+-------------+---------------+ | +-----------+----------+-------------+-------------+---------------+ | |||
| 700 | 60 | 1 | 1 | 249.4 (35%) | | | 700 | 60 | 1 | 1 | 249.4 (35%) | | |||
+-----------+----------+-------------+-------------+---------------+ | +-----------+----------+-------------+-------------+---------------+ | |||
skipping to change at page 13, line 33 ¶ | skipping to change at line 585 ¶ | |||
+-----------+----------+-------------+-------------+---------------+ | +-----------+----------+-------------+-------------+---------------+ | |||
| 2048 | 30 | 6 | 2 | 130.3 ( 6%) | | | 2048 | 30 | 6 | 2 | 130.3 ( 6%) | | |||
+-----------+----------+-------------+-------------+---------------+ | +-----------+----------+-------------+-------------+---------------+ | |||
| 2048 | 60 | 3 | 1 | 253.1 (12%) | | | 2048 | 60 | 3 | 1 | 253.1 (12%) | | |||
+-----------+----------+-------------+-------------+---------------+ | +-----------+----------+-------------+-------------+---------------+ | |||
| 4096 | 30 | 12 | 2 | 135.9 ( 3%) | | | 4096 | 30 | 12 | 2 | 135.9 ( 3%) | | |||
+-----------+----------+-------------+-------------+---------------+ | +-----------+----------+-------------+-------------+---------------+ | |||
| 4096 | 60 | 6 | 1 | 258.8 ( 6%) | | | 4096 | 60 | 6 | 1 | 258.8 ( 6%) | | |||
+-----------+----------+-------------+-------------+---------------+ | +-----------+----------+-------------+-------------+---------------+ | |||
Table 5: Required RTCP bandwidth, reporting on every frame | Table 5: Required RTCP Bandwidth, Reporting on Every Frame | |||
Use of reduced size RTCP [RFC5506] would allow the SR and SDES | Use of reduced-size RTCP [RFC5506] would allow the SR and SDES | |||
packets to be omitted from some reports. These "reduced-size" RTCP | packets to be omitted from some reports. These reduced-size RTCP | |||
packets would contain an RTCP RGRS packet from the non-reporting | packets would contain an RTCP RGRS packet from the non-reporting SSRC | |||
SSRC, and an RTCP SDES RGRP packet and a congestion control feedback | and an RTCP SDES RGRP packet and a congestion control feedback packet | |||
packet from the reporting SSRC. This will be 12 + 28 + 12 + 8 + 2*Nv | from the reporting SSRC. This will be 12 + 28 + 12 + 8 + (2 * Nv) + | |||
+ 8 + 2*Na octets, plus the SRTCP trailer and authentication tag, and | 8 + (2 * Na) octets, plus the SRTCP trailer and authentication tag | |||
a UDP/IP header. That is, the size of the reduced-size packets would | and a UDP/IP header. That is, the size of the reduced-size packets | |||
be (110 + 2*Nv + 2*Na)/2 octets. Repeating the analysis above, but | would be (110 + (2 * Nv) + (2 * Na)) / 2 octets. Repeating the | |||
alternating compound and reduced-size reports gives results as shown | analysis above, but alternating compound and reduced-size reports, | |||
in Table 6. | gives the results shown in Table 6. | |||
+-----------+----------+-------------+-------------+---------------+ | +===========+==========+=============+=============+===============+ | |||
| Data Rate | Video | Video | Audio | Required RTCP | | | Data Rate | Video | Video | Audio | Required RTCP | | |||
| (kbps) | Frame | Packets per | Packets per | bandwidth: | | | (kbps) | Frame | Packets per | Packets per | Bandwidth: | | |||
| | Rate: Rf | Report: Nv | Report: Na | Brtcp (kbps) | | | | Rate: Rf | Report: Nv | Report: Na | Brtcp (kbps) | | |||
+-----------+----------+-------------+-------------+---------------+ | +===========+==========+=============+=============+===============+ | |||
| 100 | 8 | 1 | 6 | 25.0 (25%) | | | 100 | 8 | 1 | 6 | 25.0 (25%) | | |||
+-----------+----------+-------------+-------------+---------------+ | +-----------+----------+-------------+-------------+---------------+ | |||
| 200 | 16 | 1 | 3 | 48.5 (24%) | | | 200 | 16 | 1 | 3 | 48.5 (24%) | | |||
+-----------+----------+-------------+-------------+---------------+ | +-----------+----------+-------------+-------------+---------------+ | |||
| 350 | 30 | 1 | 2 | 90.0 (25%) | | | 350 | 30 | 1 | 2 | 90.0 (25%) | | |||
+-----------+----------+-------------+-------------+---------------+ | +-----------+----------+-------------+-------------+---------------+ | |||
| 700 | 30 | 2 | 2 | 90.9 (12%) | | | 700 | 30 | 2 | 2 | 90.9 (12%) | | |||
+-----------+----------+-------------+-------------+---------------+ | +-----------+----------+-------------+-------------+---------------+ | |||
| 700 | 60 | 1 | 1 | 178.1 (25%) | | | 700 | 60 | 1 | 1 | 178.1 (25%) | | |||
+-----------+----------+-------------+-------------+---------------+ | +-----------+----------+-------------+-------------+---------------+ | |||
skipping to change at page 14, line 33 ¶ | skipping to change at line 626 ¶ | |||
+-----------+----------+-------------+-------------+---------------+ | +-----------+----------+-------------+-------------+---------------+ | |||
| 2048 | 30 | 6 | 2 | 94.7 ( 4%) | | | 2048 | 30 | 6 | 2 | 94.7 ( 4%) | | |||
+-----------+----------+-------------+-------------+---------------+ | +-----------+----------+-------------+-------------+---------------+ | |||
| 2048 | 60 | 3 | 1 | 181.9 ( 8%) | | | 2048 | 60 | 3 | 1 | 181.9 ( 8%) | | |||
+-----------+----------+-------------+-------------+---------------+ | +-----------+----------+-------------+-------------+---------------+ | |||
| 4096 | 30 | 12 | 2 | 100.3 ( 2%) | | | 4096 | 30 | 12 | 2 | 100.3 ( 2%) | | |||
+-----------+----------+-------------+-------------+---------------+ | +-----------+----------+-------------+-------------+---------------+ | |||
| 4096 | 60 | 6 | 1 | 187.5 ( 4%) | | | 4096 | 60 | 6 | 1 | 187.5 ( 4%) | | |||
+-----------+----------+-------------+-------------+---------------+ | +-----------+----------+-------------+-------------+---------------+ | |||
Table 6: Required RTCP bandwidth, reporting on every frame, with | Table 6: Required RTCP Bandwidth, Reporting on Every Frame, with | |||
reduced-size reports | Reduced-Size Reports | |||
The use of reduced-size RTCP gives a noticeable reduction in the | The use of reduced-size RTCP gives a noticeable reduction in the | |||
needed RTCP bandwidth, and can be combined with reporting every few | needed RTCP bandwidth and can be combined with reporting every few | |||
frames rather than every frame. Overall, it is clear that the RTCP | frames, rather than every frame. Overall, it is clear that the RTCP | |||
overhead can be reasonable across the range of data and frame rates, | overhead can be reasonable across the range of data and frame rates | |||
if RTCP is configured carefully. | if RTCP is configured carefully. | |||
As discussed in Section 3.1, the reporting overhead will increase if | As discussed in Section 3.1, the reporting overhead will increase if | |||
IPv6 is used, due to the increased size of the IPv6 header. Table 7 | IPv6 is used, due to the increased size of the IPv6 header. Table 7 | |||
shows the overhead in this case, compared to Table 6. As can be | shows the overhead in this case, compared to Table 6. As can be | |||
seen, the increase in overhead due to IPv6 rapidly becomes less | seen, the increase in overhead due to IPv6 rapidly becomes less | |||
significant as the data rate increases. | significant as the data rate increases. | |||
+-----------+----------+-------------+-------------+---------------+ | +===========+==========+=============+=============+===============+ | |||
| Data Rate | Video | Video | Audio | Required RTCP | | | Data Rate | Video | Video | Audio | Required RTCP | | |||
| (kbps) | Frame | Packets per | Packets per | bandwidth: | | | (kbps) | Frame | Packets per | Packets per | Bandwidth: | | |||
| | Rate: Rf | Report: Nv | Report: Na | Brtcp (kbps) | | | | Rate: Rf | Report: Nv | Report: Na | Brtcp (kbps) | | |||
+-----------+----------+-------------+-------------+---------------+ | +===========+==========+=============+=============+===============+ | |||
| 100 | 8 | 1 | 6 | 27.5 (27%) | | | 100 | 8 | 1 | 6 | 27.5 (27%) | | |||
+-----------+----------+-------------+-------------+---------------+ | +-----------+----------+-------------+-------------+---------------+ | |||
| 200 | 16 | 1 | 3 | 53.5 (26%) | | | 200 | 16 | 1 | 3 | 53.5 (26%) | | |||
+-----------+----------+-------------+-------------+---------------+ | +-----------+----------+-------------+-------------+---------------+ | |||
| 350 | 30 | 1 | 2 | 99.4 (28%) | | | 350 | 30 | 1 | 2 | 99.4 (28%) | | |||
+-----------+----------+-------------+-------------+---------------+ | +-----------+----------+-------------+-------------+---------------+ | |||
| 700 | 30 | 2 | 2 | 100.3 (14%) | | | 700 | 30 | 2 | 2 | 100.3 (14%) | | |||
+-----------+----------+-------------+-------------+---------------+ | +-----------+----------+-------------+-------------+---------------+ | |||
| 700 | 60 | 1 | 1 | 196.9 (28%) | | | 700 | 60 | 1 | 1 | 196.9 (28%) | | |||
+-----------+----------+-------------+-------------+---------------+ | +-----------+----------+-------------+-------------+---------------+ | |||
skipping to change at page 15, line 33 ¶ | skipping to change at line 669 ¶ | |||
+-----------+----------+-------------+-------------+---------------+ | +-----------+----------+-------------+-------------+---------------+ | |||
| 2048 | 30 | 6 | 2 | 104.1 ( 5%) | | | 2048 | 30 | 6 | 2 | 104.1 ( 5%) | | |||
+-----------+----------+-------------+-------------+---------------+ | +-----------+----------+-------------+-------------+---------------+ | |||
| 2048 | 60 | 3 | 1 | 200.6 ( 9%) | | | 2048 | 60 | 3 | 1 | 200.6 ( 9%) | | |||
+-----------+----------+-------------+-------------+---------------+ | +-----------+----------+-------------+-------------+---------------+ | |||
| 4096 | 30 | 12 | 2 | 109.7 ( 2%) | | | 4096 | 30 | 12 | 2 | 109.7 ( 2%) | | |||
+-----------+----------+-------------+-------------+---------------+ | +-----------+----------+-------------+-------------+---------------+ | |||
| 4096 | 60 | 6 | 1 | 206.2 ( 5%) | | | 4096 | 60 | 6 | 1 | 206.2 ( 5%) | | |||
+-----------+----------+-------------+-------------+---------------+ | +-----------+----------+-------------+-------------+---------------+ | |||
Table 7: Required RTCP bandwidth, reporting on every frame, with | Table 7: Required RTCP Bandwidth, Reporting on Every Frame, with | |||
reduced-size reports, using IPv6 | Reduced-Size Reports, Using IPv6 | |||
4. Discussion and Conclusions | 4. Discussion and Conclusions | |||
Practical systems will generally send some non-media traffic on the | Practical systems will generally send some non-media traffic on the | |||
same path as the media traffic. This can include STUN/TURN packets | same path as the media traffic. This can include Session Traversal | |||
to keep-alive NAT bindings [RFC8445], WebRTC Data Channel packets | Utilities for NAT (STUN) / Traversal Using Relays around NAT (TURN) | |||
[RFC8831], etc. Such traffic also needs congestion control, but the | packets to keep alive NAT bindings [RFC8445], WebRTC data channel | |||
means by which this is achieved is out of scope of this memo. | packets [RFC8831], etc. Such traffic also needs congestion control, | |||
but the means by which this is achieved is out of the scope of this | ||||
memo. | ||||
RTCP as it is currently specified cannot be used to send per-packet | RTCP, as it is currently specified, cannot be used to send per-packet | |||
congestion feedback with reasonable overhead. | congestion feedback with reasonable overhead. | |||
RTCP can, however, be used to send congestion feedback on each frame | RTCP can, however, be used to send congestion feedback on each frame | |||
of video sent, provided the session bandwidth exceeds a couple of | of video sent, provided the session bandwidth exceeds a couple of | |||
megabits per second (the exact rate depending on the number of | megabits per second (the exact rate depends on the number of session | |||
session participants, the RTCP bandwidth fraction, and what RTCP | participants, the RTCP bandwidth fraction, what RTCP extensions are | |||
extensions are enabled, and how much detail of feedback is needed). | enabled, and how much detail of feedback is needed). For lower-rate | |||
For lower rate sessions, the overhead of reporting on every frame | sessions, the overhead of reporting on every frame becomes high but | |||
becomes high, but can be reduced to something reasonable by sending | can be reduced to something reasonable by sending reports once per N | |||
reports once per N frames (e.g., every second frame), or by sending | frames (e.g., every second frame) or by sending reduced-size RTCP | |||
reduced-size RTCP reports in between the regular reports. The | reports in between the regular reports. The improved compression of | |||
improved compression of new video codecs exacerbates the reporting | new video codecs exacerbates the reporting overhead for a given video | |||
overhead for a given video quality level, although this is to some | quality level, although this is to some extent countered by the use | |||
extent countered by the use of higher quality video over time. | of higher-quality video over time. | |||
If it is desired to use RTCP in something close to its current form | If it is desired to use RTCP in something close to its current form | |||
for congestion feedback in WebRTC, the multimedia congestion control | for congestion feedback in WebRTC, the multimedia congestion control | |||
algorithm needs to be designed to work with feedback sent every few | algorithm needs to be designed to work with feedback sent every few | |||
frames, since that fits within the limitations of RTCP. The provided | frames, since that fits within the limitations of RTCP. The provided | |||
feedback will be more detailed than just an acknowledgement, however, | feedback will be more detailed than just an acknowledgement, however, | |||
and will provide a loss bitmap, relative arrival time, and received | and will provide a loss bitmap, relative arrival time, and received | |||
ECN marks, for each packet sent. This will allow congestion control | Explicit Congestion Notification (ECN) marks for each packet sent. | |||
that is effective, if slowly responsive, to be implemented (there is | This will allow congestion control that is effective, if slowly | |||
guidance on providing effective congestion control in Section 3.1 of | responsive, to be implemented (there is guidance on providing | |||
[RFC8085]). | effective congestion control in Section 3.1 of [RFC8085]). | |||
The format described in [RFC8888] seems sufficient for the needs of | The format described in [RFC8888] seems sufficient for the needs of | |||
congestion control feedback. There is little point optimising this | congestion control feedback. There is little point optimizing this | |||
format: the main overhead comes from the UDP/IP headers and the other | format; the main overhead comes from the UDP/IP headers and the other | |||
RTCP packets included in the compound packets, and can be lowered by | RTCP packets included in the compound packets and can be lowered by | |||
using the [RFC5506] extensions and sending reports less frequently. | using the extensions described in [RFC5506] and sending reports less | |||
The use of header compression [RFC2508], [RFC3545], [RFC5795] can | frequently. The use of header compression [RFC2508] [RFC3545] | |||
also be beneficial. | [RFC5795] can also be beneficial. | |||
Further study of the scenarios of interest is needed, to ensure that | Further study of the scenarios of interest is needed to ensure that | |||
the analysis presented is applicable to other media topologies | the analysis presented is applicable to other media topologies | |||
[RFC7667], and to sessions with different data rates and sizes of | [RFC7667] and to sessions with different data rates and sizes of | |||
membership. | membership. | |||
5. Security Considerations | 5. Security Considerations | |||
An attacker that can modify or spoof RTCP congestion control feedback | An attacker that can modify or spoof RTCP congestion control feedback | |||
packets can manipulate the sender behaviour to cause denial of | packets can manipulate the sender behavior to cause denial of | |||
service. This can be prevented by authentication and integrity | service. This can be prevented by authentication and integrity | |||
protection of RTCP packets, for example using the secure RTP profile | protection of RTCP packets, for example, using the secure RTP profile | |||
[RFC3711][RFC5124], or by other means as discussed in [RFC7201]. | [RFC3711] [RFC5124] or other means as discussed in [RFC7201]. | |||
6. IANA Considerations | 6. IANA Considerations | |||
There are no actions for IANA. | This document has no IANA actions. | |||
7. Acknowledgements | ||||
Thanks to Bernard Aboba, Martin Duke, Linda Dunbar, Gorry Fairhurst, | ||||
Ingemar Johansson, Shuping Peng, Alvaro Retana, Zahed Sarker, John | ||||
Scudder, Éric Vyncke, Magnus Westerlund, and the members of the | ||||
RMCAT feedback design team for their feedback. | ||||
8. Normative References | 7. Normative References | |||
[RFC2914] Floyd, S., "Congestion Control Principles", BCP 41, | [RFC2914] Floyd, S., "Congestion Control Principles", BCP 41, | |||
RFC 2914, DOI 10.17487/RFC2914, September 2000, | RFC 2914, DOI 10.17487/RFC2914, September 2000, | |||
<https://www.rfc-editor.org/info/rfc2914>. | <https://www.rfc-editor.org/info/rfc2914>. | |||
[RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V. | [RFC3550] Schulzrinne, H., Casner, S., Frederick, R., and V. | |||
Jacobson, "RTP: A Transport Protocol for Real-Time | Jacobson, "RTP: A Transport Protocol for Real-Time | |||
Applications", STD 64, RFC 3550, DOI 10.17487/RFC3550, | Applications", STD 64, RFC 3550, DOI 10.17487/RFC3550, | |||
July 2003, <https://www.rfc-editor.org/info/rfc3550>. | July 2003, <https://www.rfc-editor.org/info/rfc3550>. | |||
skipping to change at page 18, line 5 ¶ | skipping to change at line 775 ¶ | |||
[RFC7022] Begen, A., Perkins, C., Wing, D., and E. Rescorla, | [RFC7022] Begen, A., Perkins, C., Wing, D., and E. Rescorla, | |||
"Guidelines for Choosing RTP Control Protocol (RTCP) | "Guidelines for Choosing RTP Control Protocol (RTCP) | |||
Canonical Names (CNAMEs)", RFC 7022, DOI 10.17487/RFC7022, | Canonical Names (CNAMEs)", RFC 7022, DOI 10.17487/RFC7022, | |||
September 2013, <https://www.rfc-editor.org/info/rfc7022>. | September 2013, <https://www.rfc-editor.org/info/rfc7022>. | |||
[RFC7201] Westerlund, M. and C. Perkins, "Options for Securing RTP | [RFC7201] Westerlund, M. and C. Perkins, "Options for Securing RTP | |||
Sessions", RFC 7201, DOI 10.17487/RFC7201, April 2014, | Sessions", RFC 7201, DOI 10.17487/RFC7201, April 2014, | |||
<https://www.rfc-editor.org/info/rfc7201>. | <https://www.rfc-editor.org/info/rfc7201>. | |||
[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>. | ||||
[RFC8083] Perkins, C. and V. Singh, "Multimedia Congestion Control: | [RFC8083] Perkins, C. and V. Singh, "Multimedia Congestion Control: | |||
Circuit Breakers for Unicast RTP Sessions", RFC 8083, | Circuit Breakers for Unicast RTP Sessions", RFC 8083, | |||
DOI 10.17487/RFC8083, March 2017, | DOI 10.17487/RFC8083, March 2017, | |||
<https://www.rfc-editor.org/info/rfc8083>. | <https://www.rfc-editor.org/info/rfc8083>. | |||
[RFC8085] Eggert, L., Fairhurst, G., and G. Shepherd, "UDP Usage | [RFC8085] Eggert, L., Fairhurst, G., and G. Shepherd, "UDP Usage | |||
Guidelines", BCP 145, RFC 8085, DOI 10.17487/RFC8085, | Guidelines", BCP 145, RFC 8085, DOI 10.17487/RFC8085, | |||
March 2017, <https://www.rfc-editor.org/info/rfc8085>. | March 2017, <https://www.rfc-editor.org/info/rfc8085>. | |||
[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>. | ||||
[RFC8825] Alvestrand, H., "Overview: Real-Time Protocols for | [RFC8825] Alvestrand, H., "Overview: Real-Time Protocols for | |||
Browser-Based Applications", RFC 8825, | Browser-Based Applications", RFC 8825, | |||
DOI 10.17487/RFC8825, January 2021, | DOI 10.17487/RFC8825, January 2021, | |||
<https://www.rfc-editor.org/info/rfc8825>. | <https://www.rfc-editor.org/info/rfc8825>. | |||
[RFC8834] Perkins, C., Westerlund, M., and J. Ott, "Media Transport | [RFC8834] Perkins, C., Westerlund, M., and J. Ott, "Media Transport | |||
and Use of RTP in WebRTC", RFC 8834, DOI 10.17487/RFC8834, | and Use of RTP in WebRTC", RFC 8834, DOI 10.17487/RFC8834, | |||
January 2021, <https://www.rfc-editor.org/info/rfc8834>. | January 2021, <https://www.rfc-editor.org/info/rfc8834>. | |||
[RFC8861] Lennox, J., Westerlund, M., Wu, Q., and C. Perkins, | [RFC8861] Lennox, J., Westerlund, M., Wu, Q., and C. Perkins, | |||
skipping to change at page 18, line 45 ¶ | skipping to change at line 815 ¶ | |||
and R. Even, "Guidelines for Using the Multiplexing | and R. Even, "Guidelines for Using the Multiplexing | |||
Features of RTP to Support Multiple Media Streams", | Features of RTP to Support Multiple Media Streams", | |||
RFC 8872, DOI 10.17487/RFC8872, January 2021, | RFC 8872, DOI 10.17487/RFC8872, January 2021, | |||
<https://www.rfc-editor.org/info/rfc8872>. | <https://www.rfc-editor.org/info/rfc8872>. | |||
[RFC8888] Sarker, Z., Perkins, C., Singh, V., and M. Ramalho, "RTP | [RFC8888] Sarker, Z., Perkins, C., Singh, V., and M. Ramalho, "RTP | |||
Control Protocol (RTCP) Feedback for Congestion Control", | Control Protocol (RTCP) Feedback for Congestion Control", | |||
RFC 8888, DOI 10.17487/RFC8888, January 2021, | RFC 8888, DOI 10.17487/RFC8888, January 2021, | |||
<https://www.rfc-editor.org/info/rfc8888>. | <https://www.rfc-editor.org/info/rfc8888>. | |||
9. Informative References | 8. Informative References | |||
[RFC2508] Casner, S. and V. Jacobson, "Compressing IP/UDP/RTP | [RFC2508] Casner, S. and V. Jacobson, "Compressing IP/UDP/RTP | |||
Headers for Low-Speed Serial Links", RFC 2508, | Headers for Low-Speed Serial Links", RFC 2508, | |||
DOI 10.17487/RFC2508, February 1999, | DOI 10.17487/RFC2508, February 1999, | |||
<https://www.rfc-editor.org/info/rfc2508>. | <https://www.rfc-editor.org/info/rfc2508>. | |||
[RFC3449] Balakrishnan, H., Padmanabhan, V., Fairhurst, G., and M. | [RFC3449] Balakrishnan, H., Padmanabhan, V., Fairhurst, G., and M. | |||
Sooriyabandara, "TCP Performance Implications of Network | Sooriyabandara, "TCP Performance Implications of Network | |||
Path Asymmetry", BCP 69, RFC 3449, DOI 10.17487/RFC3449, | Path Asymmetry", BCP 69, RFC 3449, DOI 10.17487/RFC3449, | |||
December 2002, <https://www.rfc-editor.org/info/rfc3449>. | December 2002, <https://www.rfc-editor.org/info/rfc3449>. | |||
skipping to change at page 19, line 26 ¶ | skipping to change at line 843 ¶ | |||
[RFC3611] Friedman, T., Ed., Caceres, R., Ed., and A. Clark, Ed., | [RFC3611] Friedman, T., Ed., Caceres, R., Ed., and A. Clark, Ed., | |||
"RTP Control Protocol Extended Reports (RTCP XR)", | "RTP Control Protocol Extended Reports (RTCP XR)", | |||
RFC 3611, DOI 10.17487/RFC3611, November 2003, | RFC 3611, DOI 10.17487/RFC3611, November 2003, | |||
<https://www.rfc-editor.org/info/rfc3611>. | <https://www.rfc-editor.org/info/rfc3611>. | |||
[RFC5348] Floyd, S., Handley, M., Padhye, J., and J. Widmer, "TCP | [RFC5348] Floyd, S., Handley, M., Padhye, J., and J. Widmer, "TCP | |||
Friendly Rate Control (TFRC): Protocol Specification", | Friendly Rate Control (TFRC): Protocol Specification", | |||
RFC 5348, DOI 10.17487/RFC5348, September 2008, | RFC 5348, DOI 10.17487/RFC5348, September 2008, | |||
<https://www.rfc-editor.org/info/rfc5348>. | <https://www.rfc-editor.org/info/rfc5348>. | |||
[RFC5795] Sandlund, K., Pelletier, G., and L-E. Jonsson, "The RObust | [RFC5795] Sandlund, K., Pelletier, G., and L. Jonsson, "The RObust | |||
Header Compression (ROHC) Framework", RFC 5795, | Header Compression (ROHC) Framework", RFC 5795, | |||
DOI 10.17487/RFC5795, March 2010, | DOI 10.17487/RFC5795, March 2010, | |||
<https://www.rfc-editor.org/info/rfc5795>. | <https://www.rfc-editor.org/info/rfc5795>. | |||
[RFC7667] Westerlund, M. and S. Wenger, "RTP Topologies", RFC 7667, | [RFC7667] Westerlund, M. and S. Wenger, "RTP Topologies", RFC 7667, | |||
DOI 10.17487/RFC7667, November 2015, | DOI 10.17487/RFC7667, November 2015, | |||
<https://www.rfc-editor.org/info/rfc7667>. | <https://www.rfc-editor.org/info/rfc7667>. | |||
[RFC8445] Keranen, A., Holmberg, C., and J. Rosenberg, "Interactive | [RFC8445] Keranen, A., Holmberg, C., and J. Rosenberg, "Interactive | |||
Connectivity Establishment (ICE): A Protocol for Network | Connectivity Establishment (ICE): A Protocol for Network | |||
Address Translator (NAT) Traversal", RFC 8445, | Address Translator (NAT) Traversal", RFC 8445, | |||
DOI 10.17487/RFC8445, July 2018, | DOI 10.17487/RFC8445, July 2018, | |||
<https://www.rfc-editor.org/info/rfc8445>. | <https://www.rfc-editor.org/info/rfc8445>. | |||
[RFC8831] Jesup, R., Loreto, S., and M. Tüxen, "WebRTC Data | [RFC8831] Jesup, R., Loreto, S., and M. Tüxen, "WebRTC Data | |||
Channels", RFC 8831, DOI 10.17487/RFC8831, January 2021, | Channels", RFC 8831, DOI 10.17487/RFC8831, January 2021, | |||
<https://www.rfc-editor.org/info/rfc8831>. | <https://www.rfc-editor.org/info/rfc8831>. | |||
[RFC9293] Eddy, W., Ed., "Transmission Control Protocol (TCP)", | [RFC9293] Eddy, W., Ed., "Transmission Control Protocol (TCP)", | |||
STD 7, RFC 9293, DOI 10.17487/RFC9293, August 2022, | STD 7, RFC 9293, DOI 10.17487/RFC9293, August 2022, | |||
<https://www.rfc-editor.org/info/rfc9293>. | <https://www.rfc-editor.org/info/rfc9293>. | |||
Acknowledgements | ||||
Thanks to Bernard Aboba, Martin Duke, Linda Dunbar, Gorry Fairhurst, | ||||
Ingemar Johansson, Shuping Peng, Alvaro Retana, Zahed Sarker, John | ||||
Scudder, Éric Vyncke, Magnus Westerlund, and the members of the RMCAT | ||||
feedback design team for their feedback. | ||||
Author's Address | Author's Address | |||
Colin Perkins | Colin Perkins | |||
University of Glasgow | University of Glasgow | |||
School of Computing Science | School of Computing Science | |||
Glasgow | Glasgow | |||
G12 8QQ | G12 8QQ | |||
United Kingdom | United Kingdom | |||
Email: csp@csperkins.org | Email: csp@csperkins.org | |||
End of changes. 101 change blocks. | ||||
297 lines changed or deleted | 327 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |