<?xml version="1.0" encoding="US-ASCII"?>
<!-- This template is for creating an Internet Draft using xml2rfc,
     which is available here: http://xml.resource.org. -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<!-- used by XSLT processors -->
<!-- For a complete list and description of processing instructions (PIs), 
     please see http://xml.resource.org/authoring/README.html. -->
<!-- Below are generally applicable Processing Instructions (PIs) that most I-Ds might want to use.
     (Here they are set differently than their defaults in xml2rfc v1.32) -->
<?rfc strict="yes" ?>
<!-- give errors regarding ID-nits and DTD validation -->
<!-- control the table of contents (ToC) -->
<?rfc toc="yes"?>
<!-- generate a ToC -->
<?rfc tocdepth="4"?>
<!-- the number of levels of subsections in ToC. default: 3 -->
<!-- control references -->
<?rfc symrefs="yes"?>
<!-- use symbolic references tags, i.e, [RFC2119] instead of [1] -->
<?rfc sortrefs="yes" ?>
<!-- sort the reference entries alphabetically -->
<!-- control vertical white space 
     (using these PIs as follows is recommended by the RFC Editor) -->
<?rfc compact="yes" ?>
<!-- do not start each main section on a new page -->
<?rfc subcompact="no" ?>
<!-- keep one blank line between list items -->
<!-- end of list of popular I-D processing instructions -->

<rfc category="std" docName="draft-akiya-bfd-seamless-sr-01" ipr="trust200902">
  <!-- category values: std, bcp, info, exp, and historic
     ipr values: full3667, noModification3667, noDerivatives3667
     you can add the attributes updates="NNNN" and obsoletes="NNNN" 
     they will automatically be output with "(if approved)" -->

  <!-- ***** FRONT MATTER ***** -->

  <front>
    <title abbrev="Seamless BFD for SR">
	Seamless Bidirectional Forwarding Detection (BFD) for Segment&nbsp;Routing&nbsp;(SR)
    </title>

    <!-- add 'role="editor"' below for the editors if appropriate -->
    <!-- Another author who claims to be an editor -->

    <author fullname="Nobo Akiya" initials="N."
            surname="Akiya">
      <organization>Cisco Systems</organization>
      <address>
        <email>nobo@cisco.com</email>
      </address>
    </author>

    <author fullname="Carlos Pignataro" initials="C."
            surname="Pignataro">
      <organization>Cisco Systems</organization>
      <address>
        <email>cpignata@cisco.com</email>
      </address>
    </author>

    <author fullname="Nagendra Kumar" initials="N."
            surname="Kumar">
      <organization>Cisco Systems</organization>
      <address>
        <email>naikumar@cisco.com</email>
      </address>
    </author>

    <date year="2013" />

    <area>BFD Working Group</area>
    <workgroup>Internet Engineering Task Force</workgroup>

    <!-- WG name at the upperleft corner of the doc,
    IETF is fine for individual submissions.  
	If this element is not present, the default is "Network Working Group",
    which is used by the RFC Editor as a nod to the history of the IETF. -->

    <keyword>BFD</keyword>
    <keyword>seamless BFD</keyword>
    <keyword>negotiation free</keyword>
    <keyword>label verification</keyword>
    <keyword>segment routing</keyword>
    <keyword>IP</keyword>

    <!-- Keywords will be incorporated into HTML output
         files in a meta tag but they have no effect on text or nroff
         output. If you submit your draft to the RFC Editor, the
         keywords will be used for the search engine. -->

    <abstract>
    	<t>This specification defines procedures to use Seamless Bidirectional Forwarding Detection (S-BFD) in a Segment Routing (SR) based environment.</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>One application for Seamless Bidirectional Forwarding Detection (S-BFD) <xref target="I-D.akiya-bfd-seamless-base" /> is to perform full reachability validations, partial reachability validations and adjacency segment ID verifications on a Segment Routing (SR) based environment.</t>

    	<t>This specification defines procedures to use Seamless BFD in a SR based environment.</t>

    </section>

    <section title="BFD Target Identifier Types">

