<?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="no"?>
<?rfc comments="no"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc category="std"
     docName="draft-zlj-mpls-mrsvp-te-frr-01.txt"
     ipr="pre5378Trust200902">
  <front>
    <title abbrev="mRSVP-TE FRR">Fast Reroute Extensions to Receiver-Driven
    RSVP-TE for Multicast Tunnels</title>

    <author fullname="Katherine Zhao" initials="Katherine" surname="Zhao">
      <organization>Huawei Technologies</organization>
      <address>
        <postal>
          <street> 2330 Central Expressway </street>
          <city>Santa Clara</city>
          <region>CA</region>
          <code>95050</code>
          <country>USA</country>
        </postal>
        <email>katherine.zhao@huawei.com</email>
      </address>
    </author>

    <author fullname="Renwei Li" initials="Renwei" surname="Li">
      <organization>Huawei Technologies</organization>
      <address>
        <postal>
          <street> 2330 Central Expressway </street>
          <city>Santa Clara</city>
          <region>CA</region>
          <code>95050</code>
          <country>USA</country>
        </postal>
        <email>renwei.li@huawei.com</email>
      </address>
    </author>
    
    <author fullname="Christian Jacquenet" initials="Christian" surname="Jacquenet">
      <organization>France Telecom Orange</organization>
      <address>
        <postal>
          <street> 4 rue du Clos Courtel</street>
          <city>35512 Cession Sevigne</city>
          <region/>
          <code/>
          <country>France</country>
        </postal>
        <email>christian.jacquenet@orange.com</email>
      </address>
    </author>

    <date month="January" year="2013"/>
    
<area> Routing</area>
<workgroup>MPLS Working Group</workgroup>

<abstract>
<t>This document specifies fast reroute procedures to protect multicast LSP
tunnels built by mRSVP-TE, a receiver-driven extension to RSVP-TE specified by
[I-D.draft-lzj-mpls-receiver-driven-multicast-rsvp-te]. This
document is motivated by the observation that the existing FRR solution
specified by <xref target="RFC4090"/> and <xref target="RFC4875"/> for the
sender-driven RSVP-TE is no longer applicable to the receiver-driven RSVP-TE. </t>

   </abstract>
  </front>

<middle>

<section title="Terminology">

<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 RFC2119 [RFC-WORDS]. The reader is assumed to be familiar with the terminology in [RSVP], [RSVP-TE] and [mRSVP-TE].</t>

<t> This document uses same terminologies stated in [I-D.draft-lzj-mpls-receiver-driven-multicast-rsvp-te],
<xref target="RFC4090"/> and <xref target="RFC4875"/>. In addition, some key notions and terminologies for this document
are explained as follows:</t>

	<t>
	<list style="symbols">

<t>mLSP, Multicast Label Switched Path, is either a P2MP or MP2MP LSP consisting
of one or more sub-LSPs.</t>

<t>mRSVP-TE, Multicast Resource Reservation Protocol-Traffic Engineering, is
used to distinguish from the regular sender-driven RSVP-TE. One major difference
between RSVP-TE and mRSVP-TE is that the tunnel setup is initiated by the data receiver 
instead of the data sender.</t>

<t>PLR: Point of Local Repair, an LSR that detects a local failure event and
redirects traffic from protected mLSP to a backup mLSP tunnel which is designed 
to take over traffic forwarding until the protected tunnel is repaired. </t>

<t>MP: Merge Point, an LSR that merges the traffic from backup tunnels with
primary LSP at the level of forwarding plane. In the receiver-driven RSVP-TE for approach, the MP is the LSR that initiates backup mLSP setup taking PLR as the root
of the backup LSP.</t>

<t>N: The node to be protected.</t>
<t>Pn: The node(s) on the backup path for protecting node N.</t>
<t>Root: A router where an mLSP is rooted at. Multicast contents enter the root and then are distributed to leaf routers along the P2MP/MP2MP LSP. </t>
<t>FRR Domain: A set of links and LSRs that compose a protected sub-LSP and backup LSP, and which is located between PLR and MP(s).</t>

      
	</list>
	</t>

</section>


<section title="Introduction">

<t>Fast Reroute technology has been well accepted and deployed to provide
millisecond-level protection in case of node/link failures.
 FRR employs some local repair mechanisms to meet the fast reroute requirements by
 computing and provisioning backup tunnels in advance of failure and by
 redirecting traffic to such backup tunnels as close to the failure point as possible.</t>

<t>The fast reroute extensions to RSVP-TE are specified in <xref target="RFC4090"/>
and <xref target="RFC4875"/>. Such extensions work well with the sender-driven
RSVP-TE, but they are no longer applicable to the receiver-driven RSVP-TE for
multicast tunnels described in the draft [I-D.draft-lzj-mpls-receiver-driven-multicast-rsvp-te].
</t>

<t>In the receiver-driven paradigm of mRSVP-TE, the procedure to set up an LSP tunnel is
inverted from that in the sender-driven RSVP-TE, and thus the backup mLSP setup
and failover handling mechanism will have to be
different from what has been specified for the sender-driven RSVP-TE.
From the signaling point of view, the behavior of PLR and MR is inverted from the sender-driven
paradigm of RSVP-TE: the setup for a backup mLSP is initiated by MP with PLR
being taken as the
root of a P2MP/MP2MP tree. The RSVP PATH message is sent from MP towards PLR with
the FAST_REROUT, DETOUR as well as other FRR related objects conveyed in the PATH message.
RSVP RESV message is sent from PLR towards MP carrying FRR information such as the
inner label used to represent a protected mLSP tunnel, etc.</t>

<t>On the other hand, from the packet forwarding point of view, the behavior of PLR
and MP is similar to the sender-driven RSVP-TE. The traffic switchover
and redirecting are still initiated by PLR, and the data traffic is merged at MP
in the same way as what is specified for the sender-driven RSVP-TE. </t>

<t>This document describes various FRR protection methods and behavior changes for
the receiver-driven mRSVP-TE, and specify fast-reroute extensions to the RSVP-TE messages,
mechanisms and procedures specified in the mRSVP-TE draft
[I-D.draft-lzj-mpls-receiver-driven-multicast-rsvp-te].</t>


