Re: [tcpm] WGLC for draft-ietf-tcpm-alternativebackoff-ecn-06
Markku Kojo <kojo@cs.helsinki.fi> Sat, 17 March 2018 00:52 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 25539126C2F; Fri, 16 Mar 2018 17:52:32 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.311
X-Spam-Level:
X-Spam-Status: No, score=-4.311 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01] 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 3xajmG02Qkb1; Fri, 16 Mar 2018 17:52:29 -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 97696126C19; Fri, 16 Mar 2018 17:52:28 -0700 (PDT)
X-DKIM: Courier DKIM Filter v0.50+pk-2017-10-25 mail.cs.helsinki.fi Sat, 17 Mar 2018 02:52:19 +0200
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; s=dkim20130528; bh=J5c/LHxkyBUw+DOfX rXHgc6SoiBrDoSwVt3oI+xxJqI=; b=EoerH4tYsqfWiNM45OTxL97LTTeSEhoLJ zQ9qJx1qwbRnatu2kwMemKTv4eUNbsZWA+H16EbZsT/3MHnItxasOHFoHPlQwaNk Sp9y2JgRBTcV8FJn2tSvQ+ZuMLzfHbh2eD/fI3Vt3u9WdafFWZa690Wcd/ryBXwk k7GLapfQlI=
Received: from dx6-cs-02.pc.helsinki.fi (dx6-cs-02.pc.helsinki.fi [193.167.160.58]) (AUTH: PLAIN kojo, TLS: TLSv1/SSLv3,256bits,AES256-GCM-SHA384) by mail.cs.helsinki.fi with ESMTPSA; Sat, 17 Mar 2018 02:52:19 +0200 id 00000000005A001B.000000005AAC66C3.0000719A
Date: Sat, 17 Mar 2018 02:52:18 +0200
From: Markku Kojo <kojo@cs.helsinki.fi>
X-X-Sender: kojo@dx6-cs-02.pc.helsinki.fi
To: Michael Tuexen <tuexen@fh-muenster.de>
cc: tcpm@ietf.org, tcpm-chairs@ietf.org
In-Reply-To: <7A3A6ECE-550B-4E5F-9D61-83C8969A7B93@fh-muenster.de>
Message-ID: <alpine.DEB.2.20.1803170143270.3710@dx6-cs-02.pc.helsinki.fi>
References: <7A3A6ECE-550B-4E5F-9D61-83C8969A7B93@fh-muenster.de>
User-Agent: Alpine 2.20 (DEB 67 2015-01-07)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=_script-29106-1521247939-0001-2"
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/pAeUdVXcyq2r9lFf9sA5tzJ7ICw>
Subject: Re: [tcpm] WGLC for draft-ietf-tcpm-alternativebackoff-ecn-06
X-BeenThere: tcpm@ietf.org
X-Mailman-Version: 2.1.22
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: Sat, 17 Mar 2018 00:52:32 -0000
Hi all,
Maybe slightly late wg last call review of
draft-ietf-tcpm-alternativebackoff-ecn-06.
The draft is mostly well written and clear, and it is also improved since
version -00 or -01 I last read it.
I believe the intention of the draft is just to allow and propose
experimentation using a larger multiplicative decrease factor when
responding to ECN indication than when responding to packet loss.
There is, however, a significant change that seem to have occured from
version -04 to -05 that does much more than this and is therefore crucial
to address properly. The text and reads now in -06 as follows:
It updates the following text in section 6.1.2 of the ECN
specification [RFC3168] :
The indication of congestion should be treated just as a
congestion loss in non-ECN-Capable TCP. That is, the TCP source
halves the congestion window "cwnd" and reduces the slow start
threshold "ssthresh".
Replacing this with:
Receipt of a packet with the ECN-Echo flag SHOULD trigger the TCP
source to set the slow start threshold (ssthresh) to 0.8 times the
FlightSize, with a lower bound of 2 * SMSS applied to the result.
As in [RFC5681], the TCP sender also reduces the cwnd value to no
more than the new ssthresh value.
And is further clarified in Section 4.3:
and in response to an indication of an ECN-signalled congestion:
ssthresh = max (FlightSize * beta_{ecn}, 2 * SMSS)
and
cwnd = ssthresh
In my reading this text above sets a lower bound of 2 MSS for cwnd which
is incorrect and dangerous modification and maybe not intended to modify
RFC 3168.
The lower bound for cwnd is 1 MSS. The lower bound of 2 MSS for cwnd
1) is not specified in any (standards track) RFC,
2) is against the congestion control principles for avoiding
congestion collapse as it effectively disables a full back
off that is a crucial requirement for all congestion control
algorithms,
3) is in conflict with the basic principle set in Sally's ECN papers
and in RFC 3168 itself (the original text above from RFC 3168):
"The indication of congestion should be treated just as a
congestion loss in non-ECN-Capable TCP."
When Flightsize (and cwnd) is 2 MSS in non-ECN-Capable TCP and loss
signals congestion, cwnd effectively becomes 1 MSS. That is why RFC
3168 formulates the text: "the TCP source halves the congestion
window "cwnd" ..."
Note: the majority of the work and text in RFC 3168, including
the text in RFC 2482, predates RFC 2581 that first introduced
FlightSize. Prior to RFC 2581 all TCP CC text "halved cwnd"
which literally meant cwnd=cwnd/2.
Instead of the above text in the draft, the draft should explicitly state
that when FlightSize/2 would result in ssthresh below its lower bound of 2
MSS, a TCP sender must not stop decreasing cwnd. And, if more
ECN-signalled congestion indications arrive, the TCP sender must continue
reducing sending rate further (plus refer to RFC 3168 how to proceed
reducing the sending rate, if further ECE signals arrive).
Furthermore, the draft should be very specific on how the TCP sender
should act when cwnd=ssthresh and ECE arrives. Currently the draft
specifies the way how the TCP sender reduces ssthresh (and cwnd) in
Congestion Avoidance. According to RFC 5681, when cwnd = ssthresh, TCP is
not in Slow Start nor in Congestion Avoidance. Therefore, the draft
should be explicit on how cwnd is reduced, when cwnd=ssthresh.
It is true that there is (at least) one (widely deployed) incorrect
implementation of RFC 3168 that incorrectly sets lower bound of 2 MSS
for cwnd when congestion is ECN-signaled. This, however, must not be used
as any kind of justification for changíng IETF-specified congestion
control principles and requirements. Instead, this draft should carefully
instruct implementors and those who intend to experiment with the ECN
modification set in this draft to ensure the TCP stack used for
experiments correctly implements RFC 3168 in this respect. Otherwise,
such experimental results are mostly void.
In addition, there is an incorrect statement in Sec 4.1:
According to
[RFC5681], when a TCP sender detects segment loss using the
retransmission timer and the given segment has not yet been resent by
way of the retransmission timer, the value of ssthresh must be set to
no more of the maximum of half of the FlightSize and 2*SMSS. The
same equation is also used during Fast Retransmit/Fast Recovery
[RFC5681]. As a result, the TCP congestion control only allows one
BDP of packets in flight. This is just sufficient to maintain 100%
utilisation of the bottleneck on the network path.
What the text says about setting ssthresh is correct. However, if the
segment loss is detected using the retransmission timer, the TCP
congestion control does not allow one BDP of packets in flight (unless
BDP=1 MSS). Instead, cwnd is set to 1 MSS, allowing only 1 pkt in flight.
I suggest removing the text that discusses detecting segment loss using
the retransmission timer.
Best regards,
/Markku
- [tcpm] WGLC for draft-ietf-tcpm-alternativebackof… Michael Tuexen
- Re: [tcpm] WGLC for draft-ietf-tcpm-alternativeba… Richard Scheffenegger
- Re: [tcpm] WGLC for draft-ietf-tcpm-alternativeba… Michael Welzl
- Re: [tcpm] WGLC for draft-ietf-tcpm-alternativeba… Michael Tuexen
- Re: [tcpm] WGLC for draft-ietf-tcpm-alternativeba… Markku Kojo
- Re: [tcpm] WGLC for draft-ietf-tcpm-alternativeba… Michael Welzl
- Re: [tcpm] WGLC for draft-ietf-tcpm-alternativeba… Markku Kojo
- Re: [tcpm] WGLC for draft-ietf-tcpm-alternativeba… Michael Welzl
- Re: [tcpm] WGLC for draft-ietf-tcpm-alternativeba… Markku Kojo
- Re: [tcpm] WGLC for draft-ietf-tcpm-alternativeba… Michael Tuexen
- Re: [tcpm] WGLC for draft-ietf-tcpm-alternativeba… Richard Scheffenegger
- Re: [tcpm] WGLC for draft-ietf-tcpm-alternativeba… Michael Welzl
- Re: [tcpm] WGLC for draft-ietf-tcpm-alternativeba… G Fairhurst
- Re: [tcpm] WGLC for draft-ietf-tcpm-alternativeba… Richard Scheffenegger