<?xml version="1.0" encoding="US-ASCII"?>

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY rfc6378 SYSTEM "reference.RFC.6378.xml">
<!ENTITY rfc4090 SYSTEM "reference.RFC.4090.xml">
<!ENTITY rfc5331 SYSTEM "reference.RFC.5331.xml">
<!ENTITY rfc5654 SYSTEM "reference.RFC.5654.xml">
<!ENTITY rfc5921 SYSTEM "reference.RFC.5921.xml">
<!ENTITY rfc6371 SYSTEM "reference.RFC.6371.xml">
<!ENTITY rfc6372 SYSTEM "reference.RFC.6372.xml">
<!ENTITY rfc2205 SYSTEM "reference.RFC.2205.xml">
<!ENTITY rfc4427 SYSTEM "reference.RFC.4427.xml">
]>

<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<?rfc rfcedstyle="yes"?>

<!-- used v1 -->

<rfc number="6974" category="info" submissionType="IETF" consensus="yes" ipr="trust200902">

  <front>
    <title abbrev="MPLS-TP RP">Applicability of MPLS Transport Profile  for&nbsp;Ring&nbsp;Topologies</title>

    <author fullname="Yaacov Weingarten" initials="Y." surname="Weingarten">
      <organization></organization>

      <address>
        <postal>
          <street>34 Hagefen St. </street>

          <city>Karnei Shomron</city>

          <region />

          <code>4485500</code>

          <country>Israel</country>
        </postal>

        <phone></phone>
         <email>wyaacov@gmail.com</email>

      </address>
    </author>

    <author fullname="Stewart Bryant" initials="S." surname="Bryant">
      <organization>Cisco Systems</organization>
      <address>
        <postal>
          <street>10 New Square, Bedfont Lakes</street>
          <city>Feltham, Middlesex</city>
          <code>TW18 8HA</code>
          <country>UK</country>
        </postal>
        <email>stbryant@cisco.com</email>
      </address>
    </author>

    <author fullname="Danielle Ceccarelli" initials="D." surname="Ceccarelli">
      <organization>Ericsson</organization>

      <address>
        <postal>
          <street>Via A. Negrone 1/A</street>

          <city>Genova</city>

          <region>Sestri Ponente</region>

          <code></code>

          <country>Italy</country>
        </postal>

        <email>daniele.ceccarelli@ericsson.com</email>
      </address>
    </author>

    <author fullname="Diego Caviglia" initials="D." surname="Caviglia">
      <organization>Ericsson</organization>

      <address>
        <postal>
          <street>Via A. Negrone 1/A</street>

          <city>Genova</city>

          <region>Sestri Ponente</region>

          <code></code>

          <country>Italy</country>
        </postal>

        <email>diego.caviglia@ericsson.com</email>
      </address>
    </author>

    <author fullname="Francesco Fondelli" initials="F." surname="Fondelli">
      <organization>Ericsson</organization>

      <address>
        <postal>
          <street>Via A. Negrone 1/A</street>

          <city>Genova</city>

          <region>Sestri Ponente</region>

          <code></code>

          <country>Italy</country>
        </postal>

        <email>francesco.fondelli@ericsson.com</email>
      </address>
    </author>

    <author fullname="Marco Corsi" initials="M." surname="Corsi">
      <organization>Altran</organization>

      <address>
        <postal>
          <street>Via A. Negrone 1/A</street>

          <city>Genova</city>

          <region>Sestri Ponente</region>

          <code></code>

          <country>Italy</country>
        </postal>

        <email>corsi.marco@gmail.com</email>
      </address>
    </author>

    <author fullname="Bo Wu" initials="B." surname="Wu">
      <organization>ZTE Corporation</organization>

      <address>
        <postal>
          <street>4F, RD Building 2, Zijinghua Road</street>

          <city>Nanjing</city>

          <region>Yuhuatai District</region>

          <code></code>

          <country>P.R. China</country>
        </postal>

        <email>wu.bo@zte.com.cn</email>
      </address>
    </author>

    <author fullname="Xuehui Dai" initials="X." surname="Dai">
      <organization />

      <address>
        <email>xuehuiwfsy@gmail.com</email>
      </address>
    </author>

    <date month="July" year="2013" />


    <abstract>
<t>
This document presents an applicability of existing MPLS protection mechanisms, 
both local and end-to-end, to the MPLS Transport Profile 
(MPLS-TP) in ring topologies.  This document does not propose any new
mechanisms 
or protocols. Requirements for MPLS-TP protection especially for protection in 
ring topologies are discussed in "Requirements of an MPLS Transport Profile" 
(RFC 5654) and "MPLS Transport Profile (MPLS-TP) Survivability Framework" 
(RFC 6372).  This document discusses how most of the requirements are met by 
applying linear protection as defined in RFC 6378 in a ring topology. 
</t>
<!--
	  <t>This document presents an applicability of existing MPLS protection 
	  mechanisms, both local and end-to-end, to the MPLS 
	  Transport Profile (MPLS-TP) in ring topologies.  This document does not
	  propose any new mechanisms or protocols.  Protection on rings offers 
	  a number of opportunities for optimization as the protection choices are 
	  starkly limited (all traffic traveling one way around a ring can only be 
	  switched to travel the other way on the ring), but also suffers from some 
	  complications caused by the limitations of the topology.</t>

	  <t>Requirements for MPLS-TP protection, especially for protection in 
	  ring topologies, are discussed in &quot;Requirements of an MPLS Transport 
	  Profile&quot; (RFC 5654) and &quot;MPLS Transport Profile (MPLS-TP) 
	  Survivability Framework&quot; (RFC 6372). This document shows how MPLS-TP
	  linear protection as defined in RFC 6378 can be applied to single ring 
	  topologies, discusses how most of the requirements are met, and describes 
	  scenarios in which the function provided by applying linear protection in 
	  a ring topology falls short of some of the requirements.</t>

      <t>This document is a product of a joint Internet Engineering Task Force
      (IETF) / International Telecommunications Union Telecommunications
      Standardization Sector (ITU-T) effort to include an MPLS Transport
      Profile within the IETF MPLS and Pseudowire Emulation Edge-to-Edge (PWE3)
architectures to support the
      capabilities and functionalities of a packet transport network as
      defined by the ITU-T.</t>
-->

    </abstract>
  </front>

  <middle>
    <section title="Introduction">
      <t>The MPLS Transport Profile (MPLS-TP) has been
      standardized as part of a joint effort between the Internet Engineering
      Task Force (IETF) and the International Telecommunications Union Telecommunications
      Standardization Sector (ITU-T). These specifications are based on the
      requirements that were generated from this joint effort.</t>

      <t>The MPLS-TP requirement document <xref target="RFC5654"></xref> includes
      a requirement to support a network that may include subnetworks that
      constitute an MPLS-TP ring as defined in the document. However, the 
      document does not identify any protection requirements specific to a ring 
	  topology. The requirements state that specific protection
      mechanisms applying to ring topologies may be developed if these allow the
      network to minimize:</t>

      <t><list style="symbols">
          <t>the number of OAM entities needed to trigger the protection</t>

          <t>the number of elements of recovery needed</t>

          <t>the number of labels required</t>

          <t>the number of control- and management-plane transactions during a
          maintenance operation</t>

          <t>the impact of signaling and routing information exchanged during protection, 
		  in the presence of a control plane</t>
        </list></t>

      <t>This document describes how applying a set of basic MPLS-TP linear 
	  protection mechanisms defined in <xref target="RFC6378" /> can be used to 
	  provide protection of the data flows that traverse an MPLS-TP ring. These 
	  mechanisms provide data flow protection due to any switching trigger 
	  within a reasonable time frame and optimize the criteria set out in 
	  <xref target="RFC5654" />, as summarized above.  This document does not
	  define any new protocol mechanisms or procedures.</t>
	  
	  <t>A related topic in <xref target="RFC5654"></xref> addresses the required 
	  support for interconnected rings.  This topic involves various scenarios 
	  that require further study and will be addressed in a separate document, 
	  based on the principles outlined in this document.</t>

      <section title="Problem Statement">
        <t>Ring topologies, as defined in <xref target="RFC5654"></xref>, are
        used in transport networks. When designing a protection mechanism
        for a single ring topology, there is a need to address both of the following cases.</t>

        <t><list style="numbers">
            <t>
    A point-to-point transport path that originates at a ring
    node or enters an MPLS-TP-capable ring at a single 
    ingress node, and exits the ring at a single egress node,
    and possibly continues beyond the ring.
