Network Working Group

Internet Engineering Task Force (IETF)                K. Talaulikar, Ed.
Internet-Draft
Request for Comments: 9831                                   C. Filsfils
Intended status:
Category: Experimental                                     Cisco Systems
Expires: 24 August 2025
ISSN: 2070-1721                                               S. Previdi
                                                     Huawei Technologies
                                                               P. Mattes
                                                               Microsoft
                                                                 D. Jain
                                                                  Google
                                                        20 February
                                                             August 2025

       Segment Routing Segment Types Extensions for BGP SR Policy
                 draft-ietf-idr-bgp-sr-segtypes-ext-08

Abstract

   This document specifies the signaling of additional Segment Routing
   (SR) Segment Types for signaling of Segment Routing (SR) SR Policies in BGP using the SR Policy
   Subsequent Address Family Identifier. Identifier (SAFI).

Status of This Memo

   This Internet-Draft document is submitted in full conformance with the
   provisions of BCP 78 not an Internet Standards Track specification; it is
   published for examination, experimental implementation, and BCP 79.

   Internet-Drafts are working documents
   evaluation.

   This document defines an Experimental Protocol for the Internet
   community.  This document is a product of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list  It represents the consensus of current Internet-
   Drafts is at https://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft the IETF
   community.  It has received public review and has been approved for
   publication by the Internet Engineering Steering Group (IESG).  Not
   all documents valid approved by the IESG are candidates for a maximum any level of six months
   Internet Standard; see Section 2 of RFC 7841.

   Information about the current status of this document, any errata,
   and how to provide feedback on it may be updated, replaced, or obsoleted by other documents obtained 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 24 August 2025.
   https://www.rfc-editor.org/info/rfc9831.

