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

Neal Cardwell <ncardwell@google.com> Wed, 30 December 2020 13:55 UTC

Return-Path: <ncardwell@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 1DE5D3A0AD5 for <tcpm@ietfa.amsl.com>; Wed, 30 Dec 2020 05:55:45 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -17.599
X-Spam-Level:
X-Spam-Status: No, score=-17.599 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, 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=ham 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 kEQ1j6KYefcq for <tcpm@ietfa.amsl.com>; Wed, 30 Dec 2020 05:55:43 -0800 (PST)
Received: from mail-vk1-xa32.google.com (mail-vk1-xa32.google.com [IPv6:2607:f8b0:4864:20::a32]) (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 0E3663A0AC3 for <tcpm@ietf.org>; Wed, 30 Dec 2020 05:55:42 -0800 (PST)
Received: by mail-vk1-xa32.google.com with SMTP id m145so3629716vke.7 for <tcpm@ietf.org>; Wed, 30 Dec 2020 05:55:42 -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=ltftvTSAZPLpt4IMOr/eMnTrcoeUdYy9enm9sEN9t/E=; b=Du/jWvISvEliG0z2Dh2wdyLhr7+H4b2jsyTDPlmDNfxXC7MhJ+vIQJwqwLUYn+CGVg u9gnXvKV/+RKJhoYof9vCwVJFssLCyXcPjb0o/Fmo6yl8uB7XrbFqk6FycPyCyop/j9E SMEbnQaY8sdxbdJnPzmhkoW59EWAR8mt3Y765EM4oLPGcKSD75QKaubHdDP9UNaUsDNQ QLfvknOr+4eZSH0UCXH03t0LRO9jSYrZheAWDPBUUFgMBOq0+qZld5OjNTc/L/QGlNX7 Uf/ZUEsWh5E98zkv01+ojkB07t57XeiYItPkGNmxzn7IWuHjtqkv05+V1YYgs2br6XbG C6XA==
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=ltftvTSAZPLpt4IMOr/eMnTrcoeUdYy9enm9sEN9t/E=; b=Cto7p5uMHN9/BJuUfBACCv0KreVLgffcR2Ay1lq08tOHNUZsXMCp+BknYWlk5QYHA/ cdHznnfM7fzejNN3pQm1EYbnQA/qCod0e7h0ajDO71M8OyRnBHXRD4pfBo2leu5Acu1D WbY10YPCfpHlxRIQRK7+iWaIRjLzWim19qX3ymY7TX1knZdAmIl2D22YjTUArr+2bflE xQaJ3t+H3sB7fF4wyGVl3WpemfH0RMloYfKTJnDc1T7o7WEkoKaiTMfRf75TKHWYTNZr Znpg7hGJXlGgldeO0uwFxLY+Vn1NIIiwodfn2W+dRZ8EVBO7Hm4fB/jVVI2UiLYFZIWc NjMQ==
X-Gm-Message-State: AOAM531WUFwts/Go+VNKX090/42bExCZ20v+44nODWg+UKcVEfDCzx9r jbL03DnMjf4NdWlNOqBg/OQaPVQqAkWVvlO2JGJvUA==
X-Google-Smtp-Source: ABdhPJyvdTRYlJt9/Du3QG0Rkh+p3UYLoNhe2RWe00++vJqk6NsF2+7x+J/hs4nbX1lBw7nInVMZSnUgn3p1U9wiSYE=
X-Received: by 2002:a1f:8d92:: with SMTP id p140mr35276595vkd.19.1609336541736; Wed, 30 Dec 2020 05:55:41 -0800 (PST)
MIME-Version: 1.0
References: <160822770059.15041.16286115220871304513@ietfa.amsl.com> <CAK6E8=d1WsuNcdu_1hhn0x=Grom5WrMW8xhMXiREYx9Ys5xamw@mail.gmail.com> <20201229200656.GG89068@kduck.mit.edu> <CADVnQykhSzziSNfoYDZ-HSzTsAStDTG3YRRTM=mV+r7m37-_mw@mail.gmail.com> <20201230054144.GU89068@kduck.mit.edu>
In-Reply-To: <20201230054144.GU89068@kduck.mit.edu>
From: Neal Cardwell <ncardwell@google.com>
Date: Wed, 30 Dec 2020 08:55:25 -0500
Message-ID: <CADVnQymKWcEJdZ8MP--6i3Unj-vStYbW376hPq4T0Nt5EYzDNA@mail.gmail.com>
To: Benjamin Kaduk <kaduk@mit.edu>
Cc: Yuchung Cheng <ycheng@google.com>, 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="000000000000e5650205b7aedc5b"
Archived-At: <https://mailarchive.ietf.org/arch/msg/tcpm/ydGhKMcswZdytxKKKMQfBG3swMs>
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: Wed, 30 Dec 2020 13:55:45 -0000

On Wed, Dec 30, 2020 at 12:42 AM Benjamin Kaduk <kaduk@mit.edu> wrote:

> Hi Neal,
>
> On Tue, Dec 29, 2020 at 11:04:41PM -0500, Neal Cardwell wrote:
> > On Tue, Dec 29, 2020 at 3:07 PM Benjamin Kaduk <kaduk@mit.edu> wrote:
> >
> > > > > 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.
> > >
> > > I am quite confident that you know how this works, though I am not sure
> > > that I understand properly yet -- is the key distinction that
> "reordering
> > > has been observed" and "segments have been delivered out of order"
> refer to
> > > time vs TCP sequence number?  (There's not actually a need to respond;
> I am
> > > sure the document will be correct.  I am just curious, is all.)
> > >
> >
> > Benjamin, I think I did not previously understand your earlier remark: '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 now I think perhaps I understand what you were getting at: were you
> > remarking that there is an apparent contradiction in the text between "no
> > reordering has been observed on the connection so far" and "three
> segments
> > have been delivered out of order", so that it seems impossible for the
> > connection to meet the conditions for both "no reordering has been
> observed
> > on the connection so far" and "(a) three segments have been delivered out
> > of order since the last recovery"?
>
> Exactly so!  Sorry for not having been more clear originally.
>
> > I agree that the text of the draft as currently written seems
> contradictory
> > or at least unclear. :-)
>
> Well, I guess I can feel better about having been confused by it, now :)
>