</t>

            <t>Where the ring is being used as a branching point for a point-to-
			multipoint transport path, i.e., the transport path originates at or 
			enters the MPLS-TP-capable ring at the ingress node and exits through 
			a number of egress nodes, possibly continuing beyond the ring.</t>
          </list>In either of these two situations, there is a need to address the 
		  following different cases.</t>

        <t><list style="numbers">
            <t>One of the ring links causes a fault condition. This could be
            either a unidirectional or bidirectional fault, and it should be
            detected by the neighboring nodes.</t>

            <t>One of the ring nodes causes a fault condition. This condition
            is invariably a bidirectional fault (although in rare cases of
            misconfiguration, this could be detected as a unidirectional fault),
            and it should be detected by the two neighboring ring nodes.</t>

            <t>
 An operator command is issued to a specific ring node; it either changes the
operational state of a node or a link or explicitly triggers a protection action.

An operator command changes the operational state of a node 
			or a link, or specifically triggers a protection action is issued to 
			a specific ring node. A description of the different operator commands 
			is found in Section 4.13 of <xref target="RFC4427" />. Examples of 
			these commands include Manual Switch, Forced Switch, and Clear 
			operations.</t>
          </list>The protection domain addressed in this document is limited to 
		  the traffic that traverses on the ring. Protection triggers on the 
		  transport path prior to the ingress node of the ring or beyond the egress nodes 
		  may be protected by some other mechanism.</t>
      </section>
	  
	  <section title="Scope of the Document">
	    <t>This document addresses the requirements that appear in Section 2.5.6.1
		of <xref target="RFC5654" /> on ring protection, based on the application of
		the linear protection as defined in <xref target="RFC6378" />.  Requirement
		R93 regarding the support of interconnected rings and protection of faults
		in the interconnection nodes and links is for further study.</t>
		
		<t>In addition, requirement R105 requiring the support of lockout of specific
		nodes or spans is only supported to the degree that it is supported by the 
		linear protection mechanism.</t>
	  </section>

      <section title="Terminology and Notation">
        <t>The terminology used in this document is based on the terminology
        defined in the MPLS-TP framework documents:</t>

        <t><list style="symbols">
            <t>MPLS-TP framework <xref target="RFC5921"></xref></t>

            <t>MPLS-TP OAM framework <xref target="RFC6371"></xref></t>

            <t>MPLS-TP survivability framework <xref target="RFC6372"></xref></t>
          </list></t>
		  
        <t>The MPLS-TP framework document <xref target="RFC5921"></xref> defines a 
		Sub-Path Maintenance Entity (SPME) construct that can be defined between 
		any two Label Switching Routers (LSRs) of an MPLS-TP Label Switched Path 
		(LSP). This SPME may be configured as a co-routed bidirectional path.  
		The SPME is defined to allow management and monitoring of any segment of 
		a transport path.  This concept will be used extensively throughout the 
		document to support protection of the traffic that traverses an MPLS-TP ring.</t>

        <t>In addition, we describe the use of the label stack in connection
        with the redirecting of data packets by the protection mechanism. The
        following syntax will be used to describe the contents of the label
        stack:</t>

        <t><list style="numbers">
            <t>The label stack will be enclosed in square brackets (&quot;[]&quot;).</t>

            <t>Each level in the stack will be separated by the '|' character.  
			It should be noted that the label stack may contain additional levels;
			however, we only present the levels that are germane to the protection
			mechanism.</t>

            <t>When applicable, the S bit (signifying that a given label is the 
			bottom of the label stack) will be denoted by the string '+S' within 
			the label.  If a label is not shown with '+S'
, that label may or may not 
			be the bottom label in the stack.  '+S' is only shown when it is important 
			to illustrate that a given label is definitely the last one in the label 
			stack.</t>

            <t>The label of the LSP at the ingress node of the ring will be 
			denoted by the string &quot;LI&quot;, and the label of the LSP that is
			expected at the egress point from the ring will be denoted by the 
			 string &quot;LE&quot;.  &quot;LSE&quot; will denote the label 
			 expected at the exit LSR of a SPME (if it is different from the egress
			 point from the ring, for example, as described in <xref
 target="spme_for_p2p"/>).</t>


            <t>
The label Pxi(y) in the stack denotes the label that LSR-x would use to
transport the packet to LSR-y over the SPME whose index is i.
</t>

          </list></t>

        <t>For example: 
		  <list style="symbols">
		  <t>The label stack [LI] denotes the label stack received at the ingress 
		  node of the ring.  There may be additional labels after LI, e.g., a PW label;
		  however, this is irrelevant to the discussion of the protection scenario.</t>

		  <t>[PB1(G) | LE] denotes a stack whose top label is the SPME-1 label for LSR-B 
		  to transmit the data packet to LSR-G, and the second label is the label that 
		  would be used by the egress LSR to continue to transmit the packet on the original LSP.</t>
		  <t>If &quot;LE&quot; were the bottom label in the stack, then the label
		  stack would be shown as [PB1(G) | LE+S].</t>
		  </list></t>
      </section>


    </section>

    <section anchor="sec2" title="Point-to-Point (P2P) Ring Protection">
      <t>There are two protection architecture mechanisms --
&quot;Wrapping&quot; and &quot;Steering&quot; -- that have historically
	  been applied to ring topologies, based on Synchronous Digital
Hierarchy (SDH) specifications <xref target="G.841" />, 
	  and have been proposed in various forums to perform recovery of a topological
	  ring network. The 
	  following subsections examine these two mechanisms, as applied to an MPLS 
	  transport network.</t>

      <section title="Wrapping">
        <t>Wrapping is defined as a local protection architecture. 	This mechanism 
		is local to the nodes that are neighbors to the detected fault. When a fault 
		is detected (either a link or node failure), the neighboring node can 
		identify that the fault would prevent forwarding of the data along the data 
		path. Therefore, in order to continue to transmit the data along the path, there is a
		need to &quot;wrap&quot; all data traffic around the ring, on an alternate 
		data path, until the arrives at the node that is on the opposite side of the 
		fault. 	When this far-side node also detects that there is a fault condition 
		on the working path, it can identify that the data traffic that is arriving 
		on the alternate (protecting) data path is intended for the &quot;broken&quot; 
		data path. 


Therefore, again making a local decision, the far-side node can wrap the data back 
		onto the normal working path until the egress from the ring segment.</t>


<t>
   Wrapping behavior is similar to MPLS-TE Fast Reroute, as defined in
 <xref target="RFC4090" />, which uses either bypass or detour tunnels.
Applying Fast Reroute
   to MPLS, it is possible to wrap all LSPs using a bypass tunnel and a
   single label, or to wrap the traffic of each LSP around the
   failed links via a detour tunnel using a different label for each LSP.
