<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC5286 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5286.xml">
<!ENTITY RFC4203 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4203.xml">
<!ENTITY RFC4205 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4205.xml">
<!ENTITY RFC5307 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5307.xml">
<!ENTITY REMOTE-LFA SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7490.xml">
<!ENTITY REMOTE-LFA-NODE SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-rtgwg-rlfa-node-protection.xml">
<!ENTITY ISIS-NODE-ADMIN SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-isis-node-admin-tag.xml">
<!ENTITY TI-LFA SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.francois-segment-routing-ti-lfa.xml">
<!ENTITY ISIS-PREFIX-ATTR SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-isis-prefix-attributes.xml">
<!ENTITY OSPF-NODE-ADMIN SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-ospf-node-admin-tag.xml">
<!ENTITY OSPF-PREFIX-LINK-ATTR SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-ospf-prefix-link-attr.xml">
<!ENTITY LFA-APPLICABILITY SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6571.xml">
<!ENTITY RFC3137 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3137.xml">
<!ENTITY RFC6987 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6987.xml">
<!ENTITY RFC5340 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5340.xml">
<!ENTITY RFC5305 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5305.xml">
<!ENTITY RFC3630 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3630.xml">

]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- used by XSLT processors -->
<!-- OPTIONS, known as processing instructions (PIs) go here. -->
<!-- For a complete list and description of PIs,
     please see http://xml.resource.org/authoring/README.html. -->
<!-- Below are generally applicable PIs that most I-Ds might want to use. -->
<?rfc strict="no" ?>
<!-- give errors regarding ID-nits and DTD validation -->
<!-- control the table of contents (ToC): -->
<?rfc toc="yes"?>
<!-- generate a ToC -->
<?rfc tocdepth="3"?>
<!-- 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 popular PIs -->
<rfc category="std" docName="draft-ietf-rtgwg-lfa-manageability-10"
     ipr="trust200902">
  <front>
    <title abbrev="LFA manageability">Operational management of Loop Free
    Alternates</title>

    <author fullname="Stephane Litkowski" initials="S" surname="Litkowski" role="editor">
      <organization>Orange</organization>

      <address>
        <!-- postal><street/><city/><region/><code/><country/></postal -->

        <!-- <phone/> -->

        <!-- <facsimile/> -->

        <email>stephane.litkowski@orange.com</email>

        <!-- <uri/> -->
      </address>
    </author>

    <author fullname="Bruno Decraene" initials="B" surname="Decraene">
      <organization>Orange</organization>

      <address>
        <!-- postal><street/><city/><region/><code/><country/></postal -->

        <!-- <phone/> -->

        <!-- <facsimile/> -->

        <email>bruno.decraene@orange.com</email>

        <!-- <uri/> -->
      </address>
    </author>

    <author fullname="Clarence Filsfils" initials="C" surname="Filsfils">
      <organization>Cisco Systems</organization>

      <address>
        <!-- postal><street/><city/><region/><code/><country/></postal -->

        <!-- <phone/> -->

        <!-- <facsimile/> -->

        <email>cfilsfil@cisco.com</email>

        <!-- <uri/> -->
      </address>
    </author>

    <author fullname="Kamran Raza" initials="K" surname="Raza">
      <organization>Cisco Systems</organization>

      <address>
        <!-- postal><street/><city/><region/><code/><country/></postal -->

        <!-- <phone/> -->

        <!-- <facsimile/> -->

        <email>skraza@cisco.com</email>

        <!-- <uri/> -->
      </address>
    </author>
	    <author fullname="Martin Horneffer" initials="M" surname="Horneffer">
      <organization>Deutsche Telekom</organization>

      <address>
        <!-- postal><street/><city/><region/><code/><country/></postal -->

        <!-- <phone/> -->

        <!-- <facsimile/> -->

        <email>Martin.Horneffer@telekom.de</email>

        <!-- <uri/> -->
      </address>
    </author>
	<author fullname="Pushpasis Sarkar" initials="P" surname="Sarkar">
      <organization>Juniper Networks</organization>

      <address>
        <!-- postal><street/><city/><region/><code/><country/></postal -->

        <!-- <phone/> -->

        <!-- <facsimile/> -->

        <email>psarkar@juniper.net</email>

        <!-- <uri/> -->
      </address>
    </author>

    <date year="2015"/>

    <area/>

    <workgroup>Routing Area Working Group</workgroup>

    <!-- <keyword/> -->

    <!-- <keyword/> -->

    <!-- <keyword/> -->

    <!-- <keyword/> -->

    <abstract>
      <t>Loop Free Alternates (LFA), as defined in RFC 5286 is an IP Fast
      ReRoute (IP FRR) mechanism enabling traffic protection for IP traffic (and MPLS LDP traffic by extension).
      Following first deployment experiences, this document provides operational feedback on LFA, highlights some limitations, and proposes a set of refinements to address those limitations. 
	  It also proposes required management specifications.</t>
	  <t>This proposal is also applicable to remote LFA solution.</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"/>.</t>
  </note>
  
  </front>

  <middle>
	
    <section anchor="intro" title="Introduction">


      <t>Following the first deployments of Loop Free Alternates (LFA), this document provides feedback to the community about the management of LFA.

	  <list>
<t><xref target="outcomes-alternate"/> provides real uses cases illustrating some limitations and suboptimal behavior.</t>
<t><xref target="outcomes-coverage-monitoring"/> provides requirements for LFA simulations.</t>
<t><xref target="outcomes-lfa-activation"/> proposes requirements for activation granularity and policy based selection of the alternate.</t>

<t><xref target="configuration"/> express requirements for the operational management of LFA and especially a policy framework to manage alternates.</t>
<t><xref target="operational"/> details some operational considerations of LFA like IS-IS overload bit management or troubleshooting informations.</t>
</list>
      </t>
    </section>
