Re: [tcpm] Benjamin Kaduk's No Objection on draft-ietf-tcpm-rack-14: (with COMMENT)

Yuchung Cheng <ycheng@google.com> Sat, 19 December 2020 02:00 UTC

Return-Path: <ycheng@google.com>
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 3A0B53A0D00 for <tcpm@ietfa.amsl.com>; Fri, 18 Dec 2020 18:00:02 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -17.598
X-Spam-Level:
X-Spam-Status: No, score=-17.598 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_MED=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, ENV_AND_HDR_SPF_MATCH=-0.5, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, USER_IN_DEF_DKIM_WL=-7.5, USER_IN_DEF_SPF_WL=-7.5] autolearn=unavailable autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=google.com
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 nUgh0cmvf293 for <tcpm@ietfa.amsl.com>; Fri, 18 Dec 2020 18:00:00 -0800 (PST)
Received: from mail-wm1-x334.google.com (mail-wm1-x334.google.com [IPv6:2a00:1450:4864:20::334]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id F0F353A0D06 for <tcpm@ietf.org>; Fri, 18 Dec 2020 17:59:59 -0800 (PST)
Received: by mail-wm1-x334.google.com with SMTP id r4so5009264wmh.5 for <tcpm@ietf.org>; Fri, 18 Dec 2020 17:59:59 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=PYvDrWORN0Ldky2A+uRlKYObZff+CC9fMTtDbHDvpb0=; b=I5zQg6ffbds1VC3u/HpieZqJXb5Rq42Xo0LVZgqxW5ZNRgC11XwjNApAWlx5XCEb3U lOBp3GP8+9E6aKcsUqnXqCWvZXfGALnXsybDrWeVfQrow8ZYrr8QeB5jOHZymTs6mnlo zz42AmJmmykAFFIwxNAJP2iPqcIfIgugH2x4gfjDNJebKvxJl/Lh65c65cyyCvG4J3E4 w+vfrilGx8Ue+9B/IrPCcLIBJ+ZHJUAGGHHNCz2ZutDnxBmEqm7sTTq27EMN4iR+nBII qUjqgY7Y5UyUNa4YrYOB4lf2sGuX1H2Ot677RmQXtZYsOQFYdJLy8rPuDplVbQFnjeyA smpg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=PYvDrWORN0Ldky2A+uRlKYObZff+CC9fMTtDbHDvpb0=; b=p7J/8GPCXWcZ01FOGy5tJ/d0HLe60RP+Fq+gRUvE7o1DH/ebUa5FrN3B16/MwP1XKH 9YnDo7R7BuRJOr28OafAeUeQ+Aoui7WPPnOCbaEQlpfj4NxiQ7e8wWKNG+hY4bJ6FkSS AhNZ2CHKj7PF+RDgMjPVyx1r3U++u0VtBJ1jlMbJqJBLVGqbLHsPBI5vxOI0l6kpETJV s6f2Z7w1XF34W5zOP82uBhQEQWLUKg3Y1v04tbFUel2izuOOBpZb9PDNykhJYaV4IenH 305NnHmNfQ0cMdtq5RTdQhuklsXANRQC66Ah9Ux2CGTNDvjyB0UsxV58EvC2rMGc1bp4 rTJg==
X-Gm-Message-State: AOAM533dvqIP44dErbBjkl+305UyEdgARLWLSRGK/Ng6LBUwUU2IE+hc KOPL3ORaMe29F2SMUPRZMv7Tk77C8do1FAbRxTVhbA==
X-Google-Smtp-Source: ABdhPJwtYfGqY30knXY/YJmaNiqJAzJ0F28feESC9fPI404lblynPNgnBMnG4rmJUMv8xS7/FA4xnDjWg0QHI2/MILQ=
X-Received: by 2002:a1c:7e4e:: with SMTP id z75mr6329565wmc.40.1608343197642; Fri, 18 Dec 2020 17:59:57 -0800 (PST)
MIME-Version: 1.0
References: <160822770059.15041.16286115220871304513@ietfa.amsl.com>
In-Reply-To: <160822770059.15041.16286115220871304513@ietfa.amsl.com>
From: Yuchung Cheng <ycheng@google.com>
Date: Fri, 18 Dec 2020 17:59:20 -0800
Message-ID: <CAK6E8=d1WsuNcdu_1hhn0x=Grom5WrMW8xhMXiREYx9Ys5xamw@mail.gmail.com>
To: Benjamin Kaduk <kaduk@mit.edu>
Cc: The IESG <iesg@ietf.org>, draft-ietf-tcpm-rack@ietf.org, tcpm-chairs <tcpm-chairs@ietf.org>, "tcpm@ietf.org Extensions" <tcpm@ietf.org>, draft-ietf-tcpm-rack.all@ietf.org, Michael Tuexen <tuexen@fh-muenster.de>
Content-Type: multipart/alternative; boundary="000000000000f96e4b05b6c794af"
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/u3DY2DJRXmhJIQZyTnfAAyDA2B0>
Subject: Re: [tcpm] Benjamin Kaduk's No Objection on draft-ietf-tcpm-rack-14: (with COMMENT)
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: Sat, 19 Dec 2020 02:00:02 -0000

On Thu, Dec 17, 2020 at 9:55 AM Benjamin Kaduk via Datatracker <
noreply@ietf.org> wrote:

> Benjamin Kaduk has entered the following ballot position for
> draft-ietf-tcpm-rack-14: No Objection
>
> When responding, please keep the subject line intact and reply to all
> email addresses included in the To and CC lines. (Feel free to cut this
> introductory paragraph, however.)
>
>
> Please refer to https://www.ietf.org/iesg/statement/discuss-criteria.html
> for more information about IESG DISCUSS and COMMENT positions.
>
>
> The document, along with other ballot positions, can be found here:
> https://datatracker.ietf.org/doc/draft-ietf-tcpm-rack/
>
>
>
> ----------------------------------------------------------------------
> COMMENT:
> ----------------------------------------------------------------------
>
> Thanks for presenting this complicated topic in a very easy-to-read
> manner!
>
Thank you for your review.


>
> Section 3.3.2
>
>    1.  The reordering window SHOULD be set to zero if no reordering has
>        been observed on the connection so far, and either (a) three
>        segments have been delivered out of order since the last recovery
>
> I assume there's some subtle technical difference between "reordering"
> and "segments delivered out of order" that makes this a reasonable thing
> to say ... but it would be nice if the distincion was made more clear
> (whether here or in earlier text).
>
Great idea to define reordering more precisely. In this document,
reordering refers to when two TCP segments are delivered at the TCP
receiver in a different order from they were sent at the TCP sender for a
given TCP flow. Notice the ordering is chronological instead of sequential
on TCP sequences.

We'll add that definition on the first appearance of the word 'reordering'
to clarify.


>
> Section 6.2
>
>    Among all the segments newly ACKed or SACKed by this ACK that pass
>    the checks above, update the RACK.rtt to be the RTT sample calculated
>    using this ACK.  Furthermore, record the most recent Segment.xmit_ts
>    in RACK.xmit_ts if it is ahead of RACK.xmit_ts.  If Segment.xmit_ts
>    equals RACK.xmit_ts (e.g. due to clock granularity limits) then
>    compare Segment.end_seq and RACK.end_seq to break the tie.
>
> Perhaps we should state what the result of breaking the tie is used for
> (i.e., updating RACK.segment & co.)?
>

sure: we'll add "breaking the tie to update RACK.segment's associated
states'.


>
>    To avoid the issue above, RACK dynamically adapts to higher degrees
>    of reordering using DSACK options from the receiver.  Receiving an
>    ACK with a DSACK option indicates a possible spurious retransmission,
>    suggesting that RACK.reo_wnd may be too small.  The RACK.reo_wnd
>    increases linearly for every round trip in which the sender receives
>    some DSACK option, so that after N distinct round trips in which a
>    DSACK is received, the RACK.reo_wnd becomes (N+1) * min_RTT / 4, with
>    an upper-bound of SRTT.
>
> What constitutes a "distinct round trip"?
>
The distinct is redundant. It really means N round trips (which obviously
are distinct and different from the other N-1). We'll remove 'distinct'
word.


>
>        Return min(RACK.min_RTT / 4 * RACK.reo_wnd_mult, SRTT)
>
> I suggest reordering the expression to be min(RACK.reo_wnd_mult *
> RACK.min_RTT / 4, SRTT), to avoid needing to consider the order of
> operations and operator precedence in the pseudocode.  (soapbox: in
> formal mathematics, there is no "division" operation, just
> multiplication by the multiplicative inverse, in part because it makes
> dealing with associativity and commutativity of operations harder to
> reason about.)
>
Sure we'll change to the suggested more clear format.


>
> Section 8
>
>    sender SHOULD cancel any other pending timer(s).  An implementation
>    is to have one timer with an additional state variable indicating the
>    type of the timer.
>
> nit: maybe "is expected to have one timer", to avoid any risk of being
> interpreted as over-specifying implementation behavior?
>
good idea. will add "expected".


>
> Is there anything to say about increasing the usage of fast recovery
> (vs RTO) potentially having an aggregate effect globally on how much
> data is in flight and increasing the overall risk of congestion?  (I
> mostly assume not, but it's kind of my job to ask.)
>
Great question. We agree with you: our conjecture is that RACK-TLP reduces
(loss-based) C.C. over-correction and BW under-utilization than C.C.
under-correction, particularly for app-limited short flows. For bulk long
flows that comprise the majority of the Internet traffic volume, most
losses are well detected by the existing 3-dupack-rule since the flows'
congestion windows are large enough to trigger 3 dupacks. RACK-TLP actually
helps reduce spurious fast recoveries on moderately reordered paths for
these long flows. But overall in our experience, the state of congestion is
much dominated by the actual C.C. algorithms (e.g. slow-start, increase and
decrease functions) of these long flows and less about #fast-recoveries.


>
> Section 13.1
>
> In terms of how we reference it, RFC 3042 seems like it could be
> informative.
>
Good catch. will move to normative