<?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-base-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 Base">
	Seamless Bidirectional Forwarding Detection (BFD) with  MPLS Label Verification Extension
    </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="Dave Ward" initials="D."
            surname="Ward">
      <organization>Cisco Systems</organization>
      <address>
        <email>wardd@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 a generic simplified mechanism to use Bidirectional Forwarding Detection (BFD) with large portions of negotiation aspects eliminated, and to allow full and partial reachability validations. For MPLS based BFD, extensions to the generic mechanism are defined for BFD to perform a level of label verifications.</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>Bidirectional Forwarding Detection (BFD), <xref target="RFC5880" /> and related documents, has efficiently generalized the failure detection mechanism for multiple protocols and applications. There are some improvements which can be made to better fit existing technologies. There are also possibility of evolving BFD to better fit new technologies. This document focuses on several aspects of BFD in order to further improve efficiency, to expand failure detection coverage and to allow BFD usage for wider scenarios.</t>

<t>
<list style="symbols">

<t>There are scenarios where only one side of the BFD, not both, is interested in performing reachability validations. One example is when static route uses BFD to validate nexthop IP address. Another example is when uni-directional tunnel uses BFD to validate reachability to egress node. With these scenarios, corresponding BFD sessions need to be provisioned or instantiated on target nodes but adds very minimal value to those nodes, if any.</t>

<t>It is expected that some MPLS technologies will require traffic engineered LSPs to get created dynamically, driven by external applications (ex: SDN). If BFD was to perform reachability validations on LSP prior to requested network node communicating back to the application of LSP readiness, then it would be desirable for BFD to come up fast in order to allow requesting application to proceed. <xref target="RFC5884" /> can take some time as BFD sessions need to get created on both ends, egress via LSP ping, and then session negotiations take place.</t>

<t>Existing BFD mechanics provides end-to-end reachability validations well. It does not, however, allow BFD to perform partial reachability validations: ingress to transit, transit to transit, transit to egress.</t>

<t><xref target="RFC5884" /> defines a mechanism to run BFD on exiting MPLS technologies. This mechanism is very useful to perform end-to-end LSP liveliness verification check. However, this mechanism lacks the ability to validate traversal of the intended LSP path. Specifically when one or more nodes along the LSP incorrectly label switch the BFD packet, but it still manages to reach the intended LSP egress node. Likelihood of this issue being seen depends on deployed MPLS technologies. With MPLS technologies which make use of downstream label allocation scheme (ex: RSVP, LDP), incoming label itself provides a level of check as a node will drop any packet containing non-self-advertised label as the top label or will get delivered to unintended egress node. For those MPLS technologies, issue will be less likely to be seen. With MPLS technologies such as Segment Routing (SR), incoming label can often be a label allocated and advertised by a node that is multiple downstream hops away. For such MPLS technologies,  issue will be more likely to be seen. <xref target="RFC4379" /> can detect such broken LSPs, but it is often difficult to run this technology at the rate which BFD is capable of.</t>

<t>A node may desire to run multiple BFD sessions to a network target. One such scenario is if multiple applications on the system required to run BFD to a same target but with different failure detection time requirements. Another scenario is to run multiple instances of BFD, hosted on different parts of the system (ex: different CPUs), to a same network target, in order to increase BFD failure reliability by reducing the chance of unrelated local fault causing BFD to declare failure.</t>

</list>
</t>

<t>This specification provides solutions to above aspects by defining a generic simplified mechanism to use Bidirectional Forwarding Detection (BFD) with large portions of negotiation aspects eliminated, and to allow full and partial reachability validations. For MPLS based BFD, extensions to the generic mechanism are defined for BFD to perform a level of label verifications.</t>

<t>The reader is expected to be familiar with the BFD, IP, MPLS and SR terminologies and protocol constructs.</t>

    </section>

    <section title="Seamless BFD Overview">

