<?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-00" 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 day="7" month="June" 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 (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 Bidrectional Forwarding Detection (BFD) [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. BFD discriminator values corresponding to all or subset of local node segment IDs are to be reserved on corresponding network node. Node segment IDs are used as BFD discriminators. Corresponding BFD discriminators MUST be reserved and those BFD discriminators MUST NOT be used for other BFD sessions.</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 [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 [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>SR TE LSP has path-protection and no local repairs on transit nodes: Active BFD sessions should be instantiated on the LSP ingress. Instantiated active BFD sessions should perform full reachability validation to all node segment IDs that are immediate nexthop of all adjacency segment IDs used in the LSP. This verifies that strict switching based on adjacency segment IDs is being switched to correct downstream node segment. If multiple links exist on one or more of adjacency points being validated, MPLS label verification technique should also be provisioned to ensure correct link is being traversed. Lastly, full reachability validation should be performed from LSP ingress to LSP egress to verify end-to-end reachability. Fate of the LSP is tied to all active BFD sessions instantiated on LSP ingress.</t>
<t>SR TE LSP has local repairs on transit nodes: Active BFD sessions should be instantiated on each local repair points, using combination of full reachability validation technique and MPLS label verification technique. These active sessions are programmed to be one of the triggers of local repair procedures. Lastly, full reachability validation should be performed from LSP ingress to LSP egress to verify end-to-end reachability, but this should be provisioned with more relaxed failure detection count than other active BFD sessions instantiated on transit repair points. Fate of the LSP is tied only to the active BFD session verifying end-to-end reachability on LSP ingress.</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 edge node to verify full reachability to all other network edge nodes.</t>
<t>Additionally, it may be beneficial to provision active BFD sessions on other network nodes (non-edge) for local repair purposes. These network nodes can also instantiate active BFD sessions to desired identifier (edge or non-edge).</t>
</list>
</t>

    </section>

    <section anchor="Security" title="Security Considerations">

<t>Same security considerations as <xref target="RFC5880" />, <xref target="RFC5881" />, <xref target="RFC5883" />, <xref target="RFC5884" />, <xref target="RFC5885" /> and [I-D.akiya-bfd-seamless-base] apply to this document.</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.RFC.5884"?>
       <?rfc include="reference.I-D.previdi-filsfils-isis-segment-routing"?>
       
    </references>
    
    <references title="Informative References">
	  <?rfc include="reference.RFC.2827"?>
       <?rfc include="reference.RFC.4379"?>
	  <?rfc include="reference.RFC.5881"?>
	  <?rfc include="reference.RFC.5883"?>
	  <?rfc include="reference.RFC.5885"?>
	  <?rfc include="reference.RFC.6428"?>
       <?rfc include="reference.I-D.ietf-bfd-on-lags"?>
    </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
    -->
  </back>
</rfc>
