Recursive Route Calculator
Trace recursive next-hop resolution depth, its control-plane cost and the platform recursion limit.
About Recursive Route Calculator
Recursion is a control-plane concept only: the RIB walks the chain until it reaches an interface, then writes one flattened FIB entry, so the data plane still does a single lookup. The cost appears during convergence, when every level in the chain has to be re-resolved. This is the mechanism behind BGP next-hop tracking — a BGP route recursing through an IGP route through a connected interface — and an unresolved next hop is the most common reason a route is in the BGP table but never installed.
Formulas
Recursive Route
Resolution walks one RIB lookup per recursion level plus a final lookup that lands on a connected adjacency, and the result is flattened into a single FIB entry.
- recursion
- A route whose next hop is itself learned from another route rather than a connected interface
- FIB flattening
- The resolved outgoing interface and rewrite are stored once, so forwarding is a single lookup
- limit
- Platform cap on recursion depth, commonly 3 levels
Reconvergence impact
Reconvergence cost ≈ levels × per-level resolution time, because each level must re-resolve in turn.
Worked example
With the default values below, Recursive Route Calculator returns Control-Plane Resolution Time of 8.000. Change any input above and every figure here is recalculated in your browser.
Inputs used
- Recursion levels to resolveaccepts 1–16 levels
- 3 levels
- Platform recursion limitaccepts 1–16 levels
- 3 levels
- RIB lookup cost per levelaccepts 0.01–100 µs
- 2 µs
- Reconvergence cost per levelaccepts 0–1,000 ms
- 20 ms
Results
- Lookups to Reach an Adjacency
- 4
- Control-Plane Resolution Time
- 8.000 µs
- Data-Plane Lookups per Packet
- 1
- Added Reconvergence Time
- 60 ms
- Resolution Status
- Resolves — 3 level(s) of recursion reach a directly connected adjacency within the platform limit of 3
Step by step
- 1Values used
- 2Recursive Route
- 3Reconvergence impact
- 4Control-Plane Resolution Time= 8.000 µs
- 5Lookups to Reach an Adjacency= 4
- 6Data-Plane Lookups per Packet= 1
- 7Added Reconvergence Time= 60 ms
- 8Resolution Status= Resolves — 3 level(s) of recursion reach a directly connected adjacency within the platform limit of 3
Assumptions and limits
- The result is derived only from the 4 inputs listed above. Anything not among them is not part of the calculation.
- In particular, this calculator does not take inflation, tax or compounding frequency into account.
- Figures are rounded for display to 3 decimal places, so totals built from several rounded parts can differ slightly from the unrounded arithmetic.
How these calculators are built and tested is described on the Methodology page. If a figure looks wrong, please report it.
Frequently Asked Questions
How is Recursive Route calculated?
Resolution walks one RIB lookup per recursion level plus a final lookup that lands on a connected adjacency, and the result is flattened into a single FIB entry. Recursion is a control-plane concept only: the RIB walks the chain until it reaches an interface, then writes one flattened FIB entry, so the data plane still does a single lookup. The cost appears during convergence, when every level in the chain has to be re-resolved.
Why does Recursive Route matter?
This is the mechanism behind BGP next-hop tracking — a BGP route recursing through an IGP route through a connected interface — and an unresolved next hop is the most common reason a route is in the BGP table but never installed.
What values do I need to enter?
This calculator takes 4 inputs: Recursion levels to resolve, Platform recursion limit, RIB lookup cost per level, Reconvergence cost per level. The pre-filled defaults are a realistic starting point — replace them with figures from your own environment for a result you can act on.
Why is my BGP route inactive with a valid next hop?
The next hop is probably not resolvable: it may only be covered by the default route, which most implementations refuse to recurse through for BGP. Advertise the next hop into the IGP or use a static route to it.
