idnits 2.17.1 draft-ietf-pim-sr-p2mp-policy-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 18, 2021) is 1163 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) == Missing Reference: 'Constraints' is mentioned on line 299, but not defined == Missing Reference: 'Optimization' is mentioned on line 299, but not defined == Unused Reference: 'I-D.ietf-bess-mvpn-evpn-aggregation-label' is defined on line 525, but no explicit reference was found in the text == Outdated reference: A later version (-22) exists of draft-ietf-spring-segment-routing-policy-09 == Outdated reference: A later version (-19) exists of draft-ietf-spring-sr-replication-segment-02 == Outdated reference: A later version (-04) exists of draft-filsfils-spring-srv6-net-pgm-illustration-03 == Outdated reference: A later version (-14) exists of draft-ietf-bess-mvpn-evpn-aggregation-label-05 Summary: 0 errors (**), 0 flaws (~~), 8 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group D. Voyer, Ed. 3 Internet-Draft Bell Canada 4 Intended status: Standards Track C. Filsfils 5 Expires: August 22, 2021 R. Parekh 6 Cisco Systems, Inc. 7 H. Bidgoli 8 Nokia 9 Z. Zhang 10 Juniper Networks 11 February 18, 2021 13 Segment Routing Point-to-Multipoint Policy 14 draft-ietf-pim-sr-p2mp-policy-02 16 Abstract 18 This document describes an architecture to construct a Point-to- 19 Multipoint (P2MP) tree to deliver Multi-point services in a Segment 20 Routing domain. A SR P2MP tree is constructed by stitching a set of 21 Replication segments together. A SR Point-to-Multipoint (SR P2MP) 22 Policy is used to define and instantiate a P2MP tree which is 23 computed by a PCE. 25 Requirements Language 27 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 28 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 29 document are to be interpreted as described in RFC 2119 [RFC2119]. 31 Status of This Memo 33 This Internet-Draft is submitted in full conformance with the 34 provisions of BCP 78 and BCP 79. 36 Internet-Drafts are working documents of the Internet Engineering 37 Task Force (IETF). Note that other groups may also distribute 38 working documents as Internet-Drafts. The list of current Internet- 39 Drafts is at https://datatracker.ietf.org/drafts/current/. 41 Internet-Drafts are draft documents valid for a maximum of six months 42 and may be updated, replaced, or obsoleted by other documents at any 43 time. It is inappropriate to use Internet-Drafts as reference 44 material or to cite them other than as "work in progress." 46 This Internet-Draft will expire on August 22, 2021. 48 Copyright Notice 50 Copyright (c) 2021 IETF Trust and the persons identified as the 51 document authors. All rights reserved. 53 This document is subject to BCP 78 and the IETF Trust's Legal 54 Provisions Relating to IETF Documents 55 (https://trustee.ietf.org/license-info) in effect on the date of 56 publication of this document. Please review these documents 57 carefully, as they describe your rights and restrictions with respect 58 to this document. Code Components extracted from this document must 59 include Simplified BSD License text as described in Section 4.e of 60 the Trust Legal Provisions and are provided without warranty as 61 described in the Simplified BSD License. 63 Table of Contents 65 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 66 2. P2MP Tree . . . . . . . . . . . . . . . . . . . . . . . . . . 3 67 2.1. Sharing Replication segments across P2MP trees . . . . . 4 68 3. SR P2MP Policy . . . . . . . . . . . . . . . . . . . . . . . 5 69 4. Using Controller to build a P2MP Tree . . . . . . . . . . . . 6 70 4.1. Provisioning SR P2MP Policy Creation . . . . . . . . . . 6 71 4.1.1. API . . . . . . . . . . . . . . . . . . . . . . . . . 6 72 4.1.2. Invoking API . . . . . . . . . . . . . . . . . . . . 7 73 4.2. P2MP Tree Computation . . . . . . . . . . . . . . . . . . 7 74 4.2.1. Topology Discovery . . . . . . . . . . . . . . . . . 8 75 4.2.2. Capability and Attribute Discovery . . . . . . . . . 8 76 4.3. Instantiating P2MP tree on nodes . . . . . . . . . . . . 8 77 4.3.1. PCEP . . . . . . . . . . . . . . . . . . . . . . . . 8 78 4.3.2. BGP . . . . . . . . . . . . . . . . . . . . . . . . . 9 79 4.3.3. NetConf . . . . . . . . . . . . . . . . . . . . . . . 9 80 4.4. Protection . . . . . . . . . . . . . . . . . . . . . . . 9 81 4.4.1. Local Protection . . . . . . . . . . . . . . . . . . 9 82 4.4.2. Path Protection . . . . . . . . . . . . . . . . . . . 9 83 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 84 6. Security Considerations . . . . . . . . . . . . . . . . . . . 9 85 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 9 86 8. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 10 87 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 11 88 9.1. Normative References . . . . . . . . . . . . . . . . . . 11 89 9.2. Informative References . . . . . . . . . . . . . . . . . 11 90 Appendix A. Illustration of SR P2MP Policy and P2MP Tree . . . . 12 91 A.1. P2MP Tree with non-adjacent Replication Segments . . . . 14 92 A.1.1. SR-MPLS . . . . . . . . . . . . . . . . . . . . . . . 14 93 A.1.2. SRv6 . . . . . . . . . . . . . . . . . . . . . . . . 15 94 A.2. P2MP Tree with adjacent Replication Segments . . . . . . 17 95 A.2.1. SR-MPLS . . . . . . . . . . . . . . . . . . . . . . . 17 96 A.2.2. SRv6 . . . . . . . . . . . . . . . . . . . . . . . . 19 97 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 21 99 1. Introduction 101 A Multi-point service delivery could be realized via P2MP trees in a 102 Segment Routing domain [RFC8402]. A P2MP tree spans from a Root node 103 to a set of Leaf nodes via intermediate Replication Nodes. It 104 consists of a Replication segment 105 [I-D.ietf-spring-sr-replication-segment] at the root node, one or 106 more Replication segments at Leaf nodes and intermediate Replication 107 Nodes. The Replication segments are stitched together. 109 A Segment Routing P2MP policy, a variant of the SR Policy 110 [I-D.ietf-spring-segment-routing-policy], is used to define a P2MP 111 tree. A PCE is used to compute the tree from the Root node to the 112 set of Leaf nodes via a set of Replication Nodes. The PCE then 113 instantiates the P2MP tree in the SR domain by signaling Replication 114 segments to Root, replication and Leaf nodes using various protocols 115 (PCEP, BGP, NetConf etc.). Replication segments of a P2MP tree can 116 be instantiated for SR-MPLS and SRv6 dataplanes. 118 2. P2MP Tree 120 A P2MP tree in a SR domain connects a Root to a set of Leaf nodes via 121 a set of intermediate Replication Nodes. It consists of a 122 Replication segment at the root stitched to Replication segments at 123 intermediate Replication Nodes eventually reaching the Leaf nodes. 125 The Replication SID of the Replication segment at Root node is called 126 Tree-SID. The Tree-SID SHOULD also be used as Replication SID of 127 Replication segments at Replication and Leaf nodes. The Replication 128 segments at Replication and Leaf nodes MAY use Replication SIDs that 129 are not same as the Tree-SID. 131 The Replication segment at Root of a P2MP tree MUST be associated 132 with that P2MP tree (i.e. identifier in SR P2MP 133 policy section below) to map a Multi-point service to the tree. A 134 Replication segment that terminates a P2MP tree at a Leaf node MUST 135 be associated with the P2MP tree to determine the context for a 136 Multi-point service. The The information that can be used to derive 137 this association is specific to encoding of the protocol (PCEP, BGP, 138 NetConf etc.) used to instantiate the Replication segment for a P2MP 139 tree. Replication segments at intermediate Replication Nodes of a 140 tree are also associated with that tree. 142 For SR-MPLS, a PCE MAY decide not to instantiate Replication segments 143 at Leaf nodes of a P2MP tree if it is known a priori that Multi-point 144 services mapped to the P2MP tree can be identified using a context 145 that is globally unique in SR domain. In this case, Replication Nodes 146 connecting to Leaf nodes effectively does Penultimate-Hop Pop (PHP) 147 behavior to pop Tree-SID from a packet. A Multi-point service 148 context assigned from "Domain-wide Common Block" (DCB) [I-D.ietf- 149 bess-mvpn-evpn-aggregation-label] is an example of globally unique 150 context. 152 A packet steered into a P2MP tree is replicated by the Replication 153 segment at Root node to each downstream node in the Replication 154 segment, with the Replication SID of the Replication segment at the 155 downstream node. A downstream node could be a Leaf node or an 156 intermediate Replication Node. In the latter case, replication 157 continues with the Replication segments until all Leaf nodes are 158 reached. A packet is steered into a P2MP tree in two ways: 160 o Based on a local policy-based routing at the Root node. 162 o Based on steering via the Tree-SID at the Root node. 164 2.1. Sharing Replication segments across P2MP trees 166 Two or more P2MP trees MAY share a Replication segment at Root or 167 Replication Nodes if at minimum the first condition below is 168 satisfied. A tree always has its own Replication segment at its root 169 even if shares another Replication segment. A tree that shares 170 another Replication segment may or may not have its own Replication 171 segment on its Leaf nodes. If not, the second and third conditions 172 apply to such situations. 174 1. The Leaf nodes reached via a shared Replication segment must be 175 subset of Leaf or Replication Nodes of the P2MP trees that share 176 this segment. Note if a Replication segment is shared, all its 177 downstream Replication segments are also shared. 179 2. Some Multi-point services realized by the P2MP trees may need 180 service context (e.g. packets are for certain VPNs, and/or from 181 certain nodes). If the trees do not have their own Replication 182 segments at their Leaf nodes then the packets transported on the 183 P2MP trees MUST carry a service context that does not rely on the 184 tree or root identification, e.g. a service label assigned from 185 Domain-wide Common Block or common SRGB for SR-MPLS. 187 3. For some Multi-point services using P2MP trees that share 188 Replication segments, packets transported on these trees MAY 189 require a Tree context (e.g. MVPN Extranet [RFC7900] to avoid 190 certain ambiguities - see Section 2.3.1 of RFC 7900). In this 191 case, the trees MUST have their own Replication segments on the 192 Leaf nodes. For SR-MPLS, this is similar to "tunnel stacking" 193 concept. 195 Sharing of a Replication segment for P2MP trees is OPTIONAL. Exact 196 procedures to ensure validity of above conditions across PM2P 197 services on nodes of a Segment Routing domain are outside the scope 198 of this document. 200 3. SR P2MP Policy 202 The SR P2MP policy is a variant of an SR 203 policy[I-D.ietf-spring-segment-routing-policy] and is used to 204 instantiate SR P2MP trees. 206 A SR P2MP Policy is identified by the tuple , where: 208 o Root: The address of Root node of P2MP tree instantiated by the SR 209 P2MP Policy 211 o Tree-ID: A identifier that is unique in context of the Root. This 212 is an unsigned 32-bit number. 214 A SR P2MP Policy is defined by following elements: 216 o Leaf nodes: A set of nodes that terminate the P2MP trees. 218 o Candidate Paths: See below. 220 A SR P2MP policy is provisioned on a PCE to instantiate the P2MP 221 tree. The Tree-SID SHOULD be used as Binding SID of the P2MP policy. 222 A PCE computes the P2MP tree and instantiates Replication segments at 223 Root, Replication and Leaf nodes. When Replication segments are not 224 shared across P2MP trees, the Root and Tree-ID of the SR P2MP policy 225 are mapped to Replication-ID element of the Replication segment 226 identifier i.e the SR Replication segment identifier is . A shared Replication segment MAY be identified with 228 zero Root-ID address (0.0.0.0 for IPv4 and :: for IPv6) and a 229 Replication-ID that is unique in context of Node address where the 230 Replication segment is instantiated when it is not associated a 231 particular tree. 233 A SR P2MP Policy has one or more Candidate paths. The active 234 Candidate path is selected based on the tie breaking rules amongst 235 the candidate-paths as specified 236 in[I-D.ietf-spring-segment-routing-policy]. Each candidate path has 237 a set of topological/resource constraints and/or optimization 238 objectives which determine the P2MP tree for that Candidate path. 239 Tree-SID is an identifier of the P2MP tree of the candidate path in 240 the forwarding plane. It is instantiated in the forwarding plane at 241 Root node, intermediate Replication Nodes and Leaf nodes. The Tree- 242 SID MAY be different at Replication and Leaf nodes. 244 4. Using Controller to build a P2MP Tree 246 A P2MP tree can be built using a Path Computation Element (PCE). 247 This section outlines a high-level architecture for such an approach. 249 North Bound South Bound 250 Programming ..... Programming 251 Interface Interface 252 | 253 | 254 v 255 +-----+ .......................... 256 .............| PCE | ............. . 257 . +-----+ . . 258 . . . . 259 . . . . 260 . . . . 261 . . V . 262 . . +----+ . 263 . . | N3 | . 264 . . +----+ . 265 . . | Leaf (L2) . 266 . . | . 267 . . | . 268 V V | V 269 +----+ +----+ -------------- +----+ 270 | N1 |----------| N2 |-------------------------| N4 | 271 +----+ +----+ +----+ 272 Root (R) Replication Node (M) Leaf (L1) 274 Figure 1: Centralized Control Plane Model 276 4.1. Provisioning SR P2MP Policy Creation 278 A SR P2MP policy can be instantiated and maintained in a centralized 279 fashion using a Path Computation Element (PCE). 281 4.1.1. API 283 North-bound APIs on a PCE can be used to: 285 1. Create SR P2MP policy: CreateSRP2MPPolicy 286 2. Delete SR P2MP policy: DeleteSRP2MPPolicy 288 3. Modify SR P2MP policy Leaf Set: SRP2MPPolicyLeafSetModify 291 4. Create a Candidate Path for SR P2MP policy: 292 CreateSRP2MPCandidatePath> 294 5. Delete a Candidate Path for SR P2MP policy: 295 DeleteSRP2MPCandidatePath> 297 6. Update a Candidate Path for SR P2MP policy: 298 UpdateSRP2MPCandidatePath, Preference, 299 [Constraints], [Optimization], ...> 301 CP-ID is identifier of a Candidate Path within a SR P2MP policy. One 302 possible identifier is the tuple as specified in 304 [I-D.ietf-spring-segment-routing-policy]. 306 Note these are conceptual APIs. Actual implementations may offer 307 different APIs as long as they provide same functionality. For 308 example, API might allow symbolic name to be assigned for a P2MP 309 policy or APIs might allow individual Leaf nodes to be added or 310 deleted from a policy instead of an update operation. 312 4.1.2. Invoking API 314 Interaction with a PCE can be via PCEP, REST, Netconf, gRPC, CLI. 315 Yang model shall be be developed for this purpose as well. 317 4.2. P2MP Tree Computation 319 An entity (an operator, a network node or a machine) provisions a SR 320 P2MP policy by specifying the addresses of the root (R) and set of 321 leaves {L} as well as Traffic Engineering (TE) attributes of 322 Candidate paths via a suitable North-Bound API. The PCE computes the 323 tree of Active candidate path. The PCE MAY compute P2MP trees for 324 all Candidate paths., If tree computation is successful, PCE 325 instantiates the P2MP tree(s) using Replication segments on Root, 326 Replication, and Leaf nodes. 328 Candidate path constraints shall include link color affinity, 329 bandwidth, disjointness (link, node, SRLG), delay bound, link loss, 330 etc. Candidate path shall be optimized based on IGP or TE metric or 331 link latency. 333 The Tree SID of Candidate path of a SR P2MP policy can be either 334 dynamically allocated by the PCE or statically assigned by entity 335 provisioning the SR P2MP policy. Ideally, same Tree-SID SHOULD be 336 used for Replication segments at Root, Replication, and Leaf nodes. 337 Different Tree-SIDs MAY be used at Replication Node(s) if it is not 338 feasible to use same Tree SID. 340 A PCE can modify a P2MP tree following network element failure or in 341 case a better path can be found based on the new network state. In 342 this case, the PCE may want to setup the new instance of the tree and 343 remove the old instance of the tree from the network in order to 344 minimize traffic loss. In this case, the instances of trees for all 345 the Candidate paths of a P2MP policy can be identified by an 346 Instance-ID which is unique in context of the P2MP policy. As such, 347 the identifier of non-shared Replication segments used to instantiate 348 these trees becomes . 350 A PCE shall be capable of computing paths across multiple IGP areas 351 or levels as well as Autonomous Systems (ASs). 353 4.2.1. Topology Discovery 355 A PCE shall learn network topology, TE attributes of link/node as 356 well as SIDs via dynamic routing protocols (IGP and/or BGP-LS). It 357 may be possible for entities to pass topology information to PCE via 358 north-bound API. 360 4.2.2. Capability and Attribute Discovery 362 It shall be possible for a node to advertise SR P2MP tree capability 363 via IGP and/or BGP-LS. Similarly, a PCE can also advertise its P2MP 364 tree computation capability via IGP and/or BGP-LS. Capability 365 advertisement allows a network node to dynamically choose one or more 366 PCE(s) to obtain services pertaining to SR P2MP policies, as well a 367 PCE to dynamically identify SR P2MP tree capable nodes. 369 4.3. Instantiating P2MP tree on nodes 371 Once a PCE computes a P2MP tree for Candidate path of SR P2MP policy, 372 it needs to instantiate the tree on the relevant network nodes via 373 Replication segments. The PCE can use various protocols to program 374 the Replication segments as described below. 376 4.3.1. PCEP 378 PCE Protocol (PCEP)has been traditionally used: 380 1. For a head-end to obtain paths from a PCE. 382 2. A PCE to instantiate SR policies. 384 PCEP protocol can be stateful in that a PCE can have a stateful 385 control of an SR policy on a head-end which has delegated the control 386 of the SR policy to the PCE. PCEP shall be extended to provision and 387 maintain SR P2MP trees in a stateful fashion. 389 4.3.2. BGP 391 BGP has been extended to instantiate and report SR policies. It 392 shall be extended to instantiate and maintain P2MP trees for SR P2MP 393 policies. 395 4.3.3. NetConf 397 TBD 399 4.4. Protection 401 4.4.1. Local Protection 403 A network link, node or path on the tree of a P2MP tree can be 404 protected using SR policies computed by PCE. The backup SR policies 405 shall be programmed in forwarding plane in order to minimize traffic 406 loss when the protected link/node fails. It is also possible to use 407 node local Fast Re-Route protection mechanisms (LFA) to protect link/ 408 nodes of P2MP tree. 410 4.4.2. Path Protection 412 It is possible for PCE create a disjoint backup tree for providing 413 end-to-end path protection. 415 5. IANA Considerations 417 This document makes no request of IANA. 419 6. Security Considerations 421 There are no additional security risks introduced by this design. 423 7. Acknowledgements 425 The authors would like to acknowledge Siva Sivabalan, Mike Koldychev 426 and Vishnu Pavan Beeram for their valuable inputs.. 428 8. Contributors 430 Clayton Hassen 431 Bell Canada 432 Vancouver 433 Canada 435 Email: clayton.hassen@bell.ca 437 Kurtis Gillis 438 Bell Canada 439 Halifax 440 Canada 442 Email: kurtis.gillis@bell.ca 444 Arvind Venkateswaran 445 Cisco Systems, Inc. 446 San Jose 447 US 449 Email: arvvenka@cisco.com 451 Zafar Ali 452 Cisco Systems, Inc. 453 US 455 Email: zali@cisco.com 457 Swadesh Agrawal 458 Cisco Systems, Inc. 459 San Jose 460 US 462 Email: swaagraw@cisco.com 464 Jayant Kotalwar 465 Nokia 466 Mountain View 467 US 469 Email: jayant.kotalwar@nokia.com 471 Tanmoy Kundu 472 Nokia 473 Mountain View 474 US 475 Email: tanmoy.kundu@nokia.com 477 Andrew Stone 478 Nokia 479 Ottawa 480 Canada 482 Email: andrew.stone@nokia.com 484 Tarek Saad 485 Juniper Networks 486 Canada 488 Email:tsaad@juniper.net 490 9. References 492 9.1. Normative References 494 [I-D.ietf-spring-segment-routing-policy] 495 Filsfils, C., Talaulikar, K., Voyer, D., Bogdanov, A., and 496 P. Mattes, "Segment Routing Policy Architecture", draft- 497 ietf-spring-segment-routing-policy-09 (work in progress), 498 November 2020. 500 [I-D.ietf-spring-sr-replication-segment] 501 Voyer, D., Filsfils, C., Parekh, R., Bidgoli, H., and Z. 502 Zhang, "SR Replication Segment for Multi-point Service 503 Delivery", draft-ietf-spring-sr-replication-segment-02 504 (work in progress), October 2020. 506 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 507 Requirement Levels", BCP 14, RFC 2119, 508 DOI 10.17487/RFC2119, March 1997, 509 . 511 [RFC8402] Filsfils, C., Ed., Previdi, S., Ed., Ginsberg, L., 512 Decraene, B., Litkowski, S., and R. Shakir, "Segment 513 Routing Architecture", RFC 8402, DOI 10.17487/RFC8402, 514 July 2018, . 516 9.2. Informative References 518 [I-D.filsfils-spring-srv6-net-pgm-illustration] 519 Filsfils, C., Camarillo, P., Li, Z., Matsushima, S., 520 Decraene, B., Steinberg, D., Lebrun, D., Raszuk, R., and 521 J. Leddy, "Illustrations for SRv6 Network Programming", 522 draft-filsfils-spring-srv6-net-pgm-illustration-03 (work 523 in progress), September 2020. 525 [I-D.ietf-bess-mvpn-evpn-aggregation-label] 526 Zhang, Z., Rosen, E., Lin, W., Li, Z., and I. Wijnands, 527 "MVPN/EVPN Tunnel Aggregation with Common Labels", draft- 528 ietf-bess-mvpn-evpn-aggregation-label-05 (work in 529 progress), January 2021. 531 [I-D.ietf-spring-srv6-network-programming] 532 Filsfils, C., Camarillo, P., Leddy, J., Voyer, D., 533 Matsushima, S., and Z. Li, "SRv6 Network Programming", 534 draft-ietf-spring-srv6-network-programming-28 (work in 535 progress), December 2020. 537 [RFC7900] Rekhter, Y., Ed., Rosen, E., Ed., Aggarwal, R., Cai, Y., 538 and T. Morin, "Extranet Multicast in BGP/IP MPLS VPNs", 539 RFC 7900, DOI 10.17487/RFC7900, June 2016, 540 . 542 Appendix A. Illustration of SR P2MP Policy and P2MP Tree 544 Consider the following topology: 546 R3------R6 547 PCE--/ \ 548 R1----R2----R5-----R7 549 \ / 550 +--R4---+ 552 Figure 1 554 In these examples, the Node-SID of a node Rn is N-SIDn and Adjacency- 555 SID from node Rm to node Rn is A-SIDmn. Interface between Rm and Rn 556 is Lmn. 558 For SRv6, the reader is expected to be familiar with SRv6 Network 559 Programming [I-D.ietf-spring-srv6-network-programming] to follow the 560 examples. We use SID allocation scheme, reproduced below, from 561 Illustrations for SRv6 Network Programming 562 [I-D.filsfils-spring-srv6-net-pgm-illustration] 564 2001:db8::/32 is an IPv6 block allocated by a RIR to the operator 565 2001:db8:0::/48 is dedicated to the internal address space 567 2001:db8:cccc::/48 is dedicated to the internal SRv6 SID space 569 We assume a location expressed in 64 bits and a function expressed 570 in 16 bits 572 Node k has a classic IPv6 loopback address 2001:db8::k/128 which 573 is advertised in the IGP 575 Node k has 2001:db8:cccc:k::/64 for its local SID space. Its SIDs 576 will be explicitly assigned from that block 578 Node k advertises 2001:db8:cccc:k::/64 in its IGP 580 Function :1:: (function 1, for short) represents the End function 581 with PSP support 583 Function :Cn:: (function Cn, for short) represents the End.X 584 function to Node n 586 Function :C1n: (function C1n for short) represents the End.X 587 function to Node n with USD 589 Each node k has: 591 An explicit SID instantiation 2001:db8:cccc:k:1::/128 bound to an 592 End function with additional support for PSP 594 An explicit SID instantiation 2001:db8:cccc:k:Cj::/128 bound to an 595 End.X function to neighbor J with additional support for PSP 597 An explicit SID instantiation 2001:db8:cccc:k:C1j::/128 bound to 598 an End.X function to neighbor J with additional support for USD 600 Assume PCE is provisioned following SR P2MP policy at Root R1 with 601 Tree-ID T-ID: 603 SR P2MP Policy : 604 Leaf Nodes: {R2, R6, R7} 605 Candidate-path 1: 606 Optimize: IGP metric 607 Tree-SID: T-SID1 609 The PCE is responsible for P2MP tree computation. Assume PCE 610 instantiates P2MP trees by signalling non-shared Replication segments 611 i.e. Replication-ID of these Replication segments is . 612 If a Candidate-path can have multiple instances of P2MP trees, the 613 Replication-ID is . In this example, we 614 assume one instance of P2MP tree for a candidate-path. All 615 Replication segments use the Tree-SID T-SID1 as Replication-SID. For 616 SRv6, assume the Replication SID at node k, bound to an End.Replcate 617 function, is 2001:db8:cccc:k:FA::/128. 619 A.1. P2MP Tree with non-adjacent Replication Segments 621 Assume PCE computes a P2MP tree with Root node R1, Intermediate and 622 Leaf node R2, and Leaf nodes R6 and R7. The PCE instantiates the 623 P2MP tree by stitching Replication segments at R1, R2, R6 and R7. 624 Replication segment at R1 replicates to R2. Replication segment at 625 R2 replicates to R6 and R7. Note nodes R3, R4 and R5 do not have any 626 Replication segment state for the tree. 628 A.1.1. SR-MPLS 630 The Replication segment state at nodes R1, R2, R6 and R7 is shown 631 below. 633 Replication segment at R1: 635 Replication segment : 636 Replication SID: T-SID1 637 Replication State: 638 R2: L12> 640 Replication to R2 steers packet directly to the node on interface 641 L12. 643 Replication segment at R2: 645 Replication segment : 646 Replication SID: T-SID1 647 Replication State: 648 R2: 649 R6: 650 R7: 652 R2 is a Bud-Node. It performs role of Leaf as well as a transit node 653 replicating to R6 and R7. Replication to R6, using N-SID6, steers 654 packet via IGP shortest path to that node. Replication to R7, using 655 N-SID7, steers packet via IGP shortest path to R7 via either R5 or R4 656 based on ECMP hashing. 658 Replication segment at R6: 660 Replication segment : 661 Replication SID: T-SID1 662 Replication State: 663 R6: 665 Replication segment at R7: 667 Replication segment : 668 Replication SID: T-SID1 669 Replication State: 670 R7: 672 When a packet is steered into the SR P2MP Policy at R1: 674 o Since R1 is directly connected to R2, R1 performs PUSH operation 675 with just label for the replicated copy and sends it to 676 R2 on interface L12. 678 o R2, as Leaf, performs NEXT operation, pops T-SID1 label and 679 delivers the payload. For replication to R6, R2 performs a PUSH 680 operation of N-SID6, to send label stack to R3. 681 R3 is the penultimate hop for N-SID6; it performs penultimate hop 682 popping, which corresponds to the NEXT operation and the packet is 683 then sent to R6 with in the label stack. For replication 684 to R7, R2 performs a PUSH operation of N-SID7, to send 685 label stack to R4, one of IGP ECMP nexthops 686 towards R7. R4 is the penultimate hop for N-SID6; it performs 687 penultimate hop popping, which corresponds to the NEXT operation 688 and the packet is then sent to R7 with in the label 689 stack. 691 o R6, as Leaf, performs NEXT operation, pops T-SID1 label and 692 delivers the payload. 694 o R7, as Leaf, performs NEXT operation, pops R-SID7 label and 695 delivers the payload. 697 A.1.2. SRv6 699 For SRv6, the replicated packet from R2 to R7 has to traverse R4 700 using a SR-TE policy, Policy27. The policy has one SID in segment 701 list: End.X function with USD of R4 to R7 . The Replication segment 702 state at nodes R1, R2, R6 and R7 is shown below. 704 Policy27: <2001:db8:cccc:4:C17::> 706 Replication segment at R1: 708 Replication segment : 709 Replication SID: 2001:db8:cccc:1:FA:: 710 Replication State: 711 R2: <2001:db8:cccc:2:FA::->L12> 713 Replication to R2 steers packet directly to the node on interface 714 L12. 716 Replication segment at R2: 718 Replication segment : 719 Replication SID: 2001:db8:cccc:2:FA:: 720 Replication State: 721 R2: 722 R6: <2001:db8:cccc:6:FA::> 723 R7: <2001:db8:cccc:7:FA:: -> Policy27> 725 R2 is a Bud-Node. It performs role of Leaf as well as a transit node 726 replicating to R6 and R7. Replication to R6, steers packet via IGP 727 shortest path to that node. Replication to R7, via SR-TE policy, 728 first encapsulates the packet using H.Encaps and then steers the 729 outer packet to R4. End.X USD on R4 decapsulates outer header and 730 sends the original inner packet to R7. 732 Replication segment at R6: 734 Replication segment : 735 Replication SID: 2001:db8:cccc:6:FA:: 736 Replication State: 737 R6: 739 Replication segment at R7: 741 Replication segment : 742 Replication SID: 2001:db8:cccc:7:FA:: 743 Replication State: 744 R7: 746 When a packet (A,B2) is steered into the SR P2MP Policy at R1 using 747 H.Encaps.Replicate behavior: 749 o Since R1 is directly connected to R2, R1 sends replicated copy 750 (2001:db8::1, 2001:db8:cccc:2:FA::) (A,B2) to R2 on interface L12. 752 o R2, as Leaf removes outer IPv6 header and delivers the payload. 753 R2, as a bud node, also replicates the packet. 755 o 756 * For replication to R6, R2 sends (2001:db8::1, 757 2001:db8:cccc:6:FA::) (A,B2) to R3. R3 forwards the packet 758 using 2001:db8:cccc:6::/64 packet to R6. 760 * For replication to R7 using Policy27, R2 encapsulates and sends 761 (2001:db8::2, 2001:db8:cccc:4:C17::) (2001:db8::1, 762 2001:db8:cccc:7:FA::) (A,B2) to R4. R4 performs End.X USD 763 behavior, decapsulates outer IPv6 header and sends 764 (2001:db8::1, 2001:db8:cccc:7:FA::) (A,B2) to R7. 766 o R6, as Leaf, removes outer IPv6 header and delivers the payload. 768 o R7, as Leaf, removes outer IPv6 header and delivers the payload. 770 A.2. P2MP Tree with adjacent Replication Segments 772 Assume PCE computes a P2MP tree with Root node R1, Intermediate and 773 Leaf node R2, Intermediate nodes R3 and R5, and Leaf nodes R6 and R7. 774 The PCE instantiates the P2MP tree by stitching Replication segments 775 at R1, R2, R3, R5, R6 and R7. Replication segment at R1 replicates 776 to R2. Replication segment at R2 replicates to R3 and R5. 777 Replication segment at R3 replicates to R6. Replication segment at 778 R5 replicates to R7. Note node R4 does not have any Replication 779 segment state for the tree. 781 A.2.1. SR-MPLS 783 The Replication segment state at nodes R1, R2, R3, R5, R6 and R7 is 784 shown below. 786 Replication segment at R1: 788 Replication segment : 789 Replication SID: T-SID1 790 Replication State: 791 R2: L12> 793 Replication to R2 steers packet directly to the node on interface 794 L12. 796 Replication segment at R2: 798 Replication segment : 799 Replication SID: T-SID1 800 Replication State: 801 R2: 802 R3: L23> 803 R5: L25> 805 R2 is a Bud-Node. It performs role of Leaf as well as a transit node 806 replicating to R3 and R5. Replication to R3, steers packet directly 807 to the node on L23. Replication to R5, steers packet directly to the 808 node on L25. 810 Replication segment at R3: 812 Replication segment : 813 Replication SID: T-SID1 814 Replication State: 815 R6: L36> 817 Replication to R6, steers packet directly to the node on L36. 819 Replication segment at R5: 821 Replication segment : 822 Replication SID: T-SID1 823 Replication State: 824 R7: L57> 826 Replication to R7, steers packet directly to the node on L57. 828 Replication segment at R6: 830 Replication segment : 831 Replication SID: T-SID1 832 Replication State: 833 R6: 835 Replication segment at R7: 837 Replication segment : 838 Replication SID: T-SID1 839 Replication State: 840 R7: 842 When a packet is steered into the SR P2MP Policy at R1: 844 o Since R1 is directly connected to R2, R1 performs PUSH operation 845 with just label for the replicated copy and sends it to 846 R2 on interface L12. 848 o R2, as Leaf, performs NEXT operation, pops T-SID1 label and 849 delivers the payload. It also performs PUSH operation on T-SID1 850 for replication to R3 and R5. For replication to R6, R2 sends 851 label stack to R3 on interface L23. For replication to 852 R5, R2 sends label stack to R5 on interface L25. 854 o R3 performs NEXT operation on T-SID1 and performs a PUSH operation 855 for replication to R6 and sends label stack to R6 on 856 interface L36. 858 o R5 performs NEXT operation on T-SID1 and performs a PUSH operation 859 for replication to R7 and sends label stack to R7 on 860 interface L57. 862 o R6, as Leaf, performs NEXT operation, pops T-SID1 label and 863 delivers the payload. 865 o R7, as Leaf, performs NEXT operation, pops R-SID7 label and 866 delivers the payload. 868 A.2.2. SRv6 870 The Replication segment state at nodes R1, R2, R3, R5, R6 and R7 is 871 shown below. 873 Replication segment at R1: 875 Replication segment : 876 Replication SID: 2001:db8:cccc:1:FA:: 877 Replication State: 878 R2: <2001:db8:cccc:2:FA::->L12> 880 Replication to R2 steers packet directly to the node on interface 881 L12. 883 Replication segment at R2: 885 Replication segment : 886 Replication SID: 2001:db8:cccc:2:FA:: 887 Replication State: 888 R2: 889 R3: <2001:db8:cccc:3:FA::->L23> 890 R5: <2001:db8:cccc:5:FA::->L25> 892 R2 is a Bud-Node. It performs role of Leaf as well as a transit node 893 replicating to R3 and R5. Replication to R3, steers packet directly 894 to the node on L23. Replication to R5, steers packet directly to the 895 node on L25. 897 Replication segment at R3: 899 Replication segment : 900 Replication SID: 2001:db8:cccc:3:FA:: 901 Replication State: 902 R6: <2001:db8:cccc:6:FA::->L36> 904 Replication to R6, steers packet directly to the node on L36. 906 Replication segment at R5: 908 Replication segment : 909 Replication SID: 2001:db8:cccc:5:FA:: 910 Replication State: 911 R7: <2001:db8:cccc:7:FA::->L57> 913 Replication to R7, steers packet directly to the node on L57. 915 Replication segment at R6: 917 Replication segment : 918 Replication SID: 2001:db8:cccc:6:FA:: 919 Replication State: 920 R6: 922 Replication segment at R7: 924 Replication segment : 925 Replication SID: 2001:db8:cccc:7:FA:: 926 Replication State: 927 R7: 929 When a packet (A,B2) is steered into the SR P2MP Policy at R1 using 930 H.Encaps.Replicate behavior: 932 o Since R1 is directly connected to R2, R1 sends replicated copy 933 (2001:db8::1, 2001:db8:cccc:2:FA::) (A,B2) to R2 on interface L12. 935 o R2, as Leaf, removes outer IPv6 header and delivers the payload. 936 R2, as a bud node, also replicates the packet. For replication to 937 R3, R2 sends (2001:db8::1, 2001:db8:cccc:3:FA::) (A,B2) to R3 on 938 interface L23. For replication to R5, R2 sends (2001:db8::1, 939 2001:db8:cccc:5:FA::) (A,B2) to R5 on interface L25. 941 o R3 replicates and sends (2001:db8::1, 2001:db8:cccc:6:FA::) (A,B2) 942 to R6 on interface L36. 944 o R5 replicates and sends (2001:db8::1, 2001:db8:cccc:7:FA::) (A,B2) 945 to R7 on interface L57. 947 o R6, as Leaf, removes outer IPv6 header and delivers the payload. 949 o R7, as Leaf, removes outer IPv6 header and delivers the payload. 951 Authors' Addresses 953 Daniel Voyer (editor) 954 Bell Canada 955 Montreal 956 CA 958 Email: daniel.voyer@bell.ca 960 Clarence Filsfils 961 Cisco Systems, Inc. 962 Brussels 963 BE 965 Email: cfilsfil@cisco.com 967 Rishabh Parekh 968 Cisco Systems, Inc. 969 San Jose 970 US 972 Email: riparekh@cisco.com 974 Hooman Bidgoli 975 Nokia 976 Ottawa 977 CA 979 Email: hooman.bidgoli@nokia.com 981 Zhaohui Zhang 982 Juniper Networks 984 Email: zzhang@juniper.net