<section anchor="definition" title="Definitions">
	<t>
	<list style="symbols">
	<t>Per-prefix LFA : LFA computation, and best alternate evaluation is done for each destination prefix, as opposed
	  to "Per-next hop" simplification also proposed in <xref target="RFC5286"/> Section 3.8.</t>
	<t>PE router : Provider Edge router. These routers are connecting customers</t>
	<t>P router : Provider router. These routers are core routers, without customer connections. They provide transit between PE routers and they form the core network.</t>
	<t>Core network : subset of the network composed by P routers and links between them.</t>
	<t>Core link : network link part of the core network i.e. a P router to P router link.</t>
	<t>Link-protecting LFA : alternate providing protection against link failure.</t>
	<t>Node-protecting LFA : alternate providing protection against node failure.</t>
	<t>Connected alternate : alternate adjacent (at IGP level) to the point of local repair (i.e. an IGP neighbor).</t>
	<t>Remote alternate : alternate which is does not share an IGP adjacency with the point of local repair.</t>
	</list>
	</t>
	</section>
    <section anchor="outcomes-alternate"
             title="Operational issues with default LFA tie breakers">
      <t><xref target="RFC5286"/> introduces the notion of tie breakers when selecting the LFA among multiple candidate 
      alternate next-hops. When multiple LFA exist, RFC 5286 has favored the selection of the LFA providing the best coverage of the failure cases. While this is indeed a goal, this is one among multiple and in some deployment this lead to the selection of a suboptimal LFA. 
	  The following sections details real use cases of such limitations.</t>

      <t> Note that the use case of LFA computation per destination (per-prefix LFA) is assumed throughout this analysis.
	  We also assume in the network figures that all IP prefixes are advertised with zero cost. </t>

      <section anchor="outcomes-alternate-case1"
               title="Case 1: PE router protecting failures within core network">
        <figure>
          <artwork><![CDATA[
    P1 --------- P2 ---------- P3 --------- P4
    |      1           100           1       |
    |                                        |
    | 100                                    | 100
    |                                        |
    |      1           100           1       |  1     5k
    P5 --------- P6 ---------- P7 --------- P8 --- P9 -- PE1
    | |         | |          |             |
  5k| |5k     5k| |5k        | 5k          | 5k
    | |         | |          |             |
    | +-- PE4 --+ |          +---- PE2 ----+
    |             |                 |
    +---- PE5 ----+                 | 5k
                                    |
                                   PE3
				 
						Figure 1
				]]></artwork>

        <postamble>Px routers are P routers using n*10G
          links. PEs are connected using links with lower bandwidth. </postamble>
        </figure>

        <t>In figure 1, let us consider the traffic flowing from PE1 to PE4. The nominal path is P9-P8-P7-P6-PE4. Let us consider the
        failure of link P7-P8. As P4 primary path to PE4 is P8-P7-P6-PE4, P4 is not an LFA for P8 (because P4 will loop back traffic to P8) and the only available LFA is
        PE2. </t>

        <t>When the core link P8-P7 fails, P8 switches all traffic destined to PE4/PE5 towards the node PE2. Hence a PE node and PE links are used to protect the failure of a core link.
		Typically, PE links have less capacity than core links and congestion may occur on PE2 links. Note that although PE2 was not directly affected by
        the failure, its links become congested and its traffic will suffer from the congestion.</t>

        <t>In summary, in case of P8-P7 link failure, the impact on customer traffic is: <list style="symbols">
            <t>From PE2 point of view : <list style="symbols">
                <t>without LFA: no impact</t>

                <t>with LFA:  traffic is partially dropped (but
                possibly prioritized by a QoS mechanism). It must be highlighted that in such situation, traffic not affected by the failure may be affected by the congestion.</t>
              </list></t>

            <t>From P8 point of view: <list style="symbols">
                <t>without LFA: traffic is totally dropped until
                convergence occurs.</t>

                <t>with LFA:  traffic is partially dropped (but
                possibly prioritized by a QoS mechanism). </t>
              </list></t>
          </list></t>
		  <t>Besides the congestion aspects of using an Edge router as an alternate to protect a core failure, a service provider may consider this as a bad routing design and would like to prevent it.</t>
      </section>

      <section anchor="outcomes-alternate-case2"
               title="Case 2: PE router choosen to protect core failures while P router LFA exists">
        <figure>
          <artwork><![CDATA[
    P1 --------- P2 ------------ P3 -------- P4
    |      1           100       |     1     |
    |                            |           |
    | 100                        | 30        | 30
    |                            |           |
    |     1         50       50  |    10     |   1    5k
    P5 --------- P6 --- P10 ---- P7 -------- P8 --- P9 -- PE1
    | |         | |        \                |
  5k| |5k     5k| |5k       \ 5k            | 5k
    | |         | |          \              |
    | +-- PE4 --+ |           +---- PE2 ----+
    |             |                 |
    +---- PE5 ----+                 | 5k
                                    |
                                   PE3

	                  Figure 2
				]]></artwork>

          <postamble>Px routers are P routers meshed with n*10G
          links. PEs are meshed using links with lower bandwidth.</postamble>
        </figure>

        <t>In the figure 2, let us consider the traffic coming from PE1 to PE4.
        Nominal path is P9-P8-P7-P10-P6-PE4. Let us consider the
        failure of the link P7-P8. For P8, P4 is a link-protecting LFA and PE2 is a node-protecting LFA. PE2 is chosen as best
        LFA due to its better protection type. Just like in case 1, this may lead to congestion on PE2 links upon LFA activation.</t>
      </section>

      <section anchor="outcomes-alternate-case3"
               title="Case 3: suboptimal P router alternate choice">
        <figure>
          <artwork><![CDATA[
            +--- PE3 --+
           /            \
     1000 /              \ 1000
         /                \
 +----- P1 ---------------- P2 ----+
 |      |       500         |      |
 | 10   |                   |      | 10
 |      |                   |      |
 R5     | 10                | 10   R7
 |      |                   |      |
 | 10   |                   |      | 10
 |      |       500         |      |
 +---- P3 ---------------- P4 -----+
         \                 /
     1000 \               / 1000
           \             /
            +--- PE1 ---+
	  
            Figure 3
			]]></artwork>

          <postamble>Px routers are P routers. P1-P2 and P3-P4 links are 1G
          links. All others inter Px links are 10G links.</postamble>
        </figure>

        <t>In the figure above, let us consider the failure of link P1-P3. For
        destination PE3, P3 has two possible alternates: <list
            style="symbols">
            <t>P4, which is node-protecting</t>

            <t>P5, which is link-protecting</t>
          </list> P4 is chosen as best LFA due to its better protection type. However, it
        may not be desirable to use P4 for bandwidth
        capacity reason. A service provider may prefer to use high bandwidth
        links as prefered LFA. In this example, prefering shortest path over
        protection type may achieve the expected behavior, but in cases where
        metric are not reflecting bandwidth, it would not work and some other
        criteria would need to be involved when selecting the best LFA.</t>
      </section>

		<section anchor="outcomes-alternate-case4"
               title="Case 4: No-transit LFA computing node">
        <figure>
          <artwork><![CDATA[


    P1       P2
    |   \  /   |
 50 | 50 \/ 50 | 50
    |    /\    |
    PE1-+  +-- PE2
     \        /
   45 \      / 45	 
       -PE3-
   (No-transit condition set)
	  
            Figure 4
			]]></artwork>

        </figure>

		<t>IS-IS and OSPF protocols define some way to prevent a router to be used as transit.</t>
		<t>IS-IS overload bit is defined in <xref target="ISO10589"/> and OSPF R-bit is defined in <xref target="RFC5340"/>. OSPF Stub Router is also defined in <xref target="RFC6987"/>
		as a method to prevent transit on a node by advertising MaxLinkMetric on all non stub links.</t>
        <t>In the figure above, PE3 has its no-transit condition set (permanently, for design reason) and wants to protect traffic using LFA for destination PE2.</t>
		<t>On PE3, the loop-free condition is not satisfied : 100 !&lt; 45 + 45. PE1 is thus not considered as an LFA. 
		However thanks to the no-transit condition on PE3, we know that PE1 will not loop the traffic back to PE3. So PE1 is an LFA to reach PE2.</t>
		<t>In case of no-transit condition set on a node, LFA behavior must be clarified.</t>
		
		
      </section>
    </section>

	<section anchor="outcomes-coverage-monitoring"
               title="Need for coverage monitoring">
	<t>
	As per <xref target="RFC6571"/>, LFA coverage highly depends on the used network topology. 
	Even if remote LFA (<xref target="RFC7490"/>) extends significantly the coverage of the basic LFA specification, there is still some cases where protection would not be available.
	As network topologies are constantly evolving (network extension, capacity addings, latency optimization etc.), the protection coverage may change.
	Fast reroute functionality may be critical for some services supported by the network, a service provider must constantly know what protection coverage is currently available on the network.
	Moreover, predicting the protection coverage in case of network topology change is mandatory. </t>
	<t>Today network simulation tool associated with whatif scenarios functionality are often used by service providers for the overall network design (capacity, path optimization etc.).
	<xref target="oper-lfa-simu"/>, <xref target="oper-lfa-alert"/> and <xref target="oper-lfa-information"/> of this document propose to add LFA informations into such tool and within routers, so
	a service provider may be able :
	<list style="symbols">
	<t>to evaluate protection coverage after a topology change.</t>
	<t>to adjust the topology change to cover the primary need (e.g. latency optimization or bandwidth increase) as well as LFA protection.</t>
	<t>to monitor constantly the LFA coverage in the live network and being alerted.</t>
	</list>
	</t>
	<t>
	Documentation of LFA selection algorithms by implementers (default and tuning options) is important in order to leave
