RFC 9352

IS-IS Extensions to Support Segment Routing over the IPv6 Data Plane

๐Ÿ“… published February 2023, from ietf

RFC 9352: IS-IS Extensions to Support Segment Routing over the IPv6 Data Plane ๐ŸŽ€

Okay bestie, let's start with the receipts ๐Ÿ“œ. This is RFC 9352, published by the Internet Engineering Task Force (IETF) in February 2023 ๐Ÿ“…. It's a Standards Track doc (so it's the real deal, not a suggestion) with ISSN 2070-1721 โœจ. The editor is P. Psenak, Ed., and the co-authors are C. Filsfils, A. Bashandy, B. Decraene, and Z. Hu ๐Ÿ’…. Psenak, Filsfils, and Bashandy are from Cisco Systems, Decraene is from Orange, and Hu is from Huawei Technologies ๐ŸŒˆ. And the big plot twist is that it updates RFC 7370 ๐Ÿฆ‹, so it changes an existing registry. Iconic, right? ๐Ÿ”ฅ

Abstract โœจ

Segment Routing (SR) is giving flexible routing. You describe the whole end-to-end path as a list of topological elements called "segments" ๐Ÿ—บ๏ธ. It can run over MPLS or the IPv6 data plane, and this doc is all about the IS-IS extensions you need to make SR work over IPv6 ๐Ÿ’œ. It also updates RFC 7370 by changing an existing registry, so keep that in mind ๐Ÿ‘€.

Status of This Memo ๐Ÿ“œ

This is an Internet Standards Track document ๐ŸŽ€.

It's a product of the Internet Engineering Task Force (IETF), so it represents the consensus of the IETF community ๐Ÿซถ. It got public review and was approved for publication by the Internet Engineering Steering Group (IESG) ๐Ÿ‘‘. If you want more info on Internet Standards, check out Section 2 of RFC 7841 ๐ŸŒธ.

Info about the current status of this doc, any errata, and how to give feedback is all at https://www.rfc-editor.org/info/rfc9352 ๐Ÿ”—.

Copyright (c) 2023 IETF Trust and the persons identified as the document authors. All rights reserved โœจ.

This doc is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) as they were in effect on the publication date. Please actually read these, because they spell out your rights and restrictions ๐Ÿ™ˆ. Code components pulled from this doc must include the Revised BSD License text described in Section 4.e of the Trust Legal Provisions, and they come without warranty as described in the Revised BSD License โš–๏ธ.

Table of Contents ๐Ÿงš

1.  Introduction
  1.1.  Requirements Language
2.  SRv6 Capabilities Sub-TLV
3.  Advertising Supported Algorithms
4.  Advertising Maximum SRv6 SID Depths
  4.1.  Maximum Segments Left MSD Type
  4.2.  Maximum End Pop MSD Type
  4.3.  Maximum H.Encaps MSD Type
  4.4.  Maximum End D MSD Type
5.  SRv6 SIDs and Reachability
6.  Advertising Anycast Property
7.  Advertising Locators and End SIDs
  7.1.  SRv6 Locator TLV Format
  7.2.  SRv6 End SID Sub-TLV
8.  Advertising SRv6 Adjacency SIDs
  8.1.  SRv6 End.X SID Sub-TLV
  8.2.  SRv6 LAN End.X SID Sub-TLV
9.  SRv6 SID Structure Sub-Sub-TLV
10. Advertising Endpoint Behaviors
11. IANA Considerations
  11.1.  SRv6 Locator TLV
    11.1.1.  SRv6 End SID Sub-TLV
    11.1.2.  IS-IS Sub-TLVs for TLVs Advertising Prefix
            Reachability Registry
  11.2.  SRv6 Capabilities Sub-TLV
  11.3.  IS-IS Sub-Sub-TLVs for the SRv6 Capabilities Sub-TLV
          Registry
  11.4.  SRv6 End.X SID and SRv6 LAN End.X SID Sub-TLVs
  11.5.  MSD Types
  11.6.  IS-IS Sub-Sub-TLVs for SRv6 SID Sub-TLVs Registry
  11.7.  Prefix Attribute Flags Sub-TLV
  11.8.  IS-IS SRv6 Capabilities Sub-TLV Flags Registry
  11.9.  IS-IS SRv6 Locator TLV Flags Registry
  11.10. IS-IS SRv6 End SID Sub-TLV Flags Registry
  11.11. IS-IS SRv6 Adjacency SID Sub-TLVs Flags Registry
12. Security Considerations
13. References
  13.1.  Normative References
  13.2.  Informative References
Acknowledgements
Contributors
Authors' Addresses

1. Introduction โœจ

Okay, so with Segment Routing (SR) [RFC8402], a node steers a packet through an ordered list of instructions. Those instructions are called segments ๐Ÿง .

Segments are identified through Segment Identifiers (SIDs) ๐Ÿ†”.

SR can be directly instantiated on the IPv6 data plane using the Segment Routing Header (SRH) defined in [RFC8754]. This SR instantiation on IPv6 is called SRv6 ๐Ÿ’œ.

The network programming paradigm [RFC8986] is central to SRv6, and it's honestly the main character here ๐Ÿ‘‘. It explains how any behavior can be bound to a SID, and how any network program can be written as a combo of SIDs ๐Ÿช„.

This doc specifies IS-IS extensions that let IS-IS encode some of these SIDs and their behaviors ๐Ÿฆ‹.

You need to be familiar with the network programming paradigm [RFC8986] to understand the extensions in this doc, so go read that first ๐Ÿ“š.

The new SRv6 Locator top-level TLV announces SRv6 Locators. A Locator is a form of summary address for the set of topology- and algorithm-specific SIDs instantiated at the node ๐ŸŒธ.

The SRv6 Capabilities sub-TLV announces that a node can support SRv6 ๐ŸŽ€.

Several new sub-TLVs are defined to advertise various SRv6 Maximum SID Depths (MSDs) ๐Ÿ“.

The SRv6 End SID sub-TLV, the SRv6 End.X SID sub-TLV, and the SRv6 LAN End.X SID sub-TLV advertise which SIDs are instantiated at a node, and which Endpoint behavior is bound to each one ๐Ÿงš.

This doc updates [RFC7370] by modifying an existing registry (Section 11.1.2) ๐Ÿ”.

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. Only the capitalized versions count, so lowercase is just regular English ๐Ÿ™ƒ.

2. SRv6 Capabilities Sub-TLV ๐ŸŽ€

A node says it supports the SR Segment Endpoint Node functionality from [RFC8754] by advertising a new SRv6 Capabilities sub-TLV inside the Router Capability TLV [RFC7981] ๐Ÿซถ.

The SRv6 Capabilities sub-TLV may contain optional sub-sub-TLVs. No sub-sub-TLVs are defined yet, so it's empty for now ๐ŸŒ™.

