Appendix A. Illustration of the SR P2MP Policy and P2MP Tree
The examples use the following topology:
R3------R6
Controller--/ \
R1----R2----R5-----R7
\ /
+--R4---+
N-SIDn is the Node-SID of node Rn; A-SIDmn is the Adjacency-SID from Rm to Rn; Lmn is the interface between them. For SRv6, the examples use 2001:db8::/32, internal address space 2001:db8:0::/48, internal SRv6 SID space 2001:db8:cccc::/48, End, End.X, PSP, and USD functions.
The controller is provisioned with:
SR P2MP Policy <R1,T-ID>:
Leaf nodes: {R2, R6, R7}
candidate-path 1:
Optimize: IGP metric
Tree-SID: T-SID1
There is one active PTI with Instance-ID I-ID1. Replication segments use T-SID1 as the Replication-SID. For SRv6, the Replication-SID at node k, bound to End.Replicate, is 2001:db8:cccc:k:fa::/128.
A.1. P2MP Tree with Non-Adjacent Replication Segments
The computed PTI has Root R1, intermediate and Leaf node R2, and Leaf nodes R6 and R7. R1 replicates to R2; R2 replicates to R6 and R7. R3, R4, and R5 carry packets but hold no Replication segment state for the tree.
A.1.1. SR-MPLS
Replication segment <R1,T-ID,I-ID1,R1>:
Replication-SID: T-SID1
Replication State:
R2: <T-SID1->L12>
Replication segment <R1,T-ID,I-ID1,R2>:
Replication-SID: T-SID1
Replication State:
R2: <Leaf>
R6: <N-SID6, T-SID1>
R7: <N-SID7, T-SID1>
Replication segment <R1,T-ID,I-ID1,R6>:
Replication-SID: T-SID1
Replication State:
R6: <Leaf>
Replication segment <R1,T-ID,I-ID1,R7>:
Replication-SID: T-SID1
Replication State:
R7: <Leaf>
R1 pushes <T-SID1> toward R2. R2 acts as a Bud node, pops T-SID1 locally, and pushes <N-SID6,T-SID1> and <N-SID7,T-SID1> toward R6 and R7. Penultimate hops perform PHP for the Node-SIDs, leaving <T-SID1> for the Leaf nodes.
A.1.2. SRv6
For R2-to-R7 traffic, the example uses Policy27 with segment list:
Policy27: <2001:db8:cccc:4:c17::>
Replication segment <R1,T-ID,I-ID1,R1>:
Replication-SID: 2001:db8:cccc:1:fa::
Replication State:
R2: <2001:db8:cccc:2:fa::->L12>
Replication segment <R1,T-ID,I-ID1,R2>:
Replication-SID: 2001:db8:cccc:2:fa::
Replication State:
R2: <Leaf>
R6: <2001:db8:cccc:6:fa::>
R7: <2001:db8:cccc:7:fa:: -> Policy27>
Using H.Encaps.Replicate, R1 sends (2001:db8::1, 2001:db8:cccc:2:fa::) (A,B2) to R2. R2 removes the outer IPv6 header for its Leaf role and also replicates. Toward R7, R2 encapsulates with H.Encaps; R4 performs End.X USD, decapsulates, and sends (2001:db8::1, 2001:db8:cccc:7:fa::) (A,B2) to R7.
A.2. P2MP Tree with Adjacent Replication Segments
The computed PTI has Root R1, intermediate and Leaf node R2, intermediate nodes R3 and R5, and Leaf nodes R6 and R7. R1 replicates to R2; R2 replicates to R3 and R5; R3 replicates to R6; R5 replicates to R7. R4 has no Replication segment state.
A.2.1. SR-MPLS
Replication segment <R1,T-ID,I-ID1,R2>:
Replication-SID: T-SID1
Replication State:
R2: <Leaf>
R3: <T-SID1->L23>
R5: <T-SID1->L25>
Replication segment <R1,T-ID,I-ID1,R3>:
Replication-SID: T-SID1
Replication State:
R6: <T-SID1->L36>
Replication segment <R1,T-ID,I-ID1,R5>:
Replication-SID: T-SID1
Replication State:
R7: <T-SID1->L57>
Packets are replicated hop by hop on adjacent links. Each Replication node performs the NEXT operation on T-SID1, pushes the next T-SID1 where needed, and forwards on L23, L25, L36, or L57.
A.2.2. SRv6
Replication segment <R1,T-ID,I-ID1,R2>:
Replication-SID: 2001:db8:cccc:2:fa::
Replication State:
R2: <Leaf>
R3: <2001:db8:cccc:3:fa::->L23>
R5: <2001:db8:cccc:5:fa::->L25>
Replication segment <R1,T-ID,I-ID1,R3>:
Replication-SID: 2001:db8:cccc:3:fa::
Replication State:
R6: <2001:db8:cccc:6:fa::->L36>
Replication segment <R1,T-ID,I-ID1,R5>:
Replication-SID: 2001:db8:cccc:5:fa::
Replication State:
R7: <2001:db8:cccc:7:fa::->L57>
With H.Encaps.Replicate, R2 sends (2001:db8::1, 2001:db8:cccc:3:fa::) (A,B2) to R3 and (2001:db8::1, 2001:db8:cccc:5:fa::) (A,B2) to R5. R3 and R5 then replicate toward R6 and R7, whose Leaf behavior removes the outer IPv6 header and delivers the payload.