possibility for	3rd party modules to model these policy-LFA expressions.
	</t>
	</section>
	<section anchor="outcomes-lfa-activation"
               title="Need for LFA activation granularity">
	<t>
	As in all FRR mechanism, LFA installs backup paths in Forwarding Information Base (FIB).
	Depending on the hardware used by a service provider, FIB resource may be critical.
	Activating LFA, by default, on all available components (IGP topologies, interface, address families etc.) 
	may lead to waste of FIB resource as generally in a network only few destinations should be protected 
	(e.g. loopback addresses supporting MPLS services) compared to the number of destinations in the RIB.
	</t>
	<t>
	Moreover a service provider may implement multiple different FRR mechanism in its networks for different usages (MRT, TE FRR).
	In this scenario, an implementation MAY allow to compute alternates for a specific destination even if the destination is already protected by another mechanism.
	This will bring redundancy and let the ability for the operator to select the best option for FRR using a policy language.
	</t>
	<t>
	<xref target="configuration"/> of this document propose some implementation guidelines.
	</t>
	</section>
    <section anchor="configuration" title="Configuration requirements">
      <t>Controlling best alternate and LFA activation granularity is a
      requirement for Service Providers. This section defines 
      configuration requirements for LFA.</t>

      <section anchor="config-activation" title="LFA enabling/disabling scope">
        <t>The granularity of LFA activation SHOULD be controlled
       (as alternate next hop consume memory in forwarding
        plane).</t>

        <t>An implementation of LFA SHOULD allow its activation with the following granularities: <list style="symbols">
            <t>Per routing context: VRF, virtual/logical
            router, global routing table, etc.</t>

            <t>Per interface</t>

            <t>Per protocol instance, topology, area</t>

            <t>Per prefixes: prefix protection SHOULD have a higher
            priority compared to interface protection. This means that if a
            specific prefix must be protected due to a configuration request,
            LFA MUST be computed and installed for this prefix even if the
            primary outgoing interface is not configured for protection.</t>
          </list>
		</t>
		<t>An implementation of LFA MAY allow its activation with the following criteria: <list style="symbols">
            <t>Per address-family: ipv4 unicast, ipv6
            unicast</t>
			<t>Per MPLS control plane: for MPLS control planes that inherit routing decision from the IGP routing protocol, MPLS dataplane may be protected by LFA.
			The implementation may allow operator to control this inheritance of protection from the IP prefix to the MPLS label bound to this prefix. The protection inheritance will concern : IP to MPLS, MPLS to MPLS, and MPLS to IP entries.
			As example, LDP and segment-routing extensions for ISIS and OSPF are control plane eligible to this inheritance of protection.</t> 
          </list>
		</t>
      </section>

      <section anchor="config-policy" title="Policy based LFA selection">
        <t>When multiple alternates exist, LFA selection algorithm is based on tie breakers. Current tie breakers do not provide sufficient control on how
        the best alternate is chosen. This document proposes an enhanced tie breaker
        allowing service providers to manage all specific cases:</t>

        <t><list style="numbers">
            <t>An implementation of LFA SHOULD support policy-based decision
            for determining the best LFA.</t>

            <t>Policy based decision SHOULD be based on multiple criterions,
            with each criteria having a level of preference.</t>

            <t>If the defined policy does not allow the determination of a unique best
            LFA, an implementation SHOULD pick only one based on its own decision.
			An implementation SHOULD also support election of multiple LFAs, for loadbalancing purposes.</t>

            <t>Policy SHOULD be applicable to a protected interface or to a
            specific set of destinations. In case of application on the
            protected interface, all destinations primarily routed on this
            interface SHOULD use the interface policy.</t>
	
			<t>It is an implementation choice to reevaluate policy dynamically or not (in case of policy change). 
			If a dynamic approach is chosen, the implementation SHOULD recompute the best LFAs and reinstall them in FIB, without service disruption.
			If a non-dynamic approach is chosen, the policy would be taken into account upon the next IGP event. In this case, the implementation SHOULD support a command to manually force the recomputation/reinstallation of LFAs.</t>
          </list></t>

		  <section anchor="config-policy-enhanced-detail-linktunnel"
                   title="Connected vs remote alternates">
            <t>In addition to connected LFAs, tunnels (e.g. IP, LDP, RSVP-TE or Segment Routing) to distant routers
            may be used to complement LFA coverage (tunnel tail used as
            virtual neighbor). When a router has multiple alternate candidates
            for a specific destination, it may have connected alternates and remote alternates (reachable via a tunnel). 
			Connected alternates may not always provide an
            optimal routing path and it may be preferable to select a remote
            alternate over a connected alternate. 
			Some usage of tunnels to extend LFA (<xref target="RFC5286"/>) coverage
			is described in either <xref target="RFC7490"/> or <xref target="I-D.francois-segment-routing-ti-lfa"/>.
			These documents present some  use cases of LDP tunnels (<xref target="RFC7490"/>) or Segment Routing tunnels (<xref target="I-D.francois-segment-routing-ti-lfa"/>).
			This document considers any type of tunneling techniques to reach remote alternates (IP, GRE, LDP, RSVP-TE, L2TP, Segment Routing etc.) and does not restrict the remote alternates to the usage presented in the referenced document.
			
			</t>

            <t>In figure 1, there is no P router alternate for P8 to reach PE4 or PE5
            , so P8 is using PE2 as alternate, which may
            generate congestion when FRR is activated. Instead, we could
            have a remote alternate for P8 to protect traffic to PE4 and PE5.
            For example, a tunnel from P8 to P3 (following shortest path) can be setup and P8 would be able to use P3 as remote alternate to protect traffic to PE4 and PE5. In this scenario, traffic will not use a PE link during FRR activation.</t>
			
			<t>
			When selecting the best alternate, the selection algorithm MUST consider all available alternates (connected or tunnel). 
			For example with Remote LFA, computation of PQ set (<xref target="RFC7490"/>) SHOULD be performed before best alternate selection.
			</t>

          </section>
		  
		 
        
		<section anchor="config-policy-mandatory" title="Mandatory criteria">
          <t>An implementation of LFA MUST support the following 
          criteria: <list style="symbols">
              <t>Non candidate link: A link marked as "non
              candidate" will never be used as LFA.</t>

              <t>A primary next hop being protected by another primary next hop
              of the same prefix (ECMP case).</t>

              <t>Type of protection provided by the alternate: link
              protection, node protection. In case of node protection preference, an implementation SHOULD support fall back to link protection if node protection is not available.</t>
		  
              <t>Shortest path: lowest IGP metric used to reach the
              destination.</t>

              <t>SRLG (as defined in <xref target="RFC5286"/> Section 3, see also <xref target="config-policy-mandatory-detail-srlg"/> for more details).</t>
            </list></t>
        </section>


        
		
        <section anchor="config-policy-enhanced" title="Additional criteria">
          <t>An implementation of LFA SHOULD support the following 
          criteria: <list style="symbols">
		  	  <t>Downstreamness of an alternate : preference of a downstream path over a non downstream path SHOULD be configurable.</t>
	
              <t>Link coloring with : include, exclude and preference based system (see <xref target="config-policy-enhanced-detail-linkcolor"/>).</t>

              <t>Link Bandwidth (see <xref target="config-policy-enhanced-detail-bw"/>).</t>

              <t>Alternate preference/Node coloring (see <xref target="config-policy-enhanced-detail-neighbor-preference"/>).</t>

            </list></t>
	</section>

			

	

	<section anchor="config-policy-path-attributes" title="Criteria evaluation">
			
			<section anchor="config-policy-mandatory-detail-srlg" title="SRLG">
			<t>
			<xref target="RFC5286"/> Section 3. proposes to reuse GMPLS IGP extensions to encode Shared Risk Link Groups (<xref target="RFC4205"/> and <xref target="RFC4203"/>). 
			The section is also describing the algorithm to compute SRLG protection.
			</t>
			<t>
			When SRLG protection is computed, an implementation SHOULD allow the following :
			<list style="symbols">
			<t>Exclusion alternates violating SRLG.</t>
			<t>Maintenance of a preference system between alternates based on SRLG violations. How the preference system is implemented is out of scope of this document but here are few examples :
			<list style="symbols">
			<t>Preference based on number of violations. In this case : the more violations = the less preferred.</t>
			<t>Preference based on violation cost. In this case, each SRLG violation has an associated cost. The lower violation cost sum is preferred.</t>
			</list>
			</t>
			</list>
			</t>
			<t>
			When applying SRLG criteria, the SRLG violation check SHOULD be performed on source to alternate as well as alternate to destination paths based on the SRLG set of the primary path. In the case of remote LFA, PQ to destination path attributes would be retrieved from SPT rooted at PQ.
			</t>
			</section>

          <section anchor="config-policy-enhanced-detail-linkcolor"
                   title="Link coloring">
            <t>Link coloring is a powerful system to control the choice of alternates.
			Link colors are markers that will allow to encode properties of a particular link.
			Protecting interfaces are tagged with colors. 
            Protected interfaces are configured to include some colors with a
            preference level, and exclude others.</t>
			<t>Link color information SHOULD be signalled in the IGP and admin-groups IGP extensions (<xref target="RFC5305"/> and <xref target="RFC3630"/>) that are already standardized, implemented and widely-used, SHOULD be used for encoding and signalling link colors.</t>

            <t> <figure>
                <artwork><![CDATA[
               PE2 
               |   +---- P4
               |  /
      PE1 ---- P1 --------- P2
               |      10Gb
           1Gb | 
               |
               P3
				
		     Figure 8
				]]></artwork>
              </figure> 
			  Example : P1 router is connected to three P routers and two
            PEs.</t>
			  <t>P1 is configured to protect the P1-P4 link. We
            assume that given the topology, all neighbors are candidate LFA. We would like to enforce a policy in the network where only a core
            router may protect against the failure of a core link, and where high capacity
            links are prefered.</t>

            <t>In this example, we can use the proposed link coloring by:</t>

            <t><list style="symbols">
                <t>Marking PEs links with color RED</t>

                <t>Marking 10Gb CORE link with color BLUE</t>

                <t>Marking 1Gb CORE link with color YELLOW</t>

                <t>Configured the protected interface P1-&gt;P4 with : <list
                    style="symbols">
                    <t>Include BLUE, preference 200</t>

                    <t>Include YELLOW, preference 100</t>

                    <t>Exclude RED</t>
                  </list></t>
              </list></t>

            <t>Using this, PE links will never be used to protect against
            P1-P4 link failure and 10Gb link will be be preferred.</t>

            <t>The main advantage of this solution is that it can easily be duplicated on other interfaces and other nodes without
            change. A Service Provider has only to define the color system
            (associate color with a significance), as it is done already for TE
            affinities or BGP communities.</t>

            <t>An implementation of link coloring: <list style="symbols">
                <t>SHOULD support multiple include and exclude colors on a
                single protected interface.</t>

                <t>SHOULD provide a level of preference between included
                colors.</t>

                <t>SHOULD support multiple colors configuration on a single
                protecting interface.</t>
              </list></t>
          </section>

		  <section anchor="config-policy-enhanced-detail-bw" title="Bandwidth">
		  <t>
			As mentioned in previous sections, not taking into account bandwidth of an alternate could lead to congestion during FRR activation.
			We propose to base the bandwidth criteria on the link speed information for the following reason : 
			<list style="symbols">
			<t>if a router S has a set of X destinations primarly forwarded to N, using per prefix LFA may lead to have a subset of X protected by a neighbor N1, another subset by N2, another subset by Nx etc.</t>
			<t>S is not aware about traffic flows to each destination and is not able to evaluate how much traffic will be sent to N1,N2, etc. Nx in case of FRR activation.</t>
			
			</list>
			
			Based on this, it is not useful to gather available bandwidth on alternate paths, as the router does not know how much bandwidth it requires for protection.
			The proposed link speed approach provides a good approximation with a small cost as information is easily available.
			</t>
			<t>
			The bandwidth criteria of the policy framework SHOULD work in at least two ways :
			<list style="symbols">
			<t>PRUNE : exclude a LFA if link speed to reach it is lower than the link speed of the primary next hop interface.</t>
			<t>PREFER : prefer a LFA based on its bandwidth to reach it compared to the link speed of the primary next hop interface.</t>
			</list>
		   </t>
		   </section>
          

          <section anchor="config-policy-enhanced-detail-neighbor-preference"  title="Alternate preference/Node coloring">
            <t>Rather than tagging interface on each node (using link color)
            to identify alternate node type (as example), it would be helpful if routers could be identified in the IGP. This would allow a grouped processing on multiple nodes. 
			
			As an implementation need to exclude some specific alternates (see <xref target="config-policy-enhanced"/>), an implementation :
			
			<list style="symbols">
			<t>SHOULD be able to give a preference to specific alternate.</t>
			<t>SHOULD be able to give a preference to a group of alternate.</t>
			<t>SHOULD be able to exclude a specific alternate.</t>
			<t>SHOULD be able to exclude a group of alternate.</t>
			</list>
			</t>
			
			<t>A specific alternate may be identified by its interface, IP address or router ID and group of alternates may be identified by a marker (tag) advertised in IGP.
			The IGP encoding and signalling for marking group of alternates SHOULD be done using <xref target="I-D.ietf-isis-node-admin-tag"/>, <xref target="I-D.ietf-ospf-node-admin-tag"/>. 
			Using a tag/marker is referred as Node coloring in comparison to link coloring option presented in <xref target="config-policy-enhanced-detail-linkcolor"/>.</t>

            <t>Consider the following network: <figure>
                <artwork><![CDATA[
               PE3
               |
               |
               PE2 
               |   +---- P4
               |  /
      PE1 ---- P1 -------- P2
               |      10Gb
           1Gb |
               |
               P3

          Figure 9			   
	]]>
	
				</artwork>
              </figure> In the example above, each node is configured with a specific tag flooded through the IGP. 
			  <list
                style="symbols">
                <t>PE1,PE3: 200 (non candidate).</t>

                <t>PE2: 100 (edge/core).</t>

                <t>P1,P2,P3: 50 (core).</t>
              </list> 
			  A simple policy could be configured on P1 to choose the
            best alternate for P1-&gt;P4 based on router function/role as
            follows : <list style="symbols">
                <t>criteria 1 -&gt; alternate preference: exclude tag 100 and 200.</t>
                <t>criteria 2 -&gt; bandwidth.</t>
              </list></t>
          </section>
		</section>
          
		<section anchor="config-policy-attributes" title="Retrieving alternate path attributes">
		    
			
			
			<section anchor="config-policy-attributes-path" title="Alternate path">
				
			<t> 
			The alternate path is composed of two distinct parts : PLR to alternate and alternate to destination.</t>
			<figure>
			<artwork>
   N1 -- R1 ---- R2
  /50     \       \
 /         R3 --- R4
