Internet-Draft FlowSpec with SR Policy October 2026
Jiang, et al. Expires 14 April 2027 [Page]
Workgroup:
IDR Working Group
Internet-Draft:
draft-ietf-idr-ts-flowspec-srv6-policy-19
Published:
Intended Status:
Standards Track
Expires:
Authors:
W. Jiang
China Mobile
Y. Liu
China Mobile
S. Zhuang
Huawei Technologies
G. Mishra
Verizon Communications Inc.
S. Chen
Huawei Technologies

Traffic Steering using BGP FlowSpec with SR Policy

Abstract

BGP Flow Specification (FlowSpec) provides mechanisms to distribute traffic filtering and steering rules across BGP networks. This document specifies BGP FlowSpec procedures to steer matching traffic flows into Segment Routing (SR) Policies. It defines two modes of operation: transport steering into an SR Policy ("Mode 1"), in SR-MPLS and SRv6 networks, using BGP Extended Communities; and, in SRv6 networks, transport steering combined with an egress service action at the egress node ("Mode 2"), signaled with the BGP Prefix-SID Attribute.

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.

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 14 April 2027.

▲

Table of Contents

1. Introduction

Segment Routing (SR) [RFC8402] leverages the source routing paradigm for both SR-MPLS [RFC8660] and SRv6 [RFC8754][RFC8986]. An SR Policy [RFC9256] defines an explicit ordering of segments to steer traffic through a network, which may be instantiated locally or signaled via BGP SR Policy [RFC9830] or PCEP for SR Policy [RFC9862].

BGP Flow Specification (FlowSpec) [RFC8955][RFC8956][RFC9117] enables the dissemination of traffic filtering rules and associated actions using MP_REACH_NLRI / MP_UNREACH_NLRI [RFC4760] and Extended Community attributes [RFC4360].

This document specifies BGP FlowSpec mechanisms to steer matching traffic flows into an SR Policy [RFC9256]. It defines two operational modes:

Mode 2 is needed where the matching traffic is to be delivered into a specific routing table (for example, a VRF) or onto a specific interface at the egress PE, which transport steering alone cannot express.

This document does not modify the base Segment Routing architecture [RFC8402] or SR Policy constructs [RFC9256], but establishes the BGP FlowSpec interworking semantics for SR Policy steering.

2. Definitions and Acronyms

2.1. Terminology

2.2. Acronyms

3. Protocol Procedures

BGP FlowSpec NLRI [RFC8955][RFC8956] can be combined with BGP Extended Communities and, where applicable, the BGP Prefix-SID Attribute to steer matching traffic into a Segment Routing (SR) Policy [RFC9256] in either SR-MPLS or SRv6 data planes.

This specification relies on a two-tier control plane architecture:

The procedures in this document apply strictly to IPv4 and IPv6 FlowSpec address families in the global routing context (AFI=1/2, SAFI=133).

3.1. Relationship to Other Specifications

This document specifies, for the address families above:

Nothing in [RFC9012], [RFC9830], [RFC8669], [RFC9252], [RFC9256] or [I-D.ietf-idr-flowspec-redirect-ip] is changed by this document.

3.2. Scope

A FlowSpec route is within the scope of this document if it carries both a Redirect-to-IP Extended Community [I-D.ietf-idr-flowspec-redirect-ip] and a Color Extended Community [RFC9012], and carries no Redirect-to-VRF Extended Community. Any other FlowSpec route is outside the scope of this document and is processed as specified in [I-D.ietf-idr-flowspec-redirect-ip], [RFC8955] and [RFC8956]; a BGP Prefix-SID Attribute on such a route is ignored.

A route that carries a Redirect-to-VRF Extended Community ([RFC8955], Section 7.4; [RFC8956], Section 6.1) is outside the scope of this document irrespective of the other communities it carries, and is processed as specified in Section 2.2.1 of [I-D.ietf-idr-flowspec-redirect-ip]. VPN FlowSpec address families (SAFI=134) are outside the scope of this document.

Color-Only steering (Section 8.8 of [RFC9256]) is outside the scope of this document. If the Color Extended Community carries a Color-Only Type other than Type 0 (Specific Endpoint Match) [RFC9830], the receiver MUST treat it as Type 0.

For a route within scope, the procedures of this document apply in place of those of [I-D.ietf-idr-flowspec-redirect-ip]; the two are not combined. The target IP address is the SR Policy Endpoint (Section 3.6) and not a forwarding target, so the reachability condition of Section 2.2 of [I-D.ietf-idr-flowspec-redirect-ip] does not apply to it. Section 8.1 of [RFC9256] specifies the default behavior for traffic on an SR Policy that becomes invalid; for a route within this scope, Section 3.8 specifies a different behavior.

3.3. Operational Steering Modes

Traffic steering specified in this document leverages BGP FlowSpec filtering rules to steer flows into SR Policies [RFC9256].

FlowSpec-based steering corresponds to Policy-Based Routing (PBR) steering per Section 8.7 of [RFC9256] and does not perform per- destination steering (Section 8.4 of [RFC9256]). Implementations MUST NOT apply per-destination route resolution, BGP multipath path selection, or On-Demand BSID recursion [RFC9256] to FlowSpec routes.

