[pim] Re: Ketan Talaulikar's Discuss on draft-ietf-pim-sr- p2mp-policy-18: (with DISCUSS and COMMENT)
Ketan Talaulikar <[email protected]>
| Newsgroups | gmane.ietf.pim |
|---|---|
| Message-ID | <CAH6gdPxGw1m6pU7XZYH1o0E12FJSKKXREPb+fMTm3eZSedW0SQ@mail.gmail.com> |
Hi Rishabh, Thanks for the continued discussion. Please check inline for follow-ups with KT2. At this point, I think it would be great if you (and your co-authors) could post an update with the changes discussed and agreed so far. This way we can focus on the outstanding points alone. I am asking the same for the base SR P2MP Policy Ping document as well - this way can ensure that both are in sync and consistent. Note: My responses may be slow next week. On Fri, Aug 22, 2025 at 4:37 AM Rishabh Parekh <[email protected]> wrote: > Ketan, > Responses @ [RP2] > > On Thu, Aug 21, 2025 at 3:29 AM Ketan Talaulikar <[email protected]> > wrote: > >> Hi Rishabh, >> >> Thanks for your quick response. Please check inline below for >> clarifications and some follow-ups. >> >> For the ones that I haven't replied to your comments, I am good and will >> await the updated version. >> >> >> >> >>> >>>> At any point, only one CP is active and this is selected based on the >>>> same >>>> tie-breaking logic as for SR Policy CPs. >>>> >>>> All the constructs until this point are instantiated only on the root >>>> node. >>>> >>> >>> [RP] SR P2MP Policy and CPs are only instantiated on the Root, but tree >>> instances are instantiated at Root, intermediate and Leaf nodes. >>> >> >> KT> Thanks for confirming. It would be very helpful if this were >> clarified in the text. Especially the part about the SR P2MP Policy and its >> CPs being instantiated on the root - please also see the next response. >> >> >>> >>> >>>> >>>> -- >>>> discuss #1: The document text (see below) seems to indicate that it is >>>> only the >>>> replication segment that is instantiated on the root node while the SR >>>> P2MP >>>> Policy construct is something on the controller. I believe, that is not >>>> the >>>> case, and please clarify with explicit text saying that the SR P2MP >>>> Policy is >>>> instantiated on the root node. As an example, unless instantiated on >>>> it, the root >>>> may not be able to perform monitoring/OAM on the tree corresponding to >>>> the >>>> active CP and switchover (without controller action) to a backup CP on >>>> failure >>>> (this is what is described in section 4.5.2?). >>>> >>>> section 2.2. says "An SR P2MP Policy is provisioned on a controller >>>> (see Section 4). The controller computes the P2MP tree instances of >>>> Candidate >>>> Paths of the policy and instantiates the necessary Replication segments >>>> at the >>>> Root, Replication and Leaf nodes of the trees. " >>>> -- >>>> >>> >>> [RP] You are correct. SR P2MP Policy, and CPs are instantiated on Root >>> node and controller (and also signalled). Is the following modification >>> acceptable? >>> >>> "An SR P2MP Policy and its Candidate Paths are provisioned on a >>> controller and the Root node. These are signalled from the controller to >>> the Root node and vice versa. The controller computes the P2MP tree >>> instances of Candidate Paths of the policy and instantiates ....." >>> >> >> KT> I will try to be careful with the terminologies. I prefer use of the >> term instantiation since it is separate from provisioning (seen as a sort >> of management action) and signaling (something done using a routing >> protocol). How about: >> >> An SR P2MP Policy and its Candidate Paths are instantiated on the Root >> node. Their provisioning may be done on either the controller or the Root >> node or both depending on the provisioning model and choice of signaling >> protocol (see Section 4) . The controller computes ... >> > > [RP2] If we want to distinguish between provisioning and instantiation, > then either can be on the Root and controller. For example, in the > MVPN/EVPN use case a SR P2MP policy and a CP can be thought of as being > "provisioned" on the Root node (via MVPN/EVPN auto-discovery procedures) > and these are then instantiated on the controller via signalling. In > another use case, an entity can provision a SR P2MP policy and a CP on the > controller and these are then instantiated on the Root node via signalling. > So provisioning and instantiation can happen on either Root node or > controller. How about this slight modification to your proposed text: > > "An SR P2MP Policy and its candidate paths are provisioned on either the > controller or the Root node or both depending upon the provisioning model > (see Section 4). After provisioning, they are instantiated on the Root node > or the controller by the signalling protocol." > KT2> This works for me. Thanks. > > >> >>> >>> >>>> >>>> Now, we switch to RFC9524 that specified Replication Segment which is >>>> identified as <replication node id, replication-id>. >>>> >>>> Note that per RFC9524 the replication-id is a variable length field and >>>> is not >>>> actually specified in that document. This document actually specifies >>>> the >>>> replication-id to be <Root, Tree-ID, Instance-ID>. >>>> >>> >>>> -- >>>> discuss #2 : The text in 2.3 that conveys this is not very clear >>>> (please see >>>> the comments section for suggestions). It also makes me wonder if this >>>> document >>>> should "update" RFC9524? >>>> -- >>>> >>> >>> [RP] From the comments on Section 2.2, I agree the text about <Root, >>> Tree-ID> mapping to Replication-id in Section 2.2 is not required because >>> Section 2.3 specified the Replication ID maps to <Root, Tree-ID, >>> Instance-ID>. I am going to remove this from Section 2.2. >>> >>> I am going to address your major comment on Section 2.3 here since it is >>> relevant to this discussion. I am not sure what you mean by "update RFC >>> 9524", but Section 2 of that RFC explicitly allows Replication-ID to be >>> extended and modified precisely for this (and future) cases (see excerpt >>> below). >>> >>> "Replication-ID is a variable-length field. In the simplest case, it can >>> be a 32-bit number, but it can be extended or modified as required based on >>> the specific use of a Replication segment. This is out of scope for this >>> document." >>> >> >> KT> Let's keep aside the "updates" part for now. How does one know the >> encoding of the replication-id ? There is no "replication id type" defined >> in RFC9524 that allows for different encoding schemes for the >> replication-id. How would this get modeled in a YANG module or a protocol >> encoding that is supporting generic reporting/signaling of replication >> segments (i.e., not in the context of these SR P2MP trees specifically)? >> >> > [RP2] I see. One can interpret "variable-length" field to mean that a > "length" field has to be present for the Replication-ID in the model or > signalling protocol , but this is imprecise. > KT2> Exactly. Let us perhaps discuss this over a call as it will be easier. Next week may be tough for me, but I will try to suggest a common slot for both the SR P2MP documents. > > >>> Below is a proposed change for the text in Section 2.3 to make it clear >>> the replication-id is "modified" to be <Root, Tree-ID, Instance-ID>". >>> Please let me know if it addresses this discussion and the related comments. >>> >>> P2MP tree instances are instantiated using Replication segments. The >>> Replication-ID field of a Replication segment identifier can be >>> modified as per Section 2 of [RFC9524]. This document modifies the >>> Replication-ID of a Replication segment as follows. The Replication >>> segments used to instantiate a P2MP tree instance are identified by >>> the tuple: <Root, Tree-ID, Instance-ID, Node-ID>, where Root, Tree-ID >>> of SR P2MP Policy and Instance-ID of the instance map to Replication- >>> ID of Replication segment and Node-ID is as defined in [RFC9524]. >>> >>> >>> >> KT> How about: >> >> P2MP tree instances are instantiated using Replication segments. The >> Replication-ID field of a Replication segment identifier can be >> modified as per Section 2 of [RFC9524]. This document modifies the >> Replication-ID of a Replication segment to be the tuple: >> <Root, Tree-ID, Instance-ID>, where <Root, Tree-ID> identifies the >> SR P2MP Policy and Instance-ID identifies the P2MP tree instance >> within that SR P2MP Policy. This results in the Replication >> segments used to instantiate a P2MP tree instance being identified by >> the tuple: <Root, Tree-ID, Instance-ID, Node-ID>. >> >> >> > [RP2] This is fine. > > >>>> The replication segment thus represents a unique per P2MP tree >>>> context at each root, intermediate and leaf nodes of a specific P2MP >>>> tree >>>> within the context of an SR P2MP Policy CP in the network. >>>> >>>> -- >>>> discuss #3: This makes the section 3.2 of shared replication segments >>>> somewhat >>>> confusing. That section seems to say that replication segment MAY be >>>> shared >>>> across different P2MP tree instances and then says shared replication >>>> segment >>>> MUST NOT be associated with an SR P2MP tree in v17. In v18, this text >>>> is modified >>>> but the explanation is still not clear on how they are used for the >>>> P2MP tree. >>>> -- >>>> >>> >>> [RP] If multiple tree instances share the same sub-topology then a >>> single shared Replication segment can be instantiated in the sub-topology >>> to be shared across all the instances. For traffic forwarding, Replication >>> node of the shared Replication segment "pushes" its Replication SID on top >>> of the incoming P2MP tree instance SID and the packet is replicated to the >>> downstream nodes of the shared Replication segment where the shared >>> Replication SID is "popped" and the packet is forwarded on the inner P2MP >>> tree instance replication SID. A Shared Replication segment can also be >>> used for local protection backup across P2MP. tree instances. >>> >>> A >>> │ >>> B >>> C─┴─ D >>> │ │ >>> E F >>> >>> In above topology, say two P2MP tree instances span from Root A to Leaf >>> nodes E and F. They share same sub-topology from node B to downstream nodes >>> C and D, In this case, a single shared Replication segment can be >>> instantiated on B, C and D and shared cross the two P2MP tree instances. >>> >> >> KT> Thanks for the explanation. I get the idea now. However, this isn't >> specified in that manner in the document. Further, I find the construct of >> setting the root to 0 for shared replication segments to be a bit strange. >> As you mention, this is a tree that is shared and used as a sub-tree along >> the path by more than one P2MP tree. Doesn't that make that shared tree >> also a P2MP tree except that it is not associated with a SR P2MP Policy? I >> am wondering how these shared replication segments will be identified in >> the network and their provisioning, OAM, etc. will work. In short, I feel >> this needs more details to be specified. >> > > [RP2] > > Note that the shared sub-tree in the above example is not the same as the > "P2MP tree instance" construct defined in this document. That is why it is > a *shared Replication segment* and not a shared P2MP tree. A replication > segment is just the Replication node and its downstream nodes. In this > example, B-C-D are adjacent, but if they are not, the shared Replication > segment will be ingress replication from B to C and D, not an optimized > replication on a tree. The Replication segment may be shared across P2MP > tree instances originating at different Root addresses and hence the Root > address is 0. > > Anyway, the section on shared Replication segment is in the text because > one of the vendors on the draft uses this only as a facility backup not for > the generalized use case above. If it is fine with you, I can change text > in this section to make it clear that this is the only use case supported > in the document and keep other use cases out of scope. > KT2> This also seems like a topic to discuss over a call? > > >> >>> >>> >>>> The instantiation of these per P2MP tree replication segment constructs >>>> on the >>>> root, intermediate and leaf nodes in the computed tree setup the >>>> forwarding >>>> context in the network. >>>> >>>> Now, the terminology section says that the terms 'P2MP tree instance' >>>> and >>>> 'P2MP tree' are used interchangeably. >>>> >>>> -- >>>> discuss #4: Why can't the same consistent term 'P2MP tree' be used >>>> throughout >>>> the document? Is there a subtle difference with the use of "instance" >>>> here? >>>> -- >>>> >>> >>> [RP] The idea was to distinguish between the P2MP tree as a concept and >>> the P2MP tree instance construct defined in this document. I have revised >>> the text in the document to make this distinction clear in the context of >>> the text. >>> >> >> KT> Ok. Thanks. I did get a sense that they were not identical. Please >> also discuss this with the authors of the accompanying ping document since >> that uses "TI" (which should have been defined in this document) quite >> extensively. >> > > [RP2] I discussed this with the authors of the ping draft and that > document uses "TI" as an abbreviation of P2MP tree instance. I can add this > abbreviation to the definition of P2MP tree instance in the Terminology > section of the draft. > KT2> I leave it between the authors of both the drafts - whatever terminology that you arrive at, please define it in this base document and then use it in the ping (as also perhaps the PCEP?) document. > > >> >>> >>>> Then we come to section 3 which specifies the P2MP tree construct in a >>>> way >>>> that is disconnected with the SR P2MP Policy construct. Is it because >>>> the SR >>>> P2MP Policy construct is something that only exists on the controller >>>> (see >>>> discuss#1 above) ? >>>> >>>> Then the replication segment and its replication SID constructs from >>>> RFC9524 >>>> are introduced within the P2MP Tree context. >>>> >>>> -- >>>> discuss #5: The replication SID associated with the replication segment >>>> at the >>>> root node is specified as the tree SID. This maps it to a specific P2MP >>>> tree >>>> under a specific CP under a specific SR P2MP Policy. It is not clear if >>>> there are >>>> multiple tree SIDs associated with a single CP (one per P2MP tree?) or >>>> if each >>>> CP has only one tree SID. It is also not clear if the same tree SID can >>>> be >>>> used by all CPs of the same SR P2MP Policy. >>>> -- >>>> >>> >>> [RP] The Tree-SID is unique for each P2MP tree instance in the SR >>> domain. If CP has more than one P2MP tree instance, each instance has its >>> own Tree-SID. P2MP tree instances for more than one CP of a SR P2MP Polcy >>> may be computed and instantiated at same time. All these P2MP tree >>> instances for the CPs for SR P2MP Policies have a unique Tree-SID. This >>> holds even if same Tree-SID is not used for all the Replication segments of >>> the P2MP tree instance i.e. Replication SIDs of the Replication segments >>> are different at the nodes of a P2MP tree instance. Basically, since >>> Replication-SID is a unique forwarding identifier for a Replication segment >>> of a P2MP tree instance, all P2MP tree instances on a node have unique SID >>> values. >>> >>> If the above is not clear in the document, I can add some text to >>> Section 3.1. >>> >> >> KT> This seems to be at odds with the text (or my reading of it). Perhaps >> I've gotten confused due to the reference to BSID. Let's take a SR P2MP >> Policy with a single CP and it has a single P2MP Tree under it. Now, the >> tree needs to be recomputed and for MBB another P2MP Tree is instantiated >> under that CP. You are saying that this new tree would have its own unique >> Tree-SID. From the BSID reference, I got the impression that Tree SID is >> more like the property of the SR P2MP Policy CP and that each CP in the SR >> P2MP Policy has its own unique Tree SID or it can be shared by CPs since >> only one CP is actively forwarding traffic at any point. So Tree-SID would >> then be a stable dataplane construct/reference. But it seems like that is >> not the case? >> > > [RP2] The Tree-SID is the data plane identifier of a P2MP tree instance. > P2MP tree instances are likely to have different tree topologies due to > different constraints/objectives of CPs in an SR P2MP policy and across > different policies. Even in one CP with given constraints/objectives, two > P2MP tree instances for MBB will have different tree topologies due to > differing network topology (between the "old" instance and "new" instance > after network change). Since the P2MP tree instances differ in their tree > topology, their replication state is also likely to be different at core > nodes (i.e. a non-Root node) in the SR domain. Therefore each P2MP tree > instance has its own Replication segment with associated Replication-SID > (Tree-SID). > > I can see how BSID can cause confusion about this. BSID is an identifier > of SR P2MP Policy to steer traffic into it. It is only used when the Root > of SR P2MP Policy is NOT the ingress node on which traffic arrives to the > SR domain. To draw analogy with SR Policy, incoming packet with BSID of SR > Policy is steered with segment list of the active CP. For SR P2MP Policy, > the packet is steered with Tree-SID of the active instance of the active > CP. In this way, BSID for SR P2MP Policy is similar to BSID of SR Policy as > specified in Section 6 for RFC 9256. > > When the Root node of SR P2MP Policy is also the ingress node at which > traffic arrives to the SR domain, it is steered into the SR P2MP Policy by > local policy on the Root, not the BSID. > KT2> Please see how you can capture this in the document and we can follow-up over a call after the update is posted? > > The Tree SID being used by the SR P2MP Policy will keep changing every >> time the P2MP Tree needs to be recomputed (for MBB). Doesn't that make it >> hard for an operator to keep track of the Tree SID being used? If it is >> from SRGB or SRLB, then it might make things challenging to keep track of? >> In any case, I think some text is needed for clarity but I am not sure if >> it should be only in section 3.1 - please see the term Tree SID being used >> before then as well. >> >> > > [RP2] Yes, the Tree-SID can change, but only if there are multiple CPs or > MBB is used. Though it is outside the scope of this draft, I assume most > implementations would provide information about the traffic that is steered > into a SR P2MP Policy and the current active Tree-SID of that policy. > KT2> Would be great to capture this in the text. Some of these are important operational aspects and having things specified here would help operators in achieving consistency across vendors. > > >>> >>>> One of the challenges that I faced during the review of this document >>>> is the >>>> attempts at establishing equivalency between SR P2MP Policy and SR >>>> Policy. I >>>> found this to be problematic (please also see in the comments section >>>> for more >>>> details). >>>> >>>> -- >>>> discuss #6: Section 2.4 introduces the term Binding SID for SR P2MP >>>> Policy but >>>> does not specify what it is. It says Tree-SID of the active CP SHOULD >>>> be used >>>> as the BSID, but does not say what happens if that is not the case? Is >>>> there a >>>> need to introduce BSID here and is it not sufficient to only use the >>>> Tree-SID >>>> always in the context of SR P2MP Policy? >>>> >>> -- >>>> >>> >>> [RP] Binding SID is for a specific use-case where Root of SR P2MP Policy >>> is not the ingress node of the SR domain. The ingress node steers traffic >>> to be replicated using a Segment List where the last segment is the Binding >>> SID of SR P2MP Policy. The Binding SID is swapped with Tree-SID of the >>> active instance of active CP and the packet is replicated. If the Tree-SID >>> is used as the Binding SID of the policy, the Binding SID will change when >>> active instance or active CP changes, and the segment list used to steer >>> packets from the Ingress node to the Root node will have to be changed too. >>> >> >> KT> This is related to the previous comment. Please add text that defines >> what the BSID of a SR P2MP Policy is and how it is used. Basically, the >> explanation above. The following text that exists currently does not align >> with your explanation (which makes sense to me) above: >> >> The Tree-SID of the active instance of the active Candidate Path SHOULD >> be used as the Binding SID of the SR P2MP Policy. >> > > [RP2] I will add explanatory text. > > >> >> >>> >>> >>>> -- >>>> discuss #7: Sections 4.1, talks about allocation of Tree SID. However, >>>> it does >>>> specify whether allocation is from the SRGB, SRLB, dynamic range, or >>>> any of >>>> them (along with any recommendations). Same goes for the replication >>>> SIDs at >>>> intermediate and leaf nodes. Please also note a detailed comment below >>>> about >>>> section 4.1 and need for some text to indicate how these SIDs are >>>> managed across >>>> multiple nodes and how conflicts/errors (e.g., due to unavailability) >>>> are >>>> handled. I would expect that this impacts the order in which a >>>> controller >>>> needs to provision and setup (as also update) the P2MP trees across the >>>> nodes >>>> - perhaps starting from the leaves and building the tree until the root? >>>> -- >>>> >>>> [RP] We did not intend Section 4 to be a formal specification of >>> controller behavior, but as a general guideline for supporting SR P2MP >>> Policies with some MUST and SHOULD behaviors. That said, I can add some >>> guiding text for SID management. >>> >> >> KT> There are two parts here. The first is about the SIDs - since this >> document introduces Tree SID and talks about BSID and Replication SID, >> there should be some text that describes where those are allocated from >> (especially for MPLS). Then perhaps some operational recommendation on >> which one of SRGB, SRLB, or dynamic is better suited (please see one of my >> previous responses for the implications). That then leads to the 2nd part >> about errors and conflicts. That 2nd part is not really a controller >> behavior specification but the router specification where these SIDs (e.g., >> labels) are allocated and programmed. As an example, please check the text >> related to BSID unavailability and allocation failures in >> https://www.rfc-editor.org/rfc/rfc9256.html#section-6 >> > > [RP2] Ok will add some text about SID management and handling of > conflicts/errors. > > >> >> >>> -- >>>> discuss #8: Section 4.5.2 says that a disjoint backup tree instance can >>>> be >>>> used to provide end-to-end path protection. I assume it means >>>> end-to-end tree >>>> protection? It is also necessary to clarify how this is done in the >>>> constructs >>>> introduced in this document. I assume this is done by having a backup >>>> CP that >>>> has constraints to ensure disjoint-ness with the primary/active CP? If >>>> so, >>>> please clarify. >>>> -- >>>> >>>> [RP] Correct. I will add text about how this disjoint tree instance can >>> be instantiated. >>> >> >> KT> Thank you. >> >> >>> -- >>>> discuss #9: The document does cover the provisioning of the SR P2MP >>>> Policy construct along with replication segment(s) directly on the root >>>> node >>>> and of the corresponding replication segments on the intermediate & >>>> leaf nodes >>>> via CLI/NETCONF/YANG. However, It is also silent on explicit candidate >>>> paths. >>>> Is it not possible that (what is called as) a controller in this >>>> document is >>>> simply a provisioning platform that does no path computation but allows >>>> an >>>> operator to setup static trees? In other words, I find the tight >>>> coupling of >>>> the concepts of path (or rather tree in this case) computation and >>>> provisioning/signaling to the network to be limiting. >>>> -- >>>> >>>> [RP] This document is meant for a controller to compute and maintain >>> P2MP tree instances for SR P2MP Policies. Explicit CP with statically >>> defined tree topology is certainly feasible, but IMO impractical. These >>> explicit CPs can also be provisioned on the Root node or on the controller >>> (which skips the computation and just instantiates the Replication segments >>> for the explicit tree topology). I can certainly add text about these >>> possibilities but keep it out of the scope of this document. >>> >> >> KT> Thanks, some text to cover this would be good. As well, some >> recommendations on the challenges when using explicit CPs that you indicate >> (I agree there are challenges). >> > > [RP2] Will do. > > >> >> >>> >>>> ---------------------------------------------------------------------- >>>> COMMENT: >>>> ---------------------------------------------------------------------- >>>> >>>> Please also find below some comments provided inline in the idnits >>>> format of >>>> the v17 of this document. On all editorial and minor comments, I will >>>> leave it >>>> to the authors discretion. On the major ones, I would appreciate >>>> responses and >>>> clarifications. >>>> >>>> Please look for <EoRv17> at the end of this review and if it is not >>>> there, then >>>> likely the email has gotten truncated by your client (please refer to >>>> the mailing >>>> list in that case). >>>> >>>> 13 Segment Routing Point-to-Multipoint Policy >>>> 14 draft-ietf-pim-sr-p2mp-policy-17 >>>> >>>> <minor-editorial> Please look for all occurences of >>>> "policy" and ensure that the term SR P2MP Policy (with consistent >>>> capitalization) is used throughout the document. For other uses of the >>>> word >>>> "policy" the lowercase can be used (e.g., local policy). This will save >>>> a lot >>>> of time and effort when the RFC Editor processes this document ... from >>>> my own >>>> experience :-) >>>> >>> >>> [RP] We have tried to be consistent but I will go through the text >>> again. I wholeheartedly agree on this easing the RFC editor comments :) >>> >>>> >>>> <minor-editorial> Candidate Path - another term where consistency of >>>> use needs >>>> to be fixed. I suggest using all lowercase to match RFC9256. There are >>>> also >>>> other terms like "root node", "leaf node", "replication segment", etc. >>>> where >>>> consistency in capitalization will help down the line. >>>> >>> >>> [RP] Understood. We have tried to be consistent with the terms Root, >>> Leaf and Replication segment, but I will recheck. I will change Candidate >>> Path(s) to lowercase to match RFC 9526. >>> >>> >>>> >>>> 16 Abstract >>>> >>>> 18 Point-to-Multipoint (P2MP) policy enables creation of P2MP >>>> trees for >>>> 19 efficient multi-point packet delivery in a Segment Routing >>>> (SR) >>>> 20 domain. A SR P2MP Policy consists of Candidate Paths (CP) >>>> which >>>> 21 define the topology of P2MP tree instances of the Candidate >>>> Paths. A >>>> 22 P2MP tree instance is instantiated by a set of Replication >>>> segments. >>>> >>>> <minor> Suggest to drop/skip the last 2 sentences from the abstract. >>>> They are >>>> imprecise and leaving them out will not take anything from the abstract >>>> - only >>>> make it better. >>>> >>> >>> [RP] The modified Abstract text in version 18 already addresses this >>> comment. >>> >> >> KT> Yes, it does. Thanks. >> >> >>> >>> >>>> >>>> 109 1. Introduction >>>> >>>> 111 A Multi-point service delivery can be realized with P2MP >>>> (Point-to- >>>> 112 Multipoint) trees in a Segment Routing domain [RFC8402]. A >>>> P2MP tree >>>> 113 spans from a Root node to a set of Leaf nodes via >>>> intermediate >>>> 114 Replication nodes. It consists of a Replication segment >>>> [RFC9524] at >>>> 115 the root node, stitched to one or more Replication segments >>>> at Leaf >>>> 116 nodes and intermediate Replication nodes. A Bud node >>>> [RFC9524] is a >>>> 117 node that is both a Replication node and a Leaf node. Any >>>> mention of >>>> 118 "Leaf node(s)" in this document should be considered as >>>> referring to >>>> 119 "Leaf or Bud node(s)". >>>> >>>> 121 A Segment Routing P2MP Policy defines the Root and Leaf >>>> nodes of a >>>> 122 P2MP tree. It has one or more Candidate Paths (CP) with >>>> optional >>>> 123 constraints and/or optimization objectives. >>>> >>>> 125 A controller computes P2MP tree instances of a SR P2MP >>>> Policy, from >>>> 126 the Root to Leaf nodes, of a Candidate Path using the >>>> constraints and >>>> 127 objectives specified in the Candidate Path. Once computed, >>>> the >>>> 128 controller instantiates a P2MP tree instance in the SR >>>> domain by >>>> 129 signaling Replication segments to the Root, Replication and >>>> Leaf >>>> 130 nodes. A Path Computation Element (PCE) [RFC4655] is one >>>> example of >>>> 131 such a controller. >>>> >>>> 133 The Replication segments of a P2MP tree can be instantiated >>>> for SR- >>>> 134 MPLS [RFC8660] and SRv6 [RFC8986] data planes, enabling >>>> efficient >>>> 135 packet replication within an SR domain. >>>> >>>> <minor-editorial> Let me share some suggestions for improving the >>>> introduction >>>> section for better readability. It could just provide an overview or >>>> introduction of the topics/concepts the document is covering and leave >>>> the >>>> details for the body of the document. Alternately, you could consider >>>> providing a high-level information model of the constructs specified in >>>> the >>>> document (please feel to leverage the text from the DISCUSS portion, if >>>> that >>>> helps). >>>> >>>> 137 1.1. Terminology >>>> >>>> 139 This section defines terms used frequently in this >>>> document. Refer >>>> 140 to Terminology section of [RFC9524] for definition of >>>> Replication >>>> 141 segment and other terms associated with it. >>>> >>>> 143 SR P2MP Policy: A SR P2MP Policy is a mechanism to construct >>>> P2MP >>>> 144 trees in a SR domain by specifying a Root and Leaf nodes. >>>> >>>> <minor> SR P2MP Policy is not a mechanism (also goes for other similar >>>> terms). >>>> It can be called a construct, or a framework or such perhaps? >>>> >>>> 146 Candidate Path: A Candidate Path of SR P2MP Policy defines >>>> 147 topological or resource constraints and optimization >>>> objectives that >>>> 148 are used to construct P2MP Tree instances. >>>> >>>> 150 P2MP Tree Instance: A P2MP tree instance in a SR domain is >>>> 151 constructed by stitching Replication segments between Root >>>> and Leaf >>>> 152 nodes of a SR P2MP Policy. A P2MP tree belongs to a >>>> Candidate Path >>>> 153 and its topology is determined by constraints and >>>> optimization >>>> 154 objective of the Candidate Path. This document uses terms >>>> P2MP tree >>>> 155 instance and P2MP tree interchangeably. >>>> >>>> <minor-editorial> Please consider introducing other terms such as >>>> Replication >>>> Segment, Tree SID, root/intermediate/leaf nodes, etc. as well in this >>>> section. >>>> >>>> [RP] The first paragraph of the Terminology section points to the >>> Terminology section RFC 9524 for Replication segment and other related >>> terms. I will add the Tree-SID definition. >>> >>> >>>> 157 2. SR P2MP Policy >>>> >>>> 159 An SR P2MP Policy is used to instantiate P2MP trees between >>>> a Root >>>> 160 and Leaf nodes in an SR domain. It is similar to SR Policy >>>> >>>> <major> Except for the part that SR P2MP Policy also has multiple CPs >>>> just >>>> like SR Policy and uses the same tiebreaking for selection of the >>>> active CP, I >>>> don't see any similarity between the two constructs. My concern is that >>>> drawing such equivalency may be more harmful than helpful for a reader >>>> that is >>>> familiar with SR Policy but new to this document. I feel it is a bad >>>> idea >>>> to keep comparing/constrasting the two. Also see further comments that >>>> are >>>> related to this point. >>>> >>> >>> [RP] I am beginning to agree. This has also led other reviewers to >>> compare SR Policy and SR P2MP Policy identifiers and then make suggestions >>> about adding text to describe the equivalency of the fields. I see you have >>> comments below about that. If it helps, I can try to remove text drawing >>> similarities between the two and just retain or add text about CPs and tie >>> breaking rules. >>> >> >> KT> I think the document will be greatly simplified if those comparisons >> were removed. It is OK to point to RFC9256 for using the CP identifiers or >> leveraging the tiebreaking (if they both make sense), but I don't think >> there are commonalities beyond that? >> > > [RP2] I agree. > >> >> >>> >>>> >>>> 175 * Tree-ID: A 32-bit unsigned integer that uniquely >>>> identifies the >>>> 176 P2MP Policy in the context of the Root node. This is >>>> equivalent >>>> 177 to the Color of SR Policy identifier tuple. >>>> >>>> <major> Since Tree-ID is specified here as a locally unique/significant >>>> context on the root node alone, I can't see how it can be equivalent to >>>> the >>>> Color of SR Policy that identifies the "intent" and is not local to the >>>> headend node. See use of Color ExtCom for BGP service routes to perform >>>> steering over SR policies across the network. I don't understand why >>>> this >>>> document should even attempt to do an equivalency between SR Policy and >>>> SR P2MP >>>> Policy constructs when they are like apples and oranges. >>>> >>> >>> [RP] As I mentioned above, this similarity was introduced based on >>> comments of another reviewer who wanted to make the differences and >>> similarities between SR P2MP Policy and SR Policy clear. However, if we >>> agree to remove text regarding similarity, we can clean up this and other >>> text about similarity. >>> >> >> KT> The trick is don't even mention SR Policy or mention anything to >> compare/contrast the two. Even if there is one such instance, then it is >> natural for a reader to start making comparisons along the way in their >> minds for more things and begin looking for texts about it :-) >> >> >>> >>>> >>>> 179 Note, SR P2MP Policy identification tuple does not have a >>>> member >>>> 180 equivalent to Endpoint of SR Policy identifier tuple since >>>> SR P2MP >>>> 181 Policies result in P2MP trees to a varying set of endpoints >>>> (Leaf >>>> 182 nodes). >>>> >>>> <minor> Perhaps "P2MP tree branches to a varying set of endpoints" ? >>>> >>> >>> [RP] I can make the suggested change, or remove this altogether as >>> discussed above. >>> >> >> KT> I will leave it to you. >> > > [RP2] I will remove the text. > > >> >> >>> >>> >>>> >>>> 194 An SR P2MP Policy is provisioned on a controller (see >>>> Section 4). >>>> 195 The controller computes the P2MP tree instances of Candidate >>>> Paths of >>>> 196 the policy and instantiates the necessary Replication >>>> segments at the >>>> 197 Root, Replication and Leaf nodes of the trees. The Root and >>>> Tree-ID >>>> 198 of the SR P2MP Policy are mapped to Replication-ID element >>>> of the >>>> 199 Replication segment identifier [RFC9524]. >>>> >>>> <minor> The above paragraph is not very helpful at this place. These >>>> things >>>> are described in more detail further in the document. I would suggest >>>> to keep >>>> these sections where the constructs are described as crisp as possible. >>>> >>> >>> [RP] In response to your discuss #1, I have modified text to clarify >>> that SR P2MP policy and its CPs are provisioned on the controller and the >>> Root node and signalled between the two. I have removed the last two >>> sentences. >>> >> >> KT> Sure, let me await the text. >> >> >>> >>>> 201 2.3. Candidate Paths and P2MP Tree Instances >>>> >>>> 203 An SR P2MP Policy has one or more CPs. Identification of a >>>> CP in >>>> 204 context of the P2MP Policy is as specified in Section 2.9 of >>>> 205 [RFC9256]. A CP may include topological and/or resource >>>> constraints >>>> >>>> <major> Identification of CP is in section 2.6 of RFC9256 and it would >>>> be >>>> helpful to list those identifiers in this document as well. Also, are >>>> the >>>> semantics of those identifiers the same as in RFC9256 - if so, please >>>> clarify >>>> the same. >>>> >>> >>> [RP] The semantics are the same. I have modified the text to include the >>> CP identifier tuple elements and their semantics referring to RFC 9256. >>> >> >> KT> Thanks. Please also correct the section reference from 2.9 to 2.6 of >> RFC9256 >> > > [RP2] Corrected the Section number. > > >> >> >>> >>> >>>> >>>> 206 and optimization objectives which influence the computation >>>> of P2MP >>>> 207 tree. The Root node selects the active Candidate Path based >>>> on the >>>> 208 tie breaking rules defined in[RFC9256]. >>>> >>>> <major> Please clarify that it is based on section 2.9 of RFC9256 >>>> >>> >>> [RP] Done. >>> >>> >>>> >>>> 210 A Candidate Path has zero or more P2MP tree instances. A >>>> P2MP tree >>>> 211 instance is identified by an Instance-ID. This is an >>>> unsigned 16-bit >>>> 212 number which is unique in context of the SR P2MP Policy of >>>> the >>>> 213 Candidate Path. >>>> >>>> <major> Here, please try to explain briefly why zero or more than one. >>>> It would help the reader to bring forward (or put forward reference) >>>> to the >>>> points about MBB. >>>> >>> >>> [RP] Done. >>> >>> >>>> >>>> 215 The Replication segments used to instantiate a P2MP tree >>>> instance are >>>> 216 identified by the tuple: <Root, Tree-ID, Instance-ID, >>>> Node-ID>, where >>>> 217 Root, Tree-ID of SR P2MP Policy and Instance-ID of the >>>> instance map >>>> 218 to Replication-ID of Replication segment and Node-ID is as >>>> defined in >>>> 219 [RFC9524]. >>>> >>>> <major> RFC9525 specifies that replication segments are identified by >>>> <replication-id, node-id> and that cannot be changed by this document. >>>> What >>>> this document does is that it is expanding the replication-id to be >>>> <Root, >>>> Tree-ID, Instance-ID>. Is my understanding correct? If so, please >>>> clarify this >>>> very precisely. >>>> >>> >>> [RP] See my response to discuss #2. >>> >>>> >>>> 225 2.4. Steering traffic into a SR P2MP policy >>>> >>>> 227 The Tree-SID, as described in Section 3, serves as the data >>>> plane >>>> 228 identifier of a P2MP tree instance. It is instantiated in >>>> the data >>>> 229 plane at the Root node, intermediate Replication nodes, and >>>> Leaf >>>> 230 nodes of the P2MP tree instance. The Tree-SID of the active >>>> instance >>>> 231 of the active Candidate Path SHOULD be used as the Binding >>>> SID of the >>>> 232 SR P2MP Policy. >>>> >>>> <minor-editorial> Please consider inserting a separate section before >>>> this one >>>> where the Tree SID is specified instead of within this section. Or >>>> consider >>>> moving this topic in a new top-level section between the current >>>> sections 3 >>>> and 4 where the Tree SID can be specified along with the steering >>>> aspects. >>>> >>> >>> [RP] I have done the latter i.e. created a new top level section and >>> moved text of current Section 3.1 defining the Tree-SID into this new >>> section. >>> >> >> KT> Great. I will look for that text. >> >> >>> >>>> >>>> 259 3.1. Tree-SID and Replication segments >>>> >>>> 261 The Replication SID associated with the Replication segment >>>> at the >>>> 262 Root node is referred to as the Tree-SID. The Tree-SID >>>> SHOULD also >>>> 263 serve as the Replication-SID for the Replication segments at >>>> 264 intermediate Replication nodes and Leaf nodes. However, the >>>> >>>> <major> Perhaps "It is RECOMMENDED that the Tree-SID is also used as the >>>> Replication-SID ..." ? Also, it would be helpful to clarify why this is >>>> recommended - e.g., it simplifies debuging/troubleshooting/operations? >>>> >>> >>> [RP] Done. >>> >>> >>>> >>>> 265 Replication segments at intermediate Replication nodes and >>>> Leaf nodes >>>> 266 MAY use Replication-SIDs that differ from the Tree-SID. >>>> >>>> <major> For SR-MPLS, the same global Tree-SID label can be used at each >>>> replication point. However, I would assume that for SRv6 it may be same >>>> function that used in all replications points but the locator parts >>>> would be >>>> specific to each intermediate/leaf nodes? Please clarify. >>>> >>> >>> [RP] Yes, for SRv6 the locator would be specific to each intermediate >>> and leaf node. >>> >> >> KT> Thanks. I hope you can clarify this distinction for MPLS and SRv6. >> >> >>> >>> >>>> >>>> >>>> 293 A P2MP tree can associated with one or more multi-point >>>> services on >>>> 294 the Root and Leaf nodes. In SR-MPLS deployments, if it is >>>> known a >>>> 295 priori that multi-point services mapped to a SR-MPLS P2MP >>>> tree can be >>>> 296 uniquely identified within the SR domain, a controller MAY >>>> opt not to >>>> >>>> <minor> perhaps "can be uniquely identified using their service >>>> labels"? This >>>> is clarified later on, but not clear in that sentence. >>>> >>>> 297 instantiate Replication segments at Leaf nodes. In such >>>> cases, >>>> 298 Replication Nodes upstream of the Leaf nodes effectively >>>> implement >>>> 299 Penultimate-Hop Popping (PHP) behavior by removing the >>>> Tree-SID from >>>> 300 the packet before forwarding it. A multi-point service >>>> context >>>> 301 allocated from an upstream assigned label or Domain-wide >>>> Common Block >>>> 302 (DCB), as specified in [RFC9573], is an example of a >>>> globally unique >>>> 303 context that facilitates this optimization. >>>> >>>> >>> [RP] Done. >>> >>> >>>> >>>> 333 4. Using a controller to build a P2MP Tree >>>> >>>> 335 A controller is provisioned with SR P2MP Policy and its >>>> Candidate >>>> 336 Paths to compute and instantiate P2MP trees in an SR >>>> domain. Once >>>> 337 computed, the controller instantiates the Replication >>>> segments that >>>> 338 compose the P2MP tree in the SR domain nodes using signalling >>>> 339 protocols such as PCEP, BGP, NetConf, etc. The procedures >>>> for >>>> 340 provisioning a controller and the instantiation of >>>> Replication >>>> 341 segments in an SR domain are outside the scope of this >>>> document. >>>> >>>> <minor> An informative reference to draft-ietf-pce-sr-p2mp-policy would >>>> be >>>> very helpful. I am not sure why it is necessary to reference BGP here >>>> and if >>>> just taking PCEP as an example of a signaling protocol would not be >>>> sufficient. Note that NETCONF is not a signaling protocol. But of >>>> course we >>>> need to cover NETCONF/YANG even if there is no reference to provide to >>>> a model >>>> as yet. >>>> >>> >>> [RP] I can add a reference to the PCEP draft. BGP and YANG drafts exist, >>> but both are expired as of now :( >>> >> >> KT> I was inspired by the following text in the abstract of the companion >> ping draft. I quite liked it. It gives an example of a signaling protocol >> (just add reference in this document) and it covers the management API as >> well (if you have an individual YANG draft would it still be good to >> reference it?). >> >> These policies are typically calculated via a controller-based mechanism >> and installed via, e.g., a Path Computation Element (PCE). In other cases >> these policies can be installed via using NETCONF/YANG or CLI. >> >> > [RP2] BGP signalling is specified in draft-ietf-idr-sr-p2mp-policy-00 and > YANG model is specified in draft-hb-spring-sr-p2mp-policy-yang-02. However, > I am not sure if these documents cover recent revisions of this document, > especially the YANG draft which expired back in 2021. I can add informative > references to both. > >> >>> >>>> >>>> 343 4.1. SR P2MP Policy Provisioning on a controller >>>> >>>> 345 An entity (an operator, a network node or a machine) >>>> provisions a SR >>>> 346 P2MP Policy on a controller by specifying the addresses of >>>> the Root, >>>> >>>> <minor-editorial> Perhaps "A SR P2MP Policy is provisioned on a >>>> controller by >>>> specifying ..." ? >>>> >>>> 347 set of Leaf nodes Candidate Paths. The procedures and >>>> mechanisms for >>>> 348 provisioning a controller are outside the scope of this >>>> document. >>>> >>>> 350 Candidate Path constraints MAY include link color affinity, >>>> 351 bandwidth, disjointness across link, node, or Shared Risk >>>> Link Group >>>> 352 (SRLG) [RFC4202], delay bound, link loss, flexible algorithm >>>> etc., >>>> 353 and optimization objectives based on IGP or TE metric or link >>>> 354 latency. Other constraints and optimization objectives MAY >>>> be used >>>> 355 for P2MP tree computation. >>>> >>>> <major> RFC9256 didn't get into these details as these are anyway out of >>>> scope. This document could follow the same approach and perhaps refer to >>>> >>>> https://datatracker.ietf.org/doc/html/draft-filsfils-spring-sr-policy-considerations-09#section-3 >>>> or alternately provide some references for all those TE constructs and >>>> not >>>> just the SRLG one. See >>>> https://www.rfc-editor.org/rfc/rfc9256.html#section-5.2 >>> >>> >>> [RP] I will modify the text to refer to SR Policy considerations draft >>> as RFC 9526 does, though it has expired, >>> >> >> KT> That individual informational draft was not adopted/progressed by >> SPRING WG since it was believed that all this was well known. So, I guess >> it should be ok to reference it informatively. But if the intention is >> normative then please don't reference that draft and either find another >> suitable RFC or provide references. >> > > [RP2] It is going to be an informative reference since this section is not > a formal specification of the controller behavior. > >> >> >>> >>>> >>>> 357 The Tree SID of a P2MP Tree instance of a Candidate Path of >>>> a SR P2MP >>>> 358 Policy can be either dynamically assigned by the controller >>>> or >>>> 359 statically assigned by entity provisioning the SR P2MP >>>> Policy. >>>> >>>> <major> This still does not cover how the controller provisioned >>>> Tree-SID >>>> conflicts (or unavailability) on the routers are handled. At a minimum, >>>> the >>>> text can say that this could happen and what would be result of such >>>> errors? >>>> >>>> >>> [RP] See comments for discuss #7 >>> >>> >>> >>>> 389 4.4. Instantiating P2MP tree on nodes >>>> >>>> 391 Once a controller computes a P2MP tree instance for a CP of >>>> a SR P2MP >>>> 392 Policy, it needs to instantiate the tree on the relevant >>>> network >>>> 393 nodes via Replication segments. The controller can use >>>> various >>>> 394 mechanisms to program the Replication segments as described >>>> below. >>>> 395 Some examples of these mechanisms are PCEP, BGP and >>>> NetConf. The >>>> >>>> <minor> the above sentence is repeated from section 4 >>>> >>> >>> [RP] Removed this section >>> >> >> KT> OK. Will wait for the update since I was only referencing the last >> sentence and not the section. >> > > [RP2] I realized that almost all of the text in this section is covered in > the first paragraph of Section 4. I will remove text in that paragraph and > retain this subsection. > > >> >> >>> >>> >>>> >>>> 401 4.5.1. Local Protection >>>> >>>> 403 A network link, node or path on the instance of a P2MP tree >>>> can be >>>> 404 protected using SR policies computed by a controller. The >>>> backup SR >>>> 405 policies are programmed in data plane in order to minimize >>>> traffic >>>> 406 loss when the protected link/node fails. >>>> >>>> <major> Please clarify and specify in detail how this works. I am >>>> assuming the >>>> SR Policy will be somehow fixed up into one of the replication branches? >>>> Are there any considerations on the encapsulation? >>>> >>> >>> [RP] Yes, the SR Policy for backup will be associated with a replication >>> branch of Replication segment. The segment list of backup SR policy will be >>> imposed on the downstream Replication SID when the backup SR policy is >>> used. >>> >> >> KT> Make sense. Can you please include these details in the document? >> > > [RP2] Will do. > >> >> >>> >>>> 408 It is also possible to use node local Loop-Free Alternate >>>> [RFC5286] >>>> 409 protection and Micro-Loop [RFC5715] prevention mechanisms to >>>> protect >>>> 410 link/nodes of P2MP tree. >>>> >>>> <minor> Since either LSM or unicast SRv6 SID address are used, wouldn't >>>> TI-LFA >>>> and microloop avoidance be available for the traffic while traversing >>>> between >>>> intermediate/leaf nodes? >>>> >>> >>> [RP[ Yes, though uLoop is really applicable when the replication node >>> and its downstream node are not adjacent >>> >> >> KT> Correct for link down, but for link-up it may apply even for >> non-adjacent. But I am digressing. If you agree and believe it is helpful >> then you can informatively refer to TI-LFA and SR Microloop avoidance since >> this is deployed in SR networks. >> >> > [RP2] Can you suggest a good reference to SR TI-LFA and uLoop document(s) > in addition to RFC 5286 and 5715 which are already referred to here? > KT2> https://datatracker.ietf.org/doc/draft-ietf-rtgwg-segment-routing-ti-lfa/ and https://datatracker.ietf.org/doc/draft-bashandy-rtgwg-segment-routing-uloop/ ... the later is an individual document but should be still ok as an informative reference alongside the two existing ones. Thanks, Ketan > > >>> >>>> >>>> 429 An SR domain needs protection from outside attackers as >>>> described in >>>> 430 [RFC8754]. >>>> >>>> <major> Did you mean SRv6 domain? or else the reference should be to >>>> RFC8402 >>>> to cover both SR-MPLS and SRv6. >>>> >>>> >>> [RP]. Yes, this is in general for SR. So it should refer to RFC 8402, >>> RFC 8754 and RFC 8986 >>> >> >> KT> Ack >> >> >>> >>> >>>> 432 Failure to protect the SR MPLS domain by correctly >>>> provisioning MPLS >>>> 433 support per interface permits attackers from outside the >>>> domain to >>>> 434 send packets to receivers of the Multi-point services that >>>> use the SR >>>> 435 P2MP trees provisioned within the domain. >>>> >>>> 437 Failure to protect the SRv6 domain with inbound >>>> Infrastructure Access >>>> 438 Control Lists (IACLs) on external interfaces, combined with >>>> failure >>>> 439 to implement BCP 38 [RFC2827] or apply IACLs on nodes >>>> provisioning >>>> 440 SIDs, permits attackers from outside the SR domain to send >>>> packets to >>>> 441 the receivers of Multi-point services that use the SR P2MP >>>> trees >>>> 442 provisioned within the domain. >>>> >>>> <major> References to RFC8754 and its security consideration is >>>> required here. >>>> Perhaps also to the security considerations or RFC8986? >>>> >>> >>> [RP] See previous response. >>> >> >> KT> Ack >> >> Thanks, >> Ketan >> >> >>> >>> >>>> >>>> <EoRv17> >>>> >>>> >>>> >>>> _______________________________________________ >>>> pim mailing list -- [email protected] >>>> To unsubscribe send an email to [email protected] >>>> >>> _______________________________________________ pim mailing list -- [email protected] To unsubscribe send an email to [email protected]