rfc8836xml2.original.xml | rfc8836.xml | |||
---|---|---|---|---|
<?xml version="1.0" encoding="US-ASCII"?> | <?xml version='1.0' encoding='utf-8'?> | |||
<!DOCTYPE rfc SYSTEM "rfc2629.dtd"> | <rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" category="info" cons | |||
<?rfc toc="yes"?> | ensus="true" docName="draft-ietf-rmcat-cc-requirements-09" indexInclude="true" i | |||
<?rfc tocompact="yes"?> | pr="trust200902" number="8836" prepTime="2021-01-16T23:13:08" scripts="Common,La | |||
<?rfc tocdepth="3"?> | tin" sortRefs="true" submissionType="IETF" symRefs="true" tocDepth="3" tocInclud | |||
<?rfc tocindent="yes"?> | e="true" xml:lang="en"> | |||
<?rfc symrefs="yes"?> | <link href="https://datatracker.ietf.org/doc/draft-ietf-rmcat-cc-requirements- | |||
<?rfc sortrefs="yes"?> | 09" rel="prev"/> | |||
<?rfc comments="yes"?> | <link href="https://dx.doi.org/10.17487/rfc8836" rel="alternate"/> | |||
<?rfc inline="yes"?> | <link href="urn:issn:2070-1721" rel="alternate"/> | |||
<?rfc compact="yes"?> | ||||
<?rfc subcompact="no"?> | ||||
<rfc category="info" docName="draft-ietf-rmcat-cc-requirements-09" | ||||
ipr="trust200902"> | ||||
<front> | <front> | |||
<title abbrev="RTP Media Congestion Control Requirements ">Congestion | <title abbrev="RTP Media Congestion Control Requirements">Congestion Co | |||
Control Requirements for Interactive Real-Time Media</title> | ntrol Requirements for Interactive Real-Time Media</title> | |||
<seriesInfo name="RFC" value="8836" stream="IETF"/> | ||||
<author fullname="Randell Jesup" initials="R." surname="Jesup"> | <author fullname="Randell Jesup" initials="R." surname="Jesup"> | |||
<organization>Mozilla</organization> | <organization showOnFrontPage="true">Mozilla</organization> | |||
<address> | <address> | |||
<postal> | <postal> | |||
<street></street> | <street/> | |||
<country>United States of America</country> | ||||
<country>USA</country> | ||||
</postal> | </postal> | |||
<email>randell-ietf@jesup.org</email> | <email>randell-ietf@jesup.org</email> | |||
</address> | </address> | |||
</author> | </author> | |||
<author fullname="Zaheduzzaman Sarker" initials="Z." role="editor" surname=" | ||||
<author fullname="Zaheduzzaman Sarker" initials="Z." role="editor" | Sarker"> | |||
surname="Sarker"> | <organization showOnFrontPage="true">Ericsson AB</organization> | |||
<organization>Ericsson</organization> | ||||
<address> | <address> | |||
<postal> | <postal> | |||
<street></street> | <street>Torshamnsgatan 23</street> | |||
<city>Stockholm</city> | ||||
<city></city> | <region/> | |||
<code>164 83</code> | ||||
<region></region> | ||||
<code></code> | ||||
<country>Sweden</country> | <country>Sweden</country> | |||
</postal> | </postal> | |||
<phone>+46 10 717 37 43</phone> | ||||
<phone></phone> | ||||
<facsimile></facsimile> | ||||
<email>zaheduzzaman.sarker@ericsson.com</email> | <email>zaheduzzaman.sarker@ericsson.com</email> | |||
<uri></uri> | ||||
</address> | </address> | |||
</author> | </author> | |||
<date month="01" year="2021"/> | ||||
<date /> | <keyword>Interactive multimedia</keyword> | |||
<keyword>webrtc</keyword> | ||||
<abstract> | <keyword>video communication</keyword> | |||
<t>Congestion control is needed for all data transported across the | <keyword>RTP/RTCP</keyword> | |||
<abstract pn="section-abstract"> | ||||
<t indent="0" pn="section-abstract-1">Congestion control is needed for all | ||||
data transported across the | ||||
Internet, in order to promote fair usage and prevent congestion | Internet, in order to promote fair usage and prevent congestion | |||
collapse. The requirements for interactive, point-to-point real-time | collapse. The requirements for interactive, point-to-point real-time | |||
multimedia, which needs low-delay, semi-reliable data delivery, are | multimedia, which needs low-delay, semi-reliable data delivery, are | |||
different from the requirements for bulk transfer like FTP or bursty | different from the requirements for bulk transfer like FTP or bursty | |||
transfers like Web pages. Due to an increasing amount of RTP-based | transfers like web pages. Due to an increasing amount of RTP-based | |||
real-time media traffic on the Internet (e.g. with the introduction of | real-time media traffic on the Internet (e.g., with the introduction of | |||
the Web Real-Time Communication (WebRTC)), it is especially important to | the Web Real-Time Communication (WebRTC)), it is especially important to | |||
ensure that this kind of traffic is congestion controlled.</t> | ensure that this kind of traffic is congestion controlled.</t> | |||
<t indent="0" pn="section-abstract-2">This document describes a set of req | ||||
<t>This document describes a set of requirements that can be used to | uirements that can be used to | |||
evaluate other congestion control mechanisms in order to figure out | evaluate other congestion control mechanisms in order to figure out | |||
their fitness for this purpose, and in particular to provide a set of | their fitness for this purpose, and in particular to provide a set of | |||
possible requirements for real-time media congestion avoidance | possible requirements for a real-time media congestion avoidance | |||
technique.</t> | technique.</t> | |||
</abstract> | </abstract> | |||
<boilerplate> | ||||
<note title="Requirements Language"> | <section anchor="status-of-memo" numbered="false" removeInRFC="false" toc= | |||
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | "exclude" pn="section-boilerplate.1"> | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | <name slugifiedName="name-status-of-this-memo">Status of This Memo</name | |||
document are to be interpreted as described in <xref | > | |||
target="RFC2119">RFC 2119</xref>. The terms are presented in many cases | <t indent="0" pn="section-boilerplate.1-1"> | |||
using lowercase for readability.</t> | This document is not an Internet Standards Track specification; it i | |||
</note> | s | |||
published for informational purposes. | ||||
</t> | ||||
<t indent="0" pn="section-boilerplate.1-2"> | ||||
This document is a product of the Internet Engineering Task Force | ||||
(IETF). It represents the consensus of the IETF community. It has | ||||
received public review and has been approved for publication by the | ||||
Internet Engineering Steering Group (IESG). Not all documents | ||||
approved by the IESG are candidates for any level of Internet | ||||
Standard; see Section 2 of RFC 7841. | ||||
</t> | ||||
<t indent="0" pn="section-boilerplate.1-3"> | ||||
Information about the current status of this document, any | ||||
errata, and how to provide feedback on it may be obtained at | ||||
<eref target="https://www.rfc-editor.org/info/rfc8836" brackets="non | ||||
e"/>. | ||||
</t> | ||||
</section> | ||||
<section anchor="copyright" numbered="false" removeInRFC="false" toc="excl | ||||
ude" pn="section-boilerplate.2"> | ||||
<name slugifiedName="name-copyright-notice">Copyright Notice</name> | ||||
<t indent="0" pn="section-boilerplate.2-1"> | ||||
Copyright (c) 2021 IETF Trust and the persons identified as the | ||||
document authors. All rights reserved. | ||||
</t> | ||||
<t indent="0" pn="section-boilerplate.2-2"> | ||||
This document is subject to BCP 78 and the IETF Trust's Legal | ||||
Provisions Relating to IETF Documents | ||||
(<eref target="https://trustee.ietf.org/license-info" brackets="none | ||||
"/>) in effect on the date of | ||||
publication of this document. Please review these documents | ||||
carefully, as they describe your rights and restrictions with | ||||
respect to this document. Code Components extracted from this | ||||
document must include Simplified BSD License text as described in | ||||
Section 4.e of the Trust Legal Provisions and are provided without | ||||
warranty as described in the Simplified BSD License. | ||||
</t> | ||||
</section> | ||||
</boilerplate> | ||||
<toc> | ||||
<section anchor="toc" numbered="false" removeInRFC="false" toc="exclude" p | ||||
n="section-toc.1"> | ||||
<name slugifiedName="name-table-of-contents">Table of Contents</name> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="section-to | ||||
c.1-1"> | ||||
<li pn="section-toc.1-1.1"> | ||||
<t indent="0" keepWithNext="true" pn="section-toc.1-1.1.1"><xref der | ||||
ivedContent="1" format="counter" sectionFormat="of" target="section-1"/>. <xref | ||||
derivedContent="" format="title" sectionFormat="of" target="name-introduction"> | ||||
Introduction</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.1.2"> | ||||
<li pn="section-toc.1-1.1.2.1"> | ||||
<t indent="0" keepWithNext="true" pn="section-toc.1-1.1.2.1.1">< | ||||
xref derivedContent="1.1" format="counter" sectionFormat="of" target="section-1. | ||||
1"/>. <xref derivedContent="" format="title" sectionFormat="of" target="name-re | ||||
quirements-language">Requirements Language</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.2"> | ||||
<t indent="0" keepWithNext="true" pn="section-toc.1-1.2.1"><xref der | ||||
ivedContent="2" format="counter" sectionFormat="of" target="section-2"/>. <xref | ||||
derivedContent="" format="title" sectionFormat="of" target="name-requirements"> | ||||
Requirements</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.3"> | ||||
<t indent="0" pn="section-toc.1-1.3.1"><xref derivedContent="3" form | ||||
at="counter" sectionFormat="of" target="section-3"/>. <xref derivedContent="" f | ||||
ormat="title" sectionFormat="of" target="name-deficiencies-of-existing-me">Defic | ||||
iencies of Existing Mechanisms</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.4"> | ||||
<t indent="0" pn="section-toc.1-1.4.1"><xref derivedContent="4" form | ||||
at="counter" sectionFormat="of" target="section-4"/>. <xref derivedContent="" f | ||||
ormat="title" sectionFormat="of" target="name-iana-considerations">IANA Consider | ||||
ations</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.5"> | ||||
<t indent="0" pn="section-toc.1-1.5.1"><xref derivedContent="5" form | ||||
at="counter" sectionFormat="of" target="section-5"/>. <xref derivedContent="" f | ||||
ormat="title" sectionFormat="of" target="name-security-considerations">Security | ||||
Considerations</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.6"> | ||||
<t indent="0" pn="section-toc.1-1.6.1"><xref derivedContent="6" form | ||||
at="counter" sectionFormat="of" target="section-6"/>. <xref derivedContent="" f | ||||
ormat="title" sectionFormat="of" target="name-references">References</xref></t> | ||||
<ul bare="true" empty="true" indent="2" spacing="compact" pn="sectio | ||||
n-toc.1-1.6.2"> | ||||
<li pn="section-toc.1-1.6.2.1"> | ||||
<t indent="0" pn="section-toc.1-1.6.2.1.1"><xref derivedContent= | ||||
"6.1" format="counter" sectionFormat="of" target="section-6.1"/>. <xref derived | ||||
Content="" format="title" sectionFormat="of" target="name-normative-references"> | ||||
Normative References</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.6.2.2"> | ||||
<t indent="0" pn="section-toc.1-1.6.2.2.1"><xref derivedContent= | ||||
"6.2" format="counter" sectionFormat="of" target="section-6.2"/>. <xref derived | ||||
Content="" format="title" sectionFormat="of" target="name-informative-references | ||||
">Informative References</xref></t> | ||||
</li> | ||||
</ul> | ||||
</li> | ||||
<li pn="section-toc.1-1.7"> | ||||
<t indent="0" pn="section-toc.1-1.7.1"><xref derivedContent="" forma | ||||
t="none" sectionFormat="of" target="section-appendix.a"/><xref derivedContent="" | ||||
format="title" sectionFormat="of" target="name-acknowledgements">Acknowledgemen | ||||
ts</xref></t> | ||||
</li> | ||||
<li pn="section-toc.1-1.8"> | ||||
<t indent="0" pn="section-toc.1-1.8.1"><xref derivedContent="" forma | ||||
t="none" sectionFormat="of" target="section-appendix.b"/><xref derivedContent="" | ||||
format="title" sectionFormat="of" target="name-authors-addresses">Authors' Addr | ||||
esses</xref></t> | ||||
</li> | ||||
</ul> | ||||
</section> | ||||
</toc> | ||||
</front> | </front> | |||
<middle> | <middle> | |||
<section title="Introduction"> | <section numbered="true" toc="include" removeInRFC="false" pn="section-1"> | |||
<t>Most of today's TCP congestion control schemes were developed with a | <name slugifiedName="name-introduction">Introduction</name> | |||
focus on an use of the Internet for reliable bulk transfer of | <t indent="0" pn="section-1-1">Most of today's TCP congestion control sche | |||
mes were developed with a | ||||
focus on a use of the Internet for reliable bulk transfer of | ||||
non-time-critical data, such as transfer of large files. They have also | non-time-critical data, such as transfer of large files. They have also | |||
been used successfully to govern the reliable transfer of smaller chunks | been used successfully to govern the reliable transfer of smaller chunks | |||
of data in as short a time as possible, such as when fetching Web | of data in as short a time as possible, such as when fetching web | |||
pages.</t> | pages.</t> | |||
<t indent="0" pn="section-1-2">These algorithms have also been used for tr | ||||
<t>These algorithms have also been used for transfer of media streams | ansfer of media streams | |||
that are viewed in a non-interactive manner, such as "streaming" video, | that are viewed in a non-interactive manner, such as "streaming" video, | |||
where having the data ready when the viewer wants it is important, but | where having the data ready when the viewer wants it is important, but | |||
the exact timing of the delivery is not.</t> | the exact timing of the delivery is not.</t> | |||
<t indent="0" pn="section-1-3">When handling real-time interactive media, | ||||
<t>When doing real-time interactive media, the requirements are | the requirements are | |||
different; one needs to provide the data continuously, within a very | different. One needs to provide the data continuously, within a very | |||
limited time window (no more than 100s of milliseconds end-to-end | limited time window (no more delay than hundreds of milliseconds | |||
delay), the sources of data may be able to adapt the amount of data that | end-to-end). In addition, the sources of data may be able to adapt the | |||
needs sending within fairly wide margins but can be rate limited by the | amount of data that needs sending within fairly wide margins, but they can | |||
application- even not always have data to send, and may tolerate some | be rate limited by the | |||
amount of packet loss, but since the data is generated in real-time, | application -- even not always having data to send. They may tolerate some | |||
amount of packet loss, but since the data is generated in real time, | ||||
sending "future" data is impossible, and since it's consumed in | sending "future" data is impossible, and since it's consumed in | |||
real-time, data delivered late is commonly useless.</t> | real time, data delivered late is commonly useless.</t> | |||
<t indent="0" pn="section-1-4">While the requirements for real-time intera | ||||
<t>While the requirements for real-time interactive media differ from | ctive media differ from | |||
the requirements for the other flow types, these other flow types will | the requirements for the other flow types, these other flow types will | |||
be present in the network. The congestion control algorithm for | be present in the network. The congestion control algorithm for | |||
real-time interactive media must work properly when these other flow | real-time interactive media must work properly when these other flow | |||
types are present as cross traffic on the network.</t> | types are present as cross traffic on the network.</t> | |||
<t indent="0" pn="section-1-5">One particular protocol portfolio being dev | ||||
<t>One particular protocol portfolio being developed for this use case | eloped for this use case | |||
is WebRTC <xref target="I-D.ietf-rtcweb-overview"></xref>, where one | is WebRTC <xref target="RFC8825" format="default" sectionFormat="of" deriv | |||
edContent="RFC8825"/>, where one | ||||
envisions sending multiple flows using the Real-time Transport Protocol | envisions sending multiple flows using the Real-time Transport Protocol | |||
(RTP) <xref target="RFC3550"></xref> between two peers, in conjunction | (RTP) <xref target="RFC3550" format="default" sectionFormat="of" derivedCo ntent="RFC3550"/> between two peers, in conjunction | |||
with data flows, all at the same time, without having special | with data flows, all at the same time, without having special | |||
arrangements with the intervening service providers. As RTP does not | arrangements with the intervening service providers. As RTP does not | |||
provide any congestion control mechanism; a set of circuit breakers, | provide any congestion control mechanism, a set of circuit breakers, | |||
such as <xref target="I-D.ietf-avtcore-rtp-circuit-breakers"></xref>, | such as those described in <xref target="RFC8083" format="default" section | |||
Format="of" derivedContent="RFC8083"/>, | ||||
are required to protect the network from excessive congestion caused by | are required to protect the network from excessive congestion caused by | |||
the non-congestion controlled flows. When the real-time interactive | non-congestion-controlled flows. When the real-time interactive | |||
media is congestion controlled, it is recommended that the congestion | media is congestion controlled, it is recommended that the | |||
control mechanism operates within the constraints defined by these | congestion control mechanism operate within the constraints defined by | |||
circuit breakers when circuit breaker is present and that it should not | these | |||
cause congestion collapse when circuit breaker is not implemented.</t> | circuit breakers when a circuit breaker is present and that it should not | |||
cause congestion collapse when a circuit breaker is not implemented.</t> | ||||
<t>Given that this use case is the focus of this document, use cases | <t indent="0" pn="section-1-6">Given that this use case is the focus of th | |||
involving non-interactive media such as video streaming, and use cases | is document, use cases | |||
involving non-interactive media such as video streaming and those | ||||
using multicast/broadcast-type technologies, are out of scope.</t> | using multicast/broadcast-type technologies, are out of scope.</t> | |||
<t indent="0" pn="section-1-7">The terminology defined in <xref target="RF | ||||
<t>The terminology defined in <xref | C8825" format="default" sectionFormat="of" derivedContent="RFC8825"/> | |||
target="I-D.ietf-rtcweb-overview"></xref> is used in this memo.</t> | is used in this memo.</t> | |||
<section numbered="true" toc="include" removeInRFC="false" pn="section-1.1 | ||||
"> | ||||
<name slugifiedName="name-requirements-language">Requirements Language</ | ||||
name> | ||||
<t indent="0" pn="section-1.1-1">The key words "<bcp14>MUST</bcp14>", "< | ||||
bcp14>MUST NOT</bcp14>", | ||||
"<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", | ||||
"<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", | ||||
"<bcp14>SHOULD NOT</bcp14>", | ||||
"<bcp14>RECOMMENDED</bcp14>", | ||||
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document | ||||
are to be interpreted as described in BCP 14 | ||||
<xref target="RFC2119" format="default" sectionFormat="of" derivedContent | ||||
="RFC2119"/>.</t> | ||||
</section> | ||||
</section> | </section> | |||
<section numbered="true" toc="include" removeInRFC="false" pn="section-2"> | ||||
<section title="Requirements"> | <name slugifiedName="name-requirements">Requirements</name> | |||
<t><list style="numbers"> | <ol spacing="normal" type="1" indent="adaptive" start="1" pn="section-2-1" | |||
<t>The congestion control algorithm must attempt to provide | > | |||
<li pn="section-2-1.1" derivedCounter="1."> | ||||
<t indent="0" pn="section-2-1.1.1">The congestion control algorithm <b | ||||
cp14>MUST</bcp14> attempt to provide | ||||
as-low-as-possible-delay transit for interactive real-time traffic | as-low-as-possible-delay transit for interactive real-time traffic | |||
while still providing a useful amount of bandwidth. There may be | while still providing a useful amount of bandwidth. There may be | |||
lower limits on the amount of bandwidth that is useful, but this is | lower limits on the amount of bandwidth that is useful, but this is | |||
largely application-specific and the application may be able to | largely application specific, and the application may be able to | |||
modify or remove flows in order allow some useful flows to get | modify or remove flows in order to allow some useful flows to get | |||
enough bandwidth. (Example: not enough bandwidth for low-latency | enough bandwidth. For example, although there might not be enough band | |||
video+audio, but enough for audio-only.) <list style="letters"> | width | |||
<t>Jitter (variation in the bitrate over short time scales) also | for low-latency video+audio, there could be enough for audio only. | |||
is relevant, though moderate amounts of jitter will be absorbed | </t> | |||
<ol spacing="normal" type="a" indent="adaptive" start="1" pn="section- | ||||
2-1.1.2"> | ||||
<li pn="section-2-1.1.2.1" derivedCounter="a.">Jitter (variation in | ||||
the bitrate over short timescales) is also | ||||
relevant, though moderate amounts of jitter will be absorbed | ||||
by jitter buffers. Transit delay should be considered to track | by jitter buffers. Transit delay should be considered to track | |||
the short-term maximums of delay including jitter.</t> | ||||
<t>It should provide this as-low-as-possible-delay transit and | the short-term maximums of delay, including jitter.</li> | |||
<li pn="section-2-1.1.2.2" derivedCounter="b.">The algorithm should | ||||
provide this as-low-as-possible-delay transit and | ||||
minimize self-induced latency even when faced with intermediate | minimize self-induced latency even when faced with intermediate | |||
bottlenecks and competing flows. Competing flows may limit | bottlenecks and competing flows. Competing flows may limit | |||
what's possible to achieve.</t> | what's possible to achieve.</li> | |||
<li pn="section-2-1.1.2.3" derivedCounter="c.">The algorithm should | ||||
<t>It should be resilience to the effects of the events, such as | be resilient to the effects of events, such as | |||
routing changes, which may alter or remove bottlenecks or change | routing changes, which may alter or remove bottlenecks or change | |||
the bandwidth available especially if there is a reduction in | the bandwidth available, especially if there is a reduction in | |||
available bandwidth or increase in observed delay. It is | available bandwidth or increase in observed delay. It is | |||
expected that the mechanism reacts quickly to the such events to | expected that the mechanism reacts quickly to such events to | |||
avoid delay buildup. In the context of this memo, a 'quick' | avoid delay buildup. In the context of this memo, a "quick" | |||
reaction is on the order of a few RTTs, subject to the | reaction is on the order of a few RTTs, subject to the | |||
constraints of the media codec, but is likely within a second. | constraints of the media codec, but is likely within a second. | |||
Reaction on the next RTT is explicitly not required, since many | Reaction on the next RTT is explicitly not required, since many | |||
codecs cannot adapt their sending rate that quickly, but equally | codecs cannot adapt their sending rate that quickly, but | |||
response cannot be arbitrarily delayed.</t> | at the same time a response cannot be arbitrarily delayed.</li> | |||
<li pn="section-2-1.1.2.4" derivedCounter="d.">The algorithm should | ||||
<t>It should react quickly to handle both local and remote | react quickly to handle both local and remote | |||
interface changes (WLAN to 3G data, etc) which may radically | interface changes (e.g., WLAN to 3G data) that may radically | |||
change the bandwidth available or bottlenecks, especially if | change the bandwidth available or bottlenecks, especially if | |||
there is a reduction in available bandwidth or increase in | there is a reduction in available bandwidth or an increase in | |||
bottleneck delay. It is assumed that an interface change can | bottleneck delay. It is assumed that an interface change can | |||
generate a notification to the algorithm.</t> | generate a notification to the algorithm.</li> | |||
<li pn="section-2-1.1.2.5" derivedCounter="e.">The real-time interac | ||||
<t>The real-time interactive media applications can be rate | tive media applications can be rate | |||
limited. This means the offered loads can be less than the | limited. This means the offered loads can be less than the | |||
available bandwidth at any given moment, and may vary | available bandwidth at any given moment and may vary | |||
dramatically over time, including dropping to no load and then | dramatically over time, including dropping to no load and then | |||
resuming a high load, such as in a mute/unmute operation. Hence, | resuming a high load, such as in a mute/unmute operation. Hence, | |||
the algorithm must be designed to handle such behavior from | the algorithm must be designed to handle such behavior from | |||
media source or application. Note that the reaction time between | a media source or application. Note that the reaction time between | |||
a change in the bandwidth available from the algorithm and a | a change in the bandwidth available from the algorithm and a | |||
change in the offered load is variable, and may be different | change in the offered load is variable, and it may be different | |||
when increasing versus decreasing.</t> | when increasing versus decreasing.</li> | |||
<li pn="section-2-1.1.2.6" derivedCounter="f.">The algorithm is requ | ||||
<t>The algorithm requires to avoid building up queues when | ired to avoid building up queues when | |||
competing with short-term bursts of traffic (for example, | competing with short-term bursts of traffic (for example, | |||
traffic generated by web-browsing) which can quickly saturate a | traffic generated by web browsing), which can quickly saturate a | |||
local-bottleneck router or link, but also clear quickly. The | local-bottleneck router or link but clear quickly. The | |||
algorithm should also react quickly to regain its previous share | algorithm should also react quickly to regain its previous share | |||
of the bandwidth when the local-bottleneck or link is | of the bandwidth when the local bottleneck or link is | |||
cleared.</t> | cleared.</li> | |||
<li pn="section-2-1.1.2.7" derivedCounter="g.">Similarly, periodic b | ||||
<t>Similarly periodic bursty flows such as MPEG DASH <xref | ursty flows such as MPEG DASH <xref target="MPEG_DASH" format="default" sectionF | |||
target="MPEG_DASH"></xref> or proprietary media streaming | ormat="of" derivedContent="MPEG_DASH"/> or proprietary media | |||
algorithms may compete in bursts with the algorithm, and may not | streaming | |||
algorithms may compete in bursts with the algorithm and may not | ||||
be adaptive within a burst. They are often layered on top of TCP | be adaptive within a burst. They are often layered on top of TCP | |||
but use TCP in a bursty manner that can interact poorly with | but use TCP in a bursty manner that can interact poorly with | |||
competing flows during the bursts. The algorithm must not | competing flows during the bursts. The algorithm must not | |||
increase the already existing delay buildup during those bursts. | increase the already existing delay buildup during those bursts. | |||
Note that this competing traffic may be on a shared access link, | Note that this competing traffic may be on a shared access link, | |||
or the traffic burst may cause a shift in the location of the | or the traffic burst may cause a shift in the location of the | |||
bottleneck for the duration of the burst.</t> | bottleneck for the duration of the burst.</li> | |||
</list></t> | </ol> | |||
</li> | ||||
<t>The algorithm must be fair to other flows, both real-time flows | <li pn="section-2-1.2" derivedCounter="2."> | |||
(such as other instances of itself), and TCP flows, both long-lived | <t indent="0" pn="section-2-1.2.1">The algorithm <bcp14>MUST</bcp14> b | |||
and bursts such as the traffic generated by a typical web browsing | e fair to other flows, both real-time flows | |||
session. Note that 'fair' is a rather hard-to-define term. It should | (such as other instances of itself) and TCP flows, both long-lived flo | |||
be fair with itself, giving fair share of the bandwidth to multiple | ws | |||
and bursts such as the traffic generated by a typical web-browsing | ||||
session. Note that "fair" is a rather hard-to-define term. It <bcp14>S | ||||
HOULD</bcp14> | ||||
be fair with itself, giving a fair share of the bandwidth to multiple | ||||
flows with similar RTTs, and if possible to multiple flows with | flows with similar RTTs, and if possible to multiple flows with | |||
different RTTs.<list style="letters"> | different RTTs. | |||
<t>Existing flows at a bottleneck must also be fair to new flows | </t> | |||
to that bottleneck, and must allow new flows to ramp up to a | <ol spacing="normal" type="a" indent="adaptive" start="1" pn="section- | |||
2-1.2.2"> | ||||
<li pn="section-2-1.2.2.1" derivedCounter="a.">Existing flows at a b | ||||
ottleneck must also be fair to new flows | ||||
to that bottleneck and must allow new flows to ramp up to a | ||||
useful share of the bottleneck bandwidth as quickly as possible. | useful share of the bottleneck bandwidth as quickly as possible. | |||
A useful share will depend on the media types involved, total | A useful share will depend on the media types involved, total | |||
bandwidth available and the user experience requirements of a | bandwidth available, and the user-experience requirements of a | |||
particular service. Note that relative RTTs may affect the rate | particular service. Note that relative RTTs may affect the rate | |||
new flows can ramp up to a reasonable share.</t> | at which new flows can ramp up to a reasonable share.</li> | |||
</list></t> | </ol> | |||
</li> | ||||
<t>The algorithm should not starve competing TCP flows, and should | <li pn="section-2-1.3" derivedCounter="3."> | |||
as best as possible avoid starvation by TCP flows.<list | <t indent="0" pn="section-2-1.3.1">The algorithm <bcp14>SHOULD NOT</bc | |||
style="letters"> | p14> starve competing TCP flows and <bcp14>SHOULD</bcp14>, | |||
<t>The congestion control should prioritise achieving a useful | as best as possible, avoid starvation by TCP flows.</t> | |||
<ol spacing="normal" type="a" indent="adaptive" start="1" pn="section- | ||||
2-1.3.2"> | ||||
<li pn="section-2-1.3.2.1" derivedCounter="a.">The congestion contro | ||||
l should prioritize achieving a useful | ||||
share of the bandwidth depending on the media types and total | share of the bandwidth depending on the media types and total | |||
available bandwidth over achieving as low as possible transit | available bandwidth over achieving as-low-as-possible transit | |||
delay, when these two requirements are in conflict.</t> | delay, when these two requirements are in conflict.</li> | |||
</list></t> | </ol> | |||
</li> | ||||
<t>The algorithm should as quickly as possible adapt to initial | <li pn="section-2-1.4" derivedCounter="4."> | |||
network conditions at the start of a flow. This should occur both if | <t indent="0" pn="section-2-1.4.1">The algorithm <bcp14>SHOULD</bcp14> | |||
adapt as quickly as possible to initial | ||||
network conditions at the start of a flow. This <bcp14>SHOULD</bcp14> | ||||
occur whether | ||||
the initial bandwidth is above or below the bottleneck bandwidth. | the initial bandwidth is above or below the bottleneck bandwidth. | |||
<list style="letters"> | </t> | |||
<t>The algorithm should allow different modes of adaptation for | <ol spacing="normal" type="a" indent="adaptive" start="1" pn="section- | |||
example,the startup adaptation may be faster than adaptation | 2-1.4.2"> | |||
<li pn="section-2-1.4.2.1" derivedCounter="a.">The algorithm should | ||||
allow different modes of adaptation; for | ||||
example, the startup adaptation may be faster than adaptation | ||||
later in a flow. It should allow for both slow-start operation | later in a flow. It should allow for both slow-start operation | |||
(adapt up) and history-based startup (start at a point expected | (adapt up) and history-based startup (start at a point expected | |||
to be at or below channel bandwidth from historical information, | to be at or below channel bandwidth from historical information, | |||
which may need to adapt down quickly if the initial guess is | which may need to adapt down quickly if the initial guess is | |||
wrong). Starting too low and/or adapting up too slowly can cause | wrong). Starting too low and/or adapting up too slowly can cause | |||
a critical point in a personal communication to be poor | a critical point in a personal communication to be poor | |||
("Hello!"). Starting over-bandwidth causes other problems for | ("Hello!"). | |||
Starting too high above the available bandwidth causes other probl | ||||
ems for | ||||
user experience, so there's a tension here. Alternative methods | user experience, so there's a tension here. Alternative methods | |||
to help startup like probing during setup with dummy data may be | to help startup, such as probing during setup with dummy data, may | |||
useful in some applications; in some cases there will be a | be | |||
useful in some applications; in some cases, there will be a | ||||
considerable gap in time between flow creation and the initial | considerable gap in time between flow creation and the initial | |||
flow of data. Again, A flow may need to change adaptation rates | flow of data. Again, a flow may need to change adaptation rates | |||
due to network conditions or changes in the provided flows (such | due to network conditions or changes in the provided flows (such | |||
as un-muting or sending data after a gap).</t> | as unmuting or sending data after a gap).</li> | |||
</list></t> | </ol> | |||
</li> | ||||
<t>The algorithm should be stable if the RTP streams are halted or | <li pn="section-2-1.5" derivedCounter="5."> | |||
discontinuous (for example - Voice Activity Detection). <list | <t indent="0" pn="section-2-1.5.1">The algorithm <bcp14>SHOULD</bcp14> | |||
style="letters"> | be stable if the RTP streams are halted or | |||
<t>After stream resumption, the algorithm should attempt to | discontinuous (for example, when using Voice Activity Detection). </t> | |||
<ol spacing="normal" type="a" indent="adaptive" start="1" pn="section- | ||||
2-1.5.2"> | ||||
<li pn="section-2-1.5.2.1" derivedCounter="a.">After stream resumpti | ||||
on, the algorithm should attempt to | ||||
rapidly regain its previous share of the bandwidth; the | rapidly regain its previous share of the bandwidth; the | |||
aggressiveness with which this is done will decay with the | aggressiveness with which this is done will decay with the | |||
length of the pause.</t> | length of the pause.</li> | |||
</list></t> | </ol> | |||
</li> | ||||
<t>The algorithm should where possible merge information across | <li pn="section-2-1.6" derivedCounter="6."> | |||
multiple RTP streams sent between two endpoints, when those RTP | <t indent="0" pn="section-2-1.6.1">Where possible, the algorithm <bcp1 | |||
4>SHOULD</bcp14> merge information across | ||||
multiple RTP streams sent between two endpoints when those RTP | ||||
streams share a common bottleneck, whether or not those streams are | streams share a common bottleneck, whether or not those streams are | |||
multiplexed onto the same ports, in order to allow congestion | multiplexed onto the same ports. This will allow congestion | |||
control of the set of streams together instead of as multiple | control of the set of streams together instead of as multiple | |||
independent streams. This allows better overall bandwidth | independent streams. It will also allow better overall bandwidth | |||
management, faster response to changing conditions, and fairer | management, faster response to changing conditions, and fairer | |||
sharing of bandwidth with other network users.<list style="letters"> | sharing of bandwidth with other network users.</t> | |||
<t>The algorithm should also share information and adaptation | <ol spacing="normal" type="a" indent="adaptive" start="1" pn="section- | |||
2-1.6.2"> | ||||
<li pn="section-2-1.6.2.1" derivedCounter="a.">The algorithm should | ||||
also share information and adaptation | ||||
with other non-RTP flows between the same endpoints, such as a | with other non-RTP flows between the same endpoints, such as a | |||
WebRTC DataChannel <xref | WebRTC data channel <xref target="RFC8831" format="default" sectio | |||
target="I-D.ietf-rtcweb-data-channel"></xref>, when | nFormat="of" derivedContent="RFC8831"/>, when | |||
possible.</t> | possible.</li> | |||
<li pn="section-2-1.6.2.2" derivedCounter="b.">When there are multip | ||||
<t>When there are multiple streams across the same 5-tuple | le streams across the same 5-tuple | |||
coordinating their bandwidth use and congestion control, the | coordinating their bandwidth use and congestion control, the | |||
algorithm should allow the application to control the relative | algorithm should allow the application to control the relative | |||
split of available bandwidth. The most correlated bandwidth | split of available bandwidth. The most correlated bandwidth | |||
usage would be with other flows on the same 5-tuple, but there | usage would be with other flows on the same 5-tuple, but there | |||
may be use in coordinating measurement and control of the local | may be use in coordinating measurement and control of the local | |||
link(s). Use of information about previous flows, especially on | link(s). Use of information about previous flows, especially on | |||
the same 5-tuple, may be useful input to the algorithm, | the same 5-tuple, may be useful input to the algorithm, | |||
especially to startup performance of a new flow.</t> | especially regarding startup performance of a new flow.</li> | |||
</list></t> | </ol> | |||
</li> | ||||
<t>The algorithm should not require any special support from network | <li pn="section-2-1.7" derivedCounter="7."> | |||
elements to convey congestion related information to be functional. | <t indent="0" pn="section-2-1.7.1">The algorithm <bcp14>SHOULD NOT</bc | |||
As much as possible, it should leverage available information about | p14> require any special support from network | |||
elements to be able to convey congestion-related information. | ||||
As much as possible, it <bcp14>SHOULD</bcp14> leverage available infor | ||||
mation about | ||||
the incoming flow to provide feedback to the sender. Examples of | the incoming flow to provide feedback to the sender. Examples of | |||
this information are the packet arrival times, acknowledgements and | this information are the packet arrival times, acknowledgements and | |||
feedback, packet timestamps, and packet losses, Explicit Congestion | feedback, packet timestamps, packet losses, and Explicit Congestion | |||
Notification (ECN) <xref target="RFC3168"></xref>; all of these can | Notification (ECN) <xref target="RFC3168" format="default" sectionForm | |||
at="of" derivedContent="RFC3168"/>; all of these can | ||||
provide information about the state of the path and any bottlenecks. | provide information about the state of the path and any bottlenecks. | |||
However, the use of available information is algorithm | However, the use of available information is algorithm | |||
dependent.<list style="letters"> | dependent.</t> | |||
<t>Extra information could be added to the packets to provide | <ol spacing="normal" type="a" indent="adaptive" start="1" pn="section- | |||
2-1.7.2"> | ||||
<li pn="section-2-1.7.2.1" derivedCounter="a.">Extra information cou | ||||
ld be added to the packets to provide | ||||
more detailed information on actual send times (as opposed to | more detailed information on actual send times (as opposed to | |||
sampling times), but should not be required.</t> | sampling times), but such information should not be required.</li> | |||
</list></t> | </ol> | |||
</li> | ||||
<t>Since the assumption here is a set of RTP streams, the | <li pn="section-2-1.8" derivedCounter="8."> | |||
backchannel typically should be done via RTCP<xref | <t indent="0" pn="section-2-1.8.1">Since the assumption here is a set | |||
target="RFC3550"></xref>; one alternative would be to include it | of RTP streams, the | |||
instead in a reverse RTP channel using header extensions.<list | backchannel typically <bcp14>SHOULD</bcp14> be done via the RTP Contro | |||
style="letters"> | l Protocol | |||
<t>In order to react sufficiently quickly when using RTCP for a | (RTCP) <xref target="RFC3550" format="default" sectionFormat="of" deriv | |||
backchannel, an RTP profile such as RTP/AVPF <xref | edContent="RFC3550"/>; instead, one alternative | |||
target="RFC4585"></xref> or RTP/SAVPF <xref | would be to include it | |||
target="RFC5124"></xref> that allows sufficiently frequent | in a reverse-RTP channel using header extensions.</t> | |||
<ol spacing="normal" type="a" indent="adaptive" start="1" pn="section- | ||||
2-1.8.2"> | ||||
<li pn="section-2-1.8.2.1" derivedCounter="a.">In order to react suf | ||||
ficiently quickly when using RTCP for a | ||||
backchannel, an RTP profile such as RTP/AVPF <xref target="RFC4585 | ||||
" format="default" sectionFormat="of" derivedContent="RFC4585"/> or RTP/SAVPF <x | ||||
ref target="RFC5124" format="default" sectionFormat="of" derivedContent="RFC5124 | ||||
"/> that allows sufficiently frequent | ||||
feedback must be used. Note that in some cases, backchannel | feedback must be used. Note that in some cases, backchannel | |||
messages may be delayed until the RTCP channel can be allocated | messages may be delayed until the RTCP channel can be allocated | |||
enough bandwidth, even under AVPF rules. This may also imply | enough bandwidth, even under AVPF rules. This may also imply | |||
negotiating a higher maximum percentage for RTCP data or | negotiating a higher maximum percentage for RTCP data or | |||
allowing solutions to violate or modify the rules specified for | allowing solutions to violate or modify the rules specified for | |||
AVPF.</t> | AVPF.</li> | |||
<li pn="section-2-1.8.2.2" derivedCounter="b.">Bandwidth for the fee | ||||
<t>Bandwidth for the feedback messages should be minimized (such | dback messages should be minimized | |||
as via RFC 5506 <xref target="RFC5506"></xref>to allow RTCP | using techniques such as those in <xref target="RFC5506" format="defa | |||
without Sender Reports/Receiver Reports)</t> | ult" sectionFormat="of" derivedContent="RFC5506"/>, to allow RTCP | |||
without Sender/Receiver Reports.</li> | ||||
<t>Backchannel data should be minimized to avoid taking too much | <li pn="section-2-1.8.2.3" derivedCounter="c.">Backchannel data shou | |||
ld be minimized to avoid taking too much | ||||
reverse-channel bandwidth (since this will often be used in a | reverse-channel bandwidth (since this will often be used in a | |||
bidirectional set of flows). In areas of stability, backchannel | bidirectional set of flows). In areas of stability, backchannel | |||
data may be sent more infrequently so long as algorithm | data may be sent more infrequently so long as algorithm | |||
stability and fairness are maintained. When the channel is | stability and fairness are maintained. When the channel is | |||
unstable or has not yet reached equilibrium after a change, | unstable or has not yet reached equilibrium after a change, | |||
backchannel feedback may be more frequent and use more | backchannel feedback may be more frequent and use more | |||
reverse-channel bandwidth. This is an area with considerable | reverse-channel bandwidth. This is an area with considerable | |||
flexibility of design, and different approaches to backchannel | flexibility of design, and different approaches to backchannel | |||
messages and frequency are expected to be evaluated.</t> | messages and frequency are expected to be evaluated.</li> | |||
</list></t> | </ol> | |||
</li> | ||||
<t>Flows managed by this algorithm and flows competing against at a | <li pn="section-2-1.9" derivedCounter="9."> | |||
bottleneck may have different DSCP<xref target="RFC5865"></xref> | <t indent="0" pn="section-2-1.9.1">Flows managed by this algorithm and | |||
markings depending on the type of traffic, or may be subject to | flows competing against each | |||
other at a | ||||
bottleneck may have different Differentiated Services Code Point | ||||
(DSCP) <xref target="RFC5865" format="default" sectionFormat="of" deriv | ||||
edContent="RFC5865"/> | ||||
markings depending on the type of traffic or may be subject to | ||||
flow-based QoS. A particular bottleneck or section of the network | flow-based QoS. A particular bottleneck or section of the network | |||
path may or may not honor DSCP markings. The algorithm should | path may or may not honor DSCP markings. The algorithm <bcp14>SHOULD</ | |||
attempt to leverage DSCP markings when they're available.<list | bcp14> | |||
style="letters"> | attempt to leverage DSCP markings when they're available.</t> | |||
<t>In WebRTC, a division of packets into 4 classes is envisioned | </li> | |||
in order of priority: faster-than-audio, audio, video, | <li pn="section-2-1.10" derivedCounter="10.">The algorithm <bcp14>SHOULD | |||
best-effort, and bulk-transfer. Typically the flows managed by | </bcp14> sense the unexpected lack of backchannel | |||
this algorithm would be audio or video in that hierarchy, and | information as a possible indication of a channel-overuse problem | |||
feedback flows would be faster-than-audio.</t> | ||||
</list></t> | ||||
<t>The algorithm should sense the unexpected lack of backchannel | ||||
information as a possible indication of a channel overuse problem | ||||
and react accordingly to avoid burst events causing a congestion | and react accordingly to avoid burst events causing a congestion | |||
collapse.</t> | collapse.</li> | |||
<li pn="section-2-1.11" derivedCounter="11.">The algorithm <bcp14>SHOULD | ||||
<t>The algorithm should be stable and maintain low-delay when faced | </bcp14> be stable and maintain low delay when faced | |||
with Active Queue Management (AQM) algorithms. Also note that these | with Active Queue Management (AQM) algorithms. Also note that these | |||
algorithms may apply across multiple queues in the bottleneck, or to | algorithms may apply across multiple queues in the bottleneck or to | |||
a single queue</t> | a single queue.</li> | |||
</list></t> | </ol> | |||
</section> | </section> | |||
<section numbered="true" toc="include" removeInRFC="false" pn="section-3"> | ||||
<section title="Deficiencies of existing mechanisms "> | <name slugifiedName="name-deficiencies-of-existing-me">Deficiencies of Exi | |||
<t>Among the existing congestion control mechanisms TCP Friendly Rate | sting Mechanisms</name> | |||
Control (TFRC) <xref target="RFC5348"></xref> is the one which claims to | <t indent="0" pn="section-3-1">Among the existing congestion control mecha | |||
be suitable for real-time interactive media. TFRC is, an equation based, | nisms, TCP Friendly Rate | |||
congestion control mechanism which provides reasonably fair share of the | Control (TFRC) <xref target="RFC5348" format="default" sectionFormat="of" | |||
derivedContent="RFC5348"/> is the one that claims to | ||||
be suitable for real-time interactive media. TFRC is an equation-based | ||||
congestion control mechanism that provides a reasonably fair share of | ||||
bandwidth when competing with TCP flows and offers much lower throughput | bandwidth when competing with TCP flows and offers much lower throughput | |||
variations than TCP. This is achieved by a slower response to the | variations than TCP. This is achieved by a slower response to the | |||
available bandwidth change than TCP. TFRC is designed to perform best | available bandwidth change than TCP. TFRC is designed to perform best | |||
with applications which has fixed packet size and does not have fixed | with applications that have a fixed packet size and do not have a fixed | |||
period between sending packets.</t> | period between sending packets.</t> | |||
<t indent="0" pn="section-3-2">TFRC detects loss events and reacts to cong | ||||
<t>TFRC operates on detecting loss events and reacts to loss caused by | estion-caused loss by | |||
congestion by reducing its sending rate. It allows applications to | reducing its sending rate. It allows applications to | |||
increase the sending rate until loss is observed in the flows. As it is | increase the sending rate until loss is observed in the flows. As | |||
noted in IAB/IRTF report <xref target="RFC7295"></xref> large buffers | noted in IAB/IRTF report <xref target="RFC7295" format="default" sectionFo | |||
are available in the network elements which introduces additional delay | rmat="of" derivedContent="RFC7295"/>, large buffers | |||
in the communication, it becomes important to take all possible | are available in the network elements, which introduce additional delay | |||
congestion indications into considerations. Looking at the current | in the communication. It becomes important to take all possible | |||
Internet deployment, TFRC's only consideration of loss events as | congestion indications into consideration. Looking at the current | |||
congestion indication can be considered as biggest lacking.</t> | Internet deployment, TFRC's biggest deficiency is that it only considers | |||
loss events as a congestion indication. | ||||
<t>A typical real-time interactive communication includes live encoded | </t> | |||
audio and video flow(s). In such a communication scenario an audio | <t indent="0" pn="section-3-3">A typical real-time interactive communicati | |||
source typically needs fixed interval between packets, needs to vary | on includes live-encoded | |||
their segment size instead of their packet rate in response to | audio and video flow(s). In such a communication scenario, an audio | |||
congestion and sends smaller packets, a variant of TFRC , Small-Packet | source typically needs a fixed interval between packets and needs to | |||
TFRC (TFRC-SP) <xref target="RFC4828"></xref> addresses the issues | vary the segment size of the packets instead of the packet rate in | |||
related to such kind of sources ; a video source generally varies video | response to congestion; therefore, it sends smaller packets. | |||
frame sizes, can produce large frames which need to be further | A variant of TFRC, Small-Packet | |||
TFRC (TFRC-SP) <xref target="RFC4828" format="default" sectionFormat="of" | ||||
derivedContent="RFC4828"/>, addresses the issues | ||||
related to such kind of sources. A video source generally varies video | ||||
frame sizes, can produce large frames that need to be further | ||||
fragmented to fit into path Maximum Transmission Unit (MTU) size, and | fragmented to fit into path Maximum Transmission Unit (MTU) size, and | |||
have almost fixed interval between producing frames under a certain | has an almost fixed interval between producing frames under a certain | |||
frame rate, TFRC is known to be less optimal when using with such video | frame rate. TFRC is known to be less optimal when using such video | |||
sources.</t> | sources.</t> | |||
<t indent="0" pn="section-3-4">There are also some mismatches between TFRC | ||||
<t>There are also some mismatches between TFRC's design assumptions and | 's design assumptions and | |||
how the media sources in a typical real-time interactive application | how the media sources in a typical real-time interactive application | |||
works. TFRC is design to maintain smooth sending rate however media | work. TFRC is designed to maintain a smooth sending rate; however, media | |||
sources can change rates in steps for both rate increase and rate | sources can change rates in steps for both rate increase and rate | |||
decrease. TFRC can operate in two modes - i) Bytes per second and ii) | decrease. TFRC can operate in two modes: i) bytes per second and ii) | |||
packets per second, where typical real-time interactive media sources | packets per second, where typical real-time interactive media sources | |||
operates on bit per second. There are also limitations on how quickly | operate on bit per second. There are also limitations on how quickly | |||
the media sources can adapt to specific sending rates. The modern video | the media sources can adapt to specific sending rates. Modern video | |||
encoders can operate on a mode where they can vary the output bitrate a | encoders can operate in a mode in which they can vary the output bitrate a | |||
lot depending on the way there are configured, the current scene it is | lot depending on the way they are configured, the current scene they are | |||
encoding and more. Therefore, it is possible that the video source does | encoding, and more. Therefore, it is possible that the video source will | |||
not always output at a bitrate they are allowed to. TFRC tries to raise | not always output at an allowable bitrate. TFRC tries to increase | |||
its sending rate when transmitting at maximum allowed rate and increases | its sending rate when transmitting at the maximum allowed rate, and it inc | |||
only twice the current transmission rate hence it may create issues when | reases | |||
the video source vary their bitrates.</t> | only twice the current transmission rate; hence, it may create issues when | |||
the video sources vary their bitrates.</t> | ||||
<t>Moreover, there are number of studies on TFRC which shows it's | <t indent="0" pn="section-3-5">Moreover, there are a number of studies on | |||
limitations which includes TFRC's unfairness on low statistically | TFRC that show its | |||
multiplexed links, oscillatory behavior, performance issue in highly | limitations, including TFRC's unfairness to low statistically | |||
dynamic loss rates conditions and more <xref target="CH09"></xref>.</t> | multiplexed links, oscillatory behavior, performance issues in highly | |||
dynamic loss-rate conditions, and more <xref target="CH09" format="default | ||||
<t>Looking at all these deficiencies it can be concluded that the | " sectionFormat="of" derivedContent="CH09"/>.</t> | |||
requirements of congestion control mechanism for real-time interactive | <t indent="0" pn="section-3-6">Looking at all these deficiencies, it can b | |||
e concluded that the | ||||
requirements for a congestion control mechanism for real-time interactive | ||||
media cannot be met by TFRC as defined in the standard.</t> | media cannot be met by TFRC as defined in the standard.</t> | |||
</section> | </section> | |||
<section anchor="IANA" numbered="true" toc="include" removeInRFC="false" pn= | ||||
<section anchor="IANA" title="IANA Considerations"> | "section-4"> | |||
<t>This document makes no request of IANA.</t> | <name slugifiedName="name-iana-considerations">IANA Considerations</name> | |||
<t indent="0" pn="section-4-1">This document has no IANA actions.</t> | ||||
<t>Note to RFC Editor: this section may be removed on publication as an | ||||
RFC.</t> | ||||
</section> | </section> | |||
<section anchor="Security" numbered="true" toc="include" removeInRFC="false" | ||||
<section anchor="Security" title="Security Considerations"> | pn="section-5"> | |||
<t>An attacker with the ability to delete, delay or insert messages in | <name slugifiedName="name-security-considerations">Security Considerations | |||
</name> | ||||
<t indent="0" pn="section-5-1">An attacker with the ability to delete, del | ||||
ay, or insert messages into | ||||
the flow can fake congestion signals, unless they are passed on a | the flow can fake congestion signals, unless they are passed on a | |||
tamper-proof path. Since some possible algorithms depend on the timing | tamper-proof path. Since some possible algorithms depend on the timing | |||
of packet arrival, even a traditional protected channel does not fully | of packet arrival, even a traditional, protected channel does not fully | |||
mitigate such attacks.</t> | mitigate such attacks.</t> | |||
<t indent="0" pn="section-5-2">An attack that reduces bandwidth is not nec | ||||
<t>An attack that reduces bandwidth is not necessarily significant, | essarily significant, | |||
since an on-path attacker could break the connection by discarding all | since an on-path attacker could break the connection by discarding all | |||
packets. Attacks that increase the perceived available bandwidth are | packets. Attacks that increase the perceived available bandwidth are | |||
conceivable, and need to be evaluated. Such attacks could result in | conceivable and need to be evaluated. Such attacks could result in | |||
starvation of competing flows and permit amplification attacks.</t> | starvation of competing flows and permit amplification attacks.</t> | |||
<t indent="0" pn="section-5-3">Algorithm designers should consider the pos | ||||
<t>Algorithm designers should consider the possibility of malicious | sibility of malicious | |||
on-path attackers.</t> | on-path attackers.</t> | |||
</section> | </section> | |||
<section anchor="Acknowledgements" title="Acknowledgements"> | ||||
<t>This document is the result of discussions in various fora of the | ||||
WebRTC effort, in particular on the rtp-congestion@alvestrand.no mailing | ||||
list. Many people contributed their thoughts to this.</t> | ||||
</section> | ||||
</middle> | </middle> | |||
<back> | <back> | |||
<references title="Normative References"> | <references pn="section-6"> | |||
<?rfc include="reference.RFC.2119"?> | <name slugifiedName="name-references">References</name> | |||
<references pn="section-6.1"> | ||||
<?rfc include='reference.RFC.3550'?> | <name slugifiedName="name-normative-references">Normative References</na | |||
me> | ||||
<?rfc include='reference.RFC.4585'?> | <reference anchor="RFC2119" target="https://www.rfc-editor.org/info/rfc2 | |||
119" quoteTitle="true" derivedAnchor="RFC2119"> | ||||
<?rfc include='reference.RFC.5124'?> | <front> | |||
<title>Key words for use in RFCs to Indicate Requirement Levels</tit | ||||
<?rfc include='reference.I-D.ietf-rtcweb-overview'?> | le> | |||
</references> | <author initials="S." surname="Bradner" fullname="S. Bradner"> | |||
<organization showOnFrontPage="true"/> | ||||
<references title="Informative References"> | </author> | |||
<?rfc include='reference.RFC.3168'?> | <date year="1997" month="March"/> | |||
<abstract> | ||||
<?rfc include='reference.RFC.5506'?> | <t indent="0">In many standards track documents several words are | |||
used to signify the requirements in the specification. These words are often ca | ||||
<?rfc include='reference.RFC.5865'?> | pitalized. This document defines these words as they should be interpreted in IE | |||
TF documents. This document specifies an Internet Best Current Practices for th | ||||
<?rfc include='reference.RFC.5348'?> | e Internet Community, and requests discussion and suggestions for improvements.< | |||
/t> | ||||
<?rfc include='reference.RFC.4828'?> | </abstract> | |||
</front> | ||||
<?rfc include='reference.RFC.7295'?> | <seriesInfo name="BCP" value="14"/> | |||
<seriesInfo name="RFC" value="2119"/> | ||||
<?rfc include='reference.I-D.ietf-rtcweb-data-channel'?> | <seriesInfo name="DOI" value="10.17487/RFC2119"/> | |||
</reference> | ||||
<?rfc include='reference.I-D.ietf-avtcore-rtp-circuit-breakers'?> | <reference anchor="RFC3550" target="https://www.rfc-editor.org/info/rfc3 | |||
550" quoteTitle="true" derivedAnchor="RFC3550"> | ||||
<reference anchor="MPEG_DASH"> | <front> | |||
<front> | <title>RTP: A Transport Protocol for Real-Time Applications</title> | |||
<title>Dynamic adaptive streaming over HTTP (DASH) -- Part 1: Media | <author initials="H." surname="Schulzrinne" fullname="H. Schulzrinne | |||
presentation description and segment formats</title> | "> | |||
<organization showOnFrontPage="true"/> | ||||
<author></author> | </author> | |||
<author initials="S." surname="Casner" fullname="S. Casner"> | ||||
<date month="April" year="2012" /> | <organization showOnFrontPage="true"/> | |||
</front> | </author> | |||
<author initials="R." surname="Frederick" fullname="R. Frederick"> | ||||
<format target="http://standards.iso.org/ittf/PubliclyAvailableStandards | <organization showOnFrontPage="true"/> | |||
/c057623_ISO_IEC_23009-1_2012.zip" | </author> | |||
type="TXT" /> | <author initials="V." surname="Jacobson" fullname="V. Jacobson"> | |||
</reference> | <organization showOnFrontPage="true"/> | |||
</author> | ||||
<reference anchor="CH09"> | <date year="2003" month="July"/> | |||
<front> | <abstract> | |||
<title>Designing TCP-Friendly Window-based Congestion Control for | <t indent="0">This memorandum describes RTP, the real-time transpo | |||
Real-time Multimedia Applications</title> | rt protocol. RTP provides end-to-end network transport functions suitable for a | |||
pplications transmitting real-time data, such as audio, video or simulation data | ||||
<author fullname="Soo-Hyun Choi" initials="S" surname="Choi"> | , over multicast or unicast network services. RTP does not address resource res | |||
<organization></organization> | ervation and does not guarantee quality-of- service for real-time services. The | |||
</author> | data transport is augmented by a control protocol (RTCP) to allow monitoring of | |||
the data delivery in a manner scalable to large multicast networks, and to prov | ||||
<author fullname="Mark Handley" initials="M" surname="Handley"> | ide minimal control and identification functionality. RTP and RTCP are designed | |||
<organization></organization> | to be independent of the underlying transport and network layers. The protocol | |||
supports the use of RTP-level translators and mixers. Most of the text in this | ||||
<address> | memorandum is identical to RFC 1889 which it obsoletes. There are no changes in | |||
<postal> | the packet formats on the wire, only changes to the rules and algorithms govern | |||
<street></street> | ing how the protocol is used. The biggest change is an enhancement to the scalab | |||
le timer algorithm for calculating when to send RTCP packets in order to minimiz | ||||
<city></city> | e transmission in excess of the intended rate when many participants join a sess | |||
ion simultaneously. [STANDARDS-TRACK]</t> | ||||
<region></region> | </abstract> | |||
</front> | ||||
<code></code> | <seriesInfo name="STD" value="64"/> | |||
<seriesInfo name="RFC" value="3550"/> | ||||
<country></country> | <seriesInfo name="DOI" value="10.17487/RFC3550"/> | |||
</postal> | </reference> | |||
<reference anchor="RFC4585" target="https://www.rfc-editor.org/info/rfc4 | ||||
<phone></phone> | 585" quoteTitle="true" derivedAnchor="RFC4585"> | |||
<front> | ||||
<facsimile></facsimile> | <title>Extended RTP Profile for Real-time Transport Control Protocol | |||
(RTCP)-Based Feedback (RTP/AVPF)</title> | ||||
<email></email> | <author initials="J." surname="Ott" fullname="J. Ott"> | |||
<organization showOnFrontPage="true"/> | ||||
<uri></uri> | </author> | |||
</address> | <author initials="S." surname="Wenger" fullname="S. Wenger"> | |||
</author> | <organization showOnFrontPage="true"/> | |||
</author> | ||||
<date day="21" month="May" year="2009" /> | <author initials="N." surname="Sato" fullname="N. Sato"> | |||
</front> | <organization showOnFrontPage="true"/> | |||
</author> | ||||
<seriesInfo name="PFLDNeT 2009 Workshop" value="" /> | <author initials="C." surname="Burmeister" fullname="C. Burmeister"> | |||
<organization showOnFrontPage="true"/> | ||||
<format target="www.hpcc.jp/pfldnet2009/Program_files/1569199301.pdf" | </author> | |||
type="PDF" /> | <author initials="J." surname="Rey" fullname="J. Rey"> | |||
</reference> | <organization showOnFrontPage="true"/> | |||
</author> | ||||
<date year="2006" month="July"/> | ||||
<abstract> | ||||
<t indent="0">Real-time media streams that use RTP are, to some de | ||||
gree, resilient against packet losses. Receivers may use the base mechanisms of | ||||
the Real-time Transport Control Protocol (RTCP) to report packet reception stat | ||||
istics and thus allow a sender to adapt its transmission behavior in the mid-ter | ||||
m. This is the sole means for feedback and feedback-based error repair (besides | ||||
a few codec-specific mechanisms). This document defines an extension to the Au | ||||
dio-visual Profile (AVP) that enables receivers to provide, statistically, more | ||||
immediate feedback to the senders and thus allows for short-term adaptation and | ||||
efficient feedback-based repair mechanisms to be implemented. This early feedba | ||||
ck profile (AVPF) maintains the AVP bandwidth constraints for RTCP and preserves | ||||
scalability to large groups. [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="4585"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC4585"/> | ||||
</reference> | ||||
<reference anchor="RFC5124" target="https://www.rfc-editor.org/info/rfc5 | ||||
124" quoteTitle="true" derivedAnchor="RFC5124"> | ||||
<front> | ||||
<title>Extended Secure RTP Profile for Real-time Transport Control P | ||||
rotocol (RTCP)-Based Feedback (RTP/SAVPF)</title> | ||||
<author initials="J." surname="Ott" fullname="J. Ott"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="E." surname="Carrara" fullname="E. Carrara"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2008" month="February"/> | ||||
<abstract> | ||||
<t indent="0">An RTP profile (SAVP) for secure real-time communica | ||||
tions and another profile (AVPF) to provide timely feedback from the receivers t | ||||
o a sender are defined in RFC 3711 and RFC 4585, respectively. This memo specif | ||||
ies the combination of both profiles to enable secure RTP communications with fe | ||||
edback. [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="5124"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC5124"/> | ||||
</reference> | ||||
<reference anchor="RFC8825" target="https://www.rfc-editor.org/info/rfc8 | ||||
825" quoteTitle="true" derivedAnchor="RFC8825"> | ||||
<front> | ||||
<title>Overview: Real-Time Protocols for Browser-Based Applications< | ||||
/title> | ||||
<author initials="H." surname="Alvestrand" fullname="Harald T. Alves | ||||
trand"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date month="January" year="2021"/> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8825"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8825"/> | ||||
</reference> | ||||
</references> | ||||
<references pn="section-6.2"> | ||||
<name slugifiedName="name-informative-references">Informative References | ||||
</name> | ||||
<reference anchor="CH09" quoteTitle="true" derivedAnchor="CH09"> | ||||
<front> | ||||
<title>Designing TCP-Friendly Window-based Congestion Control for Re | ||||
al-time Multimedia Applications</title> | ||||
<author fullname="Soo-Hyun Choi" initials="S" surname="Choi"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author fullname="Mark Handley" initials="M" surname="Handley"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date month="May" year="2009"/> | ||||
</front> | ||||
<refcontent>Proceedings of PFLDNeT</refcontent> | ||||
</reference> | ||||
<reference anchor="MPEG_DASH" target="https://www.iso.org/standard/79329 | ||||
.html" quoteTitle="true" derivedAnchor="MPEG_DASH"> | ||||
<front> | ||||
<title>Information Technology -- Dynamic adaptive streaming over HTT | ||||
P (DASH) -- Part 1: Media presentation description and segment formats</title> | ||||
<author> | ||||
<organization showOnFrontPage="true">ISO</organization> | ||||
</author> | ||||
<date month="December" year="2019"/> | ||||
</front> | ||||
<seriesInfo name="ISO/IEC" value="23009-1:2019"/> | ||||
</reference> | ||||
<reference anchor="RFC3168" target="https://www.rfc-editor.org/info/rfc3 | ||||
168" quoteTitle="true" derivedAnchor="RFC3168"> | ||||
<front> | ||||
<title>The Addition of Explicit Congestion Notification (ECN) to IP< | ||||
/title> | ||||
<author initials="K." surname="Ramakrishnan" fullname="K. Ramakrishn | ||||
an"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="S." surname="Floyd" fullname="S. Floyd"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="D." surname="Black" fullname="D. Black"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2001" month="September"/> | ||||
<abstract> | ||||
<t indent="0">This memo specifies the incorporation of ECN (Explic | ||||
it Congestion Notification) to TCP and IP, including ECN's use of two bits in th | ||||
e IP header. [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="3168"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC3168"/> | ||||
</reference> | ||||
<reference anchor="RFC4828" target="https://www.rfc-editor.org/info/rfc4 | ||||
828" quoteTitle="true" derivedAnchor="RFC4828"> | ||||
<front> | ||||
<title>TCP Friendly Rate Control (TFRC): The Small-Packet (SP) Varia | ||||
nt</title> | ||||
<author initials="S." surname="Floyd" fullname="S. Floyd"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="E." surname="Kohler" fullname="E. Kohler"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2007" month="April"/> | ||||
<abstract> | ||||
<t indent="0">This document proposes a mechanism for further exper | ||||
imentation, but not for widespread deployment at this time in the global Interne | ||||
t.</t> | ||||
<t indent="0">TCP-Friendly Rate Control (TFRC) is a congestion con | ||||
trol mechanism for unicast flows operating in a best-effort Internet environment | ||||
(RFC 3448). TFRC was intended for applications that use a fixed packet size, a | ||||
nd was designed to be reasonably fair when competing for bandwidth with TCP conn | ||||
ections using the same packet size. This document proposes TFRC-SP, a Small-Pac | ||||
ket (SP) variant of TFRC, that is designed for applications that send small pack | ||||
ets. The design goal for TFRC-SP is to achieve the same bandwidth in bps (bits | ||||
per second) as a TCP flow using packets of up to 1500 bytes. TFRC-SP enforces a | ||||
minimum interval of 10 ms between data packets to prevent a single flow from se | ||||
nding small packets arbitrarily frequently.</t> | ||||
<t indent="0">Flows using TFRC-SP compete reasonably fairly with l | ||||
arge-packet TCP and TFRC flows in environments where large-packet flows and smal | ||||
l-packet flows experience similar packet drop rates. However, in environments w | ||||
here small-packet flows experience lower packet drop rates than large-packet flo | ||||
ws (e.g., with Drop-Tail queues in units of bytes), TFRC-SP can receive consider | ||||
ably more than its share of the bandwidth. This memo defines an Experimental Pr | ||||
otocol for the Internet community.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="4828"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC4828"/> | ||||
</reference> | ||||
<reference anchor="RFC5348" target="https://www.rfc-editor.org/info/rfc5 | ||||
348" quoteTitle="true" derivedAnchor="RFC5348"> | ||||
<front> | ||||
<title>TCP Friendly Rate Control (TFRC): Protocol Specification</tit | ||||
le> | ||||
<author initials="S." surname="Floyd" fullname="S. Floyd"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="M." surname="Handley" fullname="M. Handley"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="J." surname="Padhye" fullname="J. Padhye"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="J." surname="Widmer" fullname="J. Widmer"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2008" month="September"/> | ||||
<abstract> | ||||
<t indent="0">This document specifies TCP Friendly Rate Control (T | ||||
FRC). TFRC is a congestion control mechanism for unicast flows operating in a b | ||||
est-effort Internet environment. It is reasonably fair when competing for bandw | ||||
idth with TCP flows, but has a much lower variation of throughput over time comp | ||||
ared with TCP, making it more suitable for applications such as streaming media | ||||
where a relatively smooth sending rate is of importance.</t> | ||||
<t indent="0">This document obsoletes RFC 3448 and updates RFC 434 | ||||
2. [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="5348"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC5348"/> | ||||
</reference> | ||||
<reference anchor="RFC5506" target="https://www.rfc-editor.org/info/rfc5 | ||||
506" quoteTitle="true" derivedAnchor="RFC5506"> | ||||
<front> | ||||
<title>Support for Reduced-Size Real-Time Transport Control Protocol | ||||
(RTCP): Opportunities and Consequences</title> | ||||
<author initials="I." surname="Johansson" fullname="I. Johansson"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="M." surname="Westerlund" fullname="M. Westerlund"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2009" month="April"/> | ||||
<abstract> | ||||
<t indent="0">This memo discusses benefits and issues that arise w | ||||
hen allowing Real-time Transport Protocol (RTCP) packets to be transmitted with | ||||
reduced size. The size can be reduced if the rules on how to create compound pa | ||||
ckets outlined in RFC 3550 are removed or changed. Based on that analysis, this | ||||
memo defines certain changes to the rules to allow feedback messages to be sent | ||||
as Reduced-Size RTCP packets under certain conditions when using the RTP/AVPF ( | ||||
Real-time Transport Protocol / Audio-Visual Profile with Feedback) profile (RFC | ||||
4585). This document updates RFC 3550, RFC 3711, and RFC 4585. [STANDARDS-TRACK | ||||
]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="5506"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC5506"/> | ||||
</reference> | ||||
<reference anchor="RFC5865" target="https://www.rfc-editor.org/info/rfc5 | ||||
865" quoteTitle="true" derivedAnchor="RFC5865"> | ||||
<front> | ||||
<title>A Differentiated Services Code Point (DSCP) for Capacity-Admi | ||||
tted Traffic</title> | ||||
<author initials="F." surname="Baker" fullname="F. Baker"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="J." surname="Polk" fullname="J. Polk"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="M." surname="Dolly" fullname="M. Dolly"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2010" month="May"/> | ||||
<abstract> | ||||
<t indent="0">This document requests one Differentiated Services C | ||||
ode Point (DSCP) from the Internet Assigned Numbers Authority (IANA) for a class | ||||
of real-time traffic. This traffic class conforms to the Expedited Forwarding | ||||
Per-Hop Behavior. This traffic is also admitted by the network using a Call Adm | ||||
ission Control (CAC) procedure involving authentication, authorization, and capa | ||||
city admission. This differs from a real-time traffic class that conforms to th | ||||
e Expedited Forwarding Per-Hop Behavior but is not subject to capacity admission | ||||
or subject to very coarse capacity admission. [STANDARDS-TRACK]</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="5865"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC5865"/> | ||||
</reference> | ||||
<reference anchor="RFC7295" target="https://www.rfc-editor.org/info/rfc7 | ||||
295" quoteTitle="true" derivedAnchor="RFC7295"> | ||||
<front> | ||||
<title>Report from the IAB/IRTF Workshop on Congestion Control for I | ||||
nteractive Real-Time Communication</title> | ||||
<author initials="H." surname="Tschofenig" fullname="H. Tschofenig"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="L." surname="Eggert" fullname="L. Eggert"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="Z." surname="Sarker" fullname="Z. Sarker"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2014" month="July"/> | ||||
<abstract> | ||||
<t indent="0">This document provides a summary of the IAB/IRTF Wor | ||||
kshop on 'Congestion Control for Interactive Real-Time Communication', which too | ||||
k place in Vancouver, Canada, on July 28, 2012. The main goal of the workshop w | ||||
as to foster a discussion on congestion control mechanisms for interactive real- | ||||
time communication. This report summarizes the discussions and lists recommenda | ||||
tions to the Internet Engineering Task Force (IETF) community.</t> | ||||
<t indent="0">The views and positions in this report are those of | ||||
the workshop participants and do not necessarily reflect the views and positions | ||||
of the authors, the Internet Architecture Board (IAB), or the Internet Research | ||||
Task Force (IRTF).</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="7295"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC7295"/> | ||||
</reference> | ||||
<reference anchor="RFC8083" target="https://www.rfc-editor.org/info/rfc8 | ||||
083" quoteTitle="true" derivedAnchor="RFC8083"> | ||||
<front> | ||||
<title>Multimedia Congestion Control: Circuit Breakers for Unicast R | ||||
TP Sessions</title> | ||||
<author initials="C." surname="Perkins" fullname="C. Perkins"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="V." surname="Singh" fullname="V. Singh"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date year="2017" month="March"/> | ||||
<abstract> | ||||
<t indent="0">The Real-time Transport Protocol (RTP) is widely use | ||||
d in telephony, video conferencing, and telepresence applications. Such applica | ||||
tions are often run on best-effort UDP/IP networks. If congestion control is no | ||||
t implemented in these applications, then network congestion can lead to uncontr | ||||
olled packet loss and a resulting deterioration of the user's multimedia experie | ||||
nce. The congestion control algorithm acts as a safety measure by stopping RTP | ||||
flows from using excessive resources and protecting the network from overload. | ||||
At the time of this writing, however, while there are several proprietary soluti | ||||
ons, there is no standard algorithm for congestion control of interactive RTP fl | ||||
ows.</t> | ||||
<t indent="0">This document does not propose a congestion control | ||||
algorithm. It instead defines a minimal set of RTP circuit breakers: conditions | ||||
under which an RTP sender needs to stop transmitting media data to protect the | ||||
network from excessive congestion. It is expected that, in the absence of long- | ||||
lived excessive congestion, RTP applications running on best-effort IP networks | ||||
will be able to operate without triggering these circuit breakers. To avoid tri | ||||
ggering the RTP circuit breaker, any Standards Track congestion control algorith | ||||
ms defined for RTP will need to operate within the envelope set by these RTP cir | ||||
cuit breaker algorithms.</t> | ||||
</abstract> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8083"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8083"/> | ||||
</reference> | ||||
<reference anchor="RFC8831" target="https://www.rfc-editor.org/info/rfc8 | ||||
831" quoteTitle="true" derivedAnchor="RFC8831"> | ||||
<front> | ||||
<title>WebRTC Data Channels</title> | ||||
<author initials="R" surname="Jesup" fullname="Randell Jesup"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="S" surname="Loreto" fullname="Salvatore Loreto"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<author initials="M" surname="Tüxen" fullname="Michael Tüxen"> | ||||
<organization showOnFrontPage="true"/> | ||||
</author> | ||||
<date month="January" year="2021"/> | ||||
</front> | ||||
<seriesInfo name="RFC" value="8831"/> | ||||
<seriesInfo name="DOI" value="10.17487/RFC8831"/> | ||||
</reference> | ||||
</references> | ||||
</references> | </references> | |||
<section anchor="Acknowledgements" numbered="false" toc="include" removeInRF | ||||
C="false" pn="section-appendix.a"> | ||||
<name slugifiedName="name-acknowledgements">Acknowledgements</name> | ||||
<t indent="0" pn="section-appendix.a-1">This document is the result of dis | ||||
cussions in various fora of the | ||||
WebRTC effort, in particular on the <rtp-congestion@alvestrand.no> m | ||||
ailing | ||||
list. Many people contributed their thoughts to this.</t> | ||||
</section> | ||||
<section anchor="authors-addresses" numbered="false" removeInRFC="false" toc | ||||
="include" pn="section-appendix.b"> | ||||
<name slugifiedName="name-authors-addresses">Authors' Addresses</name> | ||||
<author fullname="Randell Jesup" initials="R." surname="Jesup"> | ||||
<organization showOnFrontPage="true">Mozilla</organization> | ||||
<address> | ||||
<postal> | ||||
<street/> | ||||
<country>United States of America</country> | ||||
</postal> | ||||
<email>randell-ietf@jesup.org</email> | ||||
</address> | ||||
</author> | ||||
<author fullname="Zaheduzzaman Sarker" initials="Z." role="editor" surname | ||||
="Sarker"> | ||||
<organization showOnFrontPage="true">Ericsson AB</organization> | ||||
<address> | ||||
<postal> | ||||
<street>Torshamnsgatan 23</street> | ||||
<city>Stockholm</city> | ||||
<region/> | ||||
<code>164 83</code> | ||||
<country>Sweden</country> | ||||
</postal> | ||||
<phone>+46 10 717 37 43</phone> | ||||
<email>zaheduzzaman.sarker@ericsson.com</email> | ||||
</address> | ||||
</author> | ||||
</section> | ||||
</back> | </back> | |||
</rfc> | </rfc> | |||
End of changes. 82 change blocks. | ||||
401 lines changed or deleted | 944 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/ |