A BGP FlowSpec sender MUST construct the BGP UPDATE message using one of two operational modes: Mode 1 (Transport Steering Only) or Mode 2 (Steering with Egress Service Action).

3.3.1. Mode 1: Steering Without Egress Service Action (SR-MPLS / SRv6)

When matching traffic requires steering into an SR Policy (SR-MPLS or SRv6) toward an Endpoint without a specific egress service action, Mode 1 steering applies:

  • Sender Behavior: The sender MUST attach a Redirect-to-IP Extended Community and a Color Extended Community [RFC9012], and MUST NOT attach the BGP Prefix-SID Attribute (see Section 4 for attribute validation).

  • Headend Steering: Upon resolving the (Endpoint, Color) tuple per Section 4, the headend steers matching traffic into the resolved SR Policy by encapsulating it solely with the policy's segment list (MPLS label stack or SRH).

  • Egress Behavior: Decapsulation or label popping at the egress PE relies on the final segment behavior of the target SR Policy (e.g., Implicit Null for SR-MPLS or End function with Ultimate Segment Decapsulation (USD) flavor [RFC8986] for SRv6).

3.3.2. Mode 2: Steering With Egress Service Action (SRv6-specific)

When matching traffic requires steering into an SRv6 Policy and a specific service context or decapsulation behavior at the egress PE, Mode 2 steering applies:

  • Sender Behavior: The sender MUST attach a Redirect-to-IP Extended Community, a Color Extended Community [RFC9012], and the BGP Prefix-SID Attribute [RFC9252] carrying the Egress Service SID (encoded per Section 3.7).

  • Headend Steering: The headend resolves the target SRv6 Policy using the (Endpoint, Color) tuple per Section 4, and synthesizes the active segment list in the SRH by combining the SR Policy segment list with the Egress Service SID per Section 3.5.

  • Egress Behavior: Upon packet arrival, the egress PE decapsulates the SRH and executes the specific function bound to the Egress Service SID (e.g., End.DT4/DT6/DT46 for routing table lookup in a specific VRF or the global table, or End.DX4/DX6 for L3 interface cross-connect [RFC8986] [RFC9252]).

3.3.3. Data-Plane Encapsulation Considerations

When matching traffic is successfully resolved and steered into an SR Policy or Segment Routing path, the headend encapsulates the packet with an outer header (e.g., an outer IPv6 header with an SRH for SRv6) as specified in [RFC8754] and [RFC9256].

If the resolved active segment list consists of a single segment, including after SRv6 SID compression (e.g., [RFC9800]), the SRH MAY be omitted as specified in Section 4.1 of [RFC8754].

3.4. Procedures for the Sending BGP Speaker / Controller

A BGP speaker or controller originating or re-advertising a FlowSpec route to steer traffic into an SR Policy MUST perform the following:

  1. Construct the explicit (Color, Endpoint) tuple by attaching the Color Extended Community [RFC9012] and setting the target IP address in the Redirect-to-IP Extended Community [I-D.ietf-idr-flowspec-redirect-ip].

  2. Where an egress service action is intended at headends that resolve an SRv6 Policy (Mode 2, Section 3.3.2), attach the BGP Prefix-SID Attribute carrying the SRv6 Service SID constructed per Section 3.7. A headend that resolves the (Color, Endpoint) tuple to an SR-MPLS Policy ignores the attribute (Section 4.1, Step 3).

A BGP speaker that re-advertises a FlowSpec route within the scope of this document does not modify the Color Extended Community, the Redirect-to-IP Extended Community or the BGP Prefix-SID Attribute it carries, other than as Section 3.7 specifies for a discarded attribute. The next-hop-dependent procedures of Section 2 of [RFC9252] do not apply. An operator MAY configure policy that removes these attributes at an administrative boundary (Section 6.3).

3.5. Procedures for the Receiving BGP Speaker (Headend / Ingress PE)

The procedures specified in this section apply to BGP FlowSpec receivers acting as SR headends. A BGP speaker that is not acting as an SR headend for a FlowSpec route performs no SR Policy binding and propagates the route as specified in Section 3.4.

Upon receiving a FlowSpec route, the headend performs evaluation and forwarding programming strictly per the sequential logic in Section 4.1:

  1. Validation and Mode Determination: The FlowSpec route is validated as specified in [RFC8955], [RFC8956] and [RFC9117], and malformed attributes are handled per [RFC7606]. The validation procedure of Section 2.1 of [I-D.ietf-idr-flowspec-redirect-ip] does not apply to a route within the scope of this document, whose target IP address is an SR Policy Endpoint. The steering attributes determine whether the route is Mode 1 or Mode 2 per Section 4.1.

  2. SR Policy Binding & Synthesis: The headend uses the extracted (Color, Endpoint) tuple to select the SR Policy with that Color and Endpoint and its active Candidate Path (Sections 2.9 and 5 of [RFC9256]). Matching traffic is steered into that SR Policy by policy-based steering (Section 8.7 of [RFC9256]).

    • For Mode 1, traffic is encapsulated using the active Segment List.

    • For Mode 2, the headend MUST synthesize the effective Segment List with the Egress Service SID (Section 3.7) as follows:

      • The headend MUST append the Egress Service SID as the final segment (innermost SID) of the Segment List, except as permitted by the next rule.

      • If the final segment of the resolved Segment List is known to the headend to be replaceable by the Egress Service SID, the headend MAY replace that final segment with the Egress Service SID. Replacement MUST NOT be performed where it would discard a forwarding constraint expressed by the segment it replaces (for example, an End.X SID). The means by which a headend determines that a segment is replaceable are outside the scope of this document.