<section title="Link Protection and Node Protection with mRSVP-TE">

<t>FRR link protection aims to protect a direct link between two LSRs
(Label Switch Routers). An LSR at one end of the link is called PLR (Point of
Local Repair), and the other LSR located at the other end of the link is called MP
(Merge Point). A backup LSP whose setup is originated at MP and terminated at
PLR will be established to protect the primary LSP crossing over the link.
The LSRs over the backup path are called Pn. These connected LSRs and links are
called an FRR domain in this document. An example of an FRR domain supporting
link protection is shown in Figure 1.</t>

    <figure anchor="mRSVP-TE-Link-Protection" title="Basic FRR Link Protection">
	    <artwork name="mRSVP-TE Link Protection">

                          
                         Protected  
             +---------+   Link     +--------+
  Sender --- | R1(PLR) |------------| R2(MP) | --- Receiver
             +---------+            +--------+
                    *                 *
                     *               * Backup Tunnel                 
                      *             *                
                        +---------+ 
                        | R3(Pn)  | 
                        +---------+ 
         </artwork>
	 </figure>

<t>In an FRR domain constructed by mRSVP-TE, the MP initiates both the primary and
the backup LSP setup at the signaling control plane, and merges the traffic from
the backup LSP into the primary LSP at the data forwarding plane. The PLR works
with the MP to set up LSP at the signaling control plane accordingly, and detects
link failure and initiates local repair at the data forwarding plane. In Figure 1,
we use hyphens (-)to denote a primary tunnel between LSRs; and asterisks (*) to denote
a backup tunnel. The same symbols will be applied to all figures throughout the
document.</t>

<t>Node protection is a technique used to protect a node N that resides between
PLR and MP over a primary LSP. An example of node protection is shown in Figure 2.</t>

    <figure anchor="mRSVP-TE-Node-Protection" title="Basic FRR Node Protection">
	    <artwork name="mRSVP-TE Node Protection">

                             Protected 
   Sender                      Node                    Receiver
      +---------+           +---------+           +--------+
 ---- | R1(PLR) |-----------| R2(N)   |-----------| R3(MP) | --- 
      +---------+           +---------+           +--------+                 
            *                                          *
            *                                          *          
            *       +---------+      +---------+       *
            ********| R4(Pn1) |******| R5(Pn2) |********  
                    +---------+      +---------+    Backup Tunnel                 
 
         </artwork>
	 </figure>

<t> N (R2) denotes a node being protected over a primary LSP, its upstream node
plays the role of PLR while the downstream node plays the role of MP. Pn denotes
a transit node over its backup LSP. Note that there can be multiple Pn's over
a backup tunnel.
Pn does not play a significant role for FRR but works as a regular LSR to receive
and transmit multicast data and signaling messages over backup LSPs.  </t>

<t>Besides the basic P2P node protection, mRSVP-TE suggests P2MP and
MP2MP node protection as shown in Figures 3 and 4. Because the same protection
mechanism can be commonly used for both P2MP and MP2MP, this document uses P2MP
as example for the discussion, and mention MP2MP only if there is a difference
from P2MP.</t>

<t>There are two typical methods to protect a P2MP multicast tree, one that uses a
P2MP tree as a backup LSP to protect a primary mLSP (see Figure 3), and the other that 
uses multiple P2P LSPs to protect a P2MP mLSP(see Figure 4).</t>
    <figure anchor="mRSVP-TE-P2MP-Node-Protection"
            title="P2MP Node Protection in Facility Mode">
	    <artwork name="mRSVP-TE P2MP Node Protection">
                             Protected
   Sender                      Node                      Receiver
     +-------+              +-------+       +-------+
-----|R1(PLR)|--------------| R2(N) |-------|R3(MP1)|---- PE1
     +-------+              +-------+       +-------+                 
         *                            \    *               
         *                             \  *                       
         *                              \*
    Backup Tunnel                       *\
         *                             *  \
         *                            *    \
         *   +-------+       +-------+      +-------+
         ****|R4(Pn1)|*******|R5(Pn2)|******|R6(MP2)|---- PE2  
             +-------+       +-------+      +-------+                                            
 
         </artwork>
	 </figure>


    <figure anchor="Backup-P2P-LSPs-for-Node-Protection"
            title="Multiple P2Ps Protecting a P2MP LSP">
	    <artwork name="P2P LSPs for Node Protection">
                    +---------+      +---------+   Backup Tunnel
            ********| R4(Pn1) |******| R5(Pn2) |********  
            *       +---------+      +---------+       *                
            *                                     +--------+
   Sender   *              Protected Node    -----| R3(MP) |---- PE
      +---------+           +---------+      |    +--------+
 ---- | R1(PLR) |-----------| R2(N)   |------|
      +---------+           +---------+      |    +--------+                 
            *                                -----| R3(MP) |---- PE
            *                                     +--------+ Receiver
            *       +---------+      +---------+       *
            ********| R6(Pn3) |******| R7(Pn4) |********  
                    +---------+      +---------+    Backup Tunnel                 
 
         </artwork>
	 </figure>

   </section>


<section title="Primary and Backup LSP">

<t>A router that detects a node/link failure must have pre-determined which
alternate reroute path it should use to forward traffic while the failure is being fixed. The alternate backup path should
be established before a protected LSP is broken. Anything such as backup route
computation and configuration required for local repair purposes should be done prior to
failure occurrence so that the failover time can be reduced to minimum.</t>

<t>On the control plane, the backup LSP will be set up along with its
primary LSP setup. The PATH/RESV refresh messages are transmitted over both protected
and backup LSPs before failover.  However on the data plane, there are two implementation
options for traffic forwarding. One option is that traffic is not forwarded
on backup LSP tunnel until a failure is detected and the local repair takes place.
The second option is to forward traffic on both protected and backup
mLSPs before failover, and the LSR at Merge Point will then drop packets coming from the backup path before switchover. The second option can further reduce traffic switchover time at the cost of extra overhead and bendwidth sub-optimization.
This document leaves the flexibility for implementation to decide which option to
choose, but will use the first option for the discussion, i.e. we assume that the
traffic is forwarded on the primary LSP only before switchover. </t>

