One document matched: draft-baker-tsvwg-aqm-recommendation-00.xml
<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<!-- Some of the more generally applicable PIs that most I-Ds might want to use -->
<!-- Try to enforce the ID-nits conventions and DTD validity -->
<?rfc strict="yes" ?>
<!-- Items used when reviewing the document -->
<?rfc comments="no" ?>
<!-- Controls display of <cref> elements -->
<?rfc inline="no" ?>
<!-- When no, put comments at end in comments section,
otherwise, put inline -->
<?rfc editing="no" ?>
<!-- When yes, insert editing marks: editing marks consist of a
string such as <29> printed in the blank line at the
beginning of each paragraph of text. -->
<!-- Create Table of Contents (ToC) and set some options for it.
Note the ToC may be omitted for very short documents,but idnits insists on a ToC
if the document has more than 15 pages. -->
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<!-- If "yes" eliminates blank lines before main section entries. -->
<?rfc tocdepth="3"?>
<!-- Sets the number of levels of sections/subsections... in ToC -->
<!-- Choose the options for the references.
Some like symbolic tags in the references (and citations) and others prefer
numbers. The RFC Editor always uses symbolic tags.
The tags used are the anchor attributes of the references. -->
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes" ?>
<!-- If "yes", causes the references to be sorted in order of tags.
This doesn't have any effect unless symrefs is "yes" also. -->
<!-- These two save paper: Just setting compact to "yes" makes savings by not starting each
main section on a new page but does not omit the blank lines between list items.
If subcompact is also "yes" the blank lines between list items are also omitted. -->
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>
<!-- end of list of popular I-D processing instructions -->
<!-- end of list of processing instructions -->
<rfc category="bcp" docName="draft-baker-tsvwg-aqm-recommendation-00"
ipr="trust200902" updates="2309">
<front>
<title abbrev="AQM Recommendations">IETF Recommendations Regarding Active
Queue Management</title>
<author fullname="Fred Baker" initials="F.J." surname="Baker">
<organization>Cisco Systems</organization>
<address>
<postal>
<street></street>
<city>Santa Barbara</city>
<code>93117</code>
<region>California</region>
<country>USA</country>
</postal>
<email>fred@cisco.com</email>
</address>
</author>
<date year="2013" />
<area>Internet Engineering Task Force</area>
<workgroup></workgroup>
<abstract>
<t>Fifteen years after the IAB issued its recommendations regarding
congestion control in RFC 2309, a major issue in the community is the
issue that RFC addresses: Buffer bloat. It may be time to update the
recommendation.</t>
</abstract>
<note title="Note to IESG">
<t>RFC Editor: this note should be removed on publication.</t>
<t>IESG: RFC 2309 is an IAB Recommendation, but is an Informational
document rather than BCP. Since this document targets BCP status, idnits
considers the normative reference to it as a down-reference. In the
opinion of the author, both it and this document should be BCPs. Please
adjust the status of RFC 2309.</t>
</note>
<!--
<texttable anchor="table_example" title="A Very Simple Table">
<preamble>Tables use ttcol to define column headers and widths.
Every cell then has a "c" element for its content.</preamble>
<ttcol align="center">ttcol #1</ttcol>
<ttcol align="center">ttcol #2</ttcol>
<c>c #1</c> <c>c #2</c>
<c>c #3</c> <c>c #4</c>
<c>c #5</c> <c>c #6</c>
<postamble>which is a very simple example.</postamble>
</texttable>
-->
</front>
<middle>
<!--
<t>There are multiple list styles: "symbols", "letters", "numbers",
"hanging", "format", etc.</t>
<t>
<list style="symbols">
<t>First bullet</t>
<t>Second bullet</t>
</list>
</t>
-->
<!--
<figure anchor="reference" title="Figure">
<artwork align="center">
<![CDATA[
ASCII artwork goes here...
]]>
</artwork>
</figure>
-->
<section title="Introduction">
<t>Active Queue Management (AQM) procedures are a class of procedures
that are used to manage queue depth. Every queue in a network is finite,
if for no other reason because even virtual memory is finite. Tail-drop
queue management procedures are widely implemented and well known for
their issues; since common congestion control algorithms used in <xref
target="RFC0793">TCP</xref> attempt to maximize the amount of data the
keep outstanding (to maximize bandwidth usage), the effect of "fill the
queue until it is full and then drop something" is to fill network
queues, maximizing both end to end delay and variation in delay. AQM
procedures have been developed as a means of signaling earlier, enabling
the network to keep its buffers relatively empty and available to store
large bursts of data momentarily in the normal case.</t>
<t>There are a number of AQM procedures in the literature. The
prototypical one is Random Early Detection (RED). Other alternatives
include Blue, Adaptive Virtual Queue (AVQ), Controlling Queue Delay
(Codel), Proportional Integral controller Enhanced (PIE), and no doubt a
variety of others. This document makes no recommendation on those
procedures per se; if an operator or implementor finds one useful, they
should use it. This document does, however, attempt to give guidance on
how such a choice might be made.</t>
<t>The question is how best, and where best, to use them.</t>
<section title="Requirements Language">
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in <xref
target="RFC2119"></xref>.</t>
</section>
</section>
<section anchor="recommendations" title="Specific Recommendations">
<t>The IETF, in discussion, has developed a set of specific
recommendations regarding the implementation and operational use of AQM
procedures. These include:<list style="numbers">
<t>Operational deployments SHOULD use AQM procedures.</t>
<t>Deployed AQM SHOULD use ECN as well as loss, and set thresholds
to mark traffic earlier than it is lost.</t>
<t>AQM algorithms deployed SHOULD NOT require operational
(especially manual) tuning.</t>
<t>AQM algorithms deployed SHOULD be effective on all common
Internet traffic, including traffic that uses TCP, SCTP, UDP, and
DCCP as transports.</t>
<t>TCP and SCTP congestion control algorithms SHOULD maximize their
use of available bandwidth without incurring loss or undue round
trip delay when possible.</t>
</list></t>
<section anchor="useAQM"
title="Operational deployments SHOULD use AQM procedures">
<t>This is the recommendation of <xref target="RFC2309"></xref>, which
is recomended reading. In short, AQM procedures are designed to
minimize delay induced in the network by queues which have filled due
to the behavior of hosts trying to send data to other hosts. Marking
and loss behaviors signal to the senders of data that network buffers
are becoming unnecessarily full, and they would do well to moderate
their behavior.</t>
</section>
<section anchor="signaling"
title="Signaling to the endpoints of a session">
<t>Means of signaling to an endpoint regarding its effect on the
network and how it might consider adapting include, at least: <list
style="symbols">
<t>Delaying data segments in flight, such as in a queue, which
affects Ack Clocking and as a result the transmission of new
data.</t>
<t>Marking traffic, such as using Explicit Congestion Control<xref
target="RFC3168"></xref> <xref target="RFC4301"></xref> <xref
target="RFC4774"></xref> <xref target="RFC6040"></xref></t>
<t>Dropping traffic in transit.</t>
</list></t>
<t>The use of advanced scheduling mechanisms, such as priority
queuing, classful queuing, and fair queuing, is often effective in
networks to help a network to serve the needs of an application. It
can be used to manage traffic passing a choke point. This is discussed
in <xref target="RFC2474"></xref> and <xref target="RFC2475"></xref>.
They are used operationally when an operator considers it important to
do so.</t>
<t>Loss has two effects. It protects the network, which is the primary
reason the network imposes it. Its use as a signal to TCP or SCTP is a
pragmatic heuristic; "when the network discards a message in flight,
it may imply the presence of faulty equipment or media in a path, and
it may imply the presence of congestion. Presume the latter." However,
it also has an effect on the efficiency of the data flow. The data in
question must be retransmitted, or its absence must otherwise be
adapted to by the application in question, which implies at least
inefficient use of available bandwidth and may affect other data
flows. Hence, loss is not entirely positive; it is a necessary
evil.</t>
<t>Explicit Congestion Control, however, communicates information
about network congestion that is assuredly about congestion, and
avoids the unintended consequences of loss.</t>
<t>Hence, network communication to the host regarding the moderation
of its traffic flow SHOULD include both ECN and loss, with ECN being
triggered earlier than loss. In this way, congestion control can be
achieved in the general case without loss, and loss remains the backup
when needed.</t>
</section>
<section anchor="autotuning"
title="AQM algorithms deployed SHOULD NOT require operational tuning">
<t>A number of algorithms have been proposed. Many require some form
of tuning or initial condition, which makes them difficult to use
operationally. Hence, self-tuning algorithms are to be preferred.</t>
</section>
<section anchor="alltraffic"
title="AQM algorithms deployed SHOULD be effective on all common Internet traffic">
<t>AQM algorithms often target <xref target="RFC0793">TCP</xref>, as
it is by far the predominant transport in the Internet today. However,
we have significant use of <xref target="RFC0768">UDP</xref> in voice
and video services, and find utility in <xref
target="RFC4960">SCTP</xref> and <xref target="RFC4340"> DCCP </xref>.
Hence, AQM algorithms that are effective with all of those transports
and the applications that use them are to be preferred.</t>
</section>
<section anchor="tcpcc"
title="TCP and SCTP congestion control algorithms SHOULD maximize their use of available bandwidth without incurring loss or undue round trip delay">
<t>The terms "knee" and "cliff" area defined by <xref
target="JAIN"></xref>. They respectively refer to the minimum and
maximum values of the effective window that have the effect of
maximizing transmission rate in a congestion control algorithm such as
is used by TCP or SCTP. For the sender of data, exceeding the cliff is
ineffective, as it (by definition) induces loss; operating at a point
close to the cliff has a negative impact on other traffic and
applications, triggering operator activities such as discussed in
<xref target="RFC6057"></xref>.</t>
<t>Operating below the knee is also ineffective, as it fails to use
available network capacity. If the objective is to deliver data from
its source to its recipient in the least possible time, as a result,
the behavior of any TCP/SCTP congestion control algorithm SHOULD be to
seek and use effective window values at or above the knee and well
below the cliff.</t>
</section>
</section>
<section anchor="IANA" title="IANA Considerations">
<t>This memo asks the IANA for no new parameters.</t>
</section>
<section anchor="Security" title="Security Considerations">
<t>This document, by itself, presents no new security issues.</t>
<section anchor="Privacy" title="Privacy Considerations">
<t>This document, by itself, presents no new privacy issues.</t>
</section>
</section>
<section anchor="Acknowledgements" title="Acknowledgements">
<t></t>
</section>
<section anchor="log" title="Change Log">
<t><list style="hanging">
<t hangText="Initial Version:">March 2013</t>
</list></t>
</section>
</middle>
<back>
<!-- references split to informative and normative -->
<references title="Normative References">
<?rfc include="reference.RFC.2119"?>
<?rfc include="reference.RFC.2309"?>
<?rfc include="reference.RFC.3168" ?>
<?rfc include="reference.RFC.4301" ?>
<?rfc include="reference.RFC.4774" ?>
<?rfc include="reference.RFC.6040" ?>
</references>
<references title="Informative References">
<?rfc include="reference.RFC.0768" ?>
<?rfc include="reference.RFC.0793" ?>
<?rfc include="reference.RFC.2474" ?>
<?rfc include="reference.RFC.2475" ?>
<?rfc include="reference.RFC.4340" ?>
<?rfc include="reference.RFC.4960" ?>
<?rfc include="reference.RFC.6057" ?>
<reference anchor="JAIN">
<front>
<title>Congestion avoidance scheme for computer networks</title>
<author fullname="Rajendra K. Jain" initials="Raj" surname="Jain">
<organization>Digital Equipment Corporation</organization>
</author>
<author fullname="KK Ramakrishnan" initials="KK"
surname="Ramakrishnan">
<organization>Digital Equipment Corporation</organization>
</author>
<author fullname="Chiu Dah-Ming" initials="Chiu" surname="Dah-Ming">
<organization>Digital Equipment Corporation</organization>
</author>
<date day="27" month="December" year="1994" />
</front>
<seriesInfo name="US Patent Office" value="5377327" />
</reference>
</references>
</back>
</rfc>
| PAFTECH AB 2003-2026 | 2026-04-24 01:38:36 |