<t>Seamless BFD creates packet reflection points in the network. A network node is able to send BFD control packets to these reflection points, and expect response BFD control packets. These reflection points are called BFD target identifiers. Pseudo BFD session instances, referred to as reflector BFD sessions, created on BFD target identifiers are responsible for processing &quot;ping&quot; BFD control packets and generating &quot;pong&quot; BFD control packets.</t>

    </section>

    <section title="BFD Target Identifier Types">

<t>Number of network identifiers types (ex: IP address, segment ID) can make use of this mechanism. To differentiate between different network identifier types, a value is assigned to each type.</t>

<t>BFD Target Identifier types:

<figure align="left"><preamble></preamble><artwork align="left">
      Value    BFD Target Identifier Type
     ------    --------------------------
          0    Reserved
          1    IP (IPv4 Address and Router ID)
          2    Segment Routing Node Segment ID
</artwork></figure>

Note that IP based BFD from <xref target="RFC5885" /> is supported by this specification, but IP-less based BFD is outside the scope of this document.</t>

<t>Further identifier types to be defined as needed basis.</t>

    </section>

    <section title="Reserved BFD Discriminators" anchor="Res_BFD_Dis">

<t>All local network identifiers which are to participate in this mechanism are to have specific BFD discriminators assigned. Assigned BFD discriminators are attached to corresponding identifiers until they are explicitly un-provisioned. BFD discriminators used for this mechanism are considered reserved, and MUST NOT be reused for other BFD sessions.</t>

<t>Some examples of network identifier to BFD discriminator mappings:
<list style="symbols">
<t>BFD Target Identifier Type 1: IPv4 address 1.1.1.1 maps to BFD discriminator 0x01010101.</t>
<t>BFD Target Identifier Type 2: Node segment ID 0x03E800FF maps to BFD discriminator 0x03E800FF.</t>
</list>
</t>

<t>It is possible, although foreseen to be extremely rare, for identifiers of different BFD target identifier types to map to same BFD discriminator. How such conflict is to be resolved is outside the scope of this document.</t>

    </section>

    <section title="BFD Target Identifier Table">

<t>Each network node is responsible for creating and maintaining a table that contains BFD discriminators, BFD target identifier types and BFD target identifiers. Intention of this table is to allow local entities to perform following lookups:
<list style="symbols">
<t>BFD discriminator to BFD target identifier type and BFD target identifier</t>
<t>BFD target identifier type and BFD target identifier to BFD discriminator</t>
</list>
This table MUST contain entries for all locally reserved BFD discriminators and corresponding information. This table MAY need to contain entries from other network nodes, depending on the BFD target identifier type.</t>

    </section>

    <section title="Reflector BFD Session">

<t>Each network node MUST create one or more reflector BFD sessions.  This reflector BFD session is a session which transmits BFD control packets in response to received valid locally destined BFD control packets. Specifically, this reflector BFD session is to have following characteristics:
<list style="symbols">
<t>Does not transmit any BFD control packets based on local timer expiry.</t>
<t>Transmits BFD control packet in response to received valid locally destined BFD control packet.</t>
<t>Capable of sending only two states: UP and ADMINDOWN.</t>
</list>
One reflector BFD session can be responsible for handling response to received BFD control packets targeted to all local BFD target identifiers, or few reflector BFD sessions can each be responsible for subset of local BFD target identifiers. This policy is a local matter, and is outside the scope of this document.
</t>

<t>
In addition, a reflector BFD session MUST be address family agnostic. Single reflector BFD session MUST be able to handle incoming BFD control packets in IPv4 and IPv6, and MUST be able to respond with BFD control packets using same address family as received packets.
</t>

    </section>

    <section title="Full Reachability Validations">

<section title="Initiator Behavior">

<t>Any network node can attempt to perform a full reachability validation to any BFD target identifier 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.</t>

