<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc number="7965" category="std" submissionType="IETF" consensus="yes" ipr="trust200902">
  <front>
    <title abbrev="Explicit PW-to-LSP Tunnels Binding">LDP Extensions for
    Pseudowire Binding&nbsp;to&nbsp;Label&nbsp;Switched&nbsp;Path&nbsp;(LSP)&nbsp;Tunnels</title>

    <author fullname="Mach(Guoyi) Chen" initials="M." surname="Chen">
      <organization>Huawei</organization>

      <address>
        <postal>
          <street/>
        </postal>

        <email>mach.chen@huawei.com</email>
      </address>
    </author>

    <author fullname="Wei Cao" initials="W." surname="Cao">
      <organization>Huawei</organization>

      <address>
        <postal>
          <street/>
        </postal>

        <email>wayne.caowei@huawei.com</email>
      </address>
    </author>

    <author fullname="Attila Takacs" initials="A." surname="Takacs">
      <organization>Ericsson</organization>

      <address>
        <postal>
          <street>Laborc u. 1.</street>

          <city>Budapest</city>

          <code>1037</code>

          <country>Hungary</country>
        </postal>

        <email>attila.takacs@ericsson.com</email>
      </address>
    </author>



    <author fullname="Ping Pan" initials="P." surname="Pan">
      <organization/>

      <address>
        <postal>
          <street/>

          <country/>
        </postal>

        <email/>
      </address>
    </author>

    <date month="August" year="2016"/>



    <abstract>
      <t>Many transport services require that user traffic, in the form of
      Pseudowires (PWs), be delivered via either a single co-routed
      bidirectional tunnel or two unidirectional tunnels that share the same
      routes. This document defines an optional extension to the Label
      Distribution Protocol (LDP) that enables the binding between PWs and the
      underlying Traffic Engineering (TE) tunnels. The extension applies to
      both single-segment and multi-segment PWs.</t>
    </abstract>

  </front>

  <middle>
    <section anchor="intro" title="Introduction">
      <t>Pseudo Wire Emulation Edge-to-Edge (PWE3) <xref target="RFC3985"/> is
      a mechanism to emulate Layer 2 services, such as Ethernet Point-to-Point
      circuits. Such services are emulated between two Attachment Circuits,
      and the Pseudowire-encapsulated Layer 2 service payload is
      transported via Packet Switching Network (PSN) tunnels between Provider
      Edges (PEs). PWE3 typically uses the Label Distribution Protocol (LDP) <xref
      target="RFC5036"/> or Resource Reservation Protocol - Traffic Engineering
      (RSVP-TE) <xref target="RFC3209"/> Label Switched Paths (LSPs) as PSN tunnels. The PEs select
      and bind the Pseudowires to PSN tunnels independently. Today, there is
      no standardized protocol-based provisioning mechanism to associate PWs
      with PSN tunnels; such associations must be managed via provisioning or
      other private methods.</t>

      <t>PW-to-PSN Tunnel Binding has become increasingly common and important
      in many deployment scenarios, as it allows service providers to
      offer service level agreements to their customers for such traffic
      attributes as bandwidth, latency, and availability.</t>

      <t>The requirements for explicit control of PW-to-LSP mapping are
      described in Section 5.3.2 of <xref target="RFC6373"/>. <xref target="fig1" />
      illustrates how PWs can be bound to particular LSPs.</t>
      <t><figure title="Explicit PW-to-LSP Binding Scenario" anchor="fig1">
          <artwork><![CDATA[
                   +------+                  +------+
         ---AC1 ---|..............PWs...............|---AC1---
         ---...----| PE1  |=======LSPs=======| PE2  |---...---
         ---ACn ---|      |-------Links------|      |---ACn---
                   +------+                  +------+

             
          ]]></artwork>
        </figure></t>
      <t>There are two PEs (PE1 and PE2) connected through multiple parallel
      links that may be on different physical fibers. Each link is managed and
      controlled as a bidirectional LSP. At each PE, there are a large number
      of bidirectional user flows from multiple Ethernet interfaces (access
      circuits in the figure). Each user flow utilizes a pair of unidirectional
      PWs to carry bidirectional traffic. The operators need to make sure
      that the user flows (that is, the PW-pairs) are carried on the same
      fiber or bidirectional LSP.</t>

      <t>There are a number of reasons behind this requirement. First, due to
      delay and latency constraints, traffic going over different fibers may
      require a large amount of expensive buffer memory to compensate for the
      differential delay at the head-end nodes. Further, the operators may
      apply different protection mechanisms on different parts of the network
      (e.g., to deploy 1:1 protection in one part and 1+1 protection in other
      parts). As such, operators may prefer to have a user's traffic traverse
      the same fiber. That implies that both forwarding and reserve direction
      PWs that belong to the same user flow need to be mapped to the same
      co-routed bidirectional LSP or two LSPs with the same route.</t>

      <t><xref target="fig2" /> illustrates a scenario where PW-LSP binding is not
      applied.</t>
      <t><figure title="Inconsistent SS-PW-to-LSP Binding Scenario" anchor="fig2">
          <artwork><![CDATA[ 
                 +----+   +--+ LSP1 +--+   +----+ 
      +-----+    | PE1|===|P1|======|P2|===| PE2|    +-----+ 
      |     |----|    |   +--+      +--+   |    |----|     | 
      | CE1 |    |............PW................|    | CE2 | 
      |     |----|    |      +--+          |    |----|     | 
      +-----+    |    |======|P3|==========|    |    +-----+ 
                 +----+      +--+ LSP2     +----+    

     
        ]]></artwork>
        </figure></t>
      <t>LSP1 and LSP2 are two bidirectional connections on diverse paths. The
      operator needs to deliver a bidirectional flow between PE1 and PE2.
      Using existing mechanisms, it's possible that PE1 may select LSP1
      (PE1-P1-P2-PE2) as the PSN tunnel for traffic from PE1 to PE2, while
      selecting LSP2 (PE2-P3-PE1) as the PSN tunnel for traffic from PE2 to
      PE1.</t>

      <t>Consequently, the user traffic is delivered over two disjointed LSPs
      that may have very different service attributes in terms of latency and
      protection. This may not be acceptable as a reliable and effective
      transport service to the customer.</t>

      <t>A similar problem may also exist in multi-segment PWs (MS-PWs), where
      user traffic on a particular PW may hop over different networks in
      forward and reverse directions.</t>

      <t>One way to solve this problem is by introducing manual provisioning
      at each PE to bind the PWs to the underlying PSN tunnels. However, this
      is prone to configuration errors and does not scale.</t>

      <t>This document introduces an automatic solution by extending
      Forwarding Equivalence Class (FEC) 128/129 PW based on <xref
      target="RFC4447"/>.</t>
    </section>

    <section title="Requirements Language">
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
      "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
      document are to be interpreted as described in <xref
      target="RFC2119"></xref>.</t>
    </section>

    <section title="LDP Extensions">
      <t>This document defines a new optional TLV, the PSN Tunnel Binding TLV, to
      communicate tunnel/LSP selection and binding requests between PEs. The
      TLV carries a PW's binding profile and provides explicit or implicit
      information for the underlying PSN Tunnel Binding operation.</t>

      <t>The binding operation applies in both single-segment (SS) and
      multi-segment (MS) scenarios.</t>

      <t>The extension supports two types of binding requests: <list
          style="numbers">
          <t>Strict binding: The requesting PE will choose and explicitly
          indicate the LSP information in the requests; the receiving PE MUST
          obey the requests; otherwise, the PW will not be established.</t>

          <t>Co-routed binding: The requesting PE will suggest an underlying
          LSP to a remote PE. Upon receipt, the remote PE has the option to use
          the suggested LSP or reply to the information for an alternative.</t>
        </list></t>

      <t>In this document, the term "tunnel" is identical to the "TE
      Tunnel" defined in Section 2.1 of <xref target="RFC3209"/>, which is
      uniquely identified by a SESSION object that includes the Tunnel endpoint
      address, the Tunnel ID, and the Extended Tunnel ID. The term "LSP" is
      identical to the "LSP tunnel" defined in Section 2.1 of <xref
      target="RFC3209"/>, which is uniquely identified by the SESSION object
      together with the SENDER_TEMPLATE (or FILTER_SPEC) object that consists of
      the LSP ID and the Tunnel endpoint address.</t>

      <section anchor="psntunnel" title="PSN Tunnel Binding TLV">
        <t>The PSN Tunnel Binding TLV is an optional TLV and MUST be carried in
        the LDP Label Mapping message <xref target="RFC5036"/> if PW-to-LSP
        binding is required. The format is as follows:</t>

        <t><figure title="PSN Tunnel Binding TLV" anchor="fig3">
            <artwork><![CDATA[
  0                   1                   2                   3 
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |U|F| PSN Tunnel Binding(0x0973)|             Length            |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |C|S|T|    Unallocated flags    |            Reserved           |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 ~                       PSN Tunnel Sub-TLV                      ~
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

]]></artwork>
          </figure></t>

        <t>The U-bit and F-bit are defined in Section 3.3 <xref
        target="RFC5036"/>. Since the PSN Tunnel Binding TLV is an optional
        TLV, the U-bit MUST be set to 1 so that a receiver MUST silently
        ignore this TLV if unknown to it, and continue processing the rest of
        the message.</t>

        <t>A receiver of this TLV is not allowed to forward the TLV further
        when it does not know the TLV. So, the F-bit MUST be set to 0.</t>

        <t>The PSN Tunnel Binding TLV type is 0x0973.</t>

        <t>The Length field is 2 octets long. It defines the length in
        octets of the value field (including Flags, Reserved, and sub-TLV
        fields).</t>


        <t>The Flags field is 2 octets in length and three flags are defined in
        this document. The rest of the unallocated flags MUST be set to zero when
        sending and MUST be ignored when received.<list style="empty">

        <t>C (Co-routed path) bit: This bit informs the remote T-PE/S-PEs about
        the properties of the underlying LSPs. When set, the remote T-PE/S-PEs
        SHOULD select the co-routed LSP (as the forwarding tunnel) as the reverse
        PSN tunnel. If there is no such tunnel available, it may trigger the
        remote T-PE/S-PEs to establish a new LSP.</t>

        <t>S (Strict) bit: This bit instructs the PEs with respect to the handling
        of the underlying LSPs. When set, the remote PE MUST use the
        tunnel/LSP specified in the PSN Tunnel Sub-TLV as the PSN tunnel on
        the reverse direction of the PW, or the PW will fail to be
        established.<list style="empty">

        <t>Either the C-bit or the S-bit MUST be set. The C-bit and S-bit are
        mutually exclusive from each other, and they cannot be set in the same
        message. If a status code set to "both C-bit and S-bit are set" or "both C-bit and S-bit
        are clear" is received, a Label Release message with the status code set
        to "The C-bit or S-bit unknown" (0x0000003C) MUST be the reply, and the PW
        will not be established.</t></list></t>

        <t>T (Tunnel Representation) bit: This bit indicates the format of the LSP
        tunnels. When the bit is set, the tunnel uses the tunnel information
        to identify itself, and the LSP Number fields in the PSN Tunnel
        sub-TLV (<xref target="subtlv"/>) MUST be set to zero. Otherwise, both the tunnel
        and LSP information of the PSN tunnel are required. The default is
        set. The motivation for the T-bit is to support the MPLS protection
        operation where the LSP Number fields may be ignored. </t></list></t>

        <t>The Reserved field is 2 octets in length and is left for future
        use.</t>

        <section anchor="subtlv" title="PSN Tunnel Sub-TLV">
          <t>PSN Tunnel Sub-TLVs are designed for inclusion in the PSN Tunnel Binding TLV to specify the tunnel/LSPs to which a PW is required to
          bind.</t>

          <t>Two sub-TLVs are defined: The IPv4 and IPv6 Tunnel sub-TLVs.</t>

          <t><figure title="IPv4 PSN Tunnel Sub-TLV Format" anchor="fig4">
              <artwork><![CDATA[
    0                   1                   2                   3 
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   Type (1)    |    Length     |           Reserved            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      Source Global ID                         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                       Source Node ID                          |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |      Source Tunnel Number     |     Source LSP Number         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                    Destination Global ID                      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                     Destination Node ID                       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   Destination Tunnel Number   |    Destination LSP Number     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    0                   1                   2                   3 

]]></artwork>
            </figure></t>

          <t><figure title="IPv6 PSN Tunnel Sub-TLV Format" anchor="fig5">
              <artwork><![CDATA[
    0                   1                   2                   3 
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   Type (2)    |    Length     |           Reserved            |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                      Source Global ID                         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   ~                       Source Node ID                          ~
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |      Source Tunnel Number     |       Source LSP Number       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                    Destination Global ID                      |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   ~                     Destination Node ID                       ~
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |   Destination Tunnel Number   |    Destination LSP Number     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

]]></artwork>
            </figure></t>
          <t>The definition of the Source and Destination Global/Node IDs and
          Tunnel/LSP Numbers are derived from <xref target="RFC6370"/>. This
          describes the underlying LSPs. Note that the LSPs in this
          notation are globally unique. The ITU-T style identifiers <xref
          target="RFC6923"/> are not used in this document.</t>

          <t>As defined in Sections 4.6.1.1 and 4.6.1.2 of <xref
          target="RFC3209"/>, the "Tunnel endpoint address" is mapped to
          the Destination Node ID, and the "Extended Tunnel ID" is mapped to
	  the Source Node ID. Both IDs can be either IPv4 or IPv6 addresses. The Node IDs are
          routable addresses of the ingress LSR and egress LSR of the
          Tunnel/LSP.</t>

          <t>A PSN Tunnel sub-TLV could be used to identify either a tunnel or
          a specific LSP. The T-bit in the Flags field defines the distinction
          as such that, when the T-bit is set, the Source/Destination LSP
          Number fields MUST be zero and ignored during processing. Otherwise,
          both Source/Destination LSP Number fields MUST have the actual LSP
          IDs of specific LSPs.</t>

          <t>Each PSN Tunnel Binding TLV MUST only have one such sub-TLV. When
          sending, only one sub-TLV MUST be carried. When received, if there
          are more than one sub-TLVs carried, only the first sub-TLV MUST be
          used, the rest of the sub-TLVs MUST be ignored.</t>
        </section>
      </section>
    </section>

    <section title="Theory of Operation">
      <t>During PW setup, the PEs may choose to select the desired forwarding
      tunnels/LSPs and inform the remote T-PE/S-PEs about the desired reverse
      tunnels/LSPs.</t>



      <t>Specifically, to set up a PW (or PW Segment), a PE may select a
      candidate tunnel/LSP to act as the PSN tunnel. If no candidate is available or
      none satisfy the constraints, the PE will trigger and establish a new
      tunnel/LSP. The selected tunnel/LSP information is carried in the PSN
      Tunnel Binding TLV and sent with the Label Mapping message to the target
      PE.</t>

      <t>Upon the reception of the Label Mapping message, the receiving PE
      will process the PSN Tunnel Binding TLV, determine whether it can accept
      the suggested tunnel/LSP or to find the reverse tunnel/LSP that meets
      the request, and respond with a Label Mapping message, which contains
      the corresponding PSN Tunnel Binding TLV.</t>


      <t>It is possible that two PEs request PSN Binding to the same PW or
      PW segment over different tunnels/LSPs at the same time. This may cause
      collisions of tunnel/LSPs selection as both PEs assume the active
      role.</t>

      <t>As defined in (Section 7.2.1, <xref target="RFC6073"/>), each PE may
      be categorized into active and passive roles:</t>

      <t><list style="numbers">
          <t>Active PE: The PE that initiates the selection of the
          tunnel/LSPs and informs the remote PE;</t>

          <t>Passive PE: The PE that obeys the active PE's suggestion.</t>
        </list></t>

      <t>In the rest of this document, we will elaborate upon the operation
      for SS-PW and MS-PW:</t>

      <t><list style="numbers">
          <t>SS-PW: In this scenario, both PEs for a particular PW may assume
          the active roles.</t>

          <t>MS-PW: One PE is active, while the other is passive. The PWs are
          set up using FEC 129.</t>
        </list></t>
    </section>

    <section title="PSN Binding Operation for SS-PW">
      <t>As illustrated in <xref target="fig6" />, both PEs (e.g., PE1 and PE2) of a PW may
      independently initiate the setup. To perform PSN Binding, the Label
      Mapping messages MUST carry a PSN Tunnel Binding TLV, and the PSN Tunnel
      sub-TLV MUST contain the desired tunnel/LSPs of the sender. <figure title="PSN Binding Operation in SS-PW Environment" anchor="fig6">
          <artwork><![CDATA[
                 +----+        LSP1        +----+ 
      +-----+    | PE1|====================| PE2|    +-----+ 
      |     |----|    |                    |    |----|     | 
      | CE1 |    |............PW................|    | CE2 | 
      |     |----|    |                    |    |----|     | 
      +-----+    |    |====================|    |    +-----+ 
                 +----+       LSP2         +----+    

]]></artwork>
        </figure></t>
      <t>As outlined previously, there are two types of binding requests:
      co-routed and strict.</t>

      <t>In strict binding, a PE (e.g., PE1) will mandate that the other PE (e.g.,
      PE2) use a specified tunnel/LSP (e.g., LSP1) as the PSN tunnel on the
      reverse direction. In the PSN Tunnel Binding TLV, the S-bit MUST be set,
      the C-bit MUST be cleared, and the Source and Destination IDs/Numbers
      MUST be filled.</t>


      <t>Upon receipt, if the S-bit is set, as well as following the processing
      procedure defined in Section 5.3.3 of <xref target="RFC4447"/>, the
      receiving PE (i.e., PE2) needs to determine whether to accept the indicated tunnel/LSP in
      PSN Tunnel Sub-TLV.</t>


      <t>The receiving PE (PE2) may also be an active PE, and it may have
   initiated the PSN Binding requests to the other PE (PE1); if the
   received PSN tunnel/LSP is the same as was sent in the Label
   Mapping message by PE2, then the signaling has converged on a
   mutually agreed upon Tunnel/LSP.  The binding operation is completed.</t>

      <t>Otherwise, the receiving PE (PE2) MUST compare its own Node ID
      against the received Source Node ID as unsigned integers. If the
      received Source Node ID is larger, the PE (PE2) will reply with a Label
      Mapping message to complete the PW setup and confirm the binding
      request. The PSN Tunnel Binding TLV in the message MUST contain the same
      Source and Destination IDs/Numbers as in the received binding request,
      in the appropriate order (where the source is PE2 and PE1 becomes the
      destination). On the other hand, if the receiving PE (PE2) has a Node ID
      that is larger than the Source Node ID carried in the PSN Tunnel Binding
      TLV, it MUST reply with a Label Release message with the status code set to
      "Reject - unable to use the suggested tunnel/LSPs", and the received PSN
      Tunnel Binding TLV, and the PW will not be established.</t>


      <t>To support co-routed binding, the receiving PE can select the
      appropriate PSN tunnel/LSP for the reverse direction of the PW, so long
      as the forwarding and reverse PSNs share the same route (links and
      nodes).</t>

      <t>Initially, a PE (PE1) sends a Label Mapping message to the remote PE
      (PE2) with the PSN Tunnel Binding TLV, with C-bit set, S-bit cleared,
      and the appropriate Source and Destination IDs/Numbers. In case of
      unidirectional LSPs, the PSN Tunnel Binding TLV may only contain the
      Source IDs/Numbers; the Destination IDs/Numbers are set to zero and left
      for PE2 to complete when responding to the Label Mapping message.</t>

      <t>Upon receipt, since PE2 is also an active PE, and may have initiated
      the PSN Binding requests to the other PE (PE1), if the received PSN
      tunnel/LSP has the same route as the one that has been sent in the Label
      Mapping message to PE1, then the signaling has converged. The binding
      operation is completed.</t>

      <t>Otherwise, PE2 needs to compare its own Node ID against the received
      Source Node ID as unsigned integers. If the received Source Node ID is
      larger, PE2 needs to find/establish a tunnel/LSP that meets the
      co-routed constraint, and reply with a Label Mapping message that has a PSN
      Binding TLV that contains the Source and Destination IDs/Numbers of the
      tunnel/LSP. On the other hand, if the receiving PE (PE2) has a Node ID
      that is larger than the Source Node ID carried in the PSN Tunnel Binding
      TLV, it MUST reply with a Label Release message that has a status code set to
      "Reject - unable to use the suggested tunnel/LSPs" (0x0000003B) and the
      received PSN Tunnel Binding TLV.</t>

      <t>In addition, if the received PSN tunnel/LSP endpoints do not match
      the PW endpoints, PE2 MUST reply with a Label Release message with
      the status code set to "Reject - unable to use the suggested tunnel/LSPs"
      (0x0000003B) and the received PSN Tunnel Binding TLV MUST also be carried.</t>

      <t>In both strict and co-routed bindings, if the T-bit is set, the LSP
      Number field MUST be set to zero. Otherwise, the field MUST contain the
      actual LSP number for the related PSN LSP.</t>

      <t>After a PW is established, the operators may choose to move the PWs
      from the current tunnel/LSPs to other tunnel/LSPs. Also, the underlying
      PSN tunnel may break due to a network failure. When either of these
      scenarios occur, a new Label Mapping message MUST be sent to notify the
      remote PE of the changes. Note that when the T-bit is set, the working
      LSP broken will not provide this update if there are protection LSPs in
      place.</t>

      <t>The message may carry a new PSN Tunnel Binding TLV, which contains
      the new Source and Destination Numbers/IDs. The handling of the new
      message should be identical to what has been described in this
      section.</t>

      <t>However, if the new Label Mapping message does not contain the PSN
      Tunnel Binding TLV, it declares the removal of any co-routed/strict
      constraints. The current independent PW-to-PSN Binding will be used.</t>

      <t>Further, as an implementation option, the PEs may choose not to
      remove the traffic from an operational PW until the completion of the
      underlying PSN tunnel/LSP changes.</t>
    </section>

    <section title="PSN Binding Operation for MS-PW">


      <t>MS-PW uses FEC 129 for PW setup. We refer to <xref target="fig7" /> for this operation.</t>
      <t><figure title="PSN Binding Operation in MS-PW Environment" anchor="fig7">
          <artwork><![CDATA[
          +-----+ LSP1 +-----+ LSP2 +-----+ LSP3 +-----+
  +---+   |T-PE1|======|S-PE1|======|S-PE2|======|T-PE2|   +---+ 
  |   |---|     |      |     |      |     |      |     |---|   | 
  |CE1|   |......................PW....................|   |CE2| 
  |   |---|     |      |     |      |     |      |     |---|   | 
  +---+   |     |======|     |======|     |======|     |   +---+ 
          +-----+ LSP4 +-----+ LSP5 +-----+ LSP6 +-----+  

      ]]></artwork>
        </figure>When an active PE (that is, T-PE1) starts to signal an MS-PW,
      a PSN Tunnel Binding TLV MUST be carried in the Label Mapping message
      and sent to the adjacent S-PE (that is, S-PE1). The PSN Tunnel Binding
      TLV includes the PSN Tunnel sub-TLV that carries the desired tunnel/LSP
      of T-PE1.</t>

      <t>For strict binding, the initiating PE MUST set the S-bit, clear the
      C-bit, and indicate the binding tunnel/LSP to the next-hop S-PE.</t>



      <t>When S-PE1 receives the Label Mapping message, it needs to
      determine if the signaling is for the forward or reverse direction, as
      defined in Section 4.2.3 of <xref target="RFC7267"/>.</t>

      <t>If the Label Mapping message is for the forward direction, and S-PE1
      accepts the requested tunnel/LSPs from T-PE1, S-PE1 MUST save the
      tunnel/LSP information for reverse-direction processing later on. If the
      PSN Binding request is not acceptable, S-PE1 MUST reply with a Label
      Release Message to the upstream PE (T-PE1) with the status code set to
      "Reject - unable to use the suggested tunnel/LSPs" (0x0000003B).</t>

      <t>Otherwise, S-PE1 relays the Label Mapping message to the next S-PE
      (that is, S-PE2), with the PSN Tunnel sub-TLV carrying the information
      of the new PSN tunnel/LSPs selected by S-PE1. S-PE2 and subsequent S-PEs
      will repeat the same operation until the Label Mapping message reaches
      to the remote T-PE (that is, T-PE2).</t>

      <t>If T-PE2 agrees with the requested tunnel/LSPs, it will reply with a
      Label Mapping message to initiate the binding process in the reverse
      direction. The Label Mapping message contains the received PSN Tunnel Binding TLV for confirmation purposes.</t>

      <t>When its upstream S-PE (S-PE2) receives the Label Mapping message,
      the S-PE relays the Label Mapping message to its upstream adjacent S-PE
      (S-PE1), with the previously saved PSN tunnel/LSP information in the PSN
      Tunnel sub-TLV. The same procedure will be applied on subsequent S-PEs,
      until the message reaches T-PE1 to complete the PSN Binding
      setup.</t>

      <t>During the binding process, if any PE does not agree to the requested
      tunnel/LSPs, it can send a Label Release Message to its upstream
      adjacent PE with the status code set to "Reject - unable to use the
      suggested tunnel/LSPs" (0x0000003B). In addition, if the received PSN
      tunnel/LSP endpoints do not match the PW Segment endpoints, the
      receiving PE MUST reply with a Label Release message with the status code
      set to "Reject - unable to use the suggested tunnel/LSPs" (0x0000003B) and the
      received PSN Tunnel Binding TLV MUST also be carried.</t>

      <t>For co-routed binding, the initiating PE (T-PE1) MUST set the C-bit,
      reset the S-bit, and indicate the suggested tunnel/LSP in the PSN Tunnel
      sub-TLV to the next-hop S-PE (S-PE1).</t>

      <t>During the MS-PW setup, the PEs have the option of ignoring the
      suggested tunnel/LSP, and to select another tunnel/LSP for the segment
      PW between itself and its upstream PE in reverse direction only if the
      tunnel/LSP is co-routed with the forward one. Otherwise, the procedure
      is the same as the strict binding.</t>

      <t>The tunnel/LSPs may change after a MS-PW has been established. When a
      tunnel/LSP has changed, the PE that detects the change SHOULD select an
      alternative tunnel/LSP for temporary use while negotiating with other
      PEs following the procedure described in this section.</t>
    </section>

    <section title="PSN Tunnel Select Considerations">
      <t>As stated in <xref target="intro"/>, the PSN tunnel that is used
      for binding can be either a co-routed bidirectional LSP or two LSPs
      with the same route. The co-routed bidirectional LSP has the
      characteristics that both directions not only cross the same nodes and
      links, but have the same life span. But for the two LSPs case, even if
      they have the same route at the beginning, it cannot be guaranteed that
      they will always have the same route all the time. For example, when
      Fast ReRoute (FRR) <xref target="RFC4090"/> is deployed for the LSPs,
      link or node failure may make the two LSPs use different routes. So, if
      the network supports co-routed bidirectional LSPs, it is RECOMMENDED
      that a co-routed bidirectional LSP should be used; otherwise, two LSPs
      with the same route may be used.</t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>The ability to control which LSP is used to carry traffic from a PW
      can be a potential security risk both for denial of service and traffic
      interception. It is RECOMMENDED that PEs not accept the use of LSPs
      identified in the PSN Tunnel Binding TLV unless the LSP endpoints match
      the PW or PW segment endpoints. Furthermore, it is RECOMMENDED that PEs
      implement the LDP security mechanisms described in <xref target="RFC5036"/> and
      <xref target="RFC5920"/>.</t>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <section title="LDP TLV Types">
        <t>This document defines a new TLV (<xref target="psntunnel" />) for
        inclusion in the LDP Label Mapping message. IANA has assigned 
        TLV type value 0x0973 from the "LDP TLV Type Name
        Space" registry.</t>

        <section title="PSN Tunnel Sub-TLVs">
          <t>This document defines two sub-TLVs (<xref target="subtlv" />) for the PSN Tunnel Binding TLV. IANA has created a
          new PWE3 subregistry titled "PSN Tunnel Sub-TLV Name Space" for PSN Tunnel
          sub-TLVs and has assigned Sub-TLV type values to the following
          sub-TLVs:</t>

          <t>IPv4 PSN Tunnel sub-TLV &ndash; 1</t>

          <t>IPv6 PSN Tunnel sub-TLV &ndash; 2</t>

          <t>In addition, the values 0 and 255 in this new registry should be
          reserved, and values 1-254 will be allocated by IETF Review <xref target="RFC5226"/>.</t>
        </section>
      </section>

      <section title="LDP Status Codes">
        <t>This document defines two new LDP status codes, IANA has
        assigned status codes to these new defined codes from the "LDP
        Status Code Name Space" registry.</t>

        <t>"Reject - unable to use the suggested tunnel/LSPs" &ndash; 0x0000003B</t>

        <t>"The C-bit or S-bit unknown" &ndash; 0x0000003C</t>

        <t>The E bit is set to 1 for both new codes.</t>
      </section>
    </section>

  </middle>

  <back>
    <references title="Normative References">
      <?rfc include="reference.RFC.2119"?>

      <?rfc include="reference.RFC.4447"?>

      <?rfc include="reference.RFC.6370"?>
    </references>

    <references title="Informative References">

      <?rfc include="reference.RFC.5226"?>


      <?rfc include="reference.RFC.7267"?>

      <?rfc include="reference.RFC.6073"?>

      <?rfc include="reference.RFC.3209"?>

      <?rfc include="reference.RFC.3985"?>

      <?rfc include="reference.RFC.4090"?>

      <?rfc include="reference.RFC.5036"?>

      <?rfc include="reference.RFC.5920"?>

      <?rfc include="reference.RFC.6373"?>

      <?rfc include="reference.RFC.6923"?>
    </references>
    <section anchor="Acknowledgements" title="Acknowledgements" numbered="no">
      <t>The authors would like to thank Adrian Farrel, Kamran Raza, Xinchun
      Guo, Mingming Zhu, and Li Xue for their comments and help in preparing
      this document. Also this document benefits from the discussions with Nabil
      Bitar, Paul Doolan, Frederic Journay, Andy Malis, Curtis Villamizar,
      Luca Martini, Alexander Vainshtein, Huub van Helvoort, Daniele
      Ceccarelli, and Stewart Bryant.</t>

   <t>We would especially like to acknowledge Ping Pan, a coauthor on the
      early draft versions of this document. It was a privilege to have known
      him.</t>

      <t>The coauthors of this document, the working group chairs, the
      responsible AD, and the PALS working group wish to dedicate this RFC to
      the memory of our friend and colleague Ping Pan, in recognition for his
      devotion and hard work at the IETF.</t>
    </section>

  </back>
</rfc>
