Advertising SRv6 SIDs for Layer 2 Bundle Member Links in IGP
Jie Dong
Huawei Technologies
Huawei Campus, No. 156 Beiqing Road
Beijing
100095
China
jie.dong@huawei.com
Zhibo Hu
Huawei Technologies
Huawei Campus, No. 156 Beiqing Road
Beijing
100095
China
huzhibo@huawei.com
21 October 2024
Routing Area
LSR Working Group
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.
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.
This document proposes the IGP extensions to advertise the SRv6 SIDs of the Layer 2 (L2) bundle member links.

Requirements Language
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 RFC 2119.

Introduction
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) [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) [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.
[RFC8668] and [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.
This document proposes the IGP extensions to advertise the SRv6 SIDs of the Layer-2 (L2) bundle member links.

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 BCP14 RFC 2119 RFC 8174 when, and only when, they appear in all capitals, as shown here.

SRv6 SIDs for L2 Bundle Member Links
As defined in [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.

Advertising SRv6 SIDs for L2 Bundle Members

SRv6 SIDs Encodings for IS-IS L2 Bundle
This section defines the IS-IS sub-TLVs to advertise SRv6 SIDs for L2 Bundle Members. Following the encoding mechanism used in [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.

L2 Bundle Member SRv6 End.X SID Sub-TLV
[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 of 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:
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) . . .         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Where:
- Type: TBA.
- Length: Variable.
- Flags: 1 octet. The format is the same as the Flags field in the SRv6 End.X SID sub-TLV as defined in [RFC9352].
- Algorithm: 1 octet. The algorithm values are defined in the IGP Algorithm Type registry.
- Weight: 1 octet. The value represents the weight of the SID for the purpose of load balancing.
- Endpoint Behavior: 2 octets. It SHOULD be set to the End.X.
- 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 [RFC8668].
- Sub-sub-tlv-length: 1 octet. Number of octets used by sub-sub-TLVs.
- Optional Sub-sub-TLVs: Supported sub-sub-TLVs are specified in Section 11.6 of [RFC9352].
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.

L2 Bundle Member SRv6 LAN End.X SID Sub-TLV
[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.XU SIDs for the L2 Bundle Members. The format of the sub-TLV is as below:
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) . . .         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Where:
- Type: TBA.
- Length: Variable.
- Neighbor System-ID: IS-IS System-ID of length "ID Length" as defined in [ISO10589].
- Flags: 1 octet, the format is the same as the Flags field in the SRv6 End.X SID sub-TLV as defined in [RFC9352].
- Algorithm: 1 octet. The algorithm values are defined in the IGP Algorithm Type registry.
- Weight: 1 octet. The value represents the weight of the End.X SID for the purpose of load balancing.
- Endpoint Behavior: 2 octets. It SHOULD be set to the End.X function.
- 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 [RFC8668].
- Sub-sub-tlv-length: 1 octet. Number of octets used by sub-sub-TLVs.
- Optional Sub-sub-TLVs: Supported sub-sub-TLVs are specified in Section 11.6 of [RFC9352].

SRv6 SIDs Encodings for OSPF L2 Bundle
This section describes the mechanism to advertise SRv6 SIDs for L2 Bundle Members in OSPF. In [RFC9356], the SR-MPLS Adjacency SID sub-TLVs for the L3 adjacency is reused for the advertisement of Adjacency SIDs of L2 Bundle Members. For SRv6 data plane , the SRv6 End.X SID sub-TLV and SRv6 LAN End.X SID Sub-TLV as defined in [RFC9513] are reused for the advertisement of SRv6 End.X SIDs of the L2 bundle members. Thus in OSPFv3, the L2 Bundle Member Attributes sub-TLV shares the sub-TLVs defined for SRv6 under the E-Router-Link TLV .

IANA Considerations
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.
   +------+--------------------------+----+----+----+-----+-----+-----+
   | 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            |    |    |    |     |     |     |
   +------+--------------------------+----+----+----+-----+-----+-----+
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 [RFC9513].

Security Considerations
The security considerations in [RFC8668] and [RFC9356] apply. This document introduces no additional security vulnerabilities to IS-IS and OSPF.

Acknowledgements
The authors would like to thank Zhenbin Li for the review and discussion of this document.

Normative References
[IEEE802.1AX]

IEEE Standard for Local and metropolitan area networks -- Link Aggregation
IEEE
2016
[ISO10589]

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)
ISO
November 2002

Informative References
[RFC4655]
[RFC8668]
[RFC9356]
[RFC8986]
[RFC9352]
[RFC9513]