summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc8312.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc8312.txt')
-rw-r--r--doc/rfc/rfc8312.txt1011
1 files changed, 1011 insertions, 0 deletions
diff --git a/doc/rfc/rfc8312.txt b/doc/rfc/rfc8312.txt
new file mode 100644
index 0000000..a0f92a4
--- /dev/null
+++ b/doc/rfc/rfc8312.txt
@@ -0,0 +1,1011 @@
+
+
+
+
+
+
+Internet Engineering Task Force (IETF) I. Rhee
+Request for Comments: 8312 NCSU
+Category: Informational L. Xu
+ISSN: 2070-1721 UNL
+ S. Ha
+ Colorado
+ A. Zimmermann
+
+ L. Eggert
+ R. Scheffenegger
+ NetApp
+ February 2018
+
+
+ CUBIC for Fast Long-Distance Networks
+
+Abstract
+
+ CUBIC is an extension to the current TCP standards. It differs from
+ the current TCP standards only in the congestion control algorithm on
+ the sender side. In particular, it uses a cubic function instead of
+ a linear window increase function of the current TCP standards to
+ improve scalability and stability under fast and long-distance
+ networks. CUBIC and its predecessor algorithm have been adopted as
+ defaults by Linux and have been used for many years. This document
+ provides a specification of CUBIC to enable third-party
+ implementations and to solicit community feedback through
+ experimentation on the performance of CUBIC.
+
+Status of This Memo
+
+ This document is not an Internet Standards Track specification; it is
+ published for informational purposes.
+
+ 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 a candidate for any level of Internet
+ Standard; see Section 2 of RFC 7841.
+
+ Information about the current status of this document, any errata,
+ and how to provide feedback on it may be obtained at
+ https://www.rfc-editor.org/info/rfc8312.
+
+
+
+
+
+
+
+Rhee, et al. Informational [Page 1]
+
+RFC 8312 CUBIC February 2018
+
+
+Copyright Notice
+
+ Copyright (c) 2018 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
+ (https://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.
+
+Table of Contents
+
+ 1. Introduction ....................................................3
+ 2. Conventions .....................................................3
+ 3. Design Principles of CUBIC ......................................4
+ 4. CUBIC Congestion Control ........................................6
+ 4.1. Window Increase Function ...................................6
+ 4.2. TCP-Friendly Region ........................................7
+ 4.3. Concave Region .............................................8
+ 4.4. Convex Region ..............................................8
+ 4.5. Multiplicative Decrease ....................................8
+ 4.6. Fast Convergence ...........................................9
+ 4.7. Timeout ...................................................10
+ 4.8. Slow Start ................................................10
+ 5. Discussion .....................................................10
+ 5.1. Fairness to Standard TCP ..................................11
+ 5.2. Using Spare Capacity ......................................13
+ 5.3. Difficult Environments ....................................13
+ 5.4. Investigating a Range of Environments .....................13
+ 5.5. Protection against Congestion Collapse ....................14
+ 5.6. Fairness within the Alternative Congestion Control
+ Algorithm .................................................14
+ 5.7. Performance with Misbehaving Nodes and Outside Attackers ..14
+ 5.8. Behavior for Application-Limited Flows ....................14
+ 5.9. Responses to Sudden or Transient Events ...................14
+ 5.10. Incremental Deployment ...................................14
+ 6. Security Considerations ........................................15
+ 7. IANA Considerations ............................................15
+ 8. References .....................................................15
+ 8.1. Normative References ......................................15
+ 8.2. Informative References ....................................16
+ Acknowledgements ..................................................17
+ Authors' Addresses ................................................18
+
+
+
+Rhee, et al. Informational [Page 2]
+
+RFC 8312 CUBIC February 2018
+
+
+1. Introduction
+
+ The low utilization problem of TCP in fast long-distance networks is
+ well documented in [K03] and [RFC3649]. This problem arises from a
+ slow increase of the congestion window following a congestion event
+ in a network with a large bandwidth-delay product (BDP). [HKLRX06]
+ indicates that this problem is frequently observed even in the range
+ of congestion window sizes over several hundreds of packets. This
+ problem is equally applicable to all Reno-style TCP standards and
+ their variants, including TCP-RENO [RFC5681], TCP-NewReno [RFC6582]
+ [RFC6675], SCTP [RFC4960], and TFRC [RFC5348], which use the same
+ linear increase function for window growth, which we refer to
+ collectively as "Standard TCP" below.
+
+ CUBIC, originally proposed in [HRX08], is a modification to the
+ congestion control algorithm of Standard TCP to remedy this problem.
+ This document describes the most recent specification of CUBIC.
+ Specifically, CUBIC uses a cubic function instead of a linear window
+ increase function of Standard TCP to improve scalability and
+ stability under fast and long-distance networks.
+
+ Binary Increase Congestion Control (BIC-TCP) [XHR04], a predecessor
+ of CUBIC, was selected as the default TCP congestion control
+ algorithm by Linux in the year 2005 and has been used for several
+ years by the Internet community at large. CUBIC uses a similar
+ window increase function as BIC-TCP and is designed to be less
+ aggressive and fairer to Standard TCP in bandwidth usage than BIC-TCP
+ while maintaining the strengths of BIC-TCP such as stability, window
+ scalability, and RTT fairness. CUBIC has already replaced BIC-TCP as
+ the default TCP congestion control algorithm in Linux and has been
+ deployed globally by Linux. Through extensive testing in various
+ Internet scenarios, we believe that CUBIC is safe for testing and
+ deployment in the global Internet.
+
+ In the following sections, we first briefly explain the design
+ principles of CUBIC, then provide the exact specification of CUBIC,
+ and finally discuss the safety features of CUBIC following the
+ guidelines specified in [RFC5033].
+
+2. Conventions
+
+ The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
+ "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
+ "OPTIONAL" in this document are to be interpreted as described in
+ BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
+ capitals, as shown here.
+
+
+
+
+
+Rhee, et al. Informational [Page 3]
+
+RFC 8312 CUBIC February 2018
+
+
+3. Design Principles of CUBIC
+
+ CUBIC is designed according to the following design principles:
+
+ Principle 1: For better network utilization and stability, CUBIC
+ uses both the concave and convex profiles of a cubic function to
+ increase the congestion window size, instead of using just a
+ convex function.
+
+ Principle 2: To be TCP-friendly, CUBIC is designed to behave like
+ Standard TCP in networks with short RTTs and small bandwidth where
+ Standard TCP performs well.
+
+ Principle 3: For RTT-fairness, CUBIC is designed to achieve linear
+ bandwidth sharing among flows with different RTTs.
+
+ Principle 4: CUBIC appropriately sets its multiplicative window
+ decrease factor in order to balance between the scalability and
+ convergence speed.
+
+ Principle 1: For better network utilization and stability, CUBIC
+ [HRX08] uses a cubic window increase function in terms of the elapsed
+ time from the last congestion event. While most alternative
+ congestion control algorithms to Standard TCP increase the congestion
+ window using convex functions, CUBIC uses both the concave and convex
+ profiles of a cubic function for window growth. After a window
+ reduction in response to a congestion event is detected by duplicate
+ ACKs or Explicit Congestion Notification-Echo (ECN-Echo) ACKs
+ [RFC3168], CUBIC registers the congestion window size where it got
+ the congestion event as W_max and performs a multiplicative decrease
+ of congestion window. After it enters into congestion avoidance, it
+ starts to increase the congestion window using the concave profile of
+ the cubic function. The cubic function is set to have its plateau at
+ W_max so that the concave window increase continues until the window
+ size becomes W_max. After that, the cubic function turns into a
+ convex profile and the convex window increase begins. This style of
+ window adjustment (concave and then convex) improves the algorithm
+ stability while maintaining high network utilization [CEHRX07]. This
+ is because the window size remains almost constant, forming a plateau
+ around W_max where network utilization is deemed highest. Under
+ steady state, most window size samples of CUBIC are close to W_max,
+ thus promoting high network utilization and stability. Note that
+ those congestion control algorithms using only convex functions to
+ increase the congestion window size have the maximum increments
+ around W_max, and thus introduce a large number of packet bursts
+ around the saturation point of the network, likely causing frequent
+ global loss synchronizations.
+
+
+
+
+Rhee, et al. Informational [Page 4]
+
+RFC 8312 CUBIC February 2018
+
+
+ Principle 2: CUBIC promotes per-flow fairness to Standard TCP. Note
+ that Standard TCP performs well under short RTT and small bandwidth
+ (or small BDP) networks. There is only a scalability problem in
+ networks with long RTTs and large bandwidth (or large BDP). An
+ alternative congestion control algorithm to Standard TCP designed to
+ be friendly to Standard TCP on a per-flow basis must operate to
+ increase its congestion window less aggressively in small BDP
+ networks than in large BDP networks. The aggressiveness of CUBIC
+ mainly depends on the maximum window size before a window reduction,
+ which is smaller in small BDP networks than in large BDP networks.
+ Thus, CUBIC increases its congestion window less aggressively in
+ small BDP networks than in large BDP networks. Furthermore, in cases
+ when the cubic function of CUBIC increases its congestion window less
+ aggressively than Standard TCP, CUBIC simply follows the window size
+ of Standard TCP to ensure that CUBIC achieves at least the same
+ throughput as Standard TCP in small BDP networks. We call this
+ region where CUBIC behaves like Standard TCP, the "TCP-friendly
+ region".
+
+ Principle 3: Two CUBIC flows with different RTTs have their
+ throughput ratio linearly proportional to the inverse of their RTT
+ ratio, where the throughput of a flow is approximately the size of
+ its congestion window divided by its RTT. Specifically, CUBIC
+ maintains a window increase rate independent of RTTs outside of the
+ TCP-friendly region, and thus flows with different RTTs have similar
+ congestion window sizes under steady state when they operate outside
+ the TCP-friendly region. This notion of a linear throughput ratio is
+ similar to that of Standard TCP under high statistical multiplexing
+ environments where packet losses are independent of individual flow
+ rates. However, under low statistical multiplexing environments, the
+ throughput ratio of Standard TCP flows with different RTTs is
+ quadratically proportional to the inverse of their RTT ratio [XHR04].
+ CUBIC always ensures the linear throughput ratio independent of the
+ levels of statistical multiplexing. This is an improvement over
+ Standard TCP. While there is no consensus on particular throughput
+ ratios of different RTT flows, we believe that under wired Internet,
+ use of a linear throughput ratio seems more reasonable than equal
+ throughputs (i.e., the same throughput for flows with different RTTs)
+ or a higher-order throughput ratio (e.g., a quadratical throughput
+ ratio of Standard TCP under low statistical multiplexing
+ environments).
+
+ Principle 4: To balance between the scalability and convergence
+ speed, CUBIC sets the multiplicative window decrease factor to 0.7
+ while Standard TCP uses 0.5. While this improves the scalability of
+ CUBIC, a side effect of this decision is slower convergence,
+ especially under low statistical multiplexing environments. This
+ design choice is following the observation that the author of
+
+
+
+Rhee, et al. Informational [Page 5]
+
+RFC 8312 CUBIC February 2018
+
+
+ HighSpeed TCP (HSTCP) [RFC3649] has made along with other researchers
+ (e.g., [GV02]): the current Internet becomes more asynchronous with
+ less frequent loss synchronizations with high statistical
+ multiplexing. Under this environment, even strict Multiplicative-
+ Increase Multiplicative-Decrease (MIMD) can converge. CUBIC flows
+ with the same RTT always converge to the same throughput independent
+ of statistical multiplexing, thus achieving intra-algorithm fairness.
+ We also find that under the environments with sufficient statistical
+ multiplexing, the convergence speed of CUBIC flows is reasonable.
+
+4. CUBIC Congestion Control
+
+ The unit of all window sizes in this document is segments of the
+ maximum segment size (MSS), and the unit of all times is seconds.
+ Let cwnd denote the congestion window size of a flow, and ssthresh
+ denote the slow-start threshold.
+
+4.1. Window Increase Function
+
+ CUBIC maintains the acknowledgment (ACK) clocking of Standard TCP by
+ increasing the congestion window only at the reception of an ACK. It
+ does not make any change to the fast recovery and retransmit of TCP,
+ such as TCP-NewReno [RFC6582] [RFC6675]. During congestion avoidance
+ after a congestion event where a packet loss is detected by duplicate
+ ACKs or a network congestion is detected by ACKs with ECN-Echo flags
+ [RFC3168], CUBIC changes the window increase function of Standard
+ TCP. Suppose that W_max is the window size just before the window is
+ reduced in the last congestion event.
+
+ CUBIC uses the following window increase function:
+
+ W_cubic(t) = C*(t-K)^3 + W_max (Eq. 1)
+
+ where C is a constant fixed to determine the aggressiveness of window
+ increase in high BDP networks, t is the elapsed time from the
+ beginning of the current congestion avoidance, and K is the time
+ period that the above function takes to increase the current window
+ size to W_max if there are no further congestion events and is
+ calculated using the following equation:
+
+ K = cubic_root(W_max*(1-beta_cubic)/C) (Eq. 2)
+
+ where beta_cubic is the CUBIC multiplication decrease factor, that
+ is, when a congestion event is detected, CUBIC reduces its cwnd to
+ W_cubic(0)=W_max*beta_cubic. We discuss how we set beta_cubic in
+ Section 4.5 and how we set C in Section 5.
+
+
+
+
+
+Rhee, et al. Informational [Page 6]
+
+RFC 8312 CUBIC February 2018
+
+
+ Upon receiving an ACK during congestion avoidance, CUBIC computes the
+ window increase rate during the next RTT period using Eq. 1. It sets
+ W_cubic(t+RTT) as the candidate target value of the congestion
+ window, where RTT is the weighted average RTT calculated by Standard
+ TCP.
+
+ Depending on the value of the current congestion window size cwnd,
+ CUBIC runs in three different modes.
+
+ 1. The TCP-friendly region, which ensures that CUBIC achieves at
+ least the same throughput as Standard TCP.
+
+ 2. The concave region, if CUBIC is not in the TCP-friendly region
+ and cwnd is less than W_max.
+
+ 3. The convex region, if CUBIC is not in the TCP-friendly region and
+ cwnd is greater than W_max.
+
+ Below, we describe the exact actions taken by CUBIC in each region.
+
+4.2. TCP-Friendly Region
+
+ Standard TCP performs well in certain types of networks, for example,
+ under short RTT and small bandwidth (or small BDP) networks. In
+ these networks, we use the TCP-friendly region to ensure that CUBIC
+ achieves at least the same throughput as Standard TCP.
+
+ The TCP-friendly region is designed according to the analysis
+ described in [FHP00]. The analysis studies the performance of an
+ Additive Increase and Multiplicative Decrease (AIMD) algorithm with
+ an additive factor of alpha_aimd (segments per RTT) and a
+ multiplicative factor of beta_aimd, denoted by AIMD(alpha_aimd,
+ beta_aimd). Specifically, the average congestion window size of
+ AIMD(alpha_aimd, beta_aimd) can be calculated using Eq. 3. The
+ analysis shows that AIMD(alpha_aimd, beta_aimd) with
+ alpha_aimd=3*(1-beta_aimd)/(1+beta_aimd) achieves the same average
+ window size as Standard TCP that uses AIMD(1, 0.5).
+
+ AVG_W_aimd = [ alpha_aimd * (1+beta_aimd) /
+ (2*(1-beta_aimd)*p) ]^0.5 (Eq. 3)
+
+ Based on the above analysis, CUBIC uses Eq. 4 to estimate the window
+ size W_est of AIMD(alpha_aimd, beta_aimd) with
+ alpha_aimd=3*(1-beta_cubic)/(1+beta_cubic) and beta_aimd=beta_cubic,
+ which achieves the same average window size as Standard TCP. When
+ receiving an ACK in congestion avoidance (cwnd could be greater than
+
+
+
+
+
+Rhee, et al. Informational [Page 7]
+
+RFC 8312 CUBIC February 2018
+
+
+ or less than W_max), CUBIC checks whether W_cubic(t) is less than
+ W_est(t). If so, CUBIC is in the TCP-friendly region and cwnd SHOULD
+ be set to W_est(t) at each reception of an ACK.
+
+ W_est(t) = W_max*beta_cubic +
+ [3*(1-beta_cubic)/(1+beta_cubic)] * (t/RTT) (Eq. 4)
+
+4.3. Concave Region
+
+ When receiving an ACK in congestion avoidance, if CUBIC is not in the
+ TCP-friendly region and cwnd is less than W_max, then CUBIC is in the
+ concave region. In this region, cwnd MUST be incremented by
+ (W_cubic(t+RTT) - cwnd)/cwnd for each received ACK, where
+ W_cubic(t+RTT) is calculated using Eq. 1.
+
+4.4. Convex Region
+
+ When receiving an ACK in congestion avoidance, if CUBIC is not in the
+ TCP-friendly region and cwnd is larger than or equal to W_max, then
+ CUBIC is in the convex region. The convex region indicates that the
+ network conditions might have been perturbed since the last
+ congestion event, possibly implying more available bandwidth after
+ some flow departures. Since the Internet is highly asynchronous,
+ some amount of perturbation is always possible without causing a
+ major change in available bandwidth. In this region, CUBIC is being
+ very careful by very slowly increasing its window size. The convex
+ profile ensures that the window increases very slowly at the
+ beginning and gradually increases its increase rate. We also call
+ this region the "maximum probing phase" since CUBIC is searching for
+ a new W_max. In this region, cwnd MUST be incremented by
+ (W_cubic(t+RTT) - cwnd)/cwnd for each received ACK, where
+ W_cubic(t+RTT) is calculated using Eq. 1.
+
+4.5. Multiplicative Decrease
+
+ When a packet loss is detected by duplicate ACKs or a network
+ congestion is detected by ECN-Echo ACKs, CUBIC updates its W_max,
+ cwnd, and ssthresh as follows. Parameter beta_cubic SHOULD be set to
+ 0.7.
+
+ W_max = cwnd; // save window size before reduction
+ ssthresh = cwnd * beta_cubic; // new slow-start threshold
+ ssthresh = max(ssthresh, 2); // threshold is at least 2 MSS
+ cwnd = cwnd * beta_cubic; // window reduction
+
+
+
+
+
+
+
+Rhee, et al. Informational [Page 8]
+
+RFC 8312 CUBIC February 2018
+
+
+ A side effect of setting beta_cubic to a value bigger than 0.5 is
+ slower convergence. We believe that while a more adaptive setting of
+ beta_cubic could result in faster convergence, it will make the
+ analysis of CUBIC much harder. This adaptive adjustment of
+ beta_cubic is an item for the next version of CUBIC.
+
+4.6. Fast Convergence
+
+ To improve the convergence speed of CUBIC, we add a heuristic in
+ CUBIC. When a new flow joins the network, existing flows in the
+ network need to give up some of their bandwidth to allow the new flow
+ some room for growth if the existing flows have been using all the
+ bandwidth of the network. To speed up this bandwidth release by
+ existing flows, the following mechanism called "fast convergence"
+ SHOULD be implemented.
+
+ With fast convergence, when a congestion event occurs, before the
+ window reduction of the congestion window, a flow remembers the last
+ value of W_max before it updates W_max for the current congestion
+ event. Let us call the last value of W_max to be W_last_max.
+
+ if (W_max < W_last_max){ // should we make room for others
+ W_last_max = W_max; // remember the last W_max
+ W_max = W_max*(1.0+beta_cubic)/2.0; // further reduce W_max
+ } else {
+ W_last_max = W_max // remember the last W_max
+ }
+
+ At a congestion event, if the current value of W_max is less than
+ W_last_max, this indicates that the saturation point experienced by
+ this flow is getting reduced because of the change in available
+ bandwidth. Then we allow this flow to release more bandwidth by
+ reducing W_max further. This action effectively lengthens the time
+ for this flow to increase its congestion window because the reduced
+ W_max forces the flow to have the plateau earlier. This allows more
+ time for the new flow to catch up to its congestion window size.
+
+ The fast convergence is designed for network environments with
+ multiple CUBIC flows. In network environments with only a single
+ CUBIC flow and without any other traffic, the fast convergence SHOULD
+ be disabled.
+
+
+
+
+
+
+
+
+
+
+Rhee, et al. Informational [Page 9]
+
+RFC 8312 CUBIC February 2018
+
+
+4.7. Timeout
+
+ In case of timeout, CUBIC follows Standard TCP to reduce cwnd
+ [RFC5681], but sets ssthresh using beta_cubic (same as in
+ Section 4.5) that is different from Standard TCP [RFC5681].
+
+ During the first congestion avoidance after a timeout, CUBIC
+ increases its congestion window size using Eq. 1, where t is the
+ elapsed time since the beginning of the current congestion avoidance,
+ K is set to 0, and W_max is set to the congestion window size at the
+ beginning of the current congestion avoidance.
+
+4.8. Slow Start
+
+ CUBIC MUST employ a slow-start algorithm, when the cwnd is no more
+ than ssthresh. Among the slow-start algorithms, CUBIC MAY choose the
+ standard TCP slow start [RFC5681] in general networks, or the limited
+ slow start [RFC3742] or hybrid slow start [HR08] for fast and long-
+ distance networks.
+
+ In the case when CUBIC runs the hybrid slow start [HR08], it may exit
+ the first slow start without incurring any packet loss and thus W_max
+ is undefined. In this special case, CUBIC switches to congestion
+ avoidance and increases its congestion window size using Eq. 1, where
+ t is the elapsed time since the beginning of the current congestion
+ avoidance, K is set to 0, and W_max is set to the congestion window
+ size at the beginning of the current congestion avoidance.
+
+5. Discussion
+
+ In this section, we further discuss the safety features of CUBIC
+ following the guidelines specified in [RFC5033].
+
+ With a deterministic loss model where the number of packets between
+ two successive packet losses is always 1/p, CUBIC always operates
+ with the concave window profile, which greatly simplifies the
+ performance analysis of CUBIC. The average window size of CUBIC can
+ be obtained by the following function:
+
+ AVG_W_cubic = [C*(3+beta_cubic)/(4*(1-beta_cubic))]^0.25 *
+ (RTT^0.75) / (p^0.75) (Eq. 5)
+
+ With beta_cubic set to 0.7, the above formula is reduced to:
+
+ AVG_W_cubic = (C*3.7/1.2)^0.25 * (RTT^0.75) / (p^0.75) (Eq. 6)
+
+ We will determine the value of C in the following subsection using
+ Eq. 6.
+
+
+
+Rhee, et al. Informational [Page 10]
+
+RFC 8312 CUBIC February 2018
+
+
+5.1. Fairness to Standard TCP
+
+ In environments where Standard TCP is able to make reasonable use of
+ the available bandwidth, CUBIC does not significantly change this
+ state.
+
+ Standard TCP performs well in the following two types of networks:
+
+ 1. networks with a small bandwidth-delay product (BDP)
+
+ 2. networks with a short RTTs, but not necessarily a small BDP
+
+ CUBIC is designed to behave very similarly to Standard TCP in the
+ above two types of networks. The following two tables show the
+ average window sizes of Standard TCP, HSTCP, and CUBIC. The average
+ window sizes of Standard TCP and HSTCP are from [RFC3649]. The
+ average window size of CUBIC is calculated using Eq. 6 and the CUBIC
+ TCP-friendly region for three different values of C.
+
+ +--------+----------+-----------+------------+-----------+----------+
+ | Loss | Average | Average | CUBIC | CUBIC | CUBIC |
+ | Rate P | TCP W | HSTCP W | (C=0.04) | (C=0.4) | (C=4) |
+ +--------+----------+-----------+------------+-----------+----------+
+ | 10^-2 | 12 | 12 | 12 | 12 | 12 |
+ | 10^-3 | 38 | 38 | 38 | 38 | 59 |
+ | 10^-4 | 120 | 263 | 120 | 187 | 333 |
+ | 10^-5 | 379 | 1795 | 593 | 1054 | 1874 |
+ | 10^-6 | 1200 | 12279 | 3332 | 5926 | 10538 |
+ | 10^-7 | 3795 | 83981 | 18740 | 33325 | 59261 |
+ | 10^-8 | 12000 | 574356 | 105383 | 187400 | 333250 |
+ +--------+----------+-----------+------------+-----------+----------+
+
+ Table 1
+
+ Table 1 describes the response function of Standard TCP, HSTCP, and
+ CUBIC in networks with RTT = 0.1 seconds. The average window size is
+ in MSS-sized segments.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Rhee, et al. Informational [Page 11]
+
+RFC 8312 CUBIC February 2018
+
+
+ +--------+-----------+-----------+------------+-----------+---------+
+ | Loss | Average | Average | CUBIC | CUBIC | CUBIC |
+ | Rate P | TCP W | HSTCP W | (C=0.04) | (C=0.4) | (C=4) |
+ +--------+-----------+-----------+------------+-----------+---------+
+ | 10^-2 | 12 | 12 | 12 | 12 | 12 |
+ | 10^-3 | 38 | 38 | 38 | 38 | 38 |
+ | 10^-4 | 120 | 263 | 120 | 120 | 120 |
+ | 10^-5 | 379 | 1795 | 379 | 379 | 379 |
+ | 10^-6 | 1200 | 12279 | 1200 | 1200 | 1874 |
+ | 10^-7 | 3795 | 83981 | 3795 | 5926 | 10538 |
+ | 10^-8 | 12000 | 574356 | 18740 | 33325 | 59261 |
+ +--------+-----------+-----------+------------+-----------+---------+
+
+ Table 2
+
+ Table 2 describes the response function of Standard TCP, HSTCP, and
+ CUBIC in networks with RTT = 0.01 seconds. The average window size
+ is in MSS-sized segments.
+
+ Both tables show that CUBIC with any of these three C values is more
+ friendly to TCP than HSTCP, especially in networks with a short RTT
+ where TCP performs reasonably well. For example, in a network with
+ RTT = 0.01 seconds and p=10^-6, TCP has an average window of 1200
+ packets. If the packet size is 1500 bytes, then TCP can achieve an
+ average rate of 1.44 Gbps. In this case, CUBIC with C=0.04 or C=0.4
+ achieves exactly the same rate as Standard TCP, whereas HSTCP is
+ about ten times more aggressive than Standard TCP.
+
+ We can see that C determines the aggressiveness of CUBIC in competing
+ with other congestion control algorithms for bandwidth. CUBIC is
+ more friendly to Standard TCP, if the value of C is lower. However,
+ we do not recommend setting C to a very low value like 0.04, since
+ CUBIC with a low C cannot efficiently use the bandwidth in long RTT
+ and high-bandwidth networks. Based on these observations and our
+ experiments, we find C=0.4 gives a good balance between TCP-
+ friendliness and aggressiveness of window increase. Therefore, C
+ SHOULD be set to 0.4. With C set to 0.4, Eq. 6 is reduced to:
+
+ AVG_W_cubic = 1.054 * (RTT^0.75) / (p^0.75) (Eq. 7)
+
+ Eq. 7 is then used in the next subsection to show the scalability of
+ CUBIC.
+
+
+
+
+
+
+
+
+
+Rhee, et al. Informational [Page 12]
+
+RFC 8312 CUBIC February 2018
+
+
+5.2. Using Spare Capacity
+
+ CUBIC uses a more aggressive window increase function than Standard
+ TCP under long RTT and high-bandwidth networks.
+
+ The following table shows that to achieve the 10 Gbps rate, Standard
+ TCP requires a packet loss rate of 2.0e-10, while CUBIC requires a
+ packet loss rate of 2.9e-8.
+
+ +------------------+-----------+---------+---------+---------+
+ | Throughput(Mbps) | Average W | TCP P | HSTCP P | CUBIC P |
+ +------------------+-----------+---------+---------+---------+
+ | 1 | 8.3 | 2.0e-2 | 2.0e-2 | 2.0e-2 |
+ | 10 | 83.3 | 2.0e-4 | 3.9e-4 | 2.9e-4 |
+ | 100 | 833.3 | 2.0e-6 | 2.5e-5 | 1.4e-5 |
+ | 1000 | 8333.3 | 2.0e-8 | 1.5e-6 | 6.3e-7 |
+ | 10000 | 83333.3 | 2.0e-10 | 1.0e-7 | 2.9e-8 |
+ +------------------+-----------+---------+---------+---------+
+
+ Table 3
+
+ Table 3 describes the required packet loss rate for Standard TCP,
+ HSTCP, and CUBIC to achieve a certain throughput. We use 1500-byte
+ packets and an RTT of 0.1 seconds.
+
+ Our test results in [HKLRX06] indicate that CUBIC uses the spare
+ bandwidth left unused by existing Standard TCP flows in the same
+ bottleneck link without taking away much bandwidth from the existing
+ flows.
+
+5.3. Difficult Environments
+
+ CUBIC is designed to remedy the poor performance of TCP in fast and
+ long-distance networks.
+
+5.4. Investigating a Range of Environments
+
+ CUBIC has been extensively studied by using both NS-2 simulation and
+ test-bed experiments covering a wide range of network environments.
+ More information can be found in [HKLRX06].
+
+ Same as Standard TCP, CUBIC is a loss-based congestion control
+ algorithm. Because CUBIC is designed to be more aggressive (due to a
+ faster window increase function and bigger multiplicative decrease
+ factor) than Standard TCP in fast and long-distance networks, it can
+ fill large drop-tail buffers more quickly than Standard TCP and
+
+
+
+
+
+Rhee, et al. Informational [Page 13]
+
+RFC 8312 CUBIC February 2018
+
+
+ increase the risk of a standing queue [KWAF17]. In this case, proper
+ queue sizing and management [RFC7567] could be used to reduce the
+ packet queuing delay.
+
+5.5. Protection against Congestion Collapse
+
+ With regard to the potential of causing congestion collapse, CUBIC
+ behaves like Standard TCP since CUBIC modifies only the window
+ adjustment algorithm of TCP. Thus, it does not modify the ACK
+ clocking and Timeout behaviors of Standard TCP.
+
+5.6. Fairness within the Alternative Congestion Control Algorithm
+
+ CUBIC ensures convergence of competing CUBIC flows with the same RTT
+ in the same bottleneck links to an equal throughput. When competing
+ flows have different RTTs, their throughput ratio is linearly
+ proportional to the inverse of their RTT ratios. This is true
+ independent of the level of statistical multiplexing in the link.
+
+5.7. Performance with Misbehaving Nodes and Outside Attackers
+
+ This is not considered in the current CUBIC.
+
+5.8. Behavior for Application-Limited Flows
+
+ CUBIC does not raise its congestion window size if the flow is
+ currently limited by the application instead of the congestion
+ window. In case of long periods when cwnd has not been updated due
+ to the application rate limit, such as idle periods, t in Eq. 1 MUST
+ NOT include these periods; otherwise, W_cubic(t) might be very high
+ after restarting from these periods.
+
+5.9. Responses to Sudden or Transient Events
+
+ If there is a sudden congestion, a routing change, or a mobility
+ event, CUBIC behaves the same as Standard TCP.
+
+5.10. Incremental Deployment
+
+ CUBIC requires only the change of TCP senders, and it does not make
+ any changes to TCP receivers. That is, a CUBIC sender works
+ correctly with the Standard TCP receivers. In addition, CUBIC does
+ not require any changes to the routers and does not require any
+ assistance from the routers.
+
+
+
+
+
+
+
+Rhee, et al. Informational [Page 14]
+
+RFC 8312 CUBIC February 2018
+
+
+6. Security Considerations
+
+ This proposal makes no changes to the underlying security of TCP.
+ More information about TCP security concerns can be found in
+ [RFC5681].
+
+7. IANA Considerations
+
+ This document does not require any IANA actions.
+
+8. References
+
+8.1. Normative References
+
+ [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
+ Requirement Levels", BCP 14, RFC 2119,
+ DOI 10.17487/RFC2119, March 1997,
+ <https://www.rfc-editor.org/info/rfc2119>.
+
+ [RFC3168] Ramakrishnan, K., Floyd, S., and D. Black, "The Addition
+ of Explicit Congestion Notification (ECN) to IP",
+ RFC 3168, DOI 10.17487/RFC3168, September 2001,
+ <https://www.rfc-editor.org/info/rfc3168>.
+
+ [RFC3649] Floyd, S., "HighSpeed TCP for Large Congestion Windows",
+ RFC 3649, DOI 10.17487/RFC3649, December 2003,
+ <https://www.rfc-editor.org/info/rfc3649>.
+
+ [RFC3742] Floyd, S., "Limited Slow-Start for TCP with Large
+ Congestion Windows", RFC 3742, DOI 10.17487/RFC3742, March
+ 2004, <https://www.rfc-editor.org/info/rfc3742>.
+
+ [RFC4960] Stewart, R., Ed., "Stream Control Transmission Protocol",
+ RFC 4960, DOI 10.17487/RFC4960, September 2007,
+ <https://www.rfc-editor.org/info/rfc4960>.
+
+ [RFC5033] Floyd, S. and M. Allman, "Specifying New Congestion
+ Control Algorithms", BCP 133, RFC 5033,
+ DOI 10.17487/RFC5033, August 2007,
+ <https://www.rfc-editor.org/info/rfc5033>.
+
+ [RFC5348] Floyd, S., Handley, M., Padhye, J., and J. Widmer, "TCP
+ Friendly Rate Control (TFRC): Protocol Specification",
+ RFC 5348, DOI 10.17487/RFC5348, September 2008,
+ <https://www.rfc-editor.org/info/rfc5348>.
+
+
+
+
+
+
+Rhee, et al. Informational [Page 15]
+
+RFC 8312 CUBIC February 2018
+
+
+ [RFC5681] Allman, M., Paxson, V., and E. Blanton, "TCP Congestion
+ Control", RFC 5681, DOI 10.17487/RFC5681, September 2009,
+ <https://www.rfc-editor.org/info/rfc5681>.
+
+ [RFC6582] Henderson, T., Floyd, S., Gurtov, A., and Y. Nishida, "The
+ NewReno Modification to TCP's Fast Recovery Algorithm",
+ RFC 6582, DOI 10.17487/RFC6582, April 2012,
+ <https://www.rfc-editor.org/info/rfc6582>.
+
+ [RFC6675] Blanton, E., Allman, M., Wang, L., Jarvinen, I., Kojo, M.,
+ and Y. Nishida, "A Conservative Loss Recovery Algorithm
+ Based on Selective Acknowledgment (SACK) for TCP",
+ RFC 6675, DOI 10.17487/RFC6675, August 2012,
+ <https://www.rfc-editor.org/info/rfc6675>.
+
+ [RFC7567] Baker, F., Ed. and G. Fairhurst, Ed., "IETF
+ Recommendations Regarding Active Queue Management",
+ BCP 197, RFC 7567, DOI 10.17487/RFC7567, July 2015,
+ <https://www.rfc-editor.org/info/rfc7567>.
+
+ [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
+ 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
+ May 2017, <https://www.rfc-editor.org/info/rfc8174>.
+
+8.2. Informative References
+
+ [CEHRX07] Cai, H., Eun, D., Ha, S., Rhee, I., and L. Xu, "Stochastic
+ Ordering for Internet Congestion Control and its
+ Applications", In Proceedings of IEEE INFOCOM,
+ DOI 10.1109/INFCOM.2007.111, May 2007.
+
+ [FHP00] Floyd, S., Handley, M., and J. Padhye, "A Comparison of
+ Equation-Based and AIMD Congestion Control", May 2000.
+
+ [GV02] Gorinsky, S. and H. Vin, "Extended Analysis of Binary
+ Adjustment Algorithms", Technical Report TR2002-29,
+ Department of Computer Sciences, The University of
+ Texas at Austin, August 2002.
+
+ [HKLRX06] Ha, S., Kim, Y., Le, L., Rhee, I., and L. Xu, "A Step
+ toward Realistic Performance Evaluation of High-Speed TCP
+ Variants", International Workshop on Protocols for Fast
+ Long-Distance Networks.
+
+ [HR08] Ha, S. and I. Rhee, "Hybrid Slow Start for High-Bandwidth
+ and Long-Distance Networks", International Workshop on
+ Protocols for Fast Long-Distance Networks.
+
+
+
+
+Rhee, et al. Informational [Page 16]
+
+RFC 8312 CUBIC February 2018
+
+
+ [HRX08] Ha, S., Rhee, I., and L. Xu, "CUBIC: A New TCP-Friendly
+ High-Speed TCP Variant", ACM SIGOPS Operating System
+ Review, DOI 10.1145/1400097.1400105, July 2008.
+
+ [K03] Kelly, T., "Scalable TCP: Improving Performance in
+ HighSpeed Wide Area Networks", ACM SIGCOMM
+ Computer Communication Review, DOI 10.1145/956981.956989,
+ April 2003.
+
+ [KWAF17] Khademi, N., Welzl, M., Armitage, G., and G. Fairhurst,
+ "TCP Alternative Backoff with ECN (ABE)", Work in
+ Progress, draft-ietf-tcpm-alternativebackoff-ecn-05,
+ December 2017.
+
+ [XHR04] Xu, L., Harfoush, K., and I. Rhee, "Binary Increase
+ Congestion Control for Fast, Long Distance Networks", In
+ Proceedings of IEEE INFOCOM,
+ DOI 10.1109/INFCOM.2004.1354672, March 2004.
+
+Acknowledgements
+
+ Alexander Zimmermann and Lars Eggert have received funding from the
+ European Union's Horizon 2020 research and innovation program
+ 2014-2018 under grant agreement No. 644866 (SSICLOPS). This document
+ reflects only the authors' views and the European Commission is not
+ responsible for any use that may be made of the information it
+ contains.
+
+ The work of Lisong Xu was partially supported by the National Science
+ Foundation (NSF) under Grant No. 1526253. Any opinions, findings,
+ and conclusions or recommendations expressed in this material are
+ those of the authors and do not necessarily reflect the views of the
+ NSF.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Rhee, et al. Informational [Page 17]
+
+RFC 8312 CUBIC February 2018
+
+
+Authors' Addresses
+
+ Injong Rhee
+ North Carolina State University
+ Department of Computer Science
+ Raleigh, NC 27695-7534
+ United States of America
+ Email: rhee@ncsu.edu
+
+
+ Lisong Xu
+ University of Nebraska-Lincoln
+ Department of Computer Science and Engineering
+ Lincoln, NE 68588-0115
+ United States of America
+
+ Email: xu@unl.edu
+
+ Sangtae Ha
+ University of Colorado at Boulder
+ Department of Computer Science
+ Boulder, CO 80309-0430
+ United States of America
+ Email: sangtae.ha@colorado.edu
+
+ Alexander Zimmermann
+ Phone: +49 175 5766838
+ Email: alexander.zimmermann@rwth-aachen.de
+
+ Lars Eggert
+ NetApp
+ Sonnenallee 1
+ Kirchheim 85551
+ Germany
+ Phone: +49 151 12055791
+ Email: lars@netapp.com
+
+ Richard Scheffenegger
+ NetApp
+ Am Europlatz 2
+ Vienna 1120
+ Austria
+ Email: rs.ietf@gmx.at
+
+
+
+
+
+
+
+
+Rhee, et al. Informational [Page 18]
+