Skip to content

RFC 9524 - SR Replication Segment

Field Value
Title Segment Routing Replication for Multipoint Service Delivery
Authors D. Voyer (Ed.), C. Filsfils, R. Parekh, H. Bidgoli, Z. Zhang
Date February 2024
Status Proposed Standard
Updated by RFC 9960 (Replication-ID structure)
Link datatracker.ietf.org/doc/rfc9524

Summary

RFC 9524 adds a new segment type to the SR architecture: the Replication segment. A node that holds a Replication segment (the replication node) copies each packet it receives on that segment and sends one copy to each of a set of downstream nodes. The same construct works for SR-MPLS (a label) and SRv6 (a SID with the new End.Replicate behavior).

Unlike every other SRv6 behavior, End.Replicate is driven by local replication state rather than by the segment list. The replication node looks up the SID's FUNCT bits, finds its list of replication branches, and for each branch writes the downstream node's Replication-SID into the outer IPv6 destination address. Downstream nodes do not need to be adjacent: the locator of the downstream Replication-SID is enough to reach it over shortest path (default or Flex-Algo), or the replication node can add an H.Encaps.Red segment list to steer the copy over a TE path.

A single Replication segment whose downstream nodes are all the egress PEs is simply ingress replication. Stitching several Replication segments together (root → intermediate replication nodes → leaves) builds a P2MP tree; RFC 9524 deliberately leaves that stitching to a control plane, which RFC 9960 (SR P2MP Policy) defines.

Key Sections

Section Topic Description
1.2 Use Cases Ingress replication for MVPN and EVPN BUM; trees built from stitched segments
2 Replication Segment Identifier <Replication-ID, Node-ID>, Replication-SID, downstream nodes, replication state
2.1 SR-MPLS Data Plane POP + per-branch PUSH of downstream Replication-SID
2.2 SRv6 Data Plane DA rewrite, optional H.Encaps.Red per branch, Hop Limit handling
2.2.1 End.Replicate Pseudocode for the replicate and/or decapsulate behavior
2.2.2 OAM Pinging a leaf Replication-SID through transit replication nodes
2.2.3 ICMPv6 Errors Same ICMPv6 restrictions as IPv6 multicast destinations
App. A Illustration Worked SR-MPLS and SRv6 examples

Node Roles and Terminology

Term Meaning
Replication node Node that replicates packets based on a Replication segment
Downstream nodes The set of nodes a Replication segment sends copies to
Replication state (RS) List of branches, each a <downstream node, downstream Replication-SID> pair (optionally with a segment list)
Root Ingress node of the P2MP service (also a replication node)
Leaf Egress node; its Replication segment has a leaf indicator and an empty branch list
Bud Node that is both a replication node and a leaf

End.Replicate Processing (SRv6)

Step Action
1 Look up the FUNCT part of the DA to find the replication state; drop if none
2 Drop if Hop Limit ≤ 1, or below the optional per-segment Hop Limit Threshold (rate-limited log)
3 Decrement Hop Limit; optionally process SRH TLVs
4 For each branch: copy the packet, set DA = downstream Replication-SID, optionally apply H.Encaps/H.Encaps.Red with the branch's segment list, then forward via the IPv6 FIB
5 If the node is a Leaf or Bud: derive the packet-processing context (from the next SID in the SRH or from the Replication-SID itself), strip the outer header, and process the inner IPv4/IPv6/Ethernet payload

The SRH segment list is not advanced by a replication node — copies leave with the SRH unchanged. Any SIDs after the Replication-SID are context for leaf/bud nodes (for example, a service SID identifying the VPN).

Codepoint Value Registry
End.Replicate 75 (0x004B) SRv6 Endpoint Behaviors

Ingress Replication vs Tree

Model Replication segments Transit state
Ingress replication One at the root; all leaves are downstream nodes None beyond normal unicast forwarding
P2MP tree (RFC 9960) Root + intermediate replication nodes + leaves Replication state on each replication node; plain transit routers forward on the locator

Common Pitfalls

  • End.Replicate is stateful at replication nodes. It is not "replication encoded in the SRH" — the branch list lives on the node and is programmed locally or by a controller.
  • ICMPv6 errors (Time Exceeded, Parameter Problem) must not be generated for Replication-SIDs, so traceroute to a leaf Replication-SID does not work. Use ping to a leaf/bud Replication-SID instead (Section 2.2.2).
  • Set the root's Hop Limit high enough to reach the furthest leaf; copying the payload's Hop Limit may strand distant leaves. Non-replicating routers on the path can otherwise expire packets and storm the root with ICMPv6.
  • When a branch uses H.Encaps.Red to reach a non-adjacent downstream node, the extra IPv6 header must fit the path MTU.
  • If an HMAC TLV is used with a context SID in the SRH, the root must set the SRH D bit because the Replication-SID is not in the segment list.
  • Locally provisioned chains of Replication segments must not form loops; RFC 9524 itself has no loop detection.
Document Relationship Description
RFC 9960 Updates RFC 9524 SR P2MP Policy; redefines the Replication-ID as <Root, Tree-ID, Instance-ID>
draft-ietf-pce-sr-p2mp-policy Control plane PCEP extensions for instantiating Replication segments of P2MP trees
draft-ietf-idr-sr-p2mp-policy Control plane Advertising P2MP policies in BGP
draft-ietf-spring-sr-replication-segment Draft lineage Draft that became RFC 9524

References

  1. RFC 9524 - Segment Routing Replication for Multipoint Service Delivery
  2. RFC 9960 - Segment Routing Point-to-Multipoint Policy (updates RFC 9524)
  3. RFC 7988 - Ingress Replication Tunnels in Multicast VPN
  4. RFC 8986 - SRv6 Network Programming (H.Encaps.Red, USD flavor, End.DT2M)