<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">

<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902"
     submissionType="IETF" category="std" consensus="true"
     docName="draft-ietf-pce-association-diversity-14" number="8800"
     obsoletes="" updates="" xml:lang="en" tocInclude="true" tocDepth="4"
     symRefs="true" sortRefs="true" version="3"> 


  <front>
    <title abbrev="PCEP Extension for LSP Diversity Constraint Signaling">Path
    Computation Element Communication Protocol (PCEP) Extension for Label
    Switched Path (LSP) Diversity Constraint Signaling </title>

    <seriesInfo name="RFC" value="8800"/>

    <author initials="S" surname="Litkowski" fullname="Stephane Litkowski">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <postal>
          <street/>
          <city/>
          <region/>
          <code/>
          <country/>
        </postal>
        <email>slitkows.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="S" surname="Sivabalan" fullname="Siva Sivabalan">
      <organization>Ciena Corporation</organization>
      <address>
        <postal/>
        <email>msiva282@gmail.com</email>
      </address>
    </author>
    <author initials="C" surname="Barth" fullname="Colby Barth">
      <organization>Juniper Networks</organization>
      <address>
        <postal>
          <street/>
          <city/>
          <region/>
          <code/>
          <country/>
        </postal>
        <email>cbarth@juniper.net</email>
      </address>
    </author>

    <author initials="M" surname="Negi" fullname="Mahendra Singh Negi">
      <organization>RtBrick India</organization>
      <address>
        <postal>
          <street>N-17L, Floor-1, 18th Cross Rd, HSR Layout Sector-3</street>
          <city>Bangalore</city>
          <region>Karnataka</region>
          <code>560102</code>
          <country>India</country>
        </postal>
        <email>mahend.ietf@gmail.com</email>
      </address>
    </author>
    <date year="2020" month="July"/>
    <area>Routing</area>
    <workgroup>PCE Working Group</workgroup>


<keyword>Disjoint</keyword>
<keyword>Disjointness</keyword>
<keyword>Association</keyword>

    <abstract>
      <t>
   This document introduces a simple mechanism to associate a group of Label
   Switched Paths (LSPs) via an extension to the Path Computation Element
   Communication Protocol (PCEP) with the purpose of computing diverse
   (disjointed) paths for those LSPs.  The proposed extension allows a Path
   Computation Client (PCC) to advertise to a Path Computation Element (PCE)
   that a particular LSP belongs to a particular Disjoint Association Group; thus, the PCE
   knows that the LSPs in the same group need to be disjoint from each
   other.</t>
    </abstract>
  </front>
  <middle>
    <section toc="default" numbered="true">
      <name>Introduction</name>
      <t>
   <xref target="RFC5440" format="default"/> describes the Path Computation
   Element Communication 
   Protocol (PCEP), which enables the communication between a Path
   Computation Client (PCC) and a Path Control Element (PCE) or between
   two PCEs based on the PCE architecture <xref target="RFC4655"
   format="default"/>. 
      </t>
      <t>
   The PCEP Extensions for Stateful PCE Model <xref target="RFC8231" format="default"/> 
   describes a set of extensions to PCEP to enable active control of
   MPLS-TE and GMPLS tunnels. 
   <xref target="RFC8281" format="default"/>
   describes the setup and teardown of PCE-initiated LSPs under the
   active stateful PCE model, without the need for local configuration
   on the PCC, thus allowing for a dynamic network. 
      </t>
      <t><xref target="RFC8697" format="default"/> introduces a generic
   mechanism to create a grouping of LSPs in the context of a PCE that can
   then be used to 
   define associations between a set of LSPs and a set of attributes (such
   as configuration parameters or behaviors) and is equally applicable
   to the active and passive modes of a stateful PCE <xref target="RFC8231"
   format="default"/> or a stateless PCE <xref target="RFC4655"
   format="default"/>.</t> 

      <t>This document specifies a PCEP extension to signal that a set of LSPs
      in a particular group should use diverse (disjointed) paths, including
      the requested type of diversity.  Sections <xref target="mot"
      format="counter"/> and <xref target="app" format="counter"/> describe
      the property and use of a Disjoint Association Group.  A PCC can use
      this extension to signal to a PCE that a particular LSP belongs to a
      particular Disjoint Association Group.  When a PCE receives LSP states
      belonging to the same Disjoint Association Group from some
      PCCs, the PCE should ensure that the LSPs within the group are disjoint
      from each other.
      </t>
      <section toc="default" numbered="true">
        <name>Requirements Language</name>
        <t>
    The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>",
    "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL 
    NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>",
    "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", 
    "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are
    to be interpreted as 
    described in BCP&nbsp;14 <xref target="RFC2119"/> <xref target="RFC8174"/>
    when, and only when, they appear in all capitals, as shown here.
        </t>
      </section>
    </section>
    <section toc="default" numbered="true">
      <name>Terminology</name>
      <t>The following terminology is used in this document.</t>
      <dl newline="false" spacing="normal" indent="10">
       

        <dt>DAT:</dt>
        <dd>Disjoint Association Type</dd>
        <dt>DAG:</dt>
        <dd>Disjoint Association Group</dd>
        <dt>MPLS:</dt>
        <dd>Multiprotocol Label Switching</dd>
        <dt>OF:</dt>
        <dd>Objective Function</dd>
        <dt>PCC:</dt>
        <dd>Path Computation Client. Any client application requesting a
            path computation to be performed by a Path Computation Element.</dd>
        <dt>PCE:</dt>
        <dd>Path Computation Element.  An entity (component, application,
            or network node) that is capable of computing a network path or
	route based on a network graph and applying computational
	constraints.</dd> 
        <dt>PCEP:</dt>
        <dd>Path Computation Element Communication Protocol</dd>
        <dt>PLSP-ID:</dt>
        <dd>PCEP-specific identifier for the LSP</dd>
        <dt>SRLG:</dt>
        <dd>Shared Risk Link Group</dd>
      </dl>
    </section>
    <section toc="default" anchor="mot" numbered="true">
      <name>Motivation</name>
      <t>Path diversity is a very common use case in today's IP/MPLS networks,
      especially for layer 2 transport over MPLS. 
   A customer may request that the operator provide two end-to-end disjoint
   paths across the operator's IP/MPLS core.  
   The customer may use these paths as primary/backup or active/active
   configuration. 
      </t>
      <t>Different levels of disjointness may be offered: 
      </t>
      <ul spacing="normal">
        <li>Link disjointness: the paths of the associated LSPs should transit
	different links (but may use common nodes or different links that may
	have some shared fate).</li>
        <li>Node disjointness: the paths of the associated LSPs should transit
	different nodes (but may use different links that may have some shared
	fate).</li>
        <li>SRLG disjointness: the paths of the associated LSPs should transit
	different links that do not share fate (but may use common transit
	nodes).</li>
        <li>Node+SRLG disjointness: the paths of the associated LSPs should
	transit different links that do not have any common shared fate and
	should transit different nodes.</li>
      </ul>
      <t>
   The associated LSPs may originate from the same or different
   head end(s) and may terminate at the same or different tail end(s). 
      </t>
    </section>
    <section toc="default" anchor="app" numbered="true">
      <name>Applicability</name>
      <figure>
        <name>Disjoint Paths with Different Head Ends and
	Tail Ends</name> 
        <artwork name="" type="" align="left" alt=""><![CDATA[
         _________________________________________
        /                                         \
       /        +------+                           \
      |         | PCE  |                            |
      |         +------+                            |
      |                                             |
      |          ***********************>           |
      | +------+           10             +------+  |
CE1 ****| PE 1 | ----- R1 ---- R2 ------- | PE 2 |**** CE2
      | +------+       |        |         +------+  |
      |                |        |                   |
      |                |        |                   |
      | +------+       |        |         +------+  |
CE3 ****| PE 3 | ----- R3 ---- R4 ------- | PE 4 |**** CE4
      | +------+ ***********************> +------+  |
      |                                             |
       \                                           /
        \_________________________________________/
    
]]></artwork>
      </figure>
      <t>
   In the figure above, let us consider that the customer wants to have two
   disjoint paths, one between CE1 and CE2 and one between CE3 and CE4. From
   an IP/MPLS network point view, in this example, the CEs are connected to
   different PEs to maximize their disjointness. 
   When LSPs originate from different head ends, distributed computation of
   diverse paths can be difficult, whereas computation via a centralized PCE
   ensures path disjointness, correctness, and simplicity. 
      </t>
      <t><xref target="svec" format="default"/> describes the relationship
      between the Disjoint Association Group (DAG) and Synchronization VECtor
      (SVEC) object.</t> 