</section>


<section title="Detour Backup and Facility Backup">
<t>Due to historical reasons and implementation preferences, two independent methods for doing fast reroute have been developed. One backup method is called detour backup and 
is especially designed for 1:1 protection. The other one is called facility backup and is especially designed for 1: N protection, where N can be equal to or greater than 1.
From the point of view of applications, the facility backup method can support both 1:N and 1:1,
but from the technical point of view, these are two different methods requiring different implementations
with respect to their label stacks when forwarding packets.
</t>

<t>
The detour backup creates a dedicated LSP to protect an LSP and uses a single MPLS
label for packet encapsulation; its implementation is simpler but consumes more
label resources.  The facility backup creates a common LSP to protect a set of
LSPs that have similar backup constraints. This method takes advantage of MPLS
label stacking and uses dual-label encapsulation, thus it can save some label
resources compared to the detour backup method.
</t>

<t>
These two solutions have co-existed as options for vendors and service providers to choose.
This document will specify both the methods applied to mRSVP-TE. Throughout the document, the detour
method is used to represent 1:1 protection while the facility method is used to represent
1:N protection. The term "detour LSP" is especially used for 1:1 protection while
"backup LSP" is used for 1: N protection. Sometimes the latter can be used for both kinds of protection schemes when no ambiguity arises.</t>
</section>

</section>


<section anchor="Detour" title="Detour Backup for mRSVP-TE">

<t>This section specifies mechanisms and procedures for mRSVP-TE fast reroute by
using the detour backup method. The term "detour LSP" will be used to denote the LSP in the detour mode and the 1:1 protection scheme.
</t>

  <section title="Link Protection in Detour Backup Mode">
  
<section title="Detour LSP Setup Scenario for Link Protection">

<t>A detour LSP setup is initiated by MP along with the setup of the protected
LSP (Figure 1), which is one of the major differences
from the procedure stated in <xref target="RFC4090"/> and <xref target="RFC4875"/>.
Following the LSP setup procedure specified by the draft
[I-D.draft-lzj-mpls-receiver-driven-multicast-rsvp-te],  MP sends RSVP PATH messages
towards the sender over a primary path. For link protection purpose, both the MP and PLR are
directly connected by the link being protected, hence the PATH message is sent
from the MP to the PLR directly upstream.
</t>

<t>The MP is not necessarily the originator of the primary LSP, but is the first LSR
entering an FRR domain along the primary route. Once the PATH message is sent out by the MP, the MP will check whether there is a detour route available for link protection. The detour route calculation can be done by running CSPF on the link state database produced by IGP protocols with TE extensions. There is no change required for backup route computation, and 
the detour LSP computation will be based on this assumption.</t>
 
<t>If the CSPF stack  returns 'no detour route found' after the detour calculation, MP
will not perform the detour LSP setup. If at least one detour route is found by CSPF stack, MP selects the shortest route and initiates the detour LSP setup.  
MP considers PLR as the end point of the detour
LSP and sends a PATH message towards PLR hop-by-hop. In the example of Figure 1,
the PATH message will be sent to Pn (R3) and then relayed to PLR (R1).</t>

<t>Upon receipt of the PATH message, the PLR sends back a RESV message towards the MP through the Pn(s).
The transit Pn(s) nodes relay the PATH/RESV messages without any special process
required for the link protection.  The detour LSP setup is completed once the RESV message 
is received and processed by the MP.</t>

  	</section>


<section title="Label Allocation for Link Protection">

<t>Because the detour method uses a dedicated backup LSP to protect a primary LSP,
one-to-one binding can be made for a pair of primary and backup LSPs,
a single MPLS label encapsulation will be sufficient for packet forwarding and
local failure repair purpose. DLA (downstream label allocation) can be used as the label
assignment method over the detour tunnel for the link protection.  With mRSVP-TE,
a downstream label is assigned by an LSR that is sending a PATH message to
its upstream router, and an upstream label is assigned by an LSR that is sending
the RESV message to its downstream router.  The label allocation, however, is
more complicated when the primary LSP is a P2MP or MP2MP tree. A specific upstream
label allocation and resource preemption method is defined in this document to
handle the protection of P2MP and MP2MP tree structures. </t>

<t>An example of the label allocation for link protection in the detour mode is provided in Figure 5.  For the sake of readability, we use label Lp to represent the
label assigned to the primary tunnel, and label Lb for the labels assigned to the backup tunnel.
For example, Lp2 represent a downstream label assigned for LSR R2 to receive
 incoming data over the primary tunnel. Lb2 represents a downstream label
 assigned for R2 to receive data over a detour LSP.</t>

    <figure anchor="mRSVP-TE-Link-Protection-in-Detour-Mode" title="Label Allocation for Link Protection in Detour Mode">
	    <artwork name="mRSVP-TE Link Protection in Detour Mode">

             Lp1-&gt;Lp2,MP             Lp2-&gt;Lp-pe,PE
             Lp1-&gt;Lb3,Pn             Lb2-&gt;Lp-pe,PE                
                          
         Lp1 +---------+   Lp2      +--------+ Lp-pe 
  Sender --- | R1(PLR) |------------| R2(MP) |-------PE, Receiver
             +---------+  Protected +--------+
                    *       Link      *
                     *               * Backup Tunnel                 
                  Lb3 *             * Lb2               
                        +---------+ 
                        | R3(Pn)  | 
                        +---------+ 
                        Lb3-&gt;Lb2,MP
         </artwork>
	 </figure>

<t>In the example of Figure 5, MP assigns label Lp2 and sends it to PLR via the
PATH message over the link {MP-PLR} to set up the primary LSP.
For the detour route {MP-Pn-PLR}, MP assigns a label Lb2 and sends it to
Pn via the PATH message. MP binds label Lp2 with label Lb2 for this pair of 
primary and detour LSPs.  An entry 'Lp2-&gt;Lp-pe, PE' will be added into
MP's FIB to forward packets over the protected LSP.
Another entry 'Lb2-&gt; Lp-pe, PE' will be added and used when traffic is received
from the detour tunnel upon switchover.
</t>