/                   \
S -------- E ------- D
\\                  //
 \\                //
  N2 ---- PQ ---- R5
  
       Figure 5
			</artwork>
			</figure>
			<t>
			In the figure above, we consider a primary path from S to D, S using E as primary nexthop. All metrics are 1 except {S,N1}=50. Two alternate paths are available:
			<list style="symbols">
			<t>{S,N1,R1,R2|R3,R4,D} where N1 is a connected alternate. This consists of two sub-paths: 
			<list style="symbols">
			<t>{S,N1}: path from PLR to the alternate.</t>
			<t>{N1,R1,R2|R3,R4,D}: path from alternate to destination.</t>
			</list>
			</t>
			<t>{S,N2,PQ,R5,D} where PQ is a remote alternate. Again the path consists of two sub-paths:
			<list style="symbols">
			<t>{S,N2,PQ}: path from PLR to the alternate.</t>
			<t>{PQ,R5,D}: path from alternate to destination.</t>
			</list>			
			</t>	
			</list>
			As displayed in the figure, some part of the alternate path may fanout in multipath due to ECMP.
			</t>
			</section>
			
			<section anchor="config-policy-attributes-path-attr" title="Alternate path attributes">
			<t>
			Some criterions listed in the previous sections are requiring to retrieve some characteristic of the alternate path (SRLG, bandwidth, color, tag etc.). We 
			call these characteristics "path attributes". A path attribute can record a list of node properties (e.g. node tag) or link properties (e.g. link color).
			</t>
			<t>
			This document defines two types of path attributes:
			<list style="symbols">
			<t>Cumulative attribute: when a path attribute is cumulative, the implementation SHOULD record the value of the attribute on each element (link and node) along the alternate path. SRLG, link color, and node color are cumulative attributes.</t>
			<t>Unitary attribute: when a path attribute is unitary, the implementation SHOULD record the value of the attribute only on the first element along the alternate path (first node, or first link). Bandwidth is a unitary attribute.</t>
			</list>
			</t>
			<figure>
			<artwork>
   N1 -- R1 ---- R2
  /               \
 / 50              R4
