IS-IS Flooding and LSDB Synchronisation
IS-IS route computation assumes every router holds the same link state database (LSDB). If even one router keeps stale information, that router picks a different path, and the result is a loop or a black hole.
Two mechanisms keep them in step: flooding, which hands LSPs around, and SNPs (Sequence Numbers PDUs), which compare what each side holds. This article works through what a router does with an LSP it receives, what the SRM and SSN flags are for, and how the machinery differs between point-to-point and broadcast media, checking each against ISO/IEC 10589:2002 and captures from IOS XR.
The life of an LSP itself (origination, periodic refresh, fragmentation, expiry) is covered in IS-IS LSPs and the Link State Database.
The basic flooding rule
Clause 7.3.14.1 states the mechanism: each Intermediate system propagates an LSP to every neighbouring Intermediate system except the one it arrived from, and duplicates are detected and discarded.
Because nothing goes back out of the circuit it came in on, the same LSP does not circulate forever even when the links form a ring. Duplicate detection falls out of the newer/older comparison (7.3.16): an LSP identical to the one already held is not propagated.
What a router does with a received LSP
Clause 7.3.15.1 e) compares the received LSP with the database contents and takes one of three branches.
| Received LSP | Action |
|---|---|
| Newer | Store it in the database and set SRM on every circuit except the one it arrived on. Clear SRM on the receiving circuit |
| Same | Clear SRM on the receiving circuit (this is the acknowledgement) |
| Older | Set SRM on the receiving circuit, sending the newer copy back, and clear SSN on that circuit |
In the “newer” and “same” branches, SSN is set on the receiving circuit only if that circuit is not a broadcast one. That is why an acknowledging PSNP comes back on a point-to-point link and not on a LAN.
Sending the newer copy back when an older one arrives is what makes flooding self-repairing. A router that has fallen behind is pushed the current version by its neighbours.
The newer/older decision runs sequence number, then remaining lifetime of zero, then checksum; it is covered in IS-IS LSPs and the Link State Database.
The SRM and SSN flags
Clause 7.3.15 defines two flags held per LSP, per circuit.
| Flag | Meaning | When it clears |
|---|---|---|
| SRM (Send Routeing Message) | This LSP must be sent on this circuit | On broadcast, as soon as it is transmitted. On point-to-point, when an LSP or an SNP is received |
| SSN (Send Sequence Numbers) | This LSP must be reported in a PSNP | As soon as the PSNP is transmitted |
That difference in clearing is exactly what makes the two media behave differently. On point-to-point, an LSP whose SRM stays set is retransmitted every minimumLSPTransmissionInterval (5 seconds, 7.3.15.5) and only stops when a PSNP comes back. Without an acknowledgement it keeps sending.
The standard also names cases where SRM must not be set: an LSP with sequence number zero, and a circuit whose externalDomain is true. An LSP larger than the circuit’s dataLinkBlockSize is not propagated and raises lSPTooLargeToPropagate.
The flags are internal implementation state and do not appear in a listing such as show isis database. IOS XR does record them in the isis process trace buffer, though, so show isis trace all | include UPD_LSP_SET_SRM reads back which LSP had SRM set on which circuit. The lab in this article uses that to check the standard’s wording.
SNPs are used differently on each medium
A CSNP (Complete Sequence Numbers PDU) is a table of contents for the whole LSDB; a PSNP (Partial Sequence Numbers PDU) covers part of it. Both list LSP ID, sequence number, remaining lifetime and checksum in TLV 9 (LSP Entries).
| Item | Point-to-point | Broadcast |
|---|---|---|
| CSNP | Only when the adjacency initialises (7.3.15.3 b) | The DIS sends one every completeSNPInterval (10 seconds by default) |
| PSNP | Acknowledges a received LSP | A non-DIS requests what it lacks (every partialSNPInterval) |
| If one is lost | Retransmit every 5 seconds (7.3.15.5) | Noticed at the next periodic CSNP |
Point-to-point needs no periodic CSNP because each LSP can be acknowledged individually with a PSNP. There is only one peer, so tracking what was sent and what arrived is enough.
Broadcast has many peers, and acknowledging one at a time would put a PSNP on the wire per router. Instead the DIS distributes the table of contents periodically and whoever is missing something asks for it with a PSNP. The DIS and pseudonodes are covered in IS-IS DIS and Pseudonodes.
Verification on real devices
Test environment
R1 - R2 is point-to-point, and R2 - R3 - R4 form a broadcast LAN. All four are level-2-only in area 49.0001, so one lab covers both media. The LAN has three routers so that two of them are non-DIS.
| Router | NET | Lo0 | Links |
|---|---|---|---|
| R1 | 49.0001.0010.0100.1001.00 | 1.1.1.1/32 | Gi0/0/0/0 10.1.2.1 (p2p) |
| R2 | 49.0001.0020.0200.2002.00 | 2.2.2.2/32 | Gi0/0/0/1 10.1.2.2 (p2p) / Gi0/0/0/0 10.2.0.2 (LAN) |
| R3 | 49.0001.0030.0300.3003.00 | 3.3.3.3/32 | Gi0/0/0/0 10.2.0.3 (LAN) |
| R4 | 49.0001.0040.0400.4004.00 | 4.4.4.4/32 | Gi0/0/0/0 10.2.0.4 (LAN) |
The STEPs
| STEP | Operation | What it confirms |
|---|---|---|
| 0 | Defaults, stable state | No CSNP on the point-to-point link; the DIS sending periodic CSNPs on the LAN |
| 1 | Add Loopback1 (172.16.1.1/32) on R1 | The order in which the LSP travels R1 to R2 to the LAN, and that it is not sent back out of the receiving circuit |
| 2 | Shut down R1 - R2, add Loopback2 on R1, then bring it back up | The CSNP when the adjacency comes back, detecting what is missing, and resynchronising |
| 3 | Revert everything (final state) | Matches STEP 0 |
STEP 0: no periodic CSNP on point-to-point
With nothing changed, each link was captured for 10 minutes. The PDU breakdown:
| PDU | p2p (R1 - R2) | LAN (R2 - R3 - R4) |
|---|---|---|
| IIH | 139 | 342 |
| LSP | 3 | 4 |
| CSNP | 0 | 69 |
| PSNP | 3 | 0 |
Not one CSNP crossed the point-to-point link, and not one PSNP crossed the LAN. That CSNPs are sent on a point-to-point circuit only at initialisation (7.3.15.3 b), and that a non-DIS sends no PSNP while nothing is missing, both show up directly in the counts.
All 69 CSNPs on the LAN came from R2, the DIS, at intervals of 7.5 to 10.0 seconds (mean 8.8). They fall below the 10-second completeSNPInterval default because of the jitter required by clause 10.1.
On the point-to-point link, each LSP sent during those 10 minutes is paired with a PSNP.
7 2026-09-10 20:07:10.374921 52:54:00:ed:a5:21 → 09:00:2b:00:00:05 ISIS LSP 80 L2 LSP, LSP-ID: 0020.0200.2002.01-00, Sequence: 0x00000006, Lifetime: 1200s
8 2026-09-10 20:07:10.879176 52:54:00:fa:e5:1c → 09:00:2b:00:00:05 ISIS PSNP 52 L2 PSNP, Source-ID: 0010.0100.1001.00
17 2026-09-10 20:07:42.394397 52:54:00:ed:a5:21 → 09:00:2b:00:00:05 ISIS LSP 107 L2 LSP, LSP-ID: 0040.0400.4004.00-00, Sequence: 0x00000007, Lifetime: 1200s
18 2026-09-10 20:07:42.898614 52:54:00:fa:e5:1c → 09:00:2b:00:00:05 ISIS PSNP 52 L2 PSNP, Source-ID: 0010.0100.1001.00
141 2026-09-10 20:16:27.922463 52:54:00:ed:a5:21 → 09:00:2b:00:00:05 ISIS LSP 130 L2 LSP, LSP-ID: 0020.0200.2002.00-00, Sequence: 0x00000009, Lifetime: 1200s
142 2026-09-10 20:16:28.426389 52:54:00:fa:e5:1c → 09:00:2b:00:00:05 ISIS PSNP 52 L2 PSNP, Source-ID: 0010.0100.1001.00A PSNP comes back about half a second after the LSP, in all three pairs. That is the point-to-point acknowledgement, and SRM stays set until it arrives.
Download the STEP 0 point-to-point capture (10 minutes)
Download the STEP 0 LAN capture (10 minutes)
STEP 1: nothing goes back out of the receiving circuit
Loopback1 (172.16.1.1/32) was added on R1 and advertised into IS-IS.
interface Loopback1
ipv4 address 172.16.1.1 255.255.255.255
!
router isis 1
is-type level-2-only
net 49.0001.0010.0100.1001.00
log adjacency changes
address-family ipv4 unicast
!
interface Loopback0
passive
address-family ipv4 unicast
!
!
interface Loopback1
passive
address-family ipv4 unicast
!
!
interface GigabitEthernet0/0/0/0
point-to-point
address-family ipv4 unicast
!
!
!Both links were captured at the same time and merged into one file with mergecap. R2 has a different MAC address on each interface, so the source MAC says which side it sent on.
12 2026-09-10 20:37:48.833480 52:54:00:fa:e5:1c → 09:00:2b:00:00:05 ISIS LSP 119 L2 LSP, LSP-ID: 0010.0100.1001.00-00, Sequence: 0x0000000b, Lifetime: 1200s
13 2026-09-10 20:37:48.836933 52:54:00:e7:1e:24 → 01:80:c2:00:00:15 ISIS LSP 119 L2 LSP, LSP-ID: 0010.0100.1001.00-00, Sequence: 0x0000000b, Lifetime: 1200s
15 2026-09-10 20:37:49.337207 52:54:00:ed:a5:21 → 09:00:2b:00:00:05 ISIS PSNP 52 L2 PSNP, Source-ID: 0020.0200.2002.00| MAC address | Where |
|---|---|
52:54:00:fa:e5:1c | R1 Gi0/0/0/0 (p2p) |
52:54:00:ed:a5:21 | R2 Gi0/0/0/1 (p2p) |
52:54:00:e7:1e:24 | R2 Gi0/0/0/0 (LAN) |
R1 sends the LSP (0010.0100.1001.00-00, sequence 0x0000000b) onto the point-to-point link at 20:37:48.833480, and 3.5 milliseconds later, at 20:37:48.836933, R2 sends it onto the LAN with the same LSP ID and sequence number. The same LSP never reappears on the point-to-point link. That is clause 7.3.14.1: propagate to every circuit except the one it arrived on.
Half a second after that, at 20:37:49.337207, R2 returns a PSNP on the point-to-point link. The relay onto the LAN took 3.5 milliseconds; the acknowledgement waited 500. Propagation is immediate, acknowledgement is batched.
The destination MAC differs by medium as well: 09:00:2b:00:00:05 on the point-to-point link, 01:80:c2:00:00:15 (AllL2ISs) on the LAN.
R2’s internal trace records the decision itself.
Sep 10 11:37:48.835 isis/1/upd 0/RP0/CPU0 t4290 isis_upd_lsp_acceptance:1105 UPD_LSP_ACCEPT_NEW_NEWER Upd Type: LSP L2 0010.0100.1001.00-00 Gi0/0/0/1
Sep 10 11:37:48.835 isis/1/upd 0/RP0/CPU0 t4290 isis_upd_lsp_set_all_srm:1252 UPD_LSP_SET_SRM Upd Type: LSP L2 0010.0100.1001.00-00 Gi0/0/0/0
Sep 10 11:37:49.335 isis/1/upd 0/RP0/CPU0 t4290 isis_upd_lsp_send_psnp_walker:2235 UPD_PSNP_SEND_ENTRY L2 Gi0/0/0/1 0010.0100.1001.00-00
Sep 10 11:37:49.335 isis/1/std 0/RP0/CPU0 t4290 isis_upd_psnp_send:2167 UPD_PSNP_SEND_SUMMARY L2 Gi0/0/0/1The “newer” branch of 7.3.15.1 e) appears as three separate actions.
| Trace | Meaning | Matching packet |
|---|---|---|
UPD_LSP_ACCEPT_NEW_NEWER ... Gi0/0/0/1 | Received on the point-to-point link, judged newer than the local copy | No.12 above |
UPD_LSP_SET_SRM ... Gi0/0/0/0 | The only circuit listed is Gi0/0/0/0, which is not the receiving circuit | No.13 above |
UPD_PSNP_SEND_ENTRY ... Gi0/0/0/1 | A PSNP is sent on the receiving circuit (the result of SSN) | No.15 above |
Only the LAN-side Gi0/0/0/0 is listed as having SRM set; the receiving Gi0/0/0/1 is not. The flags do not appear in any show table, but the operations on them can be observed this way.
STEP 2: a CSNP only when the adjacency returns
R1 - R2 was shut down, Loopback2 (172.16.2.1/32) was added on R1 while it was detached, and the link was restored with no shutdown. The two databases while the link was down:
RP/0/RP0/CPU0:R1#show isis database
Thu Sep 10 11:47:20.598 UTC
IS-IS 1 (Level-2) Link State Database
LSPID LSP Seq Num LSP Checksum LSP Holdtime/Rcvd ATT/P/OL
R1.00-00 * 0x0000000d 0x6199 1158 /* 0/0/0
R2.00-00 0x0000000b 0x5d2e 923 /1200 0/0/0
R2.01-00 0x00000008 0x02d1 353 /1200 0/0/0
R3.00-00 0x00000009 0x3a85 1011 /1200 0/0/0
R4.00-00 0x00000009 0xbad9 558 /1200 0/0/0
Total Level-2 LSP count: 5 Local Level-2 LSP count: 1
RP/0/RP0/CPU0:R2#show isis database
Thu Sep 10 11:47:25.809 UTC
IS-IS 1 (Level-2) Link State Database
LSPID LSP Seq Num LSP Checksum LSP Holdtime/Rcvd ATT/P/OL
R1.00-00 0x0000000b 0xa225 622 /1200 0/0/0
R2.00-00 * 0x0000000c 0xf54d 1112 /* 0/0/0
R2.01-00 0x00000008 0x02d1 348 /* 0/0/0
R3.00-00 0x00000009 0x3a85 1005 /1200 0/0/0
R4.00-00 0x00000009 0xbad9 552 /1200 0/0/0
Total Level-2 LSP count: 5 Local Level-2 LSP count: 1These outputs are attached as R1 and R2. They disagree in both directions. R1 has advanced its own LSP to 0x0000000d, while R2’s copy of R1 is still 0x0000000b. Conversely R2 has moved its own to 0x0000000c, while R1’s copy is 0x0000000b. Each side simultaneously holds information newer than its neighbour’s and information older than it.
The point-to-point link immediately after it returns:
25 2026-09-10 20:47:43.258357 52:54:00:fa:e5:1c → 09:00:2b:00:00:05 ISIS CSNP 132 L2 CSNP, Source-ID: 0010.0100.1001.00, Start LSP-ID: 0000.0000.0000.00-00, End LSP-ID: ffff.ffff.ffff.ff-ff
26 2026-09-10 20:47:43.261362 52:54:00:ed:a5:21 → 09:00:2b:00:00:05 ISIS LSP 130 L2 LSP, LSP-ID: 0020.0200.2002.00-00, Sequence: 0x0000000d, Lifetime: 1199s
27 2026-09-10 20:47:43.765201 52:54:00:fa:e5:1c → 09:00:2b:00:00:05 ISIS PSNP 52 L2 PSNP, Source-ID: 0010.0100.1001.00
28 2026-09-10 20:47:44.258382 52:54:00:fa:e5:1c → 09:00:2b:00:00:05 ISIS LSP 131 L2 LSP, LSP-ID: 0010.0100.1001.00-00, Sequence: 0x0000000f, Lifetime: 1199s
29 2026-09-10 20:47:44.258599 52:54:00:fa:e5:1c → 09:00:2b:00:00:05 ISIS LSP 80 L2 LSP, LSP-ID: 0020.0200.2002.01-00, Sequence: 0x00000008, Lifetime: 330s
30 2026-09-10 20:47:44.258728 52:54:00:fa:e5:1c → 09:00:2b:00:00:05 ISIS LSP 107 L2 LSP, LSP-ID: 0030.0300.3003.00-00, Sequence: 0x00000009, Lifetime: 987s
31 2026-09-10 20:47:44.258970 52:54:00:fa:e5:1c → 09:00:2b:00:00:05 ISIS LSP 107 L2 LSP, LSP-ID: 0040.0400.4004.00-00, Sequence: 0x00000009, Lifetime: 534s
32 2026-09-10 20:47:44.261847 52:54:00:ed:a5:21 → 09:00:2b:00:00:05 ISIS PSNP 52 L2 PSNP, Source-ID: 0020.0200.2002.00
34 2026-09-10 20:47:44.347718 52:54:00:ed:a5:21 → 09:00:2b:00:00:05 ISIS CSNP 132 L2 CSNP, Source-ID: 0020.0200.2002.00, Start LSP-ID: 0000.0000.0000.00-00, End LSP-ID: ffff.ffff.ffff.ff-ff
35 2026-09-10 20:47:44.762934 52:54:00:ed:a5:21 → 09:00:2b:00:00:05 ISIS PSNP 100 L2 PSNP, Source-ID: 0020.0200.2002.00
38 2026-09-10 20:47:55.692508 52:54:00:ed:a5:21 → 09:00:2b:00:00:05 ISIS LSP 80 L2 LSP, LSP-ID: 0020.0200.2002.01-00, Sequence: 0x00000009, Lifetime: 1200s
39 2026-09-10 20:47:56.197774 52:54:00:fa:e5:1c → 09:00:2b:00:00:05 ISIS PSNP 52 L2 PSNP, Source-ID: 0010.0100.1001.00
40 2026-09-10 20:47:59.270912 52:54:00:ed:a5:21 → 09:00:2b:00:00:05 ISIS LSP 107 L2 LSP, LSP-ID: 0040.0400.4004.00-00, Sequence: 0x0000000a, Lifetime: 1200s
41 2026-09-10 20:47:59.775063 52:54:00:fa:e5:1c → 09:00:2b:00:00:05 ISIS PSNP 52 L2 PSNP, Source-ID: 0010.0100.1001.00Resynchronisation runs in this order.
20:47:43.258357R1 sends a CSNP (No.25). Start LSPID0000.0000.0000.00-00and End LSPIDffff.ffff.ffff.ff-ffmake it a single table of contents covering the whole database20:47:43.261362R2 reads that CSNP, sees that its own LSP is stale on the far side, and sends0x0000000dback (No.26). This is 7.3.15.2 c): send what is newer than the CSNP reported20:47:44.258382onwards, R1 sends four LSPs together (No.28 to 31), following clause 7.3.17: when a point-to-point circuit starts, set SRM on every LSP. R2’s own LSP (0020.0200.2002.00-00) is the only one missing, because R1 had just received a newer copy of it20:47:44.347718R2 sends its CSNP too (No.34)
Across this seven-minute capture, only two CSNPs crossed the point-to-point link, No.25 and No.34. Not one periodic CSNP followed.
Download the STEP 2 point-to-point capture (7 minutes)
Download the STEP 2 LAN capture (7 minutes)
STEP 3: reverting
Loopback1 and Loopback2 were removed from both IS-IS and the interface configuration. All four running-config files match STEP 0.
Verification configs and show output
Each STEP was captured from all four routers as four 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, and the show isis set (interface, neighbors detail, database detail, topology, adjacency-log, spf-log, lsp-log, statistics) |
..._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 |
..._run.txt | show running-config at that STEP (the verification config for that STEP) |
..._trace.txt | show isis trace all filtered to the flooding events (UPD_LSP_ACCEPT, UPD_LSP_SET_SRM, UPD_SNP_ENTRY, UPD_CSNP, UPD_PSNP) |
step2_..._linkdown.txt | show isis database on R1 and R2 while the link is down in STEP 2, recording the divergence before it is repaired |
STEP 0: Initial state
| Router | show | syslog | running-config | trace |
|---|---|---|---|---|
| R1 | show | log | run | trace |
| R2 | show | log | run | trace |
| R3 | show | log | run | trace |
| R4 | show | log | run | trace |
STEP 1: Add Loopback1 (172.16.1.1/32) on R1
| Router | show | syslog | running-config | trace |
|---|---|---|---|---|
| R1 | show | log | run | trace |
| R2 | show | log | run | trace |
| R3 | show | log | run | trace |
| R4 | show | log | run | trace |
STEP 2: Shut down R1 - R2, add Loopback2, then no shutdown
| Router | show | syslog | running-config | trace |
|---|---|---|---|---|
| R1 | show | log | run | trace |
| R2 | show | log | run | trace |
| R3 | show | log | run | trace |
| R4 | show | log | run | trace |
STEP 3: Revert everything (final state)
| Router | show | syslog | running-config | trace |
|---|---|---|---|---|
| R1 | show | log | run | trace |
| R2 | show | log | run | trace |
| R3 | show | log | run | trace |
| R4 | show | log | run | trace |
References
| Standard | Title | Summary |
|---|---|---|
| ISO/IEC 10589:2002 (second edition) | Intermediate System to Intermediate System intra-domain routeing information exchange protocol | The IS-IS specification itself. This article draws on 7.3.14.1 for the basic flooding rule, 7.3.14.2 for the action on receipt, 7.3.15 for the SRM and SSN flag definitions, 7.3.15.1 for the three branches, 7.3.15.3 for when CSNPs are sent, 7.3.15.4 for PSNPs, 7.3.15.5 for the retransmission interval, and 7.3.17 for acknowledgement. |
| RFC 1195 | Use of OSI IS-IS for Routing in TCP/IP and Dual Environments | The extension that carries IP routes. |
| RFC 1142 | OSI IS-IS Intra-domain Routing Protocol | A republication of the ISO Draft Proposal (1990), now Historic. It must not be cited in place of ISO/IEC 10589 (RFC 7142). |
| RFC 7142 | Reclassification of RFC 1142 to Historic | States that the document to cite is ISO/IEC 10589:2002, second edition. |
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