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