3.

Control Plane Retention & Decoupling: If a matching active SR Policy cannot be resolved for a received FlowSpec route carrying an explicit steering intent, or if the resolved SR Policy subsequently transitions to Down state:

  • Control Plane: The FlowSpec route MUST be retained in the BGP Loc-RIB as a valid route (unless rendered invalid by standard BGP path validation rules) and MUST continue to be advertised to downstream BGP peers according to standard BGP path selection and propagation rules. The headend MUST NOT implicitly invalidate or withdraw the BGP FlowSpec route solely due to underlay transport-layer resolution or SR Policy failures.

  • Forwarding Plane: The associated SR steering forwarding state (e.g., a Policy-Based Routing entry) MUST NOT be activated in the forwarding plane, or MUST be marked as inactive. Matching traffic is handled as specified in Section 3.8.2.

3.6. Interaction with Redirect-to-IP Extended Community

When a FlowSpec route carries both a Color Extended Community [RFC9012] and a Redirect-to-IP Extended Community [I-D.ietf-idr-flowspec-redirect-ip], the target IP address MUST be interpreted as the target SR Policy Endpoint to form the explicit (Color, Endpoint) tuple [RFC9256].

If multiple Color Extended Communities are present, the headend selects the SR Policy using the Color with the highest numerical value for which an SR Policy to the target Endpoint is valid; if no Color yields a valid SR Policy, Section 3.8.2 applies. This follows the preference order of Section 8.4.1 of [RFC9256]; the per-destination steering procedures of Section 8.4 of [RFC9256] are not used.

3.7. BGP Prefix-SID Attribute Encoding Rules

The BGP Prefix-SID Attribute [RFC8669] is used strictly for conveying SRv6 Service SIDs in SRv6 Mode 2 (Section 3.3.2) and MUST NOT be attached for SR-MPLS. The SRv6 Service TLV encodings of [RFC9252] and the SRv6 SID encodings of [RFC8986] are used as follows:

If the BGP Prefix-SID Attribute received on a FlowSpec route is malformed, or does not contain a usable SRv6 SID Information Sub-TLV within an SRv6 L3 Service TLV, the headend MUST ignore the attribute, process the route as Mode 1 (Section 3.5), and SHOULD generate a diagnostic log entry. This is the "attribute discard" action of [RFC7606], consistent with Section 6 of [RFC8669]; the discarded attribute is not re-advertised.

3.8. Steering Failure and Fallback Procedures

Section 3.8.1 states how a route without a Color Extended Community is handled. Section 3.8.2 specifies the handling of a route within the scope of this document whose SR Policy or Egress Service SID cannot be resolved.

3.8.1. Routes Without a Color Extended Community

A FlowSpec route that carries a Redirect-to-IP Extended Community but no Color Extended Community is outside the scope of this document (see Section 3.2). It is processed as specified in [I-D.ietf-idr-flowspec-redirect-ip], and a BGP Prefix-SID Attribute on it is ignored.

3.8.2. Policy and SID Resolution Failures (Forwarding Plane Failure)

If a FlowSpec route contains both a valid Redirect-to-IP Extended Community and a Color Extended Community (expressing explicit SR steering intent), but:

  • The corresponding (Endpoint, Color) SR Policy is Down, unresolvable, or not programmed in the forwarding plane; or

  • The target SR Policy is active, but the Egress Service SID carried in the BGP Prefix-SID Attribute (Mode 2) is unreachable in the headend's local routing table (FIB/RIB);

Then, to prevent silent SLA violations and unexpected path leakage, the headend MUST NOT silently fall back to shortest-path IP forwarding toward the Target IP address.

Matching traffic MUST be processed according to local administrative failure policy, subject to Section 3.9 where the C-bit is set. The default local action SHOULD be to drop the matching traffic (Drop-on-Failure).

Other non-steering FlowSpec actions present in the same route (e.g., Traffic-Rate, DSCP remarking) MUST continue to be enforced.

These procedures apply irrespective of whether the target IP address in the Redirect-to-IP Extended Community is reachable in the headend's routing table: within the scope of this document that address identifies an SR Policy Endpoint, not a forwarding target.

3.8.3. Diagnostics and Recovery

A headend that is unable to program the forwarding plane for a FlowSpec route within the scope of this document SHOULD generate a diagnostic notification identifying the route and the reason (for example, a YANG notification [RFC8639], a Syslog message [RFC5424] or an SNMP notification [RFC3411]).

A headend that was unable to program the forwarding plane owing to a transient resource constraint SHOULD re-attempt programming when resources become available, without requiring the route to be re-advertised.

A headend SHOULD maintain a counter, per FlowSpec route, of packets discarded under Section 3.8.2, so that an operator can distinguish traffic dropped by steering failure from traffic dropped by an explicit FlowSpec action.

3.9. Handling of the Redirect-to-IP C-bit

The Redirect-to-IP Extended Community [I-D.ietf-idr-flowspec-redirect-ip] includes a C-bit (Copy Bit) in its Local Administrator field:

Setting C-bit = 1 does not alter SR Policy resolution logic; (Endpoint, Color) resolution and BGP Prefix-SID Attribute processing remain unchanged for the copied stream. The failure procedures of Section 3.8 and Section 4.3 apply only to the copied stream: on steering failure, the copy MUST be discarded, and the original stream MUST continue to be forwarded by normal IP routing, unaffected by the steering failure.

3.10. Load Balancing Considerations

When matching traffic is steered into an SR Policy with multiple active Segment Lists [RFC9256], the headend MUST distribute traffic across active Segment Lists according to their defined weights (ECMP/UCMP). FlowSpec filtering actions direct traffic into the policy as a single aggregate stream and MUST NOT alter Segment List selection.

The headend acts as an SR source node for the traffic it steers. For SRv6, the outer IPv6 Flow Label is computed from the inner packet as specified in Section 5.5 of [RFC8754], which also provides the entropy used for multipath hashing by transit nodes. This document imposes no additional requirement and grants no exception.

3.11. Backward Compatibility and Coexistence

A BGP speaker that implements base FlowSpec [RFC8955][RFC8956] and Redirect-to-IP, but not this specification, processes such routes under the rules of those specifications:

Implementations MUST support administrative controls to enable or disable advertisement of SRv6 service steering attributes per neighbor and per service [RFC9252]. Filtering at domain boundaries is specified in Section 6.3; an operator who requires that these attributes not leave a domain configures it rather than relying on non-support.

4. Multi-Attribute Interworking and Steering Resolution

When a router receives a BGP FlowSpec route carrying a combination of the Redirect-to-IP Extended Community, the Color Extended Community, and the BGP Prefix-SID Attribute, it MUST evaluate these attributes in a sequential pipeline to resolve the steering action.

4.1. Sequential Resolution Logic

The headend evaluates received attribute containers step-by-step:

Step 1: Redirect-to-IP Extended Community

Step 2: Color Extended Community

Step 3: BGP Prefix-SID Attribute (PSID)

4.2. Valid Attribute Combinations Summary

Table 1 summarizes all possible attribute combinations and their corresponding resolution modes after applying the sequential logic above.

Table 1: FlowSpec to SR Policy Steering Resolution

+-------------+----------+-----------+------------------------------+
| Redirect-   | Color EC | Prefix-SID| Steering Resolution Mode     |
| to-IP       |          |           |                              |
+-------------+----------+-----------+------------------------------+
| Present     | Present  | Absent    | Mode 1: Transport Steering   |
|             |          |           | (SR-MPLS / SRv6 USD)         |
+-------------+----------+-----------+------------------------------+
| Present     | Present  | Present   | Mode 2: Transport Steering + |
|             |          |           | Egress Service Action (SRv6) |
+-------------+----------+-----------+------------------------------+
| Present     | Absent   | Any       | Out of Scope for SR Policy   |
|             |          |           | (Standard Redirect-to-IP;    |
|             |          |           | Prefix-SID ignored)          |
+-------------+----------+-----------+------------------------------+
| Absent      | Ignored  | Ignored   | Out of Scope for SR Policy   |
|             |          |           | (Standard FlowSpec)          |
+-------------+----------+-----------+------------------------------+

4.3. Protection Against Silent SLA Violations

To prevent unintentional redirection and SLA violations, implementations MUST strictly enforce the following rules:

  1. Steering Failure: For a route within the scope of this document, the procedures of Section 3.8.2 apply; matching traffic is not forwarded by standard IP or Redirect-to-IP forwarding toward the target IP address.

  2. Enforcement of Non-Steering Actions: In all failure cases, other valid non-steering actions present in the FlowSpec route (e.g., Traffic-Rate/Drop [RFC8955], DSCP remarking) MUST continue to be enforced in the forwarding plane.

  3. Multiple Redirect-to-IP Communities: When multiple valid Redirect-to-IP Extended Communities are attached alongside a Color Extended Community, load-sharing across the resulting target SR Policies MUST follow EC-level load-sharing defined in Section 2.2 of [I-D.ietf-idr-flowspec-redirect-ip].

  4. Logging and Diagnostics: Implementations SHOULD generate diagnostic log entries whenever an SR Policy steering route contains corrupted or invalid steering attributes. An exception to this SHOULD requirement occurs during high-volume error events or flood conditions (e.g., malformed route injection attacks), where strict per-route logging could exhaust control plane CPU or storage resources. In such scenarios, implementations MAY rate-limit, aggregate, or temporarily suppress individual diagnostic log entries, provided that summary metrics or counter-based telemetry remain available to operators.

5. Operational Considerations

Deploying BGP FlowSpec for SR-MPLS and SRv6 Policies provides a lightweight mechanism to dynamically steer specified traffic flows into Segment Routing paths without requiring full-mesh state maintenance or complex per-flow manual provisioning across distributed nodes, thereby ensuring minimal impact on network operations and control plane scalability.

The mechanisms defined in this document are intended for deployment within an SR domain [RFC8402] under a single administrative control, which may span multiple ASes. Section 6.3 specifies the filtering of these routes and attributes at the boundaries of that domain.

For concrete application scenarios, detailed flow steering sequences, and an overall operational workflow summary, readers should refer to Appendix A (with a high-level summary provided in Section A.2.3).

Section 3.8.3 specifies the notifications, re-attempts and counters a headend provides when steering fails; operators can use the counters to distinguish steering failures from deliberate discards.

6. Security Considerations

The security considerations of BGP FlowSpec [RFC8955][RFC8956], Redirect-to-IP [I-D.ietf-idr-flowspec-redirect-ip], BGP Prefix-SID [RFC9252], and core Segment Routing [RFC8402] apply to this document. Combining FlowSpec redirection with SR Policy selection and SRv6 Service SIDs introduces specific threat vectors that MUST be mitigated.

6.1. Cross-Table/VRF Traffic Injection and Service Hijacking

The BGP Prefix-SID Attribute in a FlowSpec route conveys an SRv6 Service SID (e.g., End.DT4/DT6/DT46, End.DX4/DX6 [RFC8986][RFC9252]) that determines the egress routing table (e.g., a specific VRF or the global table) or specific egress interface at the egress PE. A malicious or compromised speaker could steer traffic into an arbitrary remote VRF, the global routing context, or an unauthorized interface, causing unauthorized traffic injection, cross-table/VRF data leakage, or traffic interception.

To mitigate this, receiving PEs MUST validate that any SRv6 Service SID belongs to an authorized Locator range allocated for the target VRF, global table, or service context. BGP sessions with FlowSpec controllers MUST be secured using TCP-AO [RFC5925] and restricted to trusted entities.

6.2. Scope and Validation Limits of BGP FlowSpec Attributes

Standard BGP FlowSpec validation [RFC8955][RFC8956][RFC9117] validates the NLRI and Redirect-to-IP Extended Community against the origin of the destination prefix, but does not define validation for the Color Extended Community or BGP Prefix-SID Attribute. These unvalidated attributes dictate path selection and service contexts.

An attacker could alter or strip these attributes. Injecting an unauthorized Color EC could hijack traffic onto unintended SR paths. Conversely, stripping the Color EC from a route takes it out of the scope of this document (Section 3.8.1): the traffic is then redirected as specified in [I-D.ietf-idr-flowspec-redirect-ip], bypassing the SR Policy and, for Mode 2, the Egress Service SID.

Headends MUST apply local policy checks to verify that the (Color, Endpoint) tuple resolves to an authorized SR Policy before binding traffic. Filtering of these attributes at administrative boundaries is specified in Section 6.3. Implementations SHOULD generate log messages or management alarms when unexpected attribute stripping is detected.

6.3. SR Domain Leakage and Boundary Security

SRv6 SIDs and BGP Prefix-SID Attributes are intended strictly for use within a trusted SR domain [RFC8402][RFC8754][RFC8986][RFC9252]. Propagation across untrusted EBGP boundaries leaks internal SRv6 Locators and topology, exposing the domain to external steering attacks.

BGP speakers at the boundary of the SR domain MUST remove the BGP Prefix-SID Attribute and the Color Extended Community from BGP FlowSpec routes advertised outside the domain (see also Section 5 of [RFC8669]). Where multiple ASes are under a single administrative control with explicit inter-domain trust, this filtering MAY instead be applied at the edge of that administrative domain.

6.4. Traffic Amplification and Path Pinning

A single FlowSpec route can match high-volume distributed flows across multiple Ingress PEs and redirect them to a single destination [RFC9117]. Binding redirected flows to an SR Policy allows an attacker to pin amplified traffic to a specific engineered path, potentially overloading transit nodes or egress interfaces.

Ingress PEs SHOULD combine FlowSpec redirect actions with Traffic Rate Extended Communities [RFC8955] to bound redirected bandwidth. An exception to this SHOULD requirement occurs when a FlowSpec route is deployed for legitimate traffic steering and rate limiting would cause unwanted packet drops, where adequate capacity planning guarantees sufficient bandwidth along the candidate path.

Implementations SHOULD monitor path utilization on SR Policies used for FlowSpec steering to detect and mitigate link congestion dynamically. An exception to this SHOULD requirement occurs in centralized control plane architectures where automated Controller-based TE or PCE monitoring dynamically adjusts policy pathing and prevents link congestion automatically.

7. Implementation Status

