<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc category="std" docName="draft-ietf-idr-ts-flowspec-srv6-policy-20"
     ipr="trust200902" updates="">
  <front>
    <title abbrev="FlowSpec with SR Policy">Traffic Steering using BGP
    FlowSpec with SR Policy</title>

    <author fullname="Wenying Jiang" initials="W. " surname="Jiang">
      <organization>China Mobile</organization>

      <address>
        <postal>
          <street>No.32 XuanWuMen West Street</street>

          <city>Beijing</city>

          <code>100053</code>

          <country>China</country>
        </postal>

        <email>jiangwenying@chinamobile.com</email>
      </address>
    </author>

    <author fullname="Yisong Liu" initials="Y. " surname="Liu">
      <organization>China Mobile</organization>

      <address>
        <postal>
          <street>No.32 XuanWuMen West Street</street>

          <city>Beijing</city>

          <code>100053</code>

          <country>China</country>
        </postal>

        <email>liuyisong@chinamobile.com</email>
      </address>
    </author>

    <author fullname="Shunwan Zhuang" initials="S." surname="Zhuang">
      <organization>Huawei Technologies</organization>

      <address>
        <postal>
          <street>Huawei Bld., No.156 Beiqing Rd.</street>

          <city>Beijing</city>

          <region/>

          <code>100095</code>

          <country>China</country>
        </postal>

        <phone/>

        <facsimile/>

        <email>zhuangshunwan@huawei.com</email>

        <uri/>
      </address>
    </author>

    <author fullname="Gyan Mishra" initials="G." surname="Mishra">
      <organization>Verizon Communications Inc.</organization>

      <address>
        <postal>
          <street>13101 Columbia Pike</street>

          <city>Silver Spring, MD 20904</city>

          <region/>

          <code/>

          <country>United States of America</country>
        </postal>

        <phone/>

        <facsimile/>

        <email>hayabusagsm@gmail.com</email>

        <uri/>
      </address>
    </author>

    <author fullname="Shuanglong Chen" initials="S." surname="Chen">
      <organization>Huawei Technologies</organization>

      <address>
        <postal>
          <street>Huawei Bld., No.156 Beiqing Rd.</street>

          <city>Beijing</city>

          <region/>

          <code>100095</code>

          <country>China</country>
        </postal>

        <phone/>

        <facsimile/>

        <email>chenshuanglong@huawei.com</email>

        <uri/>
      </address>
    </author>

    <date day="30" month="October" year="2026"/>

    <area>Routing</area>

    <workgroup>IDR Working Group</workgroup>

    <abstract>
      <t>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.</t>
    </abstract>

    <note title="Requirements Language">
      <t>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
      <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when,
      they appear in all capitals, as shown here.</t>
    </note>
  </front>

  <middle>
    <section title="Introduction">
      <t>Segment Routing (SR) <xref target="RFC8402"/> leverages the source
      routing paradigm for both SR-MPLS <xref target="RFC8660"/> and SRv6
      <xref target="RFC8754"/><xref target="RFC8986"/>. An SR Policy <xref
      target="RFC9256"/> defines an explicit ordering of segments to steer
      traffic through a network, which may be instantiated locally or signaled
      via BGP SR Policy <xref target="RFC9830"/> or PCEP for SR Policy <xref
      target="RFC9862"/>.</t>

      <t>BGP Flow Specification (FlowSpec) <xref target="RFC8955"/><xref
      target="RFC8956"/><xref target="RFC9117"/> enables the dissemination of
      traffic filtering rules and associated actions using MP_REACH_NLRI /
      MP_UNREACH_NLRI <xref target="RFC4760"/> and Extended Community
      attributes <xref target="RFC4360"/>.</t>

      <t>This document specifies BGP FlowSpec mechanisms to steer matching
      traffic flows into an SR Policy <xref target="RFC9256"/>. It defines two
      operational modes:</t>

      <t><list style="symbols">
          <t>Transport Steering Only (Mode 1): Steers traffic into a transport
          SR Policy toward a target Endpoint.</t>

          <t>Steering with Egress Service Action (Mode 2): Steers traffic into
          an SRv6 Policy while conveying an Egress Service SID for egress
          service action processing (e.g., decapsulation and routing table
          lookup in a specific VRF or the global table, or L3 interface
          cross-connect, as defined in <xref target="RFC8986"/> and signaled
          via <xref target="RFC9252"/>).</t>
        </list></t>

      <t>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.</t>

      <t>This document does not modify the base Segment Routing architecture
      <xref target="RFC8402"/> or SR Policy constructs <xref
      target="RFC9256"/>, but establishes the BGP FlowSpec interworking
      semantics for SR Policy steering.</t>
    </section>

    <section title="Definitions and Acronyms">
      <t/>

      <section title="Terminology">
        <t><list style="symbols">
            <t>Mode 1 (Transport Steering Only): Steering traffic into an SR
            Policy (SR-MPLS or SRv6) toward a target Endpoint solely for
            transport path selection.</t>

            <t>Mode 2 (Steering with Egress Service Action): Steering traffic
            into an SRv6 Policy toward a target Endpoint while executing an
            Egress Service SID function (e.g., decapsulation followed by
            routing table lookup via End.DT4/DT6/DT46, or L3 interface
            cross-connect via End.DX4/DX6 <xref target="RFC8986"/><xref
            target="RFC9252"/>) at the egress PE.</t>

            <t>Redirect-to-IP: The FlowSpec Redirect-to-IP Extended Community
            defined in <xref target="I-D.ietf-idr-flowspec-redirect-ip"/>.</t>

            <t>Egress Service SID: An SRv6 Service SID <xref
            target="RFC9252"/> that is signaled in the BGP Prefix-SID
            Attribute of a FlowSpec route and executed at the egress node of
            the SR Policy into which the matching traffic is steered.</t>
          </list></t>
      </section>

      <section title="Acronyms">
        <t><list style="symbols">
            <t>BGP FS: BGP Flow Specification <xref target="RFC8955"/><xref
            target="RFC8956"/><xref target="RFC9117"/></t>

            <t>EC: Extended Community <xref target="RFC4360"/></t>

            <t>LPM: Longest Prefix Match</t>

            <t>NLRI: Network Layer Reachability Information <xref
            target="RFC4271"/></t>

            <t>SID: Segment Identifier <xref target="RFC8402"/></t>

            <t>SR-MPLS: Segment Routing over MPLS data plane <xref
            target="RFC8660"/></t>

            <t>SRH: Segment Routing Header <xref target="RFC8754"/></t>

            <t>SRv6: Segment Routing over IPv6 data plane <xref
            target="RFC8754"/><xref target="RFC8986"/></t>

            <t>USD: Ultimate Segment Decapsulation (Flavor defined in <xref
            target="RFC8986"/>)</t>
          </list></t>
      </section>
    </section>

    <section title="Protocol Procedures">
      <t>BGP FlowSpec NLRI <xref target="RFC8955"/><xref target="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 <xref target="RFC9256"/> in either SR-MPLS or SRv6
      data planes.</t>

      <t>This specification relies on a two-tier control plane
      architecture:</t>

      <t><list style="symbols">
          <t>Transport Steering: The Color Extended Community <xref
          target="RFC9012"/> is combined with the FlowSpec Redirect-to-IP
          Extended Community <xref
          target="I-D.ietf-idr-flowspec-redirect-ip"/> to form an explicit
          (Color, Endpoint) tuple. This tuple binds the matching FlowSpec
          traffic to an SR Policy (SR-MPLS or SRv6) at the head-end router
          (Ingress PE) <xref target="RFC9256"/>.</t>

          <t>Egress Service Action (SRv6-specific): For SRv6 scenarios
          requiring a specific egress service action (e.g., decapsulation and
          routing table lookup in a VRF or the global table, or L3 interface
          cross-connect, as defined in <xref target="RFC8986"/> and <xref
          target="RFC9252"/>) at the tailend router (Egress PE), the BGP
          Prefix-SID Attribute <xref target="RFC9252"/> may be attached to
          convey an SRv6 Service SID.</t>
        </list></t>

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

      <t/>

      <section title="Relationship to Other Specifications">
        <t>This document specifies, for the address families above:</t>

        <t><list style="symbols">
            <t>the use of the Color Extended Community <xref
            target="RFC9012"/>, including the Color-Only bits defined in
            Section 3 of <xref target="RFC9830"/>, which does not cover the
            use of the community in other address families.</t>

            <t>the use of the BGP Prefix-SID Attribute <xref
            target="RFC8669"/>. Section 1 of <xref target="RFC8669"/> leaves
            the use of the attribute in other AFI/SAFI combinations to future
            specifications; this document is such a specification. The SRv6
            Service TLV encodings of <xref target="RFC9252"/> are used as
            specified in Section 3.7; the processing and error-handling
            procedures of <xref target="RFC9252"/> are written for address
            families in which the Service SID is required for forwarding and
            do not apply here.</t>

            <t>steering into SR Policies <xref target="RFC9256"/> as
            policy-based steering (Section 8.7 of <xref target="RFC9256"/>).
            The BGP destination-steering procedures of Sections 8.4, 8.5 and
            8.8 of <xref target="RFC9256"/> derive the Endpoint from a BGP
            next hop, which a FlowSpec route does not carry (Section 4 of
            <xref target="RFC8955"/>), and do not apply; the Endpoint is the
            target IP address of the Redirect-to-IP Extended Community.</t>
          </list></t>

        <t>This document reuses the encodings defined by the referenced
        specifications (<xref target="RFC9012"/>, <xref target="RFC9830"/>,
        <xref target="RFC8669"/>, <xref target="RFC9252"/>, <xref
        target="RFC9256"/>, and <xref
        target="I-D.ietf-idr-flowspec-redirect-ip"/>). For IPv4 and IPv6
        FlowSpec routes within the scope of Section 3.2, it defines the
        steering, validation, and failure procedures specified below. These
        procedures do not alter the behavior of the referenced specifications
        for routes outside that scope.</t>
      </section>

      <section title="Scope">
        <t>A FlowSpec route is within the scope of this document if it carries
        both a Redirect-to-IP Extended Community <xref
        target="I-D.ietf-idr-flowspec-redirect-ip"/> and a Color Extended
        Community <xref target="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 <xref
        target="I-D.ietf-idr-flowspec-redirect-ip"/>, <xref target="RFC8955"/>
        and <xref target="RFC8956"/>; a BGP Prefix-SID Attribute on such a
        route is ignored.</t>

        <t>A route that carries a Redirect-to-VRF Extended Community (<xref
        target="RFC8955"/>, Section 7.4; <xref target="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 <xref target="I-D.ietf-idr-flowspec-redirect-ip"/>. VPN FlowSpec
        address families (SAFI=134) are outside the scope of this
        document.</t>

        <t>Color-Only steering (Section 8.8 of <xref target="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)
        <xref target="RFC9830"/>, the receiver MUST treat it as Type 0.</t>

        <t>For a route within scope, the procedures of this document apply in
        place of those of <xref target="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 <xref
        target="I-D.ietf-idr-flowspec-redirect-ip"/> does not apply to it.
        Section 8.1 of <xref target="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.</t>
      </section>

      <section title="Operational Steering Modes">
        <t>Traffic steering specified in this document leverages BGP FlowSpec
        filtering rules to steer flows into SR Policies <xref
        target="RFC9256"/>.</t>

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

        <t>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).</t>

        <section title="Mode 1: Steering Without Egress Service Action (SR-MPLS / SRv6)">
          <t>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:</t>

          <t><list style="symbols">
              <t>Sender Behavior: The sender MUST attach a Redirect-to-IP
              Extended Community and a Color Extended Community <xref
              target="RFC9012"/>, and MUST NOT attach the BGP Prefix-SID
              Attribute (see Section 4 for attribute validation).</t>

              <t>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).</t>

              <t>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 <xref target="RFC8986"/> for
              SRv6).</t>
            </list></t>
        </section>

        <section title="Mode 2: Steering With Egress Service Action (SRv6-specific)">
          <t>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:</t>

          <t><list style="symbols">
              <t>Sender Behavior: The sender MUST attach a Redirect-to-IP
              Extended Community, a Color Extended Community <xref
              target="RFC9012"/>, and the BGP Prefix-SID Attribute <xref
              target="RFC9252"/> carrying the Egress Service SID (encoded per
              Section 3.7).</t>

              <t>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. For
              SRv6, the headend MAY omit the SRH only when the applicable
              requirements of Section 4.1 of <xref target="RFC8754"/> and
              Section 5 of <xref target="RFC8986"/> are met. When SID
              compression is used, the headend MUST also satisfy the
              applicable requirements of Section 6 of <xref
              target="RFC9800"/>, including its restrictions on SRH
              omission.</t>

              <t>Egress Behavior: Upon receiving the packet, the egress PE
              executes the behavior bound to the Egress Service SID. The
              supported DT/DX behaviors remove the outer IPv6 header and its
              extension headers before performing the specified routing-table
              lookup or L3 cross-connect (<xref target="RFC8986"/>, <xref
              target="RFC9252"/>).</t>
            </list></t>
        </section>

        <section title="Data-Plane Encapsulation Considerations">
          <t>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 <xref target="RFC8754"/> and <xref
          target="RFC9256"/>.</t>

          <t>For SRv6, the headend MAY omit the SRH only when the applicable
          requirements of Section 4.1 of <xref target="RFC8754"/> and Section
          5 of <xref target="RFC8986"/> are met. When SID compression is used,
          the headend MUST also satisfy the applicable requirements of Section
          6 of <xref target="RFC9800"/>, including its restrictions on SRH
          omission.</t>
        </section>
      </section>

      <section title="Procedures for the Sending BGP Speaker / Controller">
        <t>A BGP speaker or controller originating or re-advertising a
        FlowSpec route to steer traffic into an SR Policy MUST perform the
        following:</t>

        <t><list style="numbers">
            <t>Construct the explicit (Color, Endpoint) tuple by attaching the
            Color Extended Community <xref target="RFC9012"/> and setting the
            target IP address in the Redirect-to-IP Extended Community <xref
            target="I-D.ietf-idr-flowspec-redirect-ip"/>.</t>

            <t>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).</t>
          </list></t>

        <t>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 <xref
        target="RFC9252"/> do not apply. An operator MAY configure policy that
        removes these attributes at an administrative boundary (Section
        6.3).</t>
      </section>

      <section title="Procedures for the Receiving BGP Speaker (Headend / Ingress PE)">
        <t>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.</t>

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

        <t><list style="numbers">
            <t>Validation and Mode Determination: The FlowSpec route is
            validated as specified in <xref target="RFC8955"/>, <xref
            target="RFC8956"/> and <xref target="RFC9117"/>, and malformed
            attributes are handled per <xref target="RFC7606"/>. The
            validation procedure of Section 2.1 of <xref
            target="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.</t>

            <t>SR Policy Binding &amp; 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 <xref target="RFC9256"/>). Matching traffic is
            steered into that SR Policy by policy-based steering (Section 8.7
            of <xref target="RFC9256"/>).<list style="symbols">
                <t>For Mode 1, traffic is encapsulated using the active
                Segment List.</t>

                <t>For Mode 2, when an Egress Service SID is required to be
                applied to a resolved Segment List (typically when the final
                segment of the resolved policy does not possess decapsulation
                capability), the headend MUST synthesize the effective Segment
                List with the Egress Service SID (Section 3.7) as
                follows:<list style="symbols">
                    <t>Appending vs. Replacing: The headend MAY append the
                    Egress Service SID as the final segment (innermost SID) of
                    the Segment List, provided that the final segment of the
                    resolved path is a forwarding or transit behavior.
                    However, the headend MUST NOT append a Service SID after a
                    behavior (such as End.DT4, End.DT6, End.DT46, End.DX4, or
                    End.DX6) that requires the SID to be in the final position
                    of the list (see <xref target="RFC8986"/>, Sections
                    4.4&ndash;4.8). Alternatively, 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.</t>

                    <t>Eligibility and Feasibility Check: Before using a
                    synthesized Segment List (including lists used for
                    weighted load sharing), the headend MUST verify that the
                    resulting list preserves the transport constraints of the
                    resolved SR Policy, is valid for the endpoint behaviors
                    involved, and can be programmed in the forwarding plane.
                    If SRv6 SID compression <xref target="RFC9800"/> is used,
                    the resulting sequence MUST be encoded in accordance with
                    Section 6 of<xref target="RFC9800"/>.</t>

                    <t>Handling of Unusable Segment Lists: If neither
                    appending nor permitted replacement produces a usable and
                    valid list due to endpoint constraint violations, that
                    specific Segment List is considered unusable. When an
                    individual Segment List within a multi-path or weighted
                    load-sharing SR Policy is deemed unusable, it MUST be
                    excluded from the active set, and the traffic load MUST be
                    distributed across the remaining usable Segment Lists with
                    adjusted weights (consistent with the behavior defined in
                    Section 3.10). If all candidate Segment Lists for the
                    steering binding are unusable, the failure procedures in
                    Section 3.8.2 apply.</t>
                  </list></t>
              </list></t>
          </list><list style="empty">
            <t>When an SR Policy is resolved, longest-prefix-match redirection
            toward the target IP address is not performed (see Section 3.2).
            Non-steering FlowSpec actions in the same route remain
            applicable.</t>
          </list><list hangIndent="4" style="hanging">
            <t hangText="3.">Control Plane Retention &amp; 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:<list
                style="symbols">
                <t>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.</t>

                <t>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.</t>
              </list></t>
          </list></t>
      </section>

      <section title="Interaction with Redirect-to-IP Extended Community">
        <t>When a FlowSpec route carries both a Color Extended Community <xref
        target="RFC9012"/> and a Redirect-to-IP Extended Community <xref
        target="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 <xref target="RFC9256"/>.</t>

        <t><list style="symbols">
            <t>Single Redirect-to-IP Enforcement: A sender using the
            procedures of this document MUST attach exactly one Redirect-to-IP
            Extended Community. Multiple Redirect-to-IP Extended Communities
            on a route within the scope of this document are not a supported
            combination.</t>

            <t>Color Selection: 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 <xref target="RFC9256"/>; the per- destination steering
            procedures of Section 8.4 of <xref target="RFC9256"/> are not
            used.</t>
          </list></t>
      </section>

      <section title="BGP Prefix-SID Attribute Encoding and Validation Rules">
        <t>The BGP Prefix-SID Attribute <xref target="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 <xref target="RFC9252"/> and the SRv6 SID encodings of
        <xref target="RFC8986"/> are used as follows:</t>

        <t><list style="symbols">
            <t>SRv6 Service TLVs and Selection Rules: The SRv6 L3 Service TLV
            (Type 5) MUST be used, containing an SRv6 SID Information Sub-TLV
            (Type 1). A sender MUST include exactly one SRv6 L3 Service TLV
            containing exactly one SRv6 SID Information Sub-TLV. If multiple
            SRv6 L3 Service TLVs are received, all but the first MUST be
            ignored. Within the selected TLV, the receiver MUST use the first
            SRv6 SID Information Sub-TLV. The SRv6 SID Structure Sub-Sub-TLV
            (Type 1) MAY be included. SRv6 L2 Service TLVs (e.g., Type 6) MUST
            NOT be included for Layer 3 FlowSpec (SAFI 133) and MUST be
            ignored if received, treating the route as lacking an Egress
            Service SID.</t>

            <t>Endpoint Behaviors and AFI Matching: Supported codepoints are
            restricted to Layer 3 behaviors ([RFC8986]). Layer 2 and transit
            behaviors MUST NOT be used. Furthermore, the selected SRv6
            Endpoint Behavior MUST match the respective FlowSpec
            AFI/SAFI:<list style="symbols">
                <t>For IPv4 FlowSpec, the behavior MUST be End.DT4, End.DX4,
                or End.DT46.</t>

                <t>For IPv6 FlowSpec, the behavior MUST be End.DT6, End.DX6,
                or End.DT46. (An IPv4 payload MUST NOT be delivered through
                End.DT6 or End.DX6, and an IPv6 payload MUST NOT be delivered
                through End.DT4 or End.DX4).</t>
              </list></t>

            <t>Disallowance of Transposition and Structure Constraints:
            Transposition Schemes (<xref target="RFC9252"/>) MUST NOT be used
            because FlowSpec NLRIs lack an MPLS Label field. The full SRv6
            Service SID MUST be encoded entirely within the SRv6 SID
            Information Sub-TLV. If the SRv6 SID Structure Sub-Sub-TLV is
            present, its Transposition Length, Transposition Offset, and
            Argument Length fields MUST all be zero. The SID and, when
            present, its structure MUST satisfy the applicable requirements of
            <xref target="RFC9252"/>, as updated by <xref target="RFC9819"/>.
            For the behaviors supported by this document, all bits following
            the function portion of the SID MUST be zero.</t>
          </list></t>

        <t>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, or violates any of the validation and
        matching rules specified above, the headend MUST ignore the attribute,
        and MUST NOT forward matching traffic using Mode 1 as a result of a
        missing, malformed, unsupported, unauthorized, or otherwise unusable
        Egress Service SID. The headend MUST apply the failure procedures of
        Section 3.8.2, and SHOULD generate a diagnostic log entry. For C-bit =
        1, this failure affects only the copied stream, as specified in
        Section 3.9. This is consistent with the attribute discard action of
        <xref target="RFC7606"/>; the discarded attribute is not
        re-advertised.</t>
      </section>

      <section title="Steering Failure and Fallback Procedures">
        <t>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.</t>

        <section title="Routes Without a Color Extended Community">
          <t>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.</t>
        </section>

        <section title="Policy and SID Resolution Failures (Forwarding Plane Failure)">
          <t>If a FlowSpec route contains both a valid Redirect-to-IP Extended
          Community and a Color Extended Community (expressing explicit SR
          steering intent), but:</t>

          <t><list style="symbols">
              <t>The corresponding (Endpoint, Color) SR Policy is Down,
              unresolvable, or not programmed in the forwarding plane; or</t>

              <t>The target SR Policy is active, but the headend cannot
              construct and program an eligible effective Segment List
              containing the authorized Egress Service SID;</t>
            </list>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.</t>

          <t>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).</t>

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

          <t>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.</t>
        </section>

        <section title="Diagnostics and Recovery">
          <t>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 <xref target="RFC8639"/>, a Syslog
          message <xref target="RFC5424"/> or an SNMP notification <xref
          target="RFC3411"/>).</t>

          <t>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.</t>

          <t>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.</t>
        </section>
      </section>

      <section title="Handling of the Redirect-to-IP C-bit">
        <t>The Redirect-to-IP Extended Community <xref
        target="I-D.ietf-idr-flowspec-redirect-ip"/> includes a C-bit (Copy
        Bit) in its Local Administrator field:</t>

        <t><list style="symbols">
            <t>C-bit = 0 (Direct Redirection): Matching packets MUST be
            encapsulated and steered into the resolved SR Policy, bypassing
            normal IP routing.</t>

            <t>C-bit = 1 (Traffic Copying): The headend MUST duplicate
            matching packets. The original packet continues along normal IP
            routing without encapsulation, while the copy is encapsulated and
            steered into the resolved SR Policy per Section 3.3.</t>
          </list>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.</t>
      </section>

      <section title="Load Balancing Considerations">
        <t>When matching traffic is steered into an SR Policy with multiple
        active Segment Lists <xref target="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.</t>

        <t>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 <xref target="RFC8754"/>, which also
        provides the entropy used for multipath hashing by transit nodes. This
        document imposes no additional requirement and grants no
        exception.</t>
      </section>

      <section title="Backward Compatibility and Coexistence">
        <t>A BGP speaker that implements base FlowSpec <xref
        target="RFC8955"/><xref target="RFC8956"/> and Redirect-to-IP, but not
        this specification, processes such routes under the rules of those
        specifications:</t>

        <t><list style="symbols">
            <t>Attribute Propagation: The BGP Prefix-SID Attribute is an
            optional transitive attribute <xref target="RFC8669"/>. A speaker
            that does not recognize it propagates it with the Partial bit set
            <xref target="RFC4271"/>.</t>

            <t>Forwarding on non-supporting headends: A non-supporting headend
            processes the route as specified in <xref
            target="I-D.ietf-idr-flowspec-redirect-ip"/>.</t>
          </list>Implementations MUST support administrative controls to
        enable or disable advertisement of SRv6 service steering attributes
        per neighbor and per service <xref target="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.</t>
      </section>
    </section>

    <section title="Multi-Attribute Interworking and Steering Resolution">
      <t>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.</t>

      <section title="Sequential Resolution Logic">
        <t>The headend evaluates received attribute containers
        step-by-step:</t>

        <t>Step 1: Redirect-to-IP Extended Community</t>

        <t><list style="symbols">
            <t>Absent: Procedures in this document do not apply. Process route
            per standard BGP FlowSpec <xref target="RFC8955"/><xref
            target="RFC8956"/>.</t>

            <t>Present: Extract target IP as SR Policy Endpoint, process C-bit
            (Section 3.9), and proceed to Step 2.</t>
          </list>Step 2: Color Extended Community</t>

        <t><list style="symbols">
            <t>Absent: The route is outside the scope of this document and is
            processed as specified in Section 3.8.1.</t>

            <t>Present: Extract Color value C to form the (Endpoint, Color)
            tuple, and proceed to Step 3.</t>
          </list>Step 3: BGP Prefix-SID Attribute (PSID)</t>

        <t><list style="symbols">
            <t>Note: This step applies when steering into an SRv6 Policy
            (regardless of whether the Endpoint is encoded as an IPv4 or IPv6
            address <xref target="RFC9256"/>).</t>

            <t>Absent (Mode 1): Resolve and steer traffic into the SR Policy
            corresponding to (Endpoint, Color) per Section 3.5.</t>

            <t>Present (Mode 2):<list style="symbols">
                <t>For SRv6 Steering: Extract the Egress Service SID from the
                PSID, resolve the SR Policy via (Endpoint, Color), and
                synthesize the active segment list per Section 3.5 and Section
                3.7.</t>

                <t>For SR-MPLS Steering: In accordance with Section 3.7, the
                BGP Prefix-SID Attribute MUST NOT be used for SR-MPLS
                steering. If the resolved (Endpoint, Color) tuple maps to an
                SR-MPLS Policy when Mode 2 service steering is required, an
                SR-MPLS Policy is not eligible to satisfy that
                service-steering requirement. The headend MUST NOT forward
                matching traffic using Mode 1, and MUST apply the failure
                procedures of Section 3.8.2, while generating a diagnostic log
                entry.</t>
              </list></t>
          </list></t>
      </section>

      <section title="Valid Attribute Combinations Summary">
        <t>Table 1 summarizes all possible attribute combinations and their
        corresponding resolution modes after applying the sequential logic
        above.</t>

        <t><figure anchor="Deterministic_Interworking_Matrix"
            suppress-title="true" title="">
            <artwork align="left"><![CDATA[
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)          |
+-------------+----------+-----------+------------------------------+

]]></artwork>
          </figure></t>
      </section>

      <section title="Protection Against Silent SLA Violations">
        <t>To prevent unintentional redirection and SLA violations,
        implementations MUST strictly enforce the following rules:</t>

        <t><list style="numbers">
            <t>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.</t>

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

            <t>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.</t>
          </list></t>

        <t/>
      </section>
    </section>

    <section title="Operational Considerations">
      <t>FlowSpec provides a control-plane mechanism for distributing traffic
      matches and their SR Policy bindings. Operators need to account for
      classifier capacity, the number of policy bindings and synthesized
      encapsulations, and the effect of policy changes on forwarding-state
      programming.</t>

      <t>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.</t>

      <t>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).</t>

      <t>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.</t>
    </section>

    <section title="Security Considerations">
      <t>The security considerations of BGP FlowSpec <xref
      target="RFC8955"/><xref target="RFC8956"/>, Redirect-to-IP <xref
      target="I-D.ietf-idr-flowspec-redirect-ip"/>, BGP Prefix-SID <xref
      target="RFC9252"/>, and core Segment Routing <xref target="RFC8402"/>
      apply to this document. Combining FlowSpec redirection with SR Policy
      selection and SRv6 Service SIDs introduces specific threat vectors that
      MUST be mitigated.</t>

      <section title="Cross-Table/VRF Traffic Injection and Service Hijacking">
        <t>The BGP Prefix-SID Attribute in a FlowSpec route conveys an SRv6
        Service SID (e.g., End.DT4/DT6/DT46, End.DX4/DX6 <xref
        target="RFC8986"/><xref target="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.</t>

        <t>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 <xref target="RFC5925"/> and
        restricted to trusted entities.</t>
      </section>

      <section title="Scope and Validation Limits of BGP FlowSpec Attributes">
        <t>The validation procedures of <xref target="RFC8955"/>, <xref
        target="RFC8956"/>, and <xref target="RFC9117"/> validate FlowSpec
        routes against unicast routing information. The additional
        Redirect-to-IP validation procedure in <xref
        target="I-D.ietf-idr-flowspec-redirect-ip"/> does not apply to routes
        within the scope of this document, as specified in Section 3.5. These
        checks do not authorize the Color Extended Community or the service
        context conveyed by the BGP Prefix-SID Attribute; those require the
        local authorization checks specified in this section and Section
        6.1.</t>

        <t>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 <xref target="I-D.ietf-idr-flowspec-redirect-ip"/>,
        bypassing the SR Policy and, for Mode 2, the Egress Service SID.</t>

        <t>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.</t>
      </section>

      <section title="SR Domain Leakage and Boundary Security">
        <t>SRv6 SIDs and BGP Prefix-SID Attributes are intended strictly for
        use within a trusted SR domain <xref target="RFC8402"/><xref
        target="RFC8754"/><xref target="RFC8986"/><xref target="RFC9252"/>.
        Propagation across untrusted EBGP boundaries leaks internal SRv6
        Locators and topology, exposing the domain to external steering
        attacks.</t>

        <t>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
        <xref target="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.</t>
      </section>

      <section title="Traffic Amplification and Path Pinning">
        <t>A single FlowSpec route can match high-volume distributed flows
        across multiple Ingress PEs and redirect them to a single destination
        <xref target="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.</t>

        <t>Ingress PEs SHOULD combine FlowSpec redirect actions with Traffic
        Rate Extended Communities <xref target="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.</t>

        <t>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.</t>
      </section>
    </section>

    <section title="Implementation Status">
      <t>[Note to the RFC Editor: Please remove this section before
      publication, as well as remove the reference to <xref
      target="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 <xref target="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.]</t>

      <t>According to <xref target="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".</t>

      <section title="Interop-test Status">
        <t>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.</t>

        <t>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):</t>

        <t><figure>
            <artwork align="left"><![CDATA[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            |
+----------------+---------------+-------------------------+
]]></artwork>
          </figure></t>

        <t/>
      </section>

      <section title="Deployment Status">
        <t>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.</t>

        <t>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 <xref
        target="RFC9256"/>.</t>
      </section>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>This document requires no IANA actions.</t>
    </section>

    <section title="Contributors ">
      <t>The following people made significant contributions to this
      document:</t>

      <t><figure>
          <artwork align="left"><![CDATA[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
]]></artwork>
        </figure></t>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>The authors would like to thank:</t>

      <t><list style="symbols">
          <t>Nat Kao for suggesting the inclusion of SR-MPLS use cases and
          providing detailed recommendations regarding failure and fallback
          procedures.</t>

          <t>Ketan Talaulikar for his in-depth review and valuable input,
          which substantially enhanced the precision and overall quality of
          this document.</t>

          <t>Donald E. Eastlake, 3rd for his thorough review and insightful
          suggestions.</t>
        </list>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.</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <?rfc include='reference.I-D.ietf-idr-flowspec-redirect-ip'?>

      <?rfc include="reference.RFC.2119"?>

      <?rfc include='reference.RFC.4271'?>

      <?rfc include='reference.RFC.4360'?>

      <?rfc include='reference.RFC.4760'?>

      <?rfc include='reference.RFC.7606'?>

      <?rfc include='reference.RFC.8174'?>

      <?rfc include='reference.RFC.8402'?>

      <?rfc include='reference.RFC.8660'?>

      <?rfc include='reference.RFC.8669'?>

      <?rfc include='reference.RFC.8754'?>

      <?rfc include='reference.RFC.8955'?>

      <?rfc include='reference.RFC.8956'?>

      <?rfc include='reference.RFC.8986'?>

      <?rfc include='reference.RFC.9012'?>

      <?rfc include='reference.RFC.9117'?>

      <?rfc include='reference.RFC.9252'?>

      <?rfc include='reference.RFC.9256'?>

      <?rfc include='reference.RFC.9819'?>

      <?rfc include='reference.RFC.9830'?>
    </references>

    <references title="Informative References">
      <?rfc include='reference.RFC.3411'?>

      <?rfc include='reference.RFC.5424'?>

      <?rfc include='reference.RFC.5925'?>

      <?rfc include='reference.RFC.7942'?>

      <?rfc include='reference.RFC.8639'?>

      <?rfc include='reference.RFC.9800'?>

      <?rfc include='reference.RFC.9862'?>
    </references>

    <section title="Application Examples (Informative)">
      <t>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.</t>

      <section title="SR-MPLS Steering Example (Mode 1)">
        <t><xref target="SR_MPLS_Policy_Case"/> illustrates steering FlowSpec
        traffic into an SR-MPLS Policy without egress service actions (Section
        3.3.1).</t>

        <t><figure anchor="SR_MPLS_Policy_Case"
            title="Steering Traffic into SR-MPLS Policy (Mode 1)">
            <artwork align="center"><![CDATA[
   +------------+
   |  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>)  +-------+
            '--(         )--'   
                (       )       
                 '-----'

]]></artwork>
          </figure></t>

        <t>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.</t>

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

        <t>Encapsulation: Matching traffic is encapsulated into the policy's
        MPLS label stack:</t>

        <t><figure anchor="MPLS_label_stack" suppress-title="true" title="">
            <artwork align="center"><![CDATA[+---------------------------------------------+
| Outer IP / Ethernet Header                  |
+---------------------------------------------+
| MPLS Label S1 (Top)                         |
| MPLS Label S2                               |
| MPLS Label S3 (Bottom with S=1)             |
+---------------------------------------------+
| Inner Payload (Original IPv4/IPv6 Packet)   |
+---------------------------------------------+
]]></artwork>
          </figure></t>
      </section>

      <section title="SRv6 Steering Examples">
        <t>In SRv6 networks, FlowSpec traffic steering operates under either
        Mode 2 (Transport Steering with Egress Service Action) or Mode 1
        (Transport Steering Only).</t>

        <section title="SRv6 Mode 2: Transport Steering with Egress Service Action">
          <t><xref target="SRv6_Policy_Case1"/> illustrates signaling an
          explicit egress service action (Egress_Service_SID) alongside
          transport steering (Section 3.3.2).</t>

          <t><figure anchor="SRv6_Policy_Case1"
              title="Steering Traffic into SRv6 Policy with Egress Service Action (Mode 2)">
              <artwork align="center"><![CDATA[
   +------------+
   |  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.)
                 '-----'

]]></artwork>
            </figure></t>

          <t>Control Plane &amp; 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 &lt;S1, S2, S3&gt;.</t>

          <t>Segment List Synthesis (Section 3.5):</t>

          <t><list style="symbols">
              <t>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 &lt;S1, S2,
              Egress_Service_SID&gt;.</t>

              <t>Scenario B (Appending, default): Otherwise,
              Egress_Service_SID is appended, yielding the synthesized Segment
              List &lt;S1, S2, S3, Egress_Service_SID&gt;.</t>
            </list></t>

          <t>Packet Encapsulation Format:</t>

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

          <t><figure anchor="Mode_2_A_B" suppress-title="true" title="">
              <artwork align="center"><![CDATA[
+-----------------------------------------------------+
| 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)           |
+-----------------------------------------------------+
]]></artwork>
            </figure></t>

          <t>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 <xref target="RFC8986"/>).</t>
        </section>

        <section title="SRv6 Mode 1: Transport Steering Only (USD-Flavored End SID)">
          <t>When the final SID S3 instantiated on the tailend supports the
          Ultimate Segment Decapsulation (USD) flavor <xref
          target="RFC8986"/>, an explicit Egress Service SID MAY be omitted
          from the FlowSpec route.</t>

          <t><figure anchor="SRv6_Policy_Case2"
              title="Steering Traffic into SRv6 Policy (Mode 1)">
              <artwork align="center"><![CDATA[
   +------------+
   |  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.
]]></artwork>
            </figure></t>

          <t>The controller advertises the route with Color C2 and
          Redirect-to-IPv6 without a BGP Prefix-SID. The headend encapsulates
          traffic using Segment List &lt;S1, S2, S3&gt;. 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.</t>
        </section>

        <section title="Summary of Operational Workflow">
          <t>In typical network operations:</t>

          <t><list style="numbers">
              <t>The Centralized Controller maintains full visibility of
              topology and SR Policies across the network domain.</t>

              <t>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).</t>

              <t>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.</t>
            </list></t>
        </section>
      </section>
    </section>
  </back>
</rfc>