<t>
The PCEP extension for stateful PCE <xref target="RFC8231" format="default"/> 
defined new PCEP messages -- Path Computation Report (PCRpt), Path Computation
Update (PCUpd), and Path Computation Initiate (PCInitiate) <xref
target="RFC8281" format="default"/>. These messages use a PLSP-ID in the LSP
object for identification. 


Moreover, to allow diversity between LSPs originating from different PCCs, the
generic mechanism to create a grouping of LSPs that is equally applicable to
the active and passive modes of a stateful PCE is described in <xref
target="RFC8697" format="default"/>.</t>
      <t>
Using the extension to PCEP defined in this document, the PCC uses the
extension defined in <xref target="RFC8697" format="default"/> to indicate
that a group of LSPs are required to be disjoint; such indication should
include disjointness parameters like the type of disjointness, the Disjoint
Association Group identifiers, and any customization parameters according to the
configured local policy.</t>
      <t>
The management of the Disjoint Association Group IDs will be a key point for the operator
as the Association ID field is limited to 65535. The local configuration of
the IPv4/IPv6 Association Source, or Global Association Source/Extended
Association ID, can overcome this limitation, as described in <xref
target="RFC8697" format="default"/>. 
When a PCC or PCE initiates all the LSPs in a particular Disjoint Association Group, it
can set the IPv4/IPv6 Association Source as one of its own IP address. When
disjoint LSPs are initiated from different head ends, the Association Source
could be the PCE address or any other unique value to identify the DAG. 
</t>
      <figure>
        <name>Sample Use Cases for Carrying Disjoint Association Group over
	PCEP Session</name> 
        <artwork name="" type="" align="left" alt=""><![CDATA[                                            
        Initiate Disjoint LSPs                    
                 |                                       
                 |                       PCReq/PCRpt
                 V                        {DAG Y}      
              +-----+                ----------------> +-----+
   _ _ _ _ _ _| PCE |               |                  | PCE |
  |           +-----+               |      ----------> +-----+
  | PCInitiate                      |     |    PCReq/PCRpt
  |{DAG X}                          |     | {DAG Y}
  |                                 |     |
  |              .-----.            |     |         .-----.
  |             (       )           | +-----+      (       )
  |         .--(         )--.       | |PCC 2|--.--(         )--.
  V        (                 )      | +-----+ (                 )
+---+     (                  )      |        (                  )
|PCC|----(   (G)MPLS network )   +-----+    ( (G)MPLS network   )
+---+    (                   )   |PCC 1|-----(                  )
{DAG X}   (                 )    +-----+      (                )
           '--(         )--'                   (           )--'
               (       )                         (        )
                '-----'                            '-----'

Case 1: Disjointness initiated by   Case 2: Disjointness initiated by
    PCE and enforced by PCC              PCC and enforced by PCE
]]></artwork>
      </figure>

      <t>The Disjoint Association Group within a PCEP messages is used for:
      </t>
      <ul spacing="normal">
        <li>Configuration: Used to communicate the configured disjoint
	requirement to a PCEP peer.</li> 
        <li>Status: Used to communicate the status of the computed
	disjointness.</li> 
      </ul>
    </section>
    <section toc="default" numbered="true">
      <name>Protocol Extension</name>
      <section anchor="encoding" toc="default" numbered="true">
        <name>Association Group</name>
        <t>As per <xref target="RFC8697" format="default"/>, LSPs
     are associated with other LSPs with which they interact by adding
     them to a common association group. As described in <xref
     target="RFC8697" format="default"/>, the association group is uniquely
	identified by the combination of the following fields in the ASSOCIATION
	object: Association Type, Association ID, Association Source, and (if
	present) Global Association Source or Extended Association ID.</t> 


        <t>This document defines a new Association type, called "Disjoint
        Association" (2), based on the generic ASSOCIATION object. This new
        Association type is also called "DAT", for "Disjoint Association
        Type".</t>

        <t><xref target="RFC8697" format="default"/> 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 DAT (2) <bcp14>MUST</bcp14> be done
	before using the disjoint association. Thus, the PCEP speaker <bcp14>MUST</bcp14>
	include the DAT in the ASSOC-Type-List TLV and <bcp14>MUST</bcp14> receive the same
	from the PCEP peer before using the Disjoint Association Group (DAG)
	in PCEP messages.</t> 
        <t>This Association type is considered to be both dynamic and
	operator-configured in nature. As per <xref target="RFC8697"
	format="default"/>, 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 <bcp14>MUST</bcp14> 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" format="default"/>.)</t>
        <t>A Disjoint Association Group can have two or more LSPs, but a PCE may be
	limited in the number of LSPs it can take into account when computing
	disjointness. 
   If a PCE receives more LSPs in the group than it can handle in its
	computation algorithm, it <bcp14>SHOULD</bcp14> apply disjointness computation to
	only a subset of LSPs in the group. The subset of disjoint LSPs will
	be decided by PCE as a local policy. Local polices <bcp14>MAY</bcp14> define the
	computational behavior for the other LSPs in the group.  For example,
	the PCE may provide no path, a shortest path, or a constrained path
	based on relaxing disjointness, etc. The disjoint status of the
	computed path is informed to the PCC via the DISJOINTNESS-STATUS TLV (see
	<xref target="tlvs" format="default"/>).</t> 
        <t>There are different types of disjointness identified by the flags
	(T, S, N, and L) in the DISJOINTNESS-CONFIGURATION TLV (see <xref
	target="tlvs" format="default"/>). All LSPs in a particular Disjoint
	Association Group <bcp14>MUST</bcp14> use the same combination of T, S, N, and L flags in the
	DISJOINTNESS-CONFIGURATION TLV.  If a PCEP peer receives a PCEP
	message for LSPs belonging to the same Disjoint Association Group but having an
	inconsistent combination of T, S, N, and L flags, the PCEP peer <bcp14>MUST NOT</bcp14>
	add the LSPs to the Disjoint Association Group and <bcp14>MUST</bcp14> reply with a PCErr with
	Error-Type 26 (Association Error) and Error-value 6 (Association
	information mismatch).</t> 
       
    <t>A particular LSP <bcp14>MAY</bcp14> be associated to multiple Disjoint
    Association Groups, but in that case, the PCE <bcp14>SHOULD</bcp14> try to
    consider all the Disjoint Association Groups during path computation, if
    possible. Otherwise, a local policy <bcp14>MAY</bcp14> define the
    computational behavior.

