bfd-unsolicited, possible RFC 5880 ambiguity for passive mode

Jeffrey Haas <jhaas@pfrc.org> Wed, 02 March 2022 19:04 UTC

Return-Path: <jhaas@slice.pfrc.org>
X-Original-To: rtg-bfd@ietfa.amsl.com
Delivered-To: rtg-bfd@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id BD3063A0B64; Wed, 2 Mar 2022 11:04:34 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.911
X-Spam-Level:
X-Spam-Status: No, score=-1.911 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01] autolearn=ham autolearn_force=no
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 xa_CUKM4wFaa; Wed, 2 Mar 2022 11:04:32 -0800 (PST)
Received: from slice.pfrc.org (slice.pfrc.org [67.207.130.108]) by ietfa.amsl.com (Postfix) with ESMTP id B90D23A0B47; Wed, 2 Mar 2022 11:04:32 -0800 (PST)
Received: by slice.pfrc.org (Postfix, from userid 1001) id C04761E345; Wed, 2 Mar 2022 14:04:31 -0500 (EST)
Date: Wed, 02 Mar 2022 14:04:31 -0500
From: Jeffrey Haas <jhaas@pfrc.org>
To: rtg-bfd@ietf.org
Cc: draft-ietf-bfd-unsolicited@ietf.org
Subject: bfd-unsolicited, possible RFC 5880 ambiguity for passive mode
Message-ID: <20220302190431.GI13378@pfrc.org>
MIME-Version: 1.0
Content-Type: text/plain; charset="iso-8859-1"
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
User-Agent: Mutt/1.5.21 (2010-09-15)
Archived-At: <https://mailarchive.ietf.org/arch/msg/rtg-bfd/Z4JP4-XXgi_zBGwshQMLmWCr8UQ>
X-BeenThere: rtg-bfd@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: "RTG Area: Bidirectional Forwarding Detection DT" <rtg-bfd.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/rtg-bfd>, <mailto:rtg-bfd-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/rtg-bfd/>
List-Post: <mailto:rtg-bfd@ietf.org>
List-Help: <mailto:rtg-bfd-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/rtg-bfd>, <mailto:rtg-bfd-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 02 Mar 2022 19:04:35 -0000

Working Group,

Greg Mirsky brought to our attention that we may have an undefined edge case
covering Passive mode in RFC 5880.  This discussion is partially a result of
prior analysis about Demand mode, but Demand mode is not the relevant detail
here.

Presuming Greg's observation is correct, this is at least deserving an Errata.

Copying selectively from the thread with Greg:

RFC 5880, §6.1:
:   A system taking the
:   Passive role MUST NOT begin sending BFD packets for a particular
:   session until it has received a BFD packet for that session, and thus
:   has learned the remote system's discriminator value

Passive governs the initial connection.  A system desiring to be passive
can't fully go back to being passive until signaling to the remote system
sufficiently to take the session to the Down state.

RFC 5880 §6.8.7:
:   A system MUST NOT transmit BFD Control packets if bfd.RemoteDiscr is
:   zero and the system is taking the Passive role.

We have a session that's transitioning, the RemoteDiscr was known, but
procedure says to clear it:

RFC 5880 §6.8.1:
:   bfd.RemoteDiscr
:
:      The remote discriminator for this BFD session.  This is the
:      discriminator chosen by the remote system, and is totally opaque
:      to the local system.  This MUST be initialized to zero.  If a
:      period of a Detection Time passes without the receipt of a valid,
:      authenticated BFD packet from the remote system, this variable
:      MUST be set to zero.

So, without a deep comb-through of the RFC to find something that causes us
to send Down "long enough", passive mode could indeed imply with pedantic
reading of the RFC that you'd not do work that lets the remote take the
state down.  (See the Daves' caveat about excess pedantry.)

The obvious thing to do here is that we need to send packets in the Down
state for some period.  The reasonable question is, how long?  And even if
we provide a length of time, the obvious point is "is that long enough?"

Since Demand mode isn't a core scenario for the bfd-unsolicited draft, we
don't have the unfortunate circumstance that reporting the BFD state is
difficult.  A session that was Up minimally in the presence of such pedantic
behavior would simply go Down at the Active side once the Detection Interval
expired.

Since bfd-unsolicited has implementations, what do YOUR implementations do?

One option would be to transmit Down for at least DetectMult number of
packets.

-- Jeff