<t>BFD target identifier type of value 2 is used for SR. Note that BFD target identifier type of value 2, which specifies segment routing node segment ID, is not tied to a specific routing protocol. If definitions and procedures need routing protocol specifics, then IGP specific SR types will be defined.</t>

    </section>

    <section title="Reserved BFD Discriminators" anchor="Res_BFD_Dis">

<t>With SR technology, BFD target identifier type 2 is used. Node segment IDs are used as BFD discriminators. BFD discriminator values corresponding to all or subset of local node segment IDs are to be allocated from the discriminator pool for Seamless BFD.</t>

<t>Example:
<list style="symbols"><?rfc subcompact="yes" ?>
<t>BFD Target Identifier Type 2: Node segment ID 0x03E9A0FF maps to BFD discriminator 0x03E9A0FF.</t>
</list><?rfc subcompact="no" ?>
</t>

    </section>

    <section title="BFD Target Identifier Table">

<t>With SR BFD target identifier type, only locally reserved BFD discriminators and corresponding information are to be in this table. No inter-node communications are needed to exchange BFD discriminator and BFD target identifier mappings.</t>

    </section>

    <section title="Full Reachability Validations">

<section title="Initiator Behavior">

<t>Any SR network node can attempt to perform a full reachability validation to any BFD target identifier of type 2 (node segment ID) on other network nodes, as long as destination BFD target identifier is provisioned to use this mechanism. Transmitted BFD control packet by the initiator is to have &quot;your discriminator&quot; corresponding to destination BFD target identifier of type 2.</t>

<t>Initiator is to use following procedures to construct BFD control packets to perform SR full reachability validations:
<list style="symbols"><?rfc subcompact="yes" ?>
<t>MUST set &quot;your discriminator&quot; to target node segment ID.</t>
<t>MUST use explicit label switching packet format described in <xref target="I-D.akiya-bfd-seamless-base" />.</t>
</list><?rfc subcompact="no" ?>
</t>

</section>

<section title="Responder Behavior">

<t>To respond to received BFD control packet which was targeted to local BFD target identifier of type 2 (Segment Routing Node Segment ID), response BFD control packet is targeted to IP address taken from received &quot;source IP address&quot;. Responder MUST validate obtained IP address is in valid format (ex: not Martian address). Responder MUST consult local routing table to ensure obtained IP address is reachable. Responder MAY impose node segment ID, corresponding to obtained IP address, on the response BFD control packet.</t>

</section>

    </section>

    <section title="Partial Reachability Validations">

<t>Procedures described in <xref target="I-D.akiya-bfd-seamless-base" /> applies.</t>

    </section>

    <section title="MPLS Label Verifications" anchor="MPLS_label_verification">

<t>With target identifier type 2, SR based, when a network node wants to test an adjacency segment ID, then adjacency segment ID (label value + EXP) being tested is encoded as lower 23 bits of localhost IP destination address. When passive BFD session receives a SR BFD control packet with lower 23 bits of IP destination address non-zero, then response will contain adjacency segment ID (label value + EXP) corresponding to incoming interface as lower 23 bits of localhost IP destination address.</t>

<t>Simple ASCII art is provided to illustrate the MPLS label verification concept on a SR network.
<figure align="left"><preamble></preamble><artwork align="left"><![CDATA[
            md=50/yd=R3/DIP=127...R2R3
Active  [1] - - - - - - - - - - - -- - - >  Passive
BFD     < - - - - - - - - - - - - - - [2]   BFD
Session     md=R3/yd=50/DIP=127...R3R2      Session

                            (adj SID R2R3)->
  R1 ------------------ R2 ------------------ R3
                            <-(adj SID R3R2)
]]></artwork></figure>
</t>

<t>If a response BFD control packet is received, then initiator can conclude that a packet has reached intended node correctly. With information embedded in last 23 bits of response BFD control packet from responder, initiator has the ability to perform further verifications on how responded node received BFD control packet.</t>

    </section>

    <section title="Provisioning Active BFD Sessions for SR Networks" anchor="Provision_SR">