/                   \
S -------- E ------- D
			</artwork>
			</figure>
			<t>
			In the figure above, N1 is a connected alternate to each D from S. We consider that all links have a RED color except {R1,R2} which is BLUE. We consider all links to be 10Gbps, except {N1,R1} which is 2.5Gbps.
			The bandwidth attribute collected for the alternate path will be 10Gbps. As the attribute is unitary, only the link speed of the first link {S,N1} is recorded.
			The link color attribute collected for the alternate path will be {RED,RED,BLUE,RED,RED}. As the attribute is cumulative, the value of the attribute on each link along the path is recorded.
			</t>
			</section>
			
			 <section anchor="config-policy-attributes-lfa" title="Connected alternate">
			 <t>For alternate path using a connected alternate:
			 <list style="symbols">
			 <t>attributes from PLR to alternate are retrieved from the interface connected to the alternate. 
			 In case the alternate is
 connected through multiple interfaces, the evaluation of  attributes SHOULD be done once per interface (each interface is
  considered as a separate alternate) and once per ECMP group of interfaces (Layer 3 bundle). 
			</t>
			 <t>path attributes from alternate to destination are retrieved from SPF rooted at the alternate. 
			 As the alternate is a connected alternate, the SPF has already been computed to find the alternate, so there is no need of additional computation.</t>
			 </list>
			 </t>
		<figure>
		<artwork>
     N1 -- R1 ---- R2
  50//50             \
   //                 \
