Skip to main content

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.