</t>


        <figure anchor="figure1" title="Wrapping Protection for P2P Path" align="center">
          <artwork><![CDATA[
        ___ ######## ___ ######## ___
======>/LSR\********/LSR\***XX***/LSR\
       \_B_/@@@@@@@@\_A_/        \_F_/
         *@                       #*@
         *@                       #*@
         *@                       #*@
        _*@          ___          #*@
       /LSR\********/LSR\********/LSR\======>
       \_C_/@@@@@@@@\_D_/@@@@@@@@\_E_/

  ===> connected LSP  *** physical link
  ###  working path   @@@ wrapped data path
                  ]]></artwork>
        </figure>

        <t>Consider the LSP that is shown in <xref target="figure1" /> that enters 
		the ring of LSRs at LSR-B and exits at LSR-E. The normal working path LSP
		follows through LSRs B-A-F-E. If a fault is detected on the link A&lt;-&gt;F,
        then the wrapping mechanism decides that LSR-A would wrap the traffic around 
		the ring, on a wrapped data path A-B-C-D-E-F, to arrive at LSR-F (on the far 
		side of the failed link). LSR-F would then wrap the  data packets back onto 
		the working path F-&gt;E to the egress node. In this protection scheme, 
		the traffic will follow the path B-A-B-C-D-E-F-E.</t>

        <t>This protection scheme is simple in the sense that there is no need
        for coordination between the different LSRs in the ring -- only the 
		LSRs that detect the fault must wrap the traffic, either onto the wrapped 
		data path (at the near end) or back to the working path (at the
far end). 
		However, coordination of the switchover to the protection path would be 
		needed to maintain the traffic on a co-routed bidirectional LSP even in 
		cases of a unidirectional fault condition.</t>

        <t>The following considerations should be taken into account when
        considering use of wrapping protection:</t>

        <t><list style="symbols">
            <t>Detection of mis-connectivity or loss of continuity should be
            performed at the link level and/or per LSR when using node-level
            protection. Configuration of the protection being performed
            (i.e., link protection or node protection) needs to be performed
            a priori, since the configuration of the proper protection path is
            dependent upon this decision.</t>

            <t>There is a need to define a data path that traverses the
            alternate path around the ring to connect between the two
            neighbors of the detected fault. If protecting both the links and
            the nodes of an LSP, then, for a ring with N nodes, there is a need
            for O(2N) alternate paths.</t>

            <t>When wrapping, the data is transmitted over some of the links
            twice, once in each direction. For example, in the figure above
            the traffic is transmitted both B-&gt;A and then
            A-&gt;B, and later it is transmitted E-&gt;F and
            F-&gt;E.&nbsp; This means that there is additional bandwidth needed
            for this protection.</t>
			
			<t>If a double-fault situation occurs in the ring, then wrapping will 
			not be able to deliver any packets except between the ingress and the
			first fault location encountered on the working path.  This is based 
			on the need for wrapping to connect between the neighbors of the fault 
			location, and this is not possible in the segmented ring.</t>

            <t>The resource pre-allocation for all of the alternate paths could be
            problematic (causing massive over subscription of the available resources). 



			However, since most of these alternate paths will not be used simultaneously, 
			there is the possibility of allocating zero resources
and depending on the Network Management System (NMS) 
			to allocate the proper resources around the ring, based on actual traffic 
			usage.</t>

            <t>Wrapping also involves a small increase in traffic latency in delivering 
			the packets, as a result of traversing the entire ring, during protection.</t>
          </list></t>
      </section>

      <section title="Steering">
        <t>The second common scheme for ring protection, steering, takes advantage
		of the ring topology by defining two paths from the ingress
node of the
		ring to the egress point going in opposite directions around the ring. 
		This is illustrated in <xref target="figure2"></xref>, where if we assume 
		that the traffic needs to enter the ring from node B and exit through 
		node F, we could define a primary path through nodes B-A-F, and an alternate 
		path through the nodes B-C-D-E-F.  In steering, the switching is always 
		performed by the ingress node (node B in <xref target="figure2"></xref>).
		If a fault condition is detected anywhere on the working path (B-A-F), then
        the traffic would be redirected by B to the alternate path (i.e., B-C-D-E-F).</t>

        <figure anchor="figure2" title="Steering Protection in an MPLS-TP Ring"
align="center">
          <artwork><![CDATA[
        ___          ___          ___
======>/LSR\********/LSR\********/LSR\======>
       \_B_/########\_A_/########\_F_/
         *@                       @*
         *@                       @*
         *@                       @*
        _*@          ___          @*_
       /LSR\********/LSR\********/LSR\
       \_C_/@@@@@@@@\_D_/@@@@@@@@\_E_/

 ===> connected LSP     *** physical link
 ###  working path      @@@ protection path
		  ]]></artwork>
        </figure>


        <t>This mechanism bears similarities to linear 1:1 protection <xref
		target="RFC6372"></xref>.  The two paths around the ring act as the
        working and protection paths. 


This requires that the ingress node be informed of the need to switch over
to the protection path, and also that the ingress and egress nodes coordinate
the switchover.


There is need to communicate to the
        ingress node the need to switch over to the protection path and there is
        a need to coordinate the switchover between the two endpoints of the
        protected domain.</t>

        <t>The following considerations must be taken into account regarding
        the steering architecture:</t>

        <t><list style="symbols">            <t>Steering relies on a failure detection method that is able to notify
			the ingress node of the fault condition.  This may involve 
			OAM functionality described in <xref target="RFC6371" />, e.g., Remote
			Defect Indication, alarm reporting.</t>

            <t>The process of notifying the ingress node adds to the latency of 
			the protection-switching process, after the detection of the fault 
			condition.</t>

            <t>While there is no need for double bandwidth for the data path,
            there is the necessity for the ring to maintain enough capacity
            for all of the data in both directions around the ring.</t>
          </list></t>
      </section>

      <section title="SPME for P2P Protection of a Ring Topology" anchor="spme_for_p2p">
        <t>The SPME concept was introduced by <xref target="RFC5921" /> to support 
		management and monitoring an arbitrary segment of a transport.  However, 
		an SPME is essentially a valid LSP that may be used to aggregate all LSP 
		traffic that traverses the sub-path delineated by the SPME. An SPME may 
		be monitored using the OAM mechanisms as described in the MPLS-TP OAM 
		framework document <xref target="RFC6371" />.</t>

        <t>When defining an MPLS-TP ring as a protection domain, there is a
        need to design a protection mechanism that protects all the LSPs that
        cross the MPLS-TP ring. For this purpose, we associate a (working) SPME
        with the segment of the transport path that traverses the ring. In
        addition, we configure an alternate (protecting) SPME that traverses
        the ring in the opposite direction around the ring. The exact
        selection of the SPMEs is dependent on the types of transport path
        and protection that are being implemented. This will be detailed in the
        following subsections.</t>

        <t>Based on this architectural configuration for protection of ring 
		topologies, it is possible to limit the number of alternate paths needed 
		to protect the data traversing the ring. In addition, since we will perform 
		all of the OAM functionality on the SPME configured for the traffic, we can 
		minimize the number of OAM sessions needed to monitor the data traffic 
		of the ring, rather than monitoring each individual LSP.</t>

        <t>In all of the following subsections, we use 1:1 linear protection
        <xref target="RFC6372"></xref> <xref target="RFC6378"></xref> to
        perform protection switching and coordination when a signal fault is
        detected. The actual configuration of the SPMEs used may change
        depending upon the choice of methodology, and this will be detailed in
        the following sections. However, in all of these configurations, the
        mechanism will be to transmit the data traffic on the primary SPME,
        while applying OAM functionality over both the primary and the secondary 
