RFC 6213 PROPOSED STANDARD ROUTING · IS-IS · BFD

IS-IS BFD TLV: IS-IS BFD-Enabled TLV

A flag in IS-IS hello packets that tells neighbors BFD is on, so a broken forwarding path is not missed.

On rfc-editor.org ↗
PUBLISHED
April 2011
AUTHORS
C. Hopps, L. Ginsberg
STREAM
IETF
TLV TYPE
148
TLV LENGTH
3 to 255 octets
ENTRY SIZE
3 octets (2 for MTID, 1 for NLPID)
CARRIED IN
IIH only
DOI
10.17487/RFC6213

RFC text

Contents
Original text · RFC Editor View on rfc-editor.org ↗
Internet Engineering Task Force (IETF)                          C. Hopps
Request for Comments: 6213                                   L. Ginsberg
Category: Standards Track                                  Cisco Systems
ISSN: 2070-1721                                               April 2011


                         IS-IS BFD-Enabled TLV

Abstract

   This document describes a type-length-value (TLV) for use in the IS-
   IS routing protocol that allows for the proper use of the
   Bidirectional Forwarding Detection (BFD) protocol.  There exist
   certain scenarios in which IS-IS will not react appropriately to a
   BFD-detected forwarding plane failure without use of either this TLV
   or some other method.

Status of This Memo

   This is an Internet Standards Track document.

   This document is a product of the Internet Engineering Task Force
   (IETF).  It represents the consensus of the IETF community.  It has
   received public review and has been approved for publication by the
   Internet Engineering Steering Group (IESG).  Further information on
   Internet Standards is available in Section 2 of RFC 5741.

   Information about the current status of this document, any errata,
   and how to provide feedback on it may be obtained at
   http://www.rfc-editor.org/info/rfc6213.

