<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY RFC2119 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC3209 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3209.xml">
<!ENTITY RFC5440 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5440.xml">
<!ENTITY RFC7551 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7551.xml">
<!ENTITY RFC8126 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8126.xml">
<!ENTITY RFC8174 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC8231 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8231.xml">
<!ENTITY RFC8281 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8281.xml">
<!ENTITY RFC8537 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8537.xml">
<!ENTITY RFC8697 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8697.xml">
<!ENTITY RFC5654 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5654.xml">
<!ENTITY RFC7420 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7420.xml">
<!ENTITY RFC7942 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7942.xml">
<!ENTITY RFC8051 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8051.xml">
<!ENTITY RFC8253 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8253.xml">
<!ENTITY RFC8408 SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8408.xml">
<!ENTITY I-D.ietf-pce-pcep-yang SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-pce-pcep-yang.xml">
<!ENTITY I-D.ietf-pce-pcep-stateful-pce-gmpls SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-pce-pcep-stateful-pce-gmpls.xml">
<!ENTITY I-D.ietf-pce-sr-bidir-path SYSTEM "https://xml2rfc.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-pce-sr-bidir-path.xml">
]>
<rfc category="std" docName="draft-ietf-pce-association-bidir-11"
     ipr="trust200902" submissionType="IETF">
  <!-- Generated by id2xml 1.5.0 on 2020-02-01T01:23:15Z -->

  <?rfc compact="yes"?>

  <?rfc text-list-symbols="oo*+-"?>

  <?rfc subcompact="no"?>

  <?rfc sortrefs="yes"?>

  <?rfc symrefs="yes"?>

  <?rfc strict="yes"?>

  <?rfc toc="yes"?>

  <front>
    <title abbrev="PCEP for Associated Bidirectional LSP"> Path Computation Element Communication Protocol (PCEP) Extensions for Associated Bidirectional Label Switched Paths (LSPs)</title>

    <author fullname="Rakesh Gandhi" initials="R." role="editor"
            surname="Gandhi">
      <organization>Cisco Systems, Inc.</organization>

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

        <email>rgandhi@cisco.com</email>
      </address>
    </author>

    <author fullname="Colby Barth" initials="C." surname="Barth">
      <organization>Juniper Networks</organization>

      <address>
        <email>cbarth@juniper.net</email>
      </address>
    </author>

    <author fullname="Bin Wen" initials="B." surname="Wen">
      <organization>Comcast</organization>

      <address>
        <email>Bin_Wen@cable.comcast.com</email>
      </address>
    </author>

    <date day="29" month="January" year="2021"/>

    <workgroup>PCE Working Group</workgroup>

    <abstract>
      <t/>

      <t>The Path Computation Element Communication Protocol (PCEP) provides
      mechanisms for Path Computation Elements (PCEs) to perform path
      computations in response to Path Computation Clients (PCCs) requests.
      The Stateful PCE extensions allow stateful control of Multiprotocol
      Label Switching (MPLS) Traffic Engineering (TE) Label Switched Paths
      (LSPs) using PCEP.</t>

      <t>This document defines PCEP extensions for grouping two unidirectional
      MPLS TE LSPs (one in each direction in the network) into an Associated
      Bidirectional LSP. The mechanisms defined in this document can be
      applied using a Stateful PCE for both PCE-Initiated and PCC-Initiated
      LSPs, as well as when using a Stateless PCE. The procedures defined are
      applicable to the LSPs using Resource Reservation Protocol - Traffic Engineering (RSVP-TE) for
      signaling.</t>
    </abstract>
  </front>

  <middle>
    <section anchor="sect-1" title="Introduction">
      <t><xref target="RFC5440"/> describes the Path Computation Element
      Communication Protocol (PCEP) as a communication mechanism between a Path Computation
      Client (PCC) and a Path Control Element (PCE), or between PCE and PCC,
      that enables computation of Multiprotocol Label Switching (MPLS) Traffic
      Engineering (TE) Label Switched Paths (LSPs).</t>

      <t><xref target="RFC8231"/> specifies extensions to PCEP to enable
      stateful control of MPLS TE LSPs. It describes two modes of operation -
      Passive Stateful PCE and Active Stateful PCE. In <xref
      target="RFC8231"/>, the focus is on Active Stateful PCE where LSPs are
      provisioned on the PCC and control over them is delegated to a PCE.
      Further, <xref target="RFC8281"/> describes the setup, maintenance and
      teardown of PCE-Initiated LSPs for the Stateful PCE model.</t>

      <t><xref target="RFC8697"/> introduces a generic mechanism to create a grouping of LSPs.
      This grouping can then be used to define associations between
      sets of LSPs or between a set of LSPs and a set of attributes,
      and it is equally applicable to the stateful PCE (active and
      passive modes) and the stateless PCE.</t>

      <t>The MPLS Transport Profile (MPLS-TP) requirements document <xref
      target="RFC5654"/> specifies that 
      "MPLS-TP MUST support unidirectional, co-routed bidirectional, and
       associated bidirectional point-to-point transport paths".
      <xref target="RFC7551"/> defines RSVP
      signaling extensions for binding forward and reverse unidirectional LSPs 
      into an associated bidirectional LSP. The fast
      reroute (FRR) procedures for associated bidirectional LSPs are described
      in <xref target="RFC8537"/>.</t>

      <t>This document defines PCEP extensions for grouping two unidirectional
      MPLS-TE LSPs into an Associated Bidirectional LSP for both single-sided
      and double-sided initiation cases when using a Stateful PCE for both
      PCE-Initiated and PCC-Initiated LSPs as well as when using a Stateless
      PCE. The procedures defined are applicable to the LSPs using Resource
      Reservation Protocol - Traffic Engineering (RSVP-TE) for signaling <xref target="RFC3209"/>.
      Specifically, this document defines two new Association Types, "Single-sided  
      Bidirectional LSP Association" and "Double-sided Bidirectional 
      LSP Association", as well as "Bidirectional LSP Association Group TLV" to carry 
      additional information for the association.</t>

      <t>The procedure for associating two unidirectional Segment Routing (SR) Paths 
      to form an Associated Bidirectional SR Path is defined in 
      <xref target="I-D.ietf-pce-sr-bidir-path"/>, and is outside the scope of 
      this document.</t>


    </section>

    <section anchor="sect-2" title="Conventions Used in This Document">
      <section anchor="sect-2.1" title="Key Word Definitions">
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
        "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
        "OPTIONAL" in this document are to be interpreted as described in BCP
        14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only
        when, they appear in all capitals, as shown here.</t>
      </section>

      <section anchor="sect-2.2" title="Terminology">
        <t>The reader is assumed to be familiar with the terminology defined
        in <xref target="RFC5440"/>, <xref target="RFC7551"/>, <xref
        target="RFC8231"/>, and <xref target="RFC8697"/>.</t>
      </section>
    </section>

    <section anchor="sect-3" title="Overview">
      <t>As shown in Figure 1, forward and reverse unidirectional LSPs can be grouped
      to form an associated bidirectional LSP. The node A is ingress node for LSP1 and
      egress node for LSP2, whereas node D is ingress node 
      for LSP2 and egress node for LSP1. There are two methods of
      initiating the bidirectional LSP association, single-sided and
      double-sided, as defined in <xref target="RFC7551"/> and described in
      the following sections.</t>

      <figure anchor="ure-example-of-associated-bidirectional-lsp"
              title="Example of Associated Bidirectional LSP">
        <artwork>
            LSP1 --&gt;          LSP1 --&gt;          LSP1 --&gt;
   +-----+           +-----+           +-----+           +-----+
   |  A  +-----------+  B  +-----------+  C  +-----------+  D  |
   +-----+           +--+--+           +--+--+           +-----+
            &lt;-- LSP2    |                 |     &lt;-- LSP2
                        |                 |
                        |                 |
                     +--+--+           +--+--+
                     |  E  +-----------+  F  |
                     +-----+           +-----+
                              &lt;-- LSP2
