Re: [tcpm] Concluding WGLC for draft-ietf-tcpm-rfc8312bis-03
Markku Kojo <kojo@cs.helsinki.fi> Mon, 30 August 2021 16:33 UTC
Return-Path: <kojo@cs.helsinki.fi>
X-Original-To: tcpm@ietfa.amsl.com
Delivered-To: tcpm@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 39BAE3A18BB; Mon, 30 Aug 2021 09:33:37 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2
X-Spam-Level:
X-Spam-Status: No, score=-2 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=cs.helsinki.fi
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id mLgIWWxLL2qp; Mon, 30 Aug 2021 09:33:30 -0700 (PDT)
Received: from script.cs.helsinki.fi (script.cs.helsinki.fi [128.214.11.1]) (using TLSv1.2 with cipher AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id E70873A18B7; Mon, 30 Aug 2021 09:33:28 -0700 (PDT)
X-DKIM: Courier DKIM Filter v0.50+pk-2017-10-25 mail.cs.helsinki.fi Mon, 30 Aug 2021 19:33:17 +0300
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cs.helsinki.fi; h=date:from:to:cc:subject:in-reply-to:message-id:references :mime-version:content-type:content-id; s=dkim20130528; bh=YrvZ48 pO0CVuTTVMRiFJfnOyViuHCi5mL8r3oWUTK0o=; b=AAQLLNd7DTE+lCTh6b58Ja /BLeUD1mIUimt4GvaMp3pfNMlZufm5oxZAG8xc09OnDWUVSgXDmwuNSfMqTyjK3s Z2kF0mSwIEPUP7mf+lKmdfp1gbdRkfUkoAV6NdrmEWuJSAGEW0riffJ9bL2IGSTQ dqINrzlSVXj7+5dotQpcA=
Received: from hp8x-60 (openvpn-tun-3-3.fe.helsinki.fi [128.214.204.179]) (AUTH: PLAIN kojo, TLS: TLSv1/SSLv3,256bits,AES256-GCM-SHA384) by mail.cs.helsinki.fi with ESMTPSA; Mon, 30 Aug 2021 19:33:17 +0300 id 00000000005A014E.00000000612D084D.00000162
Date: Mon, 30 Aug 2021 19:33:16 +0300
From: Markku Kojo <kojo@cs.helsinki.fi>
To: Yoshifumi Nishida <nsd.ietf@gmail.com>
cc: "tcpm@ietf.org Extensions" <tcpm@ietf.org>, tcpm-chairs <tcpm-chairs@ietf.org>
In-Reply-To: <CAAK044SjMmBnO8xdn2ogWMZTcecXoET1dmZqd6Dt3WzOUi359A@mail.gmail.com>
Message-ID: <alpine.DEB.2.21.2108300740560.5845@hp8x-60.cs.helsinki.fi>
References: <CAAK044SjMmBnO8xdn2ogWMZTcecXoET1dmZqd6Dt3WzOUi359A@mail.gmail.com>
User-Agent: Alpine 2.21 (DEB 202 2017-01-01)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=_script-380-1630341197-0001-2"
Content-ID: <alpine.DEB.2.21.2108301525000.5845@hp8x-60.cs.helsinki.fi>
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/nd4Af8QRQMDkp_R_9ZQMkI4yGAc>
Subject: Re: [tcpm] Concluding WGLC for draft-ietf-tcpm-rfc8312bis-03
X-BeenThere: tcpm@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: TCP Maintenance and Minor Extensions Working Group <tcpm.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/tcpm>, <mailto:tcpm-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/tcpm/>
List-Post: <mailto:tcpm@ietf.org>
List-Help: <mailto:tcpm-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/tcpm>, <mailto:tcpm-request@ietf.org?subject=subscribe>
X-List-Received-Date: Mon, 30 Aug 2021 16:33:37 -0000
Hi Yoshi, all,
On Wed, 18 Aug 2021, Yoshifumi Nishida wrote:
> Hi,The chairs think 8312bis draft is in good shape and it's ready for submission.
> We know we had some discussions on how to handle ABC draft in the draft during the
> last WG meeting and there are on-going related discussions on the ML.
> However, we still think we can proceed with the draft as the relevance between the
> draft and the current discussions is not very high.
>
> If anyone has different thoughts on this, please let us know.
> Otherwise, we will prepare a writeup soon and submit it to IESG.
My sincere apologies as this comes very late in the process but I was not
able to follow IETF mailing list at the time of WGLC nor during
the recent weeks, and I couldn't attend IETF 111.
I took a look at the draft and some statements of it seemed to be in
conflict with other Standards Track RFCs. I believe the tcpm
wg should look more closer to these to avoid publishing conflicting
guidance in different Standards Track RFCs. In addition, there are some
issues I am concerned about.
1. ECN
a) The draft modifies RFC 3168 when ECE arrives and would result
in cwnd < 2 MSS by setting a lower bound of 2 MSS for cwnd (only
ssthresh is supposed to have a lower bound of 2 MSS).
This is in conflict with RFC 3168, RFC 5033, and RFC 2914 which
require "full backoff", that is, a sender must continue decreasing
sending rate as long as congestion persists. This is a fundamental
property for any congestion control mechanism. For ECN, RFC 3168
(sec 6.1.2) requires that cwnd is halved until the minimum cwnd
of one MSS is received, and then the sender continues reducing
sending rate by using a timer with exponential backoff, if more
ECE-echo packets keep on arriving.
This implementation bug has been long with Linux and is present
in other stacks as well and should get corrected ASAP with
appropriate advise in all published RFCs, instead of replicating
the bug in the RFC series.
b) RFC 8311 (sec 4.1) allows modifying the TCP-sender response to
ECE for experimental purposes only. Has there been any discussion
with tsvwg in that modifying the TCP-response to ECE in CUBIC is
conflict with RFC 8311 as CUBIC is currently intended to become
a Standards Track RFC?
c) ABE (RFC 8511) is currently the only experimental RFC to modify
the TCP-sender response to ECE. ABE allows modifying multiplicative
decrease factor only for AIMD TCP and only when ECE arrives in
congestion avoidance, that is, not when the sender is in slow-start.
Applying a decrease factor of 0.7 (or higher) when a congestion
singnal arrives and ends the initial slow start would be
inconsiderate because it extends the convergence time from
the slow-start overshoot. ABE has found that using a larger decrease
factor yields performance improvement when applied in congestion
avoidance, but not otherwise. Do we have data that would support
different findings with CUBIC?
2. Slow-Start Overshoot w/ loss-based congestion conrol
The larger decrease factor of 0.7 seems unadviseable also if
used in the initial slow start with loss based congestion
control (w/ Not-ECT traffic); packets start getting dropped
when a TCP sender has increased cwnd in slow start such that
the available network bandwidth and buffering capacity at the
bottleneck is filled, but the TCP sender continues sending
more packets for one RTT doubling cwnd and hence also the number
of packets inflight before the congestion signal reaches the sender.
Now, even if the sender uses the standard decrease factor of 0.5,
the cwnd gets reduced only to a value that equals to the cwnd just
before (or around) the congestion point. That is, the network is
still full when the sender enters fast recovery but we do not
expect more drops during fast recovery in a deterministic model.
Only in congestion avoidance after the recovery, the sender
increases cwnd again and gets a packet drop that takes the
sender to a normal sawtooth cycle in an ideal case. So, the
convergence time from slow-start is expexted to be fast though
in reality loss recovery does not always work ideally with
such many drops in a window of data.
However, if the sender applies decrease factor of 0.7, it
continues in fast recovery with a 40% higher cwnd than what is
the available network capacity. This is very likely to result in
significant number of packet losses during fast recovery, and
very likely to result in loss of retransmissions. So, it is no
wonder that so many people have been very concerned about the
slow-start overshoot and the problems it creates.
It is very obvious that applying decrease factor of 0.7 in
the initial slow start is likely to extend the convergence
time from the slow-start overshoot significantly. Or, do we
have data that shows that such concern is unnecessary?
Also, a number of new loss-recovery mechanisms have been
introduced maybe mainly because of this?
I would hesitate recommending decrease factor of 0.7 when
a congestion event occurs during the initial slow start.
3. RACK (and QUIC)
The draft states that RACK (and QUIC loss detection) can be used
with CUBIC to detect losses. However, it seems to have gone
unnoticed that RACK may also detect loss of a retransmission in
which case the congestion control response is required to be taken
twice, i.e., ssthresh and cwnd must be lowered again (MUST in
RFC 5681 Sec. 4.3). Once RACK got published all new congestion
controls and updates to existing RFCs must include this essential
congestion control response, if the congestion control mechanism
intends to use RACK for loss detection.
This draft does not have any such requirement nor does it specify
how this is done?
4. Fairness to AIMD congestion control
The equation on page 12 to derive increase factor α that
cubic
intends to achieve the same average window as AIMD TCP seems to
have its origins in a preliminary paper that states that the
authors do not have an explanation to the discrepancy between
their AIMD model and experimental results, which clearly deviate.
It seems to have gone unnoticed that the equation assumes equal
drop probability for the different values of the increase factor
and multiplicative decrease factor but the drop probability
changes when these factors change. The equations for the drop
probability / the # of packets in one congestion epoch
are available in the original paper and one can easily verify
this. Therefore, the equations used in CUBIC are not correct
and seem to underestimate _W_est_ for AIMD TCP, resulting in
moving away from AIMD-Friendly region too early. This gives
CUBIC unjustified advantage over AIMD TCP particularly in
environments with low level of statistical multiplexing. With
high level of multiplexing, drop probability goes higher and
differences in the drop probablilities tend to get small. On the
other hand, with such high level of competition, the theoretical
equations may not be that valid anymore.
5. Contribution to buffer bloat and slower convergence due to
larger decrease factor
This draft uses a larger cwnd decrease factor, resulting in larger
average cwnd and buffer occupation. This means that it is
likely to contribute significantly to buffer bloat, particularly
when considering also the use of concave increase function in the
beginning of the congestion avoidance that keeps the cwnd close
to maximum most of the time as carefully explained in the draft.
This means that CUBIC keeps also buffer bloated router queues
very efficiently full at all times.
Currently the draft does mention the slower convergence speed
as the only side effect for the larger decrease factor and does
not discuss the contribution to buffer bloat. It would be
important to assess this together with measurement data to
back up any observations.
Do we have data in different environments, including buffer-bloated
environments that show how much effect CUBIC has compared to
AIMD TCP?
And, how does larger decrease function impact convergence speed,
particularly in buffer-bloated environments.
Many people have complained that window-based (TCP) congestion
control drives buffer bloat. Of course, also the current standard
AIMD TCP tends to fill in the buffer-bloated queues but it
unlikely does it as effectively as CUBIC? This would be good to
understand better.
6. Citing Experimental RFCs as if being a part of CUBIC
The draft says that CUBIC MAY implement DSACK [RFC3708], limited slow
start [RFC 3742], [RFC7661] and hybrid slow start [cites a paper].
Aren't the first three down references? Not sure if it is appropriate
for a Stds Track document to cite experimental work or a paper like
this even though it's a MAY.
7. Discussion
I regret to say that the discussion in Sec 5. brings up surprisingly
little data to back up the claims that are made. Given the long
deployment experience that is emphasised in the draft, there, however, is
little evidence (measurement data) summarised and cited to back up the
claims. "There is a long deployment experience" does not provide
any evidence as such. There should be a lot of studies with measurement
data accumulated over the years that would support the assertions in the
doc. Or, is there?
Sec 5.1
In this subsection, one should show the impact of CUBIC when
competing with AIMD TCP. The numbers in tables are derived from
analytical models that give average window size with fixed random
loss probabilities and unlimited bandwidth. That is not the same as when
flows are combeting in the same congested bottleneck that builds a queue.
Loss probabilities for different flows are likely to be different
especially at lower levels of statistical multiplexing.
The first para of sec 5.1 does not sound like true. Simply looking at the
original CUBIC paper [HRX08] reveals that CUBIC dominates AIMD TCP (SACK
TCP) in the regions where SACK TCP alone is able to fully utilize the
available bandwidth (Figure 10 c up until 200 Mbps, and to some extent in
Fig 10 a with 40 ms delay). And ín all cases where SACK TCP alone is not
able to utilize all available b/w, CUBIC steals multiple times more b/w
from SACK TCP than what SACK TCP is not able to utilize. Figures 5 and 6
tell the same story. Has something changed and/or is there possibly data
that provides alternative evidence.
In addition, the recommended value for constant C and the two alternative
values presented in the draft are the same as in the original paper. It
would be interesting to see if there has been any experimentation with
different values and what might be the outcome?
Sec 5.3
Any experimental data to summarize and cite?
Sec 5.4
The text correctly states that CUBIC fills queues faster than AIMD TCP
and increases the risk of standing queues. Then it proposes queue sizing
and AQM as a solution, which is odd. Applying AQM to keep the queues
shorter of course decreases the RTT (delay) seen but it does not help
with standing queues (they remain standing but are just shorter).
Sec 5.5
Setting lower bound of 2 MSS for cwnd with ECN may result in symptoms of
congestion collapse with certain specific conditions, e.g., if the actual
(physical) queue size is very large and there is a mix of ECN-capable
(ECT) and not ECN-capable flows. When the number of ECN capable flows
increase the start starving the not ECN-capable flows as ECT flows stop
responding to congestion and start increasing the queue such that AQM has
to drop almost all not ECT packets.
Sec 5.6
Competing CUBIC flows will converge but it happens very slowly and
requires a large amount of data to send, i.e., short flows are more
unlikely to live long enough to converge. This seems to be case at least
according to the results in original paper [HRX08, Fig 4 b].
Summary and citing some performance data would be very useful and much
more convincing.
Sec 5.8
The MUST NOT requirement would be much better placed with other
specifications in Sec 4 and would benefit from more accurate description.
Sec 5.9
The statement made here is not convincing and is likely to be incorrect.
E.g., CUBIC with larger decrease factor would most likely release
capacity notably slower than AIMD TCP if there is sudden congestion.
8. The draft says in the intro that CUBIC is to be regarded as *current
standard* for TCP congestion control. It sounds a bit like it would
obsolete RFC 5681 which is not the intent. RFC 5681 still has its
specific role as the document that gives the baseline and generic
guidelines for TCP (and other) congestion control.
Instead, I think this document should articulate very carefully its role
among the congestion control algorithms. How, I am not sure. Maybe
simply as an alternative for RFC5681 congestion avoidance and
multiplicative decrease.
Please note also that when specifying these algorithms this document is
in direct conflict with a MUST in RFC5681 which says: "however, a TCP
MUST NOT be more aggressive than the following algorithms allow (that is,
MUST NOT send data when the value of cwnd computed by the following
algorithms would not allow the data to be sent)."
Therefore, the draft should make this differentation very clear maybe
already in the abstract and justify the deviations much better than it
currently does (accompanied with evidence = data). This is very important
i order to make a convincing case why it is ok for this doc to deviate
from the current Standards Track TCP normative statements.
Misc comments:
_epoch_start_: needs more accurate and consistent definition when the
exactly the epoch starts. Is it when congestion event occurs or when
TSP sender enters congestion avoidance first time after an congestion
event. If it is different in different scenarios that would be good to
present systematically.
In many occassions:
"(upon receiving) an ACK" -> "(upon receiving) a new ACK"
On page 13:
" the sender MAY employ a Fast
Recovery algorithm to gradually adjust the congestion window to its
new reduced _ssthresh_ value."
I assume this is aiming at saying that something similar to PRR MAY be
used to reduce cwnd. This, however, is somewhat vaguely said and using
fasr recovery is misleading. We need to remember also that it might not
be trivial to have it right. So, dunno whether it would be useful to drop
this.
Best regards,
/Markku
- [tcpm] Concluding WGLC for draft-ietf-tcpm-rfc831… Yoshifumi Nishida
- Re: [tcpm] Concluding WGLC for draft-ietf-tcpm-rf… Yoshifumi Nishida
- Re: [tcpm] Concluding WGLC for draft-ietf-tcpm-rf… Lars Eggert
- Re: [tcpm] Concluding WGLC for draft-ietf-tcpm-rf… Vidhi Goel
- Re: [tcpm] Concluding WGLC for draft-ietf-tcpm-rf… Vidhi Goel
- Re: [tcpm] Concluding WGLC for draft-ietf-tcpm-rf… Lisong Xu
- Re: [tcpm] Concluding WGLC for draft-ietf-tcpm-rf… Sangtae Ha
- Re: [tcpm] Concluding WGLC for draft-ietf-tcpm-rf… Markku Kojo
- Re: [tcpm] Concluding WGLC for draft-ietf-tcpm-rf… Lars Eggert
- Re: [tcpm] Concluding WGLC for draft-ietf-tcpm-rf… Lars Eggert
- Re: [tcpm] Concluding WGLC for draft-ietf-tcpm-rf… Markku Kojo
- Re: [tcpm] Concluding WGLC for draft-ietf-tcpm-rf… Yoshifumi Nishida
- Re: [tcpm] Concluding WGLC for draft-ietf-tcpm-rf… Lars Eggert
- [tcpm] alpha_cubic (was: Concluding WGLC for draf… Bob Briscoe
- Re: [tcpm] alpha_cubic (was: Concluding WGLC for … Yoshifumi Nishida
- Re: [tcpm] Concluding WGLC for draft-ietf-tcpm-rf… Markku Kojo
- Re: [tcpm] alpha_cubic (was: Concluding WGLC for … Yoshifumi Nishida
- Re: [tcpm] alpha_cubic (was: Concluding WGLC for … Jonathan Morton
- Re: [tcpm] alpha_cubic Bob Briscoe
- Re: [tcpm] Concluding WGLC for draft-ietf-tcpm-rf… Bob Briscoe
- Re: [tcpm] alpha_cubic Yoshifumi Nishida
- Re: [tcpm] alpha_cubic Bob Briscoe
- Re: [tcpm] alpha_cubic Neal Cardwell
- Re: [tcpm] alpha_cubic Bob Briscoe
- Re: [tcpm] alpha_cubic Bob Briscoe
- Re: [tcpm] alpha_cubic Markku Kojo
- Re: [tcpm] alpha_cubic Yoshifumi Nishida
- Re: [tcpm] alpha_cubic (Issue 1) Bob Briscoe
- Re: [tcpm] alpha_cubic (Issue 1) Bob Briscoe