If a PCE does not support such a path computation, it <bcp14>MUST NOT</bcp14>
add the LSP into the association group and <bcp14>MUST</bcp14> return a PCErr with Error-Type 26
(Association Error) and Error-value 7 (Cannot join the association group).</t>
      </section>
      <section anchor="tlvs" toc="default" numbered="true">
        <name>Disjoint TLVs</name>


        <t>
    The Disjoint Association Group (ASSOCIATION object with Association type =
    2 for DAT) <bcp14>MUST</bcp14> carry the following TLV:
        </t>
        <ul spacing="normal">
          <li>DISJOINTNESS-CONFIGURATION TLV: Used to communicate some
	  disjointness configuration parameters. This is applicable for all
	  PCEP messages that include DAG.</li> 
        </ul>
        <t>
    In addition, the Disjoint Association Group (ASSOCIATION object with Association type
    = 2 for DAT) <bcp14>MAY</bcp14> carry the following TLVs:
        </t>
        <ul spacing="normal">
          <li>DISJOINTNESS-STATUS TLV: Used to communicate the status of the
	  computed disjointness. This is applicable for messages from a PCE to
	  a PCC only (i.e., PCUpd, PCInitiate, or PCRep messages).</li>


          <li>VENDOR-INFORMATION-TLV: Used to communicate arbitrary
	  vendor-specific behavioral information, described in <xref
	  target="RFC7470" format="default"/>.</li> 
          <li>OF-List TLV: Used to communicate the disjointness objective
	  function. See <xref target="Disjointness-objective-functions"
	  format="default"/>.</li> 
        </ul>
        <t>
    The DISJOINTNESS-CONFIGURATION TLV is shown in the following figure:
        </t>