<t>Pn (transit node) on the detour tunnel receives Lb2 from MP. Pn assigns a downstream
label Lb3 and sends it to the PLR via a PATH message. Pn will add an entry 'Lb3-&gt;Lb2, MP'
to its FIB for packet forwarding.  Note that Pn is not aware of the primary LSP,
so there is only one forwarding entry needed in its FIB. </t>

<t>PLR receives two PATH messages from MP and Pn respectively. Then it binds label
Lp2 from the primary LSP with label Lb3 from the detour LSP. The detour LSP ends
at PLR while the primary LSP may not end at PLR if the PLR is not the root of the
P2MP tree. PLR will allocate a downstream label Lp1 and sends it to its upstream
router, which is outside of the FRR domain in this example, hance not shown in Figure 5.
There will be two entries added into PLR's FIB: one entry 'Lp1-&gt;Lp2, MP' for
the primary traffic forwarding, and another entry 'Lp1-&gt;Lb3, Pn' for
the detour traffic forwarding upon failover.</t>

<t>PLR processes PATH messages from MP and sends RESV messages towards MP.
If the primary sub-LSP is part of a RD P2MP tree, PLR will not allocate upstream labels
for receiving traffic from the downstream node (MP or Pn in this example) because 
traffic is uni-directionally forwarded. If the primary sub-LSP is part of a RD 
MP2MP tree, PLR will allocate
an upstream label for receiving traffic from the opposite direction, and Pn(s) do
the same and allocate upstream label for the detour sub-LSP accordingly. Detour LSP 
setup is completed once MP has received and processed the RESV message originated 
by PLR. Figures 5 shows the summary of labels allocated and FIB entries 
created on each node in the FRR domain.</t>
    </section>

  	<section title="Link Failure Repair in Detour Mode">

<t>Link failure can be detected by, for example, BFD (Bidirectional Forwarding Detection,
[RFC5880],[RFC5884])along the protected LSP, The failure detection algorithm is the 
same as what is used for the sender-driven RSVP-TE.</t>

<t>Once a link failure is detected by PLR and all switchover criteria are met,
PLR will redirect the traffic to the detour LSP based on the forwarding entry
'Lp1-&gt;Lb3, Pn'. The entry 'Lp1-&gt;Lp2, MP' for the primary path will be withdrawn. </t>

<t>Pn works as a normal label switch router and forward MPLS packets to MP.
MP receives the packet and figures out that such packets come from the detour path,
so they will be forwarded to PE based on the entry 'Lb2-&gt;Lp-pe, PE', in the example 
of Figure 5.
The detour traffic is therefore merged back to the primary LSP towards PE, which
completes the link failure repairing by detouring and merging the traffic.</t>

    </section>
  	<section title="Re-convergence after Local Repair">

<t>Routers that do not belong to the FRR domain are not impacted by the link failure and
local repair.
Traffic is transmitted over a detour LSP after a link failure and local repair.
Usually, the detour path is not the shortest path so the network will eventually
re-converge and a new shortest path will be calculated by the MPLS control plane.
Once a new primary path is determined, the traffic is no longer transmitted through
the detour LSP and PLR will be notified to tear down the detour LSP and clean up
its internal LIB. PLR will send a PathTear message to Pn and MP for tearing
down the detour LSP and release backup labels. Re-convergence procedure is the
same as the procedure used for sender-driven RSVP-TE FRR. </t>
</section>
    
</section>

<section title="Node Protection in Detour Backup Mode">
  
  	<section title="Detour LSP Setup for Node Protection">

<t>The detour LSP setup for the node protection is similar to the link protection.
Take Figure 2 as an example, where protected node N resides between MP
and PLR. In this case the two sub-links {MP-N} and {N-PLR} are also to be
protected in addition to the node N protection. It is assumed that the
link protection mechanism discribed in the previous sub-section is applicable to
the sub-link protection in this situation. Hence this section will focus on the
procedure to handle node protection. A combined solution for providing node
protection with link protection can be derived from the
discussions of section 3.1 and this section.</t>

<t>For the node protection shown in Figure 2, MP(R3) sends a PATH message to N
for the primary LSP setup, the primary LSP in the FRR domain goes through the
route {MP-N-PLR}. Once the PATH message is sent out to N, MP checks whether
there is a detour path available for node N by using CSPF computation, which
would indicate N as a node to be avoided on the detour path. If no detour route
is found, MP skips the detour LSP setup.  If a detour route is found, MP initiates
the detour LSP setup and considers PLR as the end-point of the detour LSP. MP
sends a PATH message towards PLR over the detour route hop-by-hop. In the example
of Figure 2, the detour route is in the order of {MP-Pn2-Pn1-PLR}. Similar to
the link protection, PLR sends back a RESV message towards MP through Pn(s).
Transit node Pn(s) just relay the PATH and RESV messages without any specific node protection procedure. The detour LSP setup is completed once
the RESV message is received and processed by MP.</t>

<t>Figure 2 shows a typical example of node protection where N is not a branch node;
it will be more complicated when N is a branch node that is part of a RD P2MP/MP2MP tree structure. The corresponding mechanism is described in section 5.2.2.</t>

</section>
  	

<section title="Label Allocation and Binding for Node Protection">

<t> Similar to link protection, node protection uses the single label
encapsulation and downstream label allocation method in the detour backup mode.
An example of the label allocation for node protection is provided in Figure 6.</t>

    <figure anchor="mRSVP-TE-Node-Protection-in-Detour-Mode" title="Node Protection in Detour Mode">
	    <artwork name="mRSVP-TE Node Protection in Detour Mode">

      Lp1-&gt;Lp2,N                             Lp3-&gt;Lp-pe,PE
      Lp1-&gt;Lb4,Pn1        Lp2-&gt;Lp3,MP        Lb3-&gt;Lp-pe,PE                    
                                              
  Lp1 +---------+   Lp2   +---------+   Lp3  +--------+ Lp-pe
 ---- | R1(PLR) |---------| R2(N)   |--------| R3(MP) |------PE 
      +---------+         +---------+        +--------+                 
 Sender     *                                      *   Receiver
            *                                      *          
            * Lb4 +---------+ Lb5  +---------+ Lb3 *
            ******| R4(Pn1) |******| R5(Pn2) |****** 
                  +---------+      +---------+  
                  Lb4-&gt;Lb5,Pn1      Lb5-&gt;Lb3,MP                 
 
         </artwork>
	 </figure>

