Segment Routing v6 Configuration Guide for Cisco 8000 Series Routers, Cisco IOS XR Releases

PDF

Segment Routing v6 Configuration Guide for Cisco 8000 Series Routers, Cisco IOS XR Releases

SRv6 uSID allocation within a uSID block

Want to summarize with AI?

Log in

Explains how global and local uSIDs are assigned within a uSID block and provides guidelines for selecting the appropriate allocation method.


The SRv6 uSID allocation within a uSID block is a mechanism that

  • involves the assignment of micro-segment identifiers (uSIDs) from a defined IPv6 prefix block and

  • supports both global and local ID allocation for diverse routing and service requirements.

Table 1. Feature History Table

Feature Name

Release

Description

Wide LIB uSID Allocation for End.DT46 SRv6 SIDs

Release 25.4.1

Introduced in this release on: Fixed Systems (8010 [ASIC: A100])(select variants only*)

*This feature is supported on:

  • 8011-32Y8L2H2FH

  • 8011-12G12X4Y-A/D

Wide LIB uSID Allocation for End.DT46 SRv6 SIDs

Release 25.1.1

Introduced in this release on: Fixed Systems ( 8010 [ASIC: A100])

This feature is now supported on:

  • 8011-4G24Y4H-I

Wide LIB uSID Allocation for End.DT46 SRv6 SIDs

Release 24.4.1

Introduced in this release on: Fixed Systems (8700 [ASIC: K100]) (select variants only*)

* This feature support is now extended to the Cisco 8712-MOD-M routers.

Wide LIB uSID Allocation for End.DT46 SRv6 SIDs

Release 7.5.3

This feature introduces support for Wide Local ID block (W-LIB).

W-LIB provides an extended set of IDs available for local uSID allocation that can be used when a PE with large-scale Pseudowire termination requires more local uSIDs than provided from the LIB.

W-LIB uSID allocation is supported for End.DT46 SRv6 SIDs.

uSID allocation blocks

In the Segment Routing (SR) domain, uSID allocation is categorized into three types of ID blocks. Each serves a specific purpose and is defined by its scope and behavior.

  • Global ID Block (GIB)

  • Local ID Block (LIB)

  • Wide Local ID Block (W-LIB)

Table 2. Comparison of uSID allocation blocks

Attributes

Global ID Block (GIB)

Local ID Block (LIB)

Wide LIB (W-LIB)

Description

Set of IDs for globally scoped uSID allocation, providing reachability to a node and identifying shortest paths

Set of IDs for locally scoped uSID allocation, tied to local (endpoint) behavior, not independently routable.

Extended set of IDs for local uSID allocation, supporting nodes with large-scale requirements

Key Characteristics

Provides shortest path to a node in the SR domain.

Advertised via an IP route (e.g., /48).

Parent node executes a variant of END behavior.

Supports Anycast uSIDs.

Must be preceded by a globally scoped uSID.

Identifies a local micro-instruction (e.g., cross-connect or VPN context).

Not routable.

Same locally scoped uSID can differ between nodes

Provides more local uSIDs than the standard LIB.

Useful for nodes with large-scale Pseudowire termination

Examples

Nodal uSID (uN) is a globally scoped behavior.

Multiple nodes may share the same globally scoped uSID for Anycast.

Locally scoped uSID L may bind two different behaviors on nodes N1 and N2.

Used for local endpoint-specific actions.

A PE node that requires more local uSIDs for extensive Pseudowire termination.

uSID allocation example

This section explains how locally scoped and globally scoped uSIDs are allocated, provides an example with a specific uSID Locator Block, and illustrates the allocation scheme. We also explore how global and local uSIDs are assigned for a node within an SRv6 domain.

