Re: [Idr] TCP & BGP: Some don't send terminate BGP when holdtimer expired, because TCP recv window is 0

Jeffrey Haas <> Wed, 16 December 2020 21:44 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 8013E3A1122 for <>; Wed, 16 Dec 2020 13:44:01 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.901
X-Spam-Status: No, score=-1.901 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_PASS=-0.001] autolearn=unavailable autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id 1xVMZ4MGnOpP for <>; Wed, 16 Dec 2020 13:43:59 -0800 (PST)
Received: from ( []) by (Postfix) with ESMTP id D91EA3A110D for <>; Wed, 16 Dec 2020 13:43:59 -0800 (PST)
Received: by (Postfix, from userid 1001) id B39511E356; Wed, 16 Dec 2020 17:01:22 -0500 (EST)
Date: Wed, 16 Dec 2020 17:01:22 -0500
From: Jeffrey Haas <>
To: Brian Dickson <>
Cc: "Jakob Heitz (jheitz)" <>, "" <>
Message-ID: <>
References: <> <> <> <> <> <> <> <> <> <>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <>
User-Agent: Mutt/1.5.21 (2010-09-15)
Archived-At: <>
Subject: Re: [Idr] TCP & BGP: Some don't send terminate BGP when holdtimer expired, because TCP recv window is 0
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Inter-Domain Routing <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Wed, 16 Dec 2020 21:44:01 -0000


On Wed, Dec 16, 2020 at 11:17:37AM -0800, Brian Dickson wrote:
> Which is to say, there is EVERY reason to delete forwarding state.
> If a peer's router is so messed up that it is not accepting any TCP
> packets, the only safe assumption is that the problem is AS-wide for that
> peer.

While your later text does cover concerns about AS-wide events, I'd like to
suggest that your assumption doesn't necessarily hold.

A situation where we enter a half-duplex state and simply can't get a
response to packets we're pushing might simply impact a single peering
session.  The demonstration machinery Job mentions elsewhere in-thread is
an example of this.  Active attacks against TCP windowing mechanisms are

> While this is my opinion on the best way to handle it, the underlying facts
> aren't arguable.
> An AS-wide situation (stuck receivers with no TCP progress) would never
> result in the AS sending withdrawals.

For the incident in question, it's not possible for a single BGP
implementation to decide that something AS-wide is happening.  And even so,
auto-mitigation of this triggered by a single session on a single device
would be unwise.

> It has occured and can occur, ergo it needs to be handled outside of the
> state machine proper.

For the demonstrated case, a coordinated response was needed.  To some
extent, the argument is for tooling to permit easy shutdown of sessions.

Operators have plenty of provisioning machinery.  Writing up the use case
and motivations for encouraging such a thing seems like something
appropriate to an operational forum.

-- Jeff