The SRv6 Capabilities sub-TLV has the following format ๐Ÿ“:

 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              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   optional sub-sub-TLVs...

Here's the breakdown ๐Ÿ”:

  • Type: 25. It's a single octet, as defined in Section 9 of [ISO10589] ๐Ÿ”ข.
  • Length: It's a single octet, as defined in Section 9 of [ISO10589]. The length value is 2 + length of sub-sub-TLVs ๐Ÿ“.
  • Flags: 2 octets. Here are the flags that are defined ๐Ÿšฉ:
 0                   1
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |O|       Reserved            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • O-flag: If set, the router supports use of the O-bit in the SRH, as defined in [RFC9259] โœ….

The remaining bits, including bit 0, are reserved for future use. They MUST be set to zero on transmission and MUST be ignored on receipt. ๐Ÿšซ Don't mess with the reserved bits, bestie, that's a hard rule โ—.

3. Advertising Supported Algorithms ๐Ÿงฎ

An SRv6-capable router indicates one or more supported algorithms by advertising the Segment Routing Algorithm sub-TLV, as defined in [RFC8667] ๐Ÿ“ฃ.

4. Advertising Maximum SRv6 SID Depths ๐Ÿ“

[RFC8491] defines how to advertise node- and link-specific values for MSDs of various types ๐Ÿงฉ. Node MSDs go in a sub-TLV of the Router Capability TLV [RFC7981]. Link MSDs go in a sub-TLV of TLVs 22, 23, 25, 141, 222, and 223 ๐Ÿ”—.

This doc defines the relevant SRv6 MSDs and requests MSD type assignments in the "IGP MSD-Types" registry that [RFC8491] created ๐Ÿ“.

4.1. Maximum Segments Left MSD Type ๐Ÿฆ‹

The Maximum Segments Left MSD Type signals the maximum value of the "Segments Left" field [RFC8754] in the SRH of a received packet, checked before the Endpoint behavior tied to a SID gets applied ๐Ÿ‘€.

  • SRH Max Segments Left Type: 41
  • If no value is advertised, the supported value is 0 ๐Ÿ™ˆ.

4.2. Maximum End Pop MSD Type ๐ŸŒธ

The Maximum End Pop MSD Type signals the maximum number of SIDs in the SRH to which the router can apply "Penultimate Segment Pop (PSP) of the SRH" or "Ultimate Segment Pop (USP) of the SRH" behavior. These are defined in "Flavors" (Section 4.16 of [RFC8986]) ๐Ÿ’ซ.

  • SRH Max End Pop Type: 42
  • If the advertised value is zero or no value is advertised, then the router cannot apply PSP or USP flavors ๐Ÿšซ.

4.3. Maximum H.Encaps MSD Type ๐ŸŽ

The Maximum H.Encaps MSD Type signals the maximum number of SIDs that can be added to the segment list of an SRH as part of the "H.Encaps" behavior defined in [RFC8986] ๐Ÿ“ฆ.

  • SRH Max H.encaps Type: 44
  • If the advertised value is zero or no value is advertised, then the headend can apply an SR Policy that only contains one segment, without inserting any SRH header ๐Ÿงš.
  • A non-zero SRH Max H.encaps MSD means the headend can insert an SRH with up to the advertised number of SIDs โœจ.

4.4. Maximum End D MSD Type ๐Ÿ’œ

The Maximum End D MSD Type specifies the maximum number of SIDs present in an SRH when performing decapsulation. As specified in [RFC8986], the permitted SID types include, but are not limited to, End.DX6, End.DT4, End.DT46, End with USD, and End.X with USD ๐Ÿ“.

  • SRH Max End D Type: 45
  • If the advertised value is zero or no value is advertised, then the router cannot apply any behavior that results in decapsulation and forwarding of the inner packet when the outer IPv6 header contains an SRH ๐Ÿ›‘.

5. SRv6 SIDs and Reachability โœจ

okay so, as [RFC8986] explains, an SRv6 Segment Identifier (SID) is 128 bits ๐Ÿ’– and it's split into locator, function, and argument parts. the locator is the bit you route on, so it's kind of the main character of the whole thing ๐Ÿ‘‘

a node gets topology-/algorithm-specific locators for each topology/algorithm pair it supports ๐Ÿฆ‹ and every locator is a covering prefix for all the SIDs that node has provisioned with that matching topology/algorithm. so the locator is like the umbrella over its SIDs ๐ŸŒธ

Locators MUST be advertised in the SRv6 Locator TLV (see Section 7.1). ๐Ÿ’… Forwarding entries for the locators in the SRv6 Locator TLV MUST be installed in the forwarding plane of receiving SRv6-capable routers, but only when the receiving node supports the associated topology/algorithm โœจ The prefix in the SRv6 Locator TLV gets handled the same way as a Prefix Reachability TLV 236 [RFC5308] or TLV 237 [RFC5120]: processing it, working out its reachability, and installing it in the forwarding plane all follow that process ๐Ÿงš