i1//i2                 \
 S -------- E -------- D
 
        Figure 6
		</artwork>
		</figure>		
		<t>
		In the figure above, we consider a primary path from S to D, S using E as primary nexthop. All metrics are considered as 1 expect {S,N1} links which are using metric of 50.
		We consider the following SRLG groups on links:
		<list style="symbols">
		<t>{S,N1} using i1 : SRLG1,SRLG10</t>
		<t>{S,N1} using i2 : SRLG2,SRLG20</t>
		<t>{N1,R1} : SRLG3</t>
		<t>{R1,R2} : SRLG4</t>
		<t>{R2,D} : SRLG5</t>
		<t>{S,E} : SRLG10</t>
		<t>{E,D} : SRLG6</t>
		</list>
		S is connected to the alternate using two interfaces i1 and i2. 
		</t>
		<t>
		If i1 and i2 are not part of an ECMP group, the evaluation of attributes is done once per interface, and each interface is considered as a separate alternate path.
		Two alternate paths will be available with the associated SRLG attributes :
		<list style="symbols">
		<t>Alternate path #1 : {S,N1 using if1,R1,R2,D}: SRLG1,SRLG10,SRLG3,SRLG4,SRLG5.</t>
		<t>Alternate path #2 : {S,N1 using if2,R1,R2,D}: SRLG2,SRLG20,SRLG3,SRLG4,SRLG5.</t>
		</list>
		Alternate path #1 is sharing risks with primary path and may be depreferred or pruned by user defined policy.
		</t>
		<t>
		If i1 and i2 are part of an ECMP group, the evaluation of attributes is done once per ECMP group, and the implementation considers a single alternate path
{S,N1 using if1|if2,R1,R2,D} with the following SRLG attributes: SRLG1,SRLG10,SRLG2,SRLG20,SRLG3,SRLG4,SRLG5.
		Alternate path is sharing risks with primary path and may be depreferred or pruned by user defined policy.
		</t>
			 </section>
			<section anchor="config-policy-attributes-rlfa" title="Remote alternate">
			 <t>For alternate path using a remote alternate (tunnel) :
			 <list style="symbols">
			 <t>Attributes on the path from the PLR to alternate are retrieved using the
      PLR's primary SPF (when using a PQ-node from P-Space) or the immediate neighbor's SPF
      (when using a PQ from extended P-Space). These are then combined with the attributes of the
      link(s) to reach the immediate neighbor.  In both cases, no additional SPF
      is required.
			</t>
			 <t>Attributes from remote alternate to destination path may be retrieved
      from SPF rooted at the remote alternate.  An additional forward
      SPF is required for each remote alternate (PQ-node) as indicated in
      [I-D.ietf-rtgwg-rlfa-node-protection] section 3.2 . In some remote
      alternate scenarios, like [I-D.francois-segment-routing-ti-lfa],
alternate to destination path attributes may be obtained using a
      different technique.
			</t>
			 </list>
			 The number of remote alternates may be very high. .  In case of remote
    LFA, simulations of real-world network topologies have shown that order
    of hundreths of PQ may be possible. The computational overhead to
    collect all path attributes of all PQ to destination paths may grow
    beyond practical reason.
             </t>
			 <t>To handle this situation, implementations need to limit the number of remote alternates to be evaluated to a finite number before collecting alternate path attributes and running the policy evaluation. 
[I-D.ietf-rtgwg-rlfa-node-protection] Section 2.3.3 provides a way to reduce the number of PQ to be evaluated.			 </t>
			<t>Some other remote alternate techniques using static or dynamic tunnels may not require this pruning.</t>
			 <figure>
			 <artwork>
               Link            Remote              Remote
               alternate       alternate           alternate
              -------------  ------------------   -------------
Alternates    |  LFA      |  |   rLFA (PQs)   |   |  Static/  |
              |           |  |                |   |  Dynamic  |
