Skip to content
LinkState
Go back

An operator workbench for recursive path truth

NetOps Workbench Design

A sober, safety‑first workbench that correlates RIB routes, recursion graphs, and FIB install status before any automated change touches the network.

Core Requirements

Logical Blocks

BlockFunctionTypical Technology
Data Ingestion LayerPull routing tables, link‑state DBs, FIB stategNMI collectors, NETCONF agents, SNMP pollers, BGP monitoring (BMP/Stream)
Normalization & StorageVendor‑specific → canonical model (prefix, next‑hop, metric, admin‑state)Time‑series DB (Prometheus/Timescale), graph DB (Neo4j/TigerGraph), object store for raw snapshots
Correlation EngineJoin RIB entries with recursion paths; verify FIB install statusStream processing (Flink/Kafka Streams) or batch (Spark)
Remediation PlannerGenerate candidate fixes; score by safety, impact, rollback complexityRule‑based engine (Drools) or deterministic Python/planner scripts
Approval GatePresent planned fix to operator or automated policy for sign‑offWeb UI (Grafana plugin, Open WebUI), ticketing (ServiceNow/Jira), ChatOps bot
Execution EngineApply approved change via safe, idempotent APIs; verify post‑conditionNETCONF/gNMI set, RESTCONF, CLI over SSH with expect‑like verification
Observability & AuditMetrics, logs, traces, immutable audit recordsPrometheus, Loki/Grafana, OpenTelemetry, WORM storage
Rollback ManagerStore pre‑change state; revert on failure or manual triggerSnapshot DB, version‑controlled config repo (Git), on‑device rollback

Interfaces between blocks are versioned (protobuf over gRPC or JSON over HTTP). LLMs may appear only as an advisory UI layer; they never generate configuration directly.


Correlating Routes and Recursion Graphs

Route Correlation

For each destination prefix P, collect all candidate paths from OSPF, IS‑IS, BGP, static, etc. Each path record includes:

Group by prefix and apply a deterministic best‑path algorithm that mirrors the device’s own rule (longest match → lowest admin distance → lowest metric → tie‑breaker). Implemented as a pure function; unit tests validate against show ip route on lab devices.

Recursion Graph Analysis

A recursion graph maps a prefix’s next‑hop dependencies until reaching a directly connected interface or a drop.

Construction

  1. Extract the selected next‑hop NH for each prefix P.
  2. Look up the RIB entry for NH (treated as a host prefix /32 or /128).
  3. Repeat until the next‑hop resolves to a directly connected interface (via ARP/ND or interface address) or a null0/discard.
  4. Record each hop as a node; edges represent “depends‑on”. Edge weight = hop metric (IGP cost, BGP MED, etc.).
  5. Detect cycles with depth‑first search; any cycle triggers a recursion‑loop alert.

Stored in a graph database for fast traversal and UI visualisation. For scale, keep a prefix‑level summary (resolved outgoing interface, total path cost); materialise the full graph on demand.

Integrating Route and Recursion Data

In the Correlation Engine, for each prefix P:

  1. Retrieve the selected RIB path and its next‑hop NH.
  2. Query the recursion graph store for resolved outgoing interface IF and total cost C.
  3. Compare IF with the interface implied by the FIB entry for P (see FIB section). A mismatch = FIB‑RIB inconsistency.
  4. Emit a correlation record, e.g.:
{
  "prefix": "10.0.0.0/24",
  "selected_protocol": "BGP",
  "selected_metric": 100,
  "next_hop": "198.51.100.5",
  "resolved_if": "eth3",
  "resolved_cost": 100,
  "fib_installed": true,
  "fib_if": "eth3",
  "recursion_loop": false
}

Records are written to a time‑series table keyed by timestamp and device, enabling trend analysis and alerts on sudden increases in unresolved next‑hops.


FIB Install Status Monitoring

Overview

The FIB is the kernel/ASIC structure used for forwarding. A route is installed when the kernel/ASIC has programmed the entry; otherwise it resides only in the RIB. Discrepancies stem from:

Monitoring Mechanisms

  1. Push‑based telemetry – devices stream FIB entries via gNMI Subscribe or NETCONF notification. Example gNMI path:

    openconfig-routing:routing-instance/ribs/rib/fib
    openconfig-routing-policy:routing-policy/defined-sets/prefix-sets/prefix-set

    Collector normalises each entry to {prefix, next-hop, interface, metric, source-protocol}.

  2. Pull‑based polling – lightweight script runs show ip fib (platform‑specific) via NETCONF get or CLI over SSH every 5‑15 s, depending on device capability and CPU budget.