locators for algorithms 0 and 1 (across all supported topologies) SHOULD also be advertised in a Prefix Reachability TLV (236 or 237) ๐Ÿซถ that way, legacy routers (aka routers that don't support SRv6) still install a forwarding entry for algorithm 0 and 1 SRv6 traffic. it's giving backwards compatibility ๐ŸŒˆ

now the tricky bit ๐Ÿ™ˆ if the same prefix, with the same prefix length, Multi-Topology Identifier (MTID), and algorithm shows up in both a Prefix Reachability TLV and an SRv6 Locator TLV, the Prefix Reachability advertisement MUST be preferred when installing forwarding entries. the reason is to stop inconsistent forwarding entries between SRv6-capable and SRv6-incapable routers ๐Ÿ˜ญ and that preference doesn't change anything else in the data the SRv6 Locator TLV advertises ๐Ÿ’œ

locators tied to Flexible Algorithms (see Section 4 of [RFC9350]) SHOULD NOT be advertised in Prefix Reachability TLVs (236 or 237) ๐Ÿ“ the reason is that putting a Flexible Algorithm locator in a regular Prefix Reachability TLV would make its forwarding follow the algorithm 0 path, and that's a no from me ๐Ÿ’€

SRv6 SIDs get advertised as sub-TLVs in the SRv6 Locator TLV โœจ the exception is SRv6 SIDs tied to a specific neighbor/link. those ride as sub-TLVs in TLVs 22, 23, 25, 141, 222, and 223 instead ๐ŸŽ€

SRv6 SIDs received from other nodes are not directly routable, so they MUST NOT be installed in the forwarding plane ๐Ÿ™…โ€โ™€๏ธ reachability to an SRv6 SID depends on there being a covering locator, so no locator, no SID ๐Ÿฆ‹

following the rules in this section means SRv6 SIDs for a supported topology/algorithm pair get forwarded correctly, while SRv6 SIDs for an unsupported pair get dropped ๐ŸŒธ NOTE: the drop behavior depends on there being no default/summary route covering a given locator.

heads up bestie: that NOTE is a big deal ๐Ÿ‘€

for forwarding to work correctly, the locator tied to the SRv6 SID advertisement has to be the longest match prefix installed in the forwarding plane for those SIDs ๐Ÿง  so network operators should take steps to make sure that stays true. the situations to avoid are:

  • Another locator associated with a different topology/algorithm is the longest match.
  • Another prefix advertisement (i.e., from TLV 236 or 237) is the longest match.

6. Advertising Anycast Property ๐Ÿฆ‹

both prefixes and SRv6 Locators may be configured as anycast ๐ŸŒˆ which means the same value can be advertised by multiple routers at once. it's really useful for other routers to know that an advertisement is for an anycast identifier, so there's a whole flag for that ๐Ÿ’…

a new flag in the Prefix Attribute Flags sub-TLV [RFC7794] is defined to advertise the anycast property โœจ

Bit #:  4
Name:  Anycast Flag (A-flag)

when the prefix/SRv6 Locator is configured as anycast, the A-flag SHOULD be set ๐Ÿซถ otherwise, this flag MUST be clear ๐Ÿ™…โ€โ™€๏ธ

the A-flag MUST be preserved when the advertisement is leaked between levels ๐Ÿงš

the A-flag and the N-flag MUST NOT both be set ๐Ÿ™ˆ and if both the N-flag and the A-flag do end up set in a prefix/SRv6 Locator advertisement, the receiving routers MUST ignore the N-flag. A-flag wins, periodt ๐Ÿ‘‘

the same prefix/SRv6 Locator can be advertised by multiple routers ๐Ÿ“ if at least one of them sets the A-flag in its advertisement, the prefix/SRv6 Locator SHOULD be considered anycast ๐ŸŒธ

a prefix/SRv6 Locator that's advertised by a single node and has no A-flag MUST be considered node specific ๐Ÿงธ

all the nodes advertising the same anycast locator MUST instantiate the exact same set of SIDs under that anycast locator ๐Ÿ˜ญ failing to do that may result in traffic getting dropped or misrouted, so please don't skip this one ๐Ÿ’€

the Prefix Attribute Flags sub-TLV can be carried in the SRv6 Locator TLV as well as the Prefix Reachability TLVs ๐ŸŒˆ when a router originates both a Prefix Reachability TLV and an SRv6 Locator TLV for the same prefix, it SHOULD advertise the Prefix Attribute Flags sub-TLV (if it's used) in both TLVs and use the same flags ๐Ÿ’– here's the twist though: unlike TLVs 236 [RFC5308] and 237 [RFC5120], the X-flag in the Prefix Attributes Flags sub-TLV IS valid when it's sent in the SRv6 Locator TLV ๐Ÿฆ‹ when it's included in the Locator TLV, the state of the X-flag MUST match the setting of the embedded "X-bit" in any advertisement for the same prefix in TLVs 236 [RFC5308] and 237 [RFC5120] ๐Ÿ™ˆ and if the Prefix Attribute Flags in the Locator TLV and in the Prefix Reachability TLV ever disagree, the ones in the Prefix Reachability TLV MUST be preferred ๐Ÿ‘‘


7. Advertising Locators and End SIDs ๐Ÿ’–

the SRv6 Locator TLV is introduced to advertise SRv6 Locators and the End SIDs associated with each locator ๐Ÿงš

this new TLV shares the sub-TLV space defined for TLVs 135, 235, 236, and 237 ๐ŸŒธ

7.1. SRv6 Locator TLV Format ๐ŸŽ€

the SRv6 Locator TLV looks like this ๐Ÿ‘€

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    |R|R|R|R|    MTID               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                   Locator Entries . . .                       |
  • Type: 27. Single octet, as defined in Section 9 of [ISO10589].
  • Length: Single octet, as defined in Section 9 of [ISO10589]. The length value is variable.
  • R Bits: Reserved for future use. They MUST be set to zero on transmission and MUST be ignored on receipt. ๐Ÿ™…โ€โ™€๏ธ
  • MTID: Multi-Topology Identifier, as defined in [RFC5120]. Note that the value 0 is legal. ๐Ÿ’…

the SRv6 Locator TLV is followed by one or more locator entries, shaped like this โœจ

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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          Metric                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Flags       |  Algorithm    |  Loc Size     |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
//              Locator (continued, variable)                  //
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|  Sub-TLV-len  |         Sub-TLVs (variable) . . .             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  • Metric: 4 octets, as described in Section 4 of [RFC5305]. ๐Ÿ“
  • Flags: 1 octet. The following flags are defined:
0
0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+
|D|    Reserved |
+-+-+-+-+-+-+-+-+
  • D-flag: "up/down bit" as described in Section 4.1 of [RFC5305].
  • The remaining bits are reserved for future use. They MUST be set to zero on transmission and MUST be ignored on receipt. ๐ŸŒธ
  • Algorithm: 1 octet, as defined in the "IGP Algorithm Types" registry [RFC8665]. ๐Ÿง 
  • Loc-Size: 1 octet. Number of bits in the SRv6 Locator field, which MUST be from the range (1-128). The entire TLV MUST be ignored if the Loc-Size is outside this range. ๐Ÿ™ˆ
  • Locator: 1-16 octets. This field encodes the advertised SRv6 Locator. The SRv6 Locator is encoded in the minimal number of octets for the given number of bits. Trailing bits MUST be set to zero and ignored when received. ๐Ÿฆ‹
  • Sub-TLV-length: 1 octet. Number of octets used by sub-TLVs. ๐Ÿงธ
  • Optional Sub-TLVs: Supported sub-TLVs are specified in Section 11.1.2. Any sub-TLV that is not allowed in the SRv6 Locator TLV MUST be ignored. ๐Ÿ’…

the Prefix Attribute Flags sub-TLV [RFC7794] SHOULD be included in the Locator TLV ๐Ÿซถ

the Prefix Attribute Flags sub-TLV MUST be included in the Locator TLV when it's leaked upwards in the hierarchy, or when it's originated as a result of redistribution from another protocol or another IS-IS instance ๐Ÿ˜ญ if it's not included in these cases, receivers won't be able to work out the correct source of the advertisement. and they won't be able to detect the violation either ๐Ÿ’€

7.2. SRv6 End SID Sub-TLV โœจ

Okay bestie, the SRv6 End SID sub-TLV exists to advertise SRv6 SIDs with Endpoint behaviors that don't need a particular neighbor to work properly ๐Ÿ’…. SRv6 SIDs tied to a neighbor get advertised with the sub-TLVs in Section 8 instead ๐Ÿฆ‹.

Supported behavior values, plus the parent TLVs they show up in, are listed in Section 10 of this document ๐ŸŒธ. Heads up, though: not every behavior from [RFC8986] is defined here. End.T, for example, is not ๐Ÿ’€.

This new sub-TLV lives inside the SRv6 Locator TLV from the previous section ๐Ÿงš. SRv6 End SIDs inherit the topology/algorithm from their parent locator, so they're giving family vibes โœจ.

The SRv6 End SID sub-TLV has the following format:

 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      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|       Endpoint Behavior       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SID (128 bits) . . .                                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SID (cont . . .)                                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SID (cont . . .)                                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SID (cont . . .)                                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Sub-sub-TLV-len|         Sub-sub-TLVs (variable) . . .         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type: 5. Single octet, as defined in Section 9 of [ISO10589].

Length: Single octet, as defined in Section 9 of [ISO10589]. The length value is variable.

Flags: 1 octet. No flags are currently defined. All bits are reserved for future use. They MUST be set to zero on transmission and MUST be ignored on receipt ๐Ÿ™ˆ.

Endpoint Behavior: 2 octets, as defined in [RFC8986]. Supported behavior values for this sub-TLV are defined in Section 10 of this document. Unsupported or unrecognized behavior values are ignored by the receiver.

SID: 16 octets. This field encodes the advertised SRv6 SID.

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. Any sub-sub-TLV that is not allowed in the SRv6 End SID sub-TLV MUST be ignored.

The SRv6 End SID MUST be allocated from its associated locator. SRv6 End SIDs that are not allocated from the associated locator MUST be ignored. Don't skip this one, bestie ๐Ÿšจ

Multiple SRv6 End SIDs MAY be associated with the same locator ๐Ÿ“. In cases where the number of SRv6 End SID sub-TLVs exceeds the capacity of a single TLV, multiple Locator TLVs for the same locator MAY be advertised ๐Ÿงƒ. For a given MTID/Locator, the algorithm MUST be the same in all TLVs. If this restriction is not met, all TLVs for that MTID/Locator MUST be ignored ๐Ÿ˜ญ.


8. Advertising SRv6 Adjacency SIDs โœจ

Certain SRv6 Endpoint behaviors [RFC8986] are associated with a particular adjacency ๐Ÿ”ฅ.

This document defines two new sub-TLVs of TLVs 22, 23, 25, 141, 222, and 223 -- namely "SRv6 End.X SID sub-TLVs" and "SRv6 LAN End.X SID sub-TLVs" ๐ŸŒˆ.

IS-IS neighbor advertisements are topology specific but not algorithm specific. SIDs advertised in SRv6 End.X SID and SRv6 LAN End.X SID sub-TLVs therefore inherit the topology from the associated neighbor advertisement, but the algorithm is specified in the individual SID ๐ŸŽ€.

All SIDs advertised in SRv6 End.X SID and SRv6 LAN End.X SID sub-TLVs MUST be a subnet of a Locator with matching topology and algorithm that are advertised by the same node in an SRv6 Locator TLV. SIDs that do not meet this requirement MUST be ignored. This ensures that the node advertising these SIDs is also advertising its corresponding Locator with the algorithm that will be used for computing paths destined to the SID ๐Ÿ‘‘.

8.1. SRv6 End.X SID Sub-TLV

This sub-TLV is used to advertise an SRv6 SID associated with a point-to-point adjacency. Multiple SRv6 End.X SID sub-TLVs MAY be associated with the same adjacency ๐Ÿฆ‹.

The SRv6 End.X SID sub-TLV has the following format:

 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 (128 bits) . . .                                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SID (cont . . .)                                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SID (cont . . .)                                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SID (cont . . .)                                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Sub-sub-tlv-len|         Sub-sub-TLVs (variable) . . .         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type: 43. Single octet, as defined in Section 9 of [ISO10589].

Length: Single octet, as defined in Section 9 of [ISO10589]. The length value is variable.

Flags: 1 octet.

 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+
|B|S|P|Reserved |
+-+-+-+-+-+-+-+-+

where:

  • B-Flag: Backup flag. If set, the SID is eligible for protection, e.g., using IP Fast Reroute (IPFRR) [RFC5286], as described in [RFC8355] ๐Ÿ›ก๏ธ.
  • S-Flag: Set flag. When set, the S-flag indicates that the SID refers to a set of adjacencies (and therefore MAY be assigned to other adjacencies as well) ๐Ÿงฉ.
  • P-Flag: Persistent flag. When set, the P-flag indicates that the SID is persistently allocated, i.e., the SID value remains consistent across router restart and/or interface flap ๐Ÿ’œ.
  • Reserved bits: Reserved bits MUST be zero when originated and MUST be ignored when received ๐Ÿ™ˆ.

Algorithm: 1 octet, as defined in the "IGP Algorithm Types" registry [RFC8665].

Weight: 1 octet. The value represents the weight of the SID for the purpose of load balancing. The use of the weight is defined in [RFC8402] โš–๏ธ.

Endpoint Behavior: 2 octets, as defined in [RFC8986]. Supported behavior values for this sub-TLV are defined in Section 10 of this document. Unsupported or unrecognized behavior values are ignored by the receiver.

SID: 16 octets. This field encodes the advertised SRv6 SID.

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. Any sub-sub-TLV that is not allowed in SRv6 End.X SID sub-TLV MUST be ignored.

Note that multiple TLVs for the same neighbor may be required in order to advertise all the SRv6 SIDs associated with that neighbor ๐Ÿซถ.

8.2. SRv6 LAN End.X SID Sub-TLV

This sub-TLV is used to advertise an SRv6 SID associated with a LAN adjacency. Since the parent TLV is advertising an adjacency to the Designated Intermediate System (DIS) for the LAN, it is necessary to include the System-ID of the physical neighbor on the LAN with which the SRv6 SID is associated ๐ŸŒธ. Given that many neighbors may exist on a given LAN, multiple SRv6 LAN END.X SID sub-TLVs may be associated with the same LAN. Note that multiple TLVs for the same DIS neighbor may be required in order to advertise all the SRv6 SIDs associated with that neighbor โœจ.

The SRv6 LAN End.X SID sub-TLV has the following format:

 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 (128 bits) . . .                                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SID (cont . . .)                                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SID (cont . . .)                                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SID (cont . . .)                                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Sub-sub-TLV-len|      Sub-sub-TLVs (variable) . . .            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Type: 44. Single octet, as defined in Section 9 of [ISO10589].

Length: Single octet, as defined in Section 9 of [ISO10589]. The length value is variable.

Neighbor System-ID: IS-IS System-ID of length "ID Length", as defined in [ISO10589] ๐Ÿ†”.

Flags: 1 octet.

 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+
|B|S|P|Reserved |
+-+-+-+-+-+-+-+-+

The B-, S-, and P-flags are as described in Section 8.1. Reserved bits MUST be zero when originated and MUST be ignored when received.

Algorithm: 1 octet, as defined in the "IGP Algorithm Types" registry [RFC8665].

Weight: 1 octet. The value represents the weight of the SID for the purpose of load balancing. The use of the weight is defined in [RFC8402] โš–๏ธ.

Endpoint Behavior: 2 octets, as defined in [RFC8986]. Supported behavior values for this sub-TLV are defined in Section 10 of this document. Unsupported or unrecognized behavior values are ignored by the receiver.

SID: 16 octets. This field encodes the advertised SRv6 SID.

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. Any sub-sub-TLV that is not allowed in SRv6 LAN End.X SID sub-TLV MUST be ignored.

Note that multiple TLVs for the same neighbor, on the same LAN, may be required in order to advertise all the SRv6 SIDs associated with that neighbor ๐Ÿ’…๐ŸŒˆ

9. SRv6 SID Structure Sub-Sub-TLV โœจ

okay bestie, this one is the SRv6 SID Structure sub-sub-TLV ๐ŸŽ€ It's an optional sub-sub-TLV that can show up inside any of these:

  • SRv6 End SID sub-TLV (Section 7.2)
  • SRv6 End.X SID sub-TLV (Section 8.1)
  • SRv6 LAN End.X SID sub-TLV (Section 8.2)

Its whole purpose is to advertise the structure of the SRv6 SID, as defined in [RFC8986] ๐Ÿ’… Here's the format:

    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     |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |    LB Length  |  LN Length    | Fun. Length   |  Arg. Length  |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Here's what each field means:

  • Type: 1. Single octet, as defined in Section 9 of [ISO10589].
  • Length: Single octet, as defined in Section 9 of [ISO10589]. The length value is 4 octets.
  • LB Length: 1 octet. SRv6 SID Locator Block length in bits.
  • LN Length: 1 octet. SRv6 SID Locator Node length in bits.
  • Fun. Length: 1 octet. SRv6 SID Function length in bits.
  • Arg. Length: 1 octet. SRv6 SID Arguments length in bits.

Now the rules, and they're strict ๐Ÿซถ The IS-IS SRv6 SID Structure sub-sub-TLV MUST NOT appear more than once in its parent sub-TLV. If it does show up more than once, the parent sub-TLV MUST be ignored by the receiver. ๐Ÿ™ˆ

The sum of all four sizes advertised in the IS-IS SRv6 SID Structure sub-sub-TLV MUST be less than or equal to 128 bits. If that sum is larger than 128 bits, the parent sub-TLV MUST be ignored by the receiver. No overflowing allowed, periodt ๐Ÿ’€

This sub-sub-TLV is meant for informational use by the control and management planes ๐Ÿงš It MUST NOT be used at a transit node (as defined in [RFC8754]) for forwarding packets. Like, it's info, not a forwarding instruction, so don't go using it that way ๐Ÿ˜ญ

Some examples of what it could be used for:

  • validation of SRv6 SIDs being instantiated in the network and advertised via IS-IS. These can be learned by controllers via Border Gateway Protocol - Link State (BGP-LS) and then be monitored for conformance to the SRv6 SID allocation scheme chosen by the operator, as described in Section 3.2 of [RFC8986].
  • verification and automation for securing the SRv6 domain by provisioning filtering rules at SR domain boundaries, as described in Section 5 of [RFC8754].

The details of these potential applications are outside the scope of this document. Those are a whole other conversation, bestie ๐ŸŒธ


10. Advertising Endpoint Behaviors

okay so endpoint behaviors are defined in [RFC8986] ๐Ÿฆ‹ The codepoints for them live in the "SRv6 Endpoint Behaviors" registry, which is also defined in [RFC8986]. If a behavior is advertised, it MUST only be advertised in the TLV(s) marked with "Y" in the table below, and it MUST NOT be advertised in the TLV(s) marked with "N" in the table below. Read the table like a guest list ๐Ÿ’…

  +===================+===================+=====+=======+===========+
  | Endpoint Behavior | Endpoint Behavior | End | End.X | Lan End.X |
  |                   | Codepoint         | SID | SID   | SID       |
  +===================+===================+=====+=======+===========+
  | End (PSP, USP,    | 1-4, 28-31        | Y   | N     | N         |
  | USD)              |                   |     |       |           |
  +-------------------+-------------------+-----+-------+-----------+
  | End.X (PSP, USP,  | 5-8, 32-35        | N   | Y     | Y         |
  | USD)              |                   |     |       |           |
  +-------------------+-------------------+-----+-------+-----------+
  | End.DX6           | 16                | N   | Y     | Y         |
  +-------------------+-------------------+-----+-------+-----------+
  | End.DX4           | 17                | N   | Y     | Y         |
  +-------------------+-------------------+-----+-------+-----------+
  | End.DT6           | 18                | Y   | N     | N         |
  +-------------------+-------------------+-----+-------+-----------+
  | End.DT4           | 19                | Y   | N     | N         |
  +-------------------+-------------------+-----+-------+-----------+
  | End.DT46          | 20                | Y   | N     | N         |
  +-------------------+-------------------+-----+-------+-----------+

                      Table 1: Endpoint Behaviors

11. IANA Considerations ๐ŸŒˆ

This document requests allocation for the following TLVs, sub-TLVs, and sub-sub-TLVs by updating the existing registries and defining new registries under the "IS-IS TLV Codepoints" grouping. So IANA gets a little to-do list ๐Ÿ“

11.1. SRv6 Locator TLV

The SRv6 Locator TLV shares sub-TLV space with TLVs advertising prefix reachability. IANA has updated the "IS-IS Sub-TLVs for TLVs Advertising Prefix Reachability" registry, initially defined in [RFC7370], by adding this document as a reference and updating the description of that registry to include the SRv6 Locator TLV (27). Very organized ๐Ÿ—‚๏ธ

This document makes the following registration in the "IS-IS Top-Level TLV Codepoints" registry:

          +=======+==============+=====+=====+=====+=======+
          | Value | Name         | IIH | LSP | SNP | Purge |
          +=======+==============+=====+=====+=====+=======+
          | 27    | SRv6 Locator | n   | y   | n   | n     |
          +-------+--------------+-----+-----+-----+-------+

           Table 2: IS-IS Top-Level TLV Codepoints Registry

11.1.1. SRv6 End SID Sub-TLV

This document makes the following registration:

  +======+==============+====+=====+=====+=====+=====+=============+
  | Type | Description  | 27 | 135 | 235 | 236 | 237 | Reference   |
  +======+==============+====+=====+=====+=====+=====+=============+
  | 5    | SRv6 End SID | y  | n   | n   | n   | n   | RFC 9352,   |
  |      |              |    |     |     |     |     | Section 7.2 |
  +------+--------------+----+-----+-----+-----+-----+-------------+

         Table 3: IS-IS Sub-TLVs for TLVs Advertising Prefix
                        Reachability Registry

11.1.2. IS-IS Sub-TLVs for TLVs Advertising Prefix Reachability Registry

IANA has updated the "IS-IS Sub-TLVs for TLVs Advertising Prefix Reachability" registry to include a column for the SRv6 Locator TLV (27), as shown below. The registry glow-up is real โœจ

     +======+=======================+====+=====+=====+=====+=====+
     | Type | Description           | 27 | 135 | 235 | 236 | 237 |
     +======+=======================+====+=====+=====+=====+=====+
     | 1    | 32-bit Administrative | y  | y   | y   | y   | y   |
     |      | Tag Sub-TLV           |    |     |     |     |     |
     +------+-----------------------+----+-----+-----+-----+-----+
     | 2    | 64-bit Administrative | y  | y   | y   | y   | y   |
     |      | Tag Sub-TLV           |    |     |     |     |     |
     +------+-----------------------+----+-----+-----+-----+-----+
     | 3    | Prefix Segment        | n  | y   | y   | y   | y   |
     |      | Identifier            |    |     |     |     |     |
     +------+-----------------------+----+-----+-----+-----+-----+
     | 4    | Prefix Attribute      | y  | y   | y   | y   | y   |
     |      | Flags                 |    |     |     |     |     |
     +------+-----------------------+----+-----+-----+-----+-----+
     | 6    | Flexible Algorithm    | n  | y   | y   | y   | y   |
     |      | Prefix Metric (FAPM)  |    |     |     |     |     |
     +------+-----------------------+----+-----+-----+-----+-----+
     | 11   | IPv4 Source Router ID | y  | y   | y   | y   | y   |
     +------+-----------------------+----+-----+-----+-----+-----+
     | 12   | IPv6 Source Router ID | y  | y   | y   | y   | y   |
     +------+-----------------------+----+-----+-----+-----+-----+
     | 32   | BIER Info             | n  | y   | y   | y   | y   |
     +------+-----------------------+----+-----+-----+-----+-----+

          Table 4: IS-IS Sub-TLVs for TLVs Advertising Prefix
                         Reachability Registry

11.2. SRv6 Capabilities Sub-TLV

This document makes the following registration in the "IS-IS Sub-TLVs for IS-IS Router CAPABILITY TLV" registry:

          +=======+===================+=====================+
          | Value | Description       | Reference           |
          +=======+===================+=====================+
          | 25    | SRv6 Capabilities | RFC 9352, Section 2 |
          +-------+-------------------+---------------------+

                Table 5: IS-IS Sub-TLVs for IS-IS Router
                        CAPABILITY TLV Registry

11.3. IS-IS Sub-Sub-TLVs for the SRv6 Capabilities Sub-TLV Registry

IANA has created the "IS-IS Sub-Sub-TLVs for SRv6 Capabilities Sub-TLV" registry under the "IS-IS TLV Codepoints" grouping for the assignment of sub-TLV types for the SRv6 Capabilities sub-TLV specified in this document (Section 2). This registry defines sub-sub-TLVs for the SRv6 Capabilities sub-TLV (25) advertised in the IS-IS Router CAPABILITY TLV (242).

The registration procedure is "Expert Review", as defined in [RFC8126]. Guidance for the designated experts is provided in [RFC7370]. No sub-sub-TLVs are defined by this document, except for the reserved type 0. Just the reserved one, bestie ๐Ÿ™ƒ

                  +=======+=============+===========+
                  | Value | Description | Reference |
                  +=======+=============+===========+
                  | 0     | Reserved    | RFC 9532  |
                  +-------+-------------+-----------+
                  | 1-255 | Unassigned  |           |
                  +-------+-------------+-----------+

                    Table 6: IS-IS Sub-Sub-TLVs for
                       SRv6 Capabilities Sub-TLV
                                Registry

11.4. SRv6 End.X SID and SRv6 LAN End.X SID Sub-TLVs

This document makes the following registrations in the "IS-IS Sub-TLVs for TLVs Advertising Neighbor Information" registry:

 +======+=============+====+====+====+=====+=====+=====+=============+
 | Type | Description | 22 | 23 | 25 | 141 | 222 | 223 | Reference   |
 +======+=============+====+====+====+=====+=====+=====+=============+
 | 43   | SRv6 End.X  | y  | y  | y  | y   | y   | y   | RFC 9352,   |
 |      | SID         |    |    |    |     |     |     | Section     |
 |      |             |    |    |    |     |     |     | 8.1         |
 +------+-------------+----+----+----+-----+-----+-----+-------------+
 | 44   | SRv6 LAN    | y  | y  | y  | y   | y   | y   | RFC 9352,   |
 |      | End.X SID   |    |    |    |     |     |     | Section     |
 |      |             |    |    |    |     |     |     | 8.2         |
 +------+-------------+----+----+----+-----+-----+-----+-------------+

   Table 7: IS-IS Sub-TLVs for TLVs Advertising Neighbor Information
                                Registry

11.5. MSD Types

This document makes the following registrations in the "IGP MSD-Types" registry:

               +=======+==================+===========+
               | Value | Name             | Reference |
               +=======+==================+===========+
               | 41    | SRH Max SL       | RFC 9352  |
               +-------+------------------+-----------+
               | 42    | SRH Max End Pop  | RFC 9352  |
               +-------+------------------+-----------+
               | 44    | SRH Max H.encaps | RFC 9352  |
               +-------+------------------+-----------+
               | 45    | SRH Max End D    | RFC 9352  |
               +-------+------------------+-----------+

                        Table 8: IGP MSD-Types

11.6. IS-IS Sub-Sub-TLVs for SRv6 SID Sub-TLVs Registry ๐ŸŽ€

okay bestie, IANA made a registry called "IS-IS Sub-Sub-TLVs for SRv6 SID Sub-TLVs" under the "IS-IS TLV Codepoints" grouping โœจ its whole job is handing out sub-TLV types for the SID sub-TLVs in this doc (Sections 7.2, 8.1, and 8.2) ๐Ÿ’…

this registry is for sub-sub-TLVs that live inside SRv6 SID sub-TLVs. it covers:

  • SRv6 End SID (5) (advertised in SRv6 Locator TLV (27))
  • SRv6 End.X SID (43) (advertised in TLVs advertising neighbor information)
  • SRv6 LAN End.X SID (44) (advertised in TLVs advertising neighbor information)

registration is "Expert Review" as defined in [RFC8126], and the guidance for the designated experts lives in [RFC7370] ๐Ÿงš the assignments this doc makes are:

      +=======+====================+===+====+====+===========+
      | Type  | Description        | 5 | 43 | 44 | Reference |
      +=======+====================+===+====+====+===========+
      | 0     | Reserved           |   |    |    | RFC 9352  |
      +-------+--------------------+---+----+----+-----------+
      | 1     | SRv6 SID Structure | y | y  | y  | RFC 9352  |
      +-------+--------------------+---+----+----+-----------+
      | 2-255 | Unassigned         |   |    |    |           |
      +-------+--------------------+---+----+----+-----------+

         Table 9: IS-IS Sub-Sub-TLVs for SRv6 SID Sub-TLVs
                              Registry

11.7. Prefix Attribute Flags Sub-TLV ๐Ÿฆ‹

this doc adds one new bit to the "IS-IS Bit Values for Prefix Attribute Flags Sub-TLV" registry, and it's the Anycast Flag (A-flag) ๐ŸŒธ

       +=======+=======================+=====================+
       | Bit # | Name                  | Reference           |
       +=======+=======================+=====================+
       | 4     | Anycast Flag (A-flag) | RFC 9352, Section 6 |
       +-------+-----------------------+---------------------+

           Table 10: IS-IS Bit Values for Prefix Attribute
                        Flags Sub-TLV Registry

11.8. IS-IS SRv6 Capabilities Sub-TLV Flags Registry ๐ŸŒˆ

IANA created the "IS-IS SRv6 Capabilities Sub-TLV Flags" registry under the "IS-IS TLV Codepoints" grouping to assign bits 0 to 15 in the Flags field of the IS-IS SRv6 Capabilities sub-TLV specified in this document (Section 2) ๐Ÿ“ this registry defines the bit values advertised in the Flags field of the SRv6 Capabilities sub-TLV (25), and that sub-TLV gets advertised in the IS-IS Router CAPABILITY TLV (242) ๐Ÿ‘‘

registration is "Expert Review" as defined in [RFC8126], with guidance for the designated experts in [RFC7370]. the assignments made by this document:

            +======+=============+=====================+
            | Type | Description | Reference           |
            +======+=============+=====================+
            | 0    | Unassigned  |                     |
            +------+-------------+---------------------+
            | 1    | O-flag      | RFC 9352, Section 2 |
            +------+-------------+---------------------+
            | 2-15 | Unassigned  |                     |
            +------+-------------+---------------------+

               Table 11: IS-IS SRv6 Capabilities Sub-
                         TLV Flags Registry

11.9. IS-IS SRv6 Locator TLV Flags Registry ๐Ÿ’œ

IANA created the "IS-IS SRv6 Locator TLV Flags" registry under the "IS-IS TLV Codepoints" grouping to assign bits 0 to 7 in the Flags field of the SRv6 Locator TLV specified in this document (Section 7.1). this registry defines the bit values advertised in the Flags field of the SRv6 Locator TLV (27) โญ

registration is "Expert Review" per [RFC8126], and [RFC7370] has the designated expert guidance. the assignments this doc makes:

           +=======+=============+=======================+
           | Value | Description | Reference             |
           +=======+=============+=======================+
           | 0     | D-flag      | RFC 9352, Section 7.1 |
           +-------+-------------+-----------------------+
           | 1-7   | Unassigned  |                       |
           +-------+-------------+-----------------------+

           Table 12: IS-IS SRv6 Locator TLV Flags Registry

11.10. IS-IS SRv6 End SID Sub-TLV Flags Registry ๐Ÿซถ

IANA created the "IS-IS SRv6 End SID Sub-TLV Flags" registry under the "IS-IS TLV Codepoints" grouping to assign bits 0 to 7 in the Flags field of the IS-IS SRv6 End SID sub-TLV specified in this document (Section 7.2). this registry defines the bit values advertised in the Flags field of the SRv6 End SID sub-TLV (5), which gets advertised in the SRv6 Locator TLV (27) ๐Ÿ”ฅ

registration is "Expert Review" per [RFC8126], with guidance from [RFC7370]. no assignments are made by this document, so it's all unassigned for now ๐Ÿ™ˆ

                       +=======+=============+
                       | Value | Description |
                       +=======+=============+
                       | 0-7   | Unassigned  |
                       +-------+-------------+

                         Table 13: IS-IS SRv6
                        End SID Sub-TLV Flags
                               Registry

11.11. IS-IS SRv6 Adjacency SID Sub-TLVs Flags Registry ๐Ÿฆ‹

IANA created the "IS-IS SRv6 Adjacency SID Sub-TLVs Flags" registry under the "IS-IS TLV Codepoints" grouping to assign bits 0 to 7 in the Flags field of the IS-IS SRv6 End.X SID and LAN End.X SID sub-TLVs (Sections 8.1 and 8.2) ๐ŸŽ€

this registry defines the bit values advertised in the Flags field of SRv6 SID sub-TLVs associated with adjacencies. those sub-TLVs get advertised in TLVs advertising neighbor information, and the list includes:

  • SRv6 End.X SID (43)
  • SRv6 LAN End.X SID (44)

registration is "Expert Review" per [RFC8126], with guidance from [RFC7370]. the assignments this doc makes:

           +=======+=============+=======================+
           | Value | Description | Reference             |
           +=======+=============+=======================+
           | 0     | B-flag      | RFC 9352, Section 8.1 |
           +-------+-------------+-----------------------+
           | 1     | S-flag      | RFC 9352, Section 8.1 |
           +-------+-------------+-----------------------+
           | 2     | P-flag      | RFC 9352, Section 8.1 |
           +-------+-------------+-----------------------+
           | 3-7   | Unassigned  |                       |
           +-------+-------------+-----------------------+

            Table 14: IS-IS SRv6 Adjacency SID Sub-TLVs
                           Flags Registry

12. Security Considerations ๐Ÿ”

okay this section is serious, so let's be real ๐Ÿ˜ญ security concerns for IS-IS are covered in [ISO10589], [RFC5304], and [RFC5310]. IS-IS usually runs under one administrative domain, but there can be deployments where potential attackers can reach one or more networks in the IS-IS routing domain. in those deployments, the stronger authentication mechanisms from the docs above SHOULD be used ๐Ÿ›ก๏ธ

this document describes the IS-IS extensions needed to support SR over an IPv6 data plane ๐Ÿ’– the security considerations for SR are discussed in [RFC8402]. [RFC8986] defines the SRv6 Network Programming concept and specifies the main SR behaviors so people can build interoperable overlays, and the security considerations from that document apply too โœจ

the advertisement for an incorrect MSD value may have negative consequences. see [RFC8491] for additional considerations. this one is not a drill ๐Ÿ’€

security concerns tied to setting the O-flag are described in [RFC9259] ๐ŸŒธ

security concerns tied to using Flexible Algorithms are described in [RFC9350]). ๐Ÿงš

13. References ๐Ÿ“š

13.1. Normative References โœจ

okay bestie, these are the must-read docs ๐Ÿ“š the spec leans on for real. every single one matters, so here's the whole list, untouched:

[ISO10589] ISO, "Information technology - Telecommunications and
           information exchange between systems - Intermediate System
           to Intermediate System intra-domain routeing information
           exchange protocol for use in conjunction with the protocol
           for providing the connectionless-mode network service (ISO
           8473)", Second Edition, ISO/IEC 10589:2002, November 2002.

[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>.

[RFC5120]  Przygienda, T., Shen, N., and N. Sheth, "M-ISIS: Multi
           Topology (MT) Routing in Intermediate System to
           Intermediate Systems (IS-ISs)", RFC 5120,
           DOI 10.17487/RFC5120, February 2008,
           <https://www.rfc-editor.org/info/rfc5120>.

[RFC5305]  Li, T. and H. Smit, "IS-IS Extensions for Traffic
           Engineering", RFC 5305, DOI 10.17487/RFC5305, October
           2008, <https://www.rfc-editor.org/info/rfc5305>.

[RFC5308]  Hopps, C., "Routing IPv6 with IS-IS", RFC 5308,
           DOI 10.17487/RFC5308, October 2008,
           <https://www.rfc-editor.org/info/rfc5308>.

[RFC7370]  Ginsberg, L., "Updates to the IS-IS TLV Codepoints
           Registry", RFC 7370, DOI 10.17487/RFC7370, September 2014,
           <https://www.rfc-editor.org/info/rfc7370>.

[RFC7794]  Ginsberg, L., Ed., Decraene, B., Previdi, S., Xu, X., and
           U. Chunduri, "IS-IS Prefix Attributes for Extended IPv4
           and IPv6 Reachability", RFC 7794, DOI 10.17487/RFC7794,
           March 2016, <https://www.rfc-editor.org/info/rfc7794>.

[RFC7981]  Ginsberg, L., Previdi, S., and M. Chen, "IS-IS Extensions
           for Advertising Router Information", RFC 7981,
           DOI 10.17487/RFC7981, October 2016,
           <https://www.rfc-editor.org/info/rfc7981>.

[RFC8126]  Cotton, M., Leiba, B., and T. Narten, "Guidelines for
           Writing an IANA Considerations Section in RFCs", BCP 26,
           RFC 8126, DOI 10.17487/RFC8126, June 2017,
           <https://www.rfc-editor.org/info/rfc8126>.

[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>.

[RFC8491]  Tantsura, J., Chunduri, U., Aldrin, S., and L. Ginsberg,
           "Signaling Maximum SID Depth (MSD) Using IS-IS", RFC 8491,
           DOI 10.17487/RFC8491, November 2018,
           <https://www.rfc-editor.org/info/rfc8491>.

[RFC8665]  Psenak, P., Ed., Previdi, S., Ed., Filsfils, C., Gredler,
           H., Shakir, R., Henderickx, W., and J. Tantsura, "OSPF
           Extensions for Segment Routing", RFC 8665,
           DOI 10.17487/RFC8665, December 2019,
           <https://www.rfc-editor.org/info/rfc8665>.

[RFC8667]  Previdi, S., Ed., Ginsberg, L., Ed., Filsfils, C.,
           Bashandy, A., Gredler, H., and B. Decraene, "IS-IS
           Extensions for Segment Routing", RFC 8667,
           DOI 10.17487/RFC8667, December 2019,
           <https://www.rfc-editor.org/info/rfc8667>.

[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>.

[RFC9259]  Ali, Z., Filsfils, C., Matsushima, S., Voyer, D., and M.
           Chen, "Operations, Administration, and Maintenance (OAM)
           in Segment Routing over IPv6 (SRv6)", RFC 9259,
           DOI 10.17487/RFC9259, June 2022,
           <https://www.rfc-editor.org/info/rfc9259>.

[RFC9350]  Psenak, P., Ed., Hegde, S., Filsfils, C., Talaulikar, K.,
           and A. Gulko, "IGP Flexible Algorithm", RFC 9350,
           DOI 10.17487/RFC9350, February 2023,
           <https://www.rfc-editor.org/rfc/rfc9350>.

13.2. Informative References ๐ŸŒธ

these ones are the extra-credit reading, the "oh wait, what's that about?" side quests. still worth a peek ๐Ÿ‘€

[RFC5286]  Atlas, A., Ed. and A. Zinin, Ed., "Basic Specification for
           IP Fast Reroute: Loop-Free Alternates", RFC 5286,
           DOI 10.17487/RFC5286, September 2008,
           <https://www.rfc-editor.org/info/rfc5286>.

[RFC5304]  Li, T. and R. Atkinson, "IS-IS Cryptographic
           Authentication", RFC 5304, DOI 10.17487/RFC5304, October
           2008, <https://www.rfc-editor.org/info/rfc5304>.

[RFC5310]  Bhatia, M., Manral, V., Li, T., Atkinson, R., White, R.,
           and M. Fanto, "IS-IS Generic Cryptographic
           Authentication", RFC 5310, DOI 10.17487/RFC5310, February
           2009, <https://www.rfc-editor.org/info/rfc5310>.

[RFC8355]  Filsfils, C., Ed., Previdi, S., Ed., Decraene, B., and R.
           Shakir, "Resiliency Use Cases in Source Packet Routing in
           Networking (SPRING) Networks", RFC 8355,
           DOI 10.17487/RFC8355, March 2018,
           <https://www.rfc-editor.org/info/rfc8355>.

Acknowledgements ๐Ÿซถ

big thank yous, no cap ๐Ÿ’œ

Thanks to Christian Hopps for his review comments and shepherd work. ๐Ÿ‘‘

Thanks to Alvaro Retana and John Scudder for AD review and comments. โœจ

Contributors ๐Ÿ’–

these people made a substantial contribution to the content of this document, so they should be considered coauthors. the whole squad ๐Ÿงš

Stefano Previdi
Huawei Technologies
Email: stefano@previdi.net

Paul Wells
Cisco Systems
Saint Paul, Minnesota
United States of America
Email: pauwells@cisco.com

Daniel Voyer
Email: daniel.voyer@bell.ca

Satoru Matsushima
Email: satoru.matsushima@g.softbank.co.jp

Bart Peirens
Email: bart.peirens@proximus.com

Hani Elmalky
Email: hani.elmalky@ericsson.com

Prem Jonnalagadda
Email: prem@barefootnetworks.com

Milad Sharif
Email: msharif@barefootnetworks.com

Robert Hanzl
Cisco Systems
Millenium Plaza Building, V Celnici 10, Prague 1
Prague
Czech Republic
Email: rhanzl@cisco.com

Ketan Talaulikar
Cisco Systems, Inc.
Email: ketant@cisco.com

Authors' Addresses ๐Ÿฆ‹

and the main characters, the authors themselves ๐ŸŒˆ

Peter Psenak (editor)
Cisco Systems
Pribinova Street 10
81109 Bratislava
Slovakia
Email: ppsenak@cisco.com

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

Ahmed Bashandy
Cisco Systems
Milpitas,
United States of America
Email: bashandy@cisco.com

Bruno Decraene
Orange
Chatillon
France
Email: bruno.decraene@orange.com

Zhibo Hu
Huawei Technologies
Email: huzhibo@huawei.com
๐Ÿ“ฆ where this page comes from