<t>Many factors will influence how to provision active BFD sessions on which network nodes. This section provides some provisioning suggestions of active BFD sessions on SR networks. However, they are only suggestions. Less provisioning of active BFD sessions may be required in some cases, or further active BFD sessions may be required in other cases.</t>

<t>Traffic engineered segment routing
<list style="symbols">

<t>Segment routing eliminates hop-by-hop signaling to create traffic engineered paths, as described in <xref target="I-D.previdi-filsfils-isis-segment-routing" />. When traffic engineered segment routing path is instantiated on an ingress node, with stack of segment IDs, absence of hop-by-hop signaling results in less confidence in reachability to egress as well as traversal of strictly routed segments. S-BFD can perform rapid verification of both prior to allowing service over instantiated traffic engineered segment routing paths. In addition, S-BFD can provide continuity check on both aspects, as detection time and coverage of S-BFD is much superior than IGP failure detection and convergence time.</t>

</list>
</t>

<t>Single node segment ID data forwarding
<list style="symbols">

<t>In order to protect all data passing through local network using single node segment ID, active BFD sessions can be instantiated on each network node to verify full reachability to all node segment IDs.</t>

</list>
</t>

<t>Centralized controller initiated S-BFD
<list style="symbols">

<t>Centralized controller based segment routing network monitoring techniques, such as the one described in [I-D.geib-spring-oam-usecase], are powerful. One aspect that is lacking from such techniques is the guarantee that monitor packet did indeed reach certain network node (i.e. u-turned at expected network node). Related aspect is the lack of guarantee that monitor packet over adjacency segment ID did indeed result in traversal of expected adjacency. Since S-BFD can fill in the missing holes, also running S-BFD in parallel from the central controller device will even strengthen the technique.</t>

</list>
</t>

    </section>

    <section anchor="Security" title="Security Considerations">

<t>Security considerations for BFD are discussed in <xref target="RFC5880" /> and security considerations for S-BFD are discussed in <xref target="I-D.akiya-bfd-seamless-base" />.</t>

    </section>

    <section anchor="IANA" title="IANA Considerations">
     <t>None</t>
    </section>

    <section title="Acknowledgements">

	<t>Authors would like to thank Marc Binderberger from Cisco Systems for providing valuable comments.</t>

    </section>

    <section title="Contributing Authors">

	<t>Dave Ward
    <vspace blankLines="0" />
	Cisco Systems
    <vspace blankLines="0" />
    Email: wardd@cisco.com</t>

    <t>Tarek Saad
    <vspace blankLines="0" />
	Cisco Systems
    <vspace blankLines="0" />
    Email: tsaad@cisco.com</t>

	<t>Siva Sivabalan
    <vspace blankLines="0" />
	Cisco Systems
    <vspace blankLines="0" />
    Email: msiva@cisco.com</t>

    </section>

  </middle>

  <!--  *****BACK MATTER ***** -->

  <back>
    <!-- References split into informative and normative -->

    <references title="Normative References">
	  <?rfc include="reference.RFC.2119"?>
	  <?rfc include="reference.RFC.5880"?>
         <?rfc include="reference.I-D.previdi-filsfils-isis-segment-routing"?>
         <?rfc include="reference.I-D.akiya-bfd-seamless-base"?>
    </references>

    <references title="Informative References">
	  <?rfc include="reference.RFC.5884"?>
<!-- xml2rfc web cannot translate this yet
         <?rfc include="I-D.geib-spring-oam-usecase"?>
-->
    </references>

    <!-- Change Log
v00-a 2013-05-20 Nobo: Initial version
v00-b 2013-05-24 Nobo: Included comments from Carlos/Nagendra
v00-c 2013-05-27 Nobo: Incorporated comments from Marc
v01-a 2013-12-04 Nobo: Minor tweak to keep draft alive
    -->
  </back>
</rfc>
