Internet-Draft SRv6 for Redundancy Protection August 2026
Geng, et al. Expires 1 March 2027 [Page]
Workgroup:
SPRING Working Group
Internet-Draft:
draft-ietf-spring-sr-redundancy-protection-09
Published:
Intended Status:
Standards Track
Expires:
Authors:
X. Geng
Huawei Technologies
M. Chen
Huawei Technologies
P. Camarillo
Cisco Systems
G. Mishra
Verizon Inc.
B. Varga, Ed.
Ericsson

SRv6 for Redundancy Protection

Abstract

Redundancy Protection is a generalized protection mechanism to achieve high reliability for services 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, the associated Headend Encapsulation Behaviors and the associated Redundancy Policy to provide replication and elimination functions on specific network nodes by leveraging SRv6 Network Programming capabilities.

Status of This Memo

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 1 March 2027.

Table of Contents

1. Introduction

Redundancy Protection is a generalized protection mechanism to achieve high reliability for services 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 protection paths in parallel. At 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 operational.

One new SRv6 Segment Endpoint Behavior, the associated Headend Encapsulation Behaviors and the associated Redundancy Policy are introduced to support the redundancy protection functions (i.e., replication, and 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, Bit Error Rate of links, etc.) redundancy protection can be used alone or together with other protection mechanisms 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 outside the scope of this document.

Redundancy protection provides ultra-reliable protection to many services, for example DetNet flows, Cloud VR/Game, IPTV service and other types of video service, high-value private-line services.

2. Terminology

2.1. Requirements Language

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.

2.2. Terminology and Conventions

SR: Segment Routing

SRv6: Segment Routing over IPv6

SID: Segment Identifier

RSID: Redundancy SID

R-node: Redundancy node participating in the service protection.

Replication node: R-node doing replication. A network element that replicates incoming packets for parallel delivery.

Elimination node: R-node doing elimination. A network element that eliminates duplicates to forward a single copy.

Redundancy Policy: A policy associated with an RSID, that contains entries for redundancy protected flows and how these flows are served by local redundancy functions.

RedInst: Redundancy instance, that provides the flow-specific redundancy function on an R-node.

FID: Flow Identifier

SeqNum: Sequence Number

Member flow: One part of the protected flow between the R-nodes.

3. Redundancy Protection in Segment Routing Scenario

3.1. Redundancy Node Concept

Redundancy nodes (R-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 to 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 actions are executed by the flow related redundancy instance (RedInst), that maintains flow-specific state (e.g., action type, action order, ingress/egress member flow-specific parameters, identifiers).

3.2. RSID and Metadata to Support Redundancy Protection

To support the redundancy protection function, flow identifier (FID) and sequence number (SeqNum) information are added to the member flow packets in the RSID as arguments. They are used at downstream R-nodes when their redundancy actions are executed:

  1. Flow Identifier (FID): defines which flow the packet belongs to. It is used to determine via the Redundancy Policy which redundancy instance (RedInst) has to be used on a node.

  2. Sequence Number (SeqNum): defines the sequencing information, it is created at the first redundancy node, and used by the replication and elimination functionalities.

FID identifies one specific member flow on an R-node and has local significance. The FID value is allocated by the receiving R-node, therefore an upstream R-node must place the downstream R-node's FID in the RSID. Allocation methods and signalling of FID values are outside the scope of 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 controllers and R-nodes. FID MUST be included in the RSID as an argument.

The local FID identifies an ingress member flow, and the Redundancy Policy points to the related serving RedInst. Member flows of an original flow may have different FIDs at different R-nodes. In case of elimination there are multiple incoming FIDs for the member flows and they are associated with the same elimination instance (RedInst).

SeqNum distinguishes the packets within a flow by specifying the order of packets. All replicas of an original packet carry the same SeqNum. Unlike the FID, which remains constant for all packets in a given member flow, the SeqNum changes with each packet. SeqNum MUST be included in the RSID as an argument.

The SeqNumber is an unsigned value and the SeqNum space is a circular one with no restriction on the initial value. The SeqNum MUST be incremented by one for each new packet of the original flow. The values can wrap, and it is important to note that zero (0) is a valid SeqNum value. For example, when the SeqNum size is 16 bits, the sequence will contain: 65535, 0, 1, where zero (0) is an ordinary sequence number. The SeqNum length MUST be provisioned on a per original flow basis via configuration in the Redundancy Policy, and MUST be consistent on all related R-nodes. SeqNum is generated at the first R-node along the path and subsequent R-nodes preserve the original SeqNum.

The algorithm(s) used by RedInst is out of scope. Impact of various network events like restart of an R-node are algorithm-specific and also not covered here.

The exact format of Redundancy SID (RSID) is network addressing design specific. Redundancy-specific parameters are encoded as follows:

The minimum number of bits needed for FID and SeqNum are dependent on the network scenario and the characteristics of the served flows. As the size of these parameters directly impacts scalability, this document list values an implementation MUST support. Other parameter sizes MAY be supported if it fits within the selected network addressing design.

RSID MUST support containing a FID of 20 bits.

RSID MUST support containing a SeqNum of 16 bits and 28 bits.

The ARG part of the RSID MUST contain first the FID immediately followed by the SeqNum. Remaining least-significant bits of the ARG part MUST be filled with zeros.

A packet does not carry any indication of the SeqNum length. The SeqNum length is inferred entirely from the locally configured Redundancy Policy. All member flows associated with a RedInst MUST use the same SeqNum length. The remaining zero-filled bits are merely padding.

Figure 1 shows an example of the RSID with a 20-bit FID and 16-bit SeqNum in the argument.

 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
+-                         LOC (64 bits)                       -+
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|          FUNC (16 bits)       |         FID (20 bits)         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  FID  |       SeqNum (16 bits)        |0 0 0 0 0 0 0 0 0 0 0 0|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+


Figure 1: Redundancy SID example - LOC(64b)+FUNC(16b)+ARG(FID(20b)+SeqNum(16b)+Padding(12b))

A Redundancy Policy SHOULD check and reject configuration with unsupported or inconsistent SeqNum lengths.

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 maximum-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 means that the packet belongs to a flow having FID=0 and its SeqNum=0.

Note 2.: 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).

3.3. Redundancy Policy

A Redundancy SID MUST have a related Redundancy Policy. The Redundancy Policy MUST contain entries for each member flow for which the R-node provides redundancy protection using the given RSID. Each entry of the Redundancy Policy MUST contain the flow-specific actions and their parameters.

The following summarizes the minimum set of information that is needed in the Redundancy Policy entries:

The first and last R-nodes need additional information elements:

Flow matching options are defined, for example, in [RFC8939]. They can be used for ingress flow matching on the first R-node.

The use of an SR Policy, as described in [RFC9256], to define an egress member-flow protection path is outside the scope of this document.

3.4. Example of a Redundancy Protection Scenario

Figure 2 shows an example of redundancy protection used in an SRv6 domain.

           |                                              |
           |<--------------- SRv6 Domain ---------------->|
           |                                              |
           |                    +-----+                   |
           |              +-----+  R3 +-----+             |
           |              |     +-----+     |             |
        +-----+        +--+--+           +--+--+       +-----+
 -------+  R1 +--------+ Rep |           | Elm +-------+  R2 +-------
        +-----+        +--+--+           +--+--+       +-----+
                          |     +-----+     |
                          +-----+  R4 +-----+
                                +-----+
Figure 2: Simple Example Topology for Redundancy Protection

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 the Rep node (an R-node configured for replication), each packet is replicated into two copies.

2-2) Metadata information including flow identifier (FID) and sequence number (SeqNum) are added to the copies. (FID is used to identify the specific flow on the downstream R-node, and SeqNum distinguishes the packet sequence within a flow.)

2-3) Each copy of the packet is encapsulated using the RSID of the downstream R-node and a new path-specific segment list, which represents different forwarding paths towards the downstream R-node. One encapsulated copy is forwarded over R3 and the other over R4. The path is provisioned for example, by a controller.

3) The multiple encapsulated replicas go through different paths until they reach the next R-node, i.e., the Elm node in this example.

4-1) The Elm node decapsulates the packets and it is configured with an elimination action for the flow. The first received copy of each packet is forwarded, and the redundant packets are eliminated.

4-2) Furthermore, the redundancy policy entry of the flow specifies that the non-eliminated packets are forwarded, without additional encapsulation and added metadata, 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.

In general, replicas are preferred to be sent over disjoint paths. The mechanism can operate over non-disjoint paths, although the resulting protection may be reduced. The type of disjointness (e.g., using link-, node-, or SRLG-disjoint paths) is use-case and network scenario-specific.

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 of 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 2.: the jitter caused by random packet loss can be minimized, if the protection paths have similar forwarding delay.

4. SRv6 Segment Behavior to Support Redundancy Protection

To achieve Redundancy Protection in an SRv6 network, the following packet processing rules are defined 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 algorithms used for reliability.

4.1. Redundancy Segment Endpoint Behavior

This section describes the redundancy-specific behaviors that can be associated with a SID.