SPME to detect signal fault conditions on either path. If a signal fault 
is detected on the primary SPME, then the mechanism described in <xref target="RFC6378"></xref> shall be used to coordinate a switchover
        of data traffic to the secondary SPME.</t>

        <t>Assuming that the SPME is implemented as an hierarchical LSP, packets
        that arrive at LSR-B with a label stack [LI] will have the SPME
        label pushed at LSR-B, and the LSP label will be swapped for the label
		that is expected by the egress LSR (i.e., the packet will arrive at LSR-A 
		with a label stack of [PA1(B) | LE] and arrive at LSR-F with
[PE1(F) | LE]).
        The SPME label will be popped by LSR-F, and the LSP label will be
        treated appropriately at LSR-F and forwarded along the LSP, outside the 
		ring. This scenario is true for all LSPs that are aggregated by this primary
        SPME.</t>

        <section anchor="steer" title="Path SPME for Steering">
          <t></t>

          <t>A P2P SPME that traverses part of a ring has two Maintenance
          Entity Group End Points (MEPs), each one acts as the ingress and
          egress in one direction of the bidirectional SPME. Since the SPME is
          traversing a ring, we can take advantage of another characteristic of
          a ring -- there is always an alternative path between the two MEPs, i.e.,
          traversing the ring in the opposite direction. This alternative SPME
          can be defined as the protection path for the working path that is
          configured as part of the LSP and defined as a SPME.</t>

          <t>For each pair of SPMEs that are defined in this way, it is
          possible to verify the connectivity and continuity by applying the
          MPLS-TP OAM functionality to both the working and protection SPME. If a
          discontinuity or mis-connectivity is detected, then the MEPs will
          become aware of this condition and could perform a protection
          switch of all LSPs to the alternate, protection SPME.</t>

        <t>The following figure shows an MPLS-TP ring that is part of a larger
        MPLS-TP network. The ring could be used as a network segment that may
        be traversed by numerous LSPs. In particular, the figure shows that
        for all LSPs that connect to the ring at LSR-B and exit the ring from
        LSR-F, we configure two SPMEs through the ring (the first SPME traverses
        B-A-F, and the second SPME traverses B-C-D-E-F).</t>

        <figure anchor="figure3" title="An MPLS-TP Ring" align="center">
          <artwork><![CDATA[
       ___          ___          ___
=====>/LSR\********/LSR\********/LSR\======>
      \_B_/########\_A_/########\_F_/
        *@                       @*
        *@                       @*
        *@                       @*
       _*@          ___          @*_
      /LSR\********/LSR\********/LSR\
      \_C_/@@@@@@@@\_D_/@@@@@@@@\_E_/

 ===> connected LSP    *** physical link
 ###  primary SPME     @@@ secondary SPME
		  ]]></artwork>
        </figure>
		  

          <t>This protection mechanism is identical to the application of 1:1
          linear protection <xref target="RFC6372" /> <xref target="RFC6378" />
		  to the pair of SPMEs. Under normal conditions, all LSP data traffic 
		  will be transmitted on the working SPME. If the linear protection is 
		  triggered by the OAM indication, another fault indication 
		  trigger, or an operator command, then the MEPs will select the protection 
		  SPME to transmit all LSP data packets.</t>

          <t>The protection SPME will continue to transmit the data packets until
          the stable recovery of the fault condition. Upon recovery, i.e., the fault
		  condition has cleared and the network is stabilized, the ingress LSR could 
		  switch traffic back to the working SPME, if the protection domain is 
		  configured for revertive behavior.</t>

          <t>The control of the protection switching, especially for cases of
          operator commands, would be covered by the protocol defined in
          <xref target="RFC6378"></xref>.</t>
        </section>

        <section anchor="linkP" title="Wrapping Link Protection with Segment-Based SPME">
          <t>It is possible to use the SPME mechanism to perform segment-based
          protection. For each link in the ring, we define two SPMEs -- the first
          is a SPME between the two LSRs that are connected by the link, and
          the second SPME is between those same two LSRs but traverses the entire
          ring (except the link that connects the LSRs). In <xref
          target="figure4"></xref>, we show the primary SPME that connects LSR-A
          and LSR-F over a segment connection, and the secondary SPME that
          connects these same LSRs by traversing the ring in the opposite
          direction.</t>

          <figure anchor="figure4" title="Segment SPMEs" align="center">
            <artwork><![CDATA[
      ___          ___          ___
     /LSR\********/LSR\********/LSR\ 
     \_B_/@@@@@@@@\_A_/########\_F_/
       *@                        *@
       *@                        *@
       *@                        *@
      _*@          ___          _*@
     /LSR\********/LSR\********/LSR\
     \_C_/@@@@@@@@\_D_/@@@@@@@@\_E_/

*** physical link
### primary SPME      @@@ secondary SPME
]]></artwork></figure>

<t>
   By applying OAM monitoring of these two SPMEs (at each LSR), it is
   possible to effect a wrapping protection mechanism for the LSP
   traffic that traverses the ring.

 The LSR on either side of the
          segment would identify that there is a fault condition on the link
          and redirect all LSP traffic to the secondary SPME. The traffic would
          traverse the ring until arriving at the neighboring (relative to the
          segment) LSR. At this point, the LSP traffic would be redirected onto
          the original LSP, quite likely over the neighboring SPME.</t>

          <t>Following the progression of the label stack through this
          switching operation (for a LSP that enters the ring at LSR-B and exits
		  the ring at LSR-E):</t>

          <t><list style="numbers">
              <t>The data packet arrives at LSR-A with label stack [L1+S]
              (i.e., the top label from the LSP and bottom-of-stack indicator)</t>

              <t>In the normal case (no protection switching), LSR-A forwards 
			  the packet with label stack [PA1(F) | LSE+S] (i.e., swaps the label 
			  for the LSP, to be acceptable to the SPME egress, and pushes the 
			  label for the primary SPME from LSR-A to LSR-F).</t>

              <t>When protection switching is in effect, LSR-A forwards the packet 
			  with label stack [PA2(B) | LSE+S] (i.e., LSR-A pushes the label for the
              secondary SPME from LSR-A to LSR-F, after swapping the label of the 
			  lower-level LSP).  This will be transmitted along the secondary
			  SPME until LSR-E forwards it to LSR-F with label
stack [PE2(F) | LSE+S].</t>

              <t>When the packet arrives at LSR-F, it pops the SPME label,
              process the LSP label, and forwards the packet to the next point,
              possibly pushing a SPME label if the next segment is likewise
              protected.</t>
            </list></t>
        </section>

        <section anchor="nodeP" title="Wrapping Node Protection">
          <t>Implementation of protection at the node level would be similar
          to the mechanism described in the previous subsection. The
          difference would be in the SPMEs that are used. For node protection,
          the primary SPME would be configured between the two LSRs that are
          connected to the node that is being protected (see the SPME between LSR-A
          and LSR-E through LSR-F in <xref target="figure5"></xref>), and the
          secondary SPME would be configured between these same nodes, going
          around the ring (see the secondary SPME in <xref target="figure5"></xref>).</t>



          <figure anchor="figure5" title="Node-Protection SPMEs" align="center">
            <artwork><![CDATA[
      ___          ___          ___
     /LSR\********/LSR\********/LSR\ 
     \_B_/@@@@@@@@\_A_/########\_F_/
       *@                        *#
       *@                        *#
       *@                        *#
      _*@          ___          _*#
     /LSR\********/LSR\********/LSR\
     \_C_/@@@@@@@@\_D_/@@@@@@@@\_E_/
					   
*** physical link
### primary SPME      @@@ secondary SPME
		  ]]></artwork>
          </figure>

          <t>The protection mechanism would work similarly -- it would be based on 1:1
          linear protection <xref target="RFC6372"></xref> and be triggered by OAM
          functions on both SPMEs. It would wrap the data packets onto the
          secondary SPME at the ingress MEP (e.g., LSR-A in the figure) of the
          SPME and back onto the continuation of the LSP at the egress MEP
          (e.g., LSR-E in the figure) of the SPME.</t>
        </section>

        <section title="Wrapping for Link and Node Protection">
          <t>In the different types of wrapping presented in <xref target="linkP" />
          and <xref target="nodeP"/>, there is a limitation that the protection 
		  mechanism must a priori decide whether it is protecting against link or node 
		  failure.  In addition, the neighboring LSR, that detects the fault, 
		  cannot readily differentiate between a link failure or a node failure.</t>

		  <t>It would be possible to configure extra SPMEs to protect both for link 
		  and node failures, arriving at a configuration of the ring that is shown
		  in <xref target="figure6" />.  Here, there are three protection SPMEs 
		  configured:

		  <list style="symbols">
		    <t>Secondary node#1 would be used to divert traffic as a result of an 
			indication that LSR-F is not available; it redirects
