IS-IS Convergence Timers (SPF / LSP Generation)
When a link fails or a metric changes, IS-IS regenerates the LSP, and the routers that receive it recompute their routes with SPF. For a single change, regenerating and recomputing right away converges fastest. When a link keeps flapping, though, repeating both for every change can outrun the CPU and keep the whole network from settling.
IS-IS implementations therefore delay LSP regeneration and SPF on purpose, and lengthen the delay the longer changes keep coming. This article lays out that behavior from the standard, the RFC and Cisco’s descriptions, then checks it on IOS XR from millisecond timestamps.
Periodic LSP regeneration (lsp-refresh-interval) and lifetime (max-lsp-lifetime) are covered in IS-IS LSPs, and full SPF versus partial route calculation, along with how to read show isis spf-log, in IS-IS SPF Calculation and Route Selection.
The standard only defines a hold-down on LSP generation
ISO/IEC 10589:2002 (2nd edition) puts a floor under how often an LSP is regenerated. The end of section 7.3.6 says:
There is a hold down timer (minimumLSPGenerationInterval) on the generation of each individual LSP.
The definition in section 7.3.21 describes minimumLSPGenerationInterval as the time a source IS “shall wait at least this long before re-generating one of its own Link State PDUs”, with 30 seconds as a reasonable setting (also the default in the annex). At the level of the standard this is a fixed hold-down that does not depend on how many changes occur.
An LSP is regenerated when its contents change. The start of the same section 7.3.6 says:
an Intermediate system shall generate an LSP when an event occurs which would cause the information content to change. (…) When such an event occurs the IS shall re-generate changed LSP(s) with a new sequence number.
In other words, only an LSP whose contents changed gets a new sequence number. If changes during a wait cancel out and the LSP ends up identical to the one already sent, no new LSP is sent and the receivers do not run SPF.
For when to run SPF (the Decision Process, in the standard’s terms), the standard defines no timer. It only says the Decision Process is notified when the LSP database changes. How SPF is delayed is left to implementations and to RFCs.
Cisco’s exponential backoff
On IOS XR, spf-interval (SPF) and lsp-gen-interval (LSP generation) each use three values to shape the delay.
| Value | Meaning |
|---|---|
initial-wait | The wait from the first event until SPF / LSP generation starts |
secondary-wait | The base wait for subsequent events, doubled each time |
maximum-wait | The upper limit of the wait |
Cisco’s IOS XE IS-IS configuration guide describes the doubling and when it resets:
This incremental value will increase exponentially between the incremental events until the maximum value is reached. For example, the incremental value will be (1x incremental value) between the first and second events, (2 x incremental value) between the second and third event, (4 x incremental value) between the third and fourth event, (8 x incremental value) between the fourth and fifth event, and so on, until the configured maximum interval has been reached.
If no new triggers have been received after two times the configured maximum wait-interval value, the network stabilizes, returning to a steady state and fast behavior. The initial wait-time interval will be reinstated.
The defaults are 50 / 200 / 5000 milliseconds for both SPF and LSP generation. Cisco’s note on the default change moved IOS to these values and states that they “are the same as the default values in IOS-XR”.
RP/0/RP0/CPU0:R1(config-isis-af)#spf-interval ?
ietf Use RFC 8405 backoff algorithm
initial-wait Initial delay before running a route calculation in milliseconds, default is 50
secondary-wait Secondary delay before running a route calculation in milliseconds, default is 200
maximum-wait Maximum delay before running a route calculation in milliseconds, default is 5000RP/0/RP0/CPU0:R1(config-isis)#lsp-gen-interval ?
initial-wait Initial delay before generating an LSP in milliseconds, default is 50
secondary-wait Secondary delay before generating an LSP in milliseconds, default is 200
maximum-wait Maximum delay before generating an LSP in milliseconds, default is 5000With initial-wait 1000 secondary-wait 2000 maximum-wait 16000, for example, as long as events keep coming the wait grows 1, 2, 4, 8 and 16 seconds and stops at 16, and after 32 quiet seconds it returns to 1 second. Events that arrive during a wait are all folded into the next single SPF / LSP generation.
IOS XR counts the wait from the end of the previous calculation (or generation). On top of that, it always waits at least initial-wait after a trigger. For each SPF, show isis spf-log detail shows Delay (the time from the first trigger to the calculation) and Next Wait Interval (the wait to use next).
How RFC 8405 delays SPF
RFC 8405 is an algorithm meant to make SPF delay behave the same across link-state IGPs. Unlike Cisco’s exponential backoff, it switches the delay by time since the first event rather than by count. Section 4 gives the reason:
Note that in order to increase the consistency network wide, the algorithm uses a delay (TIME_TO_LEARN_INTERVAL) from the initial IGP event rather than the number of SPF computations performed. Indeed, as all routers may receive the IGP events at different times, we cannot assume that all routers will perform the same number of SPF computations.
The state machine in section 5 has three states.
| State | Entered when | SPF delay in this state |
|---|---|---|
| QUIET | At startup, or after no events for HOLDDOWN_INTERVAL | INITIAL_SPF_DELAY |
| SHORT_WAIT | An event arrives in QUIET | SHORT_SPF_DELAY |
| LONG_WAIT | TIME_TO_LEARN_INTERVAL has passed since entering SHORT_WAIT | LONG_SPF_DELAY |
Section 6 says an implementation that enables this by default SHOULD use INITIAL 50 ms, SHORT 200 ms, LONG 5000 ms, TIME_TO_LEARN 500 ms and HOLDDOWN 10000 ms. On IOS XR, spf-interval ietf switches to this method.
With INITIAL 1 s, SHORT 2 s, LONG 16 s, TIME_TO_LEARN 6 s and HOLDDOWN 20 s, for example, the SPF delay is 2 seconds for the first 6 seconds after the first event and then switches to 16 seconds in a single step. It does not grow through 4 and 8 seconds as Cisco’s method does. After 20 seconds without events it returns to QUIET, and the next event is calculated after 1 second again.
RP/0/RP0/CPU0:R1(config-isis-af)#spf-interval ietf ?
initial-wait Initial delay before running a route calculation in milliseconds, default is 50
short-wait Short delay before running a route calculation in milliseconds, default is 200
long-wait Long delay before running a route calculation in milliseconds, default is 5000
learn-interval Time To Learn interval for running a route calculation in milliseconds, default is 500
holddown-interval Holddown interval for running a route calculation in milliseconds, default is 10000
level Set SPF interval for one level only
<cr> Side by side, the two methods look like this.
| Item | Cisco exponential backoff | RFC 8405 (spf-interval ietf) |
|---|---|---|
| What lengthens the delay | The number of events since last time | Time since the first event |
| Delay steps | Initial, then doubling up to the maximum | Three steps: INITIAL, SHORT, LONG |
| Reset condition | No events for twice the maximum | No events for HOLDDOWN_INTERVAL |
| Applies to LSP generation | lsp-gen-interval uses the same method | Defines SPF only |
Lab verification
Lab setup
R1 to R3 are level-2-only (wide) in the single area 49.0001, and every link metric is 10. The software is XRd 26.1.1.
| Router | Lo0 | Role |
|---|---|---|
| R1 | 1.1.1.1/32 | Observes the SPF delay. Only R1 changes spf-interval |
| R2 | 2.2.2.2/32 | Generates the events by committing the metric of Gi0/0/0/1 (toward R3) alternately as 20 and 10. Only R2 changes lsp-gen-interval |
| R3 | 3.3.3.3/32 | Beyond R2. The metric of 3.3.3.3/32 seen from R1 alternates between 30 and 20 with each event |
One event is an SSH session to R2 that changes the metric and commits. Back-to-back events end up about 3.5 seconds apart because of the commit processing time. LSP generation times come from R2’s show isis lsp-log and trace, SPF times and delays from R1’s show isis spf-log detail, and the LSPs actually sent from the capture on R1 - R2.
Lab STEPs
| STEP | Change | What to check |
|---|---|---|
| 0 | Defaults | R1 reaches R3 |
| 1 | A single event with the defaults | LSP generation on R2 and SPF on R1 both run after about 50 ms |
| 2 | Set spf-interval on R1 to 1000 / 2000 / 16000 ms | The configuration alone runs no SPF |
| 3 | Ten events about 3.5 seconds apart | R1’s SPF wait grows 2, 4, 8, 16 seconds and stops, and LSPs arriving during a wait go into one SPF |
| 4 | Single events spaced about 22, 46 and 42 seconds apart | Under 32 seconds the wait stays long, at 32 seconds or more it resets |
| 5 | Revert R1, set lsp-gen-interval on R2 to 1000 / 2000 / 16000 ms and send a burst | R2’s LSP generation interval grows 4, 8, 16 seconds, and a generation whose contents came back is not sent |
| 6 | Revert R2, set R1 to spf-interval ietf and send a burst | The SPF delay switches from 2 to 16 seconds in one step |
| 7 | Two spaced single events with spf-interval ietf still set, then revert R1 (final state) | After HOLDDOWN it is back in QUIET and calculates after 1 second. The configuration matches STEP 0 |
STEP 0: Defaults
R1 reaches R3’s Lo0 through R2.
RP/0/RP0/CPU0:R1#traceroute 3.3.3.3 source 1.1.1.1
Tue Sep 15 05:06:36.395 UTC
Type escape sequence to abort.
Tracing the route to 3.3.3.3
1 10.1.2.2 7 msec 5 msec 5 msec
2 10.2.3.3 18 msec * 10 msec STEP 1: A single event with the defaults
R2 builds the LSP 74 ms and 68 ms after the configuration is applied (CFG_APPLY_AREA_EOB_LSP_GEN), which is the 50 ms initial-wait plus processing time.
Sep 15 05:07:56.746 isis/1/cfg 0/RP0/CPU0 t4386 isis_cfg_if_area_end_of_batch:6869 CFG_APPLY_AREA_EOB_LSP_GEN
Sep 15 05:07:56.820 isis/1/lsp 0/RP0/CPU0 t4486 isis_upd_lsp_build_system_lsp:5452 LOCAL_SYSTEM_LBD_LSP_GEN L2 Node Num: 0 0
Sep 15 05:08:29.453 isis/1/cfg 0/RP0/CPU0 t4386 isis_cfg_if_area_end_of_batch:6869 CFG_APPLY_AREA_EOB_LSP_GEN
Sep 15 05:08:29.521 isis/1/lsp 0/RP0/CPU0 t4486 isis_upd_lsp_build_system_lsp:5452 LOCAL_SYSTEM_LBD_LSP_GEN L2 Node Num: 0 0Both SPFs on R1 show a Delay of about 50 ms. The second comes about 33 seconds after the previous calculation, past twice the 5-second maximum, so the wait has reset to its first value.
05:07:56.876 FSPF 2 3 2 R2.00-00 LINKBAD PREFIXBAD
Delay: 50ms (since first trigger)
343637ms (since end of last calculation)
Trigger Link: R3.00
Trigger Prefix: 10.2.3.0/24
Trigger LSPs: 1
New LSP Arrivals: 0
SR uloop: No
Next Wait Interval: 200ms
RIB Batches: 2 (0 critical, 0 high, 1 medium, 1 low)
Timings (ms): +--Total--+
Real CPU
SPT Calculation: 0 0
Route Update: 2 0
----- -----
Full Calculation: 2 0
05:08:29.577 FSPF 2 3 2 R2.00-00 LINKGOOD PREFIXGOOD
Delay: 51ms (since first trigger)
32699ms (since end of last calculation)
Trigger Link: R3.00
Trigger Prefix: 10.2.3.0/24
Trigger LSPs: 1
New LSP Arrivals: 0
SR uloop: No
Next Wait Interval: 200ms
RIB Batches: 2 (0 critical, 0 high, 1 medium, 1 low)
Timings (ms): +--Total--+
Real CPU
SPT Calculation: 0 0
Route Update: 2 0
----- -----
Full Calculation: 2 0STEP 2: Set spf-interval on R1 to 1000 / 2000 / 16000 ms
RP/0/RP0/CPU0:R1#show configuration commit changes last 1
Tue Sep 15 05:12:48.974 UTC
!! Building configuration...
!! IOS XR Configuration 26.1.1
router isis 1
address-family ipv4 unicast
spf-interval initial-wait 1000 secondary-wait 2000 maximum-wait 16000
!
!
endSTEP 3: Ten events about 3.5 seconds apart
R1 runs five SPFs. Next Wait Interval grows 2000, 4000, 8000, 16000 and 16000 ms and stops at 16 seconds. The fourth and fifth show Trigger LSPs of 2 and 3, calculating the LSPs that arrived during the wait together. The second comes 3.5 seconds after the previous calculation, past the 2-second wait, yet it still waits the 1000 ms initial-wait after its trigger.
05:15:16.526 FSPF 9 3 2 R2.00-00 LINKBAD PREFIXBAD
Delay: 1001ms (since first trigger)
406947ms (since end of last calculation)
Trigger Link: R3.00
Trigger Prefix: 10.2.3.0/24
Trigger LSPs: 1
New LSP Arrivals: 0
SR uloop: No
Next Wait Interval: 2000ms
RIB Batches: 2 (0 critical, 0 high, 1 medium, 1 low)
Timings (ms): +--Total--+
Real CPU
SPT Calculation: 0 0
Route Update: 9 0
----- -----
Full Calculation: 9 0
05:15:20.038 FSPF 2 3 2 R2.00-00 LINKGOOD PREFIXGOOD
Delay: 1000ms (since first trigger)
3503ms (since end of last calculation)
Trigger Link: R3.00
Trigger Prefix: 10.2.3.0/24
Trigger LSPs: 1
New LSP Arrivals: 0
SR uloop: No
Next Wait Interval: 4000ms
RIB Batches: 2 (0 critical, 0 high, 1 medium, 1 low)
Timings (ms): +--Total--+
Real CPU
SPT Calculation: 0 0
Route Update: 2 0
----- -----
Full Calculation: 2 0
05:15:24.041 FSPF 2 3 2 R2.00-00 LINKBAD PREFIXBAD
Delay: 1514ms (since first trigger)
4001ms (since end of last calculation)
Trigger Link: R3.00
Trigger Prefix: 10.2.3.0/24
Trigger LSPs: 1
New LSP Arrivals: 0
SR uloop: No
Next Wait Interval: 8000ms
RIB Batches: 2 (0 critical, 0 high, 1 medium, 1 low)
Timings (ms): +--Total--+
Real CPU
SPT Calculation: 0 0
Route Update: 2 0
----- -----
Full Calculation: 2 0
05:15:32.044 FSPF 1 3 4 R2.00-00 LINKGOOD LINKBAD PREFIXGOOD PREFIXBAD
Delay: 5818ms (since first trigger)
8001ms (since end of last calculation)
Trigger Link: R3.00
Trigger Prefix: 10.2.3.0/24
Trigger LSPs: 2
New LSP Arrivals: 0
SR uloop: No
Next Wait Interval: 16000ms
RIB Batches: 1 (0 critical, 0 high, 0 medium, 1 low)
Timings (ms): +--Total--+
Real CPU
SPT Calculation: 0 0
Route Update: 1 0
----- -----
Full Calculation: 1 0
05:15:48.047 FSPF 2 3 6 R2.00-00 LINKGOOD LINKBAD PREFIXGOOD PREFIXBAD
Delay: 14522ms (since first trigger)
16002ms (since end of last calculation)
Trigger Link: R3.00
Trigger Prefix: 10.2.3.0/24
Trigger LSPs: 3
New LSP Arrivals: 0
SR uloop: No
Next Wait Interval: 16000ms
RIB Batches: 2 (0 critical, 0 high, 1 medium, 1 low)
Timings (ms): +--Total--+
Real CPU
SPT Calculation: 0 0
Route Update: 2 0
----- -----
Full Calculation: 2 0LSP generation on R2 keeps the default 50 / 200 / 5000 ms. While the wait is shorter than the event spacing it builds one LSP per event, and once the wait hits the 5-second maximum at 05:15:38 it builds one every 5 seconds. The last one at 05:15:48.527 has a Count of 2, folding the ninth and tenth changes together.
RP/0/RP0/CPU0:R2#show isis lsp-log
Tue Sep 15 05:17:23.341 UTC
IS-IS 1 Level 2 LSP Generation Log Capacity: 50, Size: 17
When Count Interface Triggers
--- Tue Sep 15 2026 ---
05:01:47.926 1 CONFIG
05:01:57.121 1 Lo0 IPUP
05:02:00.833 1 LSPDBOL
05:02:02.821 1 Gi0/0/0/0 IPUP
05:02:06.829 1 Gi0/0/0/0 SABIT
05:02:12.158 1 Gi0/0/0/1 SABIT
05:07:56.821 1 CONFIG
05:08:29.521 1 CONFIG
05:15:15.496 1 CONFIG
05:15:19.002 1 CONFIG
05:15:22.522 1 CONFIG
05:15:26.222 1 CONFIG
05:15:30.123 1 CONFIG
05:15:33.518 1 CONFIG
05:15:38.521 1 CONFIG
05:15:43.524 1 CONFIG
05:15:48.527 2 CONFIGThose two changes take the metric from 20 back to 10, so the contents match the LSP built at 05:15:43 (sequence number 0x10). No new LSP is sent, and R2’s LSPs in the capture end at 0x10 (No.9 is R1’s own LSP). R1’s database also stays at 0x10.
2 2026-09-15 05:15:15.523138Z L2 LSP, LSP-ID: 0020.0200.2002.00-00, Sequence: 0x00000009, Lifetime: 1200s
5 2026-09-15 05:15:19.004251Z L2 LSP, LSP-ID: 0020.0200.2002.00-00, Sequence: 0x0000000a, Lifetime: 1200s
7 2026-09-15 05:15:22.524528Z L2 LSP, LSP-ID: 0020.0200.2002.00-00, Sequence: 0x0000000b, Lifetime: 1200s
9 2026-09-15 05:15:22.729221Z L2 LSP, LSP-ID: 0010.0100.1001.00-00, Sequence: 0x00000006, Lifetime: 1200s
12 2026-09-15 05:15:26.224333Z L2 LSP, LSP-ID: 0020.0200.2002.00-00, Sequence: 0x0000000c, Lifetime: 1200s
15 2026-09-15 05:15:30.125755Z L2 LSP, LSP-ID: 0020.0200.2002.00-00, Sequence: 0x0000000d, Lifetime: 1200s
18 2026-09-15 05:15:33.522999Z L2 LSP, LSP-ID: 0020.0200.2002.00-00, Sequence: 0x0000000e, Lifetime: 1200s
22 2026-09-15 05:15:38.523254Z L2 LSP, LSP-ID: 0020.0200.2002.00-00, Sequence: 0x0000000f, Lifetime: 1200s
25 2026-09-15 05:15:43.527054Z L2 LSP, LSP-ID: 0020.0200.2002.00-00, Sequence: 0x00000010, Lifetime: 1200sRP/0/RP0/CPU0:R1#show isis database
Tue Sep 15 05:16:52.474 UTC
IS-IS 1 (Level-2) Link State Database
LSPID LSP Seq Num LSP Checksum LSP Holdtime/Rcvd ATT/P/OL
R1.00-00 * 0x00000006 0xbfd9 1110 /* 0/0/0
R2.00-00 0x00000010 0x661f 1130 /1200 0/0/0
R3.00-00 0x00000005 0xaa97 1046 /1200 0/0/0
Total Level-2 LSP count: 3 Local Level-2 LSP count: 1STEP 4: Single events spaced about 22, 46 and 42 seconds apart
The second SPF comes 22 seconds after the previous calculation, short of twice the 16-second maximum (32 seconds), so Next Wait Interval grows to 4000 ms. The third and fourth, 46 and 42 seconds later, are back at 2000 ms. Every Delay is 1000 ms after the trigger.
05:19:08.125 FSPF 2 3 2 R2.00-00 LINKBAD PREFIXBAD
Delay: 1000ms (since first trigger)
200076ms (since end of last calculation)
Trigger Link: R3.00
Trigger Prefix: 10.2.3.0/24
Trigger LSPs: 1
New LSP Arrivals: 0
SR uloop: No
Next Wait Interval: 2000ms
RIB Batches: 2 (0 critical, 0 high, 1 medium, 1 low)
Timings (ms): +--Total--+
Real CPU
SPT Calculation: 0 0
Route Update: 2 0
----- -----
Full Calculation: 2 0
05:19:30.490 FSPF 2 3 2 R2.00-00 LINKGOOD PREFIXGOOD
Delay: 1001ms (since first trigger)
22363ms (since end of last calculation)
Trigger Link: R3.00
Trigger Prefix: 10.2.3.0/24
Trigger LSPs: 1
New LSP Arrivals: 0
SR uloop: No
Next Wait Interval: 4000ms
RIB Batches: 2 (0 critical, 0 high, 1 medium, 1 low)
Timings (ms): +--Total--+
Real CPU
SPT Calculation: 0 0
Route Update: 2 0
----- -----
Full Calculation: 2 0
05:20:16.925 FSPF 2 3 2 R2.00-00 LINKBAD PREFIXBAD
Delay: 1000ms (since first trigger)
46433ms (since end of last calculation)
Trigger Link: R3.00
Trigger Prefix: 10.2.3.0/24
Trigger LSPs: 1
New LSP Arrivals: 0
SR uloop: No
Next Wait Interval: 2000ms
RIB Batches: 2 (0 critical, 0 high, 1 medium, 1 low)
Timings (ms): +--Total--+
Real CPU
SPT Calculation: 0 0
Route Update: 2 0
----- -----
Full Calculation: 2 0
05:20:59.234 FSPF 2 3 2 R2.00-00 LINKGOOD PREFIXGOOD
Delay: 1000ms (since first trigger)
42307ms (since end of last calculation)
Trigger Link: R3.00
Trigger Prefix: 10.2.3.0/24
Trigger LSPs: 1
New LSP Arrivals: 0
SR uloop: No
Next Wait Interval: 2000ms
RIB Batches: 2 (0 critical, 0 high, 1 medium, 1 low)
Timings (ms): +--Total--+
Real CPU
SPT Calculation: 0 0
Route Update: 2 0
----- -----
Full Calculation: 2 0STEP 5: Revert R1, set lsp-gen-interval on R2 to 1000 / 2000 / 16000 ms and send a burst
RP/0/RP0/CPU0:R2#show configuration commit changes last 1
Tue Sep 15 05:23:36.633 UTC
!! Building configuration...
!! IOS XR Configuration 26.1.1
router isis 1
lsp-gen-interval initial-wait 1000 secondary-wait 2000 maximum-wait 16000
!
endThe first and second LSP generations on R2 both come about 1000 ms after the configuration is applied. After that the interval from the previous generation grows 4001, 8002, 16002 and 16002 ms and stops at 16 seconds.
Sep 15 05:23:35.861 isis/1/cfg 0/RP0/CPU0 t4386 isis_cfg_lsp_gen_interval_verify:3791 CFG_LEVEL_VERIFY_LSP_GEN_INTERVAL NONE
Sep 15 05:23:35.866 isis/1/cfg 0/RP0/CPU0 t4386 isis_cfg_lsp_gen_interval_apply:3862 CFG_LEVEL_APPLY_LSP_GEN_INTERVAL L1
Sep 15 05:23:35.866 isis/1/cfg 0/RP0/CPU0 t4386 isis_cfg_lsp_gen_interval_apply:3862 CFG_LEVEL_APPLY_LSP_GEN_INTERVAL L2
Sep 15 05:24:22.541 isis/1/cfg 0/RP0/CPU0 t4386 isis_cfg_if_area_end_of_batch:6869 CFG_APPLY_AREA_EOB_LSP_GEN
Sep 15 05:24:23.553 isis/1/lsp 0/RP0/CPU0 t4486 isis_upd_lsp_build_system_lsp:5452 LOCAL_SYSTEM_LBD_LSP_GEN L2 Node Num: 0 0
Sep 15 05:24:26.238 isis/1/cfg 0/RP0/CPU0 t4386 isis_cfg_if_area_end_of_batch:6869 CFG_APPLY_AREA_EOB_LSP_GEN
Sep 15 05:24:27.249 isis/1/lsp 0/RP0/CPU0 t4486 isis_upd_lsp_build_system_lsp:5452 LOCAL_SYSTEM_LBD_LSP_GEN L2 Node Num: 0 0
Sep 15 05:24:29.624 isis/1/cfg 0/RP0/CPU0 t4386 isis_cfg_if_area_end_of_batch:6869 CFG_APPLY_AREA_EOB_LSP_GEN
Sep 15 05:24:31.250 isis/1/lsp 0/RP0/CPU0 t4486 isis_upd_lsp_build_system_lsp:5452 LOCAL_SYSTEM_LBD_LSP_GEN L2 Node Num: 0 0
Sep 15 05:24:33.653 isis/1/cfg 0/RP0/CPU0 t4386 isis_cfg_if_area_end_of_batch:6869 CFG_APPLY_AREA_EOB_LSP_GEN
Sep 15 05:24:37.335 isis/1/cfg 0/RP0/CPU0 t4386 isis_cfg_if_area_end_of_batch:6869 CFG_APPLY_AREA_EOB_LSP_GEN
Sep 15 05:24:39.252 isis/1/lsp 0/RP0/CPU0 t4486 isis_upd_lsp_build_system_lsp:5452 LOCAL_SYSTEM_LBD_LSP_GEN L2 Node Num: 0 0
Sep 15 05:24:41.633 isis/1/cfg 0/RP0/CPU0 t4386 isis_cfg_if_area_end_of_batch:6869 CFG_APPLY_AREA_EOB_LSP_GEN
Sep 15 05:24:45.327 isis/1/cfg 0/RP0/CPU0 t4386 isis_cfg_if_area_end_of_batch:6869 CFG_APPLY_AREA_EOB_LSP_GEN
Sep 15 05:24:48.729 isis/1/cfg 0/RP0/CPU0 t4386 isis_cfg_if_area_end_of_batch:6869 CFG_APPLY_AREA_EOB_LSP_GEN
Sep 15 05:24:52.030 isis/1/cfg 0/RP0/CPU0 t4386 isis_cfg_if_area_end_of_batch:6869 CFG_APPLY_AREA_EOB_LSP_GEN
Sep 15 05:24:55.252 isis/1/lsp 0/RP0/CPU0 t4486 isis_upd_lsp_build_system_lsp:5452 LOCAL_SYSTEM_LBD_LSP_GEN L2 Node Num: 0 0
Sep 15 05:24:55.340 isis/1/cfg 0/RP0/CPU0 t4386 isis_cfg_if_area_end_of_batch:6869 CFG_APPLY_AREA_EOB_LSP_GEN
Sep 15 05:25:11.254 isis/1/lsp 0/RP0/CPU0 t4486 isis_upd_lsp_build_system_lsp:5452 LOCAL_SYSTEM_LBD_LSP_GEN L2 Node Num: 0 0The generations with a Count of 2 and 4 fold together changes that set the metric and set it back, so their contents equal the previous LSP. Only four of R2’s LSPs, sequence numbers 0x15 to 0x18, appear in the capture (No.167 is R3’s LSP).
RP/0/RP0/CPU0:R2#show isis lsp-log
Tue Sep 15 05:26:32.650 UTC
IS-IS 1 Level 2 LSP Generation Log Capacity: 50, Size: 27
When Count Interface Triggers
--- Tue Sep 15 2026 ---
05:01:47.926 1 CONFIG
05:01:57.121 1 Lo0 IPUP
05:02:00.833 1 LSPDBOL
05:02:02.821 1 Gi0/0/0/0 IPUP
05:02:06.829 1 Gi0/0/0/0 SABIT
05:02:12.158 1 Gi0/0/0/1 SABIT
05:07:56.821 1 CONFIG
05:08:29.521 1 CONFIG
05:15:15.496 1 CONFIG
05:15:19.002 1 CONFIG
05:15:22.522 1 CONFIG
05:15:26.222 1 CONFIG
05:15:30.123 1 CONFIG
05:15:33.518 1 CONFIG
05:15:38.521 1 CONFIG
05:15:43.524 1 CONFIG
05:15:48.527 2 CONFIG
05:19:07.100 1 CONFIG
05:19:29.484 1 CONFIG
05:20:15.891 1 CONFIG
05:20:58.228 1 CONFIG
05:24:23.554 1 CONFIG
05:24:27.250 1 CONFIG
05:24:31.251 1 CONFIG
05:24:39.252 2 CONFIG
05:24:55.253 4 CONFIG
05:25:11.254 1 CONFIG15 2026-09-15 05:24:23.556089Z L2 LSP, LSP-ID: 0020.0200.2002.00-00, Sequence: 0x00000015, Lifetime: 1200s
17 2026-09-15 05:24:27.252478Z L2 LSP, LSP-ID: 0020.0200.2002.00-00, Sequence: 0x00000016, Lifetime: 1200s
20 2026-09-15 05:24:31.253716Z L2 LSP, LSP-ID: 0020.0200.2002.00-00, Sequence: 0x00000017, Lifetime: 1200s
31 2026-09-15 05:25:11.257388Z L2 LSP, LSP-ID: 0020.0200.2002.00-00, Sequence: 0x00000018, Lifetime: 1200s
167 2026-09-15 05:26:50.729423Z L2 LSP, LSP-ID: 0030.0300.3003.00-00, Sequence: 0x00000006, Lifetime: 1200sSTEP 6: Revert R2, set R1 to spf-interval ietf and send a burst
RP/0/RP0/CPU0:R1#show configuration commit changes last 1
Tue Sep 15 05:28:17.736 UTC
!! Building configuration...
!! IOS XR Configuration 26.1.1
router isis 1
address-family ipv4 unicast
spf-interval ietf initial-wait 1000 short-wait 2000 long-wait 16000 learn-interval 6000 holddown-interval 20000
!
!
endThe first SPF is INITIAL from QUIET at 1001 ms and the second is SHORT_WAIT at 2001 ms. From the third LSP (05:29:10.8), which arrives more than 6 seconds after the first (05:29:04), it is in LONG_WAIT, and the third and fourth SPFs wait 16000 ms. The wait jumps from 2 to 16 seconds without passing through 4 or 8.
05:29:05.027 FSPF 2 3 2 R2.00-00 LINKBAD PREFIXBAD
Delay: 1001ms (since first trigger)
233716ms (since end of last calculation)
Trigger Link: R3.00
Trigger Prefix: 10.2.3.0/24
Trigger LSPs: 1
New LSP Arrivals: 0
SR uloop: No
Next Wait Interval: 2000ms
RIB Batches: 2 (0 critical, 0 high, 1 medium, 1 low)
Timings (ms): +--Total--+
Real CPU
SPT Calculation: 0 0
Route Update: 2 0
----- -----
Full Calculation: 2 0
05:29:09.294 FSPF 2 3 2 R2.00-00 LINKGOOD PREFIXGOOD
Delay: 2001ms (since first trigger)
4265ms (since end of last calculation)
Trigger Link: R3.00
Trigger Prefix: 10.2.3.0/24
Trigger LSPs: 1
New LSP Arrivals: 0
SR uloop: No
Next Wait Interval: 2000ms
RIB Batches: 2 (0 critical, 0 high, 1 medium, 1 low)
Timings (ms): +--Total--+
Real CPU
SPT Calculation: 0 0
Route Update: 2 0
----- -----
Full Calculation: 2 0
05:29:26.826 FSPF 2 3 10 R2.00-00 LINKGOOD LINKBAD PREFIXGOOD PREFIXBAD
Delay: 16000ms (since first trigger)
17530ms (since end of last calculation)
Trigger Link: R3.00
Trigger Prefix: 10.2.3.0/24
Trigger LSPs: 5
New LSP Arrivals: 0
SR uloop: No
Next Wait Interval: 16000ms
RIB Batches: 2 (0 critical, 0 high, 1 medium, 1 low)
Timings (ms): +--Total--+
Real CPU
SPT Calculation: 0 0
Route Update: 2 0
----- -----
Full Calculation: 2 0
05:29:47.225 FSPF 2 3 2 R2.00-00 LINKGOOD PREFIXGOOD
Delay: 16000ms (since first trigger)
20397ms (since end of last calculation)
Trigger Link: R3.00
Trigger Prefix: 10.2.3.0/24
Trigger LSPs: 1
New LSP Arrivals: 0
SR uloop: No
Next Wait Interval: 16000ms
RIB Batches: 2 (0 critical, 0 high, 1 medium, 1 low)
Timings (ms): +--Total--+
Real CPU
SPT Calculation: 0 0
Route Update: 2 0
----- -----
Full Calculation: 2 015 2026-09-15 05:29:04.023577Z L2 LSP, LSP-ID: 0020.0200.2002.00-00, Sequence: 0x00000019, Lifetime: 1200s
18 2026-09-15 05:29:07.291026Z L2 LSP, LSP-ID: 0020.0200.2002.00-00, Sequence: 0x0000001a, Lifetime: 1200s
21 2026-09-15 05:29:10.823651Z L2 LSP, LSP-ID: 0020.0200.2002.00-00, Sequence: 0x0000001b, Lifetime: 1200s
24 2026-09-15 05:29:14.423362Z L2 LSP, LSP-ID: 0020.0200.2002.00-00, Sequence: 0x0000001c, Lifetime: 1200s
27 2026-09-15 05:29:17.700179Z L2 LSP, LSP-ID: 0020.0200.2002.00-00, Sequence: 0x0000001d, Lifetime: 1200s
29 2026-09-15 05:29:21.224082Z L2 LSP, LSP-ID: 0020.0200.2002.00-00, Sequence: 0x0000001e, Lifetime: 1200s
33 2026-09-15 05:29:26.192004Z L2 LSP, LSP-ID: 0020.0200.2002.00-00, Sequence: 0x0000001f, Lifetime: 1200s
35 2026-09-15 05:29:31.222896Z L2 LSP, LSP-ID: 0020.0200.2002.00-00, Sequence: 0x00000020, Lifetime: 1200s
41 2026-09-15 05:29:47.365423Z L2 LSP, LSP-ID: 0010.0100.1001.00-00, Sequence: 0x00000007, Lifetime: 1200sSTEP 7: Two spaced single events with spf-interval ietf still set, then revert R1 (final state)
Both events come more than 20 seconds after the previous trigger. Past HOLDDOWN it is back in QUIET, so Delay is the INITIAL 1000 ms and Next Wait Interval is the SHORT 2000 ms.
05:33:42.626 FSPF 2 3 2 R2.00-00 LINKBAD PREFIXBAD
Delay: 1000ms (since first trigger)
235399ms (since end of last calculation)
Trigger Link: R3.00
Trigger Prefix: 10.2.3.0/24
Trigger LSPs: 1
New LSP Arrivals: 0
SR uloop: No
Next Wait Interval: 2000ms
RIB Batches: 2 (0 critical, 0 high, 1 medium, 1 low)
Timings (ms): +--Total--+
Real CPU
SPT Calculation: 0 0
Route Update: 2 0
----- -----
Full Calculation: 2 0
05:34:14.805 FSPF 2 3 2 R2.00-00 LINKGOOD PREFIXGOOD
Delay: 1000ms (since first trigger)
32177ms (since end of last calculation)
Trigger Link: R3.00
Trigger Prefix: 10.2.3.0/24
Trigger LSPs: 1
New LSP Arrivals: 0
SR uloop: No
Next Wait Interval: 2000ms
RIB Batches: 2 (0 critical, 0 high, 1 medium, 1 low)
Timings (ms): +--Total--+
Real CPU
SPT Calculation: 0 0
Route Update: 2 0
----- -----
Full Calculation: 2 0RP/0/RP0/CPU0:R1#show configuration commit changes last 1
Tue Sep 15 05:34:50.548 UTC
!! Building configuration...
!! IOS XR Configuration 26.1.1
router isis 1
address-family ipv4 unicast
no spf-interval ietf initial-wait 1000 short-wait 2000 long-wait 16000 learn-interval 6000 holddown-interval 20000
!
!
endThe final configuration of all three routers matches STEP 0.
Verification configs and show output
Each STEP was captured from all three routers as separate files per router. The verification config is the ..._run.txt (the final state is the one from the last STEP).
| File | Contents |
|---|---|
..._show.txt | show version, show interface description, show route, show route isis, show route 3.3.3.3/32, the show isis set (neighbors, database, database detail, spf-log, spf-log detail, lsp-log, route, adjacency-log, statistics), show running-config router isis and show configuration commit list |
..._log.txt | show logging narrowed to that STEP. A logmsg marker is placed at the start of each STEP and its timestamp passed to show logging start. R2 commit times (%MGBL-CONFIG-6-DB_COMMIT) are here too |
..._run.txt | show running-config at that STEP (the verification config for that STEP) |
..._trace.txt | show isis trace all | include SPF_TRIGGER, include SPF_SPF_SUMMARY and include LSP_GEN |
..._ping.txt | From R1: ping 3.3.3.3 and traceroute 3.3.3.3 (source 1.1.1.1). None for R2 and R3 |
..._trigger.txt | The SSH session on R2 that generated the events (metric committed alternately as 20 and 10). Only in STEPs that generated events |
..._commit.cfg | What was committed in STEPs that changed a timer (show configuration commit changes last 1). Absent for routers that changed nothing |
STEP 0: Defaults
| Router | show | syslog | running-config | trace | ping | trigger | commit |
|---|---|---|---|---|---|---|---|
| R1 | show | log | run | trace | ping | - | - |
| R2 | show | log | run | trace | - | - | - |
| R3 | show | log | run | trace | - | - | - |
STEP 1: A single event with the defaults
| Router | show | syslog | running-config | trace | ping | trigger | commit |
|---|---|---|---|---|---|---|---|
| R1 | show | log | run | trace | ping | - | - |
| R2 | show | log | run | trace | - | trigger | - |
| R3 | show | log | run | trace | - | - | - |
STEP 2: Set spf-interval on R1 to 1000 / 2000 / 16000 ms
| Router | show | syslog | running-config | trace | ping | trigger | commit |
|---|---|---|---|---|---|---|---|
| R1 | show | log | run | trace | ping | - | commit |
| R2 | show | log | run | trace | - | - | - |
| R3 | show | log | run | trace | - | - | - |
STEP 3: Ten events about 3.5 seconds apart
| Router | show | syslog | running-config | trace | ping | trigger | commit |
|---|---|---|---|---|---|---|---|
| R1 | show | log | run | trace | ping | - | - |
| R2 | show | log | run | trace | - | trigger | - |
| R3 | show | log | run | trace | - | - | - |
STEP 4: Single events spaced about 22, 46 and 42 seconds apart
| Router | show | syslog | running-config | trace | ping | trigger | commit |
|---|---|---|---|---|---|---|---|
| R1 | show | log | run | trace | ping | - | - |
| R2 | show | log | run | trace | - | trigger / trigger2 | - |
| R3 | show | log | run | trace | - | - | - |
STEP 5: Revert R1, set lsp-gen-interval on R2 to 1000 / 2000 / 16000 ms and send a burst
| Router | show | syslog | running-config | trace | ping | trigger | commit |
|---|---|---|---|---|---|---|---|
| R1 | show | log | run | trace | ping | - | commit |
| R2 | show | log | run | trace | - | trigger | commit |
| R3 | show | log | run | trace | - | - | - |
STEP 6: Revert R2, set R1 to spf-interval ietf and send a burst
| Router | show | syslog | running-config | trace | ping | trigger | commit |
|---|---|---|---|---|---|---|---|
| R1 | show | log | run | trace | ping | - | commit |
| R2 | show | log | run | trace | - | trigger | commit |
| R3 | show | log | run | trace | - | - | - |
STEP 7: Two spaced single events with spf-interval ietf still set, then revert R1 (final state)
| Router | show | syslog | running-config | trace | ping | trigger | commit |
|---|---|---|---|---|---|---|---|
| R1 | show | log | run | trace | ping | - | commit |
| R2 | show | log | run | trace | - | trigger | - |
| R3 | show | log | run | trace | - | - | - |
Packet captures were taken per STEP on the R1 - R2 link. They show the time and sequence number of each LSP that R2 sent to R1.
| STEP | R1 - R2 |
|---|---|
| 0 | pcap |
| 1 | pcap |
| 2 | pcap |
| 3 | pcap |
| 4 | pcap |
| 5 | pcap |
| 6 | pcap |
| 7 | pcap |
Help taken beforehand in a candidate configuration and discarded with abort (nothing committed): R1 help, R2 trace and spf-log detail
References
| Standard | Title | Summary |
|---|---|---|
| ISO/IEC 10589:2002 (2nd edition) | Intermediate System to Intermediate System intra-domain routeing information exchange protocol | Section 7.3.6 gives LSP generation a hold-down timer (minimumLSPGenerationInterval), and section 7.3.21 defines it with a reasonable value of 30 seconds. It defines no SPF delay. |
| RFC 8405 | Shortest Path First (SPF) Back-Off Delay Algorithm for Link-State IGPs | Section 3 defines the five parameters, section 4 why time is used, section 5 the QUIET / SHORT_WAIT / LONG_WAIT state machine and section 6 the recommended defaults. |
| Cisco IP Routing: ISIS Configuration Guide, IOS XE Gibraltar 16.12.x | Reducing Link Failure and Topology Change Notification Times in IS-IS Networks | Explains that SPF / PRC / LSP generation waits double, and that the initial wait returns after twice the maximum with no events (for IOS XE). |
| Cisco 8000 IS-IS Configuration Guide | IS-IS SPF interval delay | Explains that IOS XR’s spf-interval ietf complies with RFC 8405. |
| Cisco: Change of Default OSPF and IS-IS SPF and Flooding Timers | Document ID 211432 | Explains that IOS changed its IS-IS spf-interval / prc-interval / lsp-gen-interval defaults to 50 / 200 / 5000 to match IOS XR. |
Related articles
- What Is IS-IS
- IS-IS NSAP Addresses and the NET (System ID)
- IS-IS Level 1 and Level 2 (the hierarchy)
- IS-IS Packet Types and Header Format
- IS-IS Adjacency Formation and States
- IS-IS DIS and the Pseudonode
- IS-IS Network Types (broadcast / point-to-point)
- IS-IS Metrics (narrow and wide)
- IS-IS Authentication (hello-password and lsp-password)
- IS-IS LSPs and the Link-State Database
- The Main IS-IS TLVs
- IS-IS Flooding and LSDB Synchronisation
- IS-IS SPF Computation and Route Selection
- The IS-IS ATT Bit and the Level 1 Default Route
- IS-IS Route Leaking and the Up/Down Bit
- IS-IS Route Summarization
- The IS-IS Overload Bit
- IS-IS Convergence Timers (SPF / LSP Generation)
- IS-IS Redistribution (connected / static)
- IS-IS Redistribution of BGP Routes