<figure>
<name>DISJOINTNESS-CONFIGURATION TLV</name>
        <artwork name="" type="" align="left" alt=""><![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 = 46             |            Length             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                 Flags                               |T|P|S|N|L|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
</figure>


	<dl newline="false" spacing="normal">
        <dt>Type:</dt> 
	<dd>46</dd>
        <dt> Length:</dt>
	<dd>Fixed value of 4 bytes.</dd> 

            <dt>Flags:</dt>

            <dd><t><br/></t><dl newline="false" spacing="normal">
              <dt>L (Link Diverse) bit:</dt><dd>When set, this indicates that
              the computed paths within the Disjoint Association Group
              <bcp14>MUST NOT</bcp14> have any link in common.</dd>
              <dt>N (Node Diverse) bit:</dt><dd>When set, this indicates that
              the computed paths within the Disjoint Association Group
              <bcp14>MUST NOT</bcp14> have any node in common.</dd>
              <dt>S (SRLG Diverse) bit:</dt><dd>When set, this indicates that
              the computed paths within the Disjoint Association Group
              <bcp14>MUST NOT</bcp14> share any SRLG (Shared Risk Link
              Group).</dd>
              <dt>P (Shortest Path) bit:</dt><dd>When set, this indicates that the
	      computed path of the LSP <bcp14>SHOULD</bcp14> satisfy all the constraints and
	      objective functions first without considering the diversity
	      constraint. This means that all of the LSPs with P flag set in
	      the association group are computed first, as if the disjointness
	      constraint has not been configured; then, with those LSPs
	      fixed, the other LSPs with P flag unset in the association group
	      are computed by taking into account the disjointness
	      constraint. The role of P flag is further described with
	      examples in <xref target="P-Flag-Consideration"
	      format="default"/>.</dd> 
              <dt>T (Strict Disjointness) bit:</dt><dd>When set, if disjoint
              paths cannot be found, the PCE <bcp14>MUST</bcp14> return no
              path for LSPs that could not be disjoint. When unset, the PCE is
              allowed to relax disjointness by either applying a requested
              objective function (cf.&nbsp;<xref
              target="Disjointness-objective-functions" format="default"/>)
              or using the local policy if no objective function is requested
              (e.g., using a lower disjoint type (link instead of node) or
              fully relaxing disjointness constraint).  See <xref target="dis"
              format="default"/> for further details.</dd>
              <dt>Unassigned bits:</dt><dd>Unassigned bits are considered reserved. They <bcp14>MUST</bcp14> be set to
	      0 on transmission and <bcp14>MUST</bcp14> be ignored on receipt.</dd> 

	    </dl></dd>
        </dl>

        <t>
      If a PCEP speaker receives a Disjoint Association Group (ASSOCIATION object with
      Association type = 2 for DAT) without the DISJOINTNESS-CONFIGURATION TLV,
      it <bcp14>SHOULD</bcp14> reply with a PCErr Error-Type 6 (Mandatory Object missing) and
      Error-value 15 (DISJOINTNESS-CONFIGURATION TLV missing). 
        </t>
        <t>The DISJOINTNESS-STATUS TLV uses the same format as the
	DISJOINTNESS-CONFIGURATION TLV with a different type 47 (in the
	TLV). The L, N, and S flags are set if the respective disjointness
	criterion was requested and the computed paths meet it. The P flag
	indicates that the computed path is the shortest path (computed first
	without taking disjointness constraints into consideration but
	considering other constraints).</t> 
        <t>The T flag has no meaning in the DISJOINTNESS-STATUS TLV and <bcp14>MUST
	NOT</bcp14> be set while sending and <bcp14>MUST</bcp14> be ignored on receipt. 

        </t>
        <t>Any document defining a new flag for the
	DISJOINTNESS-CONFIGURATION TLV automatically defines a new flag with
	the same name and in the same location in DISJOINTNESS-STATUS TLV; the
	semantics of the flag in the DISJOINTNESS-STATUS TLV <bcp14>MUST</bcp14> be specified in
	the document that specifies the flag in the
	DISJOINTNESS-CONFIGURATION TLV. 
        </t>
      </section>
      <section anchor="Disjointness-objective-functions" numbered="true"
	       toc="default"> 
        <name>Disjointness Objective Functions</name>
        <t>An objective function (OF) <bcp14>MAY</bcp14> be applied to the disjointness
      computation to drive the PCE computation behavior.  In this case, the
      OF-List TLV (defined in <xref target="RFC5541" format="default"/>) is
      used as an optional TLV in the ASSOCIATION object. Whereas the
      PCEP OF-List TLV allows multiple OF-codes inside the TLV, a sender
      <bcp14>SHOULD</bcp14> include a single OF-code in the OF-List TLV when included in the
	Association Group, and the receiver <bcp14>MUST</bcp14> consider the first OF-code
	only and ignore others if included.</t>  


        <t>To minimize the common shared resources (Node, Link, or SRLG)
        between a set of paths during path computation, three new OF-codes are
        defined:</t>


        <t>MSL</t>
<ul empty="true"><li>
        <dl newline="false" spacing="compact">
          <dt>Name:</dt>
	  <dd>Minimize the number of Shared (common) Links.</dd>
          <dt>Objective Function Code:</dt>
	  <dd>15</dd>
          <dt>Description:</dt>
	  <dd>
	    <t>Find a set of paths such that it passes through the least
	    number of shared (common) links.</t>
            <ul spacing="compact">
              <li>A network comprises a set of N links {Li, (i=1...N)}.</li>
              <li>A path P passes through K links {Lpi,(i=1...K)}.</li>
              <li>A set of paths {P1...Pm} have L links that are
            common to more than one path {Lci,(i=1...L)}.</li>
              <li>Find a set of paths such that the value of L is
	      minimized.</li> 
            </ul>
	  </dd>
	</dl>
</li></ul>
  
      <t>MSS</t>
<ul empty="true"><li>
        <dl newline="false" spacing="compact">
          <dt>Name:</dt>
          <dd>Minimize the number of Shared (common) SRLGs.</dd>
          <dt>Objective Function Code:</dt>
          <dd>16</dd>
          <dt>Description:</dt>
          <dd>
            <t>Find a set of paths such that it passes through the least
	    number of shared (common) SRLGs. 
            </t>
            <ul spacing="compact">
              <li>A network comprises a set of N links {Li, (i=1...N)}.</li>
              <li>A path P passes through K links {Lpi,(i=1...K)} belonging to
	      unique M SRLGs {Spi,(i=1..M)}.</li>
              <li>A set of paths {P1...Pm} have L SRLGs that are
            common to more than one path {Sci,(i=1...L)}.</li>
              <li>Find a set of paths such that the value of L is
	      minimized.</li> 
            </ul>
          </dd>
        </dl>
</li></ul>

        <t>MSN</t>
<ul empty="true"><li>
        <dl newline="false" spacing="compact">
          <dt>Name:</dt>
          <dd>Minimize the number of Shared (common) Nodes.</dd>
          <dt>Objective Function Code:</dt>
          <dd>17</dd>
          <dt>Description:</dt>
          <dd>
            <t>Find a set of paths such that they pass through the least
	    number of shared (common) nodes. 
            </t>
            <ul spacing="compact">
              <li>A network comprises a set of N nodes {Ni, (i=1...N)}.</li>
              <li>A path P passes through K nodes {Npi,(i=1...K)}.</li>
              <li>A set of paths {P1...Pm} have L nodes that are
            common to more than one path {Nci,(i=1...L)}.</li>
              <li>Find a set of paths such that the value of L is
	      minimized.</li> 
            </ul>
          </dd>
        </dl>
      </li></ul>

        <t>If the OF-List TLV is included in the ASSOCIATION object, 
   the first OF-code inside the OF object <bcp14>MUST</bcp14> be one of the disjoint OFs
   defined in this document. If this condition is not met, the PCEP speaker
   <bcp14>MUST</bcp14> respond with a PCErr message with Error-Type 10 (Reception of an
   invalid object) and Error-value 32 (Incompatible OF code).</t>
      </section>
    
     <section toc="default" anchor="svec" numbered="true">
        <name>Relationship to SVEC</name>
        <t><xref target="RFC5440" format="default"/> defines a mechanism for
	the synchronization of a set of path computation requests by using the
	SVEC object, which specifies the list of synchronized requests that can
	be either dependent or independent.  The SVEC object identifies the
   relationship between the set of path computation requests, identified by
   'Request-ID-number' in the RP (Request Parameters) object.  <xref
   target="RFC6007" format="default"/> further clarifies the use of the SVEC
   list for synchronized path computations when computing dependent requests
   and describes a number of usage scenarios for SVEC lists within
	single-domain and multi-domain environments.</t>
        <t>The SVEC object includes a Flags field that indicates the potential
        dependency between the set of path computation requests in a similar
        way as the Flags field in the TLVs defined in this document.  The path
        computation request in the Path Computation Request (PCReq) message
        <bcp14>MAY</bcp14> use both the SVEC and ASSOCIATION objects to
        identify the related path computation request, as well as the DAG.
        The PCE <bcp14>MUST</bcp14> try to find a path that meets both the
        constraints.  It is possible that the diversity requirement in the
        association group is different from the one in the SVEC object.  The
        PCE <bcp14>MUST</bcp14> consider both the objects (including the flags
        set inside the objects) as per the processing rules and aim to find a
        path that meets both of these constraints. In case no such path is
        possible, the PCE <bcp14>MUST</bcp14> send a
	Path Computation Reply
        (PCRep) with a NO-PATH object indicating path computation failure, as
        per <xref target="RFC5440" format="default"/>. It should be noted that
        the LSPs in the association group can be fully same or partially
        overlapping with the LSPs grouped by the SVEC object in PCReq
        message.</t>
        <t>Some examples of usage are listed below:</t>
        <ul spacing="normal">
          <li>
        PCReq with SVEC object with node-diverse bit=1 (LSP1,LSP2) and DAG
	with S=1 (LSP1,LSP2) - both node- and SRLG-diverse path between LSP1 and
	LSP2. 
        </li>
          <li>
        PCReq with SVEC object with link-diverse bit=1 (LSP1,LSP2) and DAG
	with L=1 (LSP1,LSP3) - link-diverse paths between LSP1 and LSP2 and between
	LSP1 and LSP3. If the DAG is part of the stateful database, any
	future change in LSP3 will have an impact on LSP1. But any future
	change in LSP2 will have no impact on LSP1, as LSP2 is part of SVEC
	object (which is considered once on receipt of the PCReq message
	only).  
        </li>
        </ul>
        <section toc="default" anchor="svec-of" numbered="true">
          <name>SVEC and OF</name>
          <t>This document defines three new OF-codes in <xref
	  target="Disjointness-objective-functions" format="default"/> to
	  maximize diversity as much as possible. In other words, new OF-codes
	  allow specification of minimization of common shared resources
	  (Node, Link, or SRLG) among a set of paths during path
	  computation.</t> 
          <t>It may be interesting to note that the diversity flags in the
	  SVEC	object and OF for diversity can be used together. Some
	  examples of usage are listed below:</t>
          <ul spacing="normal">
            <li>SVEC object with node-diverse bit=1 - ensure full
	    node diversity.</li>
            <li>SVEC object with node-diverse bit=1 and OF=MSS - full node
	    diversity with as much SRLG diversity as possible.</li> 
            <li>SVEC object with domain-diverse bit=1 <xref target="RFC8685"/>; node-diverse bit=1, and
	    OF=MSS - full domain and node diversity with as much
	    SRLG diversity as possible.</li> 
            <li>SVEC object with node-diverse bit=1 and OF=MSN - ensure full
	    node diversity.</li>
          </ul>

          <t>In the last example above, it is interesting to note that "OF"
	  becomes redundant as "SVEC object" ensures full node diversity;
	  however, this specification does not prohibit redundant constraints
	  while using "SVEC object" and "OF" together for diversity.</t>
        </section>
      </section>
      <section toc="default" anchor="P-Flag-Consideration" numbered="true">
        <name>P Flag Considerations</name>
        <t>As mentioned in <xref target="tlvs" format="default"/>, the P flag
	(when set) indicates that the computed path of the LSP <bcp14>SHOULD</bcp14>
	satisfy all constraints and objective functions first without
	considering the diversity constraint.</t> 
        <t>This means that an LSP with the P flag set should be placed first, as if
	the disjointness constraint has not been configured, while the other
	LSPs in the association with the P flag unset should be placed by taking
	into account the disjointness constraint. Setting the P flag changes
	the relationship between LSPs to a one-sided relationship (LSP 1 with
	P=0 depends on LSP 2 with P=1, but LSP 2 with P=1 does not depend on
	LSP 1 with P=0). Multiple LSPs in the same Disjoint Association Group may have the
	P flag set. In such a case, those LSPs may not be disjoint from each
	other but will be disjoint from other LSPs in the group that have the
	P flag unset.</t> 
        <t>This could be required in some primary/backup scenarios where the
        primary path should use the more optimal path available (taking into
        account the other constraints).  When disjointness is computed, it is
        important for the algorithm to know that it should try to optimize the
        path of one or more LSPs in the Disjoint Association Group (for
        instance, the primary path), while other paths are allowed to be
        costlier (compared to a similar path without the disjointness
        constraint).  Without such a hint, the disjointness algorithm may set
        a path for all LSPs that may not completely fulfill the customer's
        requirement.</t>
        <figure anchor="fig4">
          <name>Example Topology with Six Internal Routers</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
         _________________________________________
        /                                         \
       /        +------+                           \
      |         | PCE  |                            |
      |         +------+                            |
      |                                             |
      |                                             |
      | +------+           10             +------+  |
CE1 ****| PE 1 | ----- R1 ---- R2 ------- | PE 2 |**** CE2
      | +------+       |        |         +------+  |
      |                |        |                   |
      |                |        |                   |
      | +------+       |        |         +------+  |
CE3 ****| PE 3 | ----- R3 ---- R4 ------- | PE 4 |**** CE4
      | +------+ \     |               /  +------+  |
      |           \    |     10       /             |
       \           +-- R5 --------- R6             /
        \_________________________________________/

]]></artwork>
        </figure>