the traffic to the path between LSR-A and LSR-E.</t>
			<t>Secondary node#2 would be used to divert traffic as a result of an 
			indication that LSR-A is not available; it redirects
the traffic to the path between LSR-F and LSR-B.</t>
			<t>Secondary segment would be used to divert traffic as a result of an 
			indication that the segment between LSR-A and LSR-F is not available;
			it redirects the traffic to the path between LSR-A and LSR-F on the 
			long circuit of the ring.</t></list>
		  However, choosing the SPME to use for the wrapping would then involve 
		  considerable effort and could result in the protected traffic not 
		  sharing the same protection path in both directions.</t>


          <figure anchor="figure6" title="SPMEs for Protecting Segments and Node" align="center">
            <artwork><![CDATA[

               ___ ++++++++ ___          ___
              /LSR\********/LSR\********/LSR\ 
              \_B_/@@@@@@@@\_A_/########\_F_/
              $+*@                       +*$ 
              $+*@                       +*$
              $+*@                       +*$ 
              $+*@ ++++++++ ___ ++++++++ +*$
              /LSR\********/LSR\********/LSR\
              \_C_/@@@@@@@@\_D_/@@@@@@@@\_E_/
                   $$$$$$$$     $$$$$$$$
					   
*** physical link
### primary SPME            @@@ secondary node#1 SPME
$$$ secondary node#2 SPME   +++ secondary segment SPME
		  ]]></artwork>
          </figure>
        </section>
      </section>

      <section title="Analysis of P2P Protection"><t>
Analyzing steering SPME protection (<xref target="steer"/>) and wrapping based on SPME
(Sections <xref target="linkP" format="counter"/> or <xref target="nodeP" format="counter"/>),  
we can make the following observations (based 
on a ring with N nodes, where N is not more than 16):
</t>

        <t><list style="symbols">

            <t>Number of SPMEs that need to be configured 

<list style="empty">
<t>
   For steering: O(2N^2). There are two SPMEs from each ingress LSR to each
                         of the other nodes in the ring.
</t>

<t>
   For wrapping: O(2N). (However, the operator must decide a priori whether to protect 
   for link failures or node failures at each point.)
</t>
</list>
</t>

            <t>Number of OAM sessions at each node 
<list style="empty">
<t>
  For steering: O(2N)
</t>
<t>
  For wrapping: 3
</t>
</list>
</t>
            <t>Bandwidth requirements 
<list style="empty">
<t>
For steering: single bandwidth at each link
</t>
<t>
For wrapping: double bandwidth at links that are between ingress 
and wrapping node and between second wrapping node and
egress.
</t>
</list>
</t>
            <t>Special considerations

<list style="empty">
  <t>
   For steering: latency of OAM detection of fault condition by ingress MEP. 
   (Using alarm reporting could optimize over using CC-V only.)
  </t>
  <t>
   For wrapping: each node must decide a priori whether it is protecting for 
   link or node failures.  To protect for both node and link failures would 
   increase the complexity of deciding which protection path to use, as well 
   as violate the co-routedness of the protected traffic.
  </t>
</list>
</t>
          </list></t>
		  
<t>Based on this analysis, using steering as described in <xref target="steer"/>
would be the recommended protection mechanism due to its simplicity.  It 
should be pointed out that the number of SPMEs involved in this protection 
could be reduced by eliminating each SPME between a pair of LSRs that is not 
used as an ingress and egress pair.
</t>

<section title="Recommendations for Protection of P2P Paths Traversing a Ring">
<t>Based on the analysis presented, while applying linear protection to 
			effect wrapping protection in a ring topology is possible as demonstrated, 
			there are certain limitations in addressing some of the required 
			behavior.  The limitations include:
			<list style="symbols">
			  <t>the need to configure a priori whether link or node
protection will be provided</t>
			  <t>the higher number of SPMEs that need to be defined</t>
			  <t>the difficulty in addressing cases of multiple failures in the ring</t>
			</list></t>
			
			<t>Application of linear protection, based on the use of SPMEs within
			the ring, to implement a steering methodology to protect a ring topology 
			is rather straightforward, overcomes the limitations listed above, and 
			scales very well. 
   For this and other reasons listed previously,
   the authors recommend the use of steering to provide protection of 
   P2P paths that traverse a ring topology.

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

    <section title="Point-to-Multipoint Protection">
      <t><xref target="RFC5654"></xref> requires that ring protection must
      provide protection for unidirectional point-to-multipoint paths through
      the ring. Ring topologies provide a ready platform for supporting such
      data paths. A point-to-multipoint (P2MP) LSP in an MPLS-TP ring would be 
	  characterized by a single ingress LSR and multiple egress LSRs. The following 
	  subsections will present methods to address the protection of the ring-based
      sections of these LSPs.</t>

      <section title="Wrapping for P2MP LSPs">
        <t>When protecting a P2MP ring data path using the wrapping
        architecture, the basic operation is similar to the description given,
        as the traffic has been wrapped back onto the normal working path on
        the far side of the detected fault and will continue to be transported
        to all of the egress points.</t>

        <t>It is possible to optimize the performance of the wrapping
        mechanism when applied to P2MP LSPs by exploiting the topology of ring
        networks.</t>

        <t>This improved mechanism, which we call Ring Optimized Multipoint
        Wrapping (ROM-Wrapping), behaves much the same as classical wrapping.

