idnits 2.17.1 draft-ietf-spring-mpls-path-segment-02.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 (February 26, 2020) is 1492 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) == Outdated reference: A later version (-04) exists of draft-cheng-mpls-inband-pm-encapsulation-02 == Outdated reference: A later version (-06) exists of draft-gandhi-mpls-ioam-sr-01 == Outdated reference: A later version (-05) exists of draft-gandhi-mpls-rfc6374-sr-01 == Outdated reference: A later version (-11) exists of draft-gandhi-spring-twamp-srpm-05 == Outdated reference: A later version (-13) exists of draft-ietf-pce-sr-bidir-path-01 == Outdated reference: A later version (-09) exists of draft-ietf-pce-sr-path-segment-00 == Outdated reference: A later version (-22) exists of draft-ietf-spring-segment-routing-policy-06 Summary: 0 errors (**), 0 flaws (~~), 8 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 SPRING Working Group W. Cheng 3 Internet-Draft H. Li 4 Intended status: Standards Track China Mobile 5 Expires: August 29, 2020 M. Chen 6 Huawei 7 R. Gandhi 8 Cisco Systems, Inc. 9 R. Zigler 10 Broadcom 11 February 26, 2020 13 Path Segment in MPLS Based Segment Routing Network 14 draft-ietf-spring-mpls-path-segment-02 16 Abstract 18 A Segment Routing (SR) path is identified by an SR segment list. 19 Only the complete segment list can identify the end-to-end SR path, 20 and a sub-set of segments from the segment list cannot distinguish 21 one SR path from another as they may be partially congruent. SR path 22 identification is a pre-requisite for various use-cases such as 23 Performance Measurement (PM), bidirectional paths correlation, and 24 end-to-end 1+1 path protection. 26 In SR for MPLS data plane (SR-MPLS), the segment identifiers are 27 stripped from the packet through label popping as the packet transits 28 the network. This means that when a packet reaches the egress of the 29 SR path, it is not possible to determine on which SR path it 30 traversed the network. 32 This document defines a new type of segment that is referred to as 33 Path Segment, which is used to identify an SR path in an SR-MPLS 34 network. When used, it is inserted by the ingress node of the SR 35 path and immediately follows the last segment identifier in the 36 segment list of the SR path. The Path Segment will not be popped off 37 until it reaches the egress node of the SR path. The Path Segment 38 then can be used by the egress node to implement SR path 39 identification and correlation. 41 Status of This Memo 43 This Internet-Draft is submitted in full conformance with the 44 provisions of BCP 78 and BCP 79. 46 Internet-Drafts are working documents of the Internet Engineering 47 Task Force (IETF). Note that other groups may also distribute 48 working documents as Internet-Drafts. The list of current Internet- 49 Drafts is at https://datatracker.ietf.org/drafts/current/. 51 Internet-Drafts are draft documents valid for a maximum of six months 52 and may be updated, replaced, or obsoleted by other documents at any 53 time. It is inappropriate to use Internet-Drafts as reference 54 material or to cite them other than as "work in progress." 56 This Internet-Draft will expire on August 29, 2020. 58 Copyright Notice 60 Copyright (c) 2020 IETF Trust and the persons identified as the 61 document authors. All rights reserved. 63 This document is subject to BCP 78 and the IETF Trust's Legal 64 Provisions Relating to IETF Documents 65 (https://trustee.ietf.org/license-info) in effect on the date of 66 publication of this document. Please review these documents 67 carefully, as they describe your rights and restrictions with respect 68 to this document. Code Components extracted from this document must 69 include Simplified BSD License text as described in Section 4.e of 70 the Trust Legal Provisions and are provided without warranty as 71 described in the Simplified BSD License. 73 Table of Contents 75 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 76 1.1. Requirements Language . . . . . . . . . . . . . . . . . . 3 77 1.2. Abbreviations . . . . . . . . . . . . . . . . . . . . . . 3 78 2. Path Segment . . . . . . . . . . . . . . . . . . . . . . . . 4 79 3. Path Segment Allocation . . . . . . . . . . . . . . . . . . . 6 80 4. Nesting of Path Segments . . . . . . . . . . . . . . . . . . 6 81 5. Path Segment for Performance Measurement . . . . . . . . . . 7 82 6. Path Segment for Bidirectional SR Path . . . . . . . . . . . 8 83 7. Path Segment for End-to-end Path Protection . . . . . . . . . 8 84 8. Security Considerations . . . . . . . . . . . . . . . . . . . 9 85 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 86 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 9 87 10.1. Normative References . . . . . . . . . . . . . . . . . . 9 88 10.2. Informative References . . . . . . . . . . . . . . . . . 9 89 Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 11 90 Contributors . . . . . . . . . . . . . . . . . . . . . . . . . . 11 91 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 12 93 1. Introduction 95 Segment Routing (SR) [RFC8402] is a source routed forwarding method 96 that allows to directly encode forwarding instructions (called 97 segments) in each packet, hence it enables steering traffic through a 98 network without the per-flow states maintained on the transit nodes. 99 Segment Routing can be instantiated on an MPLS data plane or an IPv6 100 data plane. The former is called SR-MPLS [RFC8660], the latter is 101 called SRv6 [RFC8402]. SR-MPLS leverages the MPLS label stack to 102 construct an SR path. 104 In an SR-MPLS network, when a packet is transmitted along an SR path, 105 the labels in the MPLS label stack will be swapped or popped. So 106 that no label or only the last label (e.g. Explicit-Null label) may 107 be left in the MPLS label stack when the packet reaches the egress 108 node. Thus, the egress node cannot determine along which SR path the 109 packet came. 111 However, to support various use-cases in SR-MPLS networks, like end- 112 to-end 1+1 path protection (Live-Live case) [RFC4426], bidirectional 113 path [RFC5654], or Performance Measurement (PM) [RFC7799], the 114 ability to implement path identification on the egress node is a pre- 115 requisite. 117 Therefore, this document introduces a new segment type that is 118 referred to as the Path Segment. A Path Segment is defined to 119 uniquely identify an SR path in an SR-MPLS network in the context of 120 the egress node. It is normally used by the egress nodes for path 121 identification hence to support various use-cases including SR path 122 PM, end-to-end 1+1 SR path protection, and bidirectional SR paths 123 correlation. 125 1.1. Requirements Language 127 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 128 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 129 "OPTIONAL" in this document are to be interpreted as described in 130 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, 131 as shown here. 133 1.2. Abbreviations 135 DM: Delay Measurement. 137 LM: Loss Measurement. 139 MPLS: Multiprotocol Label Switching. 141 MSD: Maximum SID Depth. 143 PM: Performance Measurement. 145 PSID: Path Segment ID. 147 SID: Segment ID. 149 SL: Segment List. 151 SR: Segment Routing. 153 SR-MPLS: Segment Routing instantiated on MPLS data plane. 155 2. Path Segment 157 A Path Segment is a single label that is assigned from the Segment 158 Routing Local Block (SRLB) or Segment Routing Global Block (SRGB) or 159 dynamic MPLS label pool of the egress node of an SR path. It means 160 that the Path Segment is unique in the context of the egress node of 161 the SR path. When a Path Segment is used, the Path Segment MUST be 162 inserted at the ingress node and MUST immediately follow the last 163 label of the SR path, in other words, inserted after the routing 164 segment (adjacency/node/prefix segment) pointing to the egress node. 166 The Path Segment may be used to identify an SR-MPLS Policy, its 167 Candidate-Path (CP), or a SID List (SL) 168 [I-D.ietf-spring-segment-routing-policy] terminating on an egress 169 node depending on the use-case. 171 The value of the TTL field in the MPLS label stack entry containing 172 the Path Segment MUST be set to the same value as the TTL of the last 173 label stack entry for the last segment in the SR path. If the Path 174 Segment is the bottom label, the S bit MUST be set. 176 Normally, the intermediate nodes will not see the Path Segment label 177 and do not know how to process it. A Path Segment presenting to an 178 intermediate node is an error condition. 180 A Path Segment can be used in the case of Penultimate Hop Popping 181 (PHP), where some labels are be popped off at the penultimate hop of 182 an SR path, but the Path Segment MUST NOT be popped off until it 183 reaches at the egress node. 185 The egress node MUST pop the Path Segment. The egress node MAY use 186 the Path Segment for further processing. For example, when 187 performance measurement is enabled on the SR path, it can trigger 188 packet counting or timestamping. 190 In some deployments, service labels may be added after the Path 191 Segment label in the MPLS label stack. In this case, the egress node 192 MUST be capable of processing more than one label. The additional 193 processing required can have an impact on forwarding performance. 195 Generic Associated Label (GAL) is used for Operations, Administration 196 and Maintenance (OAM) in MPLS networks [RFC5586]. When GAL is used, 197 it MUST be added at the bottom of the label stack after the Path 198 Segment label. 200 Entropy label and Entropy Label Indicator (ELI) as described in 201 [RFC8662] for SR-MPLS path, can be placed before or after the Path 202 Segment label in the MPLS label stack. 204 The SR path computation needs to know the Maximum SID Depth (MSD) 205 that can be imposed at each node/link of a given SR path [RFC8664]. 206 This ensures that the SID stack depth of a computed path does not 207 exceed the number of SIDs the node is capable of imposing. The MSD 208 used for path computation MUST include the Path Segment label. 210 The label stack with Path Segment is shown in Figure 1: 212 +--------------------+ 213 | ... | 214 +--------------------+ 215 | Label 1 | 216 +--------------------+ 217 | Label 2 | 218 +--------------------+ 219 | ... | 220 +--------------------+ 221 | Label n | 222 +--------------------+ 223 | Path Segment | 224 +--------------------+ 225 | ... | 226 +--------------------+ 227 ~ Payload ~ 228 +--------------------+ 230 Figure 1: Label Stack with Path Segment 232 Where: 234 o The Labels 1 to n are the segment label stack used to direct how 235 to steer the packets along the SR path. 237 o The Path Segment identifies the SR path in the context of the 238 egress node of the SR path. 240 3. Path Segment Allocation 242 Several ways can be used to allocate the Path Segment. 244 One way is to set up a communication channel (e.g., MPLS Generic 245 Associated Channel (G-ACh)) [RFC5586] between the ingress node and 246 the egress node, and the ingress node of the SR path can directly 247 send a request to the egress node to allocate a Path Segment. 249 Another way is to leverage a centralized controller (e.g., SDN 250 controller) to assign the Path Segment. In this case, the controller 251 MUST make sure (e.g., by some capability discovery mechanisms outside 252 the scope of this document) that the egress node knows the Path 253 Segment and it can process it, as well as the label does not collide 254 with any label allocation done by the egress node. 256 Path Computation Element Protocol (PCEP) based Path Segment 257 allocation for SR Policy is defined in 258 [I-D.ietf-pce-sr-path-segment]. Also, BGP based Path Segment 259 allocation for SR Policy is defined in 260 [I-D.li-idr-sr-policy-path-segment]. 262 4. Nesting of Path Segments 264 Binding SID (BSID) [RFC8402] can be used for SID list compression. 265 With BSID, an end-to-end SR path can be split into several sub-paths, 266 each sub-path is identified by a BSID. Then an end-to-end SR path 267 can be identified by a list of BSIDs, therefore, it can provide 268 better scalability. 270 BSID and Path SID (PSID) can be combined to achieve both sub-path and 271 end-to-end path monitoring. A reference model for such a combination 272 in (Figure 2) shows an end-to-end path (A->D) that spans three 273 domains (Access, Aggregation and Core domain) and consists of three 274 sub-paths, one in each sub-domain (sub-path (A->B), sub-path (B->C) 275 and sub-path (C->D)). Each sub-path is allocated a BSID. For 276 nesting the sub-paths, each sub-path is allocated a PSID. Then, the 277 SID list of the end-to-end path can be expressed as , where the e-PSID is the PSID of the end-to-end 279 path. The SID list of a sub-path can be expressed as , where the s-PSID is the PSID of the sub-path. 282 Figure 2 shows the details of the label stacks when PSID and BSID are 283 used to support both sub-path and end-to-end path monitoring in a 284 multi-domain scenario. 286 /--------\ /--------\ /--------\ 287 / \ / \ / \ 288 A{ Access }B{ Aggregation }C{ Core }D 289 \ / \ / \ / 290 \--------/ \--------/ \--------/ 291 Sub-path(A->B) Sub-path(B->C) Sub-path(C->D) 292 |<--------------->|<-------------->|<-------------->| 293 E2E Path(A->D) 294 |<------------------------------------------------->| 296 +------------+ 297 ~A->B SubPath~ 298 +------------+ +------------+ 299 |s-PSID(A->B)| ~B->C SubPath~ 300 +------------+ +------------+ 301 | BSID(B->C) | |s-PSID(B->C)| 302 +------------+ +------------+ +------------+ 303 | BSID(C->D) | | BSID(C->D) | ~C->D SubPath~ 304 +------------+ +------------+ +------------+ +------------+ 305 |e-PSID(A->D)| |e-PSID(A->D)| |e-PSID(A->D)| |e-PSID(A->D)| 306 +------------+ +------------+ +------------+ +------------+ 308 Figure 2: Nesting of Path Segments 310 5. Path Segment for Performance Measurement 312 As defined in [RFC7799], performance measurement can be classified 313 into Passive, Active, and Hybrid measurement. 315 For Passive performance measurement, path identification at the 316 measuring points is the pre-requisite. Path Segment can be used by 317 the measuring points (e.g., the ingress and egress nodes of the SR 318 path or a centralized controller) to correlate the packet counts and 319 timestamps from the ingress and egress nodes for a specific SR path, 320 then packet loss and delay can be calculated for the end-to-end path, 321 respectively. 323 Path Segment can also be used for Active performance measurement for 324 an SR path in SR-MPLS networks for collecting packet counters and 325 timestamps from the egress node using probe messages 326 [I-D.gandhi-mpls-rfc6374-sr] and [I-D.gandhi-spring-twamp-srpm]. 328 Path Segment can also be used for In-situ OAM for SR-MPLS to identify 329 the SR Path associated with the in-situ data fields in the data 330 packets on the egress node [I-D.gandhi-mpls-ioam-sr]. 332 Path Segment can also be used for In-band PM for SR-MPLS to identify 333 the SR Path associated with the collected performance metrics 334 [I-D.cheng-mpls-inband-pm-encapsulation]. 336 6. Path Segment for Bidirectional SR Path 338 In some scenarios, for example, mobile backhaul transport networks, 339 there are requirements to support bidirectional paths, and the path 340 is normally treated as a single entity. The both directions of the 341 path have the same fate, for example, failure in one direction will 342 result in switching traffic at both directions. MPLS supports this 343 by introducing the concepts of co-routed bidirectional LSP and 344 associated bidirectional LSP [RFC5654]. 346 In the current SR architecture, an SR path is a unidirectional path 347 [RFC8402]. In order to support bidirectional SR paths, a 348 straightforward way is to bind two unidirectional SR paths to a 349 single bidirectional SR path. Path Segments can then be used to 350 identify and correlate the traffic for the two unidirectional SR 351 paths at both ends of the bidirectional path. 353 [I-D.ietf-pce-sr-bidir-path] defines procedures on how to use PCEP 354 for SR Policy to initiate a bidirectional SR path. Also, 355 [I-D.li-idr-sr-policy-path-segment] defines procedures on how to use 356 BGP for SR Policy to initiate a bidirectional SR path. 358 7. Path Segment for End-to-end Path Protection 360 For end-to-end 1+1 path protection (i.e., Live-Live case), the egress 361 node of the path needs to know the set of paths that constitute the 362 primary and the secondaries, in order to select the primary path 363 packets for onward transmission, and to discard the packets from the 364 secondaries [RFC4426]. 366 To do this in Segment Routing, each SR path needs a path identifier 367 that is unique at the egress node. For SR-MPLS, this can be the Path 368 Segment label allocated by the egress node. 370 There then needs to be a method of binding this SR path identifiers 371 into equivalence groups such that the egress node can determine for 372 example, the set of packets that represent a single primary path. It 373 is obvious that this equivalence group can be instantiated in the 374 network by an SDN controller using the Path Segments of the SR paths. 376 8. Security Considerations 378 This document does not introduce additional security requirements and 379 mechanisms other than the ones described in [RFC8402]. 381 9. IANA Considerations 383 This document does not require any IANA actions. 385 10. References 387 10.1. Normative References 389 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 390 Requirement Levels", BCP 14, RFC 2119, 391 DOI 10.17487/RFC2119, March 1997, 392 . 394 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 395 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 396 May 2017, . 398 [RFC8402] Filsfils, C., Ed., Previdi, S., Ed., Ginsberg, L., 399 Decraene, B., Litkowski, S., and R. Shakir, "Segment 400 Routing Architecture", RFC 8402, DOI 10.17487/RFC8402, 401 July 2018, . 403 [RFC8660] Bashandy, A., Ed., Filsfils, C., Ed., Previdi, S., 404 Decraene, B., Litkowski, S., and R. Shakir, "Segment 405 Routing with the MPLS Data Plane", RFC 8660, 406 DOI 10.17487/RFC8660, December 2019, 407 . 409 10.2. Informative References 411 [I-D.cheng-mpls-inband-pm-encapsulation] 412 Cheng, W., Xiao, M., Zhou, T., Dong, X., and Y. Peleg, 413 "Encapsulation For MPLS Performance Measurement with 414 Alternate Marking Method", draft-cheng-mpls-inband-pm- 415 encapsulation-02 (work in progress), November 2019. 417 [I-D.gandhi-mpls-ioam-sr] 418 Gandhi, R., Ali, Z., Filsfils, C., Brockners, F., Wen, B., 419 and V. Kozak, "Segment Routing with MPLS Data Plane 420 Encapsulation for In-situ OAM Data", draft-gandhi-mpls- 421 ioam-sr-01 (work in progress), December 2019. 423 [I-D.gandhi-mpls-rfc6374-sr] 424 Gandhi, R., Filsfils, C., Voyer, D., Salsano, S., and M. 425 Chen, "Performance Measurement for Segment Routing 426 Networks with MPLS Data Plane", draft-gandhi-mpls- 427 rfc6374-sr-01 (work in progress), December 2019. 429 [I-D.gandhi-spring-twamp-srpm] 430 Gandhi, R., Filsfils, C., Voyer, D., Chen, M., and B. 431 Janssens, "Performance Measurement Using TWAMP Light for 432 Segment Routing Networks", draft-gandhi-spring-twamp- 433 srpm-05 (work in progress), December 2019. 435 [I-D.ietf-pce-sr-bidir-path] 436 Li, C., Chen, M., Cheng, W., Gandhi, R., and Q. Xiong, 437 "PCEP Extensions for Associated Bidirectional Segment 438 Routing (SR) Paths", draft-ietf-pce-sr-bidir-path-01 (work 439 in progress), February 2020. 441 [I-D.ietf-pce-sr-path-segment] 442 Li, C., Chen, M., Cheng, W., Gandhi, R., and Q. Xiong, 443 "Path Computation Element Communication Protocol (PCEP) 444 Extension for Path Segment in Segment Routing (SR)", 445 draft-ietf-pce-sr-path-segment-00 (work in progress), 446 October 2019. 448 [I-D.ietf-spring-segment-routing-policy] 449 Filsfils, C., Sivabalan, S., Voyer, D., Bogdanov, A., and 450 P. Mattes, "Segment Routing Policy Architecture", draft- 451 ietf-spring-segment-routing-policy-06 (work in progress), 452 December 2019. 454 [I-D.li-idr-sr-policy-path-segment] 455 Li, C., Telecom, C., Chen, M., Dong, J., and Z. Li, "SR 456 Policy Extensions for Path Segment and Bidirectional 457 Path", draft-li-idr-sr-policy-path-segment-01 (work in 458 progress), August 2019. 460 [RFC4426] Lang, J., Ed., Rajagopalan, B., Ed., and D. Papadimitriou, 461 Ed., "Generalized Multi-Protocol Label Switching (GMPLS) 462 Recovery Functional Specification", RFC 4426, 463 DOI 10.17487/RFC4426, March 2006, 464 . 466 [RFC5586] Bocci, M., Ed., Vigoureux, M., Ed., and S. Bryant, Ed., 467 "MPLS Generic Associated Channel", RFC 5586, 468 DOI 10.17487/RFC5586, June 2009, 469 . 471 [RFC5654] Niven-Jenkins, B., Ed., Brungard, D., Ed., Betts, M., Ed., 472 Sprecher, N., and S. Ueno, "Requirements of an MPLS 473 Transport Profile", RFC 5654, DOI 10.17487/RFC5654, 474 September 2009, . 476 [RFC7799] Morton, A., "Active and Passive Metrics and Methods (with 477 Hybrid Types In-Between)", RFC 7799, DOI 10.17487/RFC7799, 478 May 2016, . 480 [RFC8662] Kini, S., Kompella, K., Sivabalan, S., Litkowski, S., 481 Shakir, R., and J. Tantsura, "Entropy Label for Source 482 Packet Routing in Networking (SPRING) Tunnels", RFC 8662, 483 DOI 10.17487/RFC8662, December 2019, 484 . 486 [RFC8664] Sivabalan, S., Filsfils, C., Tantsura, J., Henderickx, W., 487 and J. Hardwick, "Path Computation Element Communication 488 Protocol (PCEP) Extensions for Segment Routing", RFC 8664, 489 DOI 10.17487/RFC8664, December 2019, 490 . 492 Acknowledgements 494 The authors would like to thank Adrian Farrel, Stewart Bryant, 495 Shuangping Zhan, Alexander Vainshtein, Andrew G. Malis, Ketan 496 Talaulikar, Shraddha Hegde, and Loa Andersson for their review, 497 suggestions and comments to this document. 499 The authors would like to acknowledge the contribution from Alexander 500 Vainshtein on "Nesting of Path Segments". 502 Contributors 504 The following people have substantially contributed to this document: 506 Cheng Li 507 Huawei Technologies 509 EMail: chengli13@huawei.com 511 Lei Wang 512 China Mobile 514 Email: wangleiyj@chinamobile.com 516 Aihua Liu 517 ZTE Corp 519 Email: liu.aihua@zte.com.cn 521 Greg Mirsky 522 ZTE Corp 524 Email: gregimirsky@gmail.com 526 Authors' Addresses 528 Weiqiang Cheng 529 China Mobile 531 Email: chengweiqiang@chinamobile.com 533 Han Li 534 China Mobile 536 Email: lihan@chinamobile.com 538 Mach(Guoyi) Chen 539 Huawei 541 Email: mach.chen@huawei.com 542 Rakesh Gandhi 543 Cisco Systems, Inc. 544 Canada 546 Email: rgandhi@cisco.com 548 Royi Zigler 549 Broadcom 551 Email: royi.zigler@broadcom.com