<t>MP (R3) assigns a label Lp3 for the primary LSP and sends it to node N via
a PATH message over the protected route {MP-N-PLR}. N will allocate a downstream
label Lp2 and sends it to PLR via a PATH message.  MP also assigns a label Lb3
for the detour LSP and sends it to Pn2 via a PATH message over the detour route
{MP-Pn2-Pn1-PLR}.  MP binds label Lp3 with label Lb3 for this pair of primary
and backup LSPs.  An entry 'Lp3-&gt;Lp-pe, PE' will be added to MP's FIB for packet forwarding over the primary LSP.  Another entry 'Lb3-&gt;Lp-pe, PE'
will be kept in the FIB and used when a failover takes place and traffic is redirected
to the detour LSP. </t>

<t>There could be multiple transit nodes Pn(s) along the detour LSP, each of
which will allocate a downstream label and sends it to its upstream router.
Eventually PLR receives the PATH message from the protected node N and
the transit node Pn1 in this example. PLR binds primary label Lp2 with the
detour label Lb4, and adds two entries into its FIB: One entry 'Lp1-&gt;Lp3, N'
for the traffic forwarding over the primary LSP, and another entry 'Lp1-&gt;Lb4, Pn1' for
the traffic forwarding over the detour LSP. An example of the allocated labels and FIB entries in the FRR domain are mentioned in Figure 6.</t>
	</section>


<section title="Node Failure Repair in Detour Mode">

<t>Once the node N failure is detected by PLR, it will redirect the traffic from
the primary LSP to its detour LSP based on the binding and forwarding entry
'Lp1-&gt;Lb4, Pn1'.  The traffic is forwarded through LSR-&gt;Pn1-Pn2-&gt;MP.
Eventually, MP will receive packets from the detour path. Consulting its FIB
forwarding entry 'Lb3-&gt;Lp-pe, PE', traffic will then be forwarded to PE in the 
example of Figure 6, so that the detoured traffic gets merged into the primary path. </t>

<t>The local repair mechanism for the node protection is the same as
the link protection in the detour mode except that there are two links {MP-N}
and {N-PLR} to be protected in conjunction with the node N protection. The FRR
domain must be configured so that both the link and node failure
detection methods are specified. For example, BFD needs to be activated between
MP abd N, N and PLR, and PLR and MP.
		 
PLR and MP can be used for either link repair, node repair or both depending on
the results of BFD detection.</t>

</section> 


<section title="Re-Convergence after Local Repair">

<t> After a node failure takes place, the network topology will change.
As a consequence, the network will eventually re-converge and a new best path will
be computed to establish the primary LSP. PLR will be notified as soon as 
the new primary LSP is signaled and set up. PLR will send notification messages 
to Pn1 and MP for tearing down the detour LSP and withdraw backup labels. </t>

</section>

    </section>

   </section>

<section anchor="Facility" title="Facility Backup for mRSVP-TE">

<t> This section specifies mechanisms and procedures for mRSVP-TE fast reroute
by using the facility backup method.
The term backup LSP will be used to denote the LSP in the facility mode
for 1: N protection.
Note that the term 'detour LSP' is no longer used in this section for the Facility backup. </t>

<t>The backup LSP differs from the detour LSP in that one single backup LSP is used to
protect multiple primary LSPs. General speaking, two labels will be used for the
backup LSP with the inner label being used to indicate which primary LSP is being
protected.</t>

<section title="Link Protection in Facility Backup Mode">

<section title="Backup LSP Setup for Link Protection">
	
<t> Similar to the detour LSP setup, MP sends a RSVP PATH message towards PLR
over the primary route. Once the PATH message is sent out, MP will execute
the backup LSP procedures as per the following steps:</t>
    <t>
	<list style="symbols">

<t> Check whether there has been a backup LSP created to protect the link between PLR
and MP. If a backup LSP is found, skip the further process at MP, e.g., do not
send a PATH message over the backup route for LSP setup. However, this does not mean
that no process is needed for link protection. Later on, the PLR will allocate an
inner label for each newly created primary LSP and send it to Pn(s) and MP via
RESV messages. Details for label allocation and packet encapsulation are discussed in 
section 4.1.2. </t>

<t> If there is no backup LSP available, MP initiates the backup LSP setup:
MP calculates a backup route by using CSPF taking PLR as the endpoint of
the backup LSP and sends a PATH message towards PLR hop-by-hop over the backup route.
In the example of Figure 1, PATH messages will be sent from MP to Pn (R3) and relayed to
PLR (R1). PLR will then send a RESV message to MP, so as to complete the backup LSP
setup. Section 4.1.2 specifies the details about the label allocation and binding.</t>

     </list>
     </t>
      <t> </t>

	</section>


<section title="Label Allocation for Link Protection">
	
<t> As a backup LSP protects one or more primary LSPs, the facility 
protection scheme uses two labels for
packet forwarding. The outer label is used for regular packet forwarding
hop-by-hop over the backup LSP, while the inner label is used to represent a
primary LSP and used by MP to merge traffic forwarded over the backup LSP 
to its corresponding primary LSP. Multiple primary LSPs will share 
the common outer label while the inner label
is unique for each protected LSP.  Figure 7 below shows how the two labels 
are assigned and used for the facility backup. There are two primary LSPs to be
protected by a common backup LSP in this example.</t>

    <figure anchor="Link-Protection-in-Facility-Mode " title="Label Allocation for Link Protection in Facility Mode">
	    <artwork name="Link Protection in Facility Mode">

                in PLR FIB                   in MP FIB
LSP1-Entry   Lp11-&gt;Lp12,MP             Lp12-&gt;Lp-pe1,PE1
             FRR:Lp12,Lp11-&gt;Lb3,Pn     FRR:Lp12,Lb2-&gt;Lp-pe1,PE1