Both streams feed the normalization layer; push is preferred for low latency, pull provides a safety net.

Alerting & Notification

An alert fires for prefix P on device D when any of the following hold:

Alerts are emitted as Prometheus metrics (fib_missing_total, fib_mismatch_total) and forwarded to Alertmanager. Notification channels: email, Slack, ticketing webhook (creates a read‑only Jira issue with the correlation record attached). Payload includes:


Remediation Options and Automated Fixing

Manual Remediation Options

When an inconsistency is detected, the UI presents documented actions with impact and rollback steps.

ActionDescriptionExample CLIRollback
Static overrideInstall a static route to a known good next‑hop or discard.ip route add 10.0.0.0/24 via 203.0.113.1ip route del 10.0.0.0/24 via 203.0.113.1
Prefix‑list / filter adjustmentModify inbound/outbound filter to withdraw problematic advertisement.ip prefix-list PL-SEQ 5 deny 10.0.0.0/24 le 32Remove deny or change to permit
Route‑map metric adjustmentIncrease metric of a learned route to deprioritise it.route-map RM-PREF deny 10
set metric +50
Restore original metric or delete clause
BGP soft‑reset / re‑advertiseTrigger BGP refresh to withdraw/re‑advertise with updated attributes.clear ip bgp <neighbor> soft outNo explicit rollback; original advertisement returns after next update cycle
Interface shutdown / no‑shutdownIf next‑hop unreachable due to downed interface, bring up or shut down to force reconvergence.interface eth3
shutdown
no shutdown

Each action includes a pre‑filled change request template: exact command, expected state change, verification step (e.g., show ip route 10.0.0.0/24).

Automated Remediation Options

Automated fixes are limited to low‑risk, idempotent operations validated in a lab. The workbench proposes an automated fix only after:

  1. Inconsistency persists for a configurable stabilisation window (default 2 min) to avoid reacting to transient flaps.
  2. Recursion graph shows no loops and the next‑hop resolves to a directly connected interface or known stable transit.
  3. Blast‑radius limits: ≤ N prefixes (default = 100) and ≤ M devices (default = 5).
  4. A rollback snapshot exists and can be applied within R seconds (default = 30 s).

Allowed automated actions

All actions are generated by a deterministic planner that outputs a vendor‑neutral change set (e.g., OpenConfig JSON). An adapter layer translates the set to device‑specific CLI or gNMI set payloads.

Approval Process for Automated Fixes

Before any automated change reaches the network, a two‑stage gate is enforced:

  1. Policy‑based pre‑check – an automated policy engine evaluates the change set against rules (e.g., “never modify routes with community 65000:100”, “never install a static route pointing to RFC1918 on an external‑facing interface”). Rejection blocks the change and raises an alert.

  2. Human‑in‑the‑loop (HITL) gate – if the policy passes, the UI shows:

    • Diff of intended configuration.
    • Estimated impact (prefix count, device count, expected traffic shift).
    • Rollback button that reverts to the stored snapshot.
    • Comment field for operator justification or modification request.

    The operator clicks Approve or Reject. Approval triggers the Execution Engine; rejection logs the reason and may create a follow‑up ticket.

All approval actions are immutably logged (user, timestamp, change‑set hash, decision) to satisfy audit requirements.


Troubleshooting and Debugging

SymptomLikely CauseDiagnostic Steps
FIB missing despite RIB selectedTCAM exhaustion, sync bug1. Check show platform tcam utilization
2. Verify RIB→FIB sync logs
3. Correlate with recent configuration changes
FIB‑RIB next‑hop mismatchAsynchronous update, manual override1. Compare show ip route vs show ip fib
2. Review recent ip route or netconf edits
3. Examine interface state (show interfaces)
Recursion loop detectedMis‑configured static/default route, routing loop1. Trace next‑hop chain with traceroute or show ip route <next-hop>
2. Look for static routes pointing to themselves or to unresolved prefixes
3. Check BGP/IGP redistribution policies
High FIB‑miss rateSudden churn, TCAM fragmentation1. Monitor fib_miss_total trend
2. Check for flaps in BGP peers or link‑state advertisements
3. Consider increasing TCAM allocation or summarising prefixes

Use the workbench UI to pull the relevant correlation record, recursion‑graph snapshot, and FIB state for the affected prefix and device, then follow the steps above to isolate and remediate the issue.


Share this post on:

Previous Post
Alert Correlation That Prevents Double Remediation
Next Post
Intent pipelines need graph checks before ip link