Network Working Group | F.J. Baker |
Internet-Draft | Cisco Systems |
Updates: 2309 (if approved) | April 11, 2013 |
Intended status: Best Current Practice | |
Expires: October 13, 2013 |
IETF Recommendations Regarding Active Queue Management
draft-baker-tsvwg-aqm-recommendation-00
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.
RFC Editor: this note should be removed on publication.
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.
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."
This Internet-Draft will expire on October 13, 2013.
Copyright (c) 2013 IETF Trust and the persons identified as the document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) 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.
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 TCP [RFC0793] 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.
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.
The question is how best, and where best, to use them.
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 [RFC2119].
The IETF, in discussion, has developed a set of specific recommendations regarding the implementation and operational use of AQM procedures. These include:
This is the recommendation of [RFC2309], 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.
Means of signaling to an endpoint regarding its effect on the network and how it might consider adapting include, at least:
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 [RFC2474] and [RFC2475]. They are used operationally when an operator considers it important to do so.
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.
Explicit Congestion Control, however, communicates information about network congestion that is assuredly about congestion, and avoids the unintended consequences of loss.
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.
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.
AQM algorithms often target TCP [RFC0793], as it is by far the predominant transport in the Internet today. However, we have significant use of UDP [RFC0768] in voice and video services, and find utility in SCTP [RFC4960] and DCCP [RFC4340]. Hence, AQM algorithms that are effective with all of those transports and the applications that use them are to be preferred.
The terms "knee" and "cliff" area defined by [JAIN]. 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 [RFC6057].
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.
This memo asks the IANA for no new parameters.
This document, by itself, presents no new security issues.
This document, by itself, presents no new privacy issues.
[RFC2119] | Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. |
[RFC2309] | Braden, B., Clark, D.D., Crowcroft, J., Davie, B., Deering, S., Estrin, D., Floyd, S., Jacobson, V., Minshall, G., Partridge, C., Peterson, L., Ramakrishnan, K.K., Shenker, S., Wroclawski, J. and L. Zhang, "Recommendations on Queue Management and Congestion Avoidance in the Internet", RFC 2309, April 1998. |
[RFC3168] | Ramakrishnan, K., Floyd, S. and D. Black, "The Addition of Explicit Congestion Notification (ECN) to IP", RFC 3168, September 2001. |
[RFC4301] | Kent, S. and K. Seo, "Security Architecture for the Internet Protocol", RFC 4301, December 2005. |
[RFC4774] | Floyd, S., "Specifying Alternate Semantics for the Explicit Congestion Notification (ECN) Field", BCP 124, RFC 4774, November 2006. |
[RFC6040] | Briscoe, B., "Tunnelling of Explicit Congestion Notification", RFC 6040, November 2010. |