+-------------+-------------------------------------------------------+
| End.R       | Endpoint with decapsulation and Redundancy Processing |
+-------------+-------------------------------------------------------+
Figure 3: Redundancy Endpoint Behavior

Redundancy Segment is the identifier of packets on which service protection needs to be executed on the redundancy node. It has an associated Redundancy Policy, defining the flow-specific instance executing the service protection action(s). The use of Redundancy Segment triggers via the redundancy functionality of the R-node.

R-nodes are interconnected by SRv6 tunnels used to encapsulate the protected flow and they hold flow state regarding the served traffic flow. From the segment routing architecture perspective [RFC8402], R-nodes are ingress 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.

The Redundancy SID MUST be the final segment in an SR Policy (i.e., Segment List[0]) and it is associated with the redundancy functionality.

A Redundancy Segment is associated with service instructions, indicating the following operations:

The RedInst is selected by the flow-specific redundancy policy entry and it executes the related redundancy processing (like packet replication/elimination, egress member flow encapsulation). Packets with an unknown FID or failed redundancy instance (e.g., incomplete configuration, resource exhaustion, unsupported SeqNum length) MUST be droped.

Because an R-node needs to maintain the state of served flows, the management or control-plane entity provisioning the policy MUST have knowledge of replication/elimination node's capabilities (e.g., maximum number of flows, maxmimum packet rate, buffering capacity, supported algorithms, computation capacity). It MUST NOT provision the redundancy policy to a redundancy node when the computation result goes beyond the capability of the node. The capability advertisement is outside the scope of this document.

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 function;
S05. } Else {
S06.    Process the Upper-Layer Header;
S07. }

Upper-Layer Header processing of End.R SID in Step06 is the same as that defined in Section 4.1.1 of [RFC8986].

4.2. SR Policy Headend Behaviors

This section describes a set of SRv6 Redundancy Policy Headend 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     |
+--------------------+--------------------------------------------------+
Figure 4: Redundancy-specific SR Policy Headend Behaviors

4.2.1. H.Encaps.R: SR Headend with Redundancy

When a node "N" receives a packet P=(A, B) identified as a flow for redundancy, and B is neither a local address nor a SID of "N".

Node "N" executes the flow-related redundancy function, resulting in one or more member flows (P1=(A, B), P2=(A, B), ...) with related parameters ([FID1, SeqNum], [FID2, SeqNum], ...).

Note: The number of resulting member flows depends on the configuration of the flow related function. For example, in the case of elimination there is only one egress 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+FUNC) 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;
S02. Set the ARG part of the FINAL SID in the segment list with
     FID and SeqNum;
S03. Set outer IPv6 SA = T and outer IPv6 DA to the first SID
     in the segment list;
S04. Set outer Payload Length, Traffic Class, Hop Limit, and
     Flow Label fields;
S05. Set the outer Next Header value;
S06. Decrement inner IPv6 Hop Limit or IPv4 TTL;
S07. Submit the packet to the IPv6 module for transmission;

The Next Header field of the SRH MUST be set to 4 or 41 depending on the encapsulated packet (IPv4 or IPv6 respectively).

After the H.Encaps.R behavior, P1 and P2, if P2 exists, look like:

  • (T, S11) (S13, S12, S11; SL=2) (A, B), note: S13.ARG=FID1,SeqNum

  • (T, S21) (S23, S22, S21; SL=2) (A, B), note: S23.ARG=FID2,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 and the Next Header field of the IPv6 packet is set to 4 (IPv4 payload) or 41 (IPv6 payload).

4.2.2. H.Encaps.R.Red: H.Encaps.R with Reduced Encapsulation

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:

  • (T, S11) (S13, S12; SL=2) (A, B), note: S13.ARG=FID1, SeqNum

  • (T, S21) (S23, S22; SL=2) (A, B), note: S23.ARG=FID2, SeqNum

4.2.3. H.Encaps.R.L2: H.Encaps.R applied to received L2 Frames

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- or Hop-Limit-related action. H.Encaps.R.L2 is defined as follows:

S01. Push an IPv6 header with its own SRH
S02. Set the ARG part of the FINAL SID in the segment list with
     FID and SeqNum;
S03. Set outer IPv6 SA = T and outer IPv6 DA to the first SID
     in the segment list;
S04. Set outer Payload Length, Traffic Class, Hop Limit, and
     Flow Label fields;
S05. Set the outer Next Header value;
S06. Submit the packet to the IPv6 module for transmission;

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. In such cases the outer destination address is the Redundancy SID and the Next Header field of the IPv6 packet is set to 143 (Ethernet payload).

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.

