<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC1195 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.1195.xml">
<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC5120 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5120.xml">
<!ENTITY RFC5303 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5303.xml">
<!ENTITY RFC5306 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5306.xml">
<!ENTITY BFDBASE SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-bfd-base.xml">
<!ENTITY BFDGEN SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-bfd-generic.xml">
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<?rfc strict="yes" ?>
<?rfc toc="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc category="std" docName="draft-ietf-isis-bfd-tlv-02" ipr="trust200902">
  <front>
    <title abbrev="">IS-IS BFD Enabled TLV</title>

    <author fullname="Christian E. Hopps" initials="C.H." surname="Hopps">
      <organization>Cisco Systems</organization>

      <address>
        <postal>
          <street>170 W. Tasman Dr.</street>

          <city>San Jose</city>

          <code>95134</code>

          <region>California</region>

          <country>USA</country>
        </postal>

        <email>chopps@cisco.com</email>
      </address>
    </author>

    <author fullname="Les Ginsberg" initials="L" surname="Ginsberg">
      <organization>Cisco Systems</organization>

      <address>
        <postal>
          <street>510 McCarthy Blvd.</street>

          <city>Milpitas</city>

          <region>Ca.</region>

          <code>95035</code>

          <country>USA</country>
        </postal>

        <email>ginsberg@cisco.com</email>
      </address>
    </author>

    <date day="4" month="January" year="2010" />

    <area>Routing Area</area>

    <workgroup>IS-IS for IP Internets</workgroup>

    <keyword>Draft</keyword>

    <abstract>
      <t>This document describes a TLV for use in the IS-IS routing protocol
      that allows for the proper use of the Bidirectional Forwarding Detection
      protocol (BFD). 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.</t>
    </abstract>

    <note title="Requirements Language">
      <t>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 <xref
      target="RFC2119">RFC 2119</xref>.</t>
    </note>
  </front>

  <middle>
    <section title="Introduction">
      <t>The <xref target="I-D.ietf-bfd-base">Bidirectional Forwarding
      Detection protocol</xref> is a protocol that allows for detection of a
      forwarding plane failure between two routers. A router can use <xref
      target="I-D.ietf-bfd-base"></xref> to validate that a peer router's
      forwarding ability is functioning.</t>

      <t>One specific application of BFD as described in <xref
      target="I-D.ietf-bfd-generic"></xref> is to verify the forwarding
      ability of an IS-IS <xref target="RFC1195"></xref> router's adjacencies;
      however, the method described in <xref
      target="I-D.ietf-bfd-generic"></xref> 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.</t>
    </section>

    <section title="The Problem">
      <t>We observe that to allow for mixed use (i.e., some routers running
      BFD and some not) <xref target="I-D.ietf-bfd-generic"></xref> 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 would
      only establish a BFD session with C.</t>

      <t>The problem with this solution is that it assumes that the
      transmission and receipt of IS-IS 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.</t>

      <t>Thus, if we consider our previous example, and if C is currently
      experiencing an IPv4 forwarding failure that allows for IS-IS 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.</t>
    </section>

    <section title="The Solution">
      <t>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, and indeed that is our proposal.</t>

      <t>When sending an IIH on a BFD enabled interface, a router which
      supports this extension MUST include the BFD enabled TLV in its IIH. The
      contents of the TLV MUST indicate what topologies/protocols <xref
      target="RFC5120"></xref> have been enabled for BFD by including the
      appropriate MTID/NLPID pairs.</t>

      <t>When sending an IIH on an interface on which BFD is NOT enabled a
      router MUST NOT include the BFD enabled TLV.</t>

      <section title="State Definitions">
        <t>The following definitions apply to each IS-IS neighbor:</t>

        <t>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 for the MTID/NLPID this
        variable is set to TRUE. Otherwise the variable is set to FALSE.</t>

        <t>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.</t>

        <t>An ISIS_BFD_REQUIRED variable is set to the logical AND of all
        ISIS_TOPO_BFD_REQUIRED variables.</t>

        <t>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.</t>

        <t>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.</t>

        <t>An ISIS_NEIGHBOR_USEABLE variable is set to the logical OR of all
        ISIS_TOPO_USEABLE variables.</t>
      </section>

      <section title="Adjacency Establishment and Maintenance">
        <t>Whenever ISIS_BFD_REQUIRED is TRUE the following extensions to the
        rules for adjacency establishment and maintenance MUST apply:<list
            style="symbols">
            <t>ISIS_NEIGHBOR_USEABLE MUST be TRUE before the adjacency can
            transition from INIT to UP state</t>

            <t>When the IS-IS adjacency is UP and ISIS_NEIGHBOR_USEABLE
            becomes FALSE the IS-IS adjacency MUST transition to DOWN.</t>

            <t>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<xref
            target="RFC5303"></xref> in all transmitted IIHs.</t>

            <t>On a LAN circuit whenever ISIS_NEIGHBOR_USEABLE is FALSE, the
            IS Neighbors TLV advertising the MAC address of the neighbor MUST
            be omitted in all transmitted IIHs.</t>
          </list></t>
      </section>

      <section title="Advertisement of Topology Specific IS Neighbors">
        <t>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.</t>
      </section>
    </section>

    <section title="Transition">
      <t>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.</t>

      <t>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.</t>

      <t>If a BFD session is administratively shut down <xref
      target="I-D.ietf-bfd-base"></xref> 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.</t>
    </section>

    <section title="Graceful Restart">
      <t>It is worth considering what if anything should be done when IS-IS is
      gracefully restarting <xref target="RFC5306"></xref>.</t>

      <t>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. How this is implemented is beyond the scope of
      this document. Consult <xref target="I-D.ietf-bfd-generic"></xref> for
      further details.</t>
    </section>

    <section title="The BFD Enabled TLV">
      <t>The BFD enabled TLV is formatted as shown below. The TLV SHALL only
      be included in an IS-IS IIH PDU 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 <xref
      target="ISO9577"></xref></t>

      <t><figure>
          <preamble></preamble>

          <artwork><![CDATA[  Type   139 (suggested - to be assigned by IANA) 
  Length # of octets in the value field (3 to 255) 
  Value  three 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 
             +-----------------------+ 
        ]]></artwork>

          <postamble></postamble>
        </figure></t>
    </section>

    <section title="Security Considerations">
      <t>The TLV defined within this document describes an addition to the
      IS-IS Hello protocol and does not impact the security mechanism of the
      IS-IS protocol.</t>
    </section>

    <section title="IANA Considerations">
      <t>The following IS-IS TLV type is defined by this draft.</t>

      <figure>
        <preamble></preamble>

        <artwork><![CDATA[Name                                  Value  IIH   LSP  SNP
----------------------                -----  ---   ---  ---
BFD Enabled TLV                         139   y     n    n]]></artwork>

        <postamble></postamble>
      </figure>

      <t>Please update the IS-IS TLV Codepoint Registry accordingly.</t>

      <t>Note to RFC Editor: this section may be removed on publication as an
      RFC.</t>

      <t></t>
    </section>

    <section title="Acknowledgements">
      <t>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.</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <reference anchor="ISO9577">
        <front>
          <title>Protocol identification in the network layer(ISO/IEC
          9577)</title>

          <author>
            <organization abbrev="ISO">International Organization for
            Standardization</organization>
          </author>

          <date month="Dec" year="1999" />
        </front>

        <seriesInfo name="ISO/IEC" value="9577:1999, Fourth Edition" />
      </reference>

      &RFC1195;

      &RFC2119;

      &RFC5120;

      &RFC5303;

      &RFC5306;
    </references>

    <references title="Informative References">
      &BFDBASE;

      &BFDGEN;
    </references>
  </back>
</rfc>