However, ROM-Wrapping configures a protection P2MP LSP, relative to each 
node that is considered a failure risk. The protection P2MP LSP will be routed
between the failure risk node's upstream neighbor to all of the egress nodes 
(for the particular LSP) that are downstream of the failure risk node.
</t>

        <t>Referring to <xref target="figure7"></xref>, it is possible to
        identify the protected (working) LSP (A-B-{C}-{D}-E-{F}) 
		and one possible backup (protection) LSP. (Note: the egress nodes are 
		indicated by the curly braces.) This protection LSP will be used to
        wrap the data back around the ring to protect against a failure on
        link B-C. This protection LSP is also a P2MP LSP that is configured
        with egress points (at nodes F, D, and C) complementary to the
        broken working data path.</t>

        <figure anchor="figure7" title="P2MP ROM-Wrapping" align="center">
          <artwork><![CDATA[
                       |                      
                       |                    
                       V  Ingress
    ___               _V_                ___    
   /LSR\             /LSR\**************/LSR\   
<@@\_F_/@@@@@@@@@@@@@\_A_/@@@@@@@@@@@@@@\_B_/     
    @ *                                    *   
    @ *                                    *   
    @ *                                  XXXX Failure   
    @ *                                    *
    @_*               ___                __*   
   /LSR\*************/LSR\**************/LSR\   
   \_E_/@@@@@@@@@@@@@\_D_/@@@@@@@@@@@@@@\_C_/    
                      @                  @       
                      @                  @       
                      V                  V         

							  
    ***  working LSP      @@@ protection LSP
			]]></artwork>
        </figure>

        <t>Using this mechanism, there is a need to configure a particular
        protection LSP for each node on the working LSP. In the table below,
        "X's Backup" is the backup path activated by node X as a consequence
        of a failure affecting node Y (downstream node with respect to X) or
        link X-Y. (Note: Braces in the path indicate egress nodes.)</t>

        <texttable style="none">
          <preamble>Protected LSP:
          A-&gt;B-&gt;{C}-&gt;{D}-&gt;E-&gt;{F}</preamble>

          <ttcol width="35%" />
		  </texttable>

        <texttable style="none">
          <preamble>--  LINK/NODE PROTECTION  --</preamble>

          <ttcol width="35%" />

          <ttcol align="left" />

          <c>A's Backup:</c>

          <c>A-&gt;{F}-&gt;E-&gt;{D}-&gt;{C}</c>

          <c>B's Backup:</c>

          <c>B-&gt;A-&gt;{F}-&gt;E-&gt;{D}-&gt;{C}</c>

          <c>C's Backup:</c>

          <c>C-&gt;B-&gt;A-&gt;{F}-&gt;E-&gt;{D}</c>

          <c>D's Backup:</c>

          <c>D-&gt;C-&gt;B-&gt;A-&gt;{F}</c>

          <c>E's Backup:</c>

          <c>E-&gt;D-&gt;C-&gt;B-&gt;A-&gt;{F}</c>
        </texttable>

        <t>It should be noted that ROM-Wrapping is an LSP-based protection
        mechanism, as opposed to the SPME-based protection mechanisms that are
        presented in other sections of this document. While this may seem to be
        limited in scope, the mechanism may be very efficient for many
        applications that are based on P2MP distribution schemes. While
        ROM-Wrapping can be applied to any network topology, it is
        particularly efficient for interconnected ring topologies.</t>

        <section title="Comparison of Wrapping and ROM-Wrapping">
          <t>It is possible to compare the wrapping and the ROM-Wrapping
          mechanisms in various aspects and show some improvements offered
          by ROM-Wrapping.</t>

          <t>When configuring the protection LSP for wrapping, it is necessary
          to configure for a specific failure: link protection or node
          protection. If the protection method is configured to protect against node
          failures, but the actual failure affects a link, this could result in
          failing to deliver traffic to the node, when it should be possible
          to do so.</t>

          <t>ROM-Wrapping, however, does not have this limitation because there
          is no distinction between node and link protection. Whether link B-C
          or node C fails, the rerouting will attempt to reach C.
          If the failure is on the link, the traffic will be delivered to C;
          if the failure is at node C, the traffic will be rerouted
          correctly until node D, and will be blocked at this point. However,
          all egress nodes up to the failure will be able to deliver the
          traffic properly.</t>

          <t>A second aspect is the number of hops needed to properly deliver
          the traffic. Referring to the example shown in <xref
          target="figure7"></xref>, where a failure is detected on link B-C,
          the following table lists the set of nodes traversed by the data in
          the protection:</t>

          <texttable style="none">
            <preamble>Basic Wrapping:</preamble>

            <ttcol width="30%"></ttcol>

            <ttcol align="left" width="35%"></ttcol>

            <ttcol align="left"></ttcol>

            <c>A-B</c>

            <c>B-A-F-E-D-C</c>

            <c>{C}-{D}-E-{F}</c>

            <c>"Upstream" segment with respect to the failure</c>

            <c>backup path</c>

            <c>"Downstream" segment with respect to the failure</c>
          </texttable>

          <texttable style="none">
            <preamble>ROM-Wrapping:</preamble>

            <ttcol width="30%"></ttcol>

            <ttcol align="left" width="35%"></ttcol>

            <ttcol align="left" width="35%"></ttcol>

            <c>A-B</c>

            <c>B-A-{F}-E-{D}-{C}</c>

            <c>..</c>

            <c>"Upstream" segment with respect to the failure</c>

            <c>backup path</c>

            <c></c>
          </texttable>

          <t>Comparing the two lists of nodes, it is possible to see that in
          this particular case the number of hops crossed when basic
          wrapping is used is significantly higher than the number of hops crossed by
          the traffic when ROM-Wrapping is used. Generally, the number of hops
          for basic wrapping is always greater than or equal to that for
          ROM-Wrapping. This implies a certain waste of bandwidth on all links
          that are crossed in both directions.</t>

          <t>Considering the ring network in <xref target="figure7"/>, it is possible to
          consider the bandwidth utilization. The protected LSP is
          set up from A to F clockwise and an M Mbps bandwidth is reserved
          along the path. All the protection LSPs are pre-provisioned
          counterclockwise, each of them may also have reserved bandwidth M.&nbsp;
          These LSPs share the same bandwidth in a SE (Shared Explicit) style, as described in <xref
          target="RFC2205"></xref>.</t>

          <t>The bandwidth reserved counterclockwise is not used when the
          protected LSP is properly working and, in theory, could be used for
          extra traffic <xref target="RFC4427"></xref>. However, it should be
          noted that <xref target="RFC5654"></xref> does not require support of
          such extra traffic.</t>

          <t>The two recovery mechanisms require different protection
          bandwidths. In the case of wrapping, the bandwidth used is M in both
          directions on many of the links. While in the case of ROM-Wrapping, only
          the links from the ingress node to the node performing the actual
          wrapping utilize M bandwidth in both directions, while all other
          links utilize M bandwidth only in the counterclockwise
          direction.</t>

          <t>Consider the case of a failure detected on link B-C as shown in
          <xref target="figure7"></xref>. The following table lists the
          bandwidth utilization on each link (in units equal to M), for each
          recovery mechanism and for each direction (CW=clockwise,
          CCW=counterclockwise).</t>

          <texttable style="full">
            <ttcol align="center"></ttcol>

            <ttcol align="center">Wrapping</ttcol>

            <ttcol align="left">ROM-Wrapping</ttcol>

            <c>Link A-B</c>

            <c>CW+CCW</c>

            <c>CW+CCW</c>

            <c>Link A-F</c>

            <c>CCW</c>

            <c>CCW</c>

            <c>Link F-E</c>

            <c>CW+CCW</c>

            <c>CCW</c>

            <c>Link E-D</c>

            <c>CW+CCW</c>

            <c>CCW</c>

            <c>Link D-C</c>

            <c>CW+CCW</c>

            <c>CCW</c>
          </texttable>
        </section>

        <section title="Multiple Failures Comparison">
          <t>A further comparison of wrapping and ROM-Wrapping can be
          done with respect to their ability to react to multiple failures.
          The wrapping recovery mechanism does not have the ability to recover
          from multiple failures on a ring network, while ROM-Wrapping is able
          to recover from some multiple failures.</t>

          <t>Consider, for example, a double link failure affecting links B-C
          and C-D shown in <xref target="figure7"></xref>. The wrapping
          mechanism is not able to recover from the failure because B, upon
          detecting the failure, has no alternative paths to reach C.&nbsp; All the P2MP traffic is lost. The ROM-Wrapping mechanism is able to
          partially recover from the failure, because the backup P2MP LSP to
          F and D is correctly set up and continues delivering
          traffic.</t>
        </section>
      </section>


      <section title="Steering for P2MP Paths">
	    <t>When protecting P2MP traffic that uses an MPLS-TP ring as its 
		branching point (i.e., the traffic enters the ring at a head-end node and exits
		the ring at multiple nodes), we can employ a steering mechanism based
		on 1+1 linear protection <xref target="RFC6372"></xref>.  We can 
		configure two P2MP unidirectional SPMEs from each node on the
ring; they
		traverse the ring in both directions. These SPMEs will be configured with 
		an egress at each ring node.  In order to be able to direct the 
		LSP traffic to the proper egress point for that particular LSP, we need 
		to employ context labeling as defined in <xref target="RFC5331"/>.  The 
		method for using these labels is expanded upon in <xref target="context_labels"/>.</t>
		
        <t>For every LSP that enters the ring at a given node, the traffic will be
        sent through both of these SPMEs, each with its own context label and the 
		context-specific label for the particular LSP.  The egress nodes should 
		select the traffic that is arriving on the working SPME. When a	failure 
		condition is identified, the egress nodes should select the traffic from 
		whichever of the two SPMEs whose traffic arrives at that node, i.e., since 
		one of the two (presumably the working SPME) will be blocked by the failure.  
		In this way, all egress nodes are able to receive the data traffic.  While 
		each node detects that there is connectivity from the ingress
