rfc8888xml2.original.xml | rfc8888.xml | |||
---|---|---|---|---|
<?xml version="1.0" encoding="US-ASCII"?> | <?xml version='1.0' encoding='utf-8'?> | |||
<!DOCTYPE rfc SYSTEM "rfc2629.dtd"> | <!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent"> | |||
<?rfc strict="yes" ?> | ||||
<?rfc toc="yes"?> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" category="std" docName="draft-ie | |||
<?rfc tocdepth="4"?> | tf-avtcore-cc-feedback-message-09" number="8888" ipr="trust200902" obsoletes="" | |||
<?rfc symrefs="yes"?> | updates="" submissionType="IETF" consensus="true" xml:lang="en" tocInclude="true | |||
<?rfc sortrefs="yes" ?> | " tocDepth="4" symRefs="true" sortRefs="true" version="3"> | |||
<?rfc compact="yes" ?> | <!-- xml2rfc v2v3 conversion 3.5.0 --> | |||
<?rfc subcompact="no" ?> | ||||
<rfc category="std" docName="draft-ietf-avtcore-cc-feedback-message-09" | ||||
ipr="trust200902"> | ||||
<front> | <front> | |||
<title abbrev="Congestion Control Feedback in RTCP">RTP Control Protocol | <title abbrev="Congestion Control Feedback in RTCP">RTP Control Protocol | |||
(RTCP) Feedback for Congestion Control</title> | (RTCP) Feedback for Congestion Control</title> | |||
<seriesInfo name="RFC" value="8888"/> | ||||
<author fullname="Zaheduzzaman Sarker" initials="Z." surname="Sarker"> | <author fullname="Zaheduzzaman Sarker" initials="Z." surname="Sarker"> | |||
<organization>Ericsson AB</organization> | <organization>Ericsson AB</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>Torshamnsgatan 21</street> | <street>Torshamnsgatan 23</street> | |||
<city>Stockholm</city> | <city>Stockholm</city> | |||
<region/> | ||||
<region></region> | <code>164 83</code> | |||
<code>164 40</code> | ||||
<country>Sweden</country> | <country>Sweden</country> | |||
</postal> | </postal> | |||
<phone>+46 10 717 37 43</phone> | ||||
<phone>+46107173743</phone> | ||||
<email>zaheduzzaman.sarker@ericsson.com</email> | <email>zaheduzzaman.sarker@ericsson.com</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Colin Perkins" initials="C." surname="Perkins"> | ||||
<author fullname="Colin Perkins" initials="C. S." surname="Perkins"> | ||||
<organization>University of Glasgow</organization> | <organization>University of Glasgow</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>School of Computing Science</street> | <street>School of Computing Science</street> | |||
<city>Glasgow</city> | <city>Glasgow</city> | |||
<code>G12 8QQ</code> | <code>G12 8QQ</code> | |||
<country>United Kingdom</country> | <country>United Kingdom</country> | |||
</postal> | </postal> | |||
<email>csp@csperkins.org</email> | <email>csp@csperkins.org</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Varun Singh" initials="V." surname="Singh"> | <author fullname="Varun Singh" initials="V." surname="Singh"> | |||
<organization abbrev="callstats.io">CALLSTATS I/O Oy</organization> | <organization abbrev="callstats.io">CALLSTATS I/O Oy</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street>Annankatu 31-33 C 42</street> | <street>Annankatu 31-33 C 42</street> | |||
<city>Helsinki</city> | <city>Helsinki</city> | |||
<code>00100</code> | <code>00100</code> | |||
<country>Finland</country> | <country>Finland</country> | |||
</postal> | </postal> | |||
<email>varun.singh@iki.fi</email> | <email>varun.singh@iki.fi</email> | |||
<uri>https://www.callstats.io/</uri> | ||||
<uri>http://www.callstats.io/</uri> | ||||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Michael A. Ramalho" initials="M." surname="Ramalho"> | ||||
<author fullname="Michael A. Ramalho" initials="M. A." surname="Ramalho"> | <organization abbrev="AcousticComms">AcousticComms Consulting</organization | |||
> | ||||
<address> | <address> | |||
<postal> | <postal> | |||
<street>6310 Watercrest Way Unit 203</street> | <street>6310 Watercrest Way Unit 203</street> | |||
<city>Lakewood Ranch</city> | <city>Lakewood Ranch</city> | |||
<region>FL</region> | <region>FL</region> | |||
<code>34202-5122</code> | <code>34202-5122</code> | |||
<country>USA</country> | <country>United States of America</country> | |||
</postal> | </postal> | |||
<phone>+1 732 832 9723</phone> | <phone>+1 732 832 9723</phone> | |||
<email>mar42@cornell.edu</email> | <email>mar42@cornell.edu</email> | |||
<uri>http://ramalho.webhop.info/</uri> | <uri>http://ramalho.webhop.info/</uri> | |||
</address> | </address> | |||
</author> | </author> | |||
<date month="January" year="2021"/> | ||||
<date day="2" month="November" year="2020" /> | <keyword>Congestion control</keyword> | |||
<keyword>feedback message</keyword> | ||||
<area>Transport</area> | <keyword>RTP</keyword> | |||
<keyword>RTCP</keyword> | ||||
<workgroup>IETF RMCAT Working Group</workgroup> | ||||
<keyword>Congestion control, feedback message, RTP, RTCP</keyword> | ||||
<abstract> | <abstract> | |||
<t> | <t> | |||
An effective RTP congestion control algorithm requires more fine-grained | An effective RTP congestion control algorithm requires more fine-grained | |||
feedback on packet loss, timing, and ECN marks than is provided by the | feedback on packet loss, timing, and Explicit Congestion Notification (E CN) marks than is provided by the | |||
standard RTP Control Protocol (RTCP) Sender Report (SR) and Receiver | standard RTP Control Protocol (RTCP) Sender Report (SR) and Receiver | |||
Report (RR) packets. | Report (RR) packets. | |||
This document describes an RTCP feedback message intended to enable | This document describes an RTCP feedback message intended to enable | |||
congestion control for interactive real-time traffic using RTP. The | congestion control for interactive real-time traffic using RTP. The | |||
feedback message is designed for use with a sender-based congestion | feedback message is designed for use with a sender-based congestion | |||
control algorithm, in which the receiver of an RTP flow sends RTCP | control algorithm, in which the receiver of an RTP flow sends back to th | |||
feedback packets to the sender containing the information the sender | e sender RTCP | |||
feedback packets containing the information the sender | ||||
needs to perform congestion control. | needs to perform congestion control. | |||
</t> | </t> | |||
</abstract> | </abstract> | |||
</front> | </front> | |||
<middle> | <middle> | |||
<section title="Introduction"> | <section numbered="true" toc="default"> | |||
<name>Introduction</name> | ||||
<t>For interactive real-time traffic, such as video conferencing | <t>For interactive real-time traffic, such as video conferencing | |||
flows, the typical protocol choice is the Real-time Transport | flows, the typical protocol choice is the Real-time Transport | |||
Protocol (RTP) <xref target="RFC3550"/> running over the User Datagram Pro tocol (UDP). RTP | Protocol (RTP) <xref target="RFC3550" format="default"/> running over the User Datagram Protocol (UDP). RTP | |||
does not provide any guarantee of Quality of Service (QoS), reliability, | does not provide any guarantee of Quality of Service (QoS), reliability, | |||
or timely delivery, and expects the underlying transport protocol to | or timely delivery, and expects the underlying transport protocol to | |||
do so. UDP alone certainly does not meet that expectation. However, | do so. UDP alone certainly does not meet that expectation. However, | |||
the RTP Control Protocol (RTCP) <xref target="RFC3550"/> provides a mechan ism by which the | the RTP Control Protocol (RTCP) <xref target="RFC3550" format="default"/> provides a mechanism by which the | |||
receiver of an RTP flow can periodically send transport and media | receiver of an RTP flow can periodically send transport and media | |||
quality metrics to the sender of that RTP flow. This information can | quality metrics to the sender of that RTP flow. This information can | |||
be used by the sender to perform congestion control. In the absence | be used by the sender to perform congestion control. In the absence | |||
of standardized messages for this purpose, designers of congestion | of standardized messages for this purpose, designers of congestion | |||
control algorithms have developed proprietary RTCP messages that | control algorithms have developed proprietary RTCP messages that | |||
convey only those parameters needed for their respective designs. | convey only those parameters needed for their respective designs. | |||
As a direct result, the different congestion control | As a direct result, the different congestion control | |||
designs are not interoperable. To enable algorithm | designs are not interoperable. To enable algorithm | |||
evolution as well as interoperability across designs (e.g., different | evolution as well as interoperability across designs (e.g., different | |||
rate adaptation algorithms), it is highly desirable to have a generic | rate adaptation algorithms), it is highly desirable to have a generic | |||
skipping to change at line 135 ¶ | skipping to change at line 106 ¶ | |||
quality metrics to the sender of that RTP flow. This information can | quality metrics to the sender of that RTP flow. This information can | |||
be used by the sender to perform congestion control. In the absence | be used by the sender to perform congestion control. In the absence | |||
of standardized messages for this purpose, designers of congestion | of standardized messages for this purpose, designers of congestion | |||
control algorithms have developed proprietary RTCP messages that | control algorithms have developed proprietary RTCP messages that | |||
convey only those parameters needed for their respective designs. | convey only those parameters needed for their respective designs. | |||
As a direct result, the different congestion control | As a direct result, the different congestion control | |||
designs are not interoperable. To enable algorithm | designs are not interoperable. To enable algorithm | |||
evolution as well as interoperability across designs (e.g., different | evolution as well as interoperability across designs (e.g., different | |||
rate adaptation algorithms), it is highly desirable to have a generic | rate adaptation algorithms), it is highly desirable to have a generic | |||
congestion control feedback format.</t> | congestion control feedback format.</t> | |||
<t>To help achieve interoperability for unicast RTP congestion control, | <t>To help achieve interoperability for unicast RTP congestion control, | |||
this memo proposes a common RTCP feedback packet format that can be used b | this memo specifies a common RTCP feedback packet format that can be used | |||
y | by | |||
NADA <xref target="RFC8698"></xref>, SCReAM <xref | Network-Assisted Dynamic Adaptation | |||
target="RFC8298"></xref>, Google Congestion Control | (NADA) <xref target="RFC8698" format="default"/>, | |||
<xref target="I-D.ietf-rmcat-gcc"></xref> and Shared Bottleneck | Self-Clocked Rate Adaptation for Multimedia (SCReAM) <xref target="RFC8298 | |||
Detection <xref target="RFC8382"></xref>, and hopefully | " format="default"/>, Google Congestion Control | |||
also by future RTP congestion control algorithms.</t> | <xref target="Google-GCC"/>, and Shared Bottleneck | |||
Detection <xref target="RFC8382" format="default"/>, and, hopefully, | ||||
also by future RTP congestion control algorithms. | ||||
</t> | ||||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Terminology"> | <name>Terminology</name> | |||
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", | |||
"OPTIONAL" in this document are to be interpreted as described in BCP | "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", | |||
14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only | "<bcp14>SHOULD NOT</bcp14>", | |||
when, they appear in all capitals, as shown here.</t> | "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", | |||
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document | ||||
<t>In addition the terminology defined in <xref target="RFC3550"></xref>, | are to be interpreted as described in BCP 14 | |||
<xref target="RFC4585"></xref>, and <xref target="RFC5506"></xref> applies | <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only | |||
.</t> | when, they appear in all capitals, as shown here.</t> | |||
<t>In addition, the terminology defined in <xref target="RFC3550" format=" | ||||
default"/>, | ||||
<xref target="RFC4585" format="default"/>, and <xref target="RFC5506" form | ||||
at="default"/> applies.</t> | ||||
</section> | </section> | |||
<section anchor="feedback_message" numbered="true" toc="default"> | ||||
<section anchor="feedback_message" title="RTCP Feedback for Congestion Contr | <name>RTCP Feedback for Congestion Control</name> | |||
ol"> | <t>Based on an analysis of NADA <xref target="RFC8698" format="default"/>, | |||
<t>Based on an analysis of NADA <xref target="RFC8698"></xref>, | SCReAM <xref target="RFC8298" format="default"/>, Google | |||
SCReAM <xref target="RFC8298"></xref>, Google | Congestion Control <xref target="Google-GCC"/>, and | |||
Congestion Control <xref target="I-D.ietf-rmcat-gcc"></xref> and | Shared Bottleneck Detection <xref target="RFC8382" format="default"/>, | |||
Shared Bottleneck Detection <xref target="RFC8382"></xref>, | ||||
the following per-RTP packet congestion control feedback information | the following per-RTP packet congestion control feedback information | |||
has been determined to be necessary:</t> | has been determined to be necessary:</t> | |||
<dl newline="false" spacing="normal"> | ||||
<t> | <dt>RTP Sequence Number:</dt><dd>The receiver of an RTP flow needs to fe | |||
<list style="symbols"> | ed | |||
<t>RTP sequence number: The receiver of an RTP flow needs to feed | ||||
the sequence numbers of the received RTP packets back to the sender, s o the | the sequence numbers of the received RTP packets back to the sender, s o the | |||
sender can determine which packets were received and which were lost. | sender can determine which packets were received and which were lost. | |||
Packet loss is used as an indication of congestion by many congestion | Packet loss is used as an indication of congestion by many congestion | |||
control algorithms.</t> | control algorithms.</dd> | |||
<dt>Packet Arrival Time:</dt><dd>The receiver of an RTP flow needs to fe | ||||
<t>Packet Arrival Time: The receiver of an RTP flow needs to feed | ed | |||
the arrival time of each RTP packet back to the sender. Packet delay a nd/or | the arrival time of each RTP packet back to the sender. Packet delay a nd/or | |||
delay variation (jitter) is used as a congestion signal by some conges tion | delay variation (jitter) is used as a congestion signal by some conges tion | |||
control algorithms.</t> | control algorithms.</dd> | |||
<dt>Packet Explicit Congestion Notification (ECN) Marking:</dt><dd>If EC | ||||
<t>Packet Explicit Congestion Notification (ECN) Marking: If ECN | N | |||
<xref target="RFC3168"></xref>, <xref target="RFC6679"></xref> is | <xref target="RFC3168" format="default"/> <xref target="RFC6679" forma | |||
t="default"/> is | ||||
used, it is necessary to feed back the 2-bit ECN mark in received | 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 | RTP packets, indicating for each RTP packet whether it is marked | |||
not-ECT, ECT(0), ECT(1), or ECN-CE. If the path used by the RTP | not-ECT, ECT(0), ECT(1), or ECN Congestion Experienced (ECN-CE). | |||
traffic is ECN capable the sender can use Congestion Experienced | ("ECT" stands for "ECN-Capable Transport".) If the path used by the RT | |||
(ECN-CE) marking information as a congestion control signal.</t> | P | |||
</list> | traffic is ECN capable, the sender can use ECN-CE marking information | |||
</t> | as a congestion control signal.</dd> | |||
</dl> | ||||
<t>Every RTP flow is identified by its Synchronization Source (SSRC) | <t>Every RTP flow is identified by its Synchronization Source (SSRC) | |||
identifier. Accordingly, the RTCP feedback format needs to group its | identifier. Accordingly, the RTCP feedback format needs to group its | |||
reports by SSRC, sending one report block per received SSRC.</t> | reports by SSRC, sending one report block per received SSRC.</t> | |||
<t>As a practical matter, we note that host operating system (OS) | <t>As a practical matter, we note that host operating system (OS) | |||
process interruptions can occur at inopportune times. Accordingly, | process interruptions can occur at inopportune times. Accordingly, | |||
recording RTP packet send times at the sender, and the corresponding | recording RTP packet send times at the sender, and the corresponding | |||
RTP packet arrival times at the | RTP packet arrival times at the | |||
receiver, needs to be done with deliberate care. This is because the time | receiver, needs to be done with deliberate care. This is because the time | |||
duration of host OS interruptions can be significant relative to the | duration of host OS interruptions can be significant relative to the | |||
precision desired in the one-way delay estimates. Specifically, the send | precision desired in the one-way delay estimates. Specifically, the send | |||
time needs to be recorded at the last opportunity prior to transmitting | 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 | the RTP packet at the sender, and the arrival time at the receiver needs | |||
to be recorded at the earliest available opportunity.</t> | to be recorded at the earliest available opportunity.</t> | |||
skipping to change at line 201 ¶ | skipping to change at line 169 ¶ | |||
<t>As a practical matter, we note that host operating system (OS) | <t>As a practical matter, we note that host operating system (OS) | |||
process interruptions can occur at inopportune times. Accordingly, | process interruptions can occur at inopportune times. Accordingly, | |||
recording RTP packet send times at the sender, and the corresponding | recording RTP packet send times at the sender, and the corresponding | |||
RTP packet arrival times at the | RTP packet arrival times at the | |||
receiver, needs to be done with deliberate care. This is because the time | receiver, needs to be done with deliberate care. This is because the time | |||
duration of host OS interruptions can be significant relative to the | duration of host OS interruptions can be significant relative to the | |||
precision desired in the one-way delay estimates. Specifically, the send | precision desired in the one-way delay estimates. Specifically, the send | |||
time needs to be recorded at the last opportunity prior to transmitting | 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 | the RTP packet at the sender, and the arrival time at the receiver needs | |||
to be recorded at the earliest available opportunity.</t> | to be recorded at the earliest available opportunity.</t> | |||
<section anchor="sec_ccfb" numbered="true" toc="default"> | ||||
<section anchor="sec:ccfb" title="RTCP Congestion Control Feedback Report" | <name>RTCP Congestion Control Feedback Report</name> | |||
> | ||||
<t>Congestion control feedback can be sent as part of a regular | <t>Congestion control feedback can be sent as part of a regular | |||
scheduled RTCP report, or in an RTP/AVPF early feedback packet. | scheduled RTCP report or in an RTP/AVPF early feedback packet. | |||
If sent as early feedback, congestion control feedback MAY be | If sent as early feedback, congestion control feedback <bcp14>MAY</bcp14 | |||
sent in a non-compound RTCP packet <xref target="RFC5506"></xref> | > be | |||
if the RTP/AVPF profile <xref target="RFC4585"></xref> or the | sent in a non-compound RTCP packet <xref target="RFC5506" format="defaul | |||
RTP/SAVPF profile <xref target="RFC5124"></xref> is used.</t> | t"/> | |||
if the RTP/AVPF profile <xref target="RFC4585" format="default"/> or the | ||||
RTP/SAVPF profile <xref target="RFC5124" format="default"/> is used.</t> | ||||
<t>Irrespective of how it is transported, the congestion control | <t>Irrespective of how it is transported, the congestion control | |||
feedback is sent as a Transport Layer Feedback Message (RTCP packet | feedback is sent as a Transport-Layer Feedback Message (RTCP packet | |||
type 205). The format of this RTCP packet is shown in | type 205). The format of this RTCP packet is shown in | |||
<xref target="rtcp-packet"></xref>:</t> | <xref target="rtcp-packet" format="default"/>:</t> | |||
<figure anchor="rtcp-packet"> | ||||
<t><figure anchor="rtcp-packet" title="RTCP Congestion Control Feedback | <name>RTCP Congestion Control Feedback Packet Format</name> | |||
Packet Format"> | <artwork name="" type="" align="left" alt=""><![CDATA[ | |||
<artwork><![CDATA[ | 0 1 2 3 | |||
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 | |||
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 | | |||
|V=2|P| FMT=CCFB| PT = 205 | length | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | SSRC of RTCP packet sender | | |||
| SSRC of RTCP packet sender | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | SSRC of 1st RTP Stream | | |||
| SSRC of 1st RTP Stream | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | begin_seq | num_reports | | |||
| begin_seq | num_reports | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |R|ECN| Arrival time offset | ... . | |||
|R|ECN| Arrival time offset | ... . | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | . . | |||
. . | . . | |||
. . | . . | |||
. . | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | SSRC of nth RTP Stream | | |||
| SSRC of nth RTP Stream | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | begin_seq | num_reports | | |||
| begin_seq | num_reports | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |R|ECN| Arrival time offset | ... | | |||
|R|ECN| Arrival time offset | ... | | . . | |||
. . | . . | |||
. . | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | Report Timestamp (32 bits) | | |||
| Report Timestamp (32bits) | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+]]></artwork> | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | </figure> | |||
]]></artwork> | <t>The first 8 octets comprise a standard RTCP header, with | |||
</figure></t> | PT=205 and FMT=11 indicating that this is a congestion control | |||
<t>The first eight octets comprise a standard RTCP header, with | ||||
PT=205 and FMT=CCFB indicating that this is a congestion control | ||||
feedback packet, and with the SSRC set to that of the sender of | feedback packet, and with the SSRC set to that of the sender of | |||
the RTCP packet. (NOTE TO RFC EDITOR: please replace CCFB here and | the RTCP packet.</t> | |||
in the above diagram with the IANA assigned RTCP feedback packet | ||||
type, and remove this note)</t> | ||||
<t>Section 6.1 of <xref target="RFC4585"></xref> requires the RTCP | <t><xref target="RFC4585" sectionFormat="of" section="6.1"/> | |||
requires the RTCP | ||||
header to be followed by the SSRC of the RTP flow being reported | header to be followed by the SSRC of the RTP flow being reported | |||
upon. Accordingly, the RTCP header is followed by a report block | upon. Accordingly, the RTCP header is followed by a report block | |||
for each SSRC from which RTP packets have been received, followed | for each SSRC from which RTP packets have been received, followed | |||
by a Report Timestamp.</t> | by a Report Timestamp.</t> | |||
<t>Each report block begins with the SSRC of the received RTP stream | ||||
<t>Each report block begins with the SSRC of the received RTP Stream | ||||
on which it is reporting. Following this, the report block contains a | on which it is reporting. Following this, the report block contains a | |||
16-bit packet metric block for each RTP packet with sequence number | 16-bit packet metric block for each RTP packet that has a sequence numbe r | |||
in the range begin_seq to begin_seq+num_reports inclusive (calculated us ing | in the range begin_seq to begin_seq+num_reports inclusive (calculated us ing | |||
arithmetic modulo 65536 to account for possible sequence number wrap-aro und). | arithmetic modulo 65536 to account for possible sequence number wrap-aro und). | |||
If the number of 16-bit packet metric blocks included in the report | 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 | block is not a multiple of two, then 16 bits of zero padding <bcp14>MUST </bcp14> be | |||
added after the last packet metric block, to align the end of the | added after the last packet metric block, to align the end of the | |||
packet metric blocks with the next 32 bit boundary. | packet metric blocks with the next 32-bit boundary. | |||
The value of num_reports MAY be zero, indicating that there are no | The value of num_reports <bcp14>MAY</bcp14> be 0, indicating that there | |||
are no | ||||
packet metric blocks included for that SSRC. | packet metric blocks included for that SSRC. | |||
Each report block MUST NOT include more than 16384 packet metric blocks | Each report block <bcp14>MUST NOT</bcp14> include more than 16384 packet | |||
(i.e., it MUST NOT report on more than one quarter of the sequence | metric blocks | |||
(i.e., it <bcp14>MUST NOT</bcp14> report on more than one quarter of the | ||||
sequence | ||||
number space in a single report). | number space in a single report). | |||
</t> | </t> | |||
<t> | <t> | |||
The contents of each 16-bit packet metric block comprises the R, ECN, | The contents of each 16-bit packet metric block comprise the R, ECN, | |||
and ATO fields as follows: | and ATO fields as follows: | |||
<list style="symbols"> | </t> | |||
<t> | <dl newline="false" spacing="normal"> | |||
Received (R, 1 bit): is a boolean to indicate if the packet was | <dt>Received (R, 1 bit):</dt><dd>A boolean that indicates whether the | |||
received. 0 represents that the packet was not yet received and | packet was | |||
the subsequent 15-bits (ECN and ATO) in this 16-bit packet | received. 0 indicates that the packet was not yet received a | |||
metric block are also set to 0 and MUST be ignored. | nd | |||
1 represents that the packet was received and the subsequent | the subsequent 15 bits (ECN and ATO) in this 16-bit packet | |||
bits in the block need to be parsed. | metric block are also set to 0 and <bcp14>MUST</bcp14> be ignored. | |||
</t> | 1 indicates that the packet was received and the subsequent | |||
bits in the block need to be parsed.</dd> | ||||
<t> | <dt>ECN (2 bits):</dt><dd>The echoed ECN mark of the packet. These bit | |||
ECN (2 bits): is the echoed ECN mark of the packet. These | s | |||
are set to 00 if not received, or if ECN is not used. | are set to 00 if not received or if ECN is not used.</dd> | |||
</t> | <dt>Arrival time offset (ATO, 13 bits):</dt><dd>The arrival time of | |||
<t> | ||||
Arrival time offset (ATO, 13 bits): is the arrival time of | ||||
the RTP packet at the receiver, as an offset before the time | the RTP packet at the receiver, as an offset before the time | |||
represented by the Report Timestamp (RTS) field of this RTCP conge stion control | represented by the Report Timestamp (RTS) field of this RTCP conge stion control | |||
feedback report. The ATO field is in units of 1/1024 seconds | feedback report. The ATO field is in units of 1/1024 seconds | |||
(this unit is chosen to give exact offsets from the RTS field) | (this unit is chosen to give exact offsets from the RTS field) | |||
so, for example, an ATO value of 512 indicates that the | so, for example, an ATO value of 512 indicates that the | |||
corresponding RTP packet arrived exactly half a second before | corresponding RTP packet arrived exactly half a second before | |||
the time instant represented by the RTS field. | the time instant represented by the RTS field. | |||
If the measured value is greater than 8189/1024 seconds (the | If the measured value is greater than 8189/1024 seconds (the | |||
value that would be coded as 0x1FFD), the value 0x1FFE MUST | value that would be coded as 0x1FFD), the value 0x1FFE <bcp14>MUST </bcp14> | |||
be reported to indicate an over-range measurement. | be reported to indicate an over-range measurement. | |||
If the measurement is unavailable, or if the arrival time of | If the measurement is unavailable or if the arrival time of | |||
the RTP packet is after the time represented by the RTS field, | the RTP packet is after the time represented by the RTS field, | |||
then an ATO value of 0x1FFF MUST be reported for the packet. | then an ATO value of 0x1FFF <bcp14>MUST</bcp14> be reported for th | |||
</t> | e packet.</dd> | |||
</list> | </dl> | |||
</t> | ||||
<t>The RTCP congestion control feedback report packet concludes with | <t>The RTCP congestion control feedback report packet concludes with | |||
the Report Timestamp field (RTS, 32 bits). This denotes the time | the Report Timestamp field (RTS, 32 bits). This denotes the time | |||
instant on which this packet is reporting, and is the instant from | instant on which this packet is reporting and is the instant from | |||
which the arrival time offset values are calculated. | which the arrival time offset values are calculated. | |||
The value of RTS field is derived from the same clock used to generate | The value of the RTS field is derived from the same clock used to genera te | |||
the NTP timestamp field in RTCP Sender Report (SR) packets. It | the NTP timestamp field in RTCP Sender Report (SR) packets. It | |||
is formatted as the middle 32 bits of an NTP format timestamp, as | is formatted as the middle 32 bits of an NTP format timestamp, as | |||
described in Section 4 of <xref target="RFC3550"></xref>.</t> | described in <xref target="RFC3550" sectionFormat="of" section="4"/>.</t | |||
> | ||||
<t>RTCP congestion control feedback packets SHOULD include a report | <t>RTCP Congestion Control Feedback Packets <bcp14>SHOULD</bcp14> includ | |||
e a report | ||||
block for every active SSRC. The sequence | block for every active SSRC. The sequence | |||
number ranges reported on in consecutive reports for a given SSRC will | number ranges reported on in consecutive reports for a given SSRC will | |||
generally be contiguous, but overlapping reports MAY be sent (and need | generally be contiguous, but overlapping reports <bcp14>MAY</bcp14> be s ent (and need | |||
to be sent in cases where RTP packet reordering occurs across the | to be sent in cases where RTP packet reordering occurs across the | |||
boundary between consecutive reports). | boundary between consecutive reports). | |||
If an RTP packet was reported as received in one report, that packet | If an RTP packet was reported as received in one report, that packet | |||
MUST also be reported as received in any overlapping reports sent | <bcp14>MUST</bcp14> also be reported as received in any overlapping repo | |||
later that cover its sequence number range. | rts sent later that cover its sequence number range. | |||
If reports covering overlapping sequence number ranges are sent, | If feedback reports covering overlapping sequence number ranges are sent, | |||
information in later reports updates that sent in previous reports | information in later feedback reports may update any data sent in previous | |||
for RTP packets included in both reports. | reports for RTP packets included in both feedback reports. | |||
</t> | </t> | |||
<t>RTCP Congestion Control Feedback Packets can be large if they are | ||||
<t>RTCP congestion control feedback packets can be large if they are | ||||
sent infrequently relative to the number of RTP data packets. If an | sent infrequently relative to the number of RTP data packets. If an | |||
RTCP congestion control feedback packet is too large to fit within the | RTCP Congestion Control Feedback Packet is too large to fit within the | |||
path MTU, its sender SHOULD split it into multiple feedback packets. | path MTU, its sender <bcp14>SHOULD</bcp14> split it into multiple feedba | |||
The RTCP reporting interval SHOULD be chosen such that feedback packets | ck packets. | |||
The RTCP reporting interval <bcp14>SHOULD</bcp14> be chosen such that fe | ||||
edback packets | ||||
are sent often enough that they are small enough to fit within the path | are sent often enough that they are small enough to fit within the path | |||
MTU (<xref target="I-D.ietf-rmcat-rtp-cc-feedback"/> discusses how to | MTU. (<xref target="I-D.ietf-rmcat-rtp-cc-feedback" format="default"/> d iscusses how to | |||
choose the reporting interval; specifications for RTP congestion control | choose the reporting interval; specifications for RTP congestion control | |||
algorithms can also provide guidance).</t> | algorithms can also provide guidance.)</t> | |||
<t>If duplicate copies of a particular RTP packet are received, then the | <t>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 | arrival time of the first copy to arrive <bcp14>MUST</bcp14> be reported . If any of the | |||
copies of the duplicated packet are ECN-CE marked, then an ECN-CE mark | copies of the duplicated packet are ECN-CE marked, then an ECN-CE mark | |||
MUST be reported that for packet; otherwise the ECN mark of the first | <bcp14>MUST</bcp14> be reported for that packet; otherwise, the ECN mark of the first | |||
copy to arrive is reported.</t> | copy to arrive is reported.</t> | |||
<t>If no packets are received from an SSRC in a reporting interval, | <t>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 | a report block <bcp14>MAY</bcp14> be sent with begin_seq set to the high | |||
number previously received from that SSRC and num_reports set to zero | est sequence | |||
(or, the report can simply to omitted). The corresponding SR/RR packet | 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 | will have a non-increased extended highest sequence number received | |||
field that will inform the sender that no packets have been 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 | but it can ease processing to have that information available in the | |||
congestion control feedback reports too.</t> | congestion control feedback reports too.</t> | |||
<t>A report block indicating that certain RTP packets were lost is | <t>A report block indicating that certain RTP packets were lost is | |||
not to be interpreted as a request to retransmit the lost packets. | not to be interpreted as a request to retransmit the lost packets. | |||
The receiver of such a report might choose to retransmit such packets, | The receiver of such a report might choose to retransmit such packets, | |||
provided a retransmission payload format has been negotiated, but | provided a retransmission payload format has been negotiated, but | |||
there is no requirement that it do so.</t> | there is no requirement that it do so.</t> | |||
</section> | </section> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Feedback Frequency and Overhead"> | <name>Feedback Frequency and Overhead</name> | |||
<t>There is a trade-off between speed and accuracy of reporting, and the | <t>There is a trade-off between speed and accuracy of reporting, and the | |||
overhead of the reports. <xref target="I-D.ietf-rmcat-rtp-cc-feedback"/> | overhead of the reports. <xref target="I-D.ietf-rmcat-rtp-cc-feedback" for mat="default"/> | |||
discusses this trade-off, suggests desirable RTCP feedback rates, and | discusses this trade-off, suggests desirable RTCP feedback rates, and | |||
provides guidance on how to configure the RTCP bandwidth fraction, etc., | provides guidance on how to configure, for example, the RTCP bandwidth fra ction | |||
to make appropriate use of the reporting block described in this memo. | to make appropriate use of the reporting block described in this memo. | |||
Specifications for RTP congestion control algorithms can also provide | Specifications for RTP congestion control algorithms can also provide | |||
guidance.</t> | guidance.</t> | |||
<t>It is generally understood that congestion control algorithms work | <t>It is generally understood that congestion control algorithms work | |||
better with more frequent feedback. | better with more frequent feedback. | |||
However, RTCP bandwidth and transmission rules put some upper limits | However, RTCP bandwidth and transmission rules put some upper limits | |||
on how frequently the RTCP feedback messages can be sent from an RTP | on how frequently the RTCP feedback messages can be sent from an RTP | |||
receiver to the RTP sender. | receiver to the RTP sender. | |||
In many cases, sending feedback once per frame is an upper bound | In many cases, sending feedback once per frame is an upper bound | |||
before the reporting overhead becomes excessive, although this will | before the reporting overhead becomes excessive, although this will | |||
depend on the media rate and more frequent feedback might be needed | depend on the media rate and more frequent feedback might be needed | |||
with high-rate media flows <xref target="I-D.ietf-rmcat-rtp-cc-feedback">< | with high-rate media flows <xref target="I-D.ietf-rmcat-rtp-cc-feedback" f | |||
/xref>. | ormat="default"/>. | |||
Analysis <xref target="feedback-requirements"></xref> has also shown | Analysis <xref target="feedback-requirements" format="default"/> has also | |||
shown | ||||
that some candidate congestion control algorithms can operate with less | that some candidate congestion control algorithms can operate with less | |||
frequent feedback, using a feedback interval range of 50-200ms. | frequent feedback, using a feedback interval range of 50-200 ms. | |||
Applications need to negotiate an appropriate congestion control | Applications need to negotiate an appropriate congestion control | |||
feedback interval at session setup time, based on the choice of | feedback interval at session setup time, based on the choice of | |||
congestion control algorithm, the expected media bit rate, and | congestion control algorithm, the expected media bitrate, and | |||
the acceptable feedback overhead. | the acceptable feedback overhead. | |||
</t> | </t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Response to Loss of Feedback Packets"> | <name>Response to Loss of Feedback Packets</name> | |||
<t> | <t> | |||
Like all RTCP packets, RTCP congestion control feedback packets | Like all RTCP packets, RTCP Congestion Control Feedback Packets | |||
might be lost. All RTP congestion control algorithms MUST specify | might be lost. All RTP congestion control algorithms <bcp14>MUST</bcp14> | |||
specify | ||||
how they respond to the loss of feedback packets. | how they respond to the loss of feedback packets. | |||
</t> | </t> | |||
<t> | <t> | |||
RTCP packets do not contain a sequence number, so loss of feedback | 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 | packets has to be inferred based on the time since the last feedback | |||
packet. | packet. | |||
If only a single congestion control feedback packet is lost, an | If only a single congestion control feedback packet is lost, an | |||
appropriate response is to assume that the level of congestion | appropriate response is to assume that the level of congestion | |||
has remained roughly the same as the previous report. However, | has remained roughly the same as the previous report. However, | |||
if multiple consecutive congestion control feedback packets are | if multiple consecutive congestion control feedback packets are | |||
lost, then the media sender SHOULD rapidly reduce its sending rate as | lost, then the media sender <bcp14>SHOULD</bcp14> rapidly reduce its sen ding rate as | |||
this likely indicates a path failure. The RTP circuit | this likely indicates a path failure. The RTP circuit | |||
breaker <xref target="RFC8083"/> provides further guidance. | breaker specification <xref target="RFC8083" format="default"/> provides further guidance. | |||
</t> | </t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="SDP Signalling"> | <name>SDP Signaling</name> | |||
<t> | <t> | |||
A new "ack" feedback parameter, "ccfb", is defined for use with the | A new "ack" feedback parameter, "ccfb", is defined for use with the | |||
"a=rtcp-fb:" SDP extension to indicate the use of the RTP Congestion | "a=rtcp-fb:" Session Description Protocol (SDP) extension to indicate th | |||
Control feedback packet format defined in <xref target="feedback_message | e use of the RTP Congestion | |||
"/>. | Control Feedback Packet format defined in <xref target="feedback_message | |||
The ABNF definition of this SDP parameter extension is: | " format="default"/>. | |||
</t> | The ABNF definition <xref target="RFC5234"/> of this SDP parameter exten | |||
<figure> | sion is:</t> | |||
<artwork><![CDATA[ | <sourcecode type="abnf"><![CDATA[ | |||
rtcp-fb-ack-param = <See Section 4.2 of [RFC4585]> | rtcp-fb-ack-param = <See Section 4.2 of [RFC4585]> | |||
rtcp-fb-ack-param =/ ccfb-par | rtcp-fb-ack-param =/ ccfb-par | |||
ccfb-par = SP "ccfb" | ccfb-par = SP "ccfb"]]></sourcecode> | |||
]]></artwork> | ||||
</figure> | ||||
<t> | <t> | |||
The payload type used with "ccfb" feedback MUST be the wildcard type ("* "). | The payload type used with "ccfb" feedback <bcp14>MUST</bcp14> be the wi ldcard type ("*"). | |||
This implies that the congestion control feedback is sent | This implies that the congestion control feedback is sent | |||
for all payload types in use in the session, including any FEC and | for all payload types in use in the session, including any Forward Error Correction (FEC) and | |||
retransmission payload types. | retransmission payload types. | |||
An example of the resulting SDP attribute is: | An example of the resulting SDP attribute is: | |||
</t> | </t> | |||
<figure> | <sourcecode name="" type="sdp"><![CDATA[ | |||
<artwork><![CDATA[ | a=rtcp-fb:* ack ccfb]]></sourcecode> | |||
a=rtcp-fb:* ack ccfb | ||||
]]></artwork> | ||||
</figure> | ||||
<t> | <t> | |||
The offer/answer rules for these SDP feedback parameters are | The offer/answer rules for these SDP feedback parameters are | |||
specified in Section 4.2 of the RTP/AVPF profile <xref target="RFC4585"/ >. | specified in <xref target="RFC4585" sectionFormat="of" section="4.2">the RTP/AVPF profile</xref>. | |||
</t> | </t> | |||
<t> | <t> | |||
An SDP offer might indicate support for both the congestion control | An SDP offer might indicate support for both the congestion control | |||
feedback mechanism specified in this memo and one or more alternative | feedback mechanism specified in this memo and one or more alternative | |||
congestion control feedback mechanisms that offer substantially the | congestion control feedback mechanisms that offer substantially the | |||
same semantics. In this case, the answering party SHOULD include | same semantics. In this case, the answering party <bcp14>SHOULD</bcp14> include | |||
only one of the offered congestion control feedback mechanisms in its | only one of the offered congestion control feedback mechanisms in its | |||
answer. If a re-invite offering the same set of congestion control | answer. If a subsequent offer containing the same set of congestion con | |||
feedback mechanisms is received, the generated answer SHOULD choose | trol | |||
feedback mechanisms is received, the generated answer <bcp14>SHOULD</bcp | ||||
14> choose | ||||
the same congestion control feedback mechanism as in the original | the same congestion control feedback mechanism as in the original | |||
answer where possible. | answer where possible. | |||
</t> | </t> | |||
<t> | <t> | |||
When the SDP BUNDLE extension <xref target="I-D.ietf-mmusic-sdp-bundle-n egotiation"/> | When the SDP BUNDLE extension <xref target="RFC8843" format="default"/> | |||
is used for multiplexing, the "a=rtcp-fb:" attribute has multiplexing ca tegory | is used for multiplexing, the "a=rtcp-fb:" attribute has multiplexing ca tegory | |||
IDENTICAL-PER-PT <xref target="I-D.ietf-mmusic-sdp-mux-attributes"/>. | IDENTICAL-PER-PT <xref target="RFC8859"/>. | |||
</t> | </t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Relation to RFC 6679"> | <name>Relationship to RFC 6679</name> | |||
<t> | <t> | |||
Use of Explicit Congestion Notification (ECN) with RTP is | The use of Explicit Congestion Notification (ECN) with RTP is | |||
described in <xref target="RFC6679"/>. That specifies how | described in <xref target="RFC6679" format="default"/>, which specifies | |||
to negotiate the use of ECN with RTP, and defines an RTCP ECN | 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 | Feedback Packet to carry ECN feedback reports. It uses an SDP | |||
"a=ecn-capable-rtp:" attribute to negotiate use of ECN, and | "a=ecn-capable-rtp:" attribute to negotiate the use of ECN, and | |||
the "a=rtcp-fb:" attributes with the "nack" parameter "ecn" to | the "a=rtcp-fb:" attribute with the "nack" parameter "ecn" to | |||
negotiate the use of RTCP ECN Feedback Packets. | negotiate the use of RTCP ECN Feedback Packets.</t> | |||
</t> | ||||
<t> | <t> | |||
The RTCP ECN Feedback Packet is not useful when ECN is used with | The RTCP ECN Feedback Packet is not useful when ECN is used with | |||
the RTP Congestion Control Feedback Packet defined in this memo | the RTP Congestion Control Feedback Packet defined in this memo, | |||
since it provides duplicate information. When | since it provides duplicate information. When | |||
congestion control feedback is to be used with RTP and ECN, | congestion control feedback is to be used with RTP and ECN, | |||
the SDP offer generated MUST include an "a=ecn-capable-rtp:" | the SDP offer generated <bcp14>MUST</bcp14> include an "a=ecn-capable-rt p:" | |||
attribute to negotiate ECN support, along with an "a=rtcp-fb:" | attribute to negotiate ECN support, along with an "a=rtcp-fb:" | |||
attribute with the "ack" parameter "ccfb" to indicate that the | attribute with the "ack" parameter "ccfb" to indicate that the | |||
RTP Congestion Control Feedback Packet can be used. | RTP Congestion Control Feedback Packet can be used. | |||
The "a=rtcp-fb:" attribute MAY also include the "nack" parameter | The "a=rtcp-fb:" attribute <bcp14>MAY</bcp14> also include the "nack" pa | |||
"ecn", to indicate that the RTCP ECN Feedback Packet is also | rameter | |||
"ecn" to indicate that the RTCP ECN Feedback Packet is also | ||||
supported. If an SDP offer signals support for both RTP | supported. If an SDP offer signals support for both RTP | |||
Congestion Control Feedback Packets and the RTCP ECN Feedback | Congestion Control Feedback Packets and the RTCP ECN Feedback | |||
Packet, the answering party SHOULD signal support for one, but | Packet, the answering party <bcp14>SHOULD</bcp14> signal support for one , but | |||
not both, formats in its SDP answer to avoid sending duplicate | not both, formats in its SDP answer to avoid sending duplicate | |||
feedback. | feedback. | |||
</t> | </t> | |||
<t> | <t> | |||
When using ECN with RTP, the guidelines in Section 7.2 of | When using ECN with RTP, the guidelines in <xref target="RFC6679" sectio | |||
<xref target="RFC6679"/> MUST be followed to initiate the use of ECN in | nFormat="of" section="7.2"/> | |||
an | <bcp14>MUST</bcp14> be followed to initiate the use of ECN in an | |||
RTP session. The guidelines in Section 7.3 of <xref target="RFC6679"/> | RTP session. The guidelines in <xref target="RFC6679" sectionFormat="of" | |||
MUST also be followed about ongoing use of ECN within an RTP | section="7.3"/> regarding the ongoing use of ECN within an RTP | |||
session, with the exception that feedback is sent using the RTCP | session <bcp14>MUST</bcp14> also be followed, with the exception that fe | |||
edback is sent using the RTCP | ||||
Congestion Control Feedback Packets described in this memo rather | Congestion Control Feedback Packets described in this memo rather | |||
than using RTP ECN Feedback Packets. Similarly, the guidance | than using RTP ECN Feedback Packets. Similarly, the guidance | |||
in Section 7.4 of <xref target="RFC6679"/> around detecting failures | in <xref target="RFC6679" sectionFormat="of" section="7.4"/> | |||
MUST be followed, with the exception that the necessary information is | related to detecting failures | |||
<bcp14>MUST</bcp14> be followed, with the exception that the necessary i | ||||
nformation is | ||||
retrieved from the RTCP Congestion Control Feedback Packets rather than | retrieved from the RTCP Congestion Control Feedback Packets rather than | |||
from RTP ECN Feedback Packets. | from RTP ECN Feedback Packets. | |||
</t> | </t> | |||
</section> | </section> | |||
<section numbered="true" toc="default"> | ||||
<section title="Design Rationale"> | <name>Design Rationale</name> | |||
<t>The primary function of RTCP SR/RR packets is to report statistics | <t>The primary function of RTCP SR/RR packets is to report statistics | |||
on the reception of RTP packets. The reception report blocks sent in | on the reception of RTP packets. The reception report blocks sent in | |||
these packets contain information about observed jitter, fractional | these packets contain information about observed jitter, fractional | |||
packet loss, and cumulative packet loss. It was intended that this | packet loss, and cumulative packet loss. It was intended that this | |||
information could be used to support congestion control algorithms, | information could be used to support congestion control algorithms, | |||
but experience has shown that it is not sufficient for that purpose. | but experience has shown that it is not sufficient for that purpose. | |||
An efficient congestion control algorithm requires more fine-grained | An efficient congestion control algorithm requires more fine-grained | |||
information on per-packet reception quality than is provided by SR/RR | information on per-packet reception quality than is provided by SR/RR | |||
packets to react effectively. The feedback format defined in this memo | packets to react effectively. The feedback format defined in this memo | |||
provides such fine-grained feedback.</t> | provides such fine-grained feedback.</t> | |||
skipping to change at line 525 ¶ | skipping to change at line 458 ¶ | |||
<t>The primary function of RTCP SR/RR packets is to report statistics | <t>The primary function of RTCP SR/RR packets is to report statistics | |||
on the reception of RTP packets. The reception report blocks sent in | on the reception of RTP packets. The reception report blocks sent in | |||
these packets contain information about observed jitter, fractional | these packets contain information about observed jitter, fractional | |||
packet loss, and cumulative packet loss. It was intended that this | packet loss, and cumulative packet loss. It was intended that this | |||
information could be used to support congestion control algorithms, | information could be used to support congestion control algorithms, | |||
but experience has shown that it is not sufficient for that purpose. | but experience has shown that it is not sufficient for that purpose. | |||
An efficient congestion control algorithm requires more fine-grained | An efficient congestion control algorithm requires more fine-grained | |||
information on per-packet reception quality than is provided by SR/RR | information on per-packet reception quality than is provided by SR/RR | |||
packets to react effectively. The feedback format defined in this memo | packets to react effectively. The feedback format defined in this memo | |||
provides such fine-grained feedback.</t> | provides such fine-grained feedback.</t> | |||
<t>Several other RTCP extensions also provide more detailed feedback | <t>Several other RTCP extensions also provide more detailed feedback | |||
than SR/RR packets:</t> | than SR/RR packets:</t> | |||
<dl newline="false" spacing="normal"> | ||||
<t> | <dt>TMMBR:</dt> | |||
<list style="hanging"> | <dd>The codec control messages for the RTP/AVPF profile | |||
<t hangText="TMMBR:">The Codec Control Messages for the RTP/AVPF profi | <xref target="RFC5104" format="default"/> include a | |||
le | Temporary Maximum Media Stream Bit Rate Request (TMMBR) message. This | |||
<xref target="RFC5104"></xref> include a Temporary Maximum Media Bit | is used to convey a temporary maximum bitrate limitation from a receiver of RTP | |||
Rate (TMMBR) message. This is used to convey a temporary maximum bit | packets to their sender. Even | |||
rate limitation from a receiver of RTP packets to their sender. Even | ||||
though it was not designed to replace congestion control, TMMBR has | though it was not designed to replace congestion control, TMMBR has | |||
been used as a means to do receiver based congestion control where | been used as a means to do receiver-based congestion control where | |||
the session bandwidth is high enough to send frequent TMMBR messages, | the session bandwidth is high enough to send frequent TMMBR messages, | |||
especially when used with non-compound RTCP packets <xref target="RF C5506"></xref>. | especially when used with non-compound RTCP packets <xref target="RF C5506" format="default"/>. | |||
This approach requires the receiver of the RTP packets to monitor | This approach requires the receiver of the RTP packets to monitor | |||
their reception, determine the level of congestion, and recommend | their reception, determine the level of congestion, and recommend | |||
a maximum bit rate suitable for current available bandwidth on the | a maximum bitrate suitable for current available bandwidth on the | |||
path; it also assumes that the RTP sender can/will respect that bit | path; it also assumes that the RTP sender can&wj;/will respect that bi | |||
rate. This is the opposite of the sender-based congestion control | trate. This is the opposite of the sender-based congestion control | |||
approach suggested in this memo, so TMMBR cannot be used to convey | approach suggested in this memo, so TMMBR cannot be used to convey | |||
the information needed for a sender-based congestion control. TMMBR | the information needed for sender-based congestion control. TMMBR | |||
could, however, be viewed a complementary mechanism that can inform | could, however, be viewed as a complementary mechanism that can inform | |||
the sender of the receiver's current view of acceptable maximum bit | the sender of the receiver's current view of an acceptable maximum bit | |||
rate. Mechanisms that convey the receiver's estimate of the maximum | rate. Mechanisms that convey the receiver's estimate of the maximum | |||
available bit-rate provide similar feedback. | available bitrate provide similar feedback. | |||
</t> | </dd> | |||
<dt>RTCP Extended Reports (XRs):</dt> | ||||
<t hangText="RTCP Extended Reports (XR):">Numerous RTCP extended | <dd>Numerous RTCP XR blocks have been defined to report details of packe | |||
report (XR) blocks have been defined to report details of packet | t | |||
loss, arrival times <xref target="RFC3611"/>, delay | loss, arrival times <xref target="RFC3611" format="default"/>, delay | |||
<xref target="RFC6843"/>, and ECN marking <xref target="RFC6679"/>. | <xref target="RFC6843" format="default"/>, and ECN marking <xref targe | |||
t="RFC6679" format="default"/>. | ||||
It is possible to combine several such XR blocks into a compound | It is possible to combine several such XR blocks into a compound | |||
RTCP packet, to report the detailed loss, arrival time, and ECN | RTCP packet, to report the detailed loss, arrival time, and ECN | |||
marking information needed for effective sender-based | marking information needed for effective sender-based | |||
congestion control. However, the result has high overhead both | congestion control. However, the result has high overhead | |||
in terms of bandwidth and complexity, due to the need to stack | in terms of both bandwidth and complexity, due to the need to stack | |||
multiple reports.</t> | multiple reports.</dd> | |||
<dt>Transport-wide Congestion Control:</dt> | ||||
<t hangText="Transport-wide Congestion Control:">The format | <dd>The format | |||
defined in this memo provides individual feedback on each SSRC. | defined in this memo provides individual feedback on each SSRC. | |||
An alternative is to add a header extension to each RTP packet, | An alternative is to add a header extension to each RTP packet, | |||
containing a single, transport-wide, packet sequence number, | containing a single, transport-wide, packet sequence number, | |||
then have the receiver send RTCP reports giving feedback on | then have the receiver send RTCP reports giving feedback on | |||
these additional sequence numbers | these additional sequence numbers | |||
<xref target="I-D.holmer-rmcat-transport-wide-cc-extensions"/>. | <xref target="I-D.holmer-rmcat-transport-wide-cc-extensions" format="d | |||
Such an approach adds the per-packet overhead of the header | efault"/>. | |||
extension (8 octets per packet in the referenced format), | Such an approach increases the size of each RTP packet by 8 octets, du | |||
but reduces the size of the feedback packets, and can simplify | e to | |||
the header extension, but reduces the size of the RTCP feedback packet | ||||
s, | ||||
and can simplify | ||||
the rate calculation at the sender if it maintains a single | the rate calculation at the sender if it maintains a single | |||
rate limit that applies to all RTP packets sent irrespective | rate limit that applies to all RTP packets sent, irrespective | |||
of their SSRC. Equally, the use of transport-wide feedback makes | of their SSRC. | |||
Equally, the use of transport-wide feedback makes | ||||
it more difficult to adapt the sending rate, or respond to lost | it more difficult to adapt the sending rate, or respond to lost | |||
packets, based on the reception and/or loss patterns observed | packets, based on the reception and/or loss patterns observed | |||
on a per-SSRC basis (for example, to perform differential rate | on a per-SSRC basis (for example, to perform differential rate | |||
control and repair for audio and video flows, based on knowledge | control and repair for audio and video flows, based on knowledge | |||
of what packets from each flow were lost). Transport-wide | of what packets from each flow were lost). Transport-wide | |||
feedback is also a less natural fit with the wider RTP framework, | feedback is also a less natural fit with the wider RTP framework, | |||
which makes extensive use of per-SSRC sequence numbers and | which makes extensive use of per-SSRC sequence numbers and | |||
feedback.</t> | feedback.</dd> | |||
</dl> | ||||
</list> | ||||
</t> | ||||
<t>Considering these issues, we believe it appropriate to design a | <t>Considering these issues, we believe it appropriate to design a | |||
new RTCP feedback mechanism to convey information for sender-based | new RTCP feedback mechanism to convey information for sender-based | |||
congestion control algorithms. The new congestion control feedback | congestion control algorithms. The new congestion control feedback | |||
RTCP packet described in <xref target="feedback_message"></xref> | RTCP packet described in <xref target="feedback_message" format="default"/ > | |||
provides such a mechanism.</t> | provides such a mechanism.</t> | |||
</section> | ||||
<section anchor="Acknowledgements" title="Acknowledgements"> | ||||
<t>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.</t> | ||||
</section> | </section> | |||
<!-- Possibly a 'Contributors' section ... --> | <section anchor="IANA" numbered="true" toc="default"> | |||
<name>IANA Considerations</name> | ||||
<section anchor="IANA" title="IANA Considerations"> | ||||
<t> | <t> | |||
The IANA is requested to register one new RTP/AVPF Transport-Layer | The IANA has registered one new RTP/AVPF Transport-Layer | |||
Feedback Message in the table for FMT values for RTPFB Payload Types | Feedback Message in the "FMT Values for RTPFB Payload Types" table | |||
<xref target="RFC4585"/> as defined in <xref target="sec:ccfb"/>: | <xref target="RFC4585" format="default"/> as defined in <xref target="se | |||
c_ccfb" format="default"/>: | ||||
</t> | </t> | |||
<dl indent="14" newline="false" spacing="compact"> | ||||
<figure> | <dt>Name:</dt><dd>CCFB</dd> | |||
<artwork><![CDATA[ | <dt>Long name:</dt><dd>RTP Congestion Control Feedback</dd> | |||
Name: CCFB | <dt>Value:</dt><dd>11</dd> | |||
Long name: RTP Congestion Control Feedback | <dt>Reference:</dt><dd>RFC 8888</dd> | |||
Value: (to be assigned by IANA) | </dl> | |||
Reference: (RFC number of this document, when published) | ||||
]]></artwork> | ||||
</figure> | ||||
<t> | <t> | |||
The IANA is also requested to register one new SDP "rtcp-fb" attribute | The IANA has also registered one new SDP "rtcp-fb" attribute | |||
"ack" parameter, "ccfb", in the SDP ("ack" and "nack" Attribute Values) | "ack" parameter, "ccfb", in the SDP '"ack" and "nack" Attribute Values' | |||
registry: | registry: | |||
</t> | </t> | |||
<dl indent="14" newline="false" spacing="compact"> | ||||
<figure> | <dt>Value name:</dt><dd>ccfb</dd> | |||
<artwork><![CDATA[ | <dt>Long name:</dt><dd>Congestion Control Feedback</dd> | |||
Value name: ccfb | <dt>Usable with:</dt><dd>ack</dd> | |||
Long name: Congestion Control Feedback | <dt>Mux:</dt><dd>IDENTICAL-PER-PT</dd> | |||
Usable with: ack | <dt>Reference:</dt><dd>RFC 8888</dd> | |||
Mux: IDENTICAL-PER-PT | </dl> | |||
Reference: (RFC number of this document, when published) | ||||
]]></artwork> | ||||
</figure> | ||||
</section> | </section> | |||
<section anchor="Security" numbered="true" toc="default"> | ||||
<section anchor="Security" title="Security Considerations"> | <name>Security Considerations</name> | |||
<t>The security considerations of the RTP specification | <t>The security considerations of the RTP specification | |||
<xref target="RFC3550"/>, the applicable RTP profile (e.g., | <xref target="RFC3550" format="default"/>, the applicable RTP profile (e.g | |||
<xref target="RFC3551"/>, <xref target="RFC3711"/>, or | ., | |||
<xref target="RFC4585"/>), and the RTP congestion control algorithm | <xref target="RFC3551" format="default"/>, <xref target="RFC3711" format=" | |||
that is in use (e.g., <xref target="RFC8698"/>, | default"/>, or | |||
<xref target="RFC8298"/>, | <xref target="RFC4585" format="default"/>), and the RTP congestion control | |||
<xref target="I-D.ietf-rmcat-gcc"/>, or | algorithm | |||
<xref target="RFC8382"/>) apply.</t> | being used (e.g., <xref target="RFC8698" format="default"/>, | |||
<xref target="RFC8298" format="default"/>, | ||||
<xref target="Google-GCC"/>, or | ||||
<xref target="RFC8382" format="default"/>) apply.</t> | ||||
<t>A receiver that intentionally generates inaccurate RTCP congestion | <t>A receiver that intentionally generates inaccurate RTCP congestion | |||
control feedback reports might be able trick the sender into sending | 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 | at a greater rate than the path can support, thereby causing congestion on the | |||
path. This will negatively impact the quality of experience of that | path. | |||
receiver, and potentially cause denial of service to other traffic | This scenario will negatively impact the quality of experience | |||
sharing the path and excessive resource usage at the media sender. | 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 pa cket, | Since RTP is an unreliable transport, a sender can intentionally drop a pa cket, | |||
leaving a gap in the RTP sequence number space without causing serious har m, to | leaving a gap in the RTP sequence number space without causing serious har m, to | |||
check that the receiver is correctly reporting losses (this needs to be do ne with | check that the receiver is correctly reporting losses. (This needs to be d one with | |||
care and some awareness of the media data being sent, to limit impact on t he user | care and some awareness of the media data being sent, to limit impact on t he user | |||
experience).</t> | experience.)</t> | |||
<t>An on-path attacker that can modify RTCP Congestion Control Feedback | ||||
<t>An on-path attacker that can modify RTCP congestion control feedback | Packets can change the reports to trick the sender into sending at either | |||
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. | an excessively high or excessively low rate, leading to denial of service. | |||
The secure RTCP profile <xref target="RFC3711"/> can be used to authentica te | The secure RTCP profile <xref target="RFC3711" format="default"/> can be u sed to authenticate | |||
RTCP packets to protect against this attack.</t> | RTCP packets to protect against this attack.</t> | |||
<t>An off-path attacker that can spoof RTCP Congestion Control Feedback | ||||
<t>An off-patch attacker that can spoof RTCP congestion control feedback | Packets can similarly trick a sender into sending at an incorrect | |||
packets can similarly trick a sender into sending at an incorrect | ||||
rate, leading to denial of service. This attack is difficult, since the | 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 | attacker needs to guess the SSRC and sequence number in addition to the | |||
destination transport address. As with on-patch attacks, the secure RTCP | destination transport address. As with on-path attacks, the secure RTCP | |||
profile <xref target="RFC3711"/> can be used to authenticate RTCP packets | profile <xref target="RFC3711" format="default"/> can be used to authentic | |||
ate RTCP packets | ||||
to protect against this attack.</t> | to protect against this attack.</t> | |||
</section> | </section> | |||
</middle> | </middle> | |||
<back> | <back> | |||
<references title="Normative References"> | ||||
<?rfc include='reference.RFC.2119'?> | ||||
<?rfc include='reference.RFC.3168'?> | ||||
<?rfc include='reference.RFC.3550'?> | ||||
<?rfc include='reference.RFC.3551'?> | ||||
<?rfc include='reference.RFC.3711'?> | <displayreference target="I-D.ietf-rmcat-rtp-cc-feedback" to="RTCP-Multimedia- | |||
Feedback"/> | ||||
<?rfc include='reference.RFC.4585'?> | <displayreference target="I-D.holmer-rmcat-transport-wide-cc-extensions" to="R | |||
TP-Ext-for-CC"/> | ||||
<?rfc include='reference.RFC.5124'?> | ||||
<?rfc include='reference.RFC.5506'?> | ||||
<?rfc include='reference.RFC.6679'?> | ||||
<?rfc include='reference.RFC.8083'?> | ||||
<?rfc include='reference.RFC.8174'?> | ||||
<?rfc include='reference.I-D.ietf-mmusic-sdp-bundle-negotiation'?> | ||||
<?rfc include='reference.I-D.ietf-mmusic-sdp-mux-attributes'?> | ||||
</references> | ||||
<references title="Informative References"> | ||||
<?rfc include='reference.I-D.ietf-rmcat-rtp-cc-feedback'?> | ||||
<?rfc include="reference.I-D.ietf-rmcat-gcc"?> | ||||
<?rfc include='reference.RFC.3611'?> | ||||
<?rfc include='reference.RFC.5104'?> | ||||
<?rfc include='reference.RFC.6843'?> | ||||
<?rfc include="reference.RFC.8298"?> | <references> | |||
<name>References</name> | ||||
<references> | ||||
<name>Normative References</name> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.2119.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.3168.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.3550.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.3551.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.3711.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.4585.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.5124.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.5234.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.5506.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.6679.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8083.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8174.xml"/> | ||||
<?rfc include="reference.RFC.8382"?> | <!-- draft-ietf-mmusic-sdp-bundle-negotiation (RFC 8843) --> | |||
<reference anchor="RFC8843" target="https://www.rfc-editor.org/info/rfc8843" | ||||
> | ||||
<front> | ||||
<title>Negotiating Media Multiplexing Using the Session Description Prot | ||||
ocol (SDP)</title> | ||||
<author initials="C" surname="Holmberg" fullname="Christer Holmberg"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="H" surname="Alvestrand" fullname="Harald Alvestrand"> | ||||
<organization/> | ||||
</author> | ||||
<author initials="C" surname="Jennings" fullname="Cullen Jennings"> | ||||
<organization/> | ||||
</author> | ||||
<date month="January" year="2021"/> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8843"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8843"/> | ||||
</reference> | ||||
<?rfc include='reference.RFC.8698"?> | <!-- draft-ietf-mmusic-sdp-mux-attributes (RFC 8859) --> | |||
<reference anchor="RFC8859" target="https://www.rfc-editor.org/info/rfc8859"> | ||||
<front> | ||||
<title>A Framework for Session Description Protocol (SDP) Attributes When Mu | ||||
ltiplexing</title> | ||||
<author initials="S" surname="Nandakumar" fullname="Suhas Nandakumar"> | ||||
<organization/> | ||||
</author> | ||||
<date month="January" year="2021"/> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8859"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8859"/> | ||||
</reference> | ||||
<?rfc include="reference.I-D.holmer-rmcat-transport-wide-cc-extensions"?> | </references> | |||
<references> | ||||
<name>Informative References</name> | ||||
<!-- draft-ietf-rmcat-rtp-cc-feedback (Expired) --> | ||||
<xi:include href="https://datatracker.ietf.org/doc/bibxml3/draft-ietf-rm | ||||
cat-rtp-cc-feedback.xml"/> | ||||
<?rfc include="reference.I-D.alvestrand-rmcat-remb"?> | <!-- draft-ietf-rmcat-gcc (Expired) | |||
Have to do long way in order to fix "De Cicco" --> | ||||
<reference anchor='Google-GCC'> | ||||
<front> | ||||
<title>A Google Congestion Control Algorithm for Real-Time Communication</title> | ||||
<author initials='S' surname='Holmer' fullname='Stefan Holmer'> | ||||
<organization /> | ||||
</author> | ||||
<author initials='H' surname='Lundin' fullname='Henrik Lundin'> | ||||
<organization /> | ||||
</author> | ||||
<author initials='G' surname='Carlucci' fullname='Gaetano Carlucci'> | ||||
<organization /> | ||||
</author> | ||||
<author initials='L' surname='De Cicco' fullname='Luca De Cicco'> | ||||
<organization /> | ||||
</author> | ||||
<author initials='S' surname='Mascolo' fullname='Saverio Mascolo'> | ||||
<organization /> | ||||
</author> | ||||
<date month='July' day='8' year='2016' /> | ||||
</front> | ||||
<seriesInfo name="Internet-Draft" value="draft-ietf-rmcat-gcc-02"/> | ||||
</reference> | ||||
<reference anchor="feedback-requirements" | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
target="://www.ietf.org/proceedings/95/slides/slides-95-rmcat-1 | FC.3611.xml"/> | |||
.pdf"> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
<front> | FC.5104.xml"/> | |||
<title>RMCAT Feedback Requirements</title> | <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | |||
FC.6843.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8298.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8382.xml"/> | ||||
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.R | ||||
FC.8698.xml"/> | ||||
<author> | <!-- draft-holmer-rmcat-transport-wide-cc-extensions (Expired) --> | |||
<organization></organization> | <xi:include href="https://datatracker.ietf.org/doc/bibxml3/draft-holmer- | |||
</author> | rmcat-transport-wide-cc-extensions.xml"/> | |||
<date /> | <reference anchor="feedback-requirements" target="https://www.ietf.org/p | |||
</front> | roceedings/95/slides/slides-95-rmcat-1.pdf"> | |||
</reference> | <front> | |||
<title>RMCAT Feedback Requirements</title> | ||||
<author> | ||||
<organization/> | ||||
</author> | ||||
<date month="April" year="2016"/> | ||||
</front> | ||||
<refcontent>IETF 95</refcontent> | ||||
</reference> | ||||
</references> | ||||
</references> | </references> | |||
<section anchor="Acknowledgements" numbered="false" toc="default"> | ||||
<name>Acknowledgements</name> | ||||
<t>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 | ||||
<contact fullname="David Hayes"/>, | ||||
<contact fullname="Stefan Holmer"/>, | ||||
<contact fullname="Randell Jesup"/>, | ||||
<contact fullname="Ingemar Johansson"/>, | ||||
<contact fullname="Jonathan Lennox"/>, | ||||
<contact fullname="Sergio Mena"/>, | ||||
<contact fullname="Nils Ohlmeier"/>, | ||||
<contact fullname="Magnus Westerlund"/>, | ||||
and | ||||
<contact fullname="Xiaoqing Zhu"/> | ||||
for their valuable feedback.</t> | ||||
</section> | ||||
</back> | </back> | |||
</rfc> | </rfc> | |||
End of changes. 144 change blocks. | ||||
451 lines changed or deleted | 484 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |