| Internet-Draft | SRv6 for Redundancy Protection | July 2026 |
| Geng, et al. | Expires 20 January 2027 | [Page] |
Redundancy Protection is a generalized protection mechanism to achieve high reliability for service provided in Segment Routing networks. The mechanism uses the "Live-Live" methodology, i.e., multiple copies of the data packets are sent on different paths to provide protection. This document introduces one new SRv6 Segment Endpoint Behavior to provide replication and elimination functions on specific network nodes by leveraging SRv6 Network Programming capabilities.¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 20 January 2027.¶
Copyright (c) 2026 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
Redundancy Protection is a generalized protection mechanism to achieve the high reliability for service provided in a Segment Routing (SR) network. Specifically, packets of flows are replicated at a replication network node into two or more copies, which are transported via different protections paths in parallel. On the elimination network node, the multiple copies are received, redundant packets are eliminated, and only a single copy of the packet is forwarded.¶
This mechanism is commonly referred to as "Live-Live" as data traffic is forwarded on the protection paths simultaneously and therefore it provides a packet level protection. In case of redundancy protection, there is no need to perform switchover between primary and backup paths as data packets are sent simultaneously on multiple protection paths. Connectivity is provided until at least one protection path remains operationel.¶
One new SRv6 Segment Endpoint Behavior is introduced to provide the redundancy protection functions (i.e., replication and/or elimination) on specific network nodes by leveraging SRv6 Network Programming capabilities.¶
Depending on the Service Level Objective of a service and the network characteristics (topology, link/node availability, BER of links, etc.) redundancy protection can be used alone or together with other protection mechanism like TI-LFA. Detailed design rules of Redundancy Protection (e.g., location of replication and elimination functions, number of used protection paths, routes of protection paths) are scenario specific and out of scope in this document.¶
Redundancy protection provides ultra reliable protection to many services, for example DetNet flows, Cloud VR/Game, IPTV service and other type of video services, high value private line service etc.¶
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
SR: Segment Routing¶
SRv6: Segment Routing over IPv6¶
SID: Segment Identifier¶
BSID: Binding SID¶
RSID: Redundancy SID¶
R-node: Redundancy node participating in the service protection.¶
Rep node: R-node doing replication. A network element that replicates incoming packets for parallel delivery.¶
Elm node: R-node doing elimination. A network element that eliminates duplicates to forward a single copy.¶
RedInst: Redundancy instance, flow-specific redundancy function on the R-node.¶
FID: Flow Identification¶
SeqNum: Sequence Number¶
Redundancy nodes are interconnected by SRv6 tunnels used to encapsulate the protected flow. Flow specific redundancy actions on a redundancy node are triggered by the Redundancy SID (RSID) and the actions are defined by the Redundancy Policy. The Redundancy Policy contains entries for each flow for which the R-node provides redundancy protection. The replicated flow parts between the R-nodes are referred as member flows.¶
There are two basic types of redundancy actions applied on the protected flow: (1) replication and (2) elimination . A flow has one or more actions defined in its Redundancy Policy Entry. The flow related redundancy instance (RedInst) has flow specific states (e.g., action type, action order, ingress/egress member flow specific parameters, identifiers).¶
To support the redundancy protection function, flow identification (FID) and sequence number (SeqNum) information are added to the member flow packets in the RSID. They are used at downstream R-nodes when their redundancy actions are executed.¶
FID identifies one specific member flow on an R-Node and has local significance. Allocation methods and signalling of FID values are out of scope in this document. They can be allocated for example by a centralized controller or can be allocated and advertised by the R-node. BGP, PCEP or Netconf protocols can facilitate the advertisement and distribution of flow identification information among controller and R-nodes. FID MUST be included in the RSID.¶
SeqNum distinguishes the packets within a flow by specifying the order of packets. Unlike the FID, which remains constant for all packet in a given member flow, the SeqNum changes with each packet. SeqNum MUST be included in the RSID.¶
The explicit format of Redundancy SID (RSID) is network addressing design specific. Redundancy specific parameters are encoded as follows:¶
LOC: specifies the redundancy node (same allocation rule applies as for any SRv6-enabled node).¶
FUNCT: a single value represents the redundancy function of a redundancy node.¶
ARG: Contains the FID and the SeqNum parameters.¶
RSID MUST support containing a FID of 20 bits.¶
RSID MUST support containing a SeqNum of 16 bits.¶
The ARG part of the RSID MUST contain first the FID immediatelly followed by the SeqNum. Remaining LSB of the ARG part MUST be filled with zeros.¶
For example, if a network uses /80 for LOC+FUNC, then the remaining 48 bits are enough to carry a 20-bit FID and a maximal size SeqNum field (28-bit) defined for DetNet flows in [RFC8964].¶
Note: if Function=RSID, Arg=0 is also a meaningful value and does not refer to the lack of arguments. It is meaning that the packet belongs to a flow having FID=0 and its SeqNum=0.¶
Note2: Encoding the FID and SeqNum as Arguments of the SID implies that when the RSID is in the IPv6 DA, the DA changes on a per packet basis for the redundancy protected flow, and it may alter the ECMP hashing. This can be avoided for example by using additional node specific SIDs before the RSID (e.g., End) or by excluding those bits from ECMP hashing.¶
A Redundancy SID (RSID) MUST have a related Redundancy Policy. The Redundancy Policy MUST contain entries for each member flow for which the R-node provides redundancy protection. An entry MUST contain the flow specific actions and their parameters.¶
The following summarizes the information that is needed in the Redundancy Policy entries:¶
Ingress member flow(s) identification information (e.g., FID).¶
Redundancy action parameters (e.g., Action type, RedInst, SeqNum length, Algorithm, Action pipeline).¶
Egress member flow(s) identification information (e.g., RSID+FID used by the downstream R-node).¶
Egress member flow(s) redundancy path parameters (e.g., ordered list of segments associated with a member flow).¶
The first and the last R-nodes needs additional information:¶
Ingress flow matching information on the first R-node (e.g., 5-tuple of the served flow).¶
Egress forwarding information on the last R-node (e.g., which VRF/VSI to use for forwarding).¶
Various options for ingress flow matching are defined for example in [RFC8939]. They can be used on the first R-node.¶
Using SR Policy desribed in [RFC9256] for the definition of an egress member flow redundancy path is out of scope here and left for further study.¶
Figure 1 shows an example of redundancy protection used in an SRv6 domain.¶
| |
|<--------------- SRv6 Domain ---------------->|
| |
| +-----+ |
| +-----+ R3 +-----+ |
| | +-----+ | |
+-----+ +--+--+ +--+--+ +-----+
-------+ R1 +--------+ Rep | | Elm +-------+ R2 +-------
+-----+ +--+--+ +--+--+ +-----+
| +-----+ |
+-----+ R4 +-----+
+-----+
¶
Figure 1: Example topology¶
R1, R2, R3, R4, Rep and Elm are SR-capable nodes. Rep and Elm are redundancy nodes (R-node). When a flow is sent into the SRv6 domain, the process is:¶
1) R1 receives the traffic flow and encapsulates packets with a list of segments destined to R2, which is instantiated as an ordered list of SRv6 SIDs.¶
2.1) When the packet flow arrives at Rep node (an R-node configured for replication), each packet is replicated into two copies.¶
2.2) Meta data information including flow identification (FID) and sequence number (SeqNum) are added to the copies. FID is used to identify the specific flow (and the related RedInst) on the downstream R-node, and SeqNum distinguishes the packet sequence within a flow.¶
2.3) Each copy of the packet is encapsulated with a new path specific segment list, which represents different forwarding paths towards the downstream R-node. One copy is forwarded over R3 and the other over R4. The path is provisioned for example by a controller.¶
3) The multiple replicas go through different paths until they reach the next R-node i.e., the Elm node in this example. The Elm node is configured with an elimination action for the flow. The first received copy of each packet is forwarded, and the redundant packets are eliminated. Furthermore, the redundancy policy entry of the flow specifies that the non-eliminated packets are forwarded without the meta data to the R2 node.¶
When there is any failure or packet loss in one path, the service transmission continues through the other path non-disruptively. No interaction is needed between the R-nodes.¶
Sometimes, out-of-order packets may occur since service packets are recovered from different forwarding paths. In this case, the Elm node or other network nodes downstream to the Elm node may include a reordering function to guarantee in-order delivery of packets. Reordering is implementation specific and out of the scope of this document.¶
Note: a possible reordering function is described in [RFC9550].¶
Note: the jitter caused by random packet loss can be minimized, if the protection paths have similar path forwarding delay.¶
To achieve the packet replication and elimination functions, the following packet processing rules are defined as a new set of SRv6 SID behaviors regarding the Redundancy SID: (i) End.R, (ii) H.Encaps.R, (iii) H.Encaps.R.Red, (iv) H.Encaps.R.L2, and (v) H.Encaps.R.L2.Red.¶
Note, that the algorithm used by the Redundancy Functionality is not within the scope of this document. For example, [IEEE8021CB] provides such algoritm.¶
This section describes the Redundancy specific behaviors that can be associated with a SID.¶
+-------------+-------------------------------------------------------+ | End.R | Endpoint with decapsulation and Redundancy Processing | +-------------+-------------------------------------------------------+
Redundancy Segment is the identifier of packets on which service protection needs to be executed on the redundancy node. It has associated Redundancy Policy(s), instantiation of which provides service protection action(s). The use of Redundancy Segment triggers the Redundancy Policy instantiation on the redundancy node.¶
Redundancy Segment is associated with service instructions, indicating the following operations:¶
Steers the packet into the corresponding redundancy instance.¶
Encapsulates flow identification and sequence number in SRv6 packets.¶
Packet replication/elimination and segment encapsulation/decapsulation based on the information of the flow-specific redundancy policy entry, e.g., the number of replication copies, an ordered list of segments with a topological instruction.¶
In this document, a new behavior End.R for Redundancy Segment is defined. An instance of a redundancy SID is associated with a redundancy policy B and a source address A. In the following description, End.R behavior is specified with the encapsulation mode.¶
For redundancy protection processing, two arguments are needed:¶
Flow-ID (FID): defines which flow the packet belongs to (what is used to determine which Redundancy instance has to be used on a node).¶
Sequence Number (SeqNum): defines the sequencing information, it is created at the first Redundancy node and used by replication and elimination functionalities.¶
Note: DetNet has defined a service protection for the DetNet service sub-layer [RFC8655]. The packet replication and elimination service protection method was defined for DetNet MPLS data plane using 20 bits for FID and the following SeqNum sizes: 0/16/28 bits [RFC8964].¶
In order to eliminate the redundant packets of a flow, the elimination node utilizes sequence number to evaluate the redundant status of a packet. The mechanism used for elimination is implementation-specific and outside the scope of this document.¶
R-nodes are interconnected by SRv6 tunnels used to encapsulate the protected flow and they hold flow states regarding the served traffic flow(s). From the segment routing architecture perspective [RFC8402] R-nodes are ingresss node for the served member flows. Flow-specific states are present only on R-nodes. Nodes between the R-nodes do not have flow-specific states.¶
As elimination node needs to maintain the state of served flows, a centralized controller MUST have a knowledge of elimination nodes capability. It MUST NOT provision the redundancy policy to a redundancy node when the computation result goes beyond the flow recovery capability of the elimination node. The capability advertisement is outside the scope of this document.¶
The Redundancy SID (RSID) MUST be the last segment in an SR Policy and it is associated with the Redundancy functionality.¶
When an SRv6-capable node (N) receives an IPv6 packet whose destination address matches a local IPv6 address instantiated as an SRv6 SID (S), and S is a Redundancy SID, N does:¶
S01. When an SRH is processed {
S02. If (Segments Left != 0) {
S03. Send an ICMP Parameter Problem message to the Source Address
with Code 0 (Erroneous header field encountered),
and Pointer set to the Segments Left field,
interrupt packet processing and discard the packet
S04. }
S05. Proceed to process the next header in the packet
S06. }
¶
When processing the Upper-Layer header of a packet matching a FIB entry locally instantiated as an End.R SID, N does the following:¶
S01. If (Upper-Layer header type ==
( 4(IPv4) OR 41(IPv6) OR 143(Ethernet) )
{
S02. Extract the ARG part of the SID
S03. Remove the outer IPv6 header with all its extension headers
S04. Forward the exposed payload, type and the ARG part to the
Redundancy functionality
S05. } Else {
S06. Process the Upper Layer Header
S07. }
¶
Upper Layer Header processing of End.R SID is same as defined in Section 4.1.1 of [RFC8986].¶
This section describes a set of SRv6 Redundancy Policy Headend [RFC8986] behaviors.¶
+--------------------+--------------------------------------------------+ | H.Encaps.R | SR Headend with Redundancy Encapsulation | +--------------------+--------------------------------------------------+ | H.Encaps.R.Red | H.Encaps with Reduced Redundancy Encapsulation | +--------------------+--------------------------------------------------+ | H.Encaps.R.L2 | H.Encaps.R Applied to Received L2 Frames | +--------------------+--------------------------------------------------+ | H.Encaps.R.L2.Red | H.Encaps.R.Red Applied to Received L2 Frames | +--------------------+--------------------------------------------------+
When a node "N" receives a packet P=(A, B) identified as a Flow for redundancy. B is neither a local address nor SID of "N".¶
Node "N" executes the Flow related Redundancy function(s), resulting in one or more member flows (P1=(A, B), P2=(A, B), ...) with related parameters ([Flow-ID1, SeqNum], [Flow-ID2, SeqNum], ...).¶
Note: The number of resulting member flows depends on the configuration of the Flow related function(s). For example, in case of elimination there is only one member flow.¶
Node "N" is configured with an IPv6 address "T" (e.g., assigned to its loopback).¶
Node "N" steers the egress packet P1 into an SRv6 Policy with a Source Address T and a segment list SP1=<S11, S12, S13>, where S13 is a Redundancy SID (LOC+FUNCT) with 0 as ARG.¶
The H.Encaps.R encapsulation behavior for one member flow is defined as follows (SA: source address, DA: destination address):¶
S01. Push an IPv6 header with its own SRH
Set the ARG part of the LAST SID in the segment list with FID and SeqNum
S02. Set outer IPv6 SA = T and outer IPv6 DA to the first SID
in the segment list
S03. Set outer Payload Length, Traffic Class, Hop Limit, and
Flow Label fields
S04. Set the outer Next Header value
S05. Decrement inner IPv6 Hop Limit or IPv4 TTL
S06. Submit the packet to the IPv6 module for transmission to S11
¶
After the H.Encaps.R behavior, P1, and P2 (if exists) respectively look like:¶
(T, S11) (S13, S12, S11; SL=2) (A, B), note: S13.ARG=Flow-ID1, SeqNum¶
(T, S21) (S23, S22, S21; SL=2) (A, B), note: S23.ARG=Flow-ID2, SeqNum¶
The member flow packet is encapsulated unmodified (with the exception of the IPv4 TTL or IPv6 Hop Limit that is decremented).¶
The push of the SRH MAY be omitted when the SRv6 Policy only contains one segment and there is no need to use any flag, tag, or TLV. In such cases the outer destination address is the Redundancy SID.¶
The H.Encaps.R.Red behavior is an optimization of the H.Encaps.R behavior.¶
H.Encaps.R.Red reduces the length of the SRH by excluding the first SID in the SRH of the pushed IPv6 header. The first SID is only placed in the Destination Address field of the pushed IPv6 header.¶
After the H.Encaps.R.Red behavior, P1, and P2 respectively look like:¶
The H.Encaps.R.L2 behavior encapsulates a received Ethernet frame and its attached VLAN header, if present, in an IPv6 packet with an SRH. The Ethernet frame becomes the payload of the new IPv6 packet.¶
The H.Encaps.R.L2 encapsulation behavior is similar to H.Encaps.R but sets an Ethernet specific outer Next Header and lacks the TTL/Hop Limit related action. H.Encaps.R.L2 is defined as follows:¶
S01. Push an IPv6 header with its own SRH
Set the ARG part of the LAST SID in the segment list with FID and SeqNum
S02. Set outer IPv6 SA = T and outer IPv6 DA to the first SID
in the segment list
S03. Set outer Payload Length, Traffic Class, Hop Limit, and
Flow Label fields
S04. Set the outer Next Header value
S05. <N/A>
S06. Submit the packet to the IPv6 module for transmission to S11
¶
The Next Header field of the SRH MUST be set to 143.¶
The push of the SRH MAY be omitted when the SRv6 Policy only contains one segment and there is no need to use any flag, tag, or TLV.¶
The encapsulating node MUST remove the preamble (if any) and frame check sequence (FCS) from the Ethernet frame upon encapsulation, and the decapsulating node MUST regenerate, as required, the preamble and FCS before forwarding the Ethernet frame.¶
The H.Encaps.R.L2.Red behavior is an optimization of the H.Encaps.R.L2 behavior.¶
H.Encaps.R.L2.Red reduces the length of the SRH by excluding the first SID in the SRH of the pushed IPv6 header. The first SID is only placed in the Destination Address field of the pushed IPv6 header.¶
The push of the SRH MAY be omitted when the SRv6 Policy only contains one segment and there is no need to use any flag, tag, or TLV.¶
IANA maintains the "SRv6 Endpoint Behaviors" sub-registry of the "Segment Routing Parameters" registry. IANA is requested to make one new assignments from the First Come First Served portion of the registry as follows:¶
Value | Hex | Endpoint Behavior | Reference | Change Controller ------+-------+-------------------+------------+------------------ TBD1 | xTBD1 | End.R | [This.I-D] | IETF¶
Note to the RFC Editor: this section have to be removed before publication.¶
This section records the status of known implementations of the Redundancy Protection defined by this specification at the time of posting of this Internet-Draft, and is based on a proposal described in RFC 7942. The description of implementations in this section is intended to assist the IETF in its decision processes in progressing drafts to RFCs. Please note that the listing of any individual implementation here does not imply endorsement by the IETF. Furthermore, no effort has been spent to verify the information presented here that was supplied by IETF contributors. This is not intended as, and must not be construed to be, a catalog of available implementations or their features. Readers are advised to note that other implementations may exist.¶
According to RFC 7942, "this will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature. It is up to the individual working groups to use this information as they see fit".¶
Known implementations:¶
The organization responsible for the implementation: open sourced.¶
Link to the implementation: https://github.com/EricssonResearch/xdpfrer¶
Brief general description: this software is an experimental implementation of the IEEE 802.1CB FRER standard and SRv6 Redundancy SID. It replicates packets over redundant network paths to protect against network failures. The implemented functions are called replication (generates copies and send them over disjoint paths) and elimination (accepts the first copy and drops the duplicates).¶
The implementation's level of maturity: prototype.¶
Coverage: RSID and Redundancy Policy are fully implemented. Flow identification on ingress node limited to FlowLabel. Maximum SID Depth (MSD) is 6.¶
Version compatibility: v08¶
Licensing: BSD 2-Clause "Simplified" License, see https://github.com/EricssonResearch/xdpfrer/blob/main/LICENSE¶
Implementation experience: detailed description at implementation link.¶
Contact information: Ferenc Fejes ferenc.fejes at ericsson.com¶
Date: 2026.07.10.¶
This section addresses the operational and management aspects of SRv6 Redundancy Protection, covering deployment, configuration, monitoring, and maintenance guidance for operators managing this functionality in order to effectively integrate this capability into their networks while maintaining security, performance, and consistency. This is a non-exhaustive list of operational considerations.¶
Redundancy Protection should operate with reasonable defaults:¶
Redundancy Protection function: R-nodes should default to pass-through mode until explicitly configured with an RSID and the related Redundancy Policy.¶
FID Field Size: Default to 20 bits as specified in Section 3.2.¶
SeqNum Field Size: Default to 16 bits as specified in Section 3.2., supporting more bits for advanced scenarios.¶
Application: Redundancy policies should not be applied until explicitly provisioned by a management entity or control plane, preventing unintended replication or elimination of traffic.¶
Operators must be able to verify that configured defaults match actual running configurations for troubleshooting and consistency assurance.¶
Redundancy Protection integrates incrementally into existing SRv6 networks:¶
Coexistence: R-nodes support both Redundancy Endpoint behavior (End.R) and existing SRv6 behaviors. Traffic not served by the Redundancy Protection function is unaffected.¶
Staged Deployment: Operators may deploy to a subset of nodes or flows before network-wide adoption.¶
Configuration Rollback: Operators should have the ability to disable redundancy policies on R-nodes without disrupting other services, enabling rapid rollback if issues arise during deployment.¶
Dependencies: All R-nodes must support SRv6. Accurate time synchronization (i.e., NTP) is recommended. External systems (PCE, SDN controllers) are expected to compute (disjoint) protection paths.¶
Resource Consumption:¶
Bandwidth: Redundancy Protection duplicates traffic (i.e., 100% overhead per additional protection path).¶
R-node Processing: Replication and elimination consume CPU and memory. Operators must ensure flow count does not exceed R-node capacity.¶
ECMP and Load Balancing Impact: Per-packet ARG changes in RSID may alter ECMP hashing. The impact can be mitigated by excluding ARG bits from hash computation or using node-specific SID(s) before RSID.¶
Fast Reroute (FRR): Redundancy Protection can coexist with other protection mechanisms. Operators should carefully consider the interaction to avoid unnecessary resource usage.¶
Traffic Pattern Changes: Using Redundancy Protection assumes sufficient path diversity. Monitoring should account for expected duplication patterns to avoid false security alarms.¶
Security operation related to redundancy proection functionality are:¶
Indicators of Compromise: Security operators must account for simultaneous traffic on multiple paths. Sequence number analysis can detect replay attacks or anomalies. Implemented algorithms on R-nodes should provide counters to allow such an analysis.¶
Logging: Replication/Elimination events, policy changes, and error conditions must be logged with timestamps for audit trails.¶
Management Access Control: Use strong authentication, encrypted transport (TLS), and role-based access control (RBAC) for all management interfaces.¶
Operators should verify redundancy protection through several mechanisms:¶
Redundancy Policy Status: Query active redundancy policy entries and served flows on each R-node is needed.¶
Replication/Elimination Counters: Monitor the number of duplicate packets on a per flow basis.¶
Path Verification: Confirm traffic follows intended protection paths via SRH inspection.¶
Connectivity Tests: End-to-end connectivity testing for a served flow is needed e.g., for troubleshooting.¶
The following manageable entities are described: Redundancy Node (R-node), Redundancy SID (RSID), Redundancy Policy, and Redundancy Instance (having per-flow state).¶
Standardized Technologies used for Redundancy Protection:¶
YANG-based Management: Recommended for configuration and state via NETCONF [RFC6241] or RESTCONF [RFC8040]. This needs further work.¶
Syslog: For operational events and error logging [RFC5424].¶
YANG Data Model: A Device Model should distinguish between configuration data (policies, flow criteria), operational state (active flows, sequence numbers), and statistics (counters, performance metrics). The model must enforce valid SeqNum sizes and FID ranges and express relationships between policies, flows, and member flows.¶
Fault Management:¶
Monitor liveness via CFM tools and/or detecting packet arrival on protection paths.¶
Track replication/elimination rates and sequence number gaps to identify path failures.¶
Count malformed RSIDs to detect configuration errors.¶
Generate alerts when approaching flow capacity limits.¶
Configuration Management:¶
The following tools are expected:¶
Protocol Monitoring: Track replication rate, elimination rate, out-of-order delivery rate, and packet loss via sequence number discontinuities.¶
Device Monitoring: Monitor CPU utilization, memory consumption, and forwarding performance impact on R-nodes.¶
Network Monitoring: Monitor link utilization on protection paths and path efficiency relative to direct routes.¶
Service Monitoring: Measure flow-level metrics (throughput, latency, jitter) against SLA targets.¶
Accounting: Collect usage statistics (protected flows, replicated bandwidth) for capacity planning, cost allocation, and trend analysis.¶
Operators should first assess whether existing management systems (NETCONF clients, syslog aggregators, monitoring platforms) can be adapted to support redundancy protection before developing new tools. New tooling development should focus only on functions existing tools cannot provide (e.g., specialized path computation and validation).¶
Detailed security considerations for segment routing are cataloged in [RFC8402], [RFC8754], and [RFC8986]. General security considerations are described in [I-D.ietf-spring-srv6-security].¶
The introduction of Redundancy Segments in Segment Routing networks introduces new vectors for security threats that must be carefully mitigated.¶
Redundancy protection intentionally replicates packets across multiple paths. Without proper admission control or policy enforcement, an attacker could exploit this mechanism to amplify traffic, overwhelming downstream links or merging nodes. The amplification can also magnify denial-of-service attacks if unauthorized traffic reaches replication nodes. Amplification can also achieved by the attacker by blocking the elimination.¶
The use of redundancy protection should be restricted to a trusted SR domain with controlled flows, i.e., rate-limiting and flow admission control at the ingress is employed. Redundancy protection should be provisioned via authenticated and authorized controllers (e.g., PCEP with TLS).¶
The Elm node relies on sequence numbers to de-duplicate packets. An attacker that can inject or manipulate these sequence numbers could cause legitimate packets to be dropped or reordered.¶
Replay attacks also can affect the operation of redundancy protection. For example, a rogue node, either the headend or a transit node, can cause pathological reordering, intentionally delay packets, or duplicate packets to arrive much later. The impact of such attacks is dependent on the algorithm used by the elimination instance, however algorithm are out of scope in this document.¶
Redundancy protection may involve topology-specific path selections that reveal operational characteristics of the network (e.g., availability of disjoint paths). Statements of [RFC8402] on leaking explicit routing information through the boundaries of the administered domain applies for redundancy protection specific information as well.¶
Redundancy nodes with elimination functionality need to maintain state (e.g., sequence windows, buffering) for each redundancy protected flow. An attacker might attempt to create many such flows to exhaust memory or processing capacity.¶
By limiting the number of concurrent redundancy flows the R-node can protect its resources. Impact of resource exhaustion is dependent on the implemented method, however algorithms of elimination are out of scope of this document.¶
The authors would like to thank Bruno Decraene, Ron Bonica, James Guichard, Jeffrey Zhang, Adrian Farrel for their valuable comments and discussions.¶
This appendix shows how the described End.R mechanisms can be used in an SRv6 network.¶
+----+ Link3 +----+
| |----->-------| | Link6
+->--| N3 |----->-------| E5 |--->--+
| +----+ Link4 +----+ |
| Link1 | |
+---+ +----+ | +----+ +---+
|src|--->---| R1 | +->-+ | E6 |--->---|dst|
+---+ +----+ | +----+ +---+
| Link2 | Link7 |
| +----+ +----+ |
+->--| n4 |--->-----| R2 |----->----+
+----+ Link5 +----+ Link8
n: non-SRv6 IPv6 node
N: SRv6-capable node
R: Node with Replication Function
E: Node with Elimination Function
L: Link between nodes
In the reference topology:¶
Nodes N3, R1, R2, E5 and E6 are SRv6-capable nodes.¶
Nodes R1, R2, E5 and E6 are Redundancy nodes.¶
Nodes n4 is an IPv6 node that is not SRv6-capable.¶
Node j has an IPv6 loopback address 2001:db8:L:j::/128.¶
A SID at node j with locator block 2001:db8:K::/48 and function U is represented by 2001:db8:K:j:U::.¶
2001:db8:K:j:P:: is explicitly allocated as the End.R SID at node j. For example, 2001:db8:K:2:P:: represents End.R at node R2.¶
2001:db8:K:j:Xin:: is explicitly allocated as the End.X SID at node j towards neighbor node i via the nth link between nodes i and j. For example, 2001:db8:K:3:X51:: represents End.X at node N3 towards node E5 via link3 (the first link between nodes N3 and E5). Similarly, 2001:db8:K:3:X52:: represents the End.X at node N3 towards node E5 via link4 (the second link between nodes N3 and E5).¶
If the src node sends a packet to the dst node for which per packet redundancy is configured, then the nodes with Redundancy functions provide the required replication or elimination functions. For instance, in the example in Figure 3:¶
Node src sends a UDP packet as follows: (2001:db8:src::1, 2001:db8:dst::1, NH = UDP)(UDP payload).¶
Node R1, which is an SRv6-capable Redundancy node, identifies the flow the packet belongs to. As replication is defined by the Redundancy Policy for the given flow, R1 performs the replication action and intends to send the packet to the next R-nodes (E5 and R2). These nodes are reachable via SRv6, so R1 performs H.Encaps.R(.Red) on the replicas with a path specific SRH. The argument part of the End.R SID involves the Flow-ID and the SeqNum.¶
Specifically, one replica is sent on link-1 towards E5 (2001:db8:L:1::, 2001:db8:K:3:X51::) (2001:db8:K:5:P:arg::, 2001:db8:K:3:X51::, SL=1, NH = IPv6) (2001:db8:src::1, 2001:db8:dst::1, NH = UDP)(UDP payload).¶
The other replica is sent on link-2 towards R2 (2001:db8:L:1::, 2001:db8:K:2:P:arg::, NH = IPv6) (2001:db8:src::1, 2001:db8:dst::1, NH = UDP)(UDP payload).¶
Node N3, which is an SRv6-capable node, performs the standard SRH processing. Specifically, it executes the End.X behavior indicated by the 2001:db8:K:3:X51:: SID and forwards the packet on link3 to node E5.¶
Node n4, which is a non-SRv6-capable node, performs the standard IPv6 processing. Specifically, it forwards the UDP packet based on DA 2001:db8:K:2:P:arg:: in the IPv6 header towards node R2.¶
Node R2, which is an SRv6-capable Redundancy node, identifies the packet as targeted to the local Redundancy function. R2 performs the decapsulation and forwards the exposed payload and the ARG part to the redundancy functionality. The redundancy function identifies the flow the packet belongs to. As replication is defined by the Redundancy Policy for the given flow, R2 performs the replication action and intends to send the packet to the next redundancy nodes (E5 and E6). These nodes are reachable via SRv6, so R2 performs H.Encaps.R(.Red) on the replicas with a path specific SRH. The argument part of the End.R SID involves the Flow-ID and the SeqNum.¶
Specifically, one replica is sent on link-7 towards E5 (2001:db8:L:2::, 2001:db8:K:5:P:arg::, NH = IPv6) (2001:db8:src::1, 2001:db8:dst::1, NH = UDP)(UDP payload).¶
The other replica is sent on link-8 towards E6 (2001:db8:L:2::, 2001:db8:K:6:P:arg::, NH = IPv6) (2001:db8:src::1, 2001:db8:dst::1, NH = UDP)(UDP payload).¶
Node E5, which is an SRv6-capable Redundancy node, identifies the packets as targeted to the local redundancy function. E5 performs the decapsulation and forwards the payload and the ARG part to the redundancy functionality. The redundancy function identifies the flow the packet belongs to. As elimination is defined by the Redundancy Policy for the given flow, the elimination action is performed on the packets received over Link3 and Link7. E5 intends to send the packet to the next redundancy node (E6), which is reachable via SRv6, so E6 performs H.Encaps.R(.Red) with a path specific SRH. The argument part of the End.R SID involves the Flow-ID and the SeqNum.¶
Specifically, the replica received first is sent on link-6 towards E6 (2001:db8:L:5::, 2001:db8:K:6:P:arg::, NH = IPv6) (2001:db8:src::1, 2001:db8:dst::1, NH = UDP)(UDP payload).¶
Node E6, which is an SRv6-capable redundancy node, identifies the packets as targeted to the local redundancy function. It performs the decapsulation and forwards the payload and the ARG part to the redundancy functionality. The redundancy function identifies the flow the packet belongs to. As elimination is defined by the Redundancy Policy for the given flow, the elimination action is performed on the packets received over Link6 and Link8. E6 is the last redundancy node, so after the redundancy function it send the UDP packet towards the destination. Specifically, the replica received first is sent towards the destination (2001:db8:src::1, 2001:db8:dst::1, NH = UDP)(UDP payload).¶
The example topology shown in Figure 3 is constructed to show the usage of RSID. Note that any of the links can be replaced with an SRv6 network segment. The above described principles are applicable to such more complex network topologies as well.¶