node of the ring, it 
		continues to select the data that is coming from the working
SPME. 



	If a particular node stops receiving the connectivity messages from the working 
	SPME, it identifies that it must select to read the data packets from the 
	protection SPME.</t>

		<section title="Context Labels" anchor="context_labels">
		
        <t><xref target="figure8"></xref> shows the two unidirectional P2MP
        SPMEs that are configured from LSR-A with egress points at all of the
        nodes on the ring. The clockwise SPME (i.e., A-B-C-D-E-F) is configured
        as the working SPME that will aggregate all traffic for P2MP LSPs that
        enter the ring at LSR-A and must be sent out of the ring at any subset
        of the ring nodes. The counter-clockwise SPME (i.e., A-F-E-D-C-B) is
        configured as the protection SPME.</t>

        <figure anchor="figure8" title="P2MP SPMEs" align="center">
          <artwork><![CDATA[
          ^            ^            ^
         _|_          _|_          _|_
  ----->/LSR\********/LSR\********/LSR\
        \_A_/========\_B_/========\_C_/
         +*              <+++++++++*||
         +*                       +*||
         +*                       +*||
         +*                       +*||
         +*_ ++++++++ ___ +++++++++*||
        /LSR\********/LSR\********/LSR\
        \_F_/<=======\_E_/========\_D_/
          |            |            |
          V            V            V

					   
---> connected LSP      *** physical link
===  working SPME       +++ protection SPME
		  ]]></artwork>
        </figure>

		<t><xref target="RFC5331" /> defines the concept of context labels.  A
		context-identifying label defines a context label space that is used to 
		interpret the context-specific labels (found directly below the context-identifying label) for a specific tunnel.  The SPME label is a context-identifying label.  This means that at each hop the node that receives 
		the SPME label uses it to point not directly to a forwarding table, but 
		to a Label Information Base (LIB).  As a node receives an SPME label, it 
		examines it, discovers that it is a context label, pops off the SPME 
		label, and looks up the next label down in the stack in the LIB indicated 
		by the context label.</t>
		
		<t>The label below this context-identifying label should be
used by the forwarding function of the node to decide the actions to take for
this packet.
		In MPLS-TP protection of ring topologies, there are two context LIBs.  One 
		is the context LIB for the working SPME, and the other is the context LIB 
		for the protection SPME.  All context LIBs have a behavior defined for the end-to-end 
		LSP label, but the behavior at each node may be different in the context of 
		each SPME. </t>

		<t>For example, using the ring that is shown in <xref target="figure8" />, 
		the working SPME is configured to have a context-identifying label of CW 
		at each node on the ring, and the protection SPME is configured to have a 
		context-identifying label of CP at each node. For the specific LSP, we will
		designate the context-specific label used on the working SPME as WL(x-y), 
		where it's the label used as node-x forwards the packet to node-y.  Similarly, 		a context-specific label on the protection SPME would be designated 
		PL(x-y).  An explicit example of label values appears in the next subsection.</t>
		
		<t>Assume we are applying 1+1 linear protection, as outlined above, for a P2MP LSP that 
		enters the ring at LSR-A and has egress points from the ring at LSR-C and 
		LSR-E using the two SPMEs shown in <xref target="figure8" />. A packet that 
		arrives at LSR-A with a label stack [LI+S] will be forwarded on the working SPME 
		with a label stack [CW | WL(A-B)].  The packet should then be forwarded to LSR-C 
		arriving with a label [CW | WL(B-C)], where WL(B-C) should instruct the forwarding
		function to egress the packet with [LE(C)] and forward a copy to LSR-D with 
		label stack [CW | WL(C-D)].</t>

		<t>If a fault condition is detected (for example, on the link C-D), then the 
		nodes that are beyond the fault point (in this example, nodes LSR-D, LSR-E, 
		and LSR-F), will cease to receive the data packets from the clockwise (working) 
		SPME. Each of these LSRs should then begin to switch its
                &quot;selector bridge&quot; and accept the data packets from
                the protection (counter-clockwise) SPME. At
		the ingress point (LSR-A), all data packets will have been transmitted on both 
		the working SPME and the protection SPME.  Continuing the example, LSR-A will 
		transmit one copy of the data to LSR-B with stack [CW | WL(A-B)] and one copy 
		to LSR-F with stack [CP | PL(A-F)].  The packet will arrive at LSR-C from the 
		working SPME and egress from the ring.  LSR-E will receive the packet from 
		the protection SPME with stack [CP | PL(F-E)], and the context-sensitive label 
		PL(F-E) will instruct the forwarding function to send a copy out of the ring 
		with label LE(E) and a second copy to LSR-D with stack [CP | PL(E-D)].  In 
		this way, each of the egress points receives the packet from the SPME that is 
		available at that point.</t>

        <t>This architecture has the added advantages that there is no need
        for the ingress node to identify the existence of the mis-connectivity,
        and there is no need for a return path from the egress points to the
        ingress.</t>
		</section>
		
		<section title="Walk-Through Using Context Labels">
		<t>In order to better demonstrate the use of the context labels, we present a 
		walk-through of an example application of the P2MP protection presented in this
		section.  Referring to <xref target="figure9"/>, there is a P2MP LSP that 
		traverses the ring, entering the ring at LSR-B and branching off at LSR-D, 
		LSR-E, and LSR-H, and it does not continue beyond LSR-H.  For purposes of protection,
		two P2MP unidirectional SPMEs are configured on the ring starting from LSR-B. 
		One of the SPMEs, the working SPME, is configured with egress points at 
		each of the LSRs -- C, D, E, F, G, H, J, K, A.  The second SPME, the protection 
		SPME, is configured with egress points at each of the LSRs -- A, K, J, H, G, F, 
		E, D, C.</t>

        <figure anchor="figure9" title="P2MP SPMEs" align="center">
          <artwork><![CDATA[
                     ^            ^           ^           ^
                     ^            ^           ^           ^
       ___ xxxxxxxxx_+_ xxxxxxxxxX+_xxxxxxxxxX+_ xxxxxxxx_+_
xxxxx>/LSR\********/LSR\********/LSR\*******/LSR\*******/LSR\
      \_B_/========\_C_/========\_D_/=======\_E_/=======\_F_/
        *+             <+++++++++    +++++++     ++++++++*||x
        *+                                              +*||x
        *+                                              +*||x
        *+                                              +*||x
       _*++++++++++ ___ +++++++++___ ++++++++___+++++++++*||x
      /LSR\********/LSR\********/LSR\*******/LSR\*******/LSR\
      \_A_/<=======\_K_/========\_J_/=======\_H_/=======\_G_/
        +            +            +           +Xxxxxxxxxx +
        v            v            v           v           v
        v            v            v           v           v
					   
xxx P2MP LSP (X LSP egress)     *** physical link
=== working SPME                +++ protection SPME
                                +>> protection SPME egress
		  ]]></artwork>
        </figure>

		<t>For this example, we suppose that the LSP traffic enters the
ring at LSR-B with the label stack [99], and leaves the ring:
<list style="symbols">
<t>at LSR-D with stack [199]</t>
<t>at LSR-E with stack [299]</t>
<t>at LSR-H with stack [399]</t>
</list>
</t>
		
		<t>While it is possible for the context-identifying label for
