Subject: [Errata Held for Document Update] RFC5880 (5205)

From: RFC Errata System <[email-masked]>
Date: Wed, 14 Mar 2018 12:28:22 -0700 (PDT)

The following errata report has been held for document update 
for RFC5880, "Bidirectional Forwarding Detection (BFD)". 

--------------------------------------
You may review the report below and at:
http://www.rfc-editor.org/errata/eid5205

--------------------------------------
Status: Held for Document Update
Type: Technical

Reported by: Dave Katz <[email-masked]>
Date Reported: 2017-12-14
Held by: Alvaro Retana (IESG)

Section: 6.8.4

Original Text
-------------
If Demand mode is not active, and a period of time equal to the
Detection Time passes without receiving a BFD Control packet from the
remote system, and bfd.SessionState is Init or Up, the session has
gone down -- the local system MUST set bfd.SessionState to Down and
bfd.LocalDiag to 1 (Control Detection Time Expired).

Corrected Text
--------------
If Demand mode is not active, and a period of time equal to the
Detection Time passes without receiving a BFD Control packet from the
remote system, the session has
gone down -- the local system MUST set bfd.SessionState to Down and
bfd.LocalDiag to 1 (Control Detection Time Expired).

Notes
-----
This is based on an email I received from Anil Kumar of Nokia ([email-masked]).

The language as originally written made a session timeout a no-op when in Down state.  This was a gratuitous attempt to avoid a null state transition, but had the side effect of not setting the diag code (and otherwise is no different).

This turns out to be problematic in the case where system "A" signals AdminDown, causing system "B" to respond with Down state.  If the link then fails, the existing verbiage implies that "B" will not report the detection timeout, even locally.

If the link fails in a unidirectional manner (such that "B" is deaf), B will give no indication of a timeout in its outgoing Control packets back to A (which can in fact hear them).

Making the suggested change should ensure that the diagnostic code is always set to Detection Time Expired when Control packets stop arriving, even if the far end system was previously reporting AdminDown.

--------------------------------------
RFC5880 (draft-ietf-bfd-base-11)
--------------------------------------
Title               : Bidirectional Forwarding Detection (BFD)
Publication Date    : June 2010
Author(s)           : D. Katz, D. Ward
Category            : PROPOSED STANDARD
Source              : Bidirectional Forwarding Detection
Area                : Routing
Stream              : IETF
Verifying Party     : IESG

---

From: Ashesh Mishra <[email-masked]>
Date: Thu, 15 Mar 2018 02:45:26 +0000

If the BFD session is administratively down then, in my opinion, it should not report any other state. The admin asked it not to do anything else. While there may be loss of connectivity in the admin-down period, it may have been planned. When the admin wants monitoring of the link again and marks the session admin up, then the session should try and re-establish and will fail if the link is down ... with a Detection Time Expired message. But this should happen only when the session is admin-up. 

Thoughts, comments?

Ashesh 

-----Original Message-----
From: Rtg-bfd <[email-masked]> on behalf of RFC Errata System <[email-masked]>
Date: Wednesday, March 14, 2018 at 3:28 PM
To: "[email-masked]" <[email-masked]>, "[email-masked]" <[email-masked]>, "[email-masked]" <[email-masked]>
Cc: "[email-masked]" <[email-masked]>, "[email-masked]" <[email-masked]>, "[email-masked]" <[email-masked]>
Subject: [Errata Held for Document Update] RFC5880 (5205)

    

    Section: 6.8.4
    
    Original Text
    -------------
    
    Corrected Text
    --------------
    
    Notes
    -----

---

From: "Les Ginsberg (ginsberg)" <[email-masked]>
Date: Thu, 15 Mar 2018 05:18:26 +0000

The motivations for this errata puzzle me.

In the Notes you say:

“This turns out to be problematic in the case where system "A" signals AdminDown, causing system "B" to respond with Down state.  If the link then fails, the existing verbiage implies that "B" will not report the detection timeout, even locally.”

[Les:] If A has signaled AdminDown then it is expected that A will (after a prudent number of retransmissions of the AdminDown state as specified in Section 6.8.16) stop transmission. So why is there a need to report what is expected to happen after receiving AdminDown? It also isn’t clear how you could determine that the link has failed given that it is expected that A will stop transmissions.

“If the link fails in a unidirectional manner (such that "B" is deaf), B will give no indication of a timeout in its outgoing Control packets back to A (which can in fact hear them).”

[Les:] If B is deaf, how would it have received AdminDown?

The suggested change would also seem to violate Section 4.1 (emphasis added):

Diagnostic (Diag)

      A diagnostic code specifying the local system's reason for the
      last change in session state.  Values are:
…

      This field allows remote systems to determine the reason that the
      previous session failed, for example.

???

   Les

> From: Rtg-bfd [mailto:[email-masked]] On Behalf Of RFC Errata

> System

> Sent: Wednesday, March 14, 2018 12:28 PM

> To: [email-masked]; [email-masked]; [email-masked]

> Cc: [email-masked]; [email-masked]; [email-masked]

> The following errata report has been held for document update for RFC5880,

> "Bidirectional Forwarding Detection (BFD)".

> Reported by: Dave Katz <[email-masked]<mailto:[email-masked]>> Date Reported: 2017-12-14

> If Demand mode is not active, and a period of time equal to the Detection

> Time passes without receiving a BFD Control packet from the remote system,

> and bfd.SessionState is Init or Up, the session has gone down -- the local

> system MUST set bfd.SessionState to Down and bfd.LocalDiag to 1 (Control

> Detection Time Expired).

> If Demand mode is not active, and a period of time equal to the Detection

> Time passes without receiving a BFD Control packet from the remote system,

> the session has gone down -- the local system MUST set bfd.SessionState to

> Down and bfd.LocalDiag to 1 (Control Detection Time Expired).

> This is based on an email I received from Anil Kumar of Nokia

> ([email-masked]<mailto:[email-masked]>).

> The language as originally written made a session timeout a no-op when in

> Down state.  This was a gratuitous attempt to avoid a null state transition, but

> had the side effect of not setting the diag code (and otherwise is no

> different).

> This turns out to be problematic in the case where system "A" signals

> AdminDown, causing system "B" to respond with Down state.  If the link then

> fails, the existing verbiage implies that "B" will not report the detection

> timeout, even locally.

> If the link fails in a unidirectional manner (such that "B" is deaf), B will give no

> indication of a timeout in its outgoing Control packets back to A (which can in

> fact hear them).

> Making the suggested change should ensure that the diagnostic code is

> always set to Detection Time Expired when Control packets stop arriving,

> even if the far end system was previously reporting AdminDown.