Copyright Notice

   Copyright (c) 2011 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (http://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Table of Contents

   1. Introduction ....................................................2
      1.1. Requirements Language ......................................2
   2. The Problem .....................................................2
   3. The Solution ....................................................3
      3.1. State Definitions ..........................................3
      3.2. Adjacency Establishment and Maintenance ....................4
      3.3. Advertisement of Topology-Specific IS Neighbors ............4
   4. Transition ......................................................4
   5. Graceful Restart ................................................5
   6. The BFD-Enabled TLV .............................................5
   7. Security Considerations .........................................6
   8. IANA Considerations .............................................6
   9. Acknowledgements ................................................6
   10. Normative References ...........................................7

1.  Introduction

   The Bidirectional Forwarding Detection (BFD) protocol [RFC5880] is a
   protocol that allows for detection of a forwarding plane failure
   between two routers.  A router can use [RFC5880] to validate that a
   peer router's forwarding ability is functioning.

   One specific application of BFD as described in [RFC5882] is to
   verify the forwarding ability of an IS-IS [RFC1195] router's
   adjacencies; however, the method described in [RFC5882] does not
   allow for certain failure scenarios.  We will define a TLV that will
   allow for proper response to the detection of all forwarding failures
   where the use of BFD is employed with IS-IS.

1.1.  Requirements Language

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in RFC 2119 [RFC2119].

2.  The Problem

   We observe that, in order to allow for mixed use (i.e., some routers
   running BFD and some not), [RFC5882] does not require a BFD session
   be established prior to the establishment of an IS-IS adjacency.
   Thus, if a router A has neighbors B and C, and B does not support
   BFD, A would still form adjacencies with B and C, and it would only
   establish a BFD session with C.

   The problem with this solution is that it assumes that the
   transmission and receipt of IS-IS Hellos (IIHs) shares fate with
   forwarded data packets.  This is not a fair assumption to make given
   that the primary use of BFD is to protect IPv4 (and IPv6) forwarding,
   and IS-IS does not utilize IPv4 or IPv6 for sending or receiving its
   hellos.

   Thus, if we consider our previous example, and if C is currently
   experiencing an IPv4 forwarding failure that allows for IIHs to be
   sent and received, when A first starts (or restarts), A will assume
   that C simply does not support BFD, will form an adjacency with C,
   and may incorrectly forward IPv4 traffic through C.

3.  The Solution

   A simple solution to this problem is for an IS-IS router to advertise
   that it has BFD enabled on a given interface.  It can do this through
   the inclusion of a TLV in its IIHs as described in this document.

   When sending an IIH on a BFD enabled interface, a router that
   supports this extension MUST include the BFD-enabled TLV in its IIH.
   The contents of the TLV MUST indicate what topologies/protocols
   [RFC5120] have been enabled for BFD by including the appropriate
   Multi-Topology Identifier (MTID)/ Network Layer Protocol Identifier
   (NLPID) pairs.

   When sending an IIH on an interface on which BFD is NOT enabled, a
   router MUST NOT include the BFD-enabled TLV.

3.1.  State Definitions

   The following definitions apply to each IS-IS neighbor:

   For each locally supported MTID/NLPID pair, an
   "ISIS_TOPO_NLPID_BFD_REQUIRED" variable is assigned.  If BFD is
   supported by both the local system and the neighbor of the MTID/
   NLPID, this variable is set to "TRUE".  Otherwise, the variable is
   set to "FALSE".

   For each locally supported MTID, an "ISIS_TOPO_BFD_REQUIRED" variable
   is set to the logical "OR" of all "ISIS_TOPO_NLPID_BFD_REQUIRED"
   variables associated with that MTID.

   An "ISIS_BFD_REQUIRED" variable is set to the logical "AND" of all
   "ISIS_TOPO_BFD_REQUIRED" variables.

   For each locally supported MTID/NLPID pair, an
   "ISIS_TOPO_NLPID_STATE" variable is assigned.  If
   "ISIS_TOPO_NLPID_BFD_REQUIRED" is "TRUE", this variable follows the
   BFD session state for that MTID/NLPID ("UP == TRUE").  Otherwise, the
   variable is set to "TRUE".

   For each locally supported topology (MTID), an "ISIS_TOPO_USEABLE"
   variable is set to the logical "AND" of the set of
   "ISIS_TOPO_NLPID_STATE" variables associated with that MTID.

   An "ISIS_NEIGHBOR_USEABLE" variable is set to the logical "OR" of all
   "ISIS_TOPO_USEABLE" variables.

3.2.  Adjacency Establishment and Maintenance

   Whenever "ISIS_BFD_REQUIRED" is "TRUE", the following extensions to
   the rules for adjacency establishment and maintenance MUST apply:

   o  "ISIS_NEIGHBOR_USEABLE" MUST be "TRUE" before the adjacency can
      transition from "INIT" to "UP" state.

   o  When the IS-IS adjacency is "UP" and "ISIS_NEIGHBOR_USEABLE"
      becomes "FALSE", the IS-IS adjacency MUST transition to "DOWN".

   o  On a Point-to-Point circuit whenever "ISIS_NEIGHBOR_USEABLE" is
      "FALSE", the Three-Way adjacency state MUST be set to "DOWN" in
      the Point-to-Point Three-Way Adjacency TLV [RFC5303] in all
      transmitted IIHs.

   o  On a LAN circuit whenever "ISIS_NEIGHBOR_USEABLE" is "FALSE", the
      IS Neighbors TLV advertising the Media Access Control (MAC)
      address of the neighbor MUST be omitted in all transmitted IIHs.

3.3.  Advertisement of Topology-Specific IS Neighbors

   The advertisement of a topology-specific IS neighbor (as well as the
   use of the neighbor in the topology-specific decision process) is
   determined by the value of "ISIS_TOPO_USEABLE" for each topology.  If
   "ISIS_TOPO_USEABLE" is "TRUE", then the topology-specific neighbor is
   advertised.  If "ISIS_TOPO_USEABLE" is "FALSE", then the topology-
   specific neighbor is not advertised.

4.  Transition

   To allow for a non-disruptive transition to the use of BFD, some
   amount of time should be allowed before bringing down an "UP"
   adjacency on a BFD enabled interface when the value of
   "ISIS_BFD_REQUIRED" becomes "TRUE" as a result of the introduction of
   the BFD TLV or the modification (by adding a new supported MTID/
   NLPID) of an existing BFD TLV in a neighbor's IIH.  A simple way to
   do this is to not update the adjacency hold time when receiving such
   an IIH from a neighbor with whom we have an "UP" adjacency until
   "ISIS_NEIGHBOR_USEABLE" becomes "TRUE".

   If the value of "ISIS_BFD_REQUIRED" becomes "FALSE" as a result of
   the removal the BFD TLV or the modification (by removing a supported
   MTID/NLPID) of an existing BFD TLV in a neighbor's IIH, then BFD
   session establishment is no longer required to maintain the adjacency
   or transition the adjacency to the "UP" state.

   If a BFD session is administratively shut down [RFC5880] and the BFD
   session state change impacts the value of "ISIS_NEIGHBOR_USEABLE",
   then IS-IS SHOULD allow time for the corresponding MTID/NLPID to be
   removed from the neighbor's BFD TLV by not updating the adjacency
   hold time until "ISIS_BFD_REQUIRED" becomes "FALSE".  Note that while
   this allows a non-disruptive transition, it still enforces
   consistency between the administrative state of the BFD session and
   the MTID/NLPID(s) advertised in the BFD TLV.  This is necessary to
   provide consistent behavior regardless of whether the BFD AdminDown
   state is introduced before or after an IS-IS adjacency "UP" state has
   been achieved.

5.  Graceful Restart

   This section describes IS-IS implementation considerations when both
   IS-IS graceful restart [RFC5306] and BFD are co-deployed.

   In cases where BFD shares fate with the control plane, it can be
   expected that BFD session failure may occur in conjunction with the
   control-plane restart.  In such cases, premature abort of IS-IS
   graceful restart as a result of BFD session failure is undesirable.
   Therefore, some mechanism to ignore the BFD session failure for a
   limited period of time would be beneficial.  The issue of the
   interaction between graceful restart and BFD is described at length
   in RFC 5882.  The implementation of this interaction is outside the
   scope of this document.

6.  The BFD-Enabled TLV

   The BFD-enabled TLV is formatted as shown below.  The TLV SHALL only
   be included in an IIH and only when BFD is enabled for one or more
   supported MTID/protocols on the interface over which the IIH is being
   sent.  The NLPIDs encoded in the TLV are defined in [ISO9577].

     Type   148
     Length # of octets in the value field (3 to 255)
     Value  3 octets specifying the MTID/NLPID for each
            topology/data protocol for which BFD support is enabled

                                          No. of octets
                +-----------------------+
                |R|R|R|R|   MTID        |     2
                +-----------------------+
                |      NLPID            |     1
                +-----------------------+
                :                       :
                :                       :
                +-----------------------+
                |R|R|R|R|   MTID        |     2
                +-----------------------+
                | NLPID                 |     1
                +-----------------------+

7.  Security Considerations

   The TLV defined within this document describes an addition to the
   IS-IS Hello protocol.  Inappropriate use of this TLV could prevent an
   IS-IS adjacency from forming or lead to failure to detect
   bidirectional forwarding failures -- each of which is a form of
   denial of service.  However, a party who can manipulate the contents
   of this TLV is already in a position to create such a denial of
   service by disrupting IS-IS routing in other ways.

   Note that the introduction of this TLV has no impact on the use/
   non-use of authentication either by IS-IS or by BFD.

8.  IANA Considerations

   The following IS-IS TLV type is defined by this document.

   Name                                  Value  IIH  LSP  SNP  Purge
   ----------------------                -----  ---  ---  ---  -----
   BFD-Enabled TLV                         148   y    n    n     n

   The IS-IS TLV Codepoint registry has been updated accordingly.

9.  Acknowledgements

   The authors wish to thank Jeffrey Haas, Matthew Jones, Dave Katz,
   Jonathan Moon, Stefano Previdi, Mike Shand, Michael Shiplett, and
   David Ward for various input on this document.

10.  Normative References

   [ISO9577]  International Organization for Standardization, "Protocol
              identification in the network layer(ISO/IEC 9577)", ISO/
              IEC 9577:1999, Fourth Edition, December 1999.

   [RFC1195]  Callon, R., "Use of OSI IS-IS for routing in TCP/IP and
              dual environments", RFC 1195, December 1990.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.

   [RFC5120]  Przygienda, T., Shen, N., and N. Sheth, "M-ISIS: Multi
              Topology (MT) Routing in Intermediate System to
              Intermediate Systems (IS-ISs)", RFC 5120, February 2008.

   [RFC5303]  Katz, D., Saluja, R., and D. Eastlake, "Three-Way
              Handshake for IS-IS Point-to-Point Adjacencies", RFC 5303,
              October 2008.

   [RFC5306]  Shand, M. and L. Ginsberg, "Restart Signaling for IS-IS",
              RFC 5306, October 2008.

   [RFC5880]  Katz, D. and D. Ward, "Bidirectional Forwarding Detection
              (BFD)", RFC 5880, June 2010.

   [RFC5882]  Katz, D. and D. Ward, "Generic Application of
              Bidirectional Forwarding Detection (BFD)", RFC 5882,
              June 2010.

Authors' Addresses

   Christian E. Hopps
   Cisco Systems
   170 W. Tasman Dr.
   San Jose, California  95134
   USA
   EMail: chopps@cisco.com


   Les Ginsberg
   Cisco Systems
   510 McCarthy Blvd.
   Milpitas, California  95035
   USA
   EMail: ginsberg@cisco.com

AI ELI5

On this page
PROBLEMIS-IS hellos do not travel over IPv4 or IPv6, so a router can form an adjacency with a neighbor whose IP forwarding is broken and wrongly assume that the neighbor just does not support BFD.
MECHANISMA router advertises a BFD-Enabled TLV (type 148) in its hellos, listing the topology and protocol pairs for which BFD is enabled. A neighbor then requires a working BFD session before treating the adjacency as usable.
WHY IT MATTERSIS-IS can react properly to every forwarding failure that BFD detects, including on startup or restart.

§1Introduction

The Bidirectional Forwarding Detection (BFD) protocol, defined in RFC 5880, lets a router detect a forwarding plane failure between two routers. RFC 5882 describes using BFD to verify the forwarding ability of the adjacencies of an IS-IS router (IS-IS itself is in RFC 1195), but its method does not cover certain failure scenarios.

RFC 6213 defines a type-length-value (TLV) that allows a proper response to all forwarding failures when BFD is used with IS-IS.

BFD is a fast way for two routers to check that the road between them works. This RFC fixes a gap in how IS-IS uses that check.

§2The Problem

To allow mixed use, where some routers run BFD and some do not, RFC 5882 does not require a BFD session before an IS-IS adjacency is formed. If router A has neighbors B and C, and B does not support BFD, A still forms adjacencies with both and sets up a BFD session only with C.

This assumes that IS-IS Hellos (IIHs) share fate with forwarded data packets. That is not a fair assumption, because BFD mainly protects IPv4 and IPv6 forwarding while IS-IS does not use IPv4 or IPv6 to send or receive its hellos. If C has an IPv4 forwarding failure that still lets hellos through, then when A starts or restarts it will assume C simply lacks BFD, form an adjacency, and may incorrectly forward IPv4 traffic through C.

If the walkie-talkie is silent, you cannot tell whether your friend has none or whether their bridge is broken. The hellos still get through even when the real road is broken.

§3The Solution: Advertise That BFD Is Enabled

An IS-IS router advertises that BFD is enabled on an interface by including a TLV in its IIHs. When sending an IIH on a BFD-enabled interface, a router that supports this extension MUST include the BFD-enabled TLV, listing the Multi-Topology Identifier (MTID) and Network Layer Protocol Identifier (NLPID) pairs that have BFD enabled. On an interface where BFD is NOT enabled, it MUST NOT include the TLV.

The receiver tracks state for each neighbor with a set of variables:

  • ISIS_TOPO_NLPID_BFD_REQUIRED is TRUE for an MTID/NLPID pair when both the local system and the neighbor support BFD for it.
  • ISIS_TOPO_BFD_REQUIRED is the OR of those values for an MTID, and ISIS_BFD_REQUIRED is the AND of the per-topology values.
  • ISIS_TOPO_NLPID_STATE follows the BFD session state when BFD is required, and is otherwise TRUE.
  • ISIS_TOPO_USEABLE is the AND of the states for a topology, and ISIS_NEIGHBOR_USEABLE is the OR of all topologies.

Each router puts up a sign saying what it checks with BFD. The neighbor keeps a scoreboard of which roads are both promised and confirmed working.

§4Adjacency Rules and Transitions

Whenever ISIS_BFD_REQUIRED is TRUE, these rules MUST apply. ISIS_NEIGHBOR_USEABLE MUST be TRUE before an adjacency moves from INIT to UP, and if it becomes FALSE while the adjacency is UP, the adjacency MUST go DOWN. On a point-to-point circuit the Three-Way adjacency state is set to DOWN in the Three-Way Adjacency TLV of RFC 5303 while it is FALSE. On a LAN circuit the IS Neighbors TLV with the neighbor's MAC address MUST be omitted. A topology-specific neighbor is advertised only when ISIS_TOPO_USEABLE is TRUE for that topology.

For a non-disruptive transition, some time should be allowed before bringing down an UP adjacency when a neighbor's TLV newly requires BFD. A simple way is to not update the adjacency hold time on such hellos until ISIS_NEIGHBOR_USEABLE becomes TRUE. If a BFD session is administratively shut down, IS-IS SHOULD allow time for the MTID/NLPID to be removed from the neighbor's TLV, again by not updating the hold time.

A road only counts as open when the walkie-talkie check works. If a friend newly says they are using one, you give them a little time to get it working before you close the road.

§5The BFD-Enabled TLV Format

The TLV has type 148. Its length is the number of octets in the value field, from 3 to 255. The value holds 3 octets for each topology and data protocol with BFD enabled: 2 octets with four reserved bits and the MTID, then 1 octet with the NLPID, as defined in ISO 9577. The TLV SHALL only be included in an IIH, and only when BFD is enabled for one or more supported MTID/protocols on the sending interface.

The sign is a list. Each entry is three small pieces of information saying which road and which kind of traffic is being checked.

ONE MTID/NLPID ENTRY IN THE BFD-ENABLED TLV (RFC 6213)
BFD-Enabled TLV value entry (3 octets, repeated)
FieldNameSizeValueDescription
RESERVEDR R R R4 bitsReserved bits.
MTIDMTID12 bitsMulti-Topology Identifier.
NLPIDNLPID1 byteNetwork Layer Protocol Identifier, as defined in ISO 9577.

§6Graceful Restart, Security and IANA

When IS-IS graceful restart (RFC 5306) and BFD are used together and BFD shares fate with the control plane, a BFD failure can coincide with a restart. Aborting graceful restart because of it is undesirable, so ignoring the BFD failure for a limited time would be beneficial. How to do this is outside the scope of the document.

Misusing the TLV could prevent an adjacency from forming or cause bidirectional forwarding failures to go undetected, both forms of denial of service. However, a party that can manipulate the TLV can already disrupt IS-IS in other ways. The TLV does not change the use of authentication by IS-IS or BFD. IANA registered TLV type 148 for IIH only (not LSP, SNP or purge).

If a router is restarting, a failed check might just be the restart, so it is smart to be patient. Someone who could mess with the sign could already cause trouble in other ways.

§7References