idnits 2.17.1 draft-ietf-pce-association-diversity-12.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (October 28, 2019) is 1641 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) -- Obsolete informational reference (is this intentional?): RFC 7525 (Obsoleted by RFC 9325) == Outdated reference: A later version (-23) exists of draft-ietf-pce-pcep-yang-12 Summary: 0 errors (**), 0 flaws (~~), 2 warnings (==), 2 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 PCE Working Group S. Litkowski 3 Internet-Draft S. Sivabalan 4 Intended status: Standards Track Cisco Systems, Inc. 5 Expires: April 30, 2020 C. Barth 6 Juniper Networks 7 M. Negi 8 Huawei Technologies 9 October 28, 2019 11 Path Computation Element Communication Protocol (PCEP) Extension for LSP 12 Diversity Constraint Signaling 13 draft-ietf-pce-association-diversity-12 15 Abstract 17 This document introduces a simple mechanism to associate a group of 18 Label Switched Paths (LSPs) via an extension to the Path Computation 19 Element (PCE) communication Protocol (PCEP) with the purpose of 20 computing diverse paths for those LSPs. The proposed extension 21 allows a Path Computation Client (PCC) to advertise to a PCE that a 22 particular LSP belongs to a particular disjoint-group, thus the PCE 23 knows that the LSPs in the same group need to be disjoint from each 24 other. 26 Status of This Memo 28 This Internet-Draft is submitted in full conformance with the 29 provisions of BCP 78 and BCP 79. 31 Internet-Drafts are working documents of the Internet Engineering 32 Task Force (IETF). Note that other groups may also distribute 33 working documents as Internet-Drafts. The list of current Internet- 34 Drafts is at https://datatracker.ietf.org/drafts/current/. 36 Internet-Drafts are draft documents valid for a maximum of six months 37 and may be updated, replaced, or obsoleted by other documents at any 38 time. It is inappropriate to use Internet-Drafts as reference 39 material or to cite them other than as "work in progress." 41 This Internet-Draft will expire on April 30, 2020. 43 Copyright Notice 45 Copyright (c) 2019 IETF Trust and the persons identified as the 46 document authors. All rights reserved. 48 This document is subject to BCP 78 and the IETF Trust's Legal 49 Provisions Relating to IETF Documents 50 (https://trustee.ietf.org/license-info) in effect on the date of 51 publication of this document. Please review these documents 52 carefully, as they describe your rights and restrictions with respect 53 to this document. Code Components extracted from this document must 54 include Simplified BSD License text as described in Section 4.e of 55 the Trust Legal Provisions and are provided without warranty as 56 described in the Simplified BSD License. 58 Table of Contents 60 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 61 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 62 2. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 3 63 3. Motivation . . . . . . . . . . . . . . . . . . . . . . . . . 4 64 4. Applicability . . . . . . . . . . . . . . . . . . . . . . . . 4 65 5. Protocol Extension . . . . . . . . . . . . . . . . . . . . . 7 66 5.1. Association Group . . . . . . . . . . . . . . . . . . . . 7 67 5.2. Disjoint TLVs . . . . . . . . . . . . . . . . . . . . . . 8 68 5.3. Disjointness Objective Functions . . . . . . . . . . . . 10 69 5.4. Relationship to SVEC . . . . . . . . . . . . . . . . . . 12 70 5.4.1. SVEC and OF . . . . . . . . . . . . . . . . . . . . . 12 71 5.5. P Flag Considerations . . . . . . . . . . . . . . . . . . 13 72 5.6. Disjointness Computation Issues . . . . . . . . . . . . . 16 73 6. Security Considerations . . . . . . . . . . . . . . . . . . . 17 74 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 17 75 7.1. Association Type . . . . . . . . . . . . . . . . . . . . 17 76 7.2. PCEP TLVs . . . . . . . . . . . . . . . . . . . . . . . . 18 77 7.3. Objective Functions . . . . . . . . . . . . . . . . . . . 19 78 7.4. NO-PATH-VECTOR Bit Flags . . . . . . . . . . . . . . . . 19 79 7.5. PCEP-ERROR Codes . . . . . . . . . . . . . . . . . . . . 19 80 8. Manageability Considerations . . . . . . . . . . . . . . . . 20 81 8.1. Control of Function and Policy . . . . . . . . . . . . . 20 82 8.2. Information and Data Models . . . . . . . . . . . . . . . 20 83 8.3. Liveness Detection and Monitoring . . . . . . . . . . . . 20 84 8.4. Verification of Correct Operations . . . . . . . . . . . 20 85 8.5. Requirements on Other Protocols . . . . . . . . . . . . . 21 86 8.6. Impact on Network Operations . . . . . . . . . . . . . . 21 87 9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 21 88 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 21 89 10.1. Normative References . . . . . . . . . . . . . . . . . . 21 90 10.2. Informative References . . . . . . . . . . . . . . . . . 22 91 Appendix A. Contributor Addresses . . . . . . . . . . . . . . . 24 92 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 24 94 1. Introduction 96 [RFC5440] describes the Path Computation Element communication 97 Protocol (PCEP) which enables the communication between a Path 98 Computation Client (PCC) and a Path Control Element (PCE), or between 99 two PCEs based on the PCE architecture [RFC4655]. 101 PCEP Extensions for Stateful PCE Model [RFC8231] describes a set of 102 extensions to PCEP to enable active control of MPLS-TE and GMPLS 103 tunnels. [RFC8281] describes the setup and teardown of PCE-initiated 104 LSPs under the active stateful PCE model, without the need for local 105 configuration on the PCC, thus allowing for a dynamic network. 107 [I-D.ietf-pce-association-group] introduces a generic mechanism to 108 create a grouping of LSPs in the context of a PCE which can then be 109 used to define associations between a set of LSPs and a set of 110 attributes (such as configuration parameters or behaviors) and is 111 equally applicable to the active and passive modes of a stateful PCE 112 [RFC8231] or a stateless PCE [RFC5440]. 114 This document specifies a PCEP extension to signal that a set of LSPs 115 in a particular group should use diverse paths, including the 116 requested type of diversity. A PCC can use this extension to signal 117 to a PCE that a particular LSP belongs to a particular disjoint- 118 group. When a PCE receives LSP states belonging to the same 119 disjoint-group from some PCCs, the PCE should ensure that the LSPs 120 within the group are disjoint from each other. 122 1.1. Requirements Language 124 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 125 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 126 "OPTIONAL" in this document are to be interpreted as described in BCP 127 14 [RFC2119] [RFC8174] when, and only when, they appear in all 128 capitals, as shown here. 130 2. Terminology 132 The following terminology is used in this document. 134 DAT: Disjoint Association Type. 136 DAG: Disjoint Association Group. 138 MPLS: Multiprotocol Label Switching. 140 OF: Objective Function. 142 PCC: Path Computation Client. Any client application requesting a 143 path computation to be performed by a Path Computation Element. 145 PCE: Path Computation Element. An entity (component, application, 146 or network node) that is capable of computing a network path or 147 route based on a network graph and applying computational 148 constraints. 150 PCEP: Path Computation Element communication Protocol. 152 SRLG: Shared Risk Link Group. 154 3. Motivation 156 Path diversity is a very common use case in today's IP/MPLS networks 157 especially for layer 2 transport over MPLS. A customer may request 158 that the operator provide two end-to-end disjoint paths across the 159 operator's IP/MPLS core. The customer may use these paths as 160 primary/backup or active/active configuration. 162 Different levels of disjointness may be offered: 164 o Link disjointness: the paths of the associated LSPs should transit 165 different links (but may use common nodes or different links that 166 may have some shared fate). 168 o Node disjointness: the paths of the associated LSPs should transit 169 different nodes (but may use different links that may have some 170 shared fate). 172 o SRLG disjointness: the paths of the associated LSPs should transit 173 different links that do not share fate (but may use common transit 174 nodes). 176 o Node+SRLG disjointness: the paths of the associated LSPs should 177 transit different links that do not have any common shared fate 178 and should transit different nodes. 180 The associated LSPs may originate from the same or from different 181 head-end(s) and may terminate at the same or different tail-end(s). 183 4. Applicability 184 _________________________________________ 185 / \ 186 / +------+ \ 187 | | PCE | | 188 | +------+ | 189 | | 190 | ***********************> | 191 | +------+ 10 +------+ | 192 CE1 ****| PE 1 | ----- R1 ---- R2 ------- | PE 2 |**** CE2 193 | +------+ | | +------+ | 194 | | | | 195 | | | | 196 | +------+ | | +------+ | 197 CE3 ****| PE 3 | ----- R3 ---- R4 ------- | PE 4 |**** CE4 198 | +------+ ***********************> +------+ | 199 | | 200 \ / 201 \_________________________________________/ 203 Figure 1 - Disjoint paths with different head-ends and tail-ends 205 In the figure above, let us consider that the customer wants to have 206 two disjoint paths, one between CE1 and CE2 and one between CE3 and 207 CE4. From an IP/MPLS network point view, in this example, the CEs 208 are connected to different PEs to maximize their disjointness. When 209 LSPs originate from different head-ends, distributed computation of 210 diverse paths can be difficult, whereas, computation via a 211 centralized PCE ensures path disjointness, correctness and 212 simplicity. 214 Section 5.4 describes the relationship between the Disjoint 215 Association Group (DAG) and Synchronization VECtor (SVEC) object. 217 The PCEP extension for stateful PCE [RFC8231] defined new PCEP 218 messages - Path Computation Report (PCRpt), Path Computation Update 219 (PCUpd) and Path Computation Initiate (PCInitiate) [RFC8281]. These 220 messages use PLSP-ID in the LSP object for identification. Moreover 221 to allow diversity between LSPs originating from different PCCs, the 222 generic mechanism to create a grouping of LSPs is described in 223 [I-D.ietf-pce-association-group] (that is equally applicable to the 224 active and passive modes of a stateful PCE). 226 Using the extension to PCEP defined in this document, the PCC uses 227 the [I-D.ietf-pce-association-group] extension to indicate that a 228 group of LSPs are required to be disjoint; such indication should 229 include disjointness parameters such as the type of disjointness, the 230 disjoint group identifiers, and any customization parameters 231 according to the configured local policy. 233 The management of the disjoint group IDs will be a key point for the 234 operator as the Association ID field is limited to 65535. The local 235 configuration of IPv4/IPv6 association source, or Global Association 236 Source/Extended Association ID allows to overcome this limitation as 237 described in [I-D.ietf-pce-association-group]. When a PCC or PCE 238 initiates all the LSPs in a particular disjoint-group, it can set the 239 IPv4/IPv6 association source as one of its own IP address. When 240 disjoint LSPs are initiated from different head-ends, the association 241 source could be the PCE address or any other unique value to identify 242 the DAG. 244 Initiate Disjoint LSPs 245 | 246 | PCReq/PCRpt 247 V {Disjoint-group Y} 248 +-----+ ----------------> +-----+ 249 _ _ _ _ _ _| PCE | | | PCE | 250 | +-----+ | ----------> +-----+ 251 | PCInitiate | | PCReq/PCRpt 252 |{Disjoint-group X} | | {Disjoint-group Y} 253 | | | 254 | .-----. | | .-----. 255 | ( ) | +-----+ ( ) 256 | .--( )--. | |PCC 2|--.--( )--. 257 V ( ) | +-----+ ( ) 258 +---+ ( ) | ( ) 259 |PCC|----( (G)MPLS network ) +-----+ ( (G)MPLS network ) 260 +---+ ( ) |PCC 1|-----( ) 261 Disjoint-group X ) +-----+ ( ) 262 '--( )--' '--( )--' 263 ( ) ( ) 264 '-----' '-----' 266 Case 1: Disjointness initiated by Case 2: Disjointness initiated by 267 PCE and enforced by PCC PCC and enforced by PCE 269 Figure 2 - Sample use-cases for carrying disjoint-group over PCEP 270 session 272 Using the disjoint-group within a PCEP messages is used for: 274 o Configuration: Used to communicate the configured disjoint 275 requirement to a PCEP peer. 277 o Status: Used to communicate the status of the computed 278 disjointness. 280 5. Protocol Extension 282 5.1. Association Group 284 As per [I-D.ietf-pce-association-group], LSPs are associated with 285 other LSPs with which they interact by adding them to a common 286 association group. As described in [I-D.ietf-pce-association-group] 287 the association group is uniquely identified by the combination of 288 these fields in the ASSOCIATION object: Association Type, Association 289 ID, Association Source, and (if present) Global Association Source or 290 Extended Association ID. 292 This document defines a new Association type, based on the generic 293 Association object: 295 o Association type = TBD1 Disjoint Association Type (DAT). 297 [I-D.ietf-pce-association-group] specifies the mechanism for the 298 capability advertisement of the association types supported by a PCEP 299 speaker by defining a ASSOC-Type-List TLV to be carried within an 300 OPEN object. This capability exchange for the Disjointness 301 Association Type (TBD1) MUST be done before using the disjointness 302 association. Thus the PCEP speaker MUST include the Disjointness 303 Association Type in the ASSOC-Type-List TLV before using the Disjoint 304 Association Group (DAG) in PCEP messages. 306 This association type is considered to be both dynamic and operator- 307 configured in nature. As per [I-D.ietf-pce-association-group], the 308 association group could be created by the operator manually on the 309 PCEP peers and the LSPs belonging to this associations is conveyed 310 via PCEP messages to the PCEP peer; or the association group could be 311 created dynamically by the PCEP speaker and both the association 312 group information and the LSPs belonging to the association group is 313 conveyed to the PCEP peer. The Operator-configured Association Range 314 MUST be set for this association-type to mark a range of association 315 identifiers that are used for operator-configured associations to 316 avoid any association identifier clash within the scope of the 317 association source. (Refer to [I-D.ietf-pce-association-group].) 319 A disjoint group can have two or more LSPs, but a PCE may be limited 320 in the number of LSPs it can take into account when computing 321 disjointness. If a PCE receives more LSPs in the group than it can 322 handle in its computation algorithm, it SHOULD apply disjointness 323 computation to only a subset of LSPs in the group. The subset of 324 disjoint LSPs will be decided by PCE as a local policy. Local 325 polices MAY define the computational behavior for the other LSPs in 326 the group. For example, the PCE may provide no path, a shortest 327 path, or a constrained path based on relaxing disjointness, etc. The 328 disjoint status of the computed path is informed to the PCC via 329 DISJOINTNESS-STATUS-TLV (see Section 5.2). 331 There are differet types of disjointness identified by the flags (T, 332 S, N, L) in the DISJOINTNESS-CONFIGURATION-TLV (see Section 5.2). 333 All LSPs in a particular disjoint group MUST use the same combination 334 of T, S, N, L flags in the DISJOINTNESS-CONFIGURATION-TLV. If a PCEP 335 peer receives a PCEP messages for LSPs belonging to the same disjoint 336 group but having an inconsistent combination of T, S, N, L flags, the 337 PCEP peer MUST NOT try to add the LSPs in disjoint group and MUST 338 reply with a PCErr with Error-type 26 (Association Error) and Error- 339 Value 6 (Association information mismatch). 341 A particular LSP MAY be associated to multiple disjoint groups, but 342 in that case, the PCE SHOULD try to consider all the disjoint groups 343 during path computation if possible. Otherwise a local policy MAY 344 define the computational behavior. If a PCE does not support such a 345 path computation it MUST NOT add the LSP into association group and 346 return a PCErr with Error-type 26 (Association Error) and Error-Value 347 7 (Cannot join the association group). 349 5.2. Disjoint TLVs 351 The disjoint group MUST carry the following TLV: 353 o DISJOINTNESS-CONFIGURATION-TLV: Used to communicate some 354 disjointness configuration parameters. 356 In addition, the disjoint group MAY carry the following TLV: 358 o DISJOINTNESS-STATUS-TLV: Used to communicate the status of the 359 computed disjointness. This is applicable for messages from PCE 360 to PCC (PCUpd, PCInitiate or PCRep message). 362 o VENDOR-INFORMATION-TLV: Used to communicate arbitrary vendor- 363 specific behavioral information, described in [RFC7470]. 365 o OF-List TLV: Used to communicate the disjointness objective 366 function. See Section 5.3. 368 The DISJOINTNESS-CONFIGURATION-TLV is shown in the following figure: 370 0 1 2 3 371 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 372 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 373 | Type = TBD2 | Length | 374 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 375 | Flags |T|P|S|N|L| 376 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 378 Type: TBD2. 380 Length: Fixed value of 4 bytes. 382 Flags: 384 * L (Link diverse) bit: when set, this indicates that the 385 computed paths within the disjoint group MUST NOT have any link 386 in common. 388 * N (Node diverse) bit: when set, this indicates that the 389 computed paths within the disjoint group MUST NOT have any node 390 in common. 392 * S (SRLG diverse) bit: when set, this indicates that the 393 computed paths within the disjoint group MUST NOT share any 394 SRLG (Shared Risk Link Group). 396 * P (Shortest path) bit: when set, this indicates that the 397 computed path of the LSP SHOULD satisfy all the constraints and 398 objective functions first without considering the diversity 399 constraint, this means that all of the LSPs with P flag set in 400 the association group are computed first as if the disjointness 401 constraint has not been configured, and then with those LSPs 402 fixed, the other LSPs with P flag unset in the association 403 group are computed by taking into account the disjointness 404 constraint. The role of P flag is further described with 405 examples in Section 5.5. 407 * T (Strict disjointness) bit: when set, if disjoint paths cannot 408 be found, PCE SHOULD return no path for LSPs that could not be 409 be disjoint. When unset, the PCE is allowed to relax 410 disjointness by Section 5.5 either applying a requested 411 objective function (cf. Section 5.3 below) or using the local 412 policy if no objective function is requested (e.g. using a 413 lower disjoint type (link instead of node) or fully relaxing 414 disjointness constraint). Further see Section 5.6 for details. 416 * Unassigned bits are considered reserved. They MUST be set to 0 417 on transmission and MUST be ignored on receipt. 419 If a PCEP speaker receives a disjoint-group without DISJOINTNESS- 420 CONFIGURATION-TLV, it SHOULD reply with a PCErr Error-type=6 421 (Mandatory Object missing) and Error-value=TBD8 (DISJOINTNESS- 422 CONFIGURATION-TLV missing). 424 The DISJOINTNESS-STATUS-TLV uses the same format as the DISJOINTNESS- 425 CONFIGURATION-TLV with a different type TBD3 (in the TLV). The L, N, 426 and S flags are set if the respective disjointness criterion was 427 requested and the computed paths meet it. The P flag indicates that 428 the computed path is the shortest path (computed first without taking 429 disjointness constraints into consideration, but considering other 430 constraints). 432 The T flag has no meaning in the DISJOINTNESS-STATUS-TLV and MUST NOT 433 be set while sending and MUST be ignored on receipt. 435 Any document defining a new flag for the DISJOINTNESS-CONFIGURATION- 436 TLV automatically defines a new flag with the same name and in the 437 same location in DISJOINTNESS-STATUS-TLV; the semantics of the flag 438 in DISJOINTNESS-STATUS-TLV MUST be specified in the document that 439 specifies the flag in DISJOINTNESS-CONFIGURATION-TLV. 441 5.3. Disjointness Objective Functions 443 An objective function (OF) MAY be applied to the disjointness 444 computation to drive the PCE computation behavior. In this case, the 445 OF-List TLV (defined in ([RFC5541]) is used as an optional TLV in the 446 Association Group Object. Whereas the PCEP OF-List TLV allows 447 multiple OF-codes inside the TLV, a sender SHOULD include a single 448 OF-code in the OF-List TLV when included in the Association Group, 449 and the receiver MUST consider the first OF-code only and ignore 450 others if included. 452 To minimize the common shared resources (Node, Link or SRLG) between 453 a set of paths during path computation three new OF-codes are 454 proposed: 456 MSL 458 * Name: Minimize the number of shared (common) Links. 460 * Objective Function Code: TBD4 462 * Description: Find a set of paths such that it passes through the 463 least number of shared (common) links. 465 * A network comprises a set of N links {Li, (i=1...N)}. 467 * A path P passes through K links {Lpi,(i=1...K)}. 469 * A set of paths {P1...Pm} have L links that are common to more 470 than one path {Lpi,(i=1...L)}. 472 * Find a set of paths such that the value of L is minimized. 474 MSS 476 * Name: Minimize the number of shared (common) SRLGs. 478 * Objective Function Code: TBD5 480 * Description: Find a set of paths such that it passes through the 481 least number of shared (common) SRLGs. 483 * A network comprises a set of N links {Li, (i=1...N)}. 485 * A path P passes through K links {Lpi,(i=1...K)} belonging to 486 unique M SRLGs {Spi,(i=1..M)}. 488 * A set of paths {P1...Pm} have L SRLGs that are common to more 489 than one path {Spi,(i=1...L)}. 491 * Find a set of paths such that the value of L is minimized. 493 MSN 495 * Name: Minimize the number of shared (common) Nodes. 497 * Objective Function Code: TBD6 499 * Description: Find a set of paths such that they pass through the 500 least number of shared (common) nodes. 502 * A network comprises a set of N nodes {Ni, (i=1...N)}. 504 * A path P passes through K nodes {Npi,(i=1...K)}. 506 * A set of paths {P1...Pm} have L nodes that are common to more 507 than one path {Npi,(i=1...L)}. 509 * Find a set of paths such that the value of L is minimized. 511 If the OF-list TLV is included in the Association Object, the OF-code 512 inside the OF Object MUST include one of the disjoint OFs defined in 513 this document. If this condition is not met, the PCEP speaker MUST 514 respond with a PCErr message with Error-Type=10 (Reception of an 515 invalid object) and Error-Value=TBD9 (Incompatible OF code). 517 5.4. Relationship to SVEC 519 [RFC5440] defines a mechanism for the synchronization of a set of 520 path computation requests by using the SVEC object, that specifies 521 the list of synchronized requests that can either be dependent or 522 independent. The SVEC object identifies the relationship between the 523 set of path computation requests, identified by 'Request-ID-number' 524 in RP (Request Parameters) object. [RFC6007] further clarified the 525 use of the SVEC list for synchronized path computations when 526 computing dependent requests as well as described a number of usage 527 scenarios for SVEC lists within single-domain and multi-domain 528 environments. 530 The SVEC object includes a Flags field that indicates the potential 531 dependency between the set of path computation requests in a similar 532 way as the Flags field in the TLVs defined in this document. The 533 path computation request in the PCReq message MAY use both the SVEC 534 and ASSOCIATION objects to identify the related path computation 535 request as well as the DAG. The PCE MUST try to find a path that 536 meets both the constraints. It is possible that the diversity 537 requirement in the association group is different from the one in the 538 SVEC object. The PCE MUST consider both the objects as per the 539 processing rules and aim to find a path that meets both of these 540 constraints. In case no such path is possible, the PCE MUST send a 541 path computation reply (PCRep) with a NO-PATH object indicating path 542 computation failure as per [RFC5440]. It should be noted that the 543 LSPs in the association group can be fully same or partially 544 overlapping with the LSPs grouped by the SVEC object in PCReq 545 message. 547 Some examples of usage are listed below: 549 o PCReq with SVEC object with node-diverse bit=1 (LSP1,LSP2) and DAG 550 with S=1 (LSP1,LSP2) - both node and SRLG diverse path between 551 LSP1, LSP2. 553 o PCReq with SVEC object with link-diverse bit=1 (LSP1,LSP2) and DAG 554 with L=1 (LSP1,LSP3) - link diverse paths between LSP1, LSP2, 555 LSP3. But any future change in LSP2 will have no impact. 557 5.4.1. SVEC and OF 559 This document defines three new OF-codes Section 5.3 to maximize 560 diversity as much as possible, in other words, new OF-codes allow 561 specification of minimization of common shared resources (Node, Link 562 or SRLG) among a set of paths during path computation. 564 It may be interesting to note that the diversity flags in the SVEC 565 object and OF for diversity can be used together. Some examples of 566 usage are listed below: 568 o SVEC object with node-diverse bit=1 - ensure full node-diversity. 570 o SVEC object with node-diverse bit=1 and OF=MSS - full node diverse 571 with as much as SRLG-diversity as possible. 573 o SVEC object with domain-diverse bit=1;link diverse bit=1 and 574 OF=MSS - full domain and node diverse path with as much as SRLG- 575 diversity as possible. 577 o SVEC object with node-diverse bit=1 and OF=MSN - ensure full node- 578 diversity. 580 In the last example above, it is interesting to note that "OF" 581 becomes redundant as "SVEC object" ensures full node-diversity, 582 however this specification does not prohibit redundant constraints 583 while using "SVEC object" and "OF" together for diversity. 585 5.5. P Flag Considerations 587 As mentioned in Section 5.2, the P flag (when set) indicates that the 588 computed path of the LSP SHOULD satisfies all constraints and 589 objective functions first without considering the diversity 590 constraint. 592 This means that an LSP with P flag set should be placed first as if 593 the disjointness constraint has not been configured, while the other 594 LSPs in the association with P flag unset should be placed by taking 595 into account the disjointness constraint. Setting P flag changes the 596 relationship between LSPs to a one-sided relationship (LSP 1 with P=0 597 depends of LSP 2 with P=1, but LSP 2 with P=1 does not depend of LSP 598 1 with P=0). Multiple LSPs in the same disjoint group may have the P 599 flag set. In such a case, those LSPs may not be disjoint from each 600 other but will be disjoint from other LSPs in the group that have the 601 P flag unset. 603 This could be required in some primary/backup scenarios where the 604 primary path should use the more optimal path available (taking into 605 account the other constraints). When disjointness is computed, it is 606 important for the algorithm to know that it should try to optimize 607 the path of one or more LSPs in the disjoint group (for instance the 608 primary path) while other paths are allowed to be costlier (compared 609 to a similar path without the disjointness constraint). Without such 610 a hint, the disjointness algorithm may set a path for all LSPs that 611 may not completely fulfill the customer's requirement. 613 _________________________________________ 614 / \ 615 / +------+ \ 616 | | PCE | | 617 | +------+ | 618 | | 619 | | 620 | +------+ 10 +------+ | 621 CE1 ****| PE 1 | ----- R1 ---- R2 ------- | PE 2 |**** CE2 622 | +------+ | | +------+ | 623 | | | | 624 | | | | 625 | +------+ | | +------+ | 626 CE3 ****| PE 3 | ----- R3 ---- R4 ------- | PE 4 |**** CE4 627 | +------+ \ | / +------+ | 628 | \ | 10 / | 629 \ +-- R5 --------- R6 / 630 \_________________________________________/ 632 Cost of all the links is 1, unless explicitly marked otherwise. 634 Figure 3 636 In the figure above, a customer has two dual homed sites (CE1/CE3 and 637 CE2/CE4). Let us consider that this customer wants two disjoint 638 paths between the two sites. Due to physical meshing, the customer 639 wants to use CE1 and CE2 as primary (and CE3 and CE4 are hosted in a 640 remote site for redundancy purpose). 642 Without any hint (constraint) provided, the PCE may compute the two 643 disjoint LSPs together, leading to PE1->PE2 using a path 644 PE1->R1->R2->PE2 and PE3->PE4 using PE3->R3->R4->PE4. In this case, 645 even if the disjointness constraint is fulfilled, the path from PE1 646 to PE2 does not use the best optimal path available in the network 647 (path delay may be higher): the customer requirement is thus not 648 completely fulfilled. 650 The usage of the P flag allows the PCE to know that a particular LSP 651 should be tied to the best path as if the disjointness constraint was 652 not requested. 654 In our example, if the P flag is set to the LSP PE1->PE2, the PCE 655 should use the path PE1->R1->R3->R4->R2->PE2 for this LSP, while the 656 other LSP should be disjoint from this path. The second LSP will be 657 placed on PE3->R5->R6->PE4 as it is allowed to be costlier. 659 Driving the PCE disjointness computation may be done in other ways, 660 for instance setting a metric boundary reflecting an path delay 661 boundary. Other constraints may also be used. 663 The P flag allows to simply express that the disjointness constraint 664 should not make the LSP worst. 666 Any constraint added to a path disjointness computation may reduce 667 the chance to find suitable paths. The usage of the P flag, as any 668 other constraint, may prevent to find a disjoint path. In the 669 example above, if we consider that the router R5 is down, if PE1->PE2 670 has the P flag set, there is no room available to place PE3->PE4 (the 671 disjointness constraint cannot be fulfilled). If PE1->PE2 has the P 672 flag unset, the algorithm may be able to place PE1->PE2 on R1->R2 673 link leaving a room for PE3->PE4 using the R3->R4 link. When using P 674 flag or any additional constraint on top of the disjointness 675 constraint, the user should be aware that there is less chance to 676 fulfill the disjointness constraint. 678 _________________________________________ 679 / \ 680 / +------+ \ 681 | | PCE | | 682 | +------+ | 683 | | 684 | | 685 | +------+ 10 +------+ | 686 CE1 ****| PE 1 | ----- R1 ---- R2 ------- | PE 2 |**** CE2 687 | +------+ | \ | +------+ | 688 | | \2 | | 689 | | \ | | 690 | +------+ | \ | +------+ | 691 CE3 ****| PE 3 | ----- R3 ---- R4 ------- | PE 4 |**** CE4 692 | +------+ +------+ | 693 | | 694 \ / 695 \_________________________________________/ 697 Cost of all the links is 1, unless explicitly marked otherwise. 699 Figure 4 701 In the figure above, we still consider the same previous 702 requirements, so PE1->PE2 LSP should be optimized (P flag set) while 703 PE3->PE4 should be disjoint and may use a costlier path. 705 Regarding PE1->PE2, there are two paths that are satisfying the 706 constraints (ECMP): PE1->R1->R4->R2->PE2 (path 1) and 707 PE1->R1->R3->R4->R2->PE2 (path 2). An implementation may choose one 708 of the paths. 710 If the implementation elects only one path, there is a chance that 711 picking up one path may prevent disjointness. In our example, if 712 path 2 is used for PE1->PE2, there is no room left for PE3->PE4 while 713 if path 1 is used, PE3->PE4 can be placed on R3->R4 link. 715 When P flag is set for an LSP and when ECMPs are available, an 716 implementation should aim to select a path that allows disjointness. 718 5.6. Disjointness Computation Issues 720 There may be some cases where the PCE is not able to provide a set of 721 disjoint paths for one or more LSPs in the association. 723 When the T flag is set (Strict disjointness requested), if 724 disjointness cannot be ensured for one or more LSPs, the PCE MUST 725 reply to a Path Computation Request (PCReq) with a Path Computation 726 Reply (PCRep) message containing a NO-PATH object. In case of PCRpt 727 message, the PCE MUST return a PCErr message with Error-Type 26 728 "Association Error" and Error-Value 7 "Cannot join the association 729 group". 731 In case of network event leading to an impossible strict 732 disjointness, the PCE MUST send a PCUpd message containing an empty 733 ERO to the corresponding PCCs. In addition to the empty ERO Object, 734 the PCE MAY add the NO-PATH-VECTOR TLV ([RFC5440]) in the LSP Object. 736 This document adds new bits in the NO-PATH-VECTOR TLV: 738 bit "TBD7": when set, the PCE indicates that it could not find a 739 disjoint path for this LSP. 741 bit "TBD8": when set, the PCE indicates that it does not support 742 the requested disjointness computation. 744 When the T flag is unset, the PCE is allowed to relax disjointness by 745 applying a requested objective function (Section 5.3) if specified. 746 Otherwise, if no objective function is specified, the PCE is allowed 747 to reduce the required level of disjointness as it deems fit. The 748 actual level of disjointness of the paths computed by the PCE can be 749 reported through the DISJOINTNESS-STATUS-TLV by setting the 750 appropriate flags in the TLV. While the DISJOINTNESS-CONFIGURATION- 751 TLV defines the desired level of disjointness required by 752 configuration, the DISJOINTNESS-STATUS-TLV defines the achieved level 753 of disjointness computed. 755 There are some cases where the PCE may need to completely relax the 756 disjointness constraint in order to provide a path to all the LSPs 757 that are part of the association. A mechanism that allows the PCE to 758 fully relax a constraint is considered by the authors as more global 759 to PCEP rather than linked to the disjointness use case. As a 760 consequence, it is considered as out of scope of the document. 762 6. Security Considerations 764 This document defines one new PCEP association type, which on itself 765 does not add any new security concerns beyond those discussed in 766 [RFC5440], [RFC8231] and [I-D.ietf-pce-association-group]. But, 767 adding of a spurious LSP into the disjointness association group 768 could lead to re-computation and set-up of all LSPs in the group, 769 that could be used to overwhelm the PCE and the network. 771 A spurious LSP can have flags that are inconsistent with those of the 772 legitimate LSPs of the group and thus cause LSP allocation for the 773 legitimate LSPs to fail with an error. 775 Also, as stated in [I-D.ietf-pce-association-group], much of the 776 information carried in the Disjointness Association object, as per 777 this document is not extra sensitive. It often reflects information 778 that can also be derived from the LSP Database, but association 779 provides a much easier grouping of related LSPs and messages. The 780 disjointness association could provide an adversary with the 781 opportunity to eavesdrop on the relationship between the LSPs. 783 Thus securing the PCEP session using Transport Layer Security (TLS) 784 [RFC8253], as per the recommendations and best current practices in 785 BCP 195 [RFC7525], is RECOMMENDED. 787 7. IANA Considerations 789 7.1. Association Type 791 This document defines a new Association type, originally described in 792 [I-D.ietf-pce-association-group]. IANA is requested to make the 793 assignment of a new value for the sub-registry "ASSOCIATION Type 794 Field" (request to be created in [I-D.ietf-pce-association-group]), 795 as follows: 797 +------------------+-----------------------------+-------------+ 798 | Association type | Association Name | Reference | 799 +------------------+-----------------------------+-------------+ 800 | TBD1 | Disjoint-group Association | [This.I-D] | 801 +------------------+-----------------------------+-------------+ 803 7.2. PCEP TLVs 805 This document defines the following new PCEP TLVs and the IANA is 806 requested to make the assignment of new values for the existing "PCEP 807 TLV Type Indicators" registry as follows: 809 +----------+---------------------------------+-------------+ 810 | TLV Type | TLV Name | Reference | 811 +----------+---------------------------------+-------------+ 812 | TBD2 | Disjointness Configuration TLV | [This.I-D] | 813 | TBD3 | Disjointness Status TLV | [This.I-D] | 814 +----------+---------------------------------+-------------+ 816 This document requests that a new sub-registry, named "Disjointness 817 Configuration TLV Flag Field", is created within the "Path 818 Computation Element Protocol (PCEP) Numbers" registry to manage the 819 Flag field in the Disjointness Configuration TLV. New values are to 820 be assigned by Standards Action [RFC8126]. Each bit should be 821 tracked with the following qualities: 823 o Bit number (count from 0 as the most significant bit) 825 o Flag Name 827 o Reference 829 +------------+-------------------------+-------------+ 830 | Bit Number | Name | Reference | 831 +------------+-------------------------+-------------+ 832 | 31 | L - Link Diverse | [This.I-D] | 833 | 30 | N - Node Diverse | [This.I-D] | 834 | 29 | S - SRLG Diverse | [This.I-D] | 835 | 28 | P - Shortest Path | [This.I-D] | 836 | 27 | T - Strict Disjointness | [This.I-D] | 837 +------------+-------------------------+-------------+ 839 Table 1: Disjointness Configuration TLV 841 7.3. Objective Functions 843 Three new Objective Functions have been defined in this document. 844 IANA is requested to make the following allocations from the PCEP 845 "Objective Function" sub-registry: 847 +------------+----------------------------------------+-------------+ 848 | Code Point | Name | Reference | 849 +------------+----------------------------------------+-------------+ 850 | TBD4 | Minimize the number of shared Links | [This.I-D] | 851 | | (MSL) | | 852 | TBD5 | Minimize the number of shared SRLGs | [This.I-D] | 853 | | (MSS) | | 854 | TBD6 | Minimize the number of shared Nodes | [This.I-D] | 855 | | (MSN) | | 856 +------------+----------------------------------------+-------------+ 858 7.4. NO-PATH-VECTOR Bit Flags 860 This documents defines new bits for the NO-PATH-VECTOR TLV in the 861 "NO-PATH-VECTOR TLV Flag Field" sub-registry of the "Path Computation 862 Element Protocol (PCEP) Numbers" registry. IANA is requested to make 863 the following allocation: 865 +------------+-----------------------------------------+------------+ 866 | Bit Number | Name | Reference | 867 +------------+-----------------------------------------+------------+ 868 | TBD7 | Disjoint path not found | [This.I-D] | 869 | TBD8 | Requested disjoint computation not | [This.I-D] | 870 | | supported | | 871 +------------+-----------------------------------------+------------+ 873 Table 2: NO-PATH-VECTOR TLV 875 7.5. PCEP-ERROR Codes 877 This document defines new Error-Value within existing Error-Type 878 related to path protection association. IANA is requested to 879 allocate new error values within the "PCEP-ERROR Object Error Types 880 and Values" sub-registry of the PCEP Numbers registry, as follows: 882 +----------+-------------------------+------------------------------+ 883 | Error- | Meaning | Reference | 884 | Type | | | 885 +----------+-------------------------+------------------------------+ 886 | 6 | Mandatory Object | [I-D.ietf-pce-association-gr | 887 | | missing | oup] | 888 | | Error-value=TBD8: | [This.I-D] | 889 | | DISJOINTNESS- | | 890 | | CONFIGURATION TLV | | 891 | | missing | | 892 | 10 | Reception of an invalid | [RFC5440] | 893 | | object | | 894 | | Error-value=TBD9: | [This.I-D] | 895 | | Incompatible OF code | | 896 +----------+-------------------------+------------------------------+ 898 8. Manageability Considerations 900 8.1. Control of Function and Policy 902 An operator SHOULD be allowed to configure the disjointness 903 association groups and disjoint parameters at the PCEP peers and 904 associate it with the LSPs. The Operator-configured Association 905 Range MUST be allowed to be set by the operator. Operator SHOULD be 906 allowed to set the local policies to define various disjoint 907 computational behavior at the PCE. 909 8.2. Information and Data Models 911 An implementation SHOULD allow the operator to view the disjoint 912 associations configured or created dynamically. Further 913 implementation SHOULD allow to view disjoint associations reported by 914 each peer, and the current set of LSPs in this association. The PCEP 915 YANG module [I-D.ietf-pce-pcep-yang] includes association groups 916 information. 918 8.3. Liveness Detection and Monitoring 920 Mechanisms defined in this document do not imply any new liveness 921 detection and monitoring requirements in addition to those already 922 listed in [RFC5440]. 924 8.4. Verification of Correct Operations 926 Mechanisms defined in this document do not imply any new operation 927 verification requirements in addition to those already listed in 928 [RFC5440]. 930 8.5. Requirements on Other Protocols 932 Mechanisms defined in this document do not imply any new requirements 933 on other protocols. 935 8.6. Impact on Network Operations 937 Mechanisms defined in [RFC5440], Section 8.6 also apply to PCEP 938 extensions defined in this document. Additionally, a PCEP 939 implementation SHOULD allow a limit to be placed on the number of 940 LSPs that can belong to a DAG. 942 9. Acknowledgments 944 A special thanks to authors of [I-D.ietf-pce-association-group], this 945 document borrow some of the text from it. Authors would also like to 946 thank Adrian Farrel and Julien Meuric for the valuable comments. 948 Thanks to Emmanuel Baccelli for RTGDIR reviews. 950 Thanks to Dale Worley for a detailed GENART review. 952 10. References 954 10.1. Normative References 956 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 957 Requirement Levels", BCP 14, RFC 2119, 958 DOI 10.17487/RFC2119, March 1997, 959 . 961 [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for 962 Writing an IANA Considerations Section in RFCs", BCP 26, 963 RFC 8126, DOI 10.17487/RFC8126, June 2017, 964 . 966 [RFC5440] Vasseur, JP., Ed. and JL. Le Roux, Ed., "Path Computation 967 Element (PCE) Communication Protocol (PCEP)", RFC 5440, 968 DOI 10.17487/RFC5440, March 2009, 969 . 971 [RFC5541] Le Roux, JL., Vasseur, JP., and Y. Lee, "Encoding of 972 Objective Functions in the Path Computation Element 973 Communication Protocol (PCEP)", RFC 5541, 974 DOI 10.17487/RFC5541, June 2009, 975 . 977 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 978 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 979 May 2017, . 981 [RFC8231] Crabbe, E., Minei, I., Medved, J., and R. Varga, "Path 982 Computation Element Communication Protocol (PCEP) 983 Extensions for Stateful PCE", RFC 8231, 984 DOI 10.17487/RFC8231, September 2017, 985 . 987 [I-D.ietf-pce-association-group] 988 Minei, I., Crabbe, E., Sivabalan, S., Ananthakrishnan, H., 989 Dhody, D., and Y. Tanaka, "Path Computation Element 990 Communication Protocol (PCEP) Extensions for Establishing 991 Relationships Between Sets of Label Switched Paths 992 (LSPs)", draft-ietf-pce-association-group-10 (work in 993 progress), August 2019. 995 10.2. Informative References 997 [RFC4655] Farrel, A., Vasseur, J., and J. Ash, "A Path Computation 998 Element (PCE)-Based Architecture", RFC 4655, 999 DOI 10.17487/RFC4655, August 2006, 1000 . 1002 [RFC6007] Nishioka, I. and D. King, "Use of the Synchronization 1003 VECtor (SVEC) List for Synchronized Dependent Path 1004 Computations", RFC 6007, DOI 10.17487/RFC6007, September 1005 2010, . 1007 [RFC7470] Zhang, F. and A. Farrel, "Conveying Vendor-Specific 1008 Constraints in the Path Computation Element Communication 1009 Protocol", RFC 7470, DOI 10.17487/RFC7470, March 2015, 1010 . 1012 [RFC7525] Sheffer, Y., Holz, R., and P. Saint-Andre, 1013 "Recommendations for Secure Use of Transport Layer 1014 Security (TLS) and Datagram Transport Layer Security 1015 (DTLS)", BCP 195, RFC 7525, DOI 10.17487/RFC7525, May 1016 2015, . 1018 [RFC8253] Lopez, D., Gonzalez de Dios, O., Wu, Q., and D. Dhody, 1019 "PCEPS: Usage of TLS to Provide a Secure Transport for the 1020 Path Computation Element Communication Protocol (PCEP)", 1021 RFC 8253, DOI 10.17487/RFC8253, October 2017, 1022 . 1024 [RFC8281] Crabbe, E., Minei, I., Sivabalan, S., and R. Varga, "Path 1025 Computation Element Communication Protocol (PCEP) 1026 Extensions for PCE-Initiated LSP Setup in a Stateful PCE 1027 Model", RFC 8281, DOI 10.17487/RFC8281, December 2017, 1028 . 1030 [I-D.ietf-pce-pcep-yang] 1031 Dhody, D., Hardwick, J., Beeram, V., and J. Tantsura, "A 1032 YANG Data Model for Path Computation Element 1033 Communications Protocol (PCEP)", draft-ietf-pce-pcep- 1034 yang-12 (work in progress), July 2019. 1036 Appendix A. Contributor Addresses 1038 Dhruv Dhody 1039 Huawei Technologies 1040 Divyashree Techno Park, Whitefield 1041 Bangalore, Karnataka 560066 1042 India 1044 EMail: dhruv.ietf@gmail.com 1046 Authors' Addresses 1048 Stephane Litkowski 1049 Cisco Systems, Inc. 1051 EMail: slitkows.ietf@gmail.com 1053 Siva Sivabalan 1054 Cisco Systems, Inc. 1055 2000 Innovation Drive 1056 Kanata, Ontario K2K 3E8 1057 Canada 1059 EMail: msiva@cisco.com 1061 Colby Barth 1062 Juniper Networks 1064 EMail: cbarth@juniper.net 1066 Mahendra Singh Negi 1067 Huawei Technologies 1068 Divyashree Techno Park, Whitefield 1069 Bangalore, Karnataka 560066 1070 India 1072 EMail: mahend.ietf@gmail.com