</artwork>
      </figure>

      <section anchor="sect-3.1" title="Single-sided Initiation">
        <t>As specified in <xref target="RFC7551"/>, in the single-sided case,
        the bidirectional tunnel is provisioned only on one endpoint node
	(PCC) of the tunnel. Both endpoint nodes act as a PCC. 
	Both forward and reverse LSPs of this tunnel are
        initiated with the Association Type set to "Single-sided Bidirectional
        LSP Association" on the originating endpoint node. The forward and
        reverse LSPs are identified in the "Bidirectional LSP Association Group
        TLV" of their PCEP ASSOCIATION Objects.</t>

        <t>The originating endpoint node signals the properties for the reverse
        LSP in the RSVP REVERSE_LSP Object <xref target="RFC7551"/> of the
        forward LSP Path message. The remote endpoint node then creates the
        corresponding reverse tunnel and reverse LSP, and signals the reverse LSP in response
        to the received RSVP-TE Path message. Similarly, the remote endpoint node
        deletes the reverse LSP when it receives the RSVP-TE message to delete the forward LSP
        <xref target="RFC3209"/>.</t>

        <t>As specified in <xref target="RFC8537"/>, for fast reroute bypass
        tunnel assignment, the LSP starting from the originating endpoint node is
        identified as the forward LSP of the single-sided initiated
        bidirectional LSP.</t>

      <section anchor="sect-3.1.1" title="PCE-Initiated Single-sided Bidirectional LSP">

        <figure anchor="ure-example-of-pce-initiated-single-sided-bidirectional-lsp"
                title="Example of PCE-Initiated Single-sided Bidirectional LSP">
          <artwork>
                                +-----+
                                | PCE |
                                +-----+
    Initiates:                   |    \      
    Tunnel 1 (F)                 |     \     
    (LSP1 (F, 0), LSP2 (R, 0))   |      \    
    Association #1               v       \   
                              +-----+    +-----+
                              |  A  |    |  D  |
                              +-----+    +-----+


                                +-----+
                                | PCE |
                                +-----+
    Reports:                     ^    ^      Reports:
    Tunnel 1 (F)                 |     \     Tunnel 2 (F)
    (LSP1 (F, P1), LSP2 (R, P2)) |      \    (LSP2 (F, P3))
    Association #1               |       \   Association #1
                              +-----+    +-----+
                              |  A  |    |  D  |
                              +-----+    +-----+

  Legends: F = Forward LSP, R = Reverse LSP, (0,P1,P2,P3) = PLSP-IDs