The request to allocate locally scoped uSIDs comes from SRv6 clients (such as IS-IS or BGP). The request can be to allocate any available ID (dynamic allocation) or to allocate a specific ID (explicit allocation).

  • uSID Allocation request source: The request to allocate locally scoped uSIDs comes from SRv6 clients (such as IS-IS or BGP). The request can be to allocate any available ID (dynamic allocation) or to allocate a specific ID (explicit allocation).

  • Example parameters for uSID Allocation:

    • uSID Locator Block length: 32 bits

    • uSID Locator Block: FCBB:BB00::/32 (with B being a nibble value picked by operator)

    • uSID length (Locator Node ID / Function ID): 16 bits

    • uSID: FCBB:BB00:XYWZ::/48 (with XYWZ being variable nibbles)

  • Allocation Scheme: A uSID FCBB:BB00:XYWZ::/48 is said to be allocated from its block (FCBB:BB00::/32). A uSID is allocated from the GIB or LIB of block FCBB:BB00::/32 depending on the value of the "X" nibble:

    • GIB: nibble X from hex(0) to hex(D)

    • LIB: nibble X hex(E) or hex(F)

    Figure 1. Allocation Scheme

    With this allocation scheme, the uSID block FCBB:BB00::/32 supports up to 57343 global uSIDs (routers) with each router supporting up to 8192 local uSIDs.

    For example, this image depicts the global uSIDs allocated for 3 nodes within the SRv6 domain.

    Figure 2. Global uSIDs allocated for 3 nodes

    Examining R1 in more detail, this node has Local uSIDs that are associated with uA end-point behaviors as follows:

    • Function ID 0xE000 – cross-connect to L3 neighbor R2

    • Function ID 0xE001 – cross-connect to L3 neighbor R3

    The underlay uSIDs present on R1 are:

    • FCBB:BB00:0001::/48

    • FCBB:BB00:0001:E000::/64

    • FCBB:BB00:0001:E001::/64


Limitations for uSID allocation

Cisco IOS XR supports uSID allocation using GIB, LIB, and W-LIB. The supported features, ID ranges, and endpoint behaviors depend on the software release version.

Supported GIB and LIB features and ranges in Cisco IOS XR Release 7.5.3 and later

New functionalities added:

  • Configurable explicit LIB range.

  • Assignment of explicit LIB for user-assigned IDs of local segments.

  • Manual uDT46 allocation from explicit LIB.

  • Support for Wide LIB (W-LIB)

  • Configurable explicit W-LIB range

  • Explicit W-LIB allocation for user-assigned IDs of local segments.

  • Manual uDT46 from explicit W-LIB

These are the supported range of IDs:

  • GIB: The range of IDs in the GIB is 0x000 to 0xDFFF.

  • LIB: The range of IDs by default in the LIB is divided into:

    • Dynamic: 0xE000 to 0xFDFF

    • Explicit: 0xFE00 to 0xFEFF

    • Reserved: 0xFF00 to 0xFFEF and 0xFFF8 to 0xFFFF

  • W-LIB: The range of IDs by default in the W-LIB is divided into:

    • Reserved: 0xFFF0 to 0xFFF6

    • Explicit: 0xFFF7

Figure 3. GIB/LIB/W-LIB

Supported GIB and LIB features and ranges in Cisco IOS XR Release 7.5.2 and earlier

New functionalities added:

  • GIB for user-assigned IDs of global segments (uNs)

  • LIB for dynamically assigned IDs of local segments, including:

    • uA end-point behavior

    • Service de-multiplexing end-point behaviors (for example, End.DT, End.DX, End.DX2)

The range of IDs supported by the Cisco IOS XR 7.5.2 and earlier implementation are as follows:

  • The range of IDs in the GIB is 0x000 to 0xDFFF.

  • The range of IDs by default in the LIB is divided as follows:

    • Dynamic: 0xE000 to 0xFDFF

    • Reserved: 0xFE00 to 0xFFFF

Figure 4. GIB/LIB

uSID allocation recommendations

We recommend allocating uSIDs from the private IPv6 space (IPv6 Unique Local Address [ULA] range). These addresses are not routable outside the domain and are therefore secure. Allocation from the public IPv6 space (Global Unicast Addresses [GUA] range) is also possible but not recommended.

For example:

  • Use a /24 subnet from FC::/8 ULA.

  • SRv6 Base Block = FCBB:BB::/24, with B indicating a nibble value picked by operator.

  • SRv6 uSID Block = FCBB:BBVV/32, with VV indicating a nibble value picked by the operator.

    • 256 /32 uSID blocks possible from this allocation, from block 0 (FCBB:BB00/32) to block 255(FCBB:BBFF/32)

    • A network slice is assigned a /32 uSID block:

      • FCBB:BB00/32 for min-cost slice (shortest path based on minimum IS-IS cost)

      • FCBB:BB08/32 for min-delay slice (shortest path based on minimum latency using Flex Algo instance 128)