<t>A node that initiates a BFD control packet can create an active BFD session to periodically send BFD control packet to a target, or BFD control packet can be crafted and sent out on &quot;as needed basis&quot; (ex: BFD ping) without any session presence. In both cases, a BFD instance MUST have unique &quot;my discriminator&quot; value assigned. If a node is to create multiple BFD instances to a same BFD target identifier, then each instance MUST have separate &quot;my discriminator&quot; values assigned.</t>

<t>If BFD control packet is to be sent via IP path, then:
<list style="symbols"><?rfc subcompact="yes" ?>
<t>Destination IP address MUST be an IP address corresponding to target identifier.</t>
<t>Source IP address MUST be a local IP address.</t>
<t>IP TTL MUST be 255 for full reachability validations. Partial reachability validations MAY use smaller TTL value (see <xref target="Part_Reach_Valid" />).</t>
<t>One of well-known UDP destination ports for IP based BFD: 3784 for singlehop, 4784 for multihop, 6784 for BFD for LAG</t>
</list><?rfc subcompact="no" ?>
</t>

<t>If BFD control packet is to be sent via explicit label switching, then:
<list style="symbols"><?rfc subcompact="yes" ?>
<t>BFD control packet MUST get imposed with a label stack that is expected to reach the target node.</t>
<t>MPLS TTL MUST be 255 for full reachability validations. Partial reachability validations MAY use smaller TTL value (see <xref target="Part_Reach_Valid" />).</t>
<t>Destination IP address MUST be 127/8 for IPv4 and 0:0:0:0:0:FFFF:7F00/104 for IPv6.</t>
<t>Source IP address MUST be a local IP address.</t>
<t>IP TTL=1.</t>
<t>Well-known UDP destination port for MPLS based BFD: 3784</t>
</list><?rfc subcompact="no" ?>
</t>

</section>

<section title="Responder Behavior">

<t>A network node which receives BFD control packets transmitted by an initiator is referred as responder. Responder, upon reception of BFD control packets, is to perform necessary relevant validations described in <xref target="RFC5880" />/<xref target="RFC5881" />/<xref target="RFC5883" />/<xref target="RFC5884" />/<xref target="RFC5885" />.</t>

<section title="Responder Demultiplexing">

<t>When responder receives a BFD control packet, if &quot;your discriminator&quot; value is not one of local entries in the BFD target identifier table, then this packet MUST NOT be considered for this mechanism. If &quot;your discriminator&quot; value is one of local entries in the BFD target identifier table, then the packet is determined to be handled by a reflector BFD session responsible for specified BFD targeted identifier. If the packet was determined to be processed further for this mechanism, then chosen reflector BFD session is to transmit a response BFD control packet using procedures described in <xref target="Res_Proc" />, unless prohibited by local administrative or local policy reasons.</t>

</section>

<section title="Reflector BFD Session Procedures" anchor="Res_Proc">

<t>BFD target identifier type MUST be used to determine further information on how to reach back to the initiator.</t>

<t>In addition, destination IP address of received BFD control packet MUST be examined to determine how to construct response BFD control packet to send back to the initiator.</t>

<t>If destination IP address of received BFD control packet is not 127/8 for IPv4 or 0:0:0:0:0:FFFF:7F00/104  for IPv6, then:
<list style="symbols"><?rfc subcompact="yes" ?>
<t>Destination IP address MUST be copied from received source IP address.</t>
<t>Source IP address MUST be copied from received destination IP address if received destination IP address is a local address. Otherwise local IP address MUST be used.</t>
<t>IP TTL MUST be 255.</t>
</list><?rfc subcompact="no" ?>
</t>

<t>If destination IP address of received BFD control packet is 127/8 for IPv4 or 0:0:0:0:0:FFFF:7F00/104  for IPv6, then received IP destination MUST be further examined to determine response transport options. If last 23 bits of 127/8 for IPv4 and 0:0:0:0:0:FFFF:7F00/104 for IPv6 is zero, then response SHOULD be label switched but MAY be IP routed. If last 23 bits of 127/8 for IPv4 and 0:0:0:0:0:FFFF:7F00/104 for IPv6 is not zero, then response SHOULD be label switched and SHOULD NOT be IP routed. Description of 23 bits is described in <xref target="MPLS_label_verification" />.</t>