</artwork>
        </figure>

       <t>As shown in Figure 2, the forward tunnel 1 and both forward
       LSP1 and reverse LSP2 are initiated on the originating endpoint node
       A by the PCE.  The PLSP-IDs used are P1 and P2 on the originating endpoint node A
       and P3 on the remote endpoint node D.
       The originating endpoint node A reports tunnels 1 and forward LSP1 and reverse LSP2 
       to the PCE. The endpoint (PCC) node D reports
       tunnel 2 and LSP2 to the PCE. 
       The endpoint (PCC) node D also reports the reverse LSP1 (not shown for simplicity) to the PCE.</t>

      </section>

      <section anchor="sect-3.1.2" title="PCC-Initiated Single-sided Bidirectional LSP">

      <figure anchor="ure-example-of-pcc-initiated-single-sided-bidirectional-lsp"
                title="Example of PCC-Initiated Single-sided Bidirectional LSP">
          <artwork>
                                +-----+
                                | PCE |
                                +-----+
    Reports/Delegates:           ^    ^      Reports:
    Tunnel 1 (F)                 |     \     Tunnel 2 (F)
    (LSP1 (F, P1), LSP2 (R, P2)) |      \    (LSP2 (F, P3))
    Association #2               |       \   Association #2
                              +-----+    +-----+
                              |  A  |    |  D  |
                              +-----+    +-----+

  Legends: F = Forward LSP, R = Reverse LSP, (P1,P2,P3) = PLSP-IDs
</artwork>
        </figure>

       <t>As shown in Figure 3, the forward tunnel 1 and both forward
       LSP1 and reverse LSP2 are initiated on the originating endpoint node
       A (the originating PCC). 
       The PLSP-IDs used are P1 and P2 on the originating endpoint node A
       and P3 on the remote endpoint node D.
       The originating endpoint (PCC) node A may delegate the
       forward LSP1 and reverse LSP2 to the PCE. 
       The originating endpoint node A reports tunnels 1 and forward LSP1 and reverse LSP2 
       to the PCE. The endpoint (PCC) node D reports
       tunnel 2 and LSP2 to the PCE. 
       The endpoint (PCC) node D also reports the reverse LSP1 (not shown for simplicity) to the PCE.</t>

      </section>

      </section>

      <section anchor="sect-3.2" title="Double-sided Initiation">
        <t>As specified in <xref target="RFC7551"/>, in the double-sided case,
        the bidirectional tunnel is provisioned on both endpoint nodes (PCCs)
        of the tunnel. The forward and reverse LSPs of this tunnel are
        initiated with the Association Type set to "Double-sided Bidirectional
        LSP Association" on both endpoint nodes. The forward and reverse LSPs
        are identified in the "Bidirectional LSP Association Group TLV" of their
        ASSOCIATION Objects.</t>
 
        <t>As specified in <xref target="RFC8537"/>, for fast reroute bypass
        tunnel assignment, the LSP with the higher Source Address <xref
        target="RFC3209"/> is identified as the forward LSP of the
        double-sided initiated bidirectional LSP.</t>

     <section anchor="sect-3.2.1" title="PCE-Initiated Double-sided Bidirectional LSP">

        <figure anchor="ure-example-of-pce-initiated-double-sided-bidirectional-lsp"
                title="Example of PCE-Initiated Double-sided Bidirectional LSP">
          <artwork>
                            +-----+
                            | PCE |
                            +-----+
          Initiates:         |    \      Initiates:
          Tunnel 1 (F)       |     \     Tunnel 2 (F)
          (LSP1 (F, 0))      |      \    (LSP2 (F, 0))
          Association #3     v       v   Association #3
                          +-----+    +-----+
                          |  A  |    |  D  |
                          +-----+    +-----+


                            +-----+
                            | PCE |
                            +-----+
          Reports:           ^    ^      Reports:
          Tunnel 1 (F)       |     \     Tunnel 2 (F)
          (LSP1 (F, P4))     |      \    (LSP2 (F, P5))
          Association #3     |       \   Association #3
                          +-----+    +-----+
                          |  A  |    |  D  |
                          +-----+    +-----+

          Legends: F = Forward LSP, (0,P4,P5) = PLSP-IDs
</artwork>
        </figure>
        <t>As shown in Figure 4, the forward tunnel 1 and forward LSP1
        are initiated on the endpoint node A and the reverse tunnel 2 and
        reverse LSP2 are initiated on the endpoint node D by the PCE.
        The PLSP-IDs used are P4 on the endpoint node A
        and P5 on the endpoint node D.
        The endpoint node A (PCC) reports the forward LSP1 and endpoint node D reports the forward LSP2 to the PCE.
	Both endpoint (PCC) nodes also report the reverse LSPs (not shown for simplicity) to the PCE.</t>

     </section>

     <section anchor="sect-3.2.2" title="PCC-Initiated Double-sided Bidirectional LSP">

       <figure anchor="ure-example-of-pcc-initiated-double-sided-bidirectional-lsp"
                title="Example of PCC-Initiated Double-sided Bidirectional LSP">
          <artwork>
                            +-----+
                            | PCE |
                            +-----+
        Reports/Delegates:   ^    ^      Reports/Delegates:
        Tunnel 1 (F)         |     \     Tunnel 2 (F)
        (LSP1 (F, P4))       |      \    (LSP2 (F, P5))
        Association #4       |       \   Association #4
                          +-----+    +-----+
                          |  A  |    |  D  |
                          +-----+    +-----+

        Legends: F = Forward LSP, (P4,P5) = PLSP-IDs