Great. Thanks for raising this issue!


> > The "three segments have been delivered out of order" phrase in the draft
> > was meant to refer to three segments being SACKed. But now that you raise
> > this point, it seems to me it would be more correct and clear to say
> > something like "three segments have been SACKed", rather than "three
> > segments have been delivered out of order".
> >
> > From my perspective, the SACKed segments are not necessarily "delivered
> out
> > of order", they merely have at least one hole in the sequence space. For
> > example, in the sequence [1, 3, 4, 5], the [3, 4, 5] are not "out of
> > order", and were they TCP segments we would not say that reordering has
> > been observed; it's just that 2 is not (yet?) present.
>
> Indeed, there is some subjectivity in the definition of "out of order".
> (My initial draft comments on this document had included a request for more
> clarity on how to tell which segments are "out of order" as compared to
> some baseline, but I deleted it once I got to, IIRC, discussion in Section
> 6.2 about segments below RACK.fack getting acknowledged as being ones
> delivered out of order, which I took to be effectively a definition, and
> seemed well-formed at the time.  Though perhaps that formulation is not
> well-defined for what it means for a retransmitted segment to be
> out-of-order...)  If we apply the definition of "a segment is delivered out
> of order if, when it is ACKd, RACK.fack is greater than its sequence
> number" to your example above, it seems like we would conclude that 2 is
> out
> of order, but 3, 4, and 5 are in-order.  (Right?)
>

Right, exactly. If there are no retransmissions and the sequence of packet
deliveries is [1, 3, 4, 5, 2] then my intuition and
RACK_detect_reordering() would not conclude that 3, 4, 5 are "reordering",
but upon seeing that 2 is delivered both my intuition
an  RACK_detect_reordering() would declare that reordering has been seen.



> > I also like the "three segments have been SACKed" phrase since the "have
> > been SACKed" phrase is used in RFC6675 for a similar purpose in the
> > description of "IsLost (SeqNum):"
>
> Also a pretty compelling argument.
>
> > If it's not too late for edits, I would propose that the section you
> > mentioned ("3.3.2
> > <https://tools.ietf.org/html/draft-ietf-tcpm-rack-15#section-3.3.2>.
> > Reordering window adaptation") that says:
> >
> >    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
> >        or (b) the sender is already in fast or RTO recovery.
> >
> >
> > would be edited to:
> >
> >
> >    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 SACKed* since the last recovery
> >        or (b) the sender is already in fast or RTO recovery.
> >
> >
> > Benjamin, does that help address what you were talking about?
>
> Yes.  From my point of view, that proposal is a big improvement.


Great. Glad to hear it. We will talk it over among the draft co-authors and
see if we can make this more clear.

Thanks!

neal