<t>If BFD control packet response is determined to be IP routed, then:
<list style="symbols"><?rfc subcompact="yes" ?>
<t>Destination IP address MUST be copied from received source IP address.</t>
<t>Source IP address MUST be a local address.</t>
<t>IP TTL MUST be 255.</t>
</list><?rfc subcompact="no" ?>
</t>

<t>If BFD control packet response is determined to be label switched, then:
<list style="symbols"><?rfc subcompact="yes" ?>
<t>BFD control packet MUST get label switched back to the initiator. How label stack to be imposed on a response BFD control packet is determined for all cases is outside the scope of this document.</t>
<t>MPLS TTL MUST be 255.</t>
<t>Destination IP address MUST be 127/8 for IPv4 and 0:0:0:0:0:FFFF:7F00/104 for IPv6.</t>
<t>Source IP address MUST be a local IP address.</t>
<t>IP TTL MUST be 1.</t>

</list><?rfc subcompact="no" ?>
</t>

<t>Regardless of the response type, BFD control packet being sent by the responder MUST perform following procedures:
<list style="symbols"><?rfc subcompact="yes" ?>
<t>Copy &quot;my discriminator&quot; from received &quot;your discriminator&quot;, and &quot;your discriminator&quot; from received &quot;my discriminator&quot;.</t>
<t>UDP destination port MUST be same as received UDP destination port.</t>
</list>
</t>

</section>

</section>

<section title="Further Packet Details">

<t>Further details of BFD control packets sent by initiator (ex: active BFD session):
<list style="symbols"><?rfc subcompact="yes" ?>
<t>UDP destination port described in <xref target="RFC5881" />/<xref target="RFC5883" />/<xref target="RFC5884" />/<xref target="RFC5885" />.</t>
<t>UDP source port as per described in <xref target="RFC5881" />/<xref target="RFC5883" />/<xref target="RFC5884" />/<xref target="RFC5885" />.</t>
<t>&quot;my discriminator&quot; assigned by local node.</t>
<t>&quot;your discriminator&quot; corresponding to an identifier of target node.</t>
<t>&quot;State&quot; MUST be set to a value reflecting local state.</t>
<t>&quot;Desired Min TX Interval&quot; MUST be set to a value reflecting local desired minimum transmit interval.</t>
<t>&quot;Required Min RX Interval&quot; MUST be zero.</t>
<t>&quot;Required Min Echo RX Interval&quot; SHOULD be zero.</t>
<t>&quot;Detection Multiplier&quot; MUST be set to a value reflecting locally used multiplier value.</t>
</list><?rfc subcompact="no" ?>
</t>

<t>Further details of BFD control packets sent by responder (reflector BFD session):
<list style="symbols"><?rfc subcompact="yes" ?>
<t>UDP destination port described in <xref target="RFC5881" />/<xref target="RFC5883" />/<xref target="RFC5884" />/<xref target="RFC5885" />.</t>
<t>UDP source port as per described in <xref target="RFC5881" />/<xref target="RFC5883" />/<xref target="RFC5884" />/<xref target="RFC5885" />.</t>
<t>&quot;my discriminator&quot; MUST be copied from received &quot;your discriminator&quot;.</t>
<t>&quot;your discriminator&quot; MUST be copied from received &quot;my discriminator&quot;.</t>
<t>&quot;State&quot; MUST be UP or ADMINDOWN. Usage of ADMINDOWN state is described in <xref target="Add_Res_Beh" />.</t>
<t>&quot;Desired Min TX Interval&quot; MUST be copied from received &quot;Desired Min TX Interval&quot;.</t>
<t>&quot;Required Min RX Interval&quot; MUST be set to a value reflecting how many incoming control packets this reflector BFD session can handle.</t>
<t>&quot;Required Min Echo RX Interval&quot; SHOULD be set to zero.</t>
<t>&quot;Detection Multiplier&quot; MUST be copied from received &quot;Detection Multiplier&quot;.</t>
</list><?rfc subcompact="no" ?>
</t>

