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

Job Snijders <> Wed, 16 December 2020 20:07 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 172A43A0EC9 for <>; Wed, 16 Dec 2020 12:07:38 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.9
X-Spam-Status: No, score=-1.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_PASS=-0.001, UNPARSEABLE_RELAY=0.001] autolearn=ham autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id O6cvnbdnM3jo for <>; Wed, 16 Dec 2020 12:07:35 -0800 (PST)
Received: from ( [IPv6:2a01:4f8:fff0:2d:8::215]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 6FA333A0EC8 for <>; Wed, 16 Dec 2020 12:07:34 -0800 (PST)
Received: from (unknown []) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 7BC43601AE; Wed, 16 Dec 2020 20:07:31 +0000 (UTC)
Received: from ( []) by
Received: from localhost ( [local]) by (OpenSMTPD) with ESMTPA id e446a161; Wed, 16 Dec 2020 20:07:27 +0000 (UTC)
Date: Wed, 16 Dec 2020 20:07:27 +0000
From: Job Snijders <>
To: Robert Raszuk <>
Cc: "Jakob Heitz (jheitz)" <>, "" <>
Message-ID: <X9po/91zjLQ3ODp/>
References: <> <> <> <> <> <> <> <> <> <>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <>
X-Clacks-Overhead: GNU Terry Pratchett
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 20:07:38 -0000

On Wed, Dec 16, 2020 at 08:53:25PM +0100, Robert Raszuk wrote:
> I think your observations may not always apply.
> Imagine you are peering with a stub customer and he is only getting default
> route from you while advertising few routes to your ASN.

The stub customer still is not be receiving KEEPALIVEs, the stub has no
idea should you want to announce routes in addition to the default
route, or withdraw the default route (for some type of maintenance). All
these important BGP messages simply never make it to the stuck peer.

Flapping the session increases chances of recovery, or at least draws
operator attention.

> At min make before break (new session should be established - if
> possible) before killing the old one.

What if new session can't establish? The old session still is stuck and
most likely hurting the users of the network. As stated before in the
thread: this 'stuck' situation does *not* appear under normal
circumstances, many BGP sessions have been inspected. We now know of
multiple situations where automatic disconnection of 'stuck' peers would
have helped improve global routing.

A consession: vendors are free to make it possible to disable the new
improved behavior. If an operator knows of a deployment scenario where
after exchanging the OPEN & sending a single UPDATE (that default route)
no further bi-directional communication is required, sure. However, I'd
probably recommend considering RIP instead of BGP at that point ;-)

Kind regards,


ps. No snark intended: I appreciate the working group looking at each
and every corner case. I understand it is quite unusual for someone to
point at the BGP-4 FSM and say 'I think we are hurting here', decades
into the deployment.