LSP2-Entry   Lp21-&gt;Lp22,MP             Lp22-&gt;Lp-pe2,PE2
             FRR:Lp22,Lp21-&gt;Lb3,Pn     FRR:Lp22,Lb2-&gt;Lp-pe2,PE2 
              
LSP1-Lbl Lp11              Lp12                Lp-pe1
LSP2-Lbl Lp21+---------+   Lp22     +--------+ Lp-pe2
      -------| R1(PLR) |------------| R2(MP) |-------PE1,Receiver
 Sender      +---------+  Protected +--------+-------PE2,Receiver
                   *       Link        *
                     *                * Backup Tunnel
                  Lb3 *             * Lb2               
                        +---------+ 
                        | R3(Pn)  | 
                        +---------+ 
                        FRR:Lp12,Lb3-&gt;Lb2,MP
                        FRR:Lp22,Lb3-&gt;Lb2,MP
         </artwork>
	 </figure>


<t> Assume that primary LSP1 is created first, MP assigns a downstream label
Lp12 for LSP1 being protected and sends the label to PLR via a PATH message over
route {MP-PLR}.  Because the primary LSP1 is the first LSP created over this route,
MP also assigns a downstream label Lb2 for the backup LSP and sends it to Pn
via a PATH message over the backup route {MP-Pn-PLR}.  Pn allocates a downstream
label Lb3 and sends it to PLR via a PATH message. </t>

<t> Once PATH messages are received from MP and Pn respectively, PLR will allocate
an inner label to represent the primary LSP1 for the backup LSP. The method to
allocate the inner label is implementation-specific. In this example, label Lp12
is used as the inner label to represent primary LSP1 over the backup LSP.
LSR at merge point uses the inner label to locate the corresponding primary LSP.
The inner label is propagated from PLR to MP by a RESV message. Note that PLR
and MP are the only LSRs that actually see, use or process the inner label, while
other transit node Pns do not process the inner label. </t>



<t> The process for the second or additional primary LSPs protected by the same backup
LSP is different from that for the first one. MP does not allocate any new
 downstream label for the backup LSP since the backup LSP for the first primary
 LSP is shared between all the primary LSPs protected by the same backup LSP.
 But the PLR is required to allocate an inner label for each newly created
 primary LSP and sends it to MP hop-by-hop via a RESV message. </t>

<t>
We use Figure 7 as an example to show the packet forwarding FIB entry by using
the following format: </t>
   <t>  </t>
   <t> FRR:(inner label),(incoming outer label)-&gt;(outgoing outer label),NHOP </t>
   <t>  </t>

<t> When MP allocates the downstream label Lp12 for the primary LSP1, an entry
'Lp12-&gt;Lp-pe1, PE1' is added into MP's FIB.  Another FRR entry
'FRR: Lg12, Lb2-&gt;Lp-pe1, PE1' is added when MP receives a RESV message that
carries an inner label Lg12 and binding information with LSP1.
So the MP will have two forwarding entries for each protected LSP.
In this example MP will maintain four entries in its FIB for the two protected paths
 LSP1 and LSP2:</t>
    <t>
	<list style="empty">
               <t> Lp12-&gt;Lp-pe1, PE1 </t>
               <t> Lp22-&gt;Lp-pe2, PE2 </t>
               <t> FRR: Lp12, Lb2 -&gt; Lp-pe1, PE1 </t>
               <t> FRR: Lp22, Lb2 -&gt; Lp-pe2, PE2 </t>
     </list> <vspace/>
     </t>
     <t>   </t>

<t>PLR creates a forwarding entry for a primary LSP whenever it receives a
PATH message for the setup of a new primary LSP.
For each primary path LSP1, once PLR receives the PATH message from the backup
route, PLR allocates an inner label for the primary LSP
and creates an FRR entry in its FIB. The PLR FIB will have these entries for 
the two protected LSP LSP1 and LSP2:</t>
    <t>  </t>
    <t>
	<list style="empty">
               <t> Lp11 -&gt;Lp12, MP </t>
               <t> Lp21-&gt;Lp22, MP </t>
               <t> FRR: Lp12, Lp11 -&gt; Lb3, MP </t>
               <t> FRR: Lp22, Lp21 -&gt; Lb3, MP </t>
     </list> <vspace/>
     </t>
     <t>  </t>
 
<t>
Note that the transit routers Pn use the outer label for packet forwarding and
keep the inner label untouched.
</t>


	</section>	

	<section title="Link Failure Repair in Facility Mode">

<t> Before a link failure is detected, PLR encapsulates user packets with a
single label Lp1 and forwards the packet to MP. MP also uses a single label
encapsulation and forwards the packet to PE (as per Figure 7).</t>

<t>After a link failure is detected, the PLR (for example, R1 in Figure 7) will
encapsulate traffic with two labels: the outer label Lb2 is used for
packet forwarding over the backup path, while the inner label Lp2 is used to map traffic to the
corresponding primary LSP.  MP will pop out outer label Lb2 if needed, swap
inner label Lp12 with Lp-pe1, and then forward packets to PE1, as per the example of Figure 7.
</t>

	</section>	

	<section title="Re-Convergence after Local Repair">

<t>
After a link failure occurs, the network will reconverge.
PLR will be notified as soon as a new best path for the primary LSP will be found
and activated. Then PLR will tear down the backup LSP,
release backup labels and clean up entries in its FIB.</t>
	</section>	
</section>	


<section title="Node Protection in Facility Backup Mode">
	<section title="Backup LSP setup in Facility Mode">

<t> Two methods for node protection in the facility protections scheme have 
been illustrated in Figures 3 and 4. The method shown in Figure 3 uses a 
P2MP or MP2MP backup LSP to protect
a branch node N; the method shown in Figure 4 uses multiple LSPs to protect the
node N. The first method is likely to reduce traffic replication on
the backup LSP; the second method suffers from traffic overhead because multiple backup
sub-LSPs are used. Which method to use is design option. In this document,
we will use the method shown in Figure 3 to describe the node protection mechanism
in the facility protection scheme. </t>

