Re: [Idr] WG Adoption call for draft-spaghetti-idr-bgp-sendholdtimer-09 (2/28/2023 to 3/14/2023)

Jeffrey Haas <jhaas@pfrc.org> Wed, 08 March 2023 18:35 UTC

Return-Path: <jhaas@pfrc.org>
X-Original-To: idr@ietfa.amsl.com
Delivered-To: idr@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 8B9BFC1526FB for <idr@ietfa.amsl.com>; Wed, 8 Mar 2023 10:35:31 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Level:
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id evXRxigJh8fV for <idr@ietfa.amsl.com>; Wed, 8 Mar 2023 10:35:30 -0800 (PST)
Received: from slice.pfrc.org (slice.pfrc.org [67.207.130.108]) by ietfa.amsl.com (Postfix) with ESMTP id 2A1F7C1522A0 for <idr@ietf.org>; Wed, 8 Mar 2023 10:35:30 -0800 (PST)
Received: from smtpclient.apple (104-10-90-238.lightspeed.livnmi.sbcglobal.net [104.10.90.238]) by slice.pfrc.org (Postfix) with ESMTPSA id 865DC1E037; Wed, 8 Mar 2023 13:35:28 -0500 (EST)
Content-Type: text/plain; charset="us-ascii"
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.120.41.1.1\))
From: Jeffrey Haas <jhaas@pfrc.org>
In-Reply-To: <alpine.DEB.2.20.2303081757460.2636@uplift.swm.pp.se>
Date: Wed, 08 Mar 2023 13:35:27 -0500
Cc: Robert Raszuk <robert@raszuk.net>, idr@ietf.org
Content-Transfer-Encoding: quoted-printable
Message-Id: <8B30B017-295F-4D4E-B8EA-FF0E15471F47@pfrc.org>
References: <BYAPR08MB4872FD426205CAC6F82D22BEB3AD9@BYAPR08MB4872.namprd08.prod.outlook.com> <m2edq1ac7s.wl-randy@psg.com> <ZAZSyywxxg0HkaDw@snel> <CAOj+MMGiB8iiqKbj40kZsSFAQXCQ+baGQWuA7oQ1D0qF5aygeQ@mail.gmail.com> <alpine.DEB.2.20.2303070725390.2636@uplift.swm.pp.se> <CAOj+MMGUfxd1LLta9=_HU+uMKcbVVE6ijkG84-ST0LDo3m2MYQ@mail.gmail.com> <alpine.DEB.2.20.2303070953000.2636@uplift.swm.pp.se> <CAOj+MMF8gELjxXB=kmn3eTu8X96vP7ueOTSA6Q+V_086wfO=NQ@mail.gmail.com> <alpine.DEB.2.20.2303071107360.2636@uplift.swm.pp.se> <3caaea46-cc66-f084-ec9b-98783d6daa49@foobar.org> <CAOj+MME=-drWX_1=9T8jqBGvEfwB59PmjLoh65i8wvdppKFKYg@mail.gmail.com> <alpine.DEB.2.20.2303071224040.2636@uplift.swm.pp.se> <CAOj+MMFc29DOAL6QK3u9gzPBQPv3wRdhTRHRPD_1ABebtuX0=w@mail.gmail.com> <alpine.DEB.2.20.2303071246590.2636@uplift.swm.pp.se> <DB2B7372-D021-4E86-AF83-C6A55EF72D75@pfrc.org> <alpine.DEB.2.20.2303081108250.2636@uplift.swm.pp.se> <9505159A-F31F-4C1C-84BB-C9A2E7E46ED4@pfrc.org> <alpine.DEB.2.20.2303081757460.2636@uplift.swm.pp.se>
To: Mikael Abrahamsson <swmike@swm.pp.se>
X-Mailer: Apple Mail (2.3696.120.41.1.1)
Archived-At: <https://mailarchive.ietf.org/arch/msg/idr/NWYElJyOAydMJTlgrWlXAiu9UeY>
Subject: Re: [Idr] WG Adoption call for draft-spaghetti-idr-bgp-sendholdtimer-09 (2/28/2023 to 3/14/2023)
X-BeenThere: idr@ietf.org
X-Mailman-Version: 2.1.39
Precedence: list
List-Id: Inter-Domain Routing <idr.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/idr>, <mailto:idr-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/idr/>
List-Post: <mailto:idr@ietf.org>
List-Help: <mailto:idr-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/idr>, <mailto:idr-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 08 Mar 2023 18:35:31 -0000


> On Mar 8, 2023, at 12:06 PM, Mikael Abrahamsson <swmike@swm.pp.se> wrote:
> 
> On Wed, 8 Mar 2023, Jeffrey Haas wrote:
> 
>> In one case, it's not necessary for a sender to block due to lack of buffer.  TCP can provide the necessary information via user-timeout that the receiver is not consuming the things sent to it.  This is the user-timeout methodology.
> 
> This is not how I read RFC5482 (which I hope is the one we're discussing).
> 
> That's why I don't understand how user-timeout solves anything we're discussing here. User-timeout seems to just solve issues on the wire, not application layer.

You're correct about this.

The headache at hand is missing acks and signaling a half duplex disconnect compared to acks getting through but the window not opening.  That's your point, yes?


> 
>> Both approaches will eventually tell you that a receiver isn't draining.
> 
> Does it? If the receiver is not reading the socket, window goes to 0 and there's no data to be left un-acknowledged as it hasn't been sent yet, so I don't see how user-timeout will help.

Mostly the scenario where you get sender backpressure because of lost acks.

If this isn't the scenario you're primarily concerned about, then I agree that it seems like a distraction.

The headache I've lived with over the years is that from the perspective of a socket programmer, you don't get insight as to what is causing blockage.  Is it because acks aren't getting through with information that opens the window?  Is it that acks get through and the window isn't opening and stays zero-windowed for a long time?  

At the API layer, you just know that you're blocked.

Once you're to the point of starting tcpdump to figure out *why* you're blocked, you're already in trouble.

For the lost ack case, the timeout is helpful in helping you determine that tcp simply won't be able to help you.  This can permit you to bail out faster than waiting on default tcp timer behaviors.  

Does that solve the entirety of this problem?  No.  And that no is why I'm not presenting the timeout as "this is THE SOLUTION to the problem".  At best, it's a useful tool in helping out.  Even then, I'm uncomfortable with what an appropriate timeout would need to be.

> There is running code for the sendholdtimer proposal that has been shown to help, can the people proposing user-timeout please provide code and test-case to show that it actually works the way they think?

That would indeed be helpful.

-- Jeff