RFC 9352 - IS-IS Extensions for SRv6¶
| Field | Value |
|---|---|
| Title | IS-IS Extensions to Support Segment Routing over the IPv6 Data Plane |
| Authors | P. Psenak, C. Filsfils, A. Bashandy, B. Decraene, Z. Hu |
| Date | February 2023 |
| Status | Proposed Standard |
| Link | datatracker.ietf.org/doc/rfc9352 |
Summary¶
RFC 9352 defines extensions to the IS-IS routing protocol to support SRv6. These extensions allow IS-IS to advertise SRv6 SIDs, locators, and endpoint behaviors, enabling automated SRv6 deployment within an IGP domain.
Key Concepts¶
SRv6 Locator Advertisement¶
IS-IS advertises SRv6 locators as reachable IPv6 prefixes with additional SRv6-specific TLVs. This allows all routers in the IS-IS domain to learn:
- The SRv6 locator prefix for each node
- The SRv6 SIDs and their associated behaviors
- The algorithm used for path computation
New TLVs and Sub-TLVs¶
| TLV/Sub-TLV | Description |
|---|---|
| SRv6 Locator TLV (27) | Advertises an SRv6 locator with its prefix and flags |
| SRv6 End SID Sub-TLV | Associates an End SID with a locator |
| SRv6 End.X SID Sub-TLV | Advertises adjacency-specific SIDs |
| SRv6 SID Structure Sub-TLV | Describes the locator/function/argument split |
| SRv6 Capabilities Sub-TLV | Advertises SRv6 capabilities of a node |
SRv6 SID Structure¶
The SID Structure sub-TLV communicates how a 128-bit SID is divided:
|<-- Locator Block -->|<-- Locator Node -->|<-- Function -->|<-- Argument -->|
|<------- Locator Length (bits) -------->|
This allows other nodes to understand the structure of SIDs without pre-configuration.
Key Sections¶
| Section | Topic | Description |
|---|---|---|
| 2 | SRv6 Locator TLV (Type 27) | Top-level IS-IS TLV that advertises an SRv6 locator prefix, its metric, algorithm, and flags |
| 2.1 | SRv6 End SID Sub-TLV | Sub-TLV of the Locator TLV; associates an End SID with a locator and specifies endpoint behavior |
| 2.2 | SRv6 End.X SID Sub-TLV | Advertises adjacency-specific SIDs (layer-3 cross-connect); carried in the Extended IS Reachability TLV |
| 2.3 | SRv6 LAN End.X SID Sub-TLV | End.X SID for multi-access (LAN) segments with a neighbor system-ID identifier |
| 3 | SRv6 SID Structure Sub-TLV | Describes the bit-level decomposition of the SID: Locator Block Length, Locator Node Length, Function Length, Argument Length |
| 4 | SRv6 Capabilities Sub-TLV | Advertises SRv6 capability flags within the IS-IS Router Capability TLV (type 242) |
| 5 | Flex-Algorithm Integration | SRv6 locators can be associated with Flex-Algorithm IDs, enabling topology/constraint-aware SID advertisement |
| 6 | Security Considerations | IS-IS authentication protects SRv6 TLV integrity; no additional mechanisms required beyond standard IS-IS security |
SRv6 Locator TLV Detail¶
The SRv6 Locator TLV (Type 27) structure:
| Field | Length | Description |
|---|---|---|
| Metric | 4 bytes | Route metric for the locator prefix |
| Flags | 1 byte | D-flag (leaking from L2 to L1) |
| Algorithm | 1 byte | IGP Algorithm (0 = SPF, 128-255 = Flex-Algorithm) |
| Locator Prefix Length | 1 byte | Prefix length in bits |
| Locator Prefix | Variable | The SRv6 locator IPv6 prefix |
| Sub-TLVs | Variable | End SID sub-TLVs, SID Structure sub-TLVs |
SRv6 SID Structure Sub-TLV Detail¶
| Field | Length | Description |
|---|---|---|
| Locator Block Length (LBL) | 1 byte | Number of bits for the Locator Block (common across the domain) |
| Locator Node Length (LNL) | 1 byte | Number of bits for the Locator Node (per-node identifier) |
| Function Length (FL) | 1 byte | Number of bits for the Function (behavior-specific) |
| Argument Length (AL) | 1 byte | Number of bits for the Argument (optional, behavior-specific) |
SID Structure Example
For a SID fc00:0:1::1 with block fc00::/24, node 0:0:1::/40, function ::1/16:
- Locator Block Length = 24
- Locator Node Length = 16
- Function Length = 16
- Argument Length = 0
Common Pitfalls
Locator Block Length vs Locator Node Length. The Locator Block is the common prefix shared across the SRv6 domain (e.g., fc00::/24), while the Locator Node is the per-node portion within the block. Together they form the full Locator. Confusing these two fields leads to incorrect SID resolution. The total Locator Length = Locator Block Length + Locator Node Length.
SID Structure mismatch causes silent failures. If the SID Structure sub-TLV values do not match the actual SID allocation on the advertising node, remote nodes will parse the SID incorrectly. For example, if a node advertises Function Length = 16 but actually uses 20 bits for the function, other nodes will compute wrong SIDs for VPN services.
Algorithm field must match Flex-Algorithm. When advertising a locator under a Flex-Algorithm (algorithm value 128-255), the Algorithm field in the Locator TLV must match the Flex-Algorithm Definition advertised elsewhere in IS-IS (RFC 9350). A mismatch means the locator will not be used for that algorithm's path computation.
End.X SIDs are per-adjacency, not per-locator. End.X SIDs are advertised in the Extended IS Reachability TLV (TLV 22 or TLV 222) as sub-TLVs of the adjacency, not as sub-TLVs of the Locator TLV. This is different from End SIDs which are sub-TLVs of the Locator TLV.
Interaction with Flex-Algorithm¶
SRv6 locators can be associated with IS-IS Flex-Algorithm, enabling constraint-based path computation. Different locators can be advertised under different algorithms (e.g., shortest path, low latency, disjoint paths).
Configuration Example (Cisco IOS-XR)¶
Configuration Example (Juniper)¶
Related Drafts & Updates¶
| Document | Relationship | Description |
|---|---|---|
| RFC 9513 | OSPFv3 equivalent | OSPFv3 Extensions for SRv6 -- the OSPF counterpart to this IS-IS specification |
| RFC 9350 | Dependency | IGP Flex-Algorithm definition; SRv6 locators reference Flex-Algo IDs defined here |
| RFC 9800 | Extension | Compressed SID support adds new SID Structure considerations for C-SID locators |
| RFC 8986 | Defines behaviors | Endpoint behaviors (End, End.X, etc.) advertised via the IS-IS sub-TLVs |
Related¶
- SID Structure - Understanding the 128-bit SID
- Cisco IOS-XR - IS-IS SRv6 config
- Juniper - IS-IS SRv6 config
- RFC 8986 - SRv6 Network Programming
- RFC 8754 - SRH specification