<t>
Specific procedures are needed for the P2MP or MP2MP tree setup and label allocation.
Assume that LSR PE1 joins a primary P2MP tree structure in the example of Figure 3.
PE1 sends a RSVP PATH message to MP1 for LSP setup, this PATH message will be
relayed to PLR through node N being protected. MP1 calculates the backup route with
a constraint to avoid node N; it initiates the backup LSP setup by sending a
PATH message over the backup path {MP1-Pn2-Pn1-PLR}. RSVP RESV messages will then be sent in return by PLR to MP1 through the primary {PLR-N-MP1} and the backup
{PLR-Pn1-Pn2-MP1} routes respectively. </t>

<t>Later on, another LSR PE2 joins the P2MP tree by sending a PATH message to MP2.
MP2 will relay the PATH message to node N  being protected. Then N becomes a
branch node and it is therefor not necessary to send PATH messages to the 
PLR anymore. MP2 performs
the same procedure as MP1 did for the first branch {PE1-MP1-N}, a backup route
{MP2-Pn2-Pn1-PLR} will be computed by CSPF, and the node Pn2 now becomes a
branch node that belongs to the backup P2MP tree. The PATH message that
used to be sent by Pn2 towards the PLR is not necessary anymore.  RSVP RESV messages
will be sent back by the PLR to MP2 through the primary route {PLR-N-MP2} and the
backup route {PLR-Pn1-Pn2-MP2} respectively. </t>

<t>
Whenever additional primary LSP(s) are set up as far as the same
node N and PLR are connected, all these primary LSPs can be protected by the single backup LSP.
The procedure to setup the primary LSP is the same as what is used for the first
primary LSP setup, the key technique is to allocate a unique identifier to a
primary LSP and bind it with the backup LSP, as per the mechanism discribed in
section 4.2.2. </t>

	</section>	

	<section title="Label Allocation for Node Protection">

<t>In order to achieve 1:n protection in Facility mode, a unique identifier must
be assigned to represent each primary LSP being protected. This identifier should
be advertized to all the LSRs in a FRR domain and used for traffic switchover in case
of node N failure. There are many ways to assign and use the identifier, and this
document gives a sample mechanism based upon ULA (Upstream Label Allocation)
to assign a MPLS label and use it as the identifier of a primary LSP. Figure 8
provides an example of label allocation and FIB entry creation for the node protection
in Facility mode. </t>

    <figure anchor="P2MP-Protection-in-Facility-Mode"
            title="Label Allocation for P2MP Node Protection in Facility Mode">
	    <artwork name="P2MP Protection in Facility Mode">
  Entry in PLR:           Entry in N:          Entry in MP1:
  Lp1-&gt;Lpu,N              Lpu-&gt;Lpu,MP1      Lpu-&gt;Lp-pe1,PE1
  FRR:Lpu,Lp1-&gt;Lb4,Pn1    Lpu-&gt;Lpu,MP2      FRR:Lpu,Lbu-&gt;Lp-pe1
                                                 
 Lp1 +-------+     Lpu      +-------+  Lpu  +-------+ Lp-pe1
-----|R1(PLR)|--------------| R2(N) |-------|R3(MP1)|------- PE1
     +-------+              +-------+       +-------+                 
Sender   *               Protected    \    *             Receiver   
         *                   Node      \  *                       
         * Backup                       \*
         * Tunnel                       *\
         *                         Lbu *  \Lpu
         *                            *    \
     Lb4 *   +-------+  Lb5  +-------+ Lbu  +-------+ Lp-pe2
         ****|R4(Pn1)|*******|R5(Pn2)|******|R6(MP2)|-------- PE2  
             +-------+       +-------+      +-------+ 
 Entry in Pn1
 FRR:Lpu,Lb4-&gt;Lb5,Pn1
                         Entry in Pn2:
                         FRR:Lpu,Lb5-&gt;Lbu,MP1
                         FRR:Lpu,Lb5-&gt;Lbu,MP2
                                                Entry in MP2:
                                                Lpu-&gt;Lp-pe2,PE2
                                                FRR:Lpu,Lbu-&gt;Lp-pe2,PE2
         </artwork>
	 </figure>

<t>In the FRR domain of Figure 8, an identical label Lpu is assigned to these
sub-LSPs over the primary LSP: {PLR-N}, {N-MP1} and {N-MP2}. Lpu can be allocated
by the branch node N for the primary LSP and used as the identifier of the primary
LSP. If there are multiple primary LSPs that cross the same node N and need to be protected
by the single backup LSP, there will be multiple Lpu labels assigned for each of the
primary LSPs accordingly. In order to guarantee the uniqueness of Lpu in node N
and MPs, the LSRs are required to have ULA capability in FRR domain. In addition,
an algorithm for ULA assignment and negotiation among the LSRs needs to be
further specified by a yet-to-be-published internet draft. </t>

<t> During normal operation, PLR encapsulates packets with the label Lpu
and forwards them to node N over the primary LSP. The node N as a branch node
will replicate traffic to MP1 and MP2 using label Lpu in the example of Figure 8. When
a node failure is detected, PLR will redirect traffic to the backup LSP, and the 
two labels will be used for packet encapsulation over the backup LSP. The inner 
label is Lpu and uniquely identifies a primary LSP; the outer label is allocated
by MP and Pn(s) using DLA (Downstream Label Allocation), which is used for
packet forwarding over the backup LSP by means of RSVP-TE mechanism.  </t>

<t>Detailed label allocation on each LSR is described below. </t>
	
<t> 1. 	Label Allocation and FRR Entry on MP1 and MP2:</t>
<t>For the first primary LSP setup, MP1 assigns a downstream label Lpdla for
the primary LSP and sends it to the protected node N via a PATH message. Node N
discards Lpdla and uses ULA to assign a new label Lpu that will be used as a
downstream label for N to send packets to MP1. </t>

<t>Node N sends the label Lpu to MP1 via a RESV message; MP1 replaces its downstream
assigned label Lpdla with Lpu. If Lpu has been used by another LSP on the LSR, MP1
will request node N to assign another Lpu by a RSVP notify message. In case of conflict, 
an ULA negotiation procedure has to be executed (this procedure is TBD). </t>