How SRv6 uSIDs are allocated

The process describes how SRv6 uSID-based VPN and traffic engineering operate to enable traffic forwarding between two VPNv4 sites (Site A and Site B) over an SRv6 domain with a traffic-engineered path.

Summary

The key components involved in the process are:

  • Ingress PE node (Node 1): Encapsulates IPv4 packets from Site A into IPv6 packets with SRv6 uSID instructions

  • Egress PE node (Node 2): Decapsulates IPv6 packets and performs IPv4 table lookup to deliver packets to Site B.

  • SRv6 capable nodes (Nodes 8 and 7): Execute SRv6 uSID-based instructions to forward packets along the traffic-engineered path. The nodes are configured with 32-bit SRv6 block = fcbb:bb01 and 16-bit SRv6 ID.

    For example:

    • Node 7 uN = fcbb:bb01:0700::/48

    • Node 8 uN = fcbb:bb01:0800::/48

  • Classic IPv6 nodes (Nodes 3, 4, 5, and 6): Forward packets using standard IPv6 shortest-path forwarding without modifying the outer destination address (DA).

These IGP routes are advertised:

  • Node 8 advertises the IGP route fcbb:bb01:0800::/48

  • Node 7 advertises the IGP route fcbb:bb01:0700::/48

  • Node 2 advertises the IGP route fcbb:bb01:0200::/48

Workflow

Figure 5. Integrated VPN and traffic engineering SRv6 uSID usecase

These stages describe the process of SRv6 uSID allocation:

  1. Packet Encapsulation (Node 1 – Ingress PE):

    • Node 1 receives an IPv4 packet from VPNv4 Site A.

    • Encapsulates the IPv4 packet into an IPv6 packet with the destination address set to fcbb:bb01:0800:0700:0200:f001:0000:0000.

      This is a uSID carrier, with a list of micro-instructions (uSIDs) (0800, 0700, 0200, f001, and 0000 – indicating the end of the instruction).

      uSIDs (uNs) 0800, 0700, 0200 are used to realize the traffic engineering path to Node 2 with way points at Nodes 8 and 7. uSID f001 is the BGP-signalled instruction (uDT4) advertized by Node 2 for the VPNv4 service

    Figure 6. Node 1: End.B6.Encaps Behavior
  2. Packet forwarding through classic IPv6 nodes (Nodes 4 and 5): Nodes 4 and 5 simply forward the packet along the shortest path to Node 8, providing seamless deployment through classic IPv6 nodes.

    Figure 7. Node 4 and Node 5: Classic IPv6 Nodes
  3. Processing at Node 8 (SRv6 uN behavior): When Node 8 receives the packet, it performs SRv6 uN behavior (shift-and-lookup with PSP/USD). It removes its outer DA (0800) and advances the micro program to the next micro instruction by performs these actions:

    1. Pops its own uSID (0800)

    2. Shifts the remaining DA by 16-bits to the left

    3. Fills the remaining bits with 0000 (End-of-Carrier)

    4. Performs a lookup for the shortest path to the next DA (fcbb:bb01:0700::/48)

    5. Forwards it using the new DA fcbb:bb01:0700:0200:f001:0000:0000:0000

    Figure 8. Node 8: SRv6 uN Behavior (Shift and Forward)
  4. Processing at Node 7 (SRv6 uN behavior): When Node 7 receives the packet, it performs the same SRv6 uN behavior (shift-and-lookup with PSP/USD), forwarding it using the new DA fcbb:bb01:0200:f001:0000:0000:0000:0000

    Figure 9. Node 7: SRv6 uN Behavior (Shift and Forward)
  5. Packet forwarding through classic IPv6 nodes (Nodes 6 and 3): Nodes 6 and 3 simply forward the packet along the shortest path to Node 2, providing seamless deployment through classic IPv6 nodes.

    Figure 10. Node 6 and Node 3: Classic IPv6 Nodes
  6. Packet decapsulation (Node 2 – Egress PE): When Node 2 receives the packet, it performs an SRv6 uDT4 behavior (End.DT4—Endpoint with decapsulation and IPv4 table lookup) to VPNv4 Site B.

    Figure 11. Node 2: SRv6 uDT4 Behavior