<t>Simple ASCII art is provided to illustrate the concept described so far.
<figure align="left"><preamble></preamble><artwork align="left"><![CDATA[
         md=50/yd=R2
Active   [1] - - - >  Reflector
BFD      < - - - [2]  BFD
Session  md=R2/yd=50  Session

  R1 ------------------ R2 --------------- R3 --------------- R4
                       |  ^
                      [2] |        md=60/yd=R2               BFD
                       |  + - - - - - - - - - - - - - - [1]  Ping
                       + - - - - - - - - - - - - - - - -> (No Active)
                                   md=R2/yd=60
]]></artwork></figure>
</t>

</section>

<section title="Diagnostic Values">

<t>Diagnostic value in both directions MAY be set to a certain value, to attempt to communicate further information to both ends. However, details of such are outside the scope of this specification.</t>

</section>

<section title="Additional Initiator Behavior">

<t>
<list style="symbols">

<t>If initiator receives valid BFD control packet in response to transmitted BFD control packet, then initiator SHOULD conclude that packet reached intended target.</t>

<t>How many repeated absence of response should make initiator consider loss of reachability, and what action would be triggered as result are outside the scope of this specification.</t>

</list>
</t>

</section>

<section title="Additional Responder Behavior" anchor="Add_Res_Beh">

<t>

<list style="symbols">

<t>BFD control packets transmitted by a reflector BFD session MUST have &quot;Required Min RX Interval&quot; set to a value which reflects how many incoming control packets this reflector BFD session can handle. Responder can control how fast initiators will be sending BFD control packets to self by ensuring &quot;Required Min RX Interval&quot; reflects a value based on current load.</t>

<t>If a reflector BFD session wishes to communicate to some or all initiators that monitored BFD target identifier is &quot;temporary out of service&quot;, then BFD control packets with &quot;state&quot; set to ADMINDOWN are sent to those initiators. Initiators, upon reception of such packets, MUST NOT conclude loss of reachability to corresponding BFD target identifier, and MUST back off packet transmission interval to corresponding BFD target identifier an interval no faster than 1 second.</t>

</list>
</t>

</section>

    </section>

    <section title="Partial Reachability Validations" anchor="Part_Reach_Valid">

<t>Same mechanism as described in &quot;Full Reachability Validations&quot; section will be applied with exception of following differences on initiator.
<list style="symbols">
<t>When initiator wishes to perform a partial reachability validation towards identifier X on identifier Y, number of hops to identifier Y is calculated.</t>
<t>TTL value based on this calculation is used as the IP TTL or MPLS TTL on top most label, and &quot;your discriminator&quot; of transmitted BFD control packet will carry BFD discriminator corresponding to target transit identifier Y.</t>
<t>Imposed label stack or IP destination address will continue to be of identifier X.</t>
</list>
</t>

    </section>

    <section title="MPLS Label Verifications" anchor="MPLS_label_verification">

<t>This section is only applicable to MPLS based sessions using this mechanism.</t>

<section title="MPLS Label Verifications Mechanism">

<t>With full and partial reachability validations, initiator has the ability to determine if target identifier received the packet on any interfaces. This section describes additional mechanism for initiator to determine if target identifier received the packet on a specific interface.</t>

<t>So far for MPLS based sessions, this mechanism makes use of destination IP address of 127/8 range for IPv4 and of 0:0:0:0:0:FFFF:7F00/104 range for IPv6, in both directions. In this section, 127/8 will be used to describe the MPLS label verification mechanism. However, same concept is to be applied to IPv6 range 0:0:0:0:0:FFFF:7F00/104.</t>