<t>Note: In <xref target="fig4"/>, the cost of all the links is 1, unless explicitly marked otherwise.    
</t>
        <t>In the figure above, a customer has two dual-homed sites (CE1/CE3
	and CE2/CE4). Let us consider that this customer wants two link
	disjoint paths between the two sites. Due to physical meshing, the
	customer wants to use CE1 and CE2 as the primary (and CE3 and CE4 are
	hosted in a remote site for redundancy purpose).</t> 
        <t>Without any hint (constraint) provided, the PCE may compute the two
	link disjoint LSPs together, leading to PE1-&gt;PE2 using path
	PE1-&gt;R1-&gt;R2-&gt;PE2 and PE3-&gt;PE4 using
	PE3-&gt;R3-&gt;R4-&gt;PE4. In this case, even if the disjointness
	constraint is fulfilled, the path from PE1 to PE2 does not use the
	best optimal path available in the network (path delay may be higher);
	the customer requirement is thus not completely fulfilled.</t>
        <t>The usage of the P flag allows the PCE to know that a particular
	LSP should be tied to the best path, as if the disjointness constraint
	was not requested.</t> 
        <t>In our example, if the P flag is set to the LSP PE1-&gt;PE2, the
	PCE should use the path PE1-&gt;R1-&gt;R3-&gt;R4-&gt;R2-&gt;PE2 for
	this LSP, while the other LSP should be link disjoint from this
	path. The second LSP will be placed on PE3-&gt;R5-&gt;R6-&gt;PE4, as it
	is allowed to be costlier.</t> 
        <t>Driving the PCE disjointness computation may be done in other ways,
	for instance, setting a metric boundary reflecting a path delay
	boundary. Other constraints may also be used.</t> 

        <t>The P flag allows to simply express that the disjointness
	constraint should not make the LSP worst.</t> 
        <t>Any constraint added to a path disjointness computation may reduce
	the chance to find suitable paths. The usage of the P flag, as any
	other constraint, may prevent finding a disjoint path. In the example
	above, if we consider that router R5 is down and if PE1-&gt;PE2 has
	the P flag set, there is no room available to place PE3-&gt;PE4 (the
	link disjointness constraint cannot be fulfilled). If PE1-&gt;PE2 has
	the P flag unset, the algorithm may be able to place PE1-&gt;PE2 on the 
	R1-&gt;R2 link leaving room for PE3-&gt;PE4 using the R3-&gt;R4
	link. When using the P flag or any additional constraint on top of the
	disjointness constraint, the user should be aware that there is less
	chance to fulfill the disjointness constraint.</t> 
        <figure anchor="fig5">
          <name>Example Topology with Four Internal Routers</name>
          <artwork name="" type="" align="left" alt=""><![CDATA[
         _________________________________________
        /                                         \
       /        +------+                           \
      |         | PCE  |                            |
      |         +------+                            |
      |                                             |
      |                                             |
      | +------+           10             +------+  |
CE1 ****| PE 1 | ----- R1 ---- R2 ------- | PE 2 |**** CE2
      | +------+       |  \     |         +------+  |
      |                |   \2   |                   |
      |                |    \   |                   |
      | +------+       |     \  |         +------+  |
CE3 ****| PE 3 | ----- R3 ---- R4 ------- | PE 4 |**** CE4
      | +------+                          +------+  |
      |                                             |
       \                                           /
        \_________________________________________/

]]></artwork>
        </figure>
