rfc9960v1.txt   rfc9960.txt 
skipping to change at line 98 skipping to change at line 98
A.1.2. SRv6 A.1.2. SRv6
A.2. P2MP Tree with Adjacent Replication Segments A.2. P2MP Tree with Adjacent Replication Segments
A.2.1. SR-MPLS A.2.1. SR-MPLS
A.2.2. SRv6 A.2.2. SRv6
Acknowledgements Acknowledgements
Contributors Contributors
Authors' Addresses Authors' Addresses
1. Introduction 1. Introduction
[RFC9524] defines a Replication segment that enables a Segment [RFC9524] defines a Replication segment that enables a SR node to
Routing (SR) node to replicate traffic to multiple downstream nodes replicate traffic to multiple downstream nodes in an SR domain
in an SR domain [RFC8402]. A Point-to-Multipoint (P2MP) service can [RFC8402]. A Point-to-Multipoint (P2MP) service can be realized by a
be realized by a single Replication segment spanning from the ingress single Replication segment spanning from the ingress node to the
node to the egress nodes of the service. This effectively achieves egress nodes of the service. This effectively achieves ingress
ingress replication, which is inefficient since the traffic of the replication, which is inefficient since the traffic of the P2MP
P2MP service may traverse the same set of nodes and links in the SR service may traverse the same set of nodes and links in the SR domain
domain on its path from the ingress node to the egress nodes. on its path from the ingress node to the egress nodes.
A multipoint service delivery can be efficiently realized with a P2MP A multipoint service delivery can be efficiently realized with a P2MP
tree in a Segment Routing domain. A P2MP tree spans from a Root node tree in a SR domain. A P2MP tree spans from a Root node to a set of
to a set of Leaf nodes via intermediate Replication nodes. It Leaf nodes via intermediate Replication nodes. It consists of a
consists of a Replication segment at the Root node, stitched to one Replication segment at the Root node, and that Replication segment is
or more Replication segments at Leaf nodes and intermediate stitched to one or more Replication segments between the Leaf nodes
Replication nodes. A Bud node [RFC9524] is a node that is both a and intermediate Replication nodes. A Bud node [RFC9524] is a node
Replication node and a Leaf node. Any mention of "Leaf node(s)" in that is both a Replication node and a Leaf node. Any mention of
this document should be considered as referring to "Leaf or Bud "Leaf node(s)" in this document should be considered as referring to
node(s)". "Leaf or Bud node(s)".
An SR P2MP Policy defines the Root and Leaf nodes of a P2MP tree. It An SR P2MP Policy defines the Root and Leaf nodes of a P2MP tree. It
has one or more candidate paths (CPs) provisioned with optional has one or more CPs provisioned with optional constraints and/or
constraints and/or optimization objectives. optimization objectives.
A controller computes P2MP tree instances of the candidate paths A controller computes PTIs of the CPs using the constraints and
using the constraints and objectives specified in the candidate path. objectives specified in the CP. The controller then instantiates a
The controller then instantiates a P2MP tree instance in the SR PTI in the SR domain by signaling Replication segments to the Root,
domain by signaling Replication segments to the Root, Replication, Replication, and Leaf nodes. A Path Computation Element (PCE)
and Leaf nodes. A Path Computation Element (PCE) [RFC4655] is one [RFC4655] is one example of such a controller. In other cases, a PTI
example of such a controller. In other cases, a P2MP tree instance
can be installed using the Network Configuration Protocol (NETCONF) / can be installed using the Network Configuration Protocol (NETCONF) /
YANG or the Command Line Interface (CLI) on the Root, Replication, YANG or the Command Line Interface (CLI) on the Root, Replication,
and Leaf nodes. and Leaf nodes.
The Replication segments of a P2MP tree instance can be instantiated The Replication segments of a PTI can be instantiated for SR-MPLS
for SR-MPLS [RFC8660] and SRv6 [RFC8986] data planes, enabling [RFC8660] and SRv6 [RFC8986] data planes, enabling efficient packet
efficient packet replication within an SR domain. replication within an SR domain.
This document updates the Replication-ID portion of the Replication This document updates the Replication-ID portion of the Replication
segment identifier (Replication-SID) specified in Section 2 of segment identifier (Replication-SID) specified in Section 2 of
[RFC9524]. [RFC9524].
1.1. Terminology 1.1. Terminology
This section defines terms used frequently in this document. Refer This section defines terms used frequently in this document. Refer
to the Terminology section of [RFC9524] for the definitions of to the Terminology section of [RFC9524] for the definitions of
Replication segment and other terms associated with it and the Replication segment and other terms associated with it and the
definitions of Root, Leaf, and Bud nodes. definitions of Root, Leaf, and Bud nodes.
SR P2MP Policy: An SR P2MP Policy is a framework to construct P2MP SR P2MP Policy: An SR P2MP Policy is a framework to construct P2MP
trees in an SR domain by specifying Root and Leaf nodes. trees in an SR domain by specifying Root and Leaf nodes.
Tree-ID: An identifier of an SR P2MP Policy in context of the Root Tree-ID: An identifier of an SR P2MP Policy in context of the Root
node. node.
Candidate path (CP): A CP of the SR P2MP Policy defines topological Candidate path (CP): A CP of the SR P2MP Policy defines topological
or resource constraints and optimization objectives that are used or resource constraints and optimization objectives that are used
to compute and construct P2MP tree instances. to compute and construct PTIs.
P2MP tree instance (PTI): A PTI of a candidate path is constructed P2MP tree instance (PTI): A PTI of a CP is constructed by stitching
by stitching Replication segments between the Root and Leaf nodes Replication segments between the Root and Leaf nodes of an SR P2MP
of an SR P2MP Policy. Its topology is determined by the Policy. Its topology is determined by the constraints and
constraints and optimization objective of the candidate path. optimization objective of the CP.
Instance-ID: An identifier of a P2MP tree instance in context of the Instance-ID: An identifier of a PTI in context of the SR P2MP
SR P2MP Policy. Policy.
Tree-SID: The Replication-SID of the Replication segment at the Root Tree-SID: The Replication-SID of the Replication segment at the Root
node of a P2MP tree instance. node of a PTI.
1.2. Requirements Language 1.2. Requirements Language
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in "OPTIONAL" in this document are to be interpreted as described in
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here. capitals, as shown here.
2. SR P2MP Policy 2. SR P2MP Policy
An SR P2MP Policy is used to instantiate P2MP trees between Root and An SR P2MP Policy is used to instantiate P2MP trees between Root and
Leaf nodes in an SR domain. Note that multiple SR P2MP Policies can Leaf nodes in an SR domain. Note that multiple SR P2MP Policies can
have identical Root nodes and identical sets of Leaf nodes. An SR have identical Root nodes and identical sets of Leaf nodes. An SR
P2MP Policy has one or more candidate paths [RFC9256]. P2MP Policy has one or more CPs [RFC9256].
2.1. SR P2MP Policy Identification 2.1. SR P2MP Policy Identification
An SR P2MP Policy is uniquely identified by the tuple <Root, Tree- An SR P2MP Policy is uniquely identified by the tuple <Root, Tree-
ID>, where: ID>, where:
* Root: The IP address of the Root node of P2MP trees instantiated * Root: The IP address of the Root node of P2MP trees instantiated
by the SR P2MP Policy. by the SR P2MP Policy.
* Tree-ID: A 32-bit unsigned integer that uniquely identifies the SR * Tree-ID: A 32-bit unsigned integer that uniquely identifies the SR
P2MP Policy in the context of the Root node. P2MP Policy in the context of the Root node.
2.2. Components of an SR P2MP Policy 2.2. Components of an SR P2MP Policy
An SR P2MP Policy consists of the following elements: An SR P2MP Policy consists of the following elements:
* Leaf nodes: A set of nodes that terminate the P2MP trees of the SR * Leaf nodes: A set of nodes that terminate the P2MP trees of the SR
P2MP Policy. P2MP Policy.
* Candidate paths: A set of possible paths that define constraints * Candidate paths: A set of possible paths that define constraints
and optimization objectives for P2MP tree instances of the SR P2MP and optimization objectives for PTIs of the SR P2MP Policy.
Policy.
An SR P2MP Policy and its CPs are provisioned on a controller (see An SR P2MP Policy and its CPs are provisioned on a controller (see
Section 5) or the Root node or both, depending upon the provisioning Section 5) or the Root node or both, depending upon the provisioning
model. After provisioning, the Policy and its CPs are instantiated model. After provisioning, the Policy and its CPs are instantiated
on the Root node or the controller by using a signaling protocol. on the Root node or the controller by using a signaling protocol.
2.3. Candidate Paths and P2MP Tree Instances 2.3. Candidate Paths and P2MP Tree Instances
An SR P2MP Policy has one or more CPs. The tuple <Protocol-Origin, An SR P2MP Policy has one or more CPs. The tuple <Protocol-Origin,
Originator, Discriminator>, as specified in Section 2.6 of [RFC9256], Originator, Discriminator>, as specified in Section 2.6 of [RFC9256],
uniquely identifies a candidate path in the context of an SR P2MP uniquely identifies a CP in the context of an SR P2MP Policy. The
Policy. The semantics of Protocol-Origin, Originator, and semantics of Protocol-Origin, Originator, and Discriminator fields of
Discriminator fields of the identifier are the same as in Sections the identifier are the same as in Sections 2.3, 2.4, and 2.5 of
2.3, 2.4, and 2.5 of [RFC9256], respectively. [RFC9256], respectively.
The Root node of the SR P2MP Policy selects the active candidate path The Root node of the SR P2MP Policy selects the active CP based on
based on the tiebreaking rules defined in Section 2.9 of [RFC9256]. the tiebreaking rules defined in Section 2.9 of [RFC9256].
A CP may include topological and/or resource constraints and A CP may include topological and/or resource constraints and
optimization objectives that influence the computation of the PTIs of optimization objectives that influence the computation of the PTIs of
the CP. the CP.
A candidate path has zero or more PTIs. A candidate path does not A CP has zero or more PTIs. A CP does not have a PTI when the
have a PTI when the controller cannot compute a P2MP tree from the controller cannot compute a P2MP tree from the network topology based
network topology based on the constraints and/or optimization on the constraints and/or optimization objectives of the CP. A CP
objectives of the CP. A candidate path can have more than one PTI, can have more than one PTI, e.g., during the Make-Before-Break (see
e.g., during the Make-Before-Break (see Section 5.3) procedure to Section 5.3) procedure to handle a network state change. However,
handle a network state change. However, one and only one PTI MUST be one and only one PTI MUST be the active instance of the CP. If more
the active instance of the CP. If more than one PTI of a CP is than one PTI of a CP is active at same time, and that CP is the
active at same time, and that CP is the active CP of the SR P2MP active CP of the SR P2MP Policy, then duplicate traffic may be
Policy, then duplicate traffic may be delivered to the Leaf nodes. delivered to the Leaf nodes.
A PTI is identified by an Instance-ID. This is an unsigned 16-bit A PTI is identified by an Instance-ID. This is an unsigned 16-bit
number that is unique in context of the SR P2MP Policy of the number that is unique in context of the SR P2MP Policy of the CP.
candidate path.
PTIs are instantiated using Replication segments. Section 2 of PTIs are instantiated using Replication segments. Section 2 of
[RFC9524] specifies the Replication-ID of the Replication segment [RFC9524] specifies the Replication-ID of the Replication-SID tuple
identifier tuple as a variable length field that can be modified as as a variable length field that can be modified as required based on
required based on the use of a Replication segment. However, length the use of a Replication segment. However, length is an imprecise
is an imprecise indicator of the actual structure of the Replication- indicator of the actual structure of the Replication-ID. This
ID. This document updates the Replication-ID of a Replication document updates the Replication-ID of a Replication-SID [RFC9524] to
segment identifier [RFC9524] to be the tuple: <Root, Tree-ID, be the tuple: <Root, Tree-ID, Instance-ID, Node-ID>, where <Root,
Instance-ID, Node-ID>, where <Root, Tree-ID> identifies the SR P2MP Tree-ID> identifies the SR P2MP Policy and Instance-ID identifies the
Policy and Instance-ID identifies the PTI within that SR P2MP Policy. PTI within that SR P2MP Policy. This results in the Replication
This results in the Replication segments used to instantiate a PTI segments used to instantiate a PTI being identified by the tuple:
being identified by the tuple: <Root, Tree-ID, Instance-ID, Node-ID>. <Root, Tree-ID, Instance-ID, Node-ID>. In the simplest case, the
In the simplest case, the Replication-ID of a Replication segment is Replication-ID of a Replication segment is a 32-bit number as per
a 32-bit number as per Section 2 of [RFC9524]. For this use case, Section 2 of [RFC9524] for which the Root MUST be zero (0.0.0.0 for
the Root MUST be zero (0.0.0.0 for IPv4 and :: for IPv6) and the IPv4 and :: for IPv6), the Instance-ID MUST be zero, and the 32-bit
Instance-ID MUST be zero and the 32-bit Tree-ID effectively make the Tree-ID to effectively make the Replication-SID <[0.0.0.0 or ::],
Replication segment identifier <[0.0.0.0 or ::], Tree-ID, 0, Node- Tree-ID, 0, Node-ID>.
ID>.
PTIs may have different tree topologies due to possibly differing PTIs may have different tree topologies due to possibly differing
constraints and optimization objectives of the CPs in an SR P2MP constraints and optimization objectives of the CPs in an SR P2MP
Policy and across different policies. Even within a given CP, two Policy and across different policies. Even within a given CP, two
PTIs of that CP, say during the Make-Before-Break procedure, are PTIs of that CP, say during the Make-Before-Break procedure, are
likely to have different tree topologies due to a change in the likely to have different tree topologies due to a change in the
network state. Since the PTIs may have different tree topologies, network state. Since the PTIs may have different tree topologies,
their replication states also differ at various nodes in the SR their replication states also differ at various nodes in the SR
domain. Therefore, each PTI has its own Replication segment and a domain. Therefore, each PTI has its own Replication segment and a
unique Replication-SID at a given node in the SR domain. unique Replication-SID at a given node in the SR domain.
skipping to change at line 301 skipping to change at line 297
the PTI as it simplifies operations and troubleshooting. However, the PTI as it simplifies operations and troubleshooting. However,
the Replication-SIDs of the Replication segments at the intermediate the Replication-SIDs of the Replication segments at the intermediate
Replication nodes and the Leaf nodes MAY differ from the Tree-SID. Replication nodes and the Leaf nodes MAY differ from the Tree-SID.
For SRv6, Replication-SID is the FUNCT portion of the SRv6 segment ID For SRv6, Replication-SID is the FUNCT portion of the SRv6 segment ID
(SID) [RFC8986] [RFC9524]. Note that even if the Tree-SID is the (SID) [RFC8986] [RFC9524]. Note that even if the Tree-SID is the
Replication-SID of all the Replication segments of a PTI, the locator Replication-SID of all the Replication segments of a PTI, the locator
(LOC) portion of the SRv6 SID [RFC8986] differs for the Root node, (LOC) portion of the SRv6 SID [RFC8986] differs for the Root node,
the intermediate Replication nodes, and the Leaf nodes of the PTI. the intermediate Replication nodes, and the Leaf nodes of the PTI.
An SR P2MP Policy has a Binding SID (BSID). The BSID is used to An SR P2MP Policy has a Binding SID (BSID). The BSID is used to
steer traffic into an SR Policy, as described below, when the Root steer traffic into an SR P2MP Policy, as described below, when the
node is not the ingress node of the SR domain where the traffic Root node is not the ingress node of the SR domain where the traffic
arrives. The packets are steered from the ingress node to the Root arrives. The packets are steered from the ingress node to the Root
node using a segment list with the BSID as the last segment in the node using a segment list with the BSID as the last segment in the
list. In this case, it is RECOMMENDED that the BSID of an SR P2MP list. In this case, it is RECOMMENDED that the BSID of an SR P2MP
Policy SHOULD be constant throughout the lifetime of the policy so Policy SHOULD be constant throughout the lifetime of the policy so
the steering of traffic to the Root node remains unchanged. The BSID the steering of traffic to the Root node remains unchanged. The BSID
of an SR P2MP Policy MAY be the Tree-SID of the active P2MP instance of an SR P2MP Policy MAY be the Tree-SID of the active P2MP instance
of the active CP of the policy. In this case, the BSID of an SR P2MP of the active CP of the policy. In this case, the BSID of an SR P2MP
Policy changes when the active CP or the active PTI of the SR P2MP Policy changes when the active CP or the active PTI of the SR P2MP
Policy changes. Note that the BSID is not required to steer traffic Policy changes. Note that the BSID is not required to steer traffic
into an SR P2MP Policy when the Root node of an SR P2MP Policy is into an SR P2MP Policy when the Root node of an SR P2MP Policy is
skipping to change at line 329 skipping to change at line 325
packet to the active PTI of the active CP of an SR P2MP Policy packet to the active PTI of the active CP of an SR P2MP Policy
based on local forwarding policy, and it is replicated with the based on local forwarding policy, and it is replicated with the
encapsulated Replication-SIDs of the downstream nodes. The encapsulated Replication-SIDs of the downstream nodes. The
procedures to map an incoming packet to an SR P2MP Policy are out procedures to map an incoming packet to an SR P2MP Policy are out
of scope of this document. It is RECOMMENDED that an of scope of this document. It is RECOMMENDED that an
implementation provide a mechanism to examine the result of implementation provide a mechanism to examine the result of
application of the local forwarding policy, i.e., provide application of the local forwarding policy, i.e., provide
information about the traffic mapped to an SR P2MP Policy and the information about the traffic mapped to an SR P2MP Policy and the
active CP and active PTI of the policy. active CP and active PTI of the policy.
* Tree-SID-based forwarding: The Binding SID, which may be the Tree- * Tree-SID-based forwarding: The BSID, which may be the Tree-SID of
SID of the active PTI, in an incoming packet is used to map the the active PTI, in an incoming packet is used to map the packet to
packet to the active PTI. The Binding SID in the incoming packet the active PTI. The BSID in the incoming packet is replaced with
is replaced with the Tree-SID of the active PTI of the active CP, the Tree-SID of the active PTI of the active CP, and the packet is
and the packet is replicated with the Replication-SIDs of the replicated with the Replication-SIDs of the downstream nodes.
downstream nodes.
For local-policy-based forwarding with SR-MPLS, the TTL for the Root For local-policy-based forwarding with SR-MPLS, the TTL for the Root
node SHOULD set the TTL in the encapsulating MPLS header so that the node SHOULD set the TTL in the encapsulating MPLS header so that the
replicated packet can reach the furthest Leaf node. The Root MAY set replicated packet can reach the furthest Leaf node. The Root MAY set
the TTL in the encapsulating MPLS header from the payload. In this the TTL in the encapsulating MPLS header from the payload. In this
case, the TTL may not be sufficient for the replicated packet to case, the TTL may not be sufficient for the replicated packet to
reach the furthest node. For SRv6, Section 2.2 of [RFC9524] provides reach the furthest node. For SRv6, Section 2.2 of [RFC9524] provides
guidance to set the IPv6 Hop Limit of the encapsulating IPv6 header. guidance to set the IPv6 Hop Limit of the encapsulating IPv6 header.
4. P2MP Tree Instance 4. P2MP Tree Instance
A P2MP tree instance within an SR domain establishes a forwarding A PTI within an SR domain establishes a forwarding structure that
structure that connects a Root node to a set of Leaf nodes via a connects a Root node to a set of Leaf nodes via a series of
series of intermediate Replication nodes. The tree consists of: intermediate Replication nodes. The tree consists of:
* A Replication segment at the Root node. * A Replication segment at the Root node.
* Zero or more Replication segments at intermediate Replication * Zero or more Replication segments at intermediate Replication
nodes. nodes.
* Replication segments at the Leaf nodes. * Replication segments at the Leaf nodes.
4.1. Replication Segments at Leaf Nodes 4.1. Replication Segments at Leaf Nodes
skipping to change at line 397 skipping to change at line 392
Root node or assigned from the DCB. This SRv6 SID MUST be encoded as Root node or assigned from the DCB. This SRv6 SID MUST be encoded as
the last segment in the Segment List of the Segment Routing Header the last segment in the Segment List of the Segment Routing Header
[RFC8754] by the Root node to derive the packet processing context [RFC8754] by the Root node to derive the packet processing context
(PPC) for the service, as described in Section 2.2 of [RFC9524], at a (PPC) for the service, as described in Section 2.2 of [RFC9524], at a
Leaf node. Leaf node.
4.2. Shared Replication Segments 4.2. Shared Replication Segments
A Replication segment MAY be shared across different PTIs. One A Replication segment MAY be shared across different PTIs. One
simple use of a shared Replication segment is for local protection on simple use of a shared Replication segment is for local protection on
a Replication node. A shared Replication segment can protect a Replication node. Assume a Replication node, say node X, has
Replication segments of different PTIs against an adjacency or path multiple PTIs. Assume the Replications segments of these PTIs
failure to the common downstream node of these Replication segments. replicate to a downstream node, say node Y, amongst other downstream
nodes. This node Y is a common downstream node of these Replication
segments at node X. A Replication segment is established to protect
the adjacency or path between node X and node Y; this Replication
segment can be shared across all the Replication segments of the PTIs
replicating from node X to node Y.
A shared Replication segment MUST be identified using a Root set to A shared Replication segment MUST be identified using a Root set to
zero (0.0.0.0 for IPv4 and :: for IPv6), an Instance-ID set to zero, zero (0.0.0.0 for IPv4 and :: for IPv6), an Instance-ID set to zero,
and a Tree-ID that is unique within the context of the node where the and a Tree-ID that is unique within the context of the node where the
Replication segment is instantiated. The Root is zero because a Replication segment is instantiated. The Root is zero because a
shared Replication segment is not associated with a particular SR shared Replication segment is not associated with a particular SR
P2MP Policy or a PTI. Note that the shared Replication segment P2MP Policy or a PTI. Note that the shared Replication-SID conforms
identifier conforms with the updated Replication-ID definition in with the updated Replication-ID definition in Section 2.3.
Section 2.3.
It is possible for different PTIs to share a P2MP tree at a It is possible for different PTIs to share a P2MP tree at a
Replication node. This allows a common sub-tree to be shared across Replication node. This allows a common sub-tree to be shared across
PTIs whose tree topologies are identical in some portion of an SR PTIs whose tree topologies are identical in some portion of an SR
domain. The procedures to share a P2MP tree across PTIs are outside domain. The procedures to share a P2MP tree across PTIs are outside
the scope of this document. the scope of this document.
4.3. Packet Forwarding in a P2MP Tree Instance 4.3. Packet Forwarding in a P2MP Tree Instance
When a packet is steered into a PTI, the Replication segment at the When a packet is steered into a PTI, the Replication segment at the
skipping to change at line 441 skipping to change at line 440
packet through its associated Replication segments until it packet through its associated Replication segments until it
reaches all Leaf nodes. reaches all Leaf nodes.
A Replication node and a downstream node can be non-adjacent. In A Replication node and a downstream node can be non-adjacent. In
this case, the replicated packet has to traverse a path to reach the this case, the replicated packet has to traverse a path to reach the
downstream node. For SR-MPLS, this is achieved by inserting one or downstream node. For SR-MPLS, this is achieved by inserting one or
more SIDs before the downstream Replication-SID. For SRv6, the LOC more SIDs before the downstream Replication-SID. For SRv6, the LOC
[RFC8986] of the downstream Replication-SID can guide the packet to [RFC8986] of the downstream Replication-SID can guide the packet to
the downstream node or an optional segment list may be used to steer the downstream node or an optional segment list may be used to steer
the replicated packet on a specific path to the downstream node. For the replicated packet on a specific path to the downstream node. For
details of SRv6 replication to non-adjacent downstream node and IPv6 details of SRv6 replication to a non-adjacent downstream node and
Hop Limit considerations, refer to Section 2.2 of [RFC9524]. IPv6 Hop Limit considerations, refer to Section 2.2 of [RFC9524].
5. Using a Controller to Build a P2MP Tree 5. Using a Controller to Build a P2MP Tree
A controller is instantiated or provisioned with the SR P2MP Policy A controller is instantiated or provisioned with the SR P2MP Policy
and its candidate paths to compute and instantiate PTIs in an SR and its CPs to compute and instantiate PTIs in an SR domain. The
domain. The procedures for provisioning or instantiation of these procedures for provisioning or instantiation of these constructs on a
constructs on a controller are outside the scope of this document. controller are outside the scope of this document.
5.1. SR P2MP Policy on a Controller 5.1. SR P2MP Policy on a Controller
An SR P2MP Policy is provisioned on a controller by an entity that An SR P2MP Policy is provisioned on a controller by an entity that
can be an operator, a network node, or a machine by specifying the can be an operator, a network node, or a machine by specifying the
addresses of the Root, the set of Leaf nodes, and the candidate addresses of the Root, the set of Leaf nodes, and the CPs. In this
paths. In this case, the policy and its CPs are instantiated on the case, the policy and its CPs are instantiated on the Root node using
Root node using a signaling protocol. An SR P2MP Policy, its Leaf a signaling protocol. An SR P2MP Policy, its Leaf nodes, and the CPs
nodes, and the CPs may also be provisioned on the Root node and then may also be provisioned on the Root node and then instantiated on the
instantiated on the controller using a signaling protocol. The controller using a signaling protocol. The procedures and mechanisms
procedures and mechanisms for provisioning and instantiation of an SR for provisioning and instantiation of an SR P2MP Policy and its CPS
P2MP Policy and its CPS on a controller or a Root node are outside on a controller or a Root node are outside the scope of this
the scope of this document. document.
The possible set of constraints and optimization objective of a CP The possible set of constraints and optimization objective of a CP
are described in Section 3 of [SR-POLICY]. Other constraints and are described in Section 3 of [SR-POLICY]. Other constraints and
optimization objectives MAY be used for P2MP tree computation. optimization objectives MAY be used for P2MP tree computation.
5.2. Controller Functions 5.2. Controller Functions
A controller performs the following functions in general: A controller performs the following functions in general:
* Topology Discovery: A controller discovers network topology across * Topology Discovery: A controller discovers network topology across
Interior Gateway Protocol (IGP) areas, levels, or Autonomous Interior Gateway Protocol (IGP) areas, levels, or Autonomous
Systems (ASes). Systems (ASes).
* Capability Exchange: A controller discovers a node's capability to * Capability Exchange: A controller discovers a node's capability to
participate in SR P2MP as well as advertise its capability to participate in an SR P2MP Policy as well as advertise its
support SR P2MP. capability to support the SR P2MP Policy.
5.3. P2MP Tree Compute 5.3. P2MP Tree Compute
A controller computes one or more PTIs for CPs of an SR P2MP Policy. A controller computes one or more PTIs for CPs of an SR P2MP Policy.
A CP may not have any PTIs if a controller cannot compute a P2MP tree A CP may not have any PTIs if a controller cannot compute a P2MP tree
for it. for it.
A controller MUST compute a P2MP tree such that there are no loops in A controller MUST compute a P2MP tree such that there are no loops in
the tree at steady state as required by [RFC9524]. the tree at steady state as required by [RFC9524].
A controller SHOULD modify a PTI of a candidate path on detecting a A controller SHOULD modify a PTI of a CP on detecting a change in the
change in the network topology if the change affects the tree network topology if the change affects the tree instance or when a
instance or when a better path can be found based on the new network better path can be found based on the new network state.
state. Alternatively, the controller MAY decide to implement a Make- Alternatively, the controller MAY decide to implement a Make-Before-
Before-Break approach to minimize traffic loss. The controller can Break approach to minimize traffic loss. The controller can do this
do this by creating a new PTI, activating the new instance once it is by creating a new PTI, activating the new instance once it is
instantiated in the network, and then removing the old PTI. instantiated in the network, and then removing the old PTI.
5.4. SID Management 5.4. SID Management
The controller assigns the Replication-SIDs for the Replication The controller assigns the Replication-SIDs for the Replication
segments of the PTI. segments of the PTI.
The Replication-SIDs of a PTI of a CP of an SR P2MP Policy can be The Replication-SIDs of a PTI of a CP of an SR P2MP Policy can be
either dynamically assigned by the controller or statically assigned either dynamically assigned by the controller or statically assigned
by the entity provisioning the SR P2MP Policy. by the entity provisioning the SR P2MP Policy.
For SR-MPLS, a Replication-SID may be assigned from the SR Local For SR-MPLS, a Replication-SID may be assigned from the SR Local
Block (SRLB) or the SR Global Block (SRGB) [RFC8402]. It is Block (SRLB) or the SR Global Block (SRGB) [RFC8402]. It is
RECOMMENDED to assign a Replication-SID from the SRLB since RECOMMENDED to assign a Replication-SID from the SRLB since
Replication segments are local to each node of the PTI. It is NOT Replication segments are local to each node of the PTI. It is NOT
RECOMMENDED to allocate a Replication-SID from the SRGB since this RECOMMENDED to allocate a Replication-SID from the SRGB since this
block is globally significant the SR domain any it may get depleted block is globally significant in the SR domain any it may get
if significant number of PTIs are instantiated in the SR domain. depleted if a significant number of PTIs are instantiated in the SR
domain.
Section 3 recommends that the Tree-SID be used as the Replication- Section 3 recommends that the Tree-SID be used as the Replication-
SIDs for all the Replication segments of a PTI. It may be feasible SIDs for all the Replication segments of a PTI. It may be feasible
to allocate the same Tree-SID value for all the Replication segments to allocate the same Tree-SID value for all the Replication segments
if the blocks used for allocation are not identical on all the nodes if the blocks used for allocation are not identical on all the nodes
of the PTI or if the particular Tree-SID value in the block is of the PTI or if the particular Tree-SID value in the block is
assigned to some other SID on some node. assigned to some other SID on some node.
A BSID is also assigned for the SR P2MP Policy. The controller MAY A BSID is also assigned for the SR P2MP Policy. The controller MAY
decide to not assign a BSID and allow the Root node of the SR P2MP decide to not assign a BSID and allow the Root node of the SR P2MP
skipping to change at line 546 skipping to change at line 546
A controller may not be aware of all the assignments of SIDs from the A controller may not be aware of all the assignments of SIDs from the
SRGB or the SRLB of the SR domain. If reserved blocks are not used, SRGB or the SRLB of the SR domain. If reserved blocks are not used,
the assignment of Replication-SIDs or BSIDs of SR P2MP Policies from the assignment of Replication-SIDs or BSIDs of SR P2MP Policies from
these blocks may conflict with other SIDs. these blocks may conflict with other SIDs.
5.5. Instantiating P2MP Tree Instance on Nodes 5.5. Instantiating P2MP Tree Instance on Nodes
After computing P2MP trees, the controller instantiates the After computing P2MP trees, the controller instantiates the
Replication segments that compose the PTIs in the SR domain using Replication segments that compose the PTIs in the SR domain using
signaling protocols such as the Path Computation Element signaling protocols such as the Path Computation Element
Communication Protocol (PCEP) [SR-P2MP-PING], BGP [P2MP-BGP], or Communication Protocol (PCEP) [SR-P2MP-PCEP], BGP [P2MP-BGP], or
other mechanisms such as NETCONF/YANG [SR-P2MP-YANG], etc. The other mechanisms such as NETCONF/YANG [SR-P2MP-YANG], etc. The
procedures for the instantiation of the Replication segments in an SR procedures for the instantiation of the Replication segments in an SR
domain are outside the scope of this document. domain are outside the scope of this document.
A node SHOULD report a successful instantiation of a Replication A node SHOULD report a successful instantiation of a Replication
segment. The exact procedure for reporting this is outside the scope segment. The exact procedure for reporting this is outside the scope
of this document. of this document.
The instantiation of a Replication segment on a node may fail, e.g., The instantiation of a Replication segment on a node may fail, e.g.,
when the Replication-SID conflicts with another SID on the node. The when the Replication-SID conflicts with another SID on the node. The
skipping to change at line 624 skipping to change at line 624
6. IANA Considerations 6. IANA Considerations
This document has no IANA actions. This document has no IANA actions.
7. Security Considerations 7. Security Considerations
This document describes how a PTI can be created in an SR domain by This document describes how a PTI can be created in an SR domain by
stitching Replication segments together. Some security stitching Replication segments together. Some security
considerations for Replication segments outlined in [RFC9524] are considerations for Replication segments outlined in [RFC9524] are
also applicable to this document. Following is a brief reminder of also applicable to this document. Following is a brief reminder of
the same. those security considerations.
An SR domain needs protection from outside attackers as described in An SR domain needs protection from outside attackers as described in
[RFC8402], [RFC8754], and [RFC8986]. [RFC8402], [RFC8754], and [RFC8986].
Failure to protect the SR MPLS domain by correctly provisioning MPLS Failure to protect the SR-MPLS domain by correctly provisioning MPLS
support per interface permits attackers from outside the domain to support per interface permits attackers from outside the domain to
send packets to receivers of the multipoint services that use the SR send packets to receivers of the multipoint services that use the SR
P2MP Policies provisioned within the domain. P2MP Policies provisioned within the domain.
Failure to protect the SRv6 domain with inbound Infrastructure Access Failure to protect the SRv6 domain with inbound Infrastructure Access
Control Lists (IACLs) on external interfaces, combined with failure Control Lists (IACLs) on external interfaces, combined with failure
to implement the method described in RFC 2827 [BCP38] or apply IACLs to implement the method described in RFC 2827 [BCP38] or apply IACLs
on nodes provisioning SIDs, permits attackers from outside the SR on nodes provisioning SIDs, permits attackers from outside the SR
domain to send packets to the receivers of multipoint services that domain to send packets to the receivers of multipoint services that
use the SR P2MP Policies provisioned within the domain. use the SR P2MP Policies provisioned within the domain.
skipping to change at line 652 skipping to change at line 652
computes SR PTI can result in a chain of Replication segments forming computes SR PTI can result in a chain of Replication segments forming
a loop. In this case, replicated packets can create a storm until a loop. In this case, replicated packets can create a storm until
MPLS TTL (for SR-MPLS) or IPv6 Hop Limit (for SRv6) decrements to MPLS TTL (for SR-MPLS) or IPv6 Hop Limit (for SRv6) decrements to
zero. zero.
The control plane protocols (like PCEP, BGP, etc.) used to The control plane protocols (like PCEP, BGP, etc.) used to
instantiate Replication segments of SR PTI can leverage their own instantiate Replication segments of SR PTI can leverage their own
security mechanisms such as encryption, authentication filtering, security mechanisms such as encryption, authentication filtering,
etc. etc.
For SRv6, [RFC9524] describes an exception for Parameter Problem For SRv6, [RFC9524] describes an exception for the ICMPv6 Parameter
message, code 2 ICMPv6 Error messages. If an attacker is able to Problem message with Code 2. If an attacker is able to inject a
inject a packet into a multipoint service with the source address of packet into a multipoint service with the source address of a node
a node and with an extension header using an unknown option type and with an extension header using an unknown option type marked as
marked as mandatory, then a large number of ICMPv6 Parameter Problem mandatory, then a large number of ICMPv6 Parameter Problem messages
messages can cause a denial-of-service attack on the source node. can cause a denial-of-service attack on the source node.
8. References 8. References
8.1. Normative References 8.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
skipping to change at line 754 skipping to change at line 754
DOI 10.17487/RFC9855, October 2025, DOI 10.17487/RFC9855, October 2025,
<https://www.rfc-editor.org/info/rfc9855>. <https://www.rfc-editor.org/info/rfc9855>.
[SR-LOOP] Bashandy, A., Filsfils, C., Litkowski, S., Decraene, B., [SR-LOOP] Bashandy, A., Filsfils, C., Litkowski, S., Decraene, B.,
Francois, P., and P. Psenak, "Loop avoidance using Segment Francois, P., and P. Psenak, "Loop avoidance using Segment
Routing", Work in Progress, Internet-Draft, draft- Routing", Work in Progress, Internet-Draft, draft-
bashandy-rtgwg-segment-routing-uloop-17, 29 June 2024, bashandy-rtgwg-segment-routing-uloop-17, 29 June 2024,
<https://datatracker.ietf.org/doc/html/draft-bashandy- <https://datatracker.ietf.org/doc/html/draft-bashandy-
rtgwg-segment-routing-uloop-17>. rtgwg-segment-routing-uloop-17>.
[SR-P2MP-PING] [SR-P2MP-PCEP]
Bidgoli, H., Voyer, D., Budhiraja, A., Parekh, R., and S. Bidgoli, H., Voyer, D., Budhiraja, A., Parekh, R., and S.
Sivabalan, "PCEP extensions for SR P2MP Policy", Work in Sivabalan, "PCEP extensions for SR P2MP Policy", Work in
Progress, Internet-Draft, draft-ietf-pce-sr-p2mp-policy- Progress, Internet-Draft, draft-ietf-pce-sr-p2mp-policy-
14, 23 February 2026, 14, 23 February 2026,
<https://datatracker.ietf.org/doc/html/draft-ietf-pce-sr- <https://datatracker.ietf.org/doc/html/draft-ietf-pce-sr-
p2mp-policy-14>. p2mp-policy-14>.
[SR-P2MP-YANG] [SR-P2MP-YANG]
Bidgoli, H., Voyer, D., Parekh, R., Saad, T., and T. Bidgoli, H., Voyer, D., Parekh, R., Saad, T., and T.
Kundu, "YANG Data Model for p2mp sr policy", Work in Kundu, "YANG Data Model for p2mp sr policy", Work in
skipping to change at line 844 skipping to change at line 844
Assume a controller is provisioned with the following SR P2MP Policy Assume a controller is provisioned with the following SR P2MP Policy
at Root R1 with Tree-ID T-ID: at Root R1 with Tree-ID T-ID:
SR P2MP Policy <R1,T-ID>: SR P2MP Policy <R1,T-ID>:
Leaf nodes: {R2, R6, R7} Leaf nodes: {R2, R6, R7}
candidate-path 1: candidate-path 1:
Optimize: IGP metric Optimize: IGP metric
Tree-SID: T-SID1 Tree-SID: T-SID1
The controller is responsible for computing a PTI of the candidate The controller is responsible for computing a PTI of the CP. In this
path. In this example, we assume one active PTI with Instance-ID example, we assume one active PTI with Instance-ID I-ID1. Assume the
I-ID1. Assume the controller instantiates PTIs by signaling controller instantiates PTIs by signaling Replication segments, i.e.,
Replication segments, i.e., the Replication-ID of these Replication the Replication-ID of these Replication segments is <Root, Tree-ID,
segments is <Root, Tree-ID, Instance-ID>. All Replication segments Instance-ID>. All Replication segments use the Tree-SID T-SID1 as
use the Tree-SID T-SID1 as the Replication-SID. For SRv6, assume the the Replication-SID. For SRv6, assume the Replication-SID at node k,
Replication-SID at node k, bound to an End.Replicate function, is bound to an End.Replicate function, is 2001:db8:cccc:k:fa::/128.
2001:db8:cccc:k:fa::/128.
A.1. P2MP Tree with Non-Adjacent Replication Segments A.1. P2MP Tree with Non-Adjacent Replication Segments
Assume the controller computes a PTI with Root node R1, Intermediate Assume the controller computes a PTI with Root node R1, Intermediate
and Leaf node R2, and Leaf nodes R6 and R7. The controller and Leaf node R2, and Leaf nodes R6 and R7. The controller
instantiates the instance by stitching Replication segments at R1, instantiates the instance by stitching Replication segments at R1,
R2, R6, and R7. The Replication segment at R1 replicates to R2. The R2, R6, and R7. The Replication segment at R1 replicates to R2. The
Replication segment at R2 replicates to R6 and R7. Note that nodes Replication segment at R2 replicates to R6 and R7. Note that nodes
R3, R4, and R5 do not have any Replication segment state for the R3, R4, and R5 do not have any Replication segment state for the
tree. tree.
skipping to change at line 907 skipping to change at line 906
Replication State: Replication State:
R6: <Leaf> R6: <Leaf>
Replication segment at R7: Replication segment at R7:
Replication segment <R1,T-ID,I-ID1,R7>: Replication segment <R1,T-ID,I-ID1,R7>:
Replication-SID: T-SID1 Replication-SID: T-SID1
Replication State: Replication State:
R7: <Leaf> R7: <Leaf>
When a packet is steered into the active instance candidate path 1 of When a packet is steered into the active instance CP 1 of the SR P2MP
the SR P2MP Policy at R1: Policy at R1:
* Since R1 is directly connected to R2, R1 performs the PUSH * Since R1 is directly connected to R2, R1 performs the PUSH
operation with just the <T-SID1> label for the replicated copy and operation with just the <T-SID1> label for the replicated copy and
sends it to R2 on interface L12. sends it to R2 on interface L12.
* R2, as a Leaf, performs the NEXT operation, pops the T-SID1 label, * R2, as a Leaf, performs the NEXT operation, pops the T-SID1 label,
and delivers the payload. For replication to R6, R2 performs a and delivers the payload. For replication to R6, R2 performs a
PUSH operation of N-SID6 to send the <N-SID6,T-SID1> label stack PUSH operation of N-SID6 to send the <N-SID6,T-SID1> label stack
to R3. R3 is the penultimate hop for N-SID6; it performs to R3. R3 is the penultimate hop for N-SID6; it performs PHP,
penultimate hop popping, which corresponds to the NEXT operation, which corresponds to the NEXT operation, and the packet is then
and the packet is then sent to R6 with <T-SID1> in the label sent to R6 with <T-SID1> in the label stack. For replication to
stack. For replication to R7, R2 performs a PUSH operation of R7, R2 performs a PUSH operation of N-SID7 to send the
N-SID7 to send the <N-SID7,T-SID1> label stack to R4, one of IGP <N-SID7,T-SID1> label stack to R4, which is one of the IGP ECMP
ECMP nexthops towards R7. R4 is the penultimate hop for N-SID7; next hops (R5 is other) towards R7. R4 is the penultimate hop for
it performs penultimate hop popping, which corresponds to the NEXT N-SID7; it performs PHP, which corresponds to the NEXT operation,
operation, and the packet is then sent to R7 with <T-SID1> in the and the packet is then sent to R7 with <T-SID1> in the label
label stack. stack.
* R6, as a Leaf, performs the NEXT operation, pops the T-SID1 label, * R6, as a Leaf, performs the NEXT operation, pops the T-SID1 label,
and delivers the payload. and delivers the payload.
* R7, as a Leaf, performs the NEXT operation, pops the T-SID1 label, * R7, as a Leaf, performs the NEXT operation, pops the T-SID1 label,
and delivers the payload. and delivers the payload.
A.1.2. SRv6 A.1.2. SRv6
For SRv6, the replicated packet from R2 to R7 has to traverse R4 For SRv6, the replicated packet from R2 to R7 has to traverse R4
skipping to change at line 982 skipping to change at line 981
Replication State: Replication State:
R6: <Leaf> R6: <Leaf>
Replication segment at R7: Replication segment at R7:
Replication segment <R1,T-ID,I-ID1,R7>: Replication segment <R1,T-ID,I-ID1,R7>:
Replication-SID: 2001:db8:cccc:7:fa:: Replication-SID: 2001:db8:cccc:7:fa::
Replication State: Replication State:
R7: <Leaf> R7: <Leaf>
When a packet (A,B2) is steered into the active instance of candidate When a packet (A,B2) is steered into the active instance of CP 1 of
path 1 of the SR P2MP Policy at R1 using H.Encaps.Replicate behavior: the SR P2MP Policy at R1 using H.Encaps.Replicate behavior:
* Since R1 is directly connected to R2, R1 sends the replicated copy * Since R1 is directly connected to R2, R1 sends the replicated copy
(2001:db8::1, 2001:db8:cccc:2:fa::) (A,B2) to R2 on interface L12. (2001:db8::1, 2001:db8:cccc:2:fa::) (A,B2) to R2 on interface L12.
* R2, as a Leaf, removes the outer IPv6 header and delivers the * R2, as a Leaf, removes the outer IPv6 header and delivers the
payload. R2, as a Bud node, also replicates the packet. payload. R2, as a Bud node, also replicates the packet.
* - For replication to R6, R2 sends (2001:db8::1, * - For replication to R6, R2 sends (2001:db8::1,
2001:db8:cccc:6:fa::) (A,B2) to R3. R3 forwards the packet 2001:db8:cccc:6:fa::) (A,B2) to R3. R3 forwards the packet
using the 2001:db8:cccc:6::/64 packet to R6. using the 2001:db8:cccc:6::/64 packet to R6.
skipping to change at line 1167 skipping to change at line 1166
Replication State: Replication State:
R6: <Leaf> R6: <Leaf>
Replication segment at R7: Replication segment at R7:
Replication segment <R1,T-ID,I-ID1,R7>: Replication segment <R1,T-ID,I-ID1,R7>:
Replication-SID: 2001:db8:cccc:7:fa:: Replication-SID: 2001:db8:cccc:7:fa::
Replication State: Replication State:
R7: <Leaf> R7: <Leaf>
When a packet (A,B2) is steered into the active instance of candidate When a packet (A,B2) is steered into the active instance of CP 1 of
path 1 of the SR P2MP Policy at R1 using the H.Encaps.Replicate the SR P2MP Policy at R1 using the H.Encaps.Replicate behavior:
behavior:
* Since R1 is directly connected to R2, R1 sends the replicated copy * Since R1 is directly connected to R2, R1 sends the replicated copy
(2001:db8::1, 2001:db8:cccc:2:fa::) (A,B2) to R2 on interface L12. (2001:db8::1, 2001:db8:cccc:2:fa::) (A,B2) to R2 on interface L12.
* R2, as a Leaf, removes the outer IPv6 header and delivers the * R2, as a Leaf, removes the outer IPv6 header and delivers the
payload. R2, as a Bud node, also replicates the packet. For payload. R2, as a Bud node, also replicates the packet. For
replication to R3, R2 sends (2001:db8::1, 2001:db8:cccc:3:fa::) replication to R3, R2 sends (2001:db8::1, 2001:db8:cccc:3:fa::)
(A,B2) to R3 on interface L23. For replication to R5, R2 sends (A,B2) to R3 on interface L23. For replication to R5, R2 sends
(2001:db8::1, 2001:db8:cccc:5:fa::) (A,B2) to R5 on interface L25. (2001:db8::1, 2001:db8:cccc:5:fa::) (A,B2) to R5 on interface L25.
 End of changes. 37 change blocks. 
145 lines changed or deleted 143 lines changed or added

This html diff was produced by rfcdiff 1.48.