Copyright Notice

   Copyright (c) 2025 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents (https://trustee.ietf.org/
   license-info)
   (https://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Revised BSD License text as described in Section 4.e of the
   Trust Legal Provisions and are provided without warranty as described
   in the Revised BSD License.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
     1.1.  Requirements Language . . . . . . . . . . . . . . . . . .   3
   2.  Segment Type Sub-TLVs . . . . . . . . . . . . . . . . . . . .   3
     2.1.  Segment Type C - C: SR-MPLS Prefix SID for IPv4  . . . . . .   4
     2.2.  Segment Type D - D: SR-MPLS Prefix SID for IPv6  . . . . . .   5
     2.3.  Segment Type E - E: SR-MPLS Adjacency SID for IPv4 with an
            Interface ID . . . . . . . . . . . . . . . . . . . . . .   5
     2.4.  Segment Type F - F: SR-MPLS Adjacency SID for IPv4 with an
            Interface Address  . . . . . . . . . . . . . . . . . . .   6
     2.5.  Segment Type G - G: SR-MPLS Adjacency SID for IPv6 with an
            Interface ID . . . . . . . . . . . . . . . . . . . . . .   7
     2.6.  Segment Type H - H: SR-MPLS Adjacency SID for IPv6 with an
            Interface Address  . . . . . . . . . . . . . . . . . . .   9
     2.7.  Segment Type I - I: SRv6 END SID as IPv6 Node Address  . . .   9
     2.8.  Segment Type J - J: SRv6 END.X SID as an Interface ID  . . .  11
     2.9.  Segment Type K - K: SRv6 END.X SID as an Interface Address  . . . . . . . . . . . . . . . . . . . . . . . .  12
     2.10. SR Policy Segment Flags . . . . . . . . . . . . . . . . .  14
   3.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  15
     3.1.  SR Policy Segment List Sub-TLVs . . . . . . . . . . . . .  15
     3.2.  SR Policy Segment Flags . . . . . . . . . . . . . . . . .  15
   4.  Security Considerations . . . . . . . . . . . . . . . . . . .  15
   5.  Manageability Considerations  . . . . . . . . . . . . . . . .  16
   6.  Acknowledgments . . . . . . . . . . . . . . . . . . . . . . .  16
   7.  References  . . . . . . . . . . . . . . . . . . . . . . . . .  16
     7.1.  Normative References  . . . . . . . . . . . . . . . . . .  16
     7.2.  Informational References  . . . . . . . . . . . . . . . .  17
   Acknowledgments
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  17

1.  Introduction

   The BGP Segment Routing (SR) Policy Subsequent Address Family
   Identifier (SAFI) was introduced by [I-D.ietf-idr-sr-policy-safi] [RFC9830] for the advertisement
   of SR Policy Policies [RFC8402].  [I-D.ietf-idr-sr-policy-safi]  [RFC9830] introduced the base SR Segment
   Types A and B as specified by the SR Policy Architecture [RFC9256].

   This document specifies the extensions for the advertisement of the
   remaining SR Segment Types defined in [RFC9256] in the SR Policy SAFI
   for both SR-MPLS [RFC8660] (see [RFC8660]) and SRv6 Segment Routing over IPv6 (SRv6)
   (see [RFC8754] [RFC8986]. and [RFC8986]).

   The extensions in this document do not impact the SR Policy
   operations or fault management as specified in
   [I-D.ietf-idr-sr-policy-safi]. [RFC9830].

1.1.  Requirements Language

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
   "OPTIONAL" in this document are to be interpreted as described in
   BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
   capitals, as shown here.

2.  Segment Type Sub-TLVs

   The Segment List sub-TLV [I-D.ietf-idr-sr-policy-safi] [RFC9830] encodes a single explicit path
   towards the endpoint as described in section Section 5.1 of [RFC9256].  The
   Segment List sub-TLV includes the elements of the paths (i.e.,
   segments).

   A Segment sub-TLV describes a single segment in a segment list (i.e.,
   a single element of the explicit path).

   Section 4 of [RFC9256] defines several Segment Types for SR-MPLS and
   SRv6 that are listed below as a reminder:

   Type A:   SR-MPLS Label

   Type B:   SRv6 SID

   Type C:   IPv4 Prefix with optional SR Algorithm

   Type D:   IPv6 Global Prefix with optional SR Algorithm for SR-MPLS

   Type E:   IPv4 Prefix with Local Interface ID

   Type F:   IPv4 Addresses for link endpoints as Local, Remote pair

   Type G:   IPv6 Prefix and Interface ID for link endpoints as Local,
             Remote pair for SR-MPLS

   Type H:   IPv6 Addresses for link endpoints as Local, Remote pair for
             SR-MPLS

   Type I:   IPv6 Global Prefix with optional SR Algorithm for SRv6

   Type J:   IPv6 Prefix and Interface ID for link endpoints as Local,
             Remote pair for SRv6

   Type K:   IPv6 Addresses for link endpoints as Local, Remote pair for
             SRv6

   Figure 1: SR Segment Types

   [I-D.ietf-idr-sr-policy-safi]

   [RFC9830] specifies Segment Type Sub-TLVs for the
   segment types Segment Types A and
   B.  The following sub-sections subsections specify the sub-
   TLVs sub-TLVs used for encoding
   each of the other Segment Types above.

   As specified in sections Sections 2.4.4 and 2.4.4.2 of
   [I-D.ietf-idr-sr-policy-safi], [RFC9830], validation
   of an explicit path encoded by the Segment List sub-TLV is beyond the
   scope of BGP and performed by the Segment Routing Policy Module
   (SRPM) as described in section Section 5 of [RFC9256].  As specified in section
   Section 5.1 of [RFC9256], a mix of SR-
   MPLS SR-MPLS and SRv6 segments make the
   segment-list invalid.

2.1.  Segment Type C - C: SR-MPLS Prefix SID for IPv4

   The Type C Segment Sub-TLV sub-TLV encodes an IPv4 node address, SR
   Algorithm, and an optional SR-MPLS SID. Segment Identifier (SID).  The
   format is as follows:

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |   Length      |     Flags     |  SR Algorithm |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                 IPv4 Node Address (4 octets)                  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                SR-MPLS SID (optional, 4 octets)               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                      Figure 2: 1: Type C Segment sub-TLV

   where:

   * Sub-TLV

   Where:

   Type: 3.

   *  3

   Length:  Specifies the length of the value field (i.e., not including
      Type and Length fields) in terms of octets.  The value MUST be 10
      when the SR-MPLS SID is present, else present; else, it MUST be 6.

   *

   Flags:  1 octet of flags as defined in Section 2.10.

   *

   SR Algorithm: 1-octet  1 octet specifying the SR Algorithm as described in
      section
      Section 3.1.1 in of [RFC8402] when the A-Flag as defined in
      Section 2.10 is set.  The SR Algorithm is used by the SRPM
      [I-D.ietf-idr-sr-policy-safi]
      [RFC9830] as described in section Section 4 in of [RFC9256].  When the A-Flag
      is not set, this field MUST be set to zero on transmission and
      MUST be ignored on receipt.

   *

   IPv4 Node Address: a  A 4-octet IPv4 address representing a node.

   *

   SR-MPLS SID: optional,  Optional.  A 4-octet field containing a label, TC, S Traffic
      Class (TC), bottom-of-stack (S), and TTL as defined for Segment
      Type A [I-D.ietf-idr-sr-policy-safi]. [RFC9830].

2.2.  Segment Type D - D: SR-MPLS Prefix SID for IPv6

   The Type D Segment Sub-TLV sub-TLV encodes an IPv6 node address, SR
   Algorithm, and an optional SR-MPLS SID.  The format is as follows:

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |   Length      |     Flags     |  SR Algorithm |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   //                IPv6 Node Address (16 octets)                //
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                SR-MPLS SID (optional, 4 octets)               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                      Figure 3: 2: Type D Segment sub-TLV

   where:

   * Sub-TLV

   Where:

   Type:  4

   *

   Length:  Specifies the length of the value field (i.e., not including
      Type and Length fields) in terms of octets.  The value MUST be 22
      when the SR-MPLS SID is present, else present; else, it MUST be 18.

   *

   Flags:  1 octet of flags as defined in Section 2.10.

   *

   SR Algorithm: 1-octet  1 octet specifying the SR Algorithm as described in
      section
      Section 3.1.1 in of [RFC8402] when the A-Flag as defined in
      Section 2.10 is set.  The SR Algorithm is used by the SRPM
      [I-D.ietf-idr-sr-policy-safi]
      [RFC9830] as described in section Section 4 in of [RFC9256].  When the A-Flag
      is not set, this field MUST be set to zero on transmission and
      MUST be ignored on receipt.

   *

   IPv6 Node Address: a  A 16-octet IPv6 address representing a node.

   *

   SR-MPLS SID: optional,  Optional.  A 4-octet field containing a label, TC, S S,
      and TTL as defined for Segment Type A [I-D.ietf-idr-sr-policy-safi]. [RFC9830].

2.3.  Segment Type E - E: SR-MPLS Adjacency SID for IPv4 with an Interface
      ID

   The Type E Segment Sub-TLV sub-TLV encodes an IPv4 node address, a local
   interface Identifier (Local Interface ID), and an optional SR-MPLS
   SID.  The format is as follows:

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |   Length      |     Flags     |   RESERVED    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                 Local Interface ID (4 octets)                 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                 IPv4 Node Address (4 octets)                  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                SR-MPLS SID (optional, 4 octets)               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                      Figure 4: 3: Type E Segment sub-TLV

   where:

   * Sub-TLV

   Where:

   Type: 5.

   *  5

   Length:  Specifies the length of the value field (i.e., not including
      Type and Length fields) in terms of octets.  The value MUST be 14
      when the SR-MPLS SID is present, else present; else, it MUST be 10.

   *

   Flags:  1 octet of flags as defined in Section 2.10.

   *

   RESERVED:  1 octet of reserved bits.  This field MUST be set to zero
      on transmission and MUST be ignored on receipt.

   *

   Local Interface ID:  4 octets of interface index of local interface
      (refer to TLV 258 of [RFC9552]).

   *

   IPv4 Node Address: a  A 4-octet IPv4 address representing a node.

   *

   SR-MPLS SID: optional,  Optional.  A 4-octet field containing a label, TC, S S,
      and TTL as defined for Segment Type A [I-D.ietf-idr-sr-policy-safi]. [RFC9830].

2.4.  Segment Type F - F: SR-MPLS Adjacency SID for IPv4 with an Interface
      Address

   The Type F Segment Sub-TLV sub-TLV encodes an adjacency local address, an
   adjacency remote address, and an optional SR-MPLS SID.  The format is
   as follows:

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |   Length      |     Flags     |   RESERVED    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                Local IPv4 Address (4 octets)                  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                Remote IPv4 Address  (4 octets)                |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                SR-MPLS SID (optional, 4 octets)               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                      Figure 5: 4: Type F Segment sub-TLV

   where:

   * Sub-TLV

   Where:

   Type: 6.

   *  6

   Length:  Specifies the length of the value field (i.e., not including
      Type and Length fields) in terms of octets.  The value MUST be 14
      when the SR-MPLS SID is present, else present; else, it MUST be 10.

   *

   Flags:  1 octet of flags as defined in Section 2.10.

   *

   RESERVED:  1 octet of reserved bits.  This field MUST be set to zero
      on transmission and MUST be ignored on receipt.

   *

   Local IPv4 Address: a  A 4-octet IPv4 address representing the local
      link address of the node.

   *

   Remote IPv4 Address: a  A 4-octet IPv4 address representing the link
      address of the neighbor node.

   *

   SR-MPLS SID: optional,  Optional.  A 4-octet field containing a label, TC, S S,
      and TTL as defined for Segment Type A [I-D.ietf-idr-sr-policy-safi]. [RFC9830].

2.5.  Segment Type G - G: SR-MPLS Adjacency SID for IPv6 with an Interface
      ID

   The Type G Segment Sub-TLV sub-TLV encodes an IPv6 link-local adjacency with
   an IPv6 local node address, a local interface identifier (Local
   Interface ID), an IPv6 remote node address, a remote interface
   identifier (Remote Interface ID), and an optional SR-MPLS SID.  The
   format is as follows:

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |   Length      |     Flags     |   RESERVED    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                 Local Interface ID (4 octets)                 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   //                IPv6 Local Node Address (16 octets)          //
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                 Remote Interface ID (4 octets)                |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   //                IPv6 Remote Node Address (16 octets)         //
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                SR-MPLS SID (optional, 4 octets)               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                      Figure 6: 5: Type G Segment sub-TLV

   where:

   * Sub-TLV

   Where:

   Type:  7

   *

   Length:  Specifies the length of the value field (i.e., not including
      Type and Length fields) in terms of octets.  The value MUST be 46
      when the SR-MPLS SID is present, else present; else, it MUST be 42.

   *

   Flags:  1 octet of flags as defined in Section 2.10.

   *

   RESERVED:  1 octet of reserved bits.  This field MUST be set to zero
      on transmission and MUST be ignored on receipt.

   *

   Local Interface ID:  4 octets of interface index of local interface
      (refer to TLV 258 of [RFC9552]).

   *

   IPv6 Local Node Address: a  A 16-octet IPv6 address representing the
      node.

   *

   Remote Interface ID:  4 octets of interface index of remote interface
      (refer to TLV 258 of [RFC9552]).  The value MAY be set to zero
      when the local node address and interface identifiers are
      sufficient to describe the link.

   *

   IPv6 Remote Node Address: a  A 16-octet IPv6 address.  The value MAY be
      set to zero when the local node address and interface identifiers
      are sufficient to describe the link.

   *

   SR-MPLS SID: optional,  Optional.  A 4-octet field containing a label, TC, S S,
      and TTL as defined for Segment Type A [I-D.ietf-idr-sr-policy-safi]. [RFC9830].

2.6.  Segment Type H - H: SR-MPLS Adjacency SID for IPv6 with an Interface
      Address

   The Type H Segment Sub-TLV sub-TLV encodes an adjacency local address, an
   adjacency remote address, and an optional SR-MPLS SID.  The format is
   as follows:

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |   Length      |     Flags     |   RESERVED    |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   //               Local IPv6 Address (16 octets)                //
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   //               Remote IPv6 Address  (16 octets)              //
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                SR-MPLS SID (optional, 4 octets)               |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                      Figure 7: 6: Type H Segment sub-TLV

   where:

   * Sub-TLV

   Where:

   Type:  8

   *

   Length:  Specifies the length of the value field (i.e., not including
      Type and Length fields) in terms of octets.  The value MUST be 38
      when the SR-MPLS SID is present, else present; else, it MUST be 34.

   *

   Flags:  1 octet of flags as defined in Section 2.10.

   *

   RESERVED:  1 octet of reserved bits.  This field MUST be set to zero
      on transmission and MUST be ignored on receipt.

   *

   Local IPv6 Address: a  A 16-octet IPv6 address representing the local
      link address of the node.

   *

   Remote IPv6 Address: a  A 16-octet IPv6 address representing the link
      address of the neighbor node.

   *

   SR-MPLS SID: optional,  Optional.  A 4-octet field containing a label, TC, S S,
      and TTL as defined for Segment Type A [I-D.ietf-idr-sr-policy-safi]. [RFC9830].

2.7.  Segment Type I - I: SRv6 END SID as IPv6 Node Address

   The Type I Segment Sub-TLV sub-TLV encodes an IPv6 node address, an SR
   Algorithm, and an optional SRv6 SID.  The format is as follows:

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |   Length      |     Flags     | SR Algorithm  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   //                 IPv6 Node Address (16 octets)               //
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   //                    SRv6 SID (optional, 16 octets)           //
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   //           SRv6 Endpoint Behavior and SID Structure          //
   //                    (optional, 8 octets)                     //
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                      Figure 8: 7: Type I Segment sub-TLV

   where:

   * Sub-TLV

   Where:

   Type:  14

   *

   Length:  Specifies the length of the value field (i.e., not including
      Type and Length fields) in terms of octets.  The value MUST be one of:
      of the following:

      *  42 when both SRv6 SID and SRv6 Endpoint Behavior & and SID
         Structure are present,
      *  34 when only SRv6 SID is present, or
      *  18 when the SRv6 SID is not present.

   *

   Flags:  1 octet of flags as defined in Section 2.10.

   *

   SR Algorithm:  1 octet specifying the SR Algorithm as described in
      section
      Section 3.1.1 in of [RFC8402] when the A-Flag as defined in
      Section 2.10 is set.  The SR Algorithm is used by the SRPM
      [I-D.ietf-idr-sr-policy-safi]
      [RFC9830] as described in section Section 4 in of [RFC9256].  When the A-Flag
      is not set, this field MUST be set to zero on transmission and
      MUST be ignored on receipt.

   *

   IPv6 Node Address: a  A 16-octet IPv6 address representing the node.

   *

   SRv6 SID: optional, a  Optional.  A 16-octet IPv6 address.  The value 0 MAY be
      used when the controller wants to indicate the desired SRv6
      Endpoint Behavior or SID Structure without specifying the SID.

   *

   SRv6 Endpoint Behavior and SID Structure:  Optional, as defined in
      section
      Section 2.4.4.2.4 of [I-D.ietf-idr-sr-policy-safi]. [RFC9830].  The SRv6 Endpoint Behavior and
      SID Structure MUST NOT be included when the SRv6 SID has not been
      included.

   The

   TLV 10 defined for the advertisement of Segment Type I in the early
   draft versions of [I-D.ietf-idr-sr-policy-safi] [RFC9830] has been deprecated to avoid backward backward-
   compatibility issues.

2.8.  Segment Type J - J: SRv6 END.X SID as an Interface ID

   The Type J Segment Sub-TLV sub-TLV encodes an IPv6 link-local adjacency with
   a local node address, a local interface identifier (Local Interface
   ID), a remote IPv6 node address, a remote interface identifier
   (Remote Interface ID), and an optional SRv6 SID.  The format is as
   follows:

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |   Length      |     Flags     | SR Algorithm  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                 Local Interface ID (4 octets)                 |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   //                IPv6 Local Node Address (16 octets)          //
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                 Remote Interface ID (4 octets)                |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   //                IPv6 Remote Node Address (16 octets)         //
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   //                SRv6 SID (optional, 16 octets)               //
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   //           SRv6 Endpoint Behavior and SID Structure          //
   //                    (optional, 8 octets)                     //
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                      Figure 9: 8: Type J Segment sub-TLV

   where:

   * Sub-TLV

   Where:

   Type:  15

   *

   Length:  Specifies the length of the value field (i.e., not including
      Type and Length fields) in terms of octets.  The value MUST be one of:
      of the following:

      *  66 when both SRv6 SID and SRv6 Endpoint Behavior & and SID
         Structure are present,
      *  58 when only SRv6 SID is present, or
      *  42 when the SRv6 SID is not present.

   *

   Flags:  1 octet of flags as defined in Section 2.10.

   *

   SR Algorithm: 1-octet  1 octet specifying the SR Algorithm as described in
      section
      Section 3.1.1 in of [RFC8402] when the A-Flag as defined in
      Section 2.10 is set.  The SR Algorithm is used by the SRPM
      [I-D.ietf-idr-sr-policy-safi]
      [RFC9830] as described in section Section 4 in of [RFC9256].  When the A-Flag
      is not set, this field MUST be set to zero on transmission and
      MUST be ignored on receipt.

   *

   Local Interface ID:  4 octets of interface index of local interface
      (refer to TLV 258 of [RFC9552]).

   *

   IPv6 Local Node Address: a  A 16-octet IPv6 address representing the
      node.

   *

   Remote Interface ID:  4 octets of interface index of remote interface
      (refer to TLV 258 of [RFC9552]).  The value MAY be set to zero
      when the local node address and interface identifiers are
      sufficient to describe the link.

   *

   IPv6 Remote Node Address: a  A 16-octet IPv6 address.  The value MAY be
      set to zero when the local node address and interface identifiers
      are sufficient to describe the link.

   *

   SRv6 SID: optional, a  Optional.  A 16-octet IPv6 address.  The value 0 MAY be
      used when the controller wants to indicate the desired SRv6
      Endpoint Behavior or SID Structure without specifying the SID.

   *

   SRv6 Endpoint Behavior and SID Structure:  Optional, as defined in
      section
      Section 2.4.4.2.4 of [I-D.ietf-idr-sr-policy-safi]. [RFC9830].  The SRv6 Endpoint Behavior and
      SID Structure MUST NOT be included when the SRv6 SID has not been
      included.

   The

   TLV 11 defined for the advertisement of Segment Type J in the early
   draft versions of [I-D.ietf-idr-sr-policy-safi] [RFC9830] has been deprecated to avoid backward backward-
   compatibility issues.

2.9.  Segment Type K - K: SRv6 END.X SID as an Interface Address

   The Type K Segment Sub-TLV sub-TLV encodes an adjacency local address, an
   adjacency remote address, and an optional SRv6 SID.  The format is as
   follows:

    0                   1                   2                   3
    0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |     Type      |   Length      |     Flags     | SR Algorithm  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   //               Local IPv6 Address (16 octets)                //
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   //               Remote IPv6 Address  (16 octets)              //
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   //                SRv6 SID (optional, 16 octets)               //
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   //           SRv6 Endpoint Behavior and SID Structure          //
   //                    (optional, 8 octets)                     //
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                      Figure 10: 9: Type K Segment sub-TLV

   where:

   * Sub-TLV

   Where:

   Type:  16

   *

   Length:  Specifies the length of the value field (i.e., not including
      Type and Length fields) in terms of octets.  The value MUST be one of:
      of the following:

      *  58 when both SRv6 SID and SRv6 Endpoint Behavior & and SID
         Structure are present,
      *  50 when only SRv6 SID is present, or
      *  34 when the SRv6 SID is not present.

   *

   Flags:  1 octet of flags as defined in Section 2.10.

   *

   SR Algorithm: 1-octet  1 octet specifying the SR Algorithm as described in
      section
      Section 3.1.1 in of [RFC8402] when the A-Flag as defined in
      Section 2.10 is set.  The SR Algorithm is used by the SRPM
      [I-D.ietf-idr-sr-policy-safi]
      [RFC9830] as described in section Section 4 in of [RFC9256].  When the A-Flag
      is not set, this field MUST be set to zero on transmission and
      MUST be ignored on receipt.

   *

   Local IPv6 Address: a  A 16-octet IPv6 address representing the local
      link address of the node.

   *

   Remote IPv6 Address: a  A 16-octet IPv6 address representing the link
      address of the neighbor node.

   *

   SRv6 SID: optional, a  Optional.  A 16-octet IPv6 address.  The value 0 MAY be
      used when the controller wants to indicate the desired SRv6
      Endpoint Behavior or SID Structure without specifying the SID.

   *

   SRv6 Endpoint Behavior and SID Structure:  Optional, as defined in
      section
      Section 2.4.4.2.4 of [I-D.ietf-idr-sr-policy-safi]. [RFC9830].  The SRv6 Endpoint Behavior and
      SID Structure MUST NOT be included when the SRv6 SID has not been
      included.

   The

   TLV 12 defined for the advertisement of Segment Type K in the early
   draft versions of [I-D.ietf-idr-sr-policy-safi] [RFC9830] has been deprecated to avoid backward backward-
   compatibility issues.

2.10.  SR Policy Segment Flags

   The Segment Types Type sub-TLVs described above may contain the following
   SR Policy Segment Flags [I-D.ietf-idr-sr-policy-safi] [RFC9830] in their
   "Flags" field.  Also refer to Flags field (see also
   Section 3.2. 3.2).  This document introduces additional flags as below:

    0 1 2 3 4 5 6 7
   +-+-+-+-+-+-+-+-+
   |V|A|S|B|       |
   +-+-+-+-+-+-+-+-+

                     Figure 11: 10: SR Policy Segment Flags

   where:

   Where:

   V-Flag:  This is an existing flag as defined in [I-D.ietf-idr-sr-policy-safi]. [RFC9830].

   A-Flag: This flag, when  When set, this flag indicates the presence of the SR
      Algorithm id in the "SR Algorithm" SR Algorithm field applicable to various
      Segment Types.  The SR Algorithm is used by the SRPM
      [I-D.ietf-idr-sr-policy-safi] [RFC9830] as
      described in section Section 4 of [RFC9256].

   S-Flag: This flag, when  When set, this flag indicates the presence of the SR-MPLS or
      SRv6 SID depending on the segment type.

   B-Flag:  This is an existing flag as defined in [I-D.ietf-idr-sr-policy-safi]. [RFC9830].

   The following applies to the Segment Flags:

   *  The V-Flag applies to all Segment Types including the ones those introduced
      by this document.

   *  The A-Flag applies to Segment Types C, D, I, J, and K.  The value
      of the A-Flag MUST be ignored for Segment Types A, B, E, F, G, and
      H.

   *  The S-Flag applies to Segment Types C, D, E, F, G, H, I, J, and K.
      The value of the S-Flag MUST be ignored for Segment Types A and B.

   *  The B-Flag applies to Segment Types B, I, J, and K.  The value of
      the B-Flag MUST be ignored for Segment Types A, C, D, E, F, G, and
      H.

3.  IANA Considerations

   This section covers the IANA considerations for this document.

3.1.  SR Policy Segment List Sub-TLVs

   This document requests the allocation of

   IANA has allocated the following code points from the "SR Policy
   Segment List Sub-TLVs" registry
   [I-D.ietf-idr-sr-policy-safi] [RFC9830] under the "BGP "Border Gateway
   Protocol (BGP) Tunnel Encapsulation" registry group.

              +=======+========================+===========+
              | Value | Description            | Reference
           ----------------------------------------------------- |
              +=======+========================+===========+
              | 3     | Segment Type C sub-TLV           This document | RFC 9831  |
              +-------+------------------------+-----------+
              | 4     | Segment Type D sub-TLV           This document | RFC 9831  |
              +-------+------------------------+-----------+
              | 5     | Segment Type E sub-TLV           This document | RFC 9831  |
              +-------+------------------------+-----------+
              | 6     | Segment Type F sub-TLV           This document | RFC 9831  |
              +-------+------------------------+-----------+
              | 7     | Segment Type G sub-TLV           This document | RFC 9831  |
              +-------+------------------------+-----------+
              | 8     | Segment Type H sub-TLV           This document | RFC 9831  |
              +-------+------------------------+-----------+
              | 14    | Segment Type I sub-TLV           This document | RFC 9831  |
              +-------+------------------------+-----------+
              | 15    | Segment Type J sub-TLV           This document | RFC 9831  |
              +-------+------------------------+-----------+
              | 16    | Segment Type K sub-TLV           This document | RFC 9831  |
              +-------+------------------------+-----------+

               Table 1: SR Policy Segment List Code Points

3.2.  SR Policy Segment Flags

   This document requests the allocation of

   IANA has allocated code points from the "SR Policy Segment Flags"
   registry [I-D.ietf-idr-sr-policy-safi] [RFC9830] under the "BGP "Border Gateway Protocol (BGP) Tunnel
   Encapsulation" registry group.

           +=====+=============================+===============+
           | Bit | Description                 | Reference
    ------------------------------------------------------------------     |
           +=====+=============================+===============+
           | 1   | SR Algorithm Flag (A-Flag)  | This document |
           +-----+-----------------------------+---------------+
           | 2   | SID Specified Flag (S-Flag) | This document |
           +-----+-----------------------------+---------------+

                      Table 2: SR Policy Segment Flags

4.  Security Considerations

   The security considerations in [I-D.ietf-idr-sr-policy-safi] [RFC9830] apply to the segment types Segment Types
   defined in this document.  No additional security considerations are introduced in this document.
   introduced.

5.  Manageability Considerations

   The operations and manageability considerations in
   [I-D.ietf-idr-sr-policy-safi] [RFC9830] apply to
   the segment types Segment Types defined in this document.  No additional operations
   and manageability considerations are introduced in this document. introduced.

6.  Acknowledgments

   The authors of this document would like to Dan Romascanu, Stig
   Venaas, and Russ Housley for their comments and review of this
   document.  The authors would like to thank Susan Hares for her
   detailed shepherd review that helped in improving the document.

7.  References

7.1.  Normative References

   [I-D.ietf-idr-sr-policy-safi]
              Previdi, S., Filsfils, C., Talaulikar, K., Mattes, P., and
              D. Jain, "Advertising Segment Routing Policies in BGP",
              Work in Progress, Internet-Draft, draft-ietf-idr-sr-
              policy-safi-13, 6 February 2025,
              <https://datatracker.ietf.org/doc/html/draft-ietf-idr-sr-
              policy-safi-13>.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <https://www.rfc-editor.org/info/rfc2119>.

   [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
              2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
              May 2017, <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,
              July 2018, <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, December 2019,
              <https://www.rfc-editor.org/info/rfc8660>.

   [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, March 2020,
              <https://www.rfc-editor.org/info/rfc8754>.

   [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, February 2021,
              <https://www.rfc-editor.org/info/rfc8986>.

   [RFC9256]  Filsfils, C., Talaulikar, K., Ed., Voyer, D., Bogdanov,
              A., and P. Mattes, "Segment Routing Policy Architecture",
              RFC 9256, DOI 10.17487/RFC9256, July 2022,
              <https://www.rfc-editor.org/info/rfc9256>.

   [RFC9552]  Talaulikar, K., Ed., "Distribution of Link-State and
              Traffic Engineering Information Using BGP", RFC 9552,
              DOI 10.17487/RFC9552, December 2023,
              <https://www.rfc-editor.org/info/rfc9552>.

7.2.  Informational References

   [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, August 2025,
              <https://www.rfc-editor.org/info/rfc9830>.

Acknowledgments

   The authors would like to Dan Romascanu, Stig Venaas, and Russ
   Housley for their comments and review.  The authors would like to
   thank Susan Hares for her detailed shepherd review that helped in
   improving the document.

Authors' Addresses

   Ketan Talaulikar (editor)
   Cisco Systems
   India
   Email: ketant.ietf@gmail.com

   Clarence Filsfils
   Cisco Systems
   Brussels
   Belgium
   Email: cfilsfil@cisco.com

   Stefano Previdi
   Huawei Technologies
   Italy
   Email: stefano@previdi.net

   Paul Mattes
   Microsoft
   One Microsoft Way
   Redmond, WA 98052
   United States of America
   Email: pamattes@microsoft.com

   Dhanendra Jain
   Google
   Email: dhanendra.ietf@gmail.com