4.2.4. H.Encaps.R.L2.Red: H.Encaps.R.L2 with Reduced Encapsulation

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.

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.

4.3. Counters

A node supporting this document SHOULD implement a pair of traffic counters (one for packets and one for bytes) per local RSID entry, for traffic that matched that RSID and was processed successfully (i.e., packets that generate ICMP Error Messages or are dropped are not counted). The retrieval of these counters from MIB, NETCONF/YANG, or any other data structure is outside the scope of this document.

Counters and logging of redundancy istances are algorythm and implementation-specific and are outside the scope of this document.

5. IANA Considerations

IANA maintains the "SRv6 Endpoint Behaviors" sub-registry of the "Segment Routing" registry. IANA is requested to make one new assignment from the First Come First Served portion of the registry as follows:

 Value | Hex   | Endpoint Behavior | Reference  | Change Controller
 ------+-------+-------------------+------------+------------------
 TBD1  | 0xTBD1| End.R             | [This.I-D] | IETF

6. Implementation Description

Note to the RFC Editor: this section is 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-making 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:

7. Operational Considerations

This section addresses the operational and management aspects of SRv6 Redundancy Protection, covering deployment, configuration, monitoring, and maintenance guidance. It is targeted for operators managing this functionality to effectively integrate the capability into their networks while maintaining security, performance, and consistency. This is a non-exhaustive list of operational considerations.

7.1. Installation and Initial Setup

Redundancy protection MUST operate with reasonable defaults:

Operators need to be able to verify that configured defaults match actual running configurations for troubleshooting and consistency assurance.

7.2. Migration Path and Deployment

Redundancy Protection needs to be integrated incrementally into existing SRv6 networks:

7.3. Protocol Dependencies and Network Impact

Dependencies: All R-nodes MUST support SRv6. In many scenarios external systems (PCE, SDN controllers) are expected to compute protection paths, however they are not mandatory.

Resource Consumption:

Traffic Pattern Changes: Using redundancy protection assumes sufficient path diversity. Monitoring needs to account for expected duplication patterns to avoid false security alarms.

7.4. Security Operations

Security operations related to the redundancy-protection function include:

7.5. Verifying Correct Operation

Operators intend to verify redundancy protection through several mechanisms:

7.6. Management Information and Data Models

The following manageable entities are described in this document: Redundancy Node (R-node), Redundancy SID (RSID), Redundancy Policy, and Redundancy Instance (having per-flow state).

Standardized technologies can be used for management of Redundancy Protection:

YANG model is outside the scope of this document.

7.7. Fault and Configuration Management

Fault Management needs to provide:

Configuration Management needs to provide:

7.8. Performance and Accounting Management

The following tools are expected:

7.9. Tooling Considerations

Operators need to 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 needs to focus only on functions existing tools cannot provide (e.g., specialized path computation and validation).

8. Security Considerations

Detailed security considerations for segment routing are cataloged in [RFC8402], [RFC8754], and [RFC8986]. General security considerations on SRv6 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 needs to be carefully mitigated.

8.1. Packet Duplication

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 elimination nodes. The amplification can also magnify denial-of-service attacks if unauthorized traffic reaches replication nodes. Amplification can also be achieved by the attacker by by-passing the elimination.

The use of redundancy protection needs to be restricted to a trusted SR domain with controlled flows, where rate-limiting and flow admission control is employed at the ingress nodes. Redundancy protection needs to be provisioned via authenticated and authorized controllers.

8.2. Sequence Number Spoofing

The elimination 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 can also 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 applied algorithm; however, algorithms are outside the scope of this document.

8.3. Information Disclosure

Redundancy protection could 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 apply for redundancy protection as well.

8.4. State Exhaustion at Redundancy Node

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. The impact of resource exhaustion is dependent on the implemented method, however elimination algorithms are out of scope of this document.

9. Contributors

Fan Yang
Huawei
China
Ferenc Fejes
Ericsson
Hungary

10. Acknowledgements

The authors would like to thank Bruno Decraene, Alvaro Retana, Andy Smith, Ron Bonica, James Guichard, Jeffrey Zhang, and Adrian Farrel for their valuable comments and discussions.

11. Appendix A. Redundancy SID Usage Example

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

Figure 5: Example Topology

Note: The IPv6 notations in this appendix are not syntactically valid. Letters such as 'K', 'L', 'P', 'U', 'X', 'src', 'dst', and 'arg' are not hexadecimal IPv6 components, but used for better human readability and refer to symbolic placeholders.

In the reference topology:

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 5:

The example topology shown in Figure 5 is constructed to show the usage of RSID. Note that any of the links can be replaced with an SRv6 network segment. The principles described above are applicable to more complex network topologies as well.

12. References

12.1. Normative References

[I-D.ietf-spring-srv6-security]
Buraglio, N., Mizrahi, T., tongtian, Contreras, L. M., and F. Gont, "Segment Routing IPv6 Security Considerations", Work in Progress, Internet-Draft, draft-ietf-spring-srv6-security-16, , <https://datatracker.ietf.org/doc/html/draft-ietf-spring-srv6-security-16>.
[RFC2119]
Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, , <https://www.rfc-editor.org/info/rfc2119>.
[RFC8174]
Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, , <https://www.rfc-editor.org/info/rfc8174>.
[RFC8402]
Filsfils, C., Ed., Previdi, S., Ed., Ginsberg, L., Decraene, B., Litkowski, S., and R. Shakir, "Segment Routing Architecture", RFC 8402, DOI 10.17487/RFC8402, , <https://www.rfc-editor.org/info/rfc8402>.
[RFC8655]
Finn, N., Thubert, P., Varga, B., and J. Farkas, "Deterministic Networking Architecture", RFC 8655, DOI 10.17487/RFC8655, , <https://www.rfc-editor.org/info/rfc8655>.
[RFC8754]
Filsfils, C., Ed., Dukes, D., Ed., Previdi, S., Leddy, J., Matsushima, S., and D. Voyer, "IPv6 Segment Routing Header (SRH)", RFC 8754, DOI 10.17487/RFC8754, , <https://www.rfc-editor.org/info/rfc8754>.
[RFC8939]
Varga, B., Ed., Farkas, J., Berger, L., Fedyk, D., and S. Bryant, "Deterministic Networking (DetNet) Data Plane: IP", RFC 8939, DOI 10.17487/RFC8939, , <https://www.rfc-editor.org/info/rfc8939>.
[RFC8964]
Varga, B., Ed., Farkas, J., Berger, L., Malis, A., Bryant, S., and J. Korhonen, "Deterministic Networking (DetNet) Data Plane: MPLS", RFC 8964, DOI 10.17487/RFC8964, , <https://www.rfc-editor.org/info/rfc8964>.
[RFC8986]
Filsfils, C., Ed., Camarillo, P., Ed., Leddy, J., Voyer, D., Matsushima, S., and Z. Li, "Segment Routing over IPv6 (SRv6) Network Programming", RFC 8986, DOI 10.17487/RFC8986, , <https://www.rfc-editor.org/info/rfc8986>.

12.2. Informative References

[IEEE8021CB]
IEEE, "IEEE Standard for Local and metropolitan area networks--Frame Replication and Elimination for Reliability", IEEE 802.1CB-2017, DOI 10.1109/IEEESTD.2017.8091139, , <https://standards.ieee.org/standard/802_1CB-2017.html>.
[RFC5424]
Gerhards, R., "The Syslog Protocol", RFC 5424, DOI 10.17487/RFC5424, , <https://www.rfc-editor.org/info/rfc5424>.
[RFC6241]
Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., and A. Bierman, Ed., "Network Configuration Protocol (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, , <https://www.rfc-editor.org/info/rfc6241>.
[RFC7011]
Claise, B., Ed., Trammell, B., Ed., and P. Aitken, "Specification of the IP Flow Information Export (IPFIX) Protocol for the Exchange of Flow Information", STD 77, RFC 7011, DOI 10.17487/RFC7011, , <https://www.rfc-editor.org/info/rfc7011>.
[RFC8040]
Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF Protocol", RFC 8040, DOI 10.17487/RFC8040, , <https://www.rfc-editor.org/info/rfc8040>.
[RFC9256]
Filsfils, C., Talaulikar, K., Ed., Voyer, D., Bogdanov, A., and P. Mattes, "Segment Routing Policy Architecture", RFC 9256, DOI 10.17487/RFC9256, , <https://www.rfc-editor.org/info/rfc9256>.
[RFC9550]
Varga, B., Ed., Farkas, J., Kehrer, S., and T. Heer, "Deterministic Networking (DetNet): Packet Ordering Function", RFC 9550, DOI 10.17487/RFC9550, , <https://www.rfc-editor.org/info/rfc9550>.

Authors' Addresses

Xuesong Geng
Huawei Technologies
China
Mach(Guoyi) Chen
Huawei Technologies
China
Pablo Camarillo Garvia
Cisco Systems
Spain
Gyan Mishra
Verizon Inc.
United States of America
Balazs Varga (editor)
Ericsson
Hungary