target = "https://www.rfc-editor.org/rfc/rfc8312#section-5.1"

# 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.
# 
# +--------+-----------+-----------+------------+-----------+---------+
# |   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.

[[spec]]
level = "SHOULD"
quote = '''
Therefore, C
SHOULD be set to 0.4.
'''