<t>MP1 also assigns a downstream label Lbdla for the backup LSP and sends it to
Pn2 via a PATH message over the backup route {MP1-Pn2-Pn1-PLR in Figure 8}. Pn2 
is a branch node and will therefore execute the same procedure as the branch node N on the primary LSP. Pn2 discards label Lbdla received from the PATH message, assigns a new label Lbu and sends it to MP1 via a RESV message.</t>

<t>Once a RESV message is originated by PLR and sent through the backup route,
MP1 will get an inner label Lpu that represents the primary LSP in this example.
MP1 adds a FRR entry with both inner and outer label in its FIB.  MP1 FIB will have
two forwarding entries for the LSP being protected in Facility mode:</t>

    <t>
    <list style="empty">
               <t> Lpu-&gt;Lp-pe1, PE1 </t>
               <t> FRR: Lpu, Lbu-&gt;Lp-pe2, PE2 </t>
     </list>
     </t>
	<t>  </t>

<t> With the same process, MP2 will have two forwarding entries for the LSP being
protected:</t>

    <t>
    <list style="empty">
               <t> Lpu-&gt;Lp-pe2, PE2 </t>
               <t> FRR: Lpu, Lbu-&gt;Lp-pe2, PE2 </t>
	</list>
	</t>
	<t>  </t>

<t> 2. 	Label Allocation and FRR Entry on Pn2 and Pn1: </t>
<t>As mentioned in the last paragraph, when Pn2 (transit branch node) receives PATH message
from MP1 and MP2 respectively, it will allocate label Lbu and sends it to each MP.
Pn2 will have two forwarding entries for the LSP being protected:</t>

    <t>
    <list style="empty">
               <t> FRR: Lpu, Lb5-&gt;Lbu, MP1 </t>
               <t> FRR: Lpu, Lb5-&gt;Lbu, MP2 </t>
	</list>
	</t>
	<t>  </t>
	
<t> Pn1 is a transit node and has only one FRR entry for the LSP being protected:</t>
    <t>
    <list style="empty">
               <t> FRR: Lpu, Lb4-&gt;Lb5, Pn2 </t>
	</list>
	</t>
     <t>   </t>
     
<t> 3. 	Label Allocation and FRR Entry on PLR: </t>
<t>PLR receives a PATH message from node N that carries a downstream
label Lpu and a PATH message from Pn1 that carries a downstream label Lb5.
PLR uses Lpu as an inner label for the primary LSP and sends it towards
 MPs through Pn1 by means of RESV message. PLR will maintain two entries in 
its FIB for a goiven protected LSP: </t>

        <t>
        <list style="empty">
               <t> Lp1-&gt;Lpu, N </t>
               <t> FRR: Lpu, Lp1-&gt;Lb1, Pn1 </t>
		</list>
		</t>
		<t>   </t>
		
<t> For every add-in primary LSP being protected by the same backup LSP, PLR
will assign an inner label and send it to LSRs across the backup LSP so that
each LSR can add the corresponding FRR entry in its FIB and use this entry 
to forward traffic over the backup LSP. </t>
  		 
  	</section>

	<section title="Node Failure Repair and Packet Encapsulation"> 

<t> Once protected node N fails and the failure is detected by PLR, it will initiate
a switchover by redirecting traffic to the backup LSP. Packet encapsulation in each
LSR over the backup LSP will be done based on the FRR entries of its FIB.  For
example (Figure 8), a packet that arrives at PLR and which is supposed to be forwarded to node N by using
entry 'Lp1-&gt;Lpu, N', will be redirected to Pn1 based on entry
'FRR: Lpu,Lp1-&gt;Lb4, Pn1'.  PLR encapsulates the packet with Lpu as inner label,
Lb4 as outer label and forwards it to Pn1. Pn1 will swap outer label for packet
forwarding and keep inner label unchanged. </t>

<t> Once the packet reaches MP1, MP1 will pop out the outer label, swap the inner label
with outgoing label Lp-pe1 and forward the packet to NHOP PE1 with a single label
Lp-pe1, the packet de-capsulation/encapsulation is based on the
'FRR: Lpu, Lbu-&gt;Lp-pe1, PE1' entry. Once traffic reaches MP1, it is then merged with the primary path. The same procedure is applicable to receiver LSR MP2. </t>
   	</section>

  	<section title="Re-convergence after Local Repair"> 
<t> Routers that do not belong to the FRR domain are not impacted by the 
link failure and local repair procedures. However, the network will eventually re-converge and a new best path to reach the root  of the RD P2MP tree structure will be computed by PE1 and PE2 (Figure 8). PLR will be notified as soon
as the new primary path is determined. PLR will send notification message to Pn
and MP sp that they tear down the detour LSP and withdraw backup labels. There is no
difference between facility and detour methods in terms of re-convergence process.</t> 

	</section>
   </section>
</section>			

<section anchor="IANA" title="IANA Considerations">
	<t>TBD.</t>
	<t>   </t>
</section>




<section title="Manageability Considerations"> 

   <t>TBD.</t>

</section>



<section anchor="Security" title="Security Considerations">

   <t>TBD.</t>

         
</section>

<section anchor="Acknowledgements" title="Acknowledgements">

  <t>We would like to thank Quintin Zhao, Lin Han, Emily Chen, and Robert Tao for
  discussions and comments. </t>

</section>

</middle>

<back>


<references title="Normative References">

      <?rfc include="http://xml.resource.org/public/rfc/bibxml3/reference.I-D.draft-lzj-mpls-receiver-driven-multicast-rsvp-te-00.xml" ?>
      <?rfc include="reference.RFC.4090" ?>
      <?rfc include="reference.RFC.4875" ?> 
      <?rfc include="reference.RFC.2119" ?> 

      <?rfc include="reference.RFC.3031" ?> 

      <?rfc include="reference.RFC.3209" ?> 

      <?rfc include="reference.RFC.2205" ?> 

</references>

<references title="Informative References">
      
      <?rfc include="reference.RFC.3468" ?>    
      <?rfc include="reference.RFC.3473" ?> 
      <?rfc include="reference.RFC.3564" ?> 
      
</references>


</back>
</rfc>