[Note to the RFC Editor: Please remove this section before publication, as well as remove the reference to [RFC7942]. This section records the status of known implementations of the protocol defined by this specification at the time of posting of this Internet-Draft, and is based on a proposal described in [RFC7942]. 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 [RFC7942], "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".

7.1. Interop-test Status

The traffic steering mechanism using BGP FlowSpec with SR-MPLS and SRv6 Policies described in this specification has been implemented by multiple major networking vendors across hardware platforms, router operating systems, and SDN controllers.

These implementations successfully participated in multi-vendor joint interoperability testing events organized by China Mobile between July 2021 and October 2021. The following hardware devices, software versions, and controllers passed the interoperability suite (listed in alphabetical order by vendor):

Routers:
+---------+---------------+--------------------------------+
| Vendor  | Device Model  | Version                        |
+---------+---------------+--------------------------------+
| Huawei  | NE40E-X8A     | NE40E V800R021C00SPC091T       |
+---------+---------------+--------------------------------+
| New H3C | CR16010H-FA   | Version 7.1.075, ESS 8305      |
+---------+---------------+--------------------------------+
| Ruijie  | RG-N8010-R    | N8000-R_RGOS 12.8(1)B08T1      |
+---------+---------------+--------------------------------+
| ZTE     | M6000-8S Plus | V5.00.10(5.60.5)               |
+---------+---------------+--------------------------------+

Controllers:
+----------------+---------------+-------------------------+
| Vendor         | System Name   | Version                 |
+----------------+---------------+-------------------------+
| China Unitechs | I-T-E SC      | V1.3.6P3                |
+----------------+---------------+-------------------------+
| Huawei         | NCE-IP        | V100R021C00             |
+----------------+---------------+-------------------------+
| Ruijie         | RG-ONC-AIO-H  | RG-ION-WAN-CLOUD_2.00T1 |
+----------------+---------------+-------------------------+
| ZTE            | ZENIC ONE     | R22V16.21.20            |
+----------------+---------------+-------------------------+

7.2. Deployment Status

The mechanisms specified in this document have been natively deployed and in active production use on large-scale IP backbone networks, including China Mobile's production network, since August 2022.

In production deployments featuring pure SRv6 architectures, traffic steering driven by FlowSpec routes with Color Extended Communities and IPv6 Redirect addresses operates seamlessly over SRv6 Policies. In hybrid or multi-AS network environments where SR-MPLS and SRv6 coexist, policy selection for FlowSpec traffic steering adheres strictly to the steering framework defined in [RFC9256].

8. IANA Considerations

This document requires no IANA actions.

9. Contributors

The following people made significant contributions to this document:

Yunan Gu
Huawei Technologies
Email: guyunan@huawei.com

Haibo Wang
Huawei Technologies
Email: rainsword.wang@huawei.com

Jie Dong
Huawei Technologies
Email: jie.dong@huawei.com

Xue Yang
China Mobile
Email: yangxuewl@chinamobile.com

10. Acknowledgements

The authors would like to thank:

The authors also gratefully acknowledge the reviews, comments, and contributions from Jeffrey Haas, Susan Hares, Keyur Patel, Weiqiang Cheng, Kaliraj Vairavakkalai, Robin Li, Acee Lindem, Gunter Van De Velde, John Scudder, Rainbow Wu, Linda Dunbar, Gang Yan, Feng Yang, Wim Henderickx, Robert Raszuk, Changwang Lin, Aijun Wang, Hao Li, Huaimo Chen, Sheng Fang, Yuanxiang Qiu, Ran Chen, Cheng Li, Zheng Zhang (Sandy), Xuewei Wang, Yanrong Liang, Xuhui Cai, Haojie Wang, Lili Wang, Nan Geng, Stephane Litkowski, Zhenqiang Li, Jinming Li, Shengnan Yue, Yao Liu, Yujia Gao, Zhiyuan Wang, Guanming Zeng, Jianwei Mao, Xiaoming He, Ziqing Cao and Giuseppe Fioccola.

11. References

11.1. Normative References

[I-D.ietf-idr-flowspec-redirect-ip]
Haas, J., Henderickx, W., and A. Simpson, "BGP Flow-Spec Redirect-to-IP Action", Work in Progress, Internet-Draft, draft-ietf-idr-flowspec-redirect-ip-16, , <https://datatracker.ietf.org/doc/html/draft-ietf-idr-flowspec-redirect-ip-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>.
[RFC4271]
Rekhter, Y., Ed., Li, T., Ed., and S. Hares, Ed., "A Border Gateway Protocol 4 (BGP-4)", RFC 4271, DOI 10.17487/RFC4271, , <https://www.rfc-editor.org/info/rfc4271>.
[RFC4360]
Sangli, S., Tappan, D., and Y. Rekhter, "BGP Extended Communities Attribute", RFC 4360, DOI 10.17487/RFC4360, , <https://www.rfc-editor.org/info/rfc4360>.
[RFC4760]
Bates, T., Chandra, R., Katz, D., and Y. Rekhter, "Multiprotocol Extensions for BGP-4", RFC 4760, DOI 10.17487/RFC4760, , <https://www.rfc-editor.org/info/rfc4760>.
[RFC7606]
Chen, E., Ed., Scudder, J., Ed., Mohapatra, P., and K. Patel, "Revised Error Handling for BGP UPDATE Messages", RFC 7606, DOI 10.17487/RFC7606, , <https://www.rfc-editor.org/info/rfc7606>.
[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>.
[RFC8660]
Bashandy, A., Ed., Filsfils, C., Ed., Previdi, S., Decraene, B., Litkowski, S., and R. Shakir, "Segment Routing with the MPLS Data Plane", RFC 8660, DOI 10.17487/RFC8660, , <https://www.rfc-editor.org/info/rfc8660>.
[RFC8669]
Previdi, S., Filsfils, C., Lindem, A., Ed., Sreekantiah, A., and H. Gredler, "Segment Routing Prefix Segment Identifier Extensions for BGP", RFC 8669, DOI 10.17487/RFC8669, , <https://www.rfc-editor.org/info/rfc8669>.
[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>.
[RFC8955]
Loibl, C., Hares, S., Raszuk, R., McPherson, D., and M. Bacher, "Dissemination of Flow Specification Rules", RFC 8955, DOI 10.17487/RFC8955, , <https://www.rfc-editor.org/info/rfc8955>.
[RFC8956]
Loibl, C., Ed., Raszuk, R., Ed., and S. Hares, Ed., "Dissemination of Flow Specification Rules for IPv6", RFC 8956, DOI 10.17487/RFC8956, , <https://www.rfc-editor.org/info/rfc8956>.
[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>.
[RFC9012]
Patel, K., Van de Velde, G., Sangli, S., and J. Scudder, "The BGP Tunnel Encapsulation Attribute", RFC 9012, DOI 10.17487/RFC9012, , <https://www.rfc-editor.org/info/rfc9012>.
[RFC9117]
Uttaro, J., Alcaide, J., Filsfils, C., Smith, D., and P. Mohapatra, "Revised Validation Procedure for BGP Flow Specifications", RFC 9117, DOI 10.17487/RFC9117, , <https://www.rfc-editor.org/info/rfc9117>.
[RFC9252]
Dawra, G., Ed., Talaulikar, K., Ed., Raszuk, R., Decraene, B., Zhuang, S., and J. Rabadan, "BGP Overlay Services Based on Segment Routing over IPv6 (SRv6)", RFC 9252, DOI 10.17487/RFC9252, , <https://www.rfc-editor.org/info/rfc9252>.
[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>.
[RFC9830]
Previdi, S., Filsfils, C., Talaulikar, K., Ed., Mattes, P., and D. Jain, "Advertising Segment Routing Policies in BGP", RFC 9830, DOI 10.17487/RFC9830, , <https://www.rfc-editor.org/info/rfc9830>.

11.2. Informative References

[RFC3411]
Harrington, D., Presuhn, R., and B. Wijnen, "An Architecture for Describing Simple Network Management Protocol (SNMP) Management Frameworks", STD 62, RFC 3411, DOI 10.17487/RFC3411, , <https://www.rfc-editor.org/info/rfc3411>.
[RFC5424]
Gerhards, R., "The Syslog Protocol", RFC 5424, DOI 10.17487/RFC5424, , <https://www.rfc-editor.org/info/rfc5424>.
[RFC5925]
Touch, J., Mankin, A., and R. Bonica, "The TCP Authentication Option", RFC 5925, DOI 10.17487/RFC5925, , <https://www.rfc-editor.org/info/rfc5925>.
[RFC7942]
Sheffer, Y. and A. Farrel, "Improving Awareness of Running Code: The Implementation Status Section", BCP 205, RFC 7942, DOI 10.17487/RFC7942, , <https://www.rfc-editor.org/info/rfc7942>.
[RFC8639]
Voit, E., Clemm, A., Gonzalez Prieto, A., Nilsen-Nygaard, E., and A. Tripathy, "Subscription to YANG Notifications", RFC 8639, DOI 10.17487/RFC8639, , <https://www.rfc-editor.org/info/rfc8639>.
[RFC9800]
Cheng, W., Ed., Filsfils, C., Li, Z., Decraene, B., and F. Clad, Ed., "Compressed SRv6 Segment List Encoding", RFC 9800, DOI 10.17487/RFC9800, , <https://www.rfc-editor.org/info/rfc9800>.
[RFC9862]
Koldychev, M., Sivabalan, S., Sidor, S., Barth, C., Peng, S., and H. Bidgoli, "Path Computation Element Communication Protocol (PCEP) Extensions for Segment Routing (SR) Policy Candidate Paths", RFC 9862, DOI 10.17487/RFC9862, , <https://www.rfc-editor.org/info/rfc9862>.

Appendix A. Application Examples (Informative)

This section provides illustrative examples for steering BGP FlowSpec traffic into SR Policies in SR-MPLS and SRv6 networks per Section 3 and Section 4.

A.1. SR-MPLS Steering Example (Mode 1)

Figure 1 illustrates steering FlowSpec traffic into an SR-MPLS Policy without egress service actions (Section 3.3.1).

   +------------+
   |  BGP FS    |
   | Controller |
   +------------+
      | FlowSpec Route:
      |   NLRI: Filter Rules
      |   Redirect-to-IP: Endpoint Address
      |   Color EC: C0
      |   (Prefix-SID: Absent)
      |          .-----.
      |         (       )
      V     .--(         )--.
+-------+  (                 )  +-------+
|       |_(  SR-MPLS Network  )_|       |
|Headend| ( ================> ) |Tailend|
+-------+  (SR List<S1,S2,S3>)  +-------+
            '--(         )--'
                (       )
                 '-----'

Figure 1: Steering Traffic into SR-MPLS Policy (Mode 1)

Control Plane: The BGP FS Controller advertises a FlowSpec route with matching rules, Redirect-to-IP (Endpoint Address), and Color C0. The BGP Prefix-SID Attribute is omitted.

Headend Resolution: The headend resolves the SR-MPLS Policy matching the tuple (Endpoint: Tailend, Color: C0).

Encapsulation: Matching traffic is encapsulated into the policy's MPLS label stack:

+---------------------------------------------+
| Outer IP / Ethernet Header                  |
+---------------------------------------------+
| MPLS Label S1 (Top)                         |
| MPLS Label S2                               |
| MPLS Label S3 (Bottom with S=1)             |
+---------------------------------------------+
| Inner Payload (Original IPv4/IPv6 Packet)   |
+---------------------------------------------+

A.2. SRv6 Steering Examples

In SRv6 networks, FlowSpec traffic steering operates under either Mode 2 (Transport Steering with Egress Service Action) or Mode 1 (Transport Steering Only).

A.2.1. SRv6 Mode 2: Transport Steering with Egress Service Action

Figure 2 illustrates signaling an explicit egress service action (Egress_Service_SID) alongside transport steering (Section 3.3.2).

   +------------+
   |  BGP FS    |
   | Controller |
   +------------+
      | FlowSpec Route:
      |   NLRI: Filter Rules
      |   Redirect-to-IPv6: Endpoint Address
      |   Color EC: C1
      |   Prefix-SID: Egress_Service_SID
      |          .-----.
      |         (       )
      V     .--(         )--.
+-------+  (                 )  +-------+
|       |_( SRv6 Core Network )_|       |
|Headend| ( ================> ) |Tailend|
+-------+  (SR List<S1,S2,S3>)  +-------+
            '--(         )--'   SRv6 SID: Egress_Service_SID
                (       )       (e.g., End.DT4, End.DT6, etc.)
                 '-----'

Figure 2: Steering Traffic into SRv6 Policy with Egress Service Action (Mode 2)

Control Plane & Resolution: The route carries Color C1, Redirect-to-IPv6 (Endpoint Address), and a BGP Prefix-SID Attribute carrying Egress_Service_SID. The headend resolves the SRv6 Policy matching (Endpoint: Tailend, Color: C1), yielding candidate Segment List <S1, S2, S3>.

Segment List Synthesis (Section 3.5):

  • Scenario A (Replacement, optional): If the headend knows that S3 can be replaced by Egress_Service_SID (e.g., S3 is an End SID of the tailend and expresses no path constraint), S3 is replaced, yielding the synthesized Segment List <S1, S2, Egress_Service_SID>.

  • Scenario B (Appending, default): Otherwise, Egress_Service_SID is appended, yielding the synthesized Segment List <S1, S2, S3, Egress_Service_SID>.

Packet Encapsulation Format:

At the headend, matching traffic is encapsulated into an outer IPv6 header and SRH with the corresponding synthesized Segment List:

+-----------------------------------------------------+
| Outer IPv6 Header (DA = S1)                         |
+-----------------------------------------------------+
| SRH (Segments Left = 2 for Scenario A,              |
|      Segments Left = 3 for Scenario B)              |
|   Segment List: <S1, S2, Egress_Service_SID> (A)    |
|             OR: <S1, S2, S3, Egress_Service_SID> (B)|
+-----------------------------------------------------+
| Inner Payload (Original IPv4/IPv6 Packet)           |
+-----------------------------------------------------+

Upon reaching the tailend device, the packet is decapsulated and processed per the function denoted by Egress_Service_SID (e.g., routing table lookup in a specific VRF or the global table, such as End.DT4/DT6 [RFC8986]).

A.2.2. SRv6 Mode 1: Transport Steering Only (USD-Flavored End SID)

When the final SID S3 instantiated on the tailend supports the Ultimate Segment Decapsulation (USD) flavor [RFC8986], an explicit Egress Service SID MAY be omitted from the FlowSpec route.

   +------------+
   |  BGP FS    |
   | Controller |
   +------------+
      | FlowSpec Route:
      |   NLRI: Filter Rules
      |   Redirect-to-IPv6: Endpoint Address
      |   Color EC: C2
      |   (Prefix-SID: Absent)
      |          .-----.
      |         (       )
      V     .--(         )--.
+-------+  (                 )  +-------+
|       |_( SRv6 Core Network )_|       |
|Headend| ( ================> ) |Tailend|
+-------+  (SR List<S1,S2,S3>)  +-------+
            '--(         )--'
                (       )
                 '-----'
Note: S3 is an SRv6 SID with USD flavor on the tailend.
Figure 3: Steering Traffic into SRv6 Policy (Mode 1)

The controller advertises the route with Color C2 and Redirect-to-IPv6 without a BGP Prefix-SID. The headend encapsulates traffic using Segment List <S1, S2, S3>. Upon arrival, the tailend executes USD behavior, pops the outer IPv6 header/SRH, and performs standard table lookup on the inner packet in the default/global routing context.

A.2.3. Summary of Operational Workflow

In typical network operations:

  1. The Centralized Controller maintains full visibility of topology and SR Policies across the network domain.

  2. When dynamic traffic steering or mitigation is triggered, the Controller advertises a FlowSpec route combining packet matching criteria with explicit steering attributes (Color EC, Redirect-to-IP, and optional BGP Prefix-SID Attribute).

  3. Ingress PEs parse these received attributes, resolve and bind the matching traffic to the designated SR Policies, and synthesize the encapsulation headers dynamically without requiring manual per-flow provisioning across distributed nodes.

Authors' Addresses

Wenying Jiang
China Mobile
No.32 XuanWuMen West Street
Beijing
100053
China
Yisong Liu
China Mobile
No.32 XuanWuMen West Street
Beijing
100053
China
Shunwan Zhuang
Huawei Technologies
Huawei Bld., No.156 Beiqing Rd.
Beijing
100095
China
Gyan Mishra
Verizon Communications Inc.
13101 Columbia Pike
Silver Spring, MD 20904,
United States of America
Shuanglong Chen
Huawei Technologies
Huawei Bld., No.156 Beiqing Rd.
Beijing
100095
China