SRv6 uN uSID — Leaf/Spine Config Reference (SONiC vs Arista EOS)
Reference for static SRv6 uN uSID programming on MRC leaf–spine fabrics. Covers the comparison between SONiC (FRR + ConfigDB + SAI) and Arista EOS 4.36 (7060XE7 / Tomahawk 6 — MRC rack reference design), with concrete configuration templates for a single MRC plane inside a 72-GPU rack.
See the Glossary for definitions of uN, uA, PSP/USD, F3216, ConfigDB, and related terms.
Scope
Templates use an illustrative addressing plan aligned with OCP MRC / OpenAI MRC semantics (F3216 uSID, static tables, no ECMP, no dynamic routing). Replace interface names, link-local next hops, and uSID values with your deployment spreadsheet before production use.
Documentation sources
| System | Document | Role for uN/uSID |
|---|---|---|
| SONiC | ConfigDB SRv6 schema, Static SRv6 HLD, SRv6 uSID HLD, FRR zebra SRv6, FRR static-sids | Config + operational CLI |
| Arista EOS | SRv6 uN Support TOI (local PDF) (4.34.2F+) · web TOI | Authoritative CLI — router srv6, micro-segment domain, locator, static routes, ping srv6 / traceroute srv6 |
| Arista EOS | SRv6 uA TOI (4.35.0F+) | Optional static uA adjacency configuration |
| Arista EOS 4.36 | EOS 4.36.0FX-SRV6 Command API Guide (local PDF) | eAPI JSON schema for show srv6 … output — observability/automation only; no config or ping srv6 |
| Arista EOS 4.36 | EOS 4.36.0FX-SRV6 Release Notes v0.1 (local PDF) | 4.36 SRv6 build platform matrix and known caveats (e.g. zero CSID after active segment on 7060X6) |
| MRC | OpenAI MRC paper | Fabric semantics and path encoding |
The public EOS 4.36 user manual does not include a dedicated SRv6 uSID configuration chapter. Use the TOI for syntax; use the Command API guide to parse show srv6 locator, show srv6 route, show srv6 capabilities, show srv6 domain, and show srv6 adjacency-segments via JSON-RPC. SONiC configuration is split between ConfigDB and FRR vtysh.
Arista EOS — CLI validation (SRv6 uN TOI 4.34.2F)
Validated against SRv6-uN-Support.pdf in this repo (Arista TOI, June 2026 export). Arista EOS SRv6 uN uses a different CLI tree from SONiC/FRR and from 3rd-party OS segment-routing srv6 examples.
Feature & platform (TOI)
| Item | TOI detail |
|---|---|
| Introduced | EOS 4.34.2F — SRv6 uN on DCS-7060X6; F3216; static-route reachability to neighbor uNs; ping srv6 |
| Later | 4.35.0F traceroute srv6; 4.35.1F 7280R3/7500R3/7800R3 (TCAM profile srv6-usid-f3216) |
| uN dataplane | Match local /48 locator → shift left 16 bits → LPM in IPv6 FIB (static routes to neighbor uNs) |
| Flavors | show srv6 capabilities: PSP, USD, Next-CSID supported; End with NEXT-CSID in System SFIB |
Platform note: This primer’s rack diagrams use 7060XE7 (Broadcom Tomahawk 6). Arista’s SRv6 uN TOI and the 4.36.0FX-SRV6 release notes first document uN on DCS-7060X6 (Broadcom Tomahawk 5) — a separate, concurrently shipping product line. F3216 uSID semantics and EOS CLI are the same; confirm SRv6 feature support and caveats against your exact SKU and EOS build before deployment.
Validated Arista CLI (from TOI)
| Purpose | Command / stanza | TOI |
|---|---|---|
| Enable IPv6 routing | ipv6 unicast-routing |
Troubleshooting §1 |
| SRv6 config root | router srv6 → vrf default |
Configuration |
| uSID block (F3216) | micro-segment domain <NAME> → block fcbb:bbbb::/32 |
Configuration |
| Local uN locator | locator <NAME> → prefix micro-segment domain <NAME> end usid <value> |
Configuration |
| Loopback for ping | interface Loopback0 → ipv6 address <locator-prefix>/48 |
SRv6 Ping |
| Neighbor uN reachability | ipv6 route <neighbor-uN>/48 <nh> or … Ethernet N fe80::… |
SRv6 Operation |
| Verify locator | show srv6 locator |
Show Commands |
| Verify micro-segment domain | show srv6 domain |
Command API 2.1944 (GIB range, block state) |
| Verify System SFIB | show srv6 route |
Show Commands |
| Verify capabilities | show srv6 capabilities |
Show Commands |
| Verify static uA (optional) | show srv6 adjacency-segments |
Command API 2.1942 (4.36+); uA TOI 4.35.0F+ |
| Path ping | ping srv6 sid <target> via segment-list <sid1> <sid2> … |
SRv6 Ping (CLI only — not in Command API) |
| Path trace | traceroute srv6 sid … via segment-list … (4.35.0F+) |
SRv6 Traceroute (CLI only — not in Command API) |
Not Arista EOS syntax (do not use on EOS)
| Syntax | Belongs to |
|---|---|
segment-routing → srv6 → locators |
3rd-party OS / FRR-style examples |
micro-segment behavior unode psp-usd |
3rd-party OS |
prefix … block-len … behavior usid |
SONiC / FRR |
show segment-routing srv6 locator / sid |
3rd-party OS |
static-sids / behavior uA … |
SONiC / FRR (uA: separate Arista TOI) |
Reference topology (one MRC plane)
A 72-GPU rack uses 16 × Arista 7060XE7 switches — one leaf and one spine per plane, with no cross-plane links. Each plane is an isolated 2-hop fabric:
Node A (NIC n) Node B (NIC n)
│ ▲
│ 400G/800G │
▼ │
┌─────────┐ uplink ┌─────────┐ downlink (same leaf, different ports)
│ Leaf Pn │───────────▶│ Spine Pn│──────────────┘
└─────────┘ └─────────┘
▲ │
└──────── uplink ────────┘
Traffic path (same plane, node A → node B): A → Leaf → Spine → Leaf → B
SRv6 encodes that path in the outer IPv6 destination address as a uSID carrier. Each transit switch runs uN (shift-and-lookup). See MRC Packet Structure.
Addressing plan (F3216 — unified SONiC & Arista)
Uses F3216: 32-bit block + 16-bit uSID per locator (RFC 9800 / IETF uSID). Both vendors use the same /48 prefixes derived from one block and one 16-bit end usid per switch.
Derivation rule
| Step | SONiC / FRR | Arista EOS (TOI) | Result |
|---|---|---|---|
| 1. Block | prefix …/48 block-len 32 node-len 16 + behavior usid |
micro-segment domain … → block fcbb:bbbb::/32 |
F3216 block |
| 2. Local uN | static-sids → sid <prefix>/48 … behavior uN |
locator … → prefix micro-segment domain … end usid <value> |
/48 uN |
| 3. Verify | show segment-routing srv6 locator |
show srv6 locator → Prefix field |
Must match loopback / static routes |
Formula: block fcbb:bbbb::/32 + end usid 0xWWWW → fcbb:bbbb:WWWW::/48
TOI example: fc00:42::/32 + 0xC901 → fc00:42:C901::/48. This template uses rack block fcbb:bbbb::/32.
uSID value allocation (rack R1)
| Role | end usid pattern |
Example (P1) | Notes |
|---|---|---|---|
| Leaf plane n | 0x01{n} |
0x0101 |
n = 1…8 (hex digit in low byte) |
| Spine plane n | 0x02{n} |
0x0201 |
Spine tier for same plane |
| Leaf→spine uA (optional) | 0xfe0{n} |
0xfe01 |
Static adjacency on explicit uplink |
| Rack label (logical) | high byte 0x01 / 0x02 |
— | Encoded in uSID, not a separate address field |
Shared block once per fabric: fcbb:bbbb::/32. Unique end usid per switch (GIB default 0x1–0xDFFF per TOI).
Side-by-side prefix mapping (8 planes)
Canonical /48 uN prefix is identical on SONiC and Arista. Columns show how each vendor names the same value.
| Plane | Tier | Hostname | end usid |
/48 uN prefix (both vendors) |
SONiC locator | Arista locator | Arista CLI |
|---|---|---|---|---|---|---|---|
| P1 | Leaf | leaf-p1-r1 |
0x0101 |
fcbb:bbbb:0101::/48 |
MRC-R1-P1 |
MRC-R1-P1 |
end usid 0x0101 |
| P1 | Spine | spine-p1-r1 |
0x0201 |
fcbb:bbbb:0201::/48 |
MRC-R1-S1 |
MRC-R1-S1 |
end usid 0x0201 |
| P2 | Leaf | leaf-p2-r1 |
0x0102 |
fcbb:bbbb:0102::/48 |
MRC-R1-P2 |
MRC-R1-P2 |
end usid 0x0102 |
| P2 | Spine | spine-p2-r1 |
0x0202 |
fcbb:bbbb:0202::/48 |
MRC-R1-S2 |
MRC-R1-S2 |
end usid 0x0202 |
| P3 | Leaf | leaf-p3-r1 |
0x0103 |
fcbb:bbbb:0103::/48 |
MRC-R1-P3 |
MRC-R1-P3 |
end usid 0x0103 |
| P3 | Spine | spine-p3-r1 |
0x0203 |
fcbb:bbbb:0203::/48 |
MRC-R1-S3 |
MRC-R1-S3 |
end usid 0x0203 |
| P4 | Leaf | leaf-p4-r1 |
0x0104 |
fcbb:bbbb:0104::/48 |
MRC-R1-P4 |
MRC-R1-P4 |
end usid 0x0104 |
| P4 | Spine | spine-p4-r1 |
0x0204 |
fcbb:bbbb:0204::/48 |
MRC-R1-S4 |
MRC-R1-S4 |
end usid 0x0204 |
| P5 | Leaf | leaf-p5-r1 |
0x0105 |
fcbb:bbbb:0105::/48 |
MRC-R1-P5 |
MRC-R1-P5 |
end usid 0x0105 |
| P5 | Spine | spine-p5-r1 |
0x0205 |
fcbb:bbbb:0205::/48 |
MRC-R1-S5 |
MRC-R1-S5 |
end usid 0x0205 |
| P6 | Leaf | leaf-p6-r1 |
0x0106 |
fcbb:bbbb:0106::/48 |
MRC-R1-P6 |
MRC-R1-P6 |
end usid 0x0106 |
| P6 | Spine | spine-p6-r1 |
0x0206 |
fcbb:bbbb:0206::/48 |
MRC-R1-S6 |
MRC-R1-S6 |
end usid 0x0206 |
| P7 | Leaf | leaf-p7-r1 |
0x0107 |
fcbb:bbbb:0107::/48 |
MRC-R1-P7 |
MRC-R1-P7 |
end usid 0x0107 |
| P7 | Spine | spine-p7-r1 |
0x0207 |
fcbb:bbbb:0207::/48 |
MRC-R1-S7 |
MRC-R1-S7 |
end usid 0x0207 |
| P8 | Leaf | leaf-p8-r1 |
0x0108 |
fcbb:bbbb:0108::/48 |
MRC-R1-P8 |
MRC-R1-P8 |
end usid 0x0108 |
| P8 | Spine | spine-p8-r1 |
0x0208 |
fcbb:bbbb:0208::/48 |
MRC-R1-S8 |
MRC-R1-S8 |
end usid 0x0208 |
Optional uA (leaf uplink) — same prefix on both vendors:
| Plane | end usid |
/64 uA prefix |
SONiC SRV6_MY_SIDS key suffix |
Arista |
|---|---|---|---|---|
| P1 | 0xfe01 |
fcbb:bbbb:fe01::/64 |
MRC-R1-P1\|FCBB:BBBB:FE01::/64 |
SRv6 uA TOI (4.35.0F+) |
| P2 | 0xfe02 |
fcbb:bbbb:fe02::/64 |
MRC-R1-P2\|FCBB:BBBB:FE02::/64 |
… |
| … | 0xfe0{n} |
fcbb:bbbb:fe0{n}::/64 |
… | … |
When uA is configured, validate with show srv6 adjacency-segments (keyed by domain/locator and usid; reports l3Intf, IPv6 next-hop, flavors, and active/inactive reasons). See Command API 2.1942 and the SRv6 uA TOI.
SONiC ConfigDB: set SRV6_MY_LOCATORS.<name>.prefix to the /48 without CIDR (e.g. "FCBB:BBBB:0101::"). Arista: set interface Loopback0 to the same /48 shown in show srv6 locator.
Example uSID carrier for Leaf P1 → Spine P1 → Leaf P1 (return hop on same leaf, different port):
fcbb:bbbb:0101:0201:0101:0000:0000
│ │ │ │ └── EoC padding (must not be the next CSID after active uSID in transit — see MRC constraints)
│ │ │ └── dst leaf uSID (0x0101) — final hop before NIC decap
│ │ └── spine uSID (0x0201) — active after 1st shift at leaf
│ └── leaf uSID (0x0101) — active at leaf ingress
└── 32-bit SRv6 block (fcbb:bbbb)
At each hop the switch compares the first 48 bits to its configured locator + uSID, left-shifts 16 bits, then does a static FIB lookup. Tables are installed at build time and not changed during training.
Side-by-side: implementation comparison
| Topic | SONiC | Arista EOS 4.36 |
|---|---|---|
| uSID format | F3216 (block-len 32, node-len 16) |
F3216 — micro-segment domain + block /32 + end usid (TOI) |
| uN behavior | End + NEXT-CSID, PSP/USD | End with NEXT-CSID (System SFIB); PSP/USD per show srv6 capabilities |
| uA behavior | End.X + NEXT-CSID; needs interface + optional nexthop |
Static micro-SID adjacency (SRv6 uA TOI 4.35.0F+) |
| MRC fabric control plane | None — static only | None — static only |
| Config path | ConfigDB → bgpcfgd → FRR → srv6orch → SAI | router srv6 → SRv6 agent → ASIC System SFIB |
| Persistence | /etc/sonic/config_db.json + config save |
write memory / startup-config |
| Operational CLI | Mostly vtysh (FRR) |
show srv6 …, ping srv6 … |
| Verify locators | vtysh -c "show segment-routing srv6 locator" |
show srv6 locator |
| Verify uN in SFIB | vtysh -c "show segment-routing srv6 sid" |
show srv6 route |
| Verify uA (optional) | vtysh -c "show segment-routing srv6 sid" |
show srv6 adjacency-segments |
uN forwarding (identical semantics)
Both platforms implement the same MRC dataplane steps described in the OpenAI MRC paper:
- Match DA[:48] against local locator + uSID.
- Left-shift the uSID portion by 16 bits (NEXT-CSID).
- Longest-prefix / static lookup on the shifted address.
- Forward out the configured egress port — no ECMP, no control-plane convergence.
Template A — Leaf P1 (plane 1)
Role: Accept node uplinks; uN-shift toward spine; static route to spine uSID prefix.
Arista EOS 4.36 (7060XE7 — Tomahawk 6)
! ── Global ─────────────────────────────────────────────────────────
hostname leaf-p1-r1
ipv6 unicast-routing
! Management / underlay (link-local or GUA — illustrative)
interface Ethernet1
description node-r1-nic1
ipv6 enable
ipv6 address 2001:db8:1:1::1/64
interface Ethernet49
description uplink-to-spine-p1
ipv6 enable
ipv6 address 2001:db8:1:f001::1/64
! ── SRv6 uSID locator + local uN (TOI 4.34.2F syntax) ───────────────
! Shared F3216 block once per fabric; unique end usid per switch.
! Confirm Prefix from "show srv6 locator" — must match Loopback0 below.
! end usid 0x0101 → fcbb:bbbb:0101::/48 — see prefix mapping table
router srv6
vrf default
micro-segment domain MRC-R1
block fcbb:bbbb::/32
!
locator MRC-R1-P1
prefix micro-segment domain MRC-R1 end usid 0x0101
!
!
!
interface Loopback0
ipv6 address fcbb:bbbb:0101::/48
! Optional static uA: see SRv6 uA Support TOI (4.35.0F+) — not FRR static-sids syntax
! ── Static transit FIB (post-shift lookups) ─────────────────────────
! After uN shift at this leaf, active uSID is spine 0x0201 → fcbb:bbbb:0201::/48
! TOI allows GUA or link-local next hop (see SRv6-uN-Support.pdf)
ipv6 route fcbb:bbbb:0201::/48 Ethernet49 2001:db8:1:f001::2
! Return path: after shift, DA carries next uSID slots → hairpin to node ports
! (Program one static route per downlink uSID / node port from your path matrix)
ipv6 route fcbb:bbbb:0101:0002::/80 Ethernet2 fe80::node-r2-nic1
! ── Explicitly disable dynamic routing in MRC fabric ────────────────
! no router bgp …
! no router isis …
Verify (Arista):
show srv6 locator
show srv6 domain
show srv6 route
show srv6 capabilities
show srv6 adjacency-segments ! optional — when static uA is configured
show ipv6 route fcbb:bbbb:0201::/48
! Path reachability (requires segment-list; target needs Loopback0 /48 on peer)
! CLI only — not exposed in the 4.36 Command API guide
ping srv6 sid fcbb:bbbb:0201:: via segment-list fcbb:bbbb:0101::
SONiC (ConfigDB + compiled FRR)
Step 1 — /etc/sonic/config_db.json (persistent):
{
"SRV6_MY_LOCATORS": {
"MRC-R1-P1": {
"prefix": "FCBB:BBBB:0101::",
"block_len": 32,
"node_len": 16,
"func_len": 16,
"arg_len": 0
}
},
"SRV6_MY_SIDS": {
"MRC-R1-P1|FCBB:BBBB:0101::/48": {
"action": "uN",
"decap_dscp_mode": "pipe"
},
"MRC-R1-P1|FCBB:BBBB:FE01::/64": {
"action": "uA",
"decap_dscp_mode": "pipe",
"interface": "Ethernet49",
"adj": "2001:DB8:1:F001::2"
}
},
"INTERFACE": {
"Ethernet1|2001:DB8:1:1::1/64": {},
"Ethernet49|2001:DB8:1:F001::1/64": {}
}
}
Apply: sudo config reload -y (or let bgpcfgd push to FRR on table update).
Step 2 — Equivalent FRR (vtysh) after bgpcfgd compilation:
configure terminal
segment-routing
srv6
locators
locator MRC-R1-P1
prefix fcbb:bbbb:0101::/48 block-len 32 node-len 16 func-bits 16
behavior usid
exit
!
static-sids
sid fcbb:bbbb:0101::/48 locator MRC-R1-P1 behavior uN
sid fcbb:bbbb:fe01::/64 locator MRC-R1-P1 behavior uA interface Ethernet49 nexthop 2001:db8:1:f001::2
exit
!
!
exit
!
ipv6 route fcbb:bbbb:0201::/48 Ethernet49 2001:db8:1:f001::2
ipv6 route fcbb:bbbb:0101:0002::/80 Ethernet2 fe80::node-r2-nic1
end
write memory
Verify (SONiC):
vtysh -c "show segment-routing srv6 locator"
vtysh -c "show segment-routing srv6 sid"
vtysh -c "show ipv6 route fcbb:bbbb:0201::/48"
sudo ip -6 route show table all | grep fcbb:bbbb
FRR persistence on SONiC
Changes made only in vtysh are lost on reboot unless saved via ConfigDB or integrated-vtysh-config in /etc/sonic/frr/vtysh.conf. For MRC fabrics, prefer ConfigDB as the source of truth.
Template B — Spine P1 (plane 1)
Role: Receive from leaf uplink; uN-shift; static forward back to leaf downlink uSIDs.
Arista EOS 4.36
hostname spine-p1-r1
ipv6 unicast-routing
interface Ethernet1
description downlink-from-leaf-p1
ipv6 enable
ipv6 address 2001:db8:1:f001::2/64
router srv6
vrf default
micro-segment domain MRC-R1
block fcbb:bbbb::/32
!
locator MRC-R1-S1
prefix micro-segment domain MRC-R1 end usid 0x0201
!
!
!
interface Loopback0
ipv6 address fcbb:bbbb:0201::/48
! After uN shift, forward to leaf downlink / node uSID prefixes
ipv6 route fcbb:bbbb:0101::/48 Ethernet1 2001:db8:1:f001::1
ipv6 route fcbb:bbbb:0101:0001::/80 Ethernet1 2001:db8:1:f001::1
! … repeat for each node downlink uSID in the path matrix
SONiC
ConfigDB excerpt:
{
"SRV6_MY_LOCATORS": {
"MRC-R1-S1": {
"prefix": "FCBB:BBBB:0201::",
"block_len": 32,
"node_len": 16,
"func_len": 16
}
},
"SRV6_MY_SIDS": {
"MRC-R1-S1|FCBB:BBBB:0201::/48": {
"action": "uN",
"decap_dscp_mode": "pipe"
}
}
}
FRR static routes (same as Arista logic):
ipv6 route fcbb:bbbb:0101::/48 Ethernet1 2001:db8:1:f001::1
ipv6 route fcbb:bbbb:0101:0001::/80 Ethernet1 2001:db8:1:f001::1
Template C — Full plane matrix (8 planes × 2 tiers)
Use a path matrix spreadsheet (one row per reachable shifted DA prefix) generated at fabric design time. Each row maps:
| Shifted DA prefix | Egress port | Next-hop IPv6 | Plane |
|---|---|---|---|
fcbb:bbbb:0201::/48 |
Ethernet49 |
2001:db8:1:f001::2 |
P1 leaf → spine |
fcbb:bbbb:0101::/48 |
Ethernet1 |
2001:db8:1:f001::1 |
P1 spine → leaf |
fcbb:bbbb:0202::/48 |
… | … | P2 leaf → spine |
| … | … | … | … |
Scaling rule: For N nodes per plane and P planes, each leaf/spine pair needs static routes for every uSID prefix that can appear after a uN shift on that device — not merely its own locator.
Prefixes match the side-by-side prefix mapping table above.
Planes are fully independent — P1 switches never parse P2 uSIDs in the data path.
uN vs uA — when to use which
| Behavior | SONiC action |
Arista | Use on leaf/spine |
|---|---|---|---|
| uN | uN |
locator + end usid → System SFIB |
Every switch gets a /48 uN for shift-and-lookup transit |
| uA | uA + interface + optional adj |
static uA (SRv6 uA TOI — not FRR static-sids) |
Pin traffic to a specific uplink/downlink when multiple parallel links exist or paths must survive reload without IGP |
In a minimal 1 leaf : 1 spine plane, uN + static ipv6 route entries are usually sufficient. Add uA when the path matrix names explicit adjacencies (OpenAI MRC uses algorithmic EV→path mapping that may reference uplink indices).
SONiC vs Arista — CLI syntax cheat sheet
Locator (uSID F3216)
| SONiC / FRR | Arista EOS (TOI) | |
|---|---|---|
| Enter SRv6 mode | segment-routing → srv6 → locators |
router srv6 → vrf default |
| uSID block (F3216) | prefix fcbb:bbbb:0101::/48 block-len 32 node-len 16 + behavior usid |
micro-segment domain NAME → block fcbb:bbbb::/32 |
Local uN /48 |
sid fcbb:bbbb:0101::/48 … behavior uN |
end usid 0x0101 → fcbb:bbbb:0101::/48 |
| Loopback (for ping) | (varies) | interface Loopback0 → ipv6 address <locator>/48 |
Static local SID
| SONiC / FRR | Arista EOS | |
|---|---|---|
| uN | static-sids → sid …/48 locator … behavior uN |
Automatic from locator (show srv6 route) |
| uA | sid fcbb:bbbb:fe01::/64 … behavior uA interface Et49 nexthop 2001:…::2 |
Per SRv6 uA TOI (not FRR static-sids) |
Supported behaviors in static ConfigDB (SONiC)
| Alias | SRv6 behavior |
|---|---|
uN |
End with NEXT-CSID |
uA |
End.X with NEXT-CSID |
uDT46 |
End.DT46 with CSID |
Source: SONiC Static SRv6 HLD.
MRC-specific operational constraints
Both platforms in an MRC training fabric should observe the same discipline documented in OCP MRC Rev 1.0:
| Requirement | Leaf/spine action |
|---|---|
| No ECMP | Single next-hop per shifted DA prefix; disable ECMP / multi-path |
| No dynamic routing | Do not enable BGP, IS-IS, or OSPFv3 on MRC backend planes |
| No PFC | Lossy Ethernet; MRC NIC handles retry |
| Static FIB | Install full path matrix at provisioning; avoid runtime route changes |
| Line-rate uN | 7060XE7 (Tomahawk 6) in this primer’s rack design; 7060X6 (Tomahawk 5) is a separate Arista line with the same F3216 EOS CLI — confirm SRv6 on your SKU/build. Spectrum-4/5 + SONiC also support line-rate uN in production MRC deployments |
| EoC / zero CSID on transit | On DCS-7060X6, EOS drops packets when the CSID immediately after the active uN or uA is 0000 (EoC marker) — see RN 1294522. NIC path encoders must place EoC padding only in trailing slots; every post-shift active CSID during transit must be a non-zero uSID until the consuming node |
The 32-bit EV in the outer header is not used for forwarding — it exists for SACK/NACK feedback on the NIC. See MRC Packet Structure.
SRv6 agent restarts
The SRv6 uN TOI notes that SRv6 agent, SandTunnel, or StrataL3Unicast agent restarts are hitful — expect brief SRv6 forwarding impact during process restart.
Configuration workflow (recommended)
flowchart LR
A[Path matrix spreadsheet] --> B[Assign uN /48 per switch]
B --> C[Derive post-shift DA prefixes]
C --> D[Static ipv6 routes per prefix]
D --> E1[Arista: startup-config]
D --> E2[SONiC: config_db.json + FRR]
E1 --> F[Lab validation: show srv6 + ping srv6]
E2 --> F
F --> G[Freeze config for production job]
- Design — Build the uSID path matrix from rack topology (9 nodes, 8 planes, 2 hops).
- Assign — Allocate
/48uN locators per switch from the prefix mapping table (end usid→fcbb:bbbb:WWWW::/48). - Program — Install locators + static routes on every leaf and spine.
- Validate —
show srv6 locator/route/capabilities(andadjacency-segmentsif uA); inject test packets with known uSID carriers; confirm shift-and-forward on each hop;ping srv6for path reachability. - Freeze — Treat running config as immutable for the training job (MRC handles path health at the NIC).
Related pages
- Glossary
- MRC Packet Structure — SRv6 + Entropy Value
- 72-GPU Blackwell Ultra MRC Rack — Arista 7060XE7 + Nvidia HGX B300
External references
- SONiC Static SRv6 HLD
- FRR SRv6 zebra configuration
- SRv6 uN Support TOI (local PDF)
- Arista SRv6 uN Support TOI (web)
- Arista SRv6 uA Support TOI (web)
- EOS 4.36.0FX-SRV6 Command API Guide (local PDF) —
show srv6eAPI models - EOS 4.36.0FX-SRV6 Release Notes v0.1 (local PDF) — platform matrix and known caveats
- Resilient AI Supercomputer Networking using MRC and SRv6 (OpenAI)
- Arista 7060XE7 datasheet