</artwork>
        </figure>

       <t>As shown in Figure 5, the forward tunnel 1 and forward LSP1
        are initiated on the endpoint node A and the reverse tunnel 2 and
        reverse LSP2 are initiated on the endpoint node D (the PCCs).
        The PLSP-IDs used are P4 on the endpoint node A and P5 on the endpoint node D.
	Both endpoint (PCC) nodes may delegate the forward LSP1 and LSP2 to the PCE.
        The endpoint node A (PCC) reports the forward LSP1 and endpoint node D reports the forward LSP2 to the PCE.
	Both endpoint (PCC) nodes also report the reverse LSPs (not shown for simplicity) to the PCE.</t>

     </section>

      </section>

      <section anchor="sect-3.3"
               title="Co-routed Associated Bidirectional LSP">
        <t>In both single-sided and double-sided initiation cases, forward and
        reverse LSPs can be co-routed as shown in Figure 6, where both forward
        and reverse LSPs of a bidirectional LSP follow the same congruent path
        in the forward and reverse directions, respectively.</t>

        <figure anchor="ure-example-of-co-routed-associated-bidirectional-lsp"
                title="Example of Co-routed Associated Bidirectional LSP">
          <artwork>
            LSP3 --&gt;          LSP3 --&gt;          LSP3 --&gt;
   +-----+           +-----+           +-----+           +-----+
   |  A  +-----------+  B  +-----------+  C  +-----------+  D  |
   +-----+           +-----+           +-----+           +-----+
           &lt;-- LSP4          &lt;-- LSP4          &lt;-- LSP4