the SPME to be configured
		as a different value at each LSR, for the sake of this example, we will suppose
		a configuration of 200 as the context-identifying label for the working SPME
		at each of the LSRs in the ring, and 400 as the context-identifying label for the 
		protection SPME at each LSR.</t>
		
		<texttable align="left" style="full">
          <preamble>For the specific connected LSP, we configure the following 
		  context-specific labels:</preamble>

          <ttcol align="center">node</ttcol>

          <ttcol align="left">W-context(200)</ttcol>
		  
		  <ttcol align="left">P-context(400)</ttcol>

          <c>A</c>

          <c>65 {drop packet}</c>

          <c>165 {fwd w/ [400 | 190]}</c>
		  
		  <c>C</c>
		  
		  <c>90 {fwd w/ [200 | 80]}</c>
		  
		  <c>190 {drop packet}</c>
		  
		  <c>D</c>
		  
		  <c>80 {fwd w/ [200 | 75] + egress w/ [199]}</c>
		  
		  <c>180 {egress w/ [199]}</c>
		  
		  <c>E</c>
		  
		  <c>75 {fwd w/ [200 | 65] + egress w/ [299]}</c>
		  
		  <c>175 {fwd w/ [400 | 180] + egress w/ [299]}</c>
		  
		  <c>F</c>
		  
		  <c>65 {fwd w/ [200 | 55]}</c>
		  
		  <c>165 {fwd w/ [400 | 175]}</c>
		  
		  <c>G</c>
		  
		  <c>55 {fwd w/ [200 | 45]}</c>
		  
		  <c>155 {fwd w/ [400 | 165]}</c>
		  
		  <c>H</c>
		  
		  <c>45 {egress w/ [399]}</c>
		  
		  <c>145 {fwd w/ [400 | 155] + egress w/ [399]}</c>
		  
		  <c>J</c>
		  
		  <c>65 {drop packet}</c>
		  
		  <c>165 {fwd w/ [400 | 145]}</c>
		  
		  <c>K</c>
		  
		  <c>65 {drop packet}</c>
		  
		  <c>190 {fwd w/ [400 | 165]}</c>
		  
		  </texttable>
		  
		  <t>When a packet arrives on the LSP to LSR-B with stack [99], the 
		  forwarding function determines that it is necessary to forward the
		  packet to both the working SPME with stack [200 | 90] and the protection
		  SPME with stack [400 | 165].  Each LSR on the SPME will identify the top
		  label, i.e., 200 or 400, to be the context-identifying label and use the
		  next label in the stack to select the forwarding action from the specific
		  context table.</t>

		  <t>Therefore, at LSR-C, the packet on the working SPME will arrive with 
		  stack [200 | 90], and the 200 will point to the middle column
of the table
		  above.  After popping the 200, the next label, i.e., 90, will select the 
		  forwarding action &quot;fwd w/ [200 | 80]&quot;, and the packet will be 
		  forwarded to LSR-D with stack [200 | 80].  In this manner, the packet will 
		  be forwarded along both SPMEs according to the configured behavior in the 
		  context tables.  However, the egress points at LSR-D, LSR-E,
and LSR-H will each be configured with a selector bridge so they will use only
the input from the working SPME. If any of these egress points identifies that
there is a connection fault on the working SPME, then the selector bridge will
cause the LSR to read the input from the protection SPME.</t>
		</section>
      </section>
    </section>

    <section title="Coordination Protocol">
      <t>The survivability framework <xref target="RFC6372"></xref>
      indicates that there is a need to coordinate protection switching
      between the endpoints of a protected bidirectional domain. The
      coordination is necessary for particular cases, in order to maintain the
      co-routed nature of the bidirectional transport path. The particular
      cases where this becomes necessary include when unidirectional fault
      detection or operator commands are used.</t>

      <t>By using the same mechanisms defined in <xref target="RFC6378" />
	  for linear protection to protect a single ring topology, we 
	  are able to gain a consistent solution for this coordination between the 
	  endpoints of the protection domain. The Protection State Coordination 
	  Protocol that is specified in <xref target="RFC6378"></xref> provides coverage 
	  for all the coordination cases, including support for operator commands, e.g.,
      Forced Switch.</t>
    </section>

    <section title="Conclusions and Recommendations">
	  <t>Ring topologies are prevalent in traditional transport networks and 
	  will continue to be used for various reasons.  Protection for transport 
	  paths that traverse a ring within an MPLS network can be provided by applying 
	  an appropriate instance of linear protection, as defined in <xref target="RFC6372" />.  This document has shown that for each of the traditional
	  ring-protection architectures there is an application of linear protection 
	  that provides efficient coverage, based on the use of the Sub-Path 
	  Maintenance Entity (SPME), defined in <xref target="RFC5921" /> and 
	  <xref target="RFC6371" />.  For example:
	  <list style="symbols">
 <t>P2P steering - Configuration of two SPMEs, from the ingress node of the ring
		to the egress node of the ring, and 1:1 linear protection.</t>
		<t>P2P Wrapping for link protection - Configuration of two SPMEs, one 
		for the protected link and the second for the long route between the two 
		neighboring nodes, and 1:1 linear protection.</t>
		<t>P2P wrapping for node protection - Configuration of two SPMEs, one
		between the two neighbors of the protected node and the second between these
		two nodes on the long route, and 1:1 linear protection.</t>
		<t>P2MP wrapping - it is possible to optimize the performance of the
		wrapping by configuring the proper protection path to egress the data at the 
		proper branching nodes.</t>
		<t>P2MP steering - by combining 1+1 linear protection and configuration
		of the SPME based on context-sensitive labeling of the protection path.</t>
		</list></t>
		
	  <t>
This document shows that use of the protection architecture and mechanisms
suggested provides the optimizations needed to justify ring-specific protection
 as defined in <xref target="RFC5654" />.
	  </t>

      <t>Protection of traffic over a ring topology based on the steering architecture 
	  using basic 1:1 linear protection is a very efficient implementation for 
	  sections of a P2P transport path that traverses a ring.  Steering should be the 
	  preferred mechanism for P2P protection in a ring topology since it reduces the 
	  extra bandwidth required when traffic doubles through wrapped protection, and 
	  it provides the ability to protect both against link and node failures without 
	  complicating the fault detection or requiring that multiple protection 
	  paths be configured.  While this is true, it's possible to support either wrapping
or steering 
	  while depending upon the OAM functionality (outlined in <xref target="RFC6371" /> 
	  and specified in various documents) and the coordination protocol specified 
	  for linear protection in <xref target="RFC6378"></xref>.</t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>This document does not add any security risks to the network.  Any security
	  considerations are defined in <xref target="RFC6378" />, and their applicability
	  to the information contained in this document follows naturally from the 
	  applicability of the mechanism defined in that document.</t>
    </section>

  </middle>

  <back>
    <references title="Normative References">
    &rfc6378;
  
    </references>

    <references title="Informative References">
    &rfc4090;
    &rfc5331;
    &rfc5654;
    &rfc5921;
    &rfc6371;
    &rfc6372;
    &rfc2205;
    &rfc4427;

      <!-- Begin inclusion reference.ITU-T.G.841 -->

      <reference anchor="G.841">
        <front>
          <title>Types and characteristics of SDH network protection
          architectures</title>
		  
		  <author> <organization>ITU</organization></author>

          <date month="October" year="1998" />

          <abstract>
            <t>Describes different architecture architectures and protocol for
            SDH networks.</t>
          </abstract>
        </front>

        <seriesInfo name="ITU-T" value="G.841" />
      </reference>

    </references>

	<section title="Acknowledgements">
	  <t>The authors would like to acknowledge the strong contributions from all the
	  people who commented on this document and made suggestions for improvements.</t>
	</section>

      <section title="Contributors">
        <t>The authors would like to acknowledge the following individuals that 
		contributed their insights and advice to this work:</t>
		<t>Nurit Sprecher (NSN)</t>
		<t>Akira Sakurai (NEC)</t>
		<t>Rolf Winter (NEC)</t>
		<t>Eric Osborne (Cisco)</t>
      </section>
  </back>
</rfc>