sources       |           |  |                |   |  tunnels  |
              -------------  ------------------   -------------
                   |                   |                  |
                   |                   |                  |
                   |        --------------------------    |
                   |	    |  Prune some alternates |    |
                   |        | (sorting strategy)     |    |
                   |        --------------------------    |
                   |                   |                  |
                   |                   |                  |
               ------------------------------------------------
               |          Collect alternate attributes        |
               ------------------------------------------------
                                       |
                                       |
                            -------------------------
                            |    Evaluate policy    |
                            -------------------------
                                       |
                                       |
                                Best alternates
			 </artwork>
			 </figure>
			 </section>
			 <section anchor="config-policy-attributes-ecmp-collection" title="Collecting attributes in case of multipath">
			 <t>
			 As described in <xref target="config-policy-attributes"/>, there may be some situation where an alternate path or part of an alternate path fans out to multiple paths (e.g. ECMP).
			 When collecting path attributes in such case, an implementation SHOULD consider the union of attributes of each sub-path.
			 </t>

			<t>
			In the figure 5 (in <xref target="config-policy-attributes"/>), S has two alternates paths to reach D. Each alternate path fans out into multipath due to ECMP.
			Considering the following link color attributes : all links are RED except {R1,R3} which is BLUE.
			The user wants to use an alternate path with only RED links.
			The first alternate path {S,N1,R1,R2|R3,R4,D} does not fit the constraint, as {R1,R3} is BLUE. 
			The second alternate path {S,N2,PQ,R5,D} fits the constraint and will be preferred as it uses only RED links. 
			</t>
			 </section>
		 </section>
	   
		<section anchor="config-policy-mandatory-detail-ecmp" title="ECMP LFAs">
			<figure>
			<artwork>
        10
   PE2 - PE3
    |     |
 50 |  5  | 50
    P1----P2
    \\    //
 50  \\  // 50
      PE1
		
	Figure 7
			</artwork>
			</figure>
			<t>Links between P1 and PE1 are L1 and L2, links between P2 and PE1 are L3 and L4</t>
			<t>
			In the figure above, primary path from PE1 to PE2 is through P1 using ECMP on two parallel links L1 and L2.
			In case of standard ECMP behavior, if L1 is failing, postconvergence next hop would become L2 and there would be no longer ECMP.
			If LFA is activated, as stated in <xref target="RFC5286"/> Section 3.4., "alternate next-hops may themselves also be primary next-hops, but need not be" and 
			"alternate next-hops should maximize the coverage of the failure cases".
			In this scenario there is no alternate providing node protection, LFA will so prefer L2 as alternate to protect L1 which makes sense compared to postconvergence behavior.
			</t>
			
			<t>
			Considering a different scenario using figure 7, where L1 and L2 are configured as a layer 3 bundle using a local feature, as well as L3/L4 being a second layer 3 bundle. Layer 3 bundles are configured
			as if a link in the bundle is failing, the traffic must be rerouted out of the bundle. Layer 3 bundles are generally introduced to increase bandwidth between nodes.
			In nominal situation, ECMP is still available from PE1 to PE2, but if L1 is failing, postconvergence next hop would become ECMP on L3 and L4.
			In this case, LFA behavior SHOULD be adapted in order to reflect the bandwidth requirement.
			</t>
			
			<figure>
			<preamble>
			We would expect the following FIB entry on PE1 :
			</preamble>
			<artwork>

    On PE1 : PE2 +--> ECMP -> L1
                 |     |
                 |     +----> L2
                 |
                 +--> LFA(ECMP) -> L3
                       |
                       +---------> L4
			                        
			</artwork>
			<postamble>
			If L1 or L2 is failing, traffic must be switched on the LFA ECMP bundle rather than using the other primary next hop.
			</postamble>
			</figure>
			<t>
			As mentioned in <xref target="RFC5286"/> Section 3.4., protecting a link within an ECMP by another primary next hop is not a MUST. 
			Moreover, we already presented in this document, that maximizing the coverage of the failure case may not be the right approach 
			and policy based choice of alternate may be preferred.
			</t>
			<t>
			An implementation SHOULD allow to prefer to protect a primary next hop by another primary next hop.
			An implementation SHOULD allow to prefer to protect a primary next hop by a NON primary next hop.
			An implementation SHOULD allow to use an ECMP bundle as a LFA.
			</t>
			</section>
	   
      </section>
    </section>

				
	
    <section anchor="operational" title="Operational aspects">
      <section anchor="oper-lfa-ISIS-overload"
               title="No-transit condition on LFA computing node">
	   <t>In <xref target="RFC5286"/>, Section 3.5, the setting of the no-transit condition (through IS-IS overload or OSPF R-bit) in LFA computation is only taken into account for the case where a neighbor has the no-transit condition set.
	   </t>
	   <t>In addition to RFC 5286 inequality 1 Loop-Free Criterion (Distance_opt(N, D) &lt; Distance_opt(N, S) + Distance_opt(S, D)), the IS-IS overload bit or OSPF R-bit of the LFA calculating neighbor (S) SHOULD be taken into account. Indeed, if it has the IS-IS overload bit set or OSPF R-bit clear, no neighbor will loop back to traffic to itself.</t>
	    <t>An OSPF router acting as a stub router [RFC 6987] SHOULD behave as if R-bit was clear regarding LFA computation.</t>
	
	   </section>
	  

      <section anchor="oper-lfa-manualtrigger"
               title="Manual triggering of FRR">
        <t>Service providers often perform manual link shutdown (using
        router CLI) to perform some network changes/tests. 
		A manual link shutdown may be done at multiple level : physical interface, logical interface, IGP interface, BFD session etc.
		Especially testing or troubleshooting FRR
		requires to perform the manual shutdown on the remote end of the link as generally a local shutdown would not trigger FRR.</t>
		<t>
		To enhance such situation, an implementation SHOULD 
        support triggering/activating LFA Fast Reroute for a given link when a
        manual shutdown is done on a component that currently supports FRR activation.</t>
		<t>
		An implementation MAY also support  FRR activation for a specific interface or a specific prefix on a primary next-hop interface and revert without any action on any running component of the node (links or protocols). 
In this use case, the FRR activation time need to be controlled by a timer in case the operator forgot to revert traffic on primary path. When the timer expires, the traffic is automatically reverted to the primary path.
This will make easier tests of fast-reroute path and then revert back to the primary path without causing a global network convergence.
</t>
		<t>
		For example :
		<list style="symbols">
		<t>if an implementation supports FRR activation upon BFD session down event, this implementation SHOULD support FRR activation when a manual shutdown is done on the BFD session. But if an implementation does not support FRR activation on BFD session down, there is no need for this implementation to support FRR activation on manual shutdown of BFD session.</t>
		<t>if an implementation supports FRR activation on physical link down event (e.g. Rx laser Off detection, or error threshold raised etc.), this implementation SHOULD support FRR activation when a manual shutdown at physical interface is done. But if an implementation does not support FRR activation on physical link down event, there is no need for this implementation to support FRR activation on manual physical link shutdown.</t>
		<t>A CLI command may allow to switch from primary path to FRR path for testing FRR path for a specific. There is no impact on controlplane, only dataplane of the local node could be changed. A similar command may allow to switch back traffic from FRR path to primary path.</t>
		</list>
		</t>
		
      </section>

      <section anchor="oper-lfa-information"
               title="Required local information">
        <t>LFA introduction requires some enhancement in standard routing
        information provided by implementations. Moreover, due to the non 100%
        coverage, coverage informations is also required.</t>

        <t>Hence an implementation : <list style="symbols">
            <t>MUST be able to display, for every prefix, the primary
            next hop as well as the alternate next hop information.</t>

            <t>MUST provide coverage information per activation domain of LFA
            (area, level, topology, instance, virtual router, address family etc.).</t>

            <t>MUST provide number of protected prefixes as well as non protected prefixes globally.</t>

            <t>SHOULD provide number of protected prefixes as well as non protected prefixes per link.</t>

            <t>MAY provide number of protected prefixes as well as non protected prefixes per priority if
            implementation supports prefix-priority insertion in RIB/FIB.</t>

            <t>SHOULD provide a reason for choosing an alternate (policy and
            criteria) and for excluding an alternate.</t>

            <t>SHOULD provide the list of non protected prefixes and the
            reason why they are not protected (no protection required or no
            alternate available).</t>
          </list></t>
      </section>

      <section anchor="oper-lfa-alert" title="Coverage monitoring">
        <t>It is pretty easy to evaluate the coverage of a network in a nominal
        situation, but topology changes may change the coverage. In some
        situations, the network may no longer be able to provide the required level of
        protection. Hence, it becomes very important for service providers to
        get alerted about changes of coverage.</t>

        <t>An implementation SHOULD : <list style="symbols">
            <t>provide an alert system if total coverage (for a node) is below a defined
            threshold or comes back to a normal situation.</t>

            <t>provide an alert system if coverage of a specific link is below
            a defined threshold or comes back to a normal situation.</t>
          </list></t>

        <t>An implementation MAY : <list style="symbols">
            <t>trigger an alert if a specific destination is not
            protected anymore or when protection comes back up for this
            destination</t>
          </list></t>

        <t>Although the procedures for providing alerts are beyond the scope
        of this document, we recommend that implementations consider
        standard and well used mechanisms like syslog or SNMP traps.</t>
      </section>
		<section anchor="oper-lfa-simu" title="LFA and network planning">
		<t>
		The operator may choose to run simulations in order to ensure full coverage of a certain type for the whole network or a given subset of the network. This is particularly likely if he operates the network in the sense of the third backbone profiles described in <xref target="RFC6571"/>, that is, he seeks to design and engineer the network topology in a way that a certain coverage is always achieved. Obviously a complete and exact simulation of the IP FRR coverage can only be achieved, if the behavior is deterministic and if the algorithm used is available to the simulation tool.
Thus, an implementation SHOULD:
		<list style="symbols">
<t>Behave deterministic in its selection LFA process. I.e. in the same topology and with the same policy configuration, the implementation MUST always choose the same alternate for a given prefix.</t>
<t>Document its behavior. The implementation SHOULD provide enough documentation of its behavior that allows an implementer of a simulation tool, to foresee the exact choice of the LFA implementation for every prefix in a given topology. This SHOULD take into account all possible policy configuration options.
One possible way to document this behavior is to disclose the algorithm used to choose alternates.</t>
		</list>
		</t>
		</section>
    </section>

    <section anchor="Security" title="Security Considerations">
	<t>The policy mechanism introduced in this document allows to tune the selection of the alternate.  This is not seen as a security threat as:
	<list style="symbols">
	<t>all candidates are already eligible as per <xref target="RFC5286"/> and considered useable.</t>
	<t>the policy is based on information from the router's own configuration and from the IGP which are both considered trusted.</t>
	</list>
	Hence this document does not introduce new security considerations compared to <xref target="RFC5286"/>.
	</t>
	 <t>
	  This document does not introduce any change in security consideration
      compared to <xref target="RFC5286"/>. The policy mechanism introduced in this document
	  allow to tune the best alternate choice but does not change the list of alternates that are eligible. 
	  As defined in <xref target="RFC5286"/> Section 7.,
	   this best alternate "can be used anyway when a different topological change occurs, and hence this can't be
   viewed as a new security threat.".
	  </t>
    </section>


	
    <section anchor="IANA" title="IANA Considerations">
      <t>This document has no action for IANA.</t>
    </section>

		<section anchor="Contributors" title="Contributors">
	<t>
   Significant contributions were made by Pierre Francois, Hannes Gredler, Chris Bowers, Jeff Tantsura, Uma Chunduri, Acee Lindem and Mustapha Aissaoui which the authors would like to acknowledge.
</t>
	</section>
	
	</middle>

  <back>
    <references title="Normative References">
	  <reference anchor="ISO10589">
	  <front>
	  <title>Intermediate system to Intermediate system intra-domain routing information exchange protocol for use in conjunction with the protocol for providing the connectionless-mode Network Service (ISO 8473), ISO/IEC 10589:2002, Second Edition.</title> 
	  <author fullname="ISO International Organization for Standardization"/>
	  <date month="Nov" year="2002" /> 
	  </front>
	  </reference>

      &RFC2119;
      &RFC5286; 
	  &RFC5307;
	  &RFC4203;
	  &RFC4205;
	  &RFC5340;
	  &RFC6987;
	  &RFC3137;
	  &LFA-APPLICABILITY;
	  &REMOTE-LFA;
    </references>

    <references title="Informative References">
	  &RFC5305;
	  &RFC3630;
	  &TI-LFA;
	  &REMOTE-LFA-NODE;
	  &ISIS-NODE-ADMIN;
	  &OSPF-NODE-ADMIN;
    </references>
  </back>
</rfc>