</artwork>
        </figure>

	<t>The procedure specified in [RFC8537] for fast reroute bypass tunnel 
	assignment is also applicable to the Co-routed Associated Bidirectional LSPs.</t>

    </section> 
       
      <section anchor="sect-3.4" title="Summary of PCEP Extensions"><t>
      The PCEP extensions defined in this document cover the following modes of 
      operations under the stateful PCE model:</t>

      <t><list style="symbols">
          <t>A PCC initiates the forward and reverse LSP of a Single-sided
          Bidirectional LSP and retains the control of the
          LSPs. Similarly, both PCCs initiate the forward LSPs of a 
          Double-sided Bidirectional LSP and retain the control of the
          LSPs. The PCC computes the path itself or makes a request for path
          computation to a PCE. After the path setup, it reports the
          information and state of the path to the PCE. This includes the
          association group identifying the bidirectional LSP. This is the
          Passive Stateful mode defined in <xref target="RFC8051"/>.</t>

          <t>A PCC initiates the forward and reverse LSP of a Single-sided
          Bidirectional LSP and delegates the control of the
          LSPs to a Stateful PCE. Similarly, both PCCs initiate the forward LSPs of a 
          Double-sided Bidirectional LSP and delegate the control of the
          LSPs to a Stateful PCE. During delegation the association group
          identifying the bidirectional LSP is included. The PCE computes the
          path of the LSP and updates the PCC with the information about the
          path as long as it controls the LSP. This is the Active Stateful
          mode defined in <xref target="RFC8051"/>.</t>

          <t>A PCE initiates the forward and reverse LSP of a Single-sided
          Bidirectional LSP on a PCC and retains the control
          of the LSP. Similarly, a PCE initiates the forward LSPs of a 
          Double-sided Bidirectional LSP on both PCCs and retains the control
          of the LSPs. The PCE is responsible for computing the path of the LSP
          and updating the PCC with the information about the path as well as
          the association group identifying the bidirectional LSP. This is the
          PCE-Initiated mode defined in <xref target="RFC8281"/>.</t>

          <t>A PCC requests co-routed or non-co-routed paths for forward and
          reverse LSPs of a bidirectional LSP including when using a Stateless PCE <xref
          target="RFC5440"/>.</t>
    </list></t>
    </section>

    </section>

    <section anchor="sect-4" title="Protocol Extensions">
      <section anchor="sect-4.1" title="ASSOCIATION Object">
        <t>As per <xref target="RFC8697"/>, LSPs are associated by adding them
        to a common association group. This document defines two new Association Types, called
        "Single-sided Bidirectional LSP" (TBD1) and "Double-sided
        Bidirectional LSP" (TBD2), based on the generic ASSOCIATION
        Object ((Object-Class value 40).
        A member of the Bidirectional LSP Association
        can take the role of a forward or reverse LSP and follows the following rules:</t>

        <t><list style="symbols">
         <t>An LSP (forward or reverse) MUST NOT be part of more than one
         Bidirectional LSP Association.</t>

         <t>The LSPs in a Bidirectional LSP Association MUST have matching endpoint 
	 nodes in the reverse directions.</t>

         <t>The Tunnel (as defined in <xref target="RFC3209"/>) containing the 
	 forward and reverse LSPs of the Single-sided Bidirectional LSP Association 
	 on the originating node MUST have the same LSP parameters 
	 (as described in section 3.1.1 of  <xref target="RFC3209"/>), 
	 albeit both LSPs have reversed endpoint nodes.</t>
        </list></t>

	<t>The Bidirectional LSP Association types are considered to be both dynamic and 
	operator-configured in nature.  As per [RFC8697], the association group could
        be manually created by the operator on the PCEP peers, and the LSPs
        belonging to this association are conveyed via PCEP messages to the
        PCEP peer; alternately, the association group could be created
        dynamically by the PCEP speaker, and both the association group
        information and the LSPs belonging to the association group are
        conveyed to the PCEP peer.  The Operator-configured Association Range
        MUST be set for this association-type to mark a range of Association
        Identifiers that are used for operator-configured associations to
        avoid any Association Identifier clash within the scope of the
	Association Source (Refer to <xref target="RFC8697"/>).</t>

        <t>Specifically, for the PCE Initiated Bidirectional LSPs, these Associations 
	are dynamically created by the PCE on the PCE peers. Similarly, 
	for both PCE Initiated and PCC Initiated single-sided case, 
	these associations are also dynamically created on the 
	remote endpoint node using the information 
        received from the RSVP message from the originating node.</t>

        <t>The Association ID, Association Source, optional Global Association
        Source and optional Extended Association ID in the Bidirectional LSP
        Association Object are initialized using the procedures defined
        in <xref target="RFC8697"/> and <xref target="RFC7551"/>.</t>

        <t><xref target="RFC8697"/> specifies the mechanism for the capability advertisement of
        the Association Types supported by a PCEP speaker by defining an
        ASSOC-Type-List TLV to be carried within an OPEN Object.  This
        capability exchange for the Bidirectional LSP Association Types MUST be
        done before using the Bidirectional LSP Association.  Thus, the PCEP
        speaker MUST include the Bidirectional LSP Association Types in the
        ASSOC-Type-List TLV and MUST receive the same from the PCEP peer
        before using the Bidirectional LSP Association in PCEP messages.</t>

      </section>

      <section anchor="sect-4.2"
               title="Bidirectional LSP Association Group TLV">
        <t>The "Bidirectional LSP Association Group TLV" is an OPTIONAL TLV for use with the
        Bidirectional LSP Associations (ASSOCIATION Object with Association
        Type TBD1 for Single-sided Bidirectional LSP or TBD2 for Double-sided Bidirectional LSP).</t>

        <t><list style="symbols">
            <t>The "Bidirectional LSP Association Group TLV" follows the PCEP
            TLV format from <xref target="RFC5440"/>.</t>

            <t>The Type (16 bits) of the TLV is TBD3, to be assigned by
            IANA.</t>

            <t>The Length is 4 Bytes.</t>

            <t>The value comprises of a single field, the Bidirectional LSP
            Association Flag (32 bits), where each bit represents a flag
            option.</t>

            <t>If the "Bidirectional LSP Association Group TLV" is missing, it
            means the LSP is the forward LSP and it is not co-routed LSP.</t>

            <t>When "Bidirectional LSP Association Group TLV" is present, the F 
	    flag MUST be set for the forward LSP for both co-routed and non co-routed LSPs.</t>

            <t>For co-routed LSPs, this TLV MUST be present and C flag set.</t>

            <t>For reverse LSPs, this TLV MUST be present and R flag set.</t>

            <t>The "Bidirectional LSP Association Group TLV" MUST NOT be present
            more than once. If it appears more than once, only the first
            occurrence is processed and any others MUST be ignored.</t>
          </list></t>

        <t>The format of the "Bidirectional LSP Association Group TLV" is shown
        in Figure 7:</t>

        <figure anchor="ure-bidirectional-lsp-association-group-tlv-format"
                title="Bidirectional LSP Association Group TLV format">
          <artwork>
 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 = TBD3           |             Length            |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                       Flags                             |C|R|F|
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</artwork>
        </figure>

        <t>Flags for "Bidirectional LSP Association Group TLV" are defined as following.</t>

        <t>F (Forward LSP, 1 bit, Bit number 31) - Indicates whether the LSP associated is
        the forward LSP of the bidirectional LSP. If this flag is set, the LSP
        is a forward LSP.</t>

        <t>R (Reverse LSP, 1 bit, Bit number 30) - Indicates whether the LSP associated is
        the reverse LSP of the bidirectional LSP. If this flag is set, the LSP
        is a reverse LSP.</t>

        <t>C (Co-routed Path, 1 bit, Bit number 29) - Indicates whether the bidirectional LSP
        is co-routed. This flag MUST be set for both the forward and reverse
        LSPs of a co-routed bidirectional LSP.</t>

        <t>The C flag is used by the PCE (for both Stateful and Stateless) to
        compute bidirectional paths of the forward and reverse LSPs of a
        co-routed bidirectional LSP.</t>

        <t>The unassigned flags (Bit Number 0-28) MUST be set to 0 when sent and MUST be ignored
        when received.</t>
      </section>
    </section>

    <section anchor="sect-5" title="PCEP Procedure">
        <t>The PCEP procedure defined in this document is applicable to the following three scenarios:</t>

        <t><list style="symbols">
          <t>Neither unidirectional LSP exists, and both must be established.</t>
          <t>Both unidirectional LSPs exist, but the association must be established.</t>
          <t>One LSP exists, but the reverse associated LSP must be established.</t>
          </list></t>

      <section anchor="sect-5.1" title="PCE Initiated LSPs">
        <t>As specified in <xref target="RFC8697"/>, the Bidirectional LSP
        Associations can be created and updated by a Stateful PCE.</t>

        <t><list style="symbols">
	    <t>For Single-sided Bidirectional LSP Association initiated by the PCE, 
	    it MUST send PCInitiate message to the originating endpoint node with both 
	    direction LSPs. For Double-sided Bidirectional LSP Association 
	    initiated by the PCE, it MUST send PCInitiate message to both 
	    endpoint nodes with forward direction LSPs. </t>

            <t>Both PCCs MUST report the forward and reverse LSPs in the 
	    Bidirectional LSP Association to the PCE. PCC reports via PCRpt message.</t> 

            <t>Stateful PCE MAY create and update the forward and reverse LSPs
            independently for the Single-sided Bidirectional
            LSP Association on the originating endpoint node.</t>

            <t>Stateful PCE MAY create and update the forward LSP
            independently for the Double-sided Bidirectional
            LSP Association on the endpoint nodes.</t>

            <t>Stateful PCE establishes and removes the association
            relationship on a per LSP basis.</t>

            <t>Stateful PCE creates and updates the LSP and the association
            on a PCC via PCInitiate and PCUpd messages, respectively, using
            the procedures described in <xref target="RFC8697"/>.</t>
          </list></t>
      </section>

      <section anchor="sect-5.2" title="PCC Initiated LSPs">
        <t>As specified in <xref target="RFC8697"/>, the Bidirectional LSP
        Associations can also be created and updated by a PCC.</t>

        <t><list style="symbols">
	    <t>For Single-sided Bidirectional LSP Association initiated at a PCC, 
	    it MUST send PCRpt message to the PCE with both direction LSPs. 
	    For Double-sided Bidirectional LSP Association initiated at the PCCs, 
	    both PCCs MUST send PCRpt message to the PCE with forward direction LSPs.</t>

            <t>PCC on the originating endpoint node MAY create and update the forward and reverse LSPs
            independently for the Single-sided Bidirectional LSP Association.</t>

            <t>PCC on the endpoint nodes MAY create and update the forward LSP
            independently for the Double-sided Bidirectional LSP Association.</t>

            <t>PCC establishes and removes the association group on a
            per LSP basis. PCC MUST report the change in the association group of an LSP
            to PCE(s) via PCRpt message.</t>

            <t>PCC reports the forward and reverse LSPs in the Bidirectional LSP Association independently to
            PCE(s) via PCRpt message.</t>

            <t>PCC for the single-sided case MAY delegate the forward and reverse LSPs independently to
            a Stateful PCE, where PCE would control the LSPs. In this case,
            the originating (PCC) endpoint node SHOULD delegate both forward and reverse
            LSPs of a tunnel together to a Stateful PCE in order to avoid any race condition.</t>

            <t>PCCs for the double-sided case MAY delegate the forward LSPs to
            a Stateful PCE, where PCE would control the LSPs.</t>

            <t>Stateful PCE updates the LSPs in the Bidirectional LSP
            Association via PCUpd message, using the procedures
            described in <xref target="RFC8697"/>.</t>
          </list></t>
      </section>

      <section anchor="sect-5.3" title="Stateless PCE">
        <t>For a stateless PCE, it might be useful to associate a path
        computation request to an association group, thus enabling it to
        associate a common set of configuration parameters or behaviors with
        the request <xref target="RFC8697"/>. A PCC can request co-routed or non-co-routed forward and
        reverse direction paths from a stateless PCE for a Bidirectional LSP Association.</t>
      </section>

      <section anchor="sect-5.4" title="Bidirectional (B) Flag">
        <t>As defined in <xref target="RFC5440"/>, the Bidirectional (B) flag
        in the Request Parameters (RP) Object is set when the PCC specifies
        that the path computation request is for a bidirectional TE LSP with the 
        same TE requirements in each direction. For an
        associated bidirectional LSP, the B-flag is also set when the PCC makes
        the path computation request for the same TE requirements for the
        forward and reverse direction LSPs.</t>

        <t>Note that the B-flag defined in Stateful PCE Request Parameter (SRP)
        Object <xref target="I-D.ietf-pce-pcep-stateful-pce-gmpls"/> to 
        indicate 'bidirectional co-routed LSP' is used for GMPLS signaled bidirectional LSPs 
        and is not applicable to the associated bidirectional LSPs.</t>
      </section>

      <section anchor="sect-5.5" title="PLSP-ID Usage">
        <t>As defined in <xref target="RFC8231"/>, a PCEP-specific LSP
        Identifier (PLSP-ID) is created by a PCC to uniquely identify an LSP
        and it remains the same for the lifetime of a PCEP session.</t>

        <t>In case of Single-sided Bidirectional LSP Association, the reverse
        LSP of a bidirectional LSP created on the originating endpoint node is
        identified by the PCE using 2 different PLSP-IDs based on the PCEP
        session on the ingress or egress nodes for the LSP. In other words,
        the reverse LSP will have a PLSP-ID P1 at the
        ingress node while it will have a PLSP-ID P3 at the egress node. 
        There is no change in the PLSP-ID
        allocation procedure for the forward LSP of the Single-sided
        Bidirectional LSP on the originating endpoint node. In case of Double-sided Bidirectional LSP
        Association, there is no change in the PLSP-ID allocation
        procedure.</t>

        <t>For an Associated Bidirectional LSP, LSP-IDENTIFIERS TLV <xref
        target="RFC8231"/> MUST be included in all forward and reverse
        LSPs.</t>
      </section>

      <section anchor="sect-5.6" title="State Synchronization">
        <t>During state synchronization, a PCC MUST report all the existing
        Bidirectional LSP Associations to the Stateful PCE as per <xref
	target="RFC8697"/>.  After the state synchronization, the PCE MUST 
	remove all previous
	Bidirectional LSP Associations absent in the report.</t>
      </section>

      <section anchor="sect-5.7" title="Error Handling">
        <t>If a PCE speaker receives an LSP with a 
        Bidirectional LSP Association Type that it does not support, 
        the PCE speaker MUST send PCErr with Error-Type =
        26 (Association Error) and Error-Value = 1 (Association Type
        is not supported).</t>

        <t>An LSP (forward or reverse) cannot be part of more than one
        Bidirectional LSP Association. If a PCE speaker receives an LSP
        not complying to this rule, the PCE speaker MUST send PCErr with Error-Type =
        26 (Association Error) and Error-Value = TBD4 (Bidirectional LSP
        Association - Group Mismatch).</t>

        <t>The LSPs (forward or reverse) in a Single-sided Bidirectional
        Association MUST belong to the same TE Tunnel (as defined in
        <xref target="RFC3209"/>). If a PCE speaker attempts to add an LSP in a
        Single-sided Bidirectional LSP Association for a different
        Tunnel, the PCE speaker MUST send PCErr with Error-Type = 26 (Association
        Error) and Error-Value = TBD5 (Bidirectional Association - Tunnel
        Mismatch).</t>

        <t>The PCEP Path Setup Type (PST) for RSVP-TE is set to
        'Path is set up using the RSVP-TE signaling protocol' (Value 0) 
        <xref target="RFC8408"/>. If a PCEP speaker receives a
        different PST value for the Bidirectional LSP Associations 
        defined in this document, the PCE speaker MUST return a PCErr message with Error-Type =
        26 (Association Error) and Error-Value = TBD6 (Bidirectional LSP
        Association - Path Setup Type Not Supported).</t>

        <t>A Bidirectional LSP Association cannot have both unidirectional 
        LSPs identified as Reverse LSPs or both LSPs
        identified as Forward LSPs. If a PCE speaker receives an LSP
        not complying to this rule, the PCE speaker MUST send PCErr with Error-Type =
        26 (Association Error) and Error-Value = TBD7 (Bidirectional LSP
        Association - Direction Mismatch).</t>

        <t>A Bidirectional LSP Association cannot have one unidirectional 
        LSP identified as co-routed and the other identified as non-co-routed. If a PCE speaker receives an LSP
        not complying to this rule, the PCE speaker MUST send PCErr with Error-Type =
        26 (Association Error) and Error-Value = TBD8 (Bidirectional LSP
        Association - Co-routed Mismatch).</t>

        <t>The unidirectional LSPs forming the Bidirectional
        LSP Association MUST have matching endpoint nodes in the reverse directions. 
        If a PCE speaker receives an LSP
        not complying to this rule, the PCE speaker MUST send PCErr with Error-Type =
        26 (Association Error) and Error-Value = TBD9 (Bidirectional LSP
        Association - Endpoint Mismatch).</t>

        <t>The processing rules as specified in Section 6.4 of <xref
        target="RFC8697"/> continue to apply to the Association Types defined
        in this document.</t>
      </section>
    </section>

    <section anchor="sect-6" title="Implementation Status">
      <t>[Note to the RFC Editor - remove this section before publication, as
      well as remove the reference to RFC 7942.]</t>

      <t>This section records the status of known implementations of the
      protocol defined by this specification at the time of posting of this
      Internet-Draft, and is based on a proposal described in <xref
      target="RFC7942"/>. The description of implementations in this section
      is intended to assist the IETF in its decision processes in progressing
      drafts to RFCs. Please note that the listing of any individual
      implementation here does not imply endorsement by the IETF. Furthermore,
      no effort has been spent to verify the information presented here that
      was supplied by IETF contributors. This is not intended as, and must not
      be construed to be, a catalog of available implementations or their
      features. Readers are advised to note that other implementations may
      exist.</t>

      <t>According to <xref target="RFC7942"/>, "this will allow reviewers and
      working groups to assign due consideration to documents that have the
      benefit of running code, which may serve as evidence of valuable
      experimentation and feedback that have made the implemented protocols
      more mature. It is up to the individual working groups to use this
      information as they see fit".</t>

      <section anchor="sect-6.1" title="Implementation">
        <t>The PCEP extensions defined in this document has been implemented
        by a vendor on their product. No further information is available at
        this time.</t>
      </section>
    </section>

    <section anchor="sect-7" title="Security Considerations">
      <t>The security considerations described in <xref target="RFC5440"/>,
      <xref target="RFC8231"/>, and <xref target="RFC8281"/> apply to the
      extensions defined in this document as well.</t>

      <t>Two new Association Types for the ASSOCIATION Object, Single-sided
      Bidirectional LSP Association and Double-sided Bidirectional LSP
      Association are introduced in this document. Additional security
      considerations related to LSP associations due to a malicious PCEP
      speaker is described in <xref target="RFC8697"/> and apply to these
      Association Types. Hence, securing the PCEP session using Transport
      Layer Security (TLS) <xref target="RFC8253"/> is RECOMMENDED.</t>
    </section>

    <section anchor="sect-8" title="Manageability Considerations">
      <section anchor="sect-8.1" title="Control of Function and Policy">
        <t>The mechanisms defined in this document do not imply any control or
        policy requirements in addition to those already listed in <xref
        target="RFC5440"/>, <xref target="RFC8231"/>, and <xref
        target="RFC8281"/>.</t>
      </section>

      <section anchor="sect-8.2" title="Information and Data Models">
        <t><xref target="RFC7420"/> describes the PCEP MIB, there are no new
        MIB Objects defined for LSP associations.</t>

        <t>The PCEP YANG module <xref target="I-D.ietf-pce-pcep-yang"/>
        defines data model for LSP associations.</t>
      </section>

      <section anchor="sect-8.3" title="Liveness Detection and Monitoring">
        <t>The mechanisms defined in this document do not imply any new
        liveness detection and monitoring requirements in addition to those
        already listed in <xref target="RFC5440"/>, <xref target="RFC8231"/>,
        and <xref target="RFC8281"/>.</t>
      </section>

      <section anchor="sect-8.4" title="Verify Correct Operations">
        <t>The mechanisms defined in this document do not imply any new
        operation verification requirements in addition to those already
        listed in <xref target="RFC5440"/>, <xref target="RFC8231"/>, and
        <xref target="RFC8281"/>.</t>
      </section>

      <section anchor="sect-8.5" title="Requirements On Other Protocols">
        <t>The mechanisms defined in this document do not add any new
        requirements on other protocols.</t>
      </section>

      <section anchor="sect-8.6" title="Impact On Network Operations">
        <t>The mechanisms defined in this document do not have any impact on
        network operations in addition to those already listed in <xref
        target="RFC5440"/>, <xref target="RFC8231"/>, and <xref
        target="RFC8281"/>.</t>
      </section>
    </section>

    <section anchor="sect-9" title="IANA Considerations">
      <section anchor="sect-9.1" title="Association Types">

    <t>This document defines two new Association Types, originally described in
    <xref target="RFC8697"/>.  IANA is requested to assign the following new values in the
    "ASSOCIATION Type Field" subregistry <xref target="RFC8697"/> within the "Path
    Computation Element Protocol (PCEP) Numbers" registry:</t>

        <figure>
          <artwork>
Type Name                                             Reference
---------------------------------------------------------------------
TBD1 Single-sided Bidirectional LSP Association      [This document]
TBD2 Double-sided Bidirectional LSP Association      [This document]
</artwork>
        </figure>
      </section>

      <section anchor="sect-9.2"
               title="Bidirectional LSP Association Group TLV">
        <t>This document defines a new TLV for carrying additional information
        of LSPs within a Bidirectional LSP Association. IANA is
        requested to add the assignment of a new value in the existing "PCEP
        TLV Type Indicators" registry as follows:</t>

        <figure>
          <artwork>
Value     Meaning                                   Reference
-------------------------------------------------------------------
 TBD3     Bidirectional LSP Association Group TLV   [This document]
</artwork>
        </figure>

        <section anchor="sect-9.2.1"
                 title="Flag Field in Bidirectional LSP Association Group TLV">
          <t>This document requests that a new sub-registry, named
          "Bidirectional LSP Association Group TLV Flag Field", is created
          within the "Path Computation Element Protocol (PCEP) Numbers"
          registry to manage the Flag field in the Bidirectional LSP
          Association Group TLV. New values are to be assigned by Standards
          Action <xref target="RFC8126"/>. Each bit should be tracked with the
          following qualities:</t>

          <t><list style="symbols">
              <t>Bit number (count from 0 as the most significant bit)</t>

              <t>Description</t>

              <t>Reference</t>
            </list></t>

          <t>The following values are defined in this document for the Flag
          field.</t>

          <figure>
            <artwork>
Bit No.     Description                   Reference
---------------------------------------------------------
 31         F - Forward LSP               [This document]
 30         R - Reverse LSP               [This document]
 29         C - Co-routed Path            [This document]
 0-28       Unassigned
</artwork>
          </figure>
        </section>
      </section>

      <section anchor="sect-9.3" title="PCEP Errors">
        <t>This document defines new Error value for Error Type 26
        (Association Error). IANA is requested to allocate new Error value
        within the "PCEP-ERROR Object Error Types and Values" sub-registry of
        the PCEP Numbers registry, as follows:</t>

        <figure>
          <artwork>
Error Type  Description                  Reference
---------------------------------------------------------
 26         Association Error

            Error value: TBD4            [This document]
            Bidirectional LSP Association - Group Mismatch

            Error value: TBD5            [This document]
            Bidirectional LSP Association - Tunnel Mismatch

            Error value: TBD6            [This document]
            Bidirectional LSP Association - Path Setup Type 
                                            Not Supported
 
            Error value: TBD7            [This document]
            Bidirectional LSP Association - Direction Mismatch

            Error value: TBD8            [This document]
            Bidirectional LSP Association - Co-routed Mismatch

            Error value: TBD9            [This document]
            Bidirectional LSP Association - Endpoint Mismatch

</artwork>
        </figure>
      </section>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      &RFC2119;

      &RFC3209;

      &RFC5440;

      &RFC7551;

      &RFC8126;

      &RFC8174;

      &RFC8231;

      &RFC8281;

      &RFC8537;

      &RFC8697;
    </references>

    <references title="Informative References">
      &RFC5654;

      &RFC7420;

      &RFC7942;

      &RFC8051;

      &RFC8253;

      &RFC8408;

      &I-D.ietf-pce-pcep-yang;
      &I-D.ietf-pce-pcep-stateful-pce-gmpls;
      &I-D.ietf-pce-sr-bidir-path;

    </references>

    <section anchor="acknowledgments" numbered="no" title="Acknowledgments">
      <t>The authors would like to thank Dhruv Dhody for various discussions
      on association groups and inputs to this document. The authors would
      also like to thank  Mike Taillon, Harish Sitaraman, Al Morton, and Marina Fizgeer for
      reviewing this document and providing valuable comments.</t>
    </section>
  </back>
</rfc>
