<?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-dong-lsr-l2bundle-srv6-03"
     ipr="trust200902">
  <front>
    <title abbrev="IGP L2 bundle for SRv6">Advertising SRv6 SIDs for Layer 2
    Bundle Member Links in IGP</title>

    <author fullname="Jie Dong" initials="J." surname="Dong">
      <organization>Huawei Technologies</organization>

      <address>
        <postal>
          <street>Huawei Campus, No. 156 Beiqing Road</street>

          <city>Beijing</city>

          <code>100095</code>

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

        <email>jie.dong@huawei.com</email>
      </address>
    </author>

    <author fullname="Zhibo Hu" initials="Z." surname="Hu">
      <organization>Huawei Technologies</organization>

      <address>
        <postal>
          <street>Huawei Campus, No. 156 Beiqing Road</street>

          <city>Beijing</city>

          <code>100095</code>

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

        <email>huzhibo@huawei.com</email>
      </address>
    </author>

    <date day="4" month="July" year="2025"/>

    <area>Routing Area</area>

    <workgroup>LSR Working Group</workgroup>

    <abstract>
      <t>There are deployments where the Layer-3 interface on which IGP
      operates is a Layer-2 interface bundle. Existing IGP advertisements only
      support advertising link attributes of the Layer-3 interface. If
      entities external to IGP wish to control traffic flows on the individual
      physical links that comprise the Layer-2 interface bundle, link
      attribute information about the bundle members is advertised by IGP
      extensions for Layer-2 (L2) bundle.</t>

      <t>When Segment Routing over IPv6 (SRv6) is used with Layer-2 interface
      bundle to control traffic flows on the individual member links, the SRv6
      SIDs which represent the Layer 2 member links of the L2 bundle needs to
      be advertised in IGP.</t>

      <t>This document proposes the IGP extensions to advertise the SRv6 SIDs
      of the Layer 2 (L2) bundle member links.</t>
    </abstract>

    <note title="Requirements Language">
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
      "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
      document are to be interpreted as described in <xref
      target="RFC2119">RFC 2119</xref>.</t>
    </note>
  </front>

  <middle>
    <section title="Introduction">
      <t>There are deployments where the Layer-3 interface on which an IGP
      adjacency is established is a Layer-2 interface bundle, for instance, a
      Link Aggregation Group (LAG) <xref target="IEEE802.1AX"/>. This reduces
      the number of adjacencies that need to be maintained by the routing
      protocol in cases where there are parallel links between the neighbors.
      Entities external to IS-IS such as Path Computation Elements (PCEs)
      <xref target="RFC4655"/> may wish to control traffic flows on individual
      members of the underlying Layer-2 bundle. In order to do so, link
      attribute information about individual bundle members is required.</t>

      <t><xref target="RFC8668"/> and <xref target="RFC9356"/> specify the IGP
      extensions to advertise link attribute information for each of the L2
      Bundle members which comprise the Layer-3 interface, in which the
      encoding and advertisement of SR-MPLS adjacency SIDs of each bundle
      member link is defined. When SRv6 is used with Layer-2 interface bundle,
      to control traffic flows on the individual member links, the SRv6 SIDs
      which represent the Layer-2 member links of the L2 bundle needs to be
      advertised.</t>

      <t>This document proposes the IGP extensions to advertise the SRv6 SIDs
      of the L2 bundle member links.</t>
    </section>

    <section 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 BCP14
      <xref target="RFC2119">RFC 2119</xref> <xref target="RFC8174">RFC
      8174</xref> when, and only when, they appear in all capitals, as shown
      here.</t>
    </section>

    <section title="SRv6 SIDs for L2 Bundle Member Links">
      <t>As defined in <xref target="RFC8986"/>, the SRv6 End.X behavior means
      "Endpoint with cross-connect to an array of layer-3 adjacencies". An
      SRv6 SID associated with a Layer 2 bundle member link of an L3 adjacency
      can be considered as an instance of the End.X SID, which identifies a
      subset of the L3 adjacency. Thus separate End.X SID can be allocated for
      each L2 bundle member link.</t>
    </section>

    <section title="Advertising SRv6 SIDs for L2 Bundle Members">
      <section title="SRv6 SIDs Encodings for IS-IS L2 Bundle">
        <t>This section defines the IS-IS sub-TLVs to advertise SRv6 SIDs for
        L2 Bundle Members. Following the encoding mechanism used in <xref
        target="RFC8668"/> for the advertisement of SR-MPLS adj-SIDs for L2
        Bundle Members, this allows the advertisement of a set of SRv6 End.X
        SIDs (one per L2 Bundle Member) in a single sub-TLV.</t>

        <section title="L2 Bundle Member SRv6 End.X SID Sub-TLV">
          <t><xref target="RFC9352"/> defines the SRv6 End.X SID sub-TLV to
          advertise an SRv6 SID associated with a point-to-point adjacency.
          This document defines a new sub-TLV called "L2 Bundle Member SRv6
          End.X SIDs" to advertise the SRv6 End.X SIDs for the L2 Bundle
          Members. This sub-TLV is allowed to be carried in TLV 25 "L2 Bundle
          Member Attributes" only. The format of the sub-TLV is as below:</t>

          <t><figure>
              <artwork><![CDATA[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    |   Algorithm   |    Weight     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
|         Endpoint Behavior     |    
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ SID #1 (128 bits)                                             ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ SID #2 (128 bits)                                             ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ ...                                                           ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ SID #n (128 bits)                                             ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Sub-sub-tlv-len|         Sub-sub-TLVs (variable) . . .         ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
            </figure></t>

          <t>Where:</t>

          <t><list style="symbols">
              <t>Type: TBA.</t>

              <t>Length: Variable.</t>

              <t>Flags: 1 octet. The format is the same as the Flags field in
              the SRv6 End.X SID sub-TLV as defined in <xref
              target="RFC9352"/>.</t>

              <t>Algorithm: 1 octet. The algorithm values are defined in the
              IGP Algorithm Type registry.</t>

              <t>Weight: 1 octet. The value represents the weight of the SID
              for the purpose of load balancing.</t>

              <t>Endpoint Behavior: 2 octets. It SHOULD be set to the value of
              End.X behavior.</t>

              <t>SIDs. One or multiple 16-octet SRv6 SIDs. The number of the
              SIDs is determined by the "Number of L2 Bundle Member
              Descriptors" field as defined in <xref target="RFC8668"/>.</t>

              <t>Sub-sub-tlv-length: 1 octet. Number of octets used by
              sub-sub-TLVs.</t>

              <t>Optional Sub-sub-TLVs: Supported sub-sub-TLVs are specified
              in Section 11.6 of <xref target="RFC9352"/>.</t>
            </list>Multiple L2 Bundle Member SRv6 End.X SID Sub-TLV may be
          required in order to advertise all the SRv6 End.X SIDs associated
          with the member links of an L2 bundle.</t>
        </section>

        <section title="L2 Bundle Member SRv6 LAN End.X SID Sub-TLV">
          <t><xref target="RFC9352"/> defines the SRv6 LAN End.X SID sub-TLV
          to advertise an SRv6 SID associated with a LAN adjacency. This
          document defines a new sub-TLV called "L2 Bundle Member SRv6 LAN
          End.X SIDs" to advertise the SRv6 LAN End.X SIDs for the L2 Bundle
          Members. The format of the sub-TLV is as below:</t>

          <t><figure>
              <artwork><![CDATA[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    |                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               |
|             Neighbor System-ID (ID length octets)             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      Flags    |   Algorithm   |    Weight     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 
|         Endpoint Behavior     |    
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ SID #1 (128 bits)                                             ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ SID #2 (128 bits)                                             ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ ...                                                           ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
~ SID #n (128 bits)                                             ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Sub-sub-tlv-len|         Sub-sub-TLVs (variable) . . .         ~
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
            </figure></t>

          <t>Where:</t>

          <t><list style="symbols">
              <t>Type: TBA.</t>

              <t>Length: Variable.</t>

              <t>Neighbor System-ID: IS-IS System-ID of length "ID Length" as
              defined in <xref target="ISO10589"/>.</t>

              <t>Flags: 1 octet, the format is the same as the Flags field in
              the SRv6 End.X SID sub-TLV as defined in <xref
              target="RFC9352"/>.</t>

              <t>Algorithm: 1 octet. The algorithm values are defined in the
              IGP Algorithm Type registry.</t>

              <t>Weight: 1 octet. The value represents the weight of the End.X
              SID for the purpose of load balancing.</t>

              <t>Endpoint Behavior: 2 octets. It SHOULD be set to the value of
              End.X behavior.</t>

              <t>SIDs. One or multiple 16-octet SRv6 SIDs. The number of the
              SIDs is determined by the "Number of L2 Bundle Member
              Descriptors" field as defined in <xref target="RFC8668"/>.</t>

              <t>Sub-sub-tlv-length: 1 octet. Number of octets used by
              sub-sub-TLVs.</t>

              <t>Optional Sub-sub-TLVs: Supported sub-sub-TLVs are specified
              in Section 11.6 of <xref target="RFC9352"/>.</t>
            </list></t>
        </section>
      </section>

      <section title="SRv6 SIDs Encodings for OSPF L2 Bundle">
        <t>This section describes the mechanism to advertise SRv6 SIDs for L2
        Bundle Members in OSPF. </t>

        <t>For SR-MPLS data plane, as described in <xref target="RFC9356"/>,
        the SR-MPLS Adjacency SID sub-TLVs for the L3 adjacency is used for
        the advertisement of Adjacency SIDs of L2 Bundle Members. And for
        OSPFv3, the L2 Bundle Member Attributes sub-TLV is an optional sub-TLV
        of the Router-Link TLV of the OSPFv3 E-Router-LSA <xref
        target="RFC8362"/>. </t>

        <t>For SRv6 data plane, the SRv6 related sub-TLVs as defined in <xref
        target="RFC9513"/> can be used under the L2 Bundle Member Attributes
        sub-TLV for the advertisement of SRv6 SIDs of the L2 bundle members in
        OSPFv3. Table 1 lists the SRv6 related sub-TLVs that are applicable to
        the Router-Link TLV and their applicability for L2 bundle member
        links. </t>

        <t><figure>
            <artwork><![CDATA[   +=======+=========================================+===============+
   | Value | Description                             | Applicability |
   +=======+=========================================+===============+
   | 31    | SRv6 SID Structure                      |       Y       |
   +-------+-----------------------------------------+---------------+
   | 31    | SRv6 End.X SID                          |       Y       |
   +-------+-----------------------------------------+---------------+
   | 32    | SRv6 LAN End.X SID                      |       Y       |
   +-------+-----------------------------------------+---------------+
 Table 1: Applicability of SRv6 related Sub-TLVs for L2 Bundle Members
]]></artwork>
          </figure></t>
      </section>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>IANA is requested to assign two new code points from the IS-IS
      "Sub-TLVs for TLVs 22, 23, 25, 141, 222, and 223" registry.</t>

      <t><figure>
          <artwork><![CDATA[   +------+--------------------------+----+----+----+-----+-----+-----+
   | Type | Description              | 22 | 23 | 25 | 141 | 222 | 223 |
   +======+==========================+====+====+====+=====+=====+=====+
   |  TBD | L2 Bundle Member SRv6    | n  | n  | y  |  n  |  n  |  n  |
   |      | End.X SID                |    |    |    |     |     |     |                
   +------+--------------------------+----+----+----+-----+-----+-----+
   |  TBD | L2 Bundle Member SRv6    | n  | n  | y  |  n  |  n  |  n  |
   |      | LAN End.X SID            |    |    |    |     |     |     |
   +------+--------------------------+----+----+----+-----+-----+-----+]]></artwork>
        </figure></t>

      <t>In the "OSPFv3 Extended- LSA Sub-TLVs" registry, IANA has already set
      the L2BM flag for the code points 30, 31 and 32 to "Y", per the request
      of <xref target="RFC9513"/>.</t>
    </section>

    <section anchor="Security" title="Security Considerations">
      <t>The security considerations in <xref target="RFC8668"/> and <xref
      target="RFC9356"/> apply. This document introduces no additional
      security vulnerabilities to IS-IS and OSPF.</t>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>The authors would like to thank Zhenbin Li for the review and
      discussion of this document.</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <?rfc include="reference.RFC.2119"?>

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

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

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

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

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

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

      <reference anchor="IEEE802.1AX"
                 target="https://ieeexplore.ieee.org/document/7055197">
        <front>
          <title>IEEE Standard for Local and metropolitan area networks --
          Link Aggregation</title>

          <author>
            <organization>IEEE</organization>
          </author>

          <date year="2016"/>
        </front>
      </reference>

      <reference anchor="ISO10589"
                 target="https://ieeexplore.ieee.org/document/7055197">
        <front>
          <title>Information technology -- Telecommunications and information
          exchange between systems -- Intermediate System to Intermediate
          System intra-domain routing information exchange protocol for use in
          conjunction with the protocol for providing the connectionless-mode
          network service (ISO 8473)</title>

          <author>
            <organization>ISO</organization>
          </author>

          <date month="November" year="2002"/>
        </front>
      </reference>
    </references>

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

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