PCE Working Group S. Litkowski
Internet-Draft Orange
Intended status: Standards Track S. Sivabalan
Expires: August 31, 2018 Cisco Systems, Inc.
C. Barth
Juniper Networks
D. Dhody
February 27, 2018

Path Computation Element communication Protocol extension for signaling LSP diversity constraint


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 paths for those LSPs. The proposed extension allows a PCC to advertise to a PCE the belonging of a particular LSP to a disjoint-group, thus the PCE knows that LSPs in the same group must be disjoint from each other.

Status of This Memo

This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.

Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.

Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."

This Internet-Draft will expire on August 31, 2018.

Copyright Notice

Copyright (c) 2018 IETF Trust and the persons identified as the document authors. All rights reserved.

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.

Table of Contents

1. Introduction

[RFC5440] 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 [RFC4655].

PCEP Extensions for Stateful PCE Model [RFC8231] describes a set of extensions to PCEP to enable active control of MPLS-TE and GMPLS tunnels. [RFC8281] 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.

[I-D.ietf-pce-association-group] introduces a generic mechanism to create a grouping of LSPs which can then be used to define associations between a set of LSPs and a set of attributes (such as configuration parameters or behaviours) and is equally applicable to the active and passive modes of a stateful PCE [RFC8231] or a stateless PCE [RFC5440].

This document specifies a PCEP extension to signal that a particular group of LSPs should use diverse paths including the requested type of diversity. A PCC can use this extension to signal to a PCE the belonging of a particular LSP to a disjoint-group. When a PCE receives LSP states belonging to the same disjoint-group from some PCCs, the PCE should ensure that the LSPs within the group are disjoint from each other.

1.1. Requirements Language

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].

2. Terminology

The following terminology is used in this document.

Label Switch Router.
Multiprotocol Label Switching.
Path Computation Client. Any client application requesting a path computation to be performed by a Path Computation Element.
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.
Path Computation Element Communication Protocol.
Shared Risk Link Group.

3. Motivation

Path diversity is a very common use case today in 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 IP/MPLS core. The customer may use those paths as primary/backup or active/active.

Different level of disjointness may be offered:

The associated LSPs may originate from the same or from different head-end(s) and may terminate at the same or different tail-end(s).

        /                                         \
       /        +------+                           \
      |         | PCE  |                            |
      |         +------+                            |
      |                                             |
      |          ***********************>           |
      | +------+           10             +------+  |
CE1 ****| PE 1 | ----- R1 ---- R2 ------- | PE 2 |**** CE2
      | +------+       |        |         +------+  |
      |                |        |                   |
      |                |        |                   |
      | +------+       |        |         +------+  |
CE3 ****| PE 3 | ----- R3 ---- R4 ------- | PE 4 |**** CE4
      | +------+ ***********************> +------+  |
      |                                             |
       \                                           /

Figure 1 - Disjoint paths with different head-ends and tail-ends

In the figure above, the customer wants to have two disjoint paths between CE1/CE2 and CE3/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.

[RFC5440] defines a mechanism for the synchronization of a set of path computation requests by using the SVEC (Synchronization VECtor) object, that specifies the list of synchronized requests that can either be dependent or independent. The SVEC object identify the relationship between the set of path computation requests, identified by 'Request-ID-number' in RP (Request Parameters) object. [RFC6007] further clarifies the use of the SVEC list for synchronized path computations when computing dependent requests as well as describes a number of usage scenarios for SVEC lists within single-domain and multi-domain environments.

The SVEC object includes a Flags field that indicates the potential dependency between the set of path computation request in a similar way as the Flags field in the TLVs defined in this document. The path computation request (PCReq) message MAY use both SVEC object to identify the related path computation request as well as to identify the diversity association group. The PCE MUST try to find a path that meets both the constraints. It is possible that the diversity set in the association group is different from the one in SVEC object, this might be true for the same LSP as well. The PCE would consider both the objects as per the processing rules and aim to find a path that meets both these constraints. In case no such path is possible (or the constraints are incompatible), the PCE MUST send a path computation reply (PCRep) with NO-PATH object indicating path computation failure as per [RFC5440].