<t>When a network node wishes to perform MPLS label verification, BFD control packet will have lower 23 bits of 127/8 destination IP address embedded with (label value + EXP) that is used to reach intended target identifier. Receiver of this BFD control packet, if last 23 bits of 127/8 address is not zero, then will embed information reflecting how the packet was received in the lower 23 bits of 127/8 destination IP address in the response BFD control packet. If responder received the BFD control packet on a non-point-to-point interface, source MAC address MAY need to be examined to determine the &quot;RX info&quot; to embed in the returning packet.

<figure align="left"><preamble></preamble><artwork align="left">

  0                   1                   2                   3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |      0x7F     |R|     Zero or (label + EXP) or RX info        |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork></figure>

9th bit is reserved for the time being and SHOULD be set to zero and SHOULD be ignored on receipt, by both initiator and responder</t>

<t>Initiator receiving back a response will know that packet did reach intended identifier. Initiator can also look into lower 23 bits of IP destination address in received BFD control packet to determine if packet sent was received by intended identifier in expected way (ex: expected RX interface).</t>

<t>When (label + EXP) is being encoded, label is specified in higher 20 bits of 23 bits and EXP is specified in lower 3 bits of 23 bits.</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="Localhost Address Usage">

<t>Last 23 bits of 127/8 for IPv4 and 0:0:0:0:0:FFFF:7F00/104 for IPv6 being non-zero is the trigger for responder to embed RX information in the response. When initiator is performing only reachability validations to target identifiers, then last 23 bits of the localhost address MUST be zero. This is to ensure unnecessary processing at responder is eliminated.</t>

</section>

    </section>

    <section title="Scaling Aspect">

<t>This mechanism brings forth one noticeable difference in terms of scaling aspect: number of BFD sessions. This specification eliminates the need for egress nodes to have fully active BFD sessions when only side is desired to perform reachability validations. With introduction of reflector BFD concept, egress no longer is required to create any active BFD session per path/LSP basis. Due to this, total number of BFD sessions in a network is reduced.</t>
 
<t>If traditional BFD technology was used on a network comprised of N nodes, and each node monitored M uni-directional paths/LSPs, then total number of BFD sessions in such network will be:</t>

<t>(((N - 1) x M) x 2)</t>

<t>Assuming that each network node creates one reflector BFD session to handle all local BFD target identifiers, then total number of BFD sessions in same scenario will be:</t>

<t>(((N - 1) x M) + N)</t>

    </section>

    <section title="Co-existence with Traditional BFD">

<t>This mechanism has no issues being deployed with traditional BFDs (<xref target="RFC5881" />/<xref target="RFC5883" />/<xref target="RFC5884" />/<xref target="RFC5885" />) because BFD discriminators which allow this mechanism to function are explicitly reserved.</t>

    </section>

    <section title="BFD Echo">

<t>BFD echo is outside the scope of this document.</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" /> and <xref target="RFC5885" /> apply to this document.</t>

<t>Additionally, implementing following measures will strengthen security aspects of this mechanism described by this document.
<list style="symbols">
<t>Implementations MUST provide filtering capability based on source IP addresses or source node segment IDs of received BFD control packets: <xref target="RFC2827" />.</t>
<t>Implementations MUST NOT act on received BFD control packets containing Martian addresses as source IP addresses.</t>
<t>Implementations MUST ensure response target IP addresses or node segment IDs are reachable.</t>
</list>
</t>

    </section>

    <section anchor="IANA" title="IANA Considerations">
<t>BFD Target Identifier types:

<figure align="left"><preamble></preamble><artwork align="left">
      Value    BFD Target Identifier Type
     ------    --------------------------
          0    Reserved
          1    IP (IPv4 Address and Router ID)
          2    Segment Routing Node Segment ID
</artwork></figure>
      </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>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>

	<t>Nagendra Kumar
    <vspace blankLines="0" />
	Cisco Systems
    <vspace blankLines="0" />
    Email: naikumar@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.5881"?>
	  <?rfc include="reference.RFC.5883"?>
	  <?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.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>