<t>Note: In <xref target="fig5"/>, the cost of all the links is 1, unless
explicitly marked otherwise. </t>

        <t>In the figure above, we still consider the same previous
	requirements, so PE1-&gt;PE2 LSP should be optimized (P flag set),
	while PE3-&gt;PE4 should be link disjoint and may use a costlier
	path.</t> 
        <t>Regarding PE1-&gt;PE2, there are two paths that are satisfying the
	constraints (ECMP): PE1-&gt;R1-&gt;R4-&gt;R2-&gt;PE2 (path 1) and
	PE1-&gt;R1-&gt;R3-&gt;R4-&gt;R2-&gt;PE2 (path 2). An implementation
	may choose one of the paths.</t> 
        <t>If the implementation elects only one path, there is a chance that
	picking up one path may prevent link disjointness. In our example, if
	path 2 is used for PE1-&gt;PE2, there is no room left for PE3-&gt;PE4,
	while if path 1 is used, PE3-&gt;PE4 can be placed on R3-&gt;R4
	link.</t> 
        <t>When the P flag is set for an LSP and when ECMPs are available, an
	implementation should aim to select a path that allows
	disjointness.</t> 
      </section>
      <section toc="default" anchor="dis" numbered="true">
        <name>Disjointness Computation Issues</name>
        <t>There may be some cases where the PCE is not able to provide a set
	of disjoint paths for one or more LSPs in the association.</t> 
        <t>When the T flag is set (Strict disjointness), if
	disjointness cannot be ensured for one or more LSPs, the PCE <bcp14>MUST</bcp14>
	reply to a PCReq with a 
	PCRep message containing a NO-PATH object. In case of a PCRpt
	message, the PCE <bcp14>MUST</bcp14> return a PCErr message with Error-Type 26
	(Association Error) and Error-value 7 (Cannot join the association group).</t>
        <t>In case of a network event leading to an impossible strict
	disjointness, the PCE <bcp14>MUST</bcp14> send a PCUpd message containing an empty
	Explicit Route Object (ERO) to the corresponding PCCs. In addition to
	the empty ERO object, 
	the PCE <bcp14>MAY</bcp14> add the NO-PATH-VECTOR TLV <xref target="RFC5440"
	format="default"/> in the LSP object.</t> 

        <t>This document adds new bits in the Flags field of the
        NO-PATH-VECTOR TLV:</t>
        <ul spacing="normal">
          <li>bit 11: When set, the PCE indicates that it could not find a
	  disjoint path for this LSP.</li> 
          <li>bit 10: When set, the PCE indicates that it does not support
	  the requested disjointness computation.</li> 
        </ul>
        <t>When the T flag is unset, the PCE is allowed to relax disjointness
        by applying a requested objective function (<xref
        target="Disjointness-objective-functions" format="default"/>) if
        specified. Otherwise, if no objective function is specified, the PCE
        is allowed to reduce the required level of disjointness as it deems
        fit. The actual level of disjointness of the paths computed by the PCE
        can be reported through the DISJOINTNESS-STATUS TLV by setting the
        appropriate flags in the TLV. While the DISJOINTNESS-CONFIGURATION TLV
        defines the desired level of disjointness required by configuration,
        the DISJOINTNESS-STATUS TLV defines the achieved level of disjointness
        computed.</t>
        <t>There are some cases where the PCE may need to completely relax the
	disjointness constraint in order to provide a path to all the LSPs
	that are part of the association. A mechanism that allows the PCE to
	fully relax a constraint is considered by the authors as more global
	to PCEP rather than linked to the disjointness use case. As a
	consequence, it is considered out of scope of the document. See
	<xref target="I-D.dhody-pce-stateful-pce-optional" format="default"/>
	for a proposed mechanism.</t> 
      </section>
    </section>
    <section toc="default" numbered="true">
      <name>Security Considerations</name>

      <t>This document defines one new PCEP Association type, which by itself
      does not add any new security concerns beyond those discussed in <xref
      target="RFC5440" format="default"/>, 
      <xref target="RFC8231" format="default"/>, <xref target="RFC7470"
      format="default"/>, and <xref target="RFC8697" format="default"/>. But
      adding of a spurious LSP into the Disjoint Association Group could
      lead to recomputation and setup of all LSPs in the group, which could
      be used to overwhelm the PCE and the network.</t> 
      <t> A spurious LSP can have flags that are inconsistent with those of
      the legitimate LSPs of the group and thus cause LSP allocation for the
      legitimate LSPs to fail with an error. Also, certain combinations of
      flags (notably, the 'T' bit) can result in conflicts that cannot be
      resolved.</t> 

      <t>Also, as stated in <xref target="RFC8697" format="default"/>, much of
      the information carried in the ASSOCIATION object reflects information
      that can also be derived from the LSP database, but association provides
      a much easier grouping of related LSPs and messages. This holds true for
      the DAT as well; thus, this could provide an adversary with the
      opportunity to eavesdrop on the relationship between the LSPs and
      understand the network topology.</t>
      <t>Thus, securing the PCEP session using Transport Layer Security (TLS)
      <xref target="RFC8253" format="default"/>, as per the recommendations
      and best current practices in BCP 195 <xref target="RFC7525"
      format="default"/>, is <bcp14>RECOMMENDED</bcp14>.</t> 
    </section>
    <section toc="default" numbered="true">
      <name>IANA Considerations</name>


      <section toc="default" numbered="true">
        <name>Association Type</name>
        <t>This document defines a new Association type, originally described
        in <xref target="RFC8697" format="default"/>. IANA has assigned the
        following new value in the "ASSOCIATION Type Field" subregistry <xref
        target="RFC8697" format="default"/> within the "Path Computation
        Element Protocol (PCEP) Numbers" registry: </t>
        <table align="center">
        <name>ASSOCIATION Type Field</name>
          <thead>
            <tr>
              <th align="left">Type</th>
              <th align="left">Name</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">2</td>
              <td align="left">Disjoint Association</td>
              <td align="left">RFC 8800</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section toc="default" numbered="true">
        <name>PCEP TLVs</name>
        <t> This document defines two new PCEP TLVs. IANA has assigned the
        following values in the "PCEP TLV Type Indicators" subregistry within
	the "Path Computation Element Protocol (PCEP)                
        Numbers" registry:</t>
        <table align="center">
        <name>PCEP TLV Type Indicators</name>
          <thead>
            <tr>
              <th align="left">TLV Type</th>
              <th align="left">TLV Name</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">46</td>
              <td align="left">DISJOINTNESS-CONFIGURATION</td>
              <td align="left">RFC 8800</td>
            </tr>
            <tr>
              <td align="left">47</td>
              <td align="left">DISJOINTNESS-STATUS</td>
              <td align="left">RFC 8800</td>
            </tr>
          </tbody>
        </table>

        <t>IANA has created a new subregistry, named
	"DISJOINTNESS-CONFIGURATION TLV Flag Field", within the
	"Path Computation Element Protocol (PCEP) Numbers" registry to manage
	the Flags field in the DISJOINTNESS-CONFIGURATION TLV. New values are
	to be assigned by Standards Action <xref target="RFC8126"
	format="default"/>. Each bit should be tracked with the following
	qualities:</t> 
        <ul spacing="normal">
          <li>Bit number (count from 0 as the most significant bit)</li>
          <li>Flag Name</li>
          <li>Reference</li>
        </ul>

<t>The initial contents of this subregistry are shown below:</t>

        <table anchor="Disjointness-Configuration-TLV-IANA" align="center">
          <name>DISJOINTNESS-CONFIGURATION TLV Flag Field</name>
          <thead>
            <tr>
              <th align="left">Bit</th>
              <th align="left">Name</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">31</td>
              <td align="left">L - Link Diverse</td>
              <td align="left">RFC 8800</td>
            </tr>
            <tr>
              <td align="left">30</td>
              <td align="left">N - Node Diverse</td>
              <td align="left">RFC 8800</td>
            </tr>
            <tr>
              <td align="left">29</td>
              <td align="left">S - SRLG Diverse</td>
              <td align="left">RFC 8800</td>
            </tr>
            <tr>
              <td align="left">28</td>
              <td align="left">P - Shortest Path</td>
              <td align="left">RFC 8800</td>
            </tr>
            <tr>
              <td align="left">27</td>
              <td align="left">T - Strict Disjointness</td>
              <td align="left">RFC 8800</td>
            </tr>
            <tr>
              <td align="left">0-26</td>
              <td align="left">Unassigned</td>
              <td align="left"></td>
            </tr>
          </tbody>
        </table>
      </section>

      <section toc="default" numbered="true">
        <name>Objective Functions</name>
        <t>This document defines three new objective functions.  IANA has made
        the following allocations in the "Objective Function"
        subregistry within the "Path Computation Element Protocol (PCEP)
        Numbers" registry:</t>
        <table align="center">
        <name>Objective Function</name>
          <thead>
            <tr>
              <th align="left">Code Point</th>
              <th align="left">Name</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">15</td>
              <td align="left">Minimize the number of Shared Links (MSL)</td>
              <td align="left">RFC 8800</td>
            </tr>
            <tr>
              <td align="left">16</td>
              <td align="left">Minimize the number of Shared SRLGs (MSS)</td>
              <td align="left">RFC 8800</td>
            </tr>
            <tr>
              <td align="left">17</td>
              <td align="left">Minimize the number of Shared Nodes (MSN)</td>
              <td align="left">RFC 8800</td>
            </tr>
          </tbody>
        </table>
      </section>

      <section toc="default" numbered="true">
        <name>NO-PATH-VECTOR Bit Flags</name>
        <t>This document defines new bits for the NO-PATH-VECTOR TLV in the
	"NO-PATH-VECTOR TLV Flag Field" subregistry of the "Path Computation
	Element Protocol (PCEP) Numbers" registry. IANA has made
	the following allocations: 
        </t>
        <table anchor="NO-PATH-VECTOR-TLV-IANA" align="center">
          <name>NO-PATH-VECTOR TLV Flag Field</name>
          <thead>
            <tr>
              <th align="left">Bit Number</th>
              <th align="left">Name</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">11</td>
              <td align="left">Disjoint path not found</td>
              <td align="left">RFC 8800</td>
            </tr>
            <tr>
              <td align="left">10</td>
              <td align="left">Requested disjoint computation not supported</td>
              <td align="left">RFC 8800</td>
            </tr>
          </tbody>
        </table>
      </section>
      <section toc="default" numbered="true">
        <name>PCEP-ERROR Codes</name>
        <t> 
   This document defines two new Error-values within existing Error-Types
   related to disjoint association.  IANA has allocated the following new
   Error-values in the "PCEP-ERROR Object Error Types and Values" subregistry
   within the "Path Computation Element Protocol (PCEP) Numbers" registry:</t>
        <table align="center">
        <name>PCEP-ERROR Object Error Types and Values</name>
          <thead>
            <tr>
              <th align="left">Error-Type</th>
              <th align="left">Meaning</th>
              <th align="left">Error-value</th>
              <th align="left">Reference</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">6</td>
              <td align="left">Mandatory Object missing</td>
              <td></td>
              <td align="left"><xref target="RFC5440" format="default"/></td>
            </tr>
            <tr>
              <td align="left"></td>
              <td align="left"></td>
              <td align="left">15: DISJOINTNESS-CONFIGURATION
	      TLV missing</td> 
              <td align="left">RFC 8800</td>
            </tr>
            <tr>
              <td align="left">10</td>
              <td align="left">Reception of an invalid object</td>
              <td></td>
              <td align="left"><xref target="RFC5440" format="default"/></td>
            </tr>
            <tr>
              <td align="left"></td>
              <td align="left"></td>
              <td align="left">32: Incompatible OF code</td>
              <td align="left">RFC 8800</td>
            </tr>
          </tbody>
        </table>

      </section>
    </section>
    <section toc="default" numbered="true">
      <name>Manageability Considerations</name>
      <section toc="default" numbered="true">
        <name>Control of Function and Policy</name>

        <t>An operator <bcp14>SHOULD</bcp14> be allowed to configure the
        Disjoint Association Groups and disjoint parameters at the PCEP peers
        and associate them with the LSPs.

The operator <bcp14>MUST</bcp14> be allowed to set the Operator-configured
Association Range. The operator <bcp14>SHOULD</bcp14> be allowed to set the
local policies to define various disjoint computational behavior at the
PCE.</t>
      </section>
      <section toc="default" numbered="true">
        <name>Information and Data Models</name>
        <t>An implementation <bcp14>SHOULD</bcp14> allow the operator to view the disjoint
	associations configured or created dynamically. Furthermore,
	implementations <bcp14>SHOULD</bcp14> allow to view disjoint associations reported by
	each peer and the current set of LSPs in this association. The PCEP
	YANG module <xref target="I-D.ietf-pce-pcep-yang" format="default"/>
	includes association group information.</t>
      </section>
      <section toc="default" numbered="true">
        <name>Liveness Detection and Monitoring</name>
        <t>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" format="default"/>.</t>
      </section>
      <section toc="default" numbered="true">
        <name>Verification of Correct Operations</name>
        <t>Apart from the operation
        verification requirements already listed in
        <xref target="RFC5440" format="default"/>, a PCEP implementation
   <bcp14>SHOULD</bcp14> provide parameters related to disjoint path computation, such as
	number of DAG, number of disjoint path computation failures, etc. A
	PCEP implementation <bcp14>SHOULD</bcp14> log failure events (e.g., incompatible
	Flags).</t> 
      </section>
      <section toc="default" numbered="true">
        <name>Requirements on Other Protocols</name>
        <t>Mechanisms defined in this document do not imply any new
	requirements on other protocols.</t>
      </section>
      <section toc="default" numbered="true">
        <name>Impact on Network Operations</name>
        <t>Mechanisms defined in <xref target="RFC5440" sectionFormat="of"
	section="8.6"/> also apply to PCEP extensions defined in this
	document. Additionally, a PCEP implementation <bcp14>SHOULD</bcp14> allow a limit to
	be placed on the number of LSPs that can belong to a DAG.</t>
      </section>
    </section>
  </middle>
  <back>
  
<displayreference target="I-D.ietf-pce-pcep-yang" to="PCEP-YANG"/>
<displayreference target="I-D.dhody-pce-stateful-pce-optional" to="PCE-OPTIONAL"/>

  <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8126.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5440.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5541.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7470.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8231.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8253.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8685.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8697.xml"/>


      </references>
      <references>
        <name>Informative References</name>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.4655.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6007.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7525.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.8281.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.ietf-pce-pcep-yang.xml"/>
        <xi:include href="https://xml2rfc.tools.ietf.org/public/rfc/bibxml3/reference.I-D.dhody-pce-stateful-pce-optional.xml"/>
      </references>
    </references>
    <section toc="default" numbered="false">
      <name>Acknowledgments</name>
      <t>A special thanks to the authors of
      <xref target="RFC8697" format="default"/>; this document borrows
      some text from it. The authors would also like to thank <contact
      fullname="Adrian Farrel"/> 
      and <contact fullname="Julien Meuric"/> for the valuable comments.</t> 
      <t>Thanks to <contact fullname="Emmanuel Baccelli"/> for the RTGDIR review.</t>
      <t>Thanks to <contact fullname="Dale Worley"/> for a detailed GENART review.</t>
      <t>Thanks to <contact fullname="Alvaro Retana"/>, <contact
      fullname="Benjamin Kaduk"/>, <contact fullname="Suresh Krishnan"/>,
      <contact fullname="Roman Danyliw"/>, <contact fullname="Alissa
      Cooper"/>, and <contact fullname="Éric Vyncke"/> for the IESG review. </t> 
    </section>
    <section toc="default" numbered="false">
      <name>Contributors</name>
<contact fullname="Dhruv Dhody">
  <organization>Huawei Technologies</organization>
  <address>
    <postal>
      <street>Divyashree Techno Park, Whitefiled</street>
      <city>Bangalore</city>
      <region>Karnataka</region>
      <code>560066</code>
      <country>India</country>
    </postal>
    <email>dhruv.ietf@gmail.com</email>
  </address>
</contact>

    </section>
  </back>
</rfc>
