Install
openclaw skills install isis-analysisIS-IS protocol analysis with adjacency diagnosis, LSPDB analysis, level 1/2 routing validation, and NET address verification. Multi-vendor coverage for Cisco IOS-XE, Juniper JunOS, and Arista EOS with protocol-first diagnostic reasoning.
openclaw skills install isis-analysisProtocol-reasoning-driven analysis skill for IS-IS adjacency formation, LSPDB integrity, level 1/2 routing, and NET address validation. Unlike device health checks that compare counters against thresholds, IS-IS analysis requires interpreting adjacency state machines, validating NET addressing, verifying DIS election, and assessing LSP flooding across the link-state domain.
Commands are labeled [Cisco], [JunOS], or [EOS] where syntax diverges. Unlabeled statements apply to all three vendors.
AFI.areaID.systemID.NSEL (e.g., 49.0001.1921.6800.1001.00)Follow this diagnostic flow sequentially. Each step builds on data from prior steps, moving from broad inventory to targeted diagnosis.
Verify IS-IS is running and confirm which interfaces participate at each level.
[Cisco]
show isis interface brief
[JunOS]
show isis interface
[EOS]
show isis interface brief
Record each interface: level enablement (L1, L2, or L1/L2), circuit type
(point-to-point or broadcast), metric, hello interval, and hold time. Compare
against expected design — every interface that should participate must appear.
An interface missing from output means IS-IS is not enabled on it (missing
under the IS-IS router config or interface config). Verify the NET address with
show isis protocol (Cisco), show isis overview (JunOS), or
show isis summary (EOS) — the NET must be correctly formed and unique.
List all IS-IS adjacencies and interpret their state.
[Cisco]
show isis neighbors
[JunOS]
show isis adjacency
[EOS]
show isis neighbors
Compare the neighbor list against expected topology. For each adjacency, verify:
Verify NET format and system ID uniqueness across the domain.
[Cisco]
show isis protocol | include NET|System
[JunOS]
show isis overview | match "NET|System"
[EOS]
show isis summary | include NET|System
Validate NET structure:
49 for private IS-IS
domains. Must be consistent within the domain.00 for the router itself. A non-zero NSEL
identifies an upper-layer protocol endpoint, not the router.Examine the Link-State Protocol Data Unit database for integrity.
[Cisco]
show isis database detail | include LSP|Lifetime|Sequence
[JunOS]
show isis database extensive | match "LSP|Lifetime|Sequence"
[EOS]
show isis database detail | include LSP|Lifetime|Sequence
Assess LSPDB health:
Verify inter-level routing behavior at L1/L2 boundaries.
[Cisco]
show isis rib | include L1|L2|leak
[JunOS]
show isis route | match "L1|L2|leak"
[EOS]
show isis route | include L1|L2|leak
Validate inter-level behavior:
Operational parameter norms for IS-IS — protocol-level expectations by network type and deployment scale.
Hello and Hold Timer Defaults:
| Parameter | Cisco Default | JunOS Default | EOS Default | Notes |
|---|---|---|---|---|
| Hello (broadcast) | 10s | 9s | 10s | Per-level configurable |
| Hello (P2P) | 10s | 9s | 10s | Per-level configurable |
| Hold multiplier | 3× hello | 3× hello | 3× hello | Dead = hello × multiplier |
| CSNP interval (DIS) | 10s | 10s | 10s | Only DIS sends CSNPs |
| PSNP interval | 2s | 2s | 2s | Request missing LSPs |
LSPDB Norms:
| Parameter | Normal | Warning | Critical |
|---|---|---|---|
| LSP max lifetime | 1200s | — | — |
| LSP refresh | 900s | Missed refresh | Lifetime < 300s |
| LSP remaining lifetime | 300–1200s | 60–300s | < 60s (near purge) |
| LSP purge rate | 0/hour | 1–5/hour | > 5/hour |
| LSPDB mismatch (neighbors) | 0 LSP diff | 1–3 diff | > 3 diff |
| Overload bit | Clear | Set (intentional) | Set (unintentional) |
SPF Norms:
| Parameter | Normal | Warning | Critical |
|---|---|---|---|
| SPF runs (per hour) | 1–5 | 6–20 | > 20 |
| SPF initial delay | 50–200ms | < 50ms | > 5000ms |
| SPF max hold | 5000–10000ms | < 2000ms | > 50000ms |
| Convergence (single link) | < 1s | 1–5s | > 10s |
Metric Norms:
| Metric Style | Range | Notes |
|---|---|---|
| Narrow (original) | 1–63 per link | 10-bit path metric max (1023) |
| Wide (extended) | 1–16777215 per link | 32-bit path metric — preferred |
| Transition | Both | During narrow→wide migration |
IS-IS adjacency not reaching Up state
├── State: Down (no hellos received)
│ ├── Interface up? → Check Layer 1/2 status
│ ├── IS-IS enabled on interface? → Check IS-IS config on both sides
│ ├── Correct circuit type? → P2P interface must match both sides
│ └── Hello reaching peer? → Check ACLs, VLAN, encapsulation
│
├── State: Init (one-way hellos)
│ ├── Level mismatch?
│ │ ├── L1 needs same area → Compare area addresses in NETs
│ │ └── L2 allows different areas → Check both have L2 enabled
│ ├── Hello parameters?
│ │ ├── Authentication mismatch → Verify key/type per level
│ │ └── Hello interval incompatible → Not required to match but
│ │ hold time must exceed remote hello interval
│ ├── Interface type mismatch?
│ │ ├── P2P vs broadcast → Must agree on circuit type
│ │ └── Broadcast → DIS election proceeds after adjacency forms
│ ├── MTU issue? → IS-IS PDUs may be dropped if oversized
│ │ ├── Check interface MTU both sides
│ │ └── IS-IS does not negotiate MTU like OSPF — silent drop
│ └── Circuit type mismatch?
│ ├── L1-only ↔ L2-only → No common level → no adjacency
│ └── L1/L2 ↔ L1 → L1 adjacency forms; L2 does not
│
├── DIS election issue (broadcast only)
│ ├── DIS not elected? → Check priority (highest wins, then SNPA)
│ ├── DIS preemption → New higher-priority router takes DIS immediately
│ │ └── Unlike OSPF DR — IS-IS DIS is preemptive
│ └── Pseudonode LSP missing? → DIS must originate pseudonode LSP
│
└── Adjacency flapping (Up↔Down cycling)
├── Hello hold expiry → Check for packet loss or CPU overload
├── Authentication key rollover → Verify key transition timing
└── Interface errors → Check CRC, input errors, drops
LSPDB mismatch or instability detected
├── LSP purge seen (lifetime = 0)
│ ├── System ID conflict? → Two routers with same system ID
│ │ ├── Both originate LSPs → Continuous purge/regenerate cycle
│ │ ├── Sequence numbers jump erratically → Confirms conflict
│ │ └── Fix: assign unique system IDs, check NET addresses
│ ├── Router departed gracefully? → Normal purge after shutdown
│ └── Router crashed? → LSP ages out (1200s) then purges
│
├── LSPDB count mismatch between neighbors
│ ├── MTU preventing LSP flooding? → Large LSPs dropped
│ │ ├── Check interface MTU across path
│ │ └── Enable LSP fragmentation or increase MTU
│ ├── Partition? → L2 backbone split → two independent LSPDBs
│ │ ├── Verify L2 connectivity between all L2 routers
│ │ └── Check for failed L2 link isolating a segment
│ └── Flooding blocked? → Authentication mismatch on one link
│ └── Adjacency up but LSPs rejected due to auth failure
│
├── Overload bit (OL) set
│ ├── Intentional? → Maintenance mode or on-startup timer
│ ├── Memory exhaustion? → Router cannot hold full LSPDB
│ └── Startup delay? → OL set for N seconds after process restart
│
└── Sequence number anomaly
├── Backward jump? → Router restarted, re-originating from lower seq
├── Rapid increment? → Frequent topology changes triggering re-origination
└── Stuck at max? → Sequence wrap — extremely rare, requires process restart
IS-IS ANALYSIS REPORT
======================
Device: [hostname]
Vendor: [Cisco | JunOS | EOS]
IS-IS Instance: [tag/instance name]
System ID: [system-id]
NET: [full NET address]
Check Time: [timestamp]
Performed By: [operator/agent]
ADJACENCY STATUS:
- Total adjacencies expected: [n]
- Up: [n] | Init: [n] | Down: [n]
- DIS role: [DIS for L1/L2 on segment X, or none]
- Adjacencies requiring attention: [list with states and levels]
LEVEL TOPOLOGY:
- Levels configured: [L1, L2, L1/L2]
- Area addresses: [list]
- Attached bit: [set/clear on L1 LSP]
FINDINGS:
1. [Severity] [Category] — [Description]
Neighbor/Interface: [identifier]
Observed: [state or metric]
Expected: [normal state or value]
Root Cause: [diagnosis from decision tree]
Action: [recommended remediation]
LSPDB SUMMARY:
- L1 LSP count: [n] | L2 LSP count: [n]
- LSP purges in last hour: [count — 0 is healthy]
- Overload bit: [set/clear]
- Lifetime anomalies: [any near-expiry LSPs]
ROUTE ANALYSIS:
- L1 routes: [count] | L2 routes: [count]
- Route leaking: [configured/not configured — expected behavior]
RECOMMENDATIONS:
- [Prioritized action list]
NEXT CHECK: [CRITICAL: 1hr, WARNING: 8hr, HEALTHY: 24hr]
Two routers with the same system ID cause an LSP war — each router originates an LSP with the same system ID but different content. Each purges the other's LSP and regenerates its own, creating continuous churn. Symptoms: rapidly incrementing sequence numbers, frequent purge events, unstable routing. Detect by checking for the same system ID with two different SNPAs or source addresses in adjacency tables. Fix: assign unique system IDs.
L1 adjacency requires at least one matching area address in the NET. If two routers have different area addresses and are both L1-only, no adjacency forms. L1/L2 routers with different areas can still form L2 adjacency but not L1. Verify area addresses on both sides. Fix: correct the area address or change one router to L2-only if inter-area routing is the goal.
A router using narrow metrics (1–63) and a neighbor using wide metrics (1–16777215) may form adjacency but routes may not compute correctly if one side cannot interpret the other's TLVs. During migration, configure both sides for transition mode (advertise both narrow and wide TLVs). Verify with LSPDB detail — check for both old-style and extended IP reachability TLVs.
IS-IS supports per-level and per-interface authentication. A mismatch prevents adjacency formation (hellos rejected) or LSP flooding (LSPs rejected). Unlike OSPF where auth mismatch stops hellos, IS-IS can have adjacency up but LSP flooding blocked if hello auth succeeds but LSP auth fails. Check auth config at both hello and LSP levels independently.
Redistributing large external route tables into IS-IS generates many LSPs, increasing LSPDB size, SPF computation time, and flooding overhead. Use route policies to limit redistribution scope. Consider setting the overload bit on non-transit routers that cannot handle the full LSPDB. Monitor LSP fragment count — each router can originate up to 256 LSP fragments (0–255).