[Bloat] [Ecn-sane] quick question
Erik Auerswald
auerswal at unix-ag.uni-kl.de
Sat Aug 26 08:42:33 EDT 2023
Hi,
On Sat, Aug 26, 2023 at 03:06:09PM +0300, Jonathan Morton via Bloat wrote:
> > On 26 Aug, 2023, at 2:48 pm, Sebastian Moeller via Ecn-sane <ecn-sane at lists.bufferbloat.net> wrote:
> >
> > percentage of packets marked: 100 * (2346329 / 3259777) = 72%
> >
> > This seems like too high a marking rate to me. I would naively expect
> > that a flow on getting a mark scale back by its cwin by 20-50% and
> > then slowly increaer it again, so I expect the actual marking rate
> > to be considerably below 50% per flow...
>
> > My gut feeling is that these steam flows do not obey RFC3168 ECN
> > (or something wipes the CE marks my router sends upstream along the
> > path)... but without a good model what marking rate I should expect
> > this is very hand-wavy, so if anybody could help me out with an easy
> > derivation of the expected average marking rate I would be grateful.
>
> Yeah, that's definitely too much marking. We've actually seen this
> behaviour from Steam servers before, but they had fixed it at some
> point. Perhaps they've unfixed it again.
>
> My best guess is that they're running an old version of BBR with ECN
> negotiation left on. BBRv1, at least, completely ignores ECE responses.
> Fortunately BBR itself does a good job of congestion control in the
> FQ environment which Cake provides, as you can tell by the fact that
> the queues never get full enough to trigger heavy dropping.
>
> The CUBIC RFC offers an answer to your question:
> [small screenshot attached to email]
I find the attached screenshot quite unreadable. It seems to be
taken starting from the paragraph above section 5.2 of RFC 9438
<https://www.rfc-editor.org/rfc/rfc9438#section-5.2>. In UTF-8 text it
looks as follows:
------------------------------------------------------------------------
_C_ determines the aggressiveness of CUBIC in competing with other
congestion control algorithms for bandwidth. CUBIC is more friendly
to Reno TCP if the value of _C_ is lower. However, it is NOT
RECOMMENDED to set _C_ to a very low value like 0.04, since CUBIC
with a low _C_ cannot efficiently use the bandwidth in fast and long-
distance networks. Based on these observations and extensive
deployment experience, _C_=0.4 seems to provide a good balance
between Reno-friendliness and aggressiveness of window increase.
Therefore, _C_ SHOULD be set to 0.4. With _C_ set to 0.4, Figure 7
is reduced to
4 ┌────┐
╲ │ 3
╲│RTT
AVG_W = 1.054 * ────────
cubic 4 ┌──┐
╲ │ 3
╲│p
Figure 8
Figure 8 is then used in the next subsection to show the scalability
of CUBIC.
5.2. Using Spare Capacity
CUBIC uses a more aggressive window increase function than Reno for
fast and long-distance networks.
Table 3 shows that to achieve the 10 Gbps rate, Reno TCP requires a
packet loss rate of 2.0e-10, while CUBIC TCP requires a packet loss
rate of 2.9e-8.
+===================+===========+=========+=========+=========+
| Throughput (Mbps) | Average W | Reno 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: Required Packet Loss Rate for Reno TCP, HSTCP, and
CUBIC to Achieve a Certain Throughput
Table 3 describes the required packet loss rate for Reno TCP, HSTCP,
and CUBIC to achieve a certain throughput, with 1500-byte packets and
an _RTT_ of 0.1 seconds.
------------------------------------------------------------------------
(extracted using:
wget -q -O- 'https://www.rfc-editor.org/rfc/rfc9438.txt' \
| sed -En '/^ +_C_ determines the aggressiveness of CUBIC/,/of 0\.1 seconds\.$/p'
)
> Reading the table, for RTT of 100ms and throughput 100Mbps in a single
> flow, a "loss rate" (equivalent to a marking rate) of about 1 per
> 7000 packets is required. The formula can be rearranged to find a
> more general answer.
HTH,
Erik
More information about the Bloat
mailing list