SRv6 uSID Introduction

Segment Routing over IPv6 (SRv6) is a modern approach to traffic engineering and network programmability. It encodes instructions, called segments, directly into the IPv6 packet header. While SRv6 offers flexibility and simplifies network design, its reliance on 128-bit addresses for every segment introduces significant overhead. This can be inefficient in large-scale deployments, particularly in 5G transport, data center, and backbone networks.

To address this challenge, the networking community introduced uSID (micro-SID), a compressed and hardware-friendly form of SRv6.

In standard SRv6, each instruction is represented by a full 128-bit IPv6 address. For example, if a packet needs to traverse four nodes, the Segment Routing Header (SRH) must carry four separate SIDs. That means:

  • 4 × 128 bits = 512 bits (64 bytes) of header overhead
  • This increases linearly with the number of segments
  • In 5G or large-scale service provider environments, this overhead is not sustainable

uSID (micro-SID) compresses multiple instructions into a single 128-bit IPv6 address. Instead of allocating a full IPv6 address to every segment, operators reserve a uSID block (a common IPv6 prefix) and encode multiple micro-SIDs inside the lower bits of the address.

Each micro-SID typically uses 16 or 32 bits, allowing several instructions to be carried within a single IPv6 destination address. The forwarding process involves routers “popping” or shifting the active micro-SID, much like label popping in MPLS.

uSID Block Allocation: A domain (e.g., 2001:db8:abcd::/48) is reserved for uSIDs.

Micro-SID Containers: The remaining bits of the IPv6 address carry a sequence of uSIDs.

Forwarding: Each router reads the leftmost active uSID, processes it, and shifts the next one into position.

Result: A single 128-bit field can encode an entire path through multiple nodes or functions.

About: fabricplane