| 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/ | ||||