The PCEP extension for stateful PCE [RFC8231] defined new PCEP messages - PCRpt, PCUpd and PCInitiate. These messages uses 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 as described in [I-D.ietf-pce-association-group] equally applicable to the active and passive modes of a stateful PCE is better suited.

Using PCEP, the PCC MUST indicate that disjoint path computation is required, such indication SHOULD include disjointness parameters such as the type of disjointness, the disjoint group-id, and any customization parameters according to the configured local policy. As mentioned previously, the extension described in [I-D.ietf-pce-association-group] is well suited to associated a set of LSPs with a particular disjoint-group.

The management of the disjoint group-ids will be a key point for the operator as the Association ID field is limited to 65535. The local configuration of IPv4/IPv6 association source, or Global Association Source/Extended Association ID should allow to overcome this limitation. For example, when a PCC or PCE initiates all the LSPs in a particular disjoint-group, it can set the IPv4/IPv6 association source can be set to one of its IP address. When disjoint LSPs are initiated from different head-ends, a unique association identifier SHOULD be used for those LSPs: this can be achieved by setting the IPv4/IPv6 source address to a common value (zero value can be used) as well as the Association ID.

          Initiate & Monitor LSP                       
                   |                          PCReq/PCRpt           
                   V                  {Disjoint-group Y}      
                +-----+                   ----------------> +-----+
     _ _ _ _ _ _| PCE |                  |                  | PCE |
    |           +-----+                  |      ----------> +-----+
    | PCInitiate                         |     |    PCReq/PCRpt
    |{Disjoint-group X}                  |     | {Disjoint-group Y}
    |                                    |     |
    |              .-----.               |     |         .-----.
    |             (       )              |  +----+      (       )
    |         .--(         )--.          |  |PE 1|--.--(         )--.
    V        (                 )         |  +----+ (                 )
  +---+     (                   )        |        (                   )
  |PCC|----(   (G)MPLS network    )   +----+     ( (G)MPLS network     )
  +---+     (                   )     |PE 3|------(                   )
Disjoint-group X               )      +----+       (                 )
{Monitor LSP} '--(         )--'                     '--(         )--'
                  (       )                             (       )
                   '-----'                               '-----'

 Case 1: Disjointness initiated by    Case 2: Disjointness initiated by
         PCE and enforced by PCC             PCC and enforced by PCE

Figure 2 - Sample use-cases for carrying disjoint-group over PCEP session

Using the disjoint-group within a PCUpd or PCInitiate may have two purposes:

4. Protocol extension

4.1. Association group

As per [I-D.ietf-pce-association-group], LSPs are associated with other LSPs with which they interact by adding them to a common association group. The Association ID will be used to identify the disjoint group a set of LSPs belongs to. This document defines a new Association type, based on the generic Association object -

The association type is considered to be both dynamic and operator-configured.

A disjoint group can have two or more LSPs. But a PCE may be limited in how many 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 SHOULD apply disjointness computation to only a subset of LSPs in the group. The subset of disjoint LSPs will be decided by the implementation.

Local polices on the PCC or PCE MAY 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.

Associating a particular LSP to multiple disjoint groups is authorized from a protocol perspective, however there is no insurance that the PCE will be able to compute properly the multi-disjointness constraint.

4.2. Mandatory TLV

The disjoint group MUST carry the following TLV:

In addition, the disjoint group MAY carry the following TLV in a PCUpd or PCRep message:

       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 = [TBD2]         |            Length             |
      |                 Flags                               |T|P|S|N|L|

The DISJOINTNESS-CONFIGURATION-TLV is shown in the following figure:

If a PCEP speaker receives a disjoint-group without DISJOINTNESS-CONFIGURATION-TLV, it SHOULD reply with a PCErr Error-type=6 (Mandatory Object missing) and Error-value=TBD7.

       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                               |T|P|S|N|L|

The DISJOINTNESS-STATUS-TLV uses the same format as the DISJOINTNESS-CONFIGURATION-TLV with a different type:

Any new flag defined for the DISJOINTNESS-CONFIGURATION-TLV MUST be automatically added to the DISJOINTNESS-STATUS-TLV.

4.3. Optional TLVs

The disjoint group MAY carry some optional TLVs including but not limited to:

4.4. Disjointness objective functions

An objective function MAY be applied to the disjointness computation to drive the PCE computation behavior. In this case, the OF-List TLV (defined in ([RFC5541]) is used as an optional TLV in the Association Group Object. The PCEP OF-List TLV allow multiple OF-Codes inside the TLV, a sender SHOULD include a single OF-Code in the OF-List TLV when included in the Association Group, and the receiver MUST consider the first OF-code only and ignore others if included.

To minimize the common shared resources (Node, Link or SRLG) between a set of paths during path computation three new OF codes are proposed:


* Name:
Minimize the number of shared (common) Links.
* Objective Function Code:
* Description:
Find a set of paths such that it passes through the least number of shared (common) links.


* Name:
Minimize the number of shared (common) SRLGs.
* Objective Function Code:
* Description:
Find a set of paths such that it passes through the least number of shared (common) SRLGs.


* Name:
Minimize the number of shared (common) Nodes.
* Objective Function Code:
* Description:
Find a set of paths such that it passes through the least number of shared (common) nodes.

[RFC5440] uses SVEC diversity flag for node, link or SRLG to describe the potential disjointness between the set of path computation requests used in PCEP protocol.

This document defines three new OF codes to maximize diversity as much as possible, in other words, minimize the common shared resources (Node,Link or SRLG) between a set of paths.

It may be interesting to note that the diversity flags in the SVEC object and OF for diversity can be used together. Some example of usage are listed below -

4.5. P-flag considerations

As mentioned in Section 4.2, the P-flag (when set) indicates that the computed path of the LSP SHOULD satisfies all constraints and objective functions first without considering the diversity constraint. 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 group (for instance the primary path) while other paths are allowed to be longer (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 fulfil the customer requirement.

        /                                         \
       /        +------+                           \
      |         | PCE  |                            |
      |         +------+                            |
      |                                             |
      |                                             |
      | +------+           10             +------+  |
CE1 ****| PE 1 | ----- R1 ---- R2 ------- | PE 2 |**** CE2
      | +------+       |        |         +------+  |
      |                |        |                   |
      |                |        |                   |
      | +------+       |        |         +------+  |
CE3 ****| PE 3 | ----- R3 ---- R4 ------- | PE 4 |**** CE4
      | +------+ \     |               /  +------+  |
      |           \    |     10       /             |
       \           +-- R5 --------- R6             /

Figure 3

In the figure above, a customer has two dual homed sites (CE1/CE3 and CE2/CE4). This customer wants two disjoint paths between the two sites. Due to physical meshings, the customer wants to use CE1 and CE2 as primary (for instance CE3 and CE4 are hosted in a remote site for redundancy purpose compared the customer hosts).

Without any hint (constraint) provided, the PCE may compute the two disjoint LSPs as a batch leading to PE1->PE2 using a path PE1->R1->R2->PE2 and PE3->PE4 using PE3->R3->R4->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 (RTD may be higher): the customer requirement is thus not completely fulfilled.

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.

In our example, if the P-Flag is set to the LSP PE1->PE2, the PCE should use the path PE1->R1->R3->R4->R2->PE2 for this LSP, while the other LSP should be disjoint from this path. The second LSP will be placed on PE3->R5->R6->PE4 as it is allowed to be longer.

Driving the PCE disjointness computation may be done in other ways by for instance setting a metric boundary reflecting an RTD boundary. Other constraints may also be used.

The P-Flag allows a simple expression that the disjointness constraint should not make the LSP worst.

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 to find a disjoint path. In the example above, if we consider that the router R5 is down, if PE1->PE2 has the P-flag set, there is no room available to place PE3->PE4 (the disjointness constraint cannot be fulfilled). If PE->PE2 has the P-flag unset, the algorithm may be able to place PE1->PE2 on R1->R2 link leaving a room for PE3->PE4 using the R3->R4 link. When using 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.

Multiple LSPs in the same disjoint 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 others LSPs in the group that have the P-flag unset.

        /                                         \
       /        +------+                           \
      |         | PCE  |                            |
      |         +------+                            |
      |                                             |
      |                                             |
      | +------+           10             +------+  |
CE1 ****| PE 1 | ----- R1 ---- R2 ------- | PE 2 |**** CE2
      | +------+       |  \     |         +------+  |
      |                |   \2   |                   |
      |                |    \   |                   |
      | +------+       |     \  |         +------+  |
CE3 ****| PE 3 | ----- R3 ---- R4 ------- | PE 4 |**** CE4
      | +------+                          +------+  |
      |                                             |
       \                                           /

Figure 4

In the figure above, we still consider the same previous requirements, so PE1->PE2 LSP should be optimized (P-flag set) while PE3->PE4 should be disjoint and may use a longer path.

Regarding PE1->PE2, there are two paths that are satisfying the constraints (ECMP): PE1->R1->R4->R2->PE2 (path 1) and PE1->R1->R3->R4->R2->PE2 (path 2). An implementation may choose one of the paths or even use boths (using both may happen in case Segment Routing TE is used, allowing ECMP).

If the implementation elects only one path, there is a chance that picking up one path may prevent disjointness. In our example, if path 2 is used for PE1->PE2, there is no room left for PE3->PE4 while if path 1 is used, PE3->PE4 can be placed on R3->R4 link.

When P-flag is set for an LSP and when ECMPs are available, an implementation MAY select a path that allows disjointness.

4.6. Disjointness computation issues

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.

When the T-bit is set (Strict disjointness requested), if disjointness cannot be ensured for one or more LSPs, the PCE SHOULD reply with a PCUpd message containing an empty ERO. In addition to the empty ERO Object, the PCE MAY add the NO-PATH-VECTOR TLV ([RFC5440]) in the LSP Object.

This document adds new bits in the NO-PATH-VECTOR TLV:

When the T-bit is unset, the PCE is allowed to reduce the required level of disjointness. The actual level of disjointness 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 expected level of disjointness required by configuration, the DISJOINTNESS-STATUS-TLV defines the actual level of disjointness computed.

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 as out of scope of the document.

All LSPs in a particular disjoint group MUST use the same combination of T,S,N,L flags in the DISJOINTNESS-CONFIGURATION-TLV. If a PCE receives PCRpt messages for LSPs belonging to the same disjoint group but having an inconsistent combination of T,S,N,L flags, the PCE SHOULD NOT try to compute disjointness path and SHOULD reply a PCErr with Error-type 5 (Policy Violation) and Error-Value TBD6 (Inconsistent parameters in DISJOINTNESS-CONFIGURATION TLV) to all PCCs involved in the disjoint group.

5. Security Considerations

This document defines one new type for association, which do not add any new security concerns beyond those discussed in [RFC5440], [RFC8231] and [I-D.ietf-pce-association-group] in itself.

6. IANA Considerations

6.1. Association object Type Indicators

This document defines the following new association type originally defined in [I-D.ietf-pce-association-group].

	Value                     Name                             Reference

	TBD1                      Disjoint-group 
                              Association Type                 [This I.D.]

6.2. PCEP TLVs

This document defines the following new PCEP TLVs:

	Value     Name                                   Reference

	TBD3      DISJOINTNESS-STATUS-TLV                  [This I.D.]

IANA is requested to manage the space of flags carried in the DISJOINTNESS-CONFIGURATION-TLV defined in this document, numbering them from 0 as the least significant bit.

New bit numbers may be allocated in future.

IANA is requested to allocate the following bit numbers in the DISJOINTNESS-CONFIGURATION-TLV flag space:

	Bit Number     Name                                   Reference
		0          Link disjointness                      [This I.D.]
		1          Node disjointness                      [This I.D.]
		2          SRLG disjointness                      [This I.D.]
		3          Shortest-path                          [This I.D.]
		4          Strict disjointness                    [This I.D.]

6.3. Objective Functions

three new Objective Functions have been defined. IANA has made the following allocations from the PCEP "Objective Function" sub-registry:

   Value      Description                        Reference
    TBD4      MSL                                [This I.D.]
    TBD5      MSN                                [This I.D.]
    TBD6      MSS                                [This I.D.]

6.4. NO-PATH-VECTOR bit Flags

This documents defines new bits for the NO-PATH-VECTOR TLV in the "NO-PATH-VECTOR TLV Flag Field" sub-registry of the "Path Computation Element Protocol (PCEP) Numbers" registry:

	Bit Number     Name                                   Reference
	TBD7           Disjoint path not found                [This I.D.]

	TBD8           Requested disjointness                 [This I.D.]
                   computation not supported

6.5. PCEP-ERROR codes

  Error-Type     Meaning
      5          Policy violation
	             Error-value=TBD6: Inconsistent parameters 
                                   in DISJOINTNESS-CONFIGURATION TLV
      6          Mandatory Object missing
                 Error-value=TBD7: DISJOINTNESS-CONFIGURATION TLV missing

IANA is requested to allocate new Error Types and Error Values within the " PCEP-ERROR Object Error Types and Values" sub-registry of the PCEP Numbers registry, as follows:

7. Manageability Considerations

7.1. Control of Function and Policy

An operator MUST be allowed to configure the disjointness associations and parameters at PCEP peers and associate it with the LSPs.

7.2. Information and Data Models

[RFC7420] describes the PCEP MIB, there are no new MIB Objects for this document.

7.3. Liveness Detection and Monitoring

Mechanisms defined in this document do not imply any new liveness detection and monitoring requirements in addition to those already listed in [RFC5440].

7.4. Verify Correct Operations

Mechanisms defined in this document do not imply any new operation verification requirements in addition to those already listed in [RFC5440].

7.5. Requirements On Other Protocols

Mechanisms defined in this document do not imply any new requirements on other protocols.

7.6. Impact On Network Operations

Mechanisms defined in this document do not have any impact on network operations in addition to those already listed in [RFC5440].

8. Acknowledgments

A special thanks to author of [I-D.ietf-pce-association-group], this document borrow some of the text from it. Authors would also like to thank Adrian Farrel for his useful comments.

9. References

9.1. Normative References

[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997.
[RFC4655] Farrel, A., Vasseur, J. and J. Ash, "A Path Computation Element (PCE)-Based Architecture", RFC 4655, DOI 10.17487/RFC4655, August 2006.
[RFC5440] Vasseur, JP. and JL. Le Roux, "Path Computation Element (PCE) Communication Protocol (PCEP)", RFC 5440, DOI 10.17487/RFC5440, March 2009.
[RFC5541] Le Roux, JL., Vasseur, JP. and Y. Lee, "Encoding of Objective Functions in the Path Computation Element Communication Protocol (PCEP)", RFC 5541, DOI 10.17487/RFC5541, June 2009.
[I-D.ietf-pce-association-group] Minei, I., Crabbe, E., Sivabalan, S., Ananthakrishnan, H., Dhody, D. and Y. Tanaka, "PCEP Extensions for Establishing Relationships Between Sets of LSPs", Internet-Draft draft-ietf-pce-association-group-04, August 2017.
[RFC8231] Crabbe, E., Minei, I., Medved, J. and R. Varga, "Path Computation Element Communication Protocol (PCEP) Extensions for Stateful PCE", RFC 8231, DOI 10.17487/RFC8231, September 2017.

9.2. Informative References

[RFC7150] Zhang, F. and A. Farrel, "Conveying Vendor-Specific Constraints in the Path Computation Element Communication Protocol", RFC 7150, DOI 10.17487/RFC7150, March 2014.
[RFC7420] Koushik, A., Stephan, E., Zhao, Q., King, D. and J. Hardwick, "Path Computation Element Communication Protocol (PCEP) Management Information Base (MIB) Module", RFC 7420, DOI 10.17487/RFC7420, December 2014.
[RFC8281] Crabbe, E., Minei, I., Sivabalan, S. and R. Varga, "Path Computation Element Communication Protocol (PCEP) Extensions for PCE-Initiated LSP Setup in a Stateful PCE Model", RFC 8281, DOI 10.17487/RFC8281, December 2017.

Authors' Addresses

Stephane Litkowski Orange EMail: stephane.litkowski@orange.com
Siva Sivabalan Cisco Systems, Inc. 2000 Innovation Drive Kanata, Ontario K2K 3E8 Canada EMail: msiva@cisco.com
Colby Barth Juniper Networks EMail: cbarth@juniper.net
Dhruv Dhody Huawei EMail: dhruv.dhody@huawei.com