<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc category="std" docName="draft-spallagatti-rtgwg-bandwidth-based-metric-00" ipr="trust200902">

  <!-- ***** FRONT MATTER ***** -->

  <front>
    <title abbrev="IGP bandwidth based metric">
	IGP bandwidth based metric.
    </title>


    <author fullname="Santosh Pallagatti" initials="S." role="editor"
            surname="Pallagatti">
      <organization>Juniper Networks</organization>
      <address>
		<postal>
		<street>Embassy Business Park</street>
		<city>Bangalore</city>
		<region>KA</region>
		<code>560093</code>
		<country>India</country>
	    </postal>
        <email>santoshpk@juniper.net</email>
      </address>
    </author>

    <author fullname="Pushpasis Sarkar" initials="P." role="editor" 
            surname="Sarkar">
      <organization>Juniper Networks</organization>
      <address>
		<postal>
		<street>Embassy Business Park</street>
		<city>Bangalore</city>
		<region>KA</region>
		<code>560093</code>
		<country>India</country>
	    </postal>
        <email>psarkar@juniper.net</email>
      </address>
    </author>
	
    <author fullname="Hannes Gredler" initials="H."
            surname="Gredler">
      <organization>Juniper Networks</organization>
      <address>
		<postal>
		<street> 1194 N. Mathilda Ave.</street>
		<city>Sunnyvale</city>
		<region>California</region>
		<code> 94089-1206</code>
		<country>USA</country>
	    </postal>
        <email>hannes@juniper.net</email>
      </address>
    </author>
	
	
    <date day="06" month="March" year="2015"/>


    <area>Routing Working Group</area>
    <workgroup>Internet Engineering Task Force</workgroup>

    <keyword>IGP</keyword>
    <keyword>IGP bandwidth based metrics</keyword>

    <abstract>
      <t>This document describes a method to group multiple interfaces and 
      assign metric to that group based on the cumulative bandwidth of all 
      the interfaces in that group. Each link in a group takes same group 
      metric irrespective of its own bandwidth. </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">RFC2119</xref>.</t>
    </note>
  </front>

  <middle>
    <section title="Introduction" anchor="Intro">
		
      <t>A low cost path is always preferred to carry traffic from source to 
      destination. If a application is more interested in bandwidth than the 
      cost itself and most preferred path does not satisfy bandwidth then this 
      could potentially lead to congestion and packet loss for an application. 
      Bandwidth critical applications needs minimum bandwidth to be satisfied 
      even if traffic is carried over multiple alternative paths to reach a 
      destination.</t>
		
      <figure anchor="topology" title="Example Topology">
        <artwork align="left">
			
                 +--------+                     +--------+
                 |        |----------10---------|        |
                 |   R2   |----------10---------|   R3   |
    D1-----------|        |----------10---------|        |-----------D2
                 +--------+                     +--------+
                   |  | |                         | |  |
                   |  | |                         | |  |
                   |  | |       +--------+        | |  |
                   |  | +--10---|L1    L4|---10---+ |  |
                   |  +----10---|L2 R1 L5|---10-----+  |
                   +-------10---|L3    L6|---10--------+
                                +--------+
        </artwork>
      </figure>
			
      <t>Consider the topology as show in <xref target="topology"/>. The 
      device R1 uses a links L1, L2 and L3 to carry traffic to destination 
      D1. Similarly it uses links L4, L5 and L6 for destination D2. However 
      in the event of links L1 and/or L2 fails traffic is still forwarded 
      on link L3 causing traffic congestion.</t>

      <t>In such situations operators will prefer the traffic for 
      destination D1 is forwarded on L4, L5 and L6, as there is lesser 
      chance of congestion. Similarly when links L4 and L5 also fails, 
      the operator will prefer the traffic for D1 is forwarded is switched 
      back on link L3 again. This document proposes a method called Bandwidth 
      Based Metrics (hereafter referred as BBM), which helps achieving this 
      desired behavior.</t>

      <t>BBM, on detecting a local link event, attempts to re-route traffic, 
      based on remaining bandwidth across the links on the primary and 
      alternate paths. When the remaining available bandwidth on the primary
      link(s) goes below a permissible limit (to be specified by the operator), 
      traffic should be re-routed to one or more groups of alternative paths, 
      and re-distributed onto multiple alternate paths with lesser likeliness 
      of congesting them.</t>

      <t>This document also specifies how to extend Fast Re-Route (FRR)  
      for BBM to meet stringent re-convergence time constraints, and 
      minimize traffic loss due to network congestion caused by standard 
      FRR mechanisms.</t>

    </section>

    <section anchor="bbm-concepts" title="BBM Concepts">

      <section anchor="interface-group" title="Interface-Group">

        <t> BBM method proposed in this document requires grouping of all the 
        local links (or interfaces) attached to a node into one or more locical 
        bundles. Such a logical grouping of multiple local interfaces is called 
        an interface-group, and needs to be provisioned manually by the operator 
        on each node. While assigning the local interfaces to a interface-group,  
        all links connecting the local node to the same one-hop neighbor, SHOULD 
        be assigned to a single interface-group. In other words the number of 
        interface-group to be created on a node SHOULD be at the least, the number 
        of one-hop neighbor nodes the particular node is connected to.</t>

        <t> In <xref target="topology"/> links L1, L2, and L3 connecting R1 and 
        R2 can be grouped into a single interface group (say IG1) on both R1 and R2. 
        Similarly links L4, L5 and L6 connecting R1 and R3 can be grouped into 
        another single interface-group (say IG2) on both R1 and R3.</t> 

      </section>

      <section anchor="bbm-metric-cfg" title="BBM Metric Configurations">

        <t>All the interfaces under a given interface-group shall share a metric 
        that is proportionate to the cumulative bandwidth available using the 
        individual links under the interface-group. Implementations SHOULD allow 
        operator to specify what metric should be assoicated for a given total 
        remaining available bandwith for each interface group. Implementations 
        SHOULD also allow operator specify the default metric to be used for 
        each interface-group.</t>

        <t>In <xref target="topology"/>, considering all the links L1 to L6 having  
        bandwidth capacity of 100G each, and assigned into two interface-groups 
        IG1 and IG2 (as shown in <xref target="interface-group"/>), following is an 
        example of simple BBM config for each of these interface-group.</t>

        <figure anchor="bbm-metric-example-cfg" 
		title="Example BBM Configuration">
	  <artwork>
       IG1:
          Member-Links: L1,L2,L3
          Total-Available-BW: 200G,  Metric: 10
          Total-Available-BW: 100G,  Metric: 50
	  Default-Metric: 1000

       IG2:
          Member-Links: L4,L5,L6
          Total-Available-BW: 200G,  Metric: 10
          Total-Available-BW: 100G,  Metric: 50
	  Default-Metric: 1000
          </artwork>
        </figure>

      </section>

      <section title="BBM Terminologies">
        <t>This document also defines the following attributes to be associated 
        with each interface-group.</t>

        <texttable anchor="table1" title="Interface Group Attributes">
          <ttcol align="left">Attribute</ttcol>
          <ttcol align="left">Value and Significance</ttcol>
          <c>Intf_List</c>
          <c>The list of interfaces assigned to this group as per 
             configuration.</c>
          <c> </c>
          <c> </c>
          <c>BW_Curr</c>
          <c>Total available bandwidth across all active member interfaces 
          of this group.</c>
          <c> </c>
          <c> </c>
          <c>BBM_Metric_Cfg_List</c>
          <c>This is an array of "BBM_Metric_Cfg_Entry" (defined
          below). The key to the list is "bandwidth" and is always 
          sorted in descending order (i.e. entries with higher  
          "bandwidth" appears before entries with lower "bandwidth".</c>
          <c> </c>
          <c> </c>
          <c>BBM_Metric_Cfg_Entry</c>
          <c>This defines a single entry in "BBM_Metric_Cfg_List" array 
             (defined above). It is a tuple ["Bandwidth", "Metric"], and  
             defines the metric that should be associated with the individual 
             interfaces of this group, when the total available bandwidth 
             for the group matches "bandwidth" range specified in  this 
             entry. Refer to <xref target="table2"/> for more details.</c>
          <c> </c>
          <c> </c>
          <c>Default_Metric</c>
          <c>The default metric as per configuration. Default metric 
             will be assigned to all interfaces under this group if 
             total available bandwidth for the group Does not match the 
             "Bandwidth" range specified in any "BBM_Metric_Cfg_Entry"  
             for this group. Refer to <xref target="table2"/> for more 
             details.</c>
        </texttable>

      </section>

      <section anchor="bbm-metric-derivation" 
               title="Metric Derivation">

        <t>Once a interface has been assigned to a interface-group, and the 
        corresponding BBM metric configurations has been provisioned, metric 
        to be associated with the member interfaces can be derived as follows:
        </t>

        <figure>
          <artwork>
Set Intf.Metric = 0
For (all BBM_Metric_Cfg_Entry in igp.BBM_Metric_Cfg_List 
     in descending order)
    - If (igp.BW_Curr &ge; 
          igp.BBM_Metric_Cfg_List.BBM_Metric_Cfg_Entry.Bandwidth)
          - Set Intf.Metric = 
                igp.BBM_Metric_Cfg_List.BBM_Metric_Cfg_Entry.Metric.
If (Intf.Metric == 0) 
    - Set Intf.Metric = igp.Default_Metric.
          </artwork>
        </figure>

        <t>Considering the BBM metric configurations for interface-group IG1 in 
        <xref target="bbm-metric-example-cfg"/>, <xref target="table2"/> below shows 
        how metric for individual interfaces of IG1 SHALL be computed at any point 
        of time.</t>

        <texttable anchor="table2" title="BBM Metric Calculation">
          <ttcol align="center">Active-Links</ttcol>
          <ttcol align="center">Total-Available-BW</ttcol>
          <ttcol align="center">BBM-Metric</ttcol>
          <ttcol align="center">Remarks</ttcol>
          <c>L1, L2, L3</c>
          <c>300G</c>
          <c>10</c>
          <c>Total-Avaiable-BW &ge; 200</c>
          <c> </c>
          <c> </c>
          <c> </c>
          <c> </c>
          <c>L1, L2, L3(down)</c>
          <c>200G </c>
          <c>10</c>
          <c>Total-Avaiable-BW &ge; 200</c>
          <c> </c>
          <c> </c>
          <c> </c>
          <c> </c>
          <c>L1, L2(down), L3(down)</c>
          <c>100G </c>
          <c>50</c>
          <c>200 &gt; Total-Avaiable-BW &ge; 100</c>
        </texttable>

      </section>

    </section>

    <section anchor="bw-based-routing" 
             title="Bandwidth Based Routing">

      <t>Once the metric of individual interfaces are derived from the corresponding 
      interface-group BBM configuration, the same are used in the local IGP SPF 
      computations. In addition to using the metrics in SPF computations, the same are 
      also advertised as the corresponding link cost (instead of the original cost 
      associated with the individual links) in the locally-generated IGP link-state 
      advertisements. This is done to eliminate any looping possible otherwise.</t>

      <t>Considering the topology in <xref target="topology"/>, 
      <xref target="bbm-re-routing"/> below shows how traffic for destination D1 
      shall be re-routed based on a series of events and BBM metric configurations 
      as shown in <xref target="bbm-metric-example-cfg"/>.</t>

      <texttable anchor="bbm-re-routing" title="BBM based Routing">
        <ttcol align="center">Event</ttcol>
        <ttcol align="center">Interface-Group</ttcol>
        <ttcol align="center">Active-Links/Total-Available-BW</ttcol>
        <ttcol align="center">BBM-Metric</ttcol>
        <ttcol align="center">Shortest Path</ttcol>
        <c>Initially</c>
        <c>IG1</c>
        <c>{L1, L2, L3} / 300G</c>
        <c>10 + Dopt(R1,D1)</c>
        <c>YES</c>
        <c> </c>
        <c>IG2</c>
        <c>{L4, L5, L6} / 300G</c>
        <c>20 + Dopt(R1,D1)</c>
        <c>NO</c>
        <c> </c>
        <c> </c>
        <c> </c>
        <c> </c>
        <c> </c>
        <c>L1 goes down</c>
        <c>IG1</c>
        <c>{L2, L3} / 200G</c>
        <c>10 + Dopt(R1,D1)</c>
        <c>YES</c>
        <c> </c>
        <c>IG2</c>
        <c>{L4, L5, L6} / 300G</c>
        <c>20 + Dopt(R1,D1)</c>
        <c>NO</c>
        <c> </c>
        <c> </c>
        <c> </c>
        <c> </c>
        <c> </c>
        <c>L2 goes down</c>
        <c>IG1</c>
        <c>{L2, L3} / 200G</c>
        <c>100 + Dopt(R1,D1)</c>
        <c>NO</c>
        <c> </c>
        <c>IG2</c>
        <c>{L5, L6} / 200G</c>
        <c>20 + Dopt(R1,D1)</c>
        <c>YES</c>
        <c> </c>
        <c> </c>
        <c> </c>
        <c> </c>
        <c> </c>
        <c>L4 goes down</c>
        <c>IG1</c>
        <c>{L3} / 100G</c>
        <c>100 + Dopt(R1,D1)</c>
        <c>NO</c>
        <c> </c>
        <c>IG2</c>
        <c>{L5, L6} / 200G</c>
        <c>20 + Dopt(R1,D1)</c>
        <c>YES</c>
        <c> </c>
        <c> </c>
        <c> </c>
        <c> </c>
        <c> </c>
        <c>L5 goes down</c>
        <c>IG1</c>
        <c>{L3} / 100G</c>
        <c>100 + Dopt(R1,D1)</c>
        <c>YES</c>
        <c> </c>
        <c>IG2</c>
        <c>{L6} / 100G</c>
        <c>110 + Dopt(R1,D1)</c>
        <c>NO</c>
      </texttable>

    </section>

 
    <section anchor="bbm-fast-reroute" 
             title="Bandwidth-based Fast Reroute">

      <section anchor="bbm-frr-overview" title="Overview">

        <t>The BBM solution described in <xref target="bbm-concepts"/> requires 
        IGPs running on the control plane of the network device, to detect the 
        link failures, determine remaining available bandwidth, re-compute new 
        optimum paths, and finally install the new best paths to the forwarding 
        plane. This may take some time (in the order of 500 ms) for the traffic 
        to switch to a better path.</t>

        <t>Also, even if regular FRR mechanism using 
        <xref target="RFC5286">LFA</xref> and 
        <xref target="I-D.ietf-rtgwg-remote-lfa">Remote-LFA</xref> has been deployed, 
        the alternate paths chosen is not gauranteed to meet bandwidth constraints. 
        Also, though, <xref target="RFC5286"/> does not specify anything, most 
        LFA implementations in link-state protocols running on the network devices 
        around the world, employs use of a single backup link. Also if there are 
        multiple primary interfaces for a specific destinations, most implementations 
        do not install a alternate path in the forwarding plane. So in the event 
        of the primary link (or one of the multiple primary links) going down, 
        traffic is either switched to a single interface, or not switched to any 
        other link at all. In the first case, there is more likeliness of the 
        single alternate path getting congested (as it might be already carrying 
        some primary traffic for other destinations already). In the latter case, 
        there is more likeliness of causing a congestion on the remaining primary 
        links (e.g. for destination D1, if both L1 and L2 goes down R1 still keeps 
        the traffic on L3 during local repair, trying to push 300G traffic on a 
        single 100G link L5).</t>

        <t>Service providers who have stringent bandwidth requirements would need 
        the device to switch the traffic during local repair to multiple alternate 
        paths that have bandwidth constraints satisfied. When the remaining 
        primary OR alternate paths alone cannot satisfy bandwidth requirements, it 
        will also be desireable, to redistribute the traffic over a combination of 
        primary AND alternate paths, during local repair as well as next SPF 
        computations in IGP.</t>

        <t>This document proposes a solution the above problem, based on combination 
        of BBM logic (referred to in <xref target="bbm-concepts"/>) and protection 
        using <xref target="RFC5286">LFA</xref> and 
        <xref target="I-D.ietf-rtgwg-remote-lfa">Remote-LFA</xref>. It requires a 
        group of primary links to be protected using multiple non-best feasible 
        alternate pathss. The same group of alternate links shall also be pre-installed 
        in forwarding table to facilitate fast re-route (FRR). The details of 
        the solution is specified in the following sub-sections.</t>

      </section>

      <section anchor="assuption-prereq" 
               title="Assumptions and Pre-requisites">

        <t>Following are some of the assumptions that the solution proposed in this 
        document is based on.

          <list style="empty">
          <t>The forwarding plane SHOULD be able handle multiple paths per route and 
          let control plane set the preference for each path over the others. Each 
          path will be specified with a weightage that will signify the relative 
          preference of the path when compared to others downloaded for the same prefix. 
          The forwarding machinery shall utilize this, to select a subset of preferred 
          paths, and use them to forward actual traffic at any given point in time.</t>

          <t>All the links attached to the network device are bundled to create one 
          or more interface-group(s). Also a link MUST belong to one and only one 
          interface-group.</t>

          <t>For each interface-group, operator MAY enable protection by configuring 
          the following two parameters.
            <list style="empty">
            <t>Minimum-bandwidth: When the remaining bandwidth goes below this the 
            outgoing traffic can no more be carried entirely on this bundle. Some 
            of it shall be distributed across links of other best/non-best 
            interface-groups.</t>
                    
            <t>Restore-bandwidth: When the remaining bandwidth exceeds this, the 
            outgoing traffic can entirely be back over the members of this bundle 
            and there is no need to use any other backup for all destinations 
            reachable over the links of the bundle.</t>
            </list>
          </t>
          </list>
        </t>
      </section>
        
      <section title="Additional Configuration and Attributes">
        <t>This document defines the following configuration parameters to be 
        associated with each interface-group for facilitating Bandwidth-based Fast 
        Re-Route. Implementations MUST allow operators to configure these 
        parameters for each interface-group on a network device that implements 
        this solution.</t>

        <texttable anchor="table4" title="BBM FRR Configurations">
          <ttcol align="left">Attribute</ttcol>
          <ttcol align="left">Value and Significance</ttcol>
          <c>Min_BW</c>
          <c>This is the minimum bandwidth below which outgoing traffic MUST not 
          be carried on this interface-group. It needs to load-balance across 
          links of best/non-best interface-groups as well.</c>
          <c> </c>
          <c> </c>
          <c>Restore_BW</c>
          <c>This is the bandwidth above which the outgoing traffic MUST entirely be 
          carried over the members of this interface-group not needing to load-balance 
          across member links of other non-best interface-groups, provided it provides 
          a path with shortest metric.</c>
        </texttable>

        <t>In <xref target="topology"/>, considering all the links L1 to L6 having  
        bandwidth capacity of 100G each, and assigned into two interface-groups 
        IG1 and IG2 (as shown in <xref target="interface-group"/>), following is an 
        example of simple BBM FRR config for each of these interface-group.</t>

        <figure anchor="bbm-frr-example-cfg" 
		title="Example BBM FRR Configuration">
	  <artwork>
       IG1:
          Member-Links: L1,L2,L3
          Total-Available-BW: 200G,  Metric: 10
          Total-Available-BW: 100G,  Metric: 50
	  Default-Metric: 1000
          Protection: Enbaled
            Restore-Bandwidth:  200G
            Min-Bandwidth:      100G

       IG2:
          Member-Links: L4,L5,L6
          Total-Available-BW: 200G,  Metric: 10
          Total-Available-BW: 100G,  Metric: 50
	  Default-Metric: 1000
          Protection: Enbaled
            Restore-Bandwidth:  200G
            Min-Bandwidth:      100G
          </artwork>
        </figure>

        <t>This document defines the following attributes to be associated with 
        each interface-group for facilitating Bandwidth-based Fast Re-Route.</t>

        <texttable anchor="table5" title="Additional Interface-Group Attributes">
          <ttcol align="left">Attribute</ttcol>
          <ttcol align="left">Value and Significance</ttcol>
          <c>BW_PostFail</c>
          <c>Cumulative bandwidth through all the remaining primary next-hops 
          considering the primary next-hop with highest bandwidth goes down.</c>
          <c> </c>
          <c> </c>
          <c>Metric_PostFail</c>
          <c>Bandwidth based metric after a link goes down.</c>
        </texttable>

        <t>This solution proposed in this document also requires IGPs to define 
        and associated the following attributes for each destination node in the 
        IGP link-state database.</t>

        <texttable anchor="table6" title="Per-node Attributes">
          <ttcol align="left">Attribute</ttcol>
          <ttcol align="left">Value and Significance</ttcol>
          <c> </c>
          <c> </c>
          <c>Pri_Nh_Count</c>
          <c>Number of primary next-hops found for the destination.</c>
          <c> </c>
          <c> </c>
          <c>Pri_BW_Curr</c>
          <c>Cumulative bandwidth across all the remaining primary next-hops.</c>
          <c> </c>
          <c> </c>
          <c>Pri_BW_PostFail</c>
          <c>Cumulative bandwidth through all the remaining primary nexthops 
          considering the primary nexthop with highest bandwidth goes down.</c>
          <c> </c>
          <c> </c>
          <c>Pri_BW_Restore</c>
          <c>Cumulative restore-bandwidth for all the interface-groups 
          considered for primary nexthops.</c>
          <c> </c>
          <c> </c>
          <c>Pri_BW_Min</c>
          <c>Cumulative minimum-bandwidth for all the interface-groups 
          considered for primary nexthops.</c>
        </texttable>

      </section>

      <section anchor="forwarding-enh" 
               title="Enhancements to Local Repair in Forwarding Plane">

        <t>Additionally, the solution proposed in this document also 
        mandates, that the forwarding plane SHOULD implement the following 
        enhanced local-repair logic, to facilitate BBM based fast-re-route, 
        on detecting a link-down event.</t> 

        <figure anchor="fwd-local-repair-enh" 
                title="Enhanced Local Repair in Forwarding Plane">
          <artwork>
For each affected prefix (a prefix is affected if the fated link was 
one of the preferred active paths used for forwarding).
- Find the actual affected path, and mark it unusable.
- For all other paths downloaded from control-plane,
  - If the preference is same as that of the affected path, 
    - Modify its preference to value even lower than normal backup paths.
Finally, go through all remaining active paths
- Select a subset of paths (that share the same highest preference among all), 
- Use the selected subset of paths to actually forward traffic.
          </artwork>
        </figure>
      </section>

      <section anchor="path-pref" 
               title="Influencing Path Preferences">
        <t>Like mentioned in <xref target="assuption-prereq"/> the solution 
        proposed in this document relies on the preference-based local-repair 
        logic implemented in forwarding-plane to facilitate fast re-route. 
        This solution requires IGPs to indirectly influence the local-repair 
        action taken by the forwarding-plane by choosing an suitable alternate 
        path with an appropriate preference-value pre-computed and installed 
        in the forwarding-plane, well ahead of the actual link failure event.</t>
        
        <t><xref target="table7"/> below, specifies a set of well-defined 
        path-preference types that this document proposes IGP to define and 
        use while downloading any path for a given destination in the 
        forwarding table.</t>

        <texttable anchor="table7" title="Path-Preference Types">
          <ttcol align="left">Preference-Type</ttcol>
          <ttcol align="left">Significance</ttcol>
          <ttcol align="left">Suggested Value</ttcol>
          <c> </c>
          <c> </c>
          <c> </c>
          <c>Pri_Nh_Pref</c>
          <c>Preference type for normal primary paths. </c>
          <c>0x1</c>
          <c> </c>
          <c> </c>
          <c> </c>
          <c>Bkup_Nh_Pref_High</c>
          <c>Preference type for paths, which are preferred, more than 
          normal backup paths but less compared to normal primary paths.</c>
          <c>0xF100</c>
          <c> </c>
          <c> </c>
          <c> </c>
          <c>Bkup_Nh_Pref_Normal</c>
          <c>Preference type for normal backup paths.</c>
          <c>0xFF00</c>
        </texttable>


      </section>

      <section title="Path Selection and Preference">
        <t>Based on the above assumptions, additional configuration parameters 
        and attributes the document proposes IGPs to implement the following 
        logic for computing primary and alternate paths for each destination,  
        and determine their corresponding path-preference value as well</t>

        <figure>
          <artwork>
Step 1: 
=======
- For each interface-group "igp"
  - Update "igp.BW_Curr" by adding the bandwidths 
    of the individual active member interfaces.
  - Update "igp.BW_PostFail", assuming one of the active 
    member interfaces with highest bandwidth goes down next.

Step 2:
=======
- For each destination node "D" in the network (Pass-1)
  - Update D.Pri_BW_Curr, D.Pri_BW_PostFail, D.Pri_BW_Restore, 
    and D.Pri_BW_Min from the SPF results.
  - Reset D.Pri_Nh_Count to 0.
  - For each corresponding primary path N,
    - Set "igp" -> Interface-group N belongs to.
    - If igp.BW_Curr &gt; igp.Min_BW
      - Set preference of N to Pri_Nh_Pref.
      - Increment the D.Pri_Nh_Count by 1.
    - Else 
      - Set preference of N to Bkup_Nh_Pref_Normal.

Step 3: 
=======
- For each destination node "D" in the network (Pass-2)
  - Update D.Pri_BW_Curr, D.Pri_BW_PostFail, D.Pri_BW_Restore, 
    and D.Pri_BW_Min.
  - For each corresponding primary path N,
    - Set "Pri_Igp" -> Interface-group N belongs to.
    - If protection configured on "Pri_Igp"
      - If D.Pri_BW_PostFail &lt; D.Pri_BW_Restore, 
        OR Pri_BW_PostFail &le; Pri_BW_Min
        - For all backup paths M,
          - Set "Alt_Igp" -> Interface-group N belongs to.
          - Select M for installing in forwarding plane.
          - If D.Pri_Nh_Count == 0
            - If Alt_Igp.BW_Curr &ge; D.Pri_BW_Restore, 
              AND Alt_Igp.BW_Curr &gt; D.Pri_BW_Min
              - Set preference of M to Pri_Nh_Pref.
            - Else 
              - Set preference of M to Bkup_Nh_Pref_Normal.
          - Else 
            - If Alt_Igp.BW_Curr &ge; D.Pri_BW_Restore,
              AND Alt_Igp.BW_Curr &gt; D.Pri_BW_Min
              - Set preference of M to Bkup_Nh_Pref_High.
            - Else 
              - Set preference of M to Bkup_Nh_Pref_Normal.

           </artwork>
         </figure>
      </section>
        
    </section>

    <section title="Limitations">

      <t>The BBM method proposed in this document does NOT ensure end to end 
      bandwidth requirement. It, only ensures that the  metric is altered only 
      on local interfaces, based on the BBM metric configurations and remaining 
      available bandwidth.</t>

      <t>The solution proposed in this documents attempts to provide protection 
      for single link failures only. It always assumes that link with the highest 
      individual bandwidth capacity shall fail next. In case if any other link 
      with lesser individual bandwidth capacity fails instead, the local repair 
      action taken by the forwarding plane may not be exactly as expected, even 
      though the forwarding plane will still take care of protecting the traffic.</t>

    </section>

    <section title="Security Consideration">
      <t>Changes suggested in the draft does not raise any security concerns.</t>
    </section>
	
    <section title="IANA Consideration">
      <t>This draft does not have any request from IANA.</t>
    </section>
		
  </middle>

  <!--  *****BACK MATTER ***** -->

  <back>
    <!-- References split into informative and normative -->

    <references title="Normative References">
	  <?rfc include="reference.RFC.2119"?>
    </references>
    
    <references title="Informative References">
      <?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.5286.xml"?>
      <?rfc include="http://xml.resource.org/public/rfc/bibxml3/reference.I-D.draft-ietf-rtgwg-remote-lfa-11.xml"?>
    </references>
  </back>

</rfc>
