ISIS csnp-interval


The CSNP on multiaccess networks

The CSNP (Complete Sequence Number PDU) on multi-access networks is being sent out on behalf of the DIS (Designated Intermediate System), which acts as the pseudonode representing the multi-access network. Its being used as ISIS’s way of making sure everybody on the multi-access network is up to date. If thats not the case, the node which is missing some routing information can use PSNP (Partial Sequence Number PDU)’s to request the missing information from the DIS.

The csnp-interval is simply the timer that controls how often the DIS sends out this CSNP. The default on IOS (and XR) is every 10 seconds.

Its important to know that a separate timer is kept for both level–1 and level–2 DIS.

For this example i will be using the topology listed in figure 1:

Topology

Take note of the fact that i have manually set the Mac address on the routers to make it more obvious which router is the DIS from the point of view of debugs.

Since everybody has the same priority (default 64), the highest SNPA (SubNet Point of Attachment), which translates to the Mac address, will be used as the tiebreaker. Highest one wins. In our case this will be R3.

The output below highlights this fact:

R1#sh isis nei
System Id      Type Interface   IP Address      State Holdtime Circuit Id
R2             L2   Fa1/0       100.100.100.2   UP    28       R3.01
R3             L2   Fa1/0       100.100.100.3   UP    7        R3.01

Now to prove the CSNP timer, lets look at what our debugs are telling us:

R1#
*Jun 24 16:58:10.267: ISIS-Snp: Rec L2 CSNP from 0000.0000.0003 (FastEthernet1/0)
*Jun 24 16:58:10.267: ISIS-SNP: CSNP range 0000.0000.0000.00-00 to FFFF.FFFF.FFFF.FF-FF
*Jun 24 16:58:10.267: ISIS-SNP: Same entry 0000.0000.0001.00-00, seq 6
*Jun 24 16:58:10.267: ISIS-SNP: Same entry 0000.0000.0002.00-00, seq 4
*Jun 24 16:58:10.267: ISIS-SNP: Same entry 0000.0000.0003.00-00, seq 3
*Jun 24 16:58:10.267: ISIS-SNP: Same entry 0000.0000.0003.01-00, seq 2
R1#
*Jun 24 16:58:19.467: ISIS-Snp: Rec L2 CSNP from 0000.0000.0003 (FastEthernet1/0)
*Jun 24 16:58:19.471: ISIS-SNP: CSNP range 0000.0000.0000.00-00 to FFFF.FFFF.FFFF.FF-FF
*Jun 24 16:58:19.471: ISIS-SNP: Same entry 0000.0000.0001.00-00, seq 6
*Jun 24 16:58:19.471: ISIS-SNP: Same entry 0000.0000.0002.00-00, seq 4
*Jun 24 16:58:19.471: ISIS-SNP: Same entry 0000.0000.0003.00-00, seq 3
*Jun 24 16:58:19.475: ISIS-SNP: Same entry 0000.0000.0003.01-00, seq 2
R1#
*Jun 24 16:58:27.639: ISIS-Snp: Rec L2 CSNP from 0000.0000.0003 (FastEthernet1/0)
*Jun 24 16:58:27.643: ISIS-SNP: CSNP range 0000.0000.0000.00-00 to FFFF.FFFF.FFFF.FF-FF
*Jun 24 16:58:27.643: ISIS-SNP: Same entry 0000.0000.0001.00-00, seq 6
*Jun 24 16:58:27.643: ISIS-SNP: Same entry 0000.0000.0002.00-00, seq 4
*Jun 24 16:58:27.643: ISIS-SNP: Same entry 0000.0000.0003.00-00, seq 3
*Jun 24 16:58:27.643: ISIS-SNP: Same entry 0000.0000.0003.01-00, seq 2

Roughly every 10 seconds R1 receives a L2 frame containing the CSNP from R3 (0000.0000.0003). So at least the theory is spot on. Now lets modify the timer to see if it kicks in:

R3(config)#
 R3(config)#int f1/0
 R3(config-if)#isis csnp-interval 20

So now on R1, we should see the CSNP arrive every 20 seconds instead:

R1#
*Jun 24 16:59:32.883: ISIS-Snp: Rec L2 CSNP from 0000.0000.0003 (FastEthernet1/0)
*Jun 24 16:59:32.883: ISIS-SNP: CSNP range 0000.0000.0000.00-00 to FFFF.FFFF.FFFF.FF-FF
*Jun 24 16:59:32.883: ISIS-SNP: Same entry 0000.0000.0001.00-00, seq 6
*Jun 24 16:59:32.883: ISIS-SNP: Same entry 0000.0000.0002.00-00, seq 4
*Jun 24 16:59:32.887: ISIS-SNP: Same entry 0000.0000.0003.00-00, seq 3
*Jun 24 16:59:32.887: ISIS-SNP: Same entry 0000.0000.0003.01-00, seq 2
R1#
*Jun 24 16:59:49.679: ISIS-Snp: Rec L2 CSNP from 0000.0000.0003 (FastEthernet1/0)
*Jun 24 16:59:49.679: ISIS-SNP: CSNP range 0000.0000.0000.00-00 to FFFF.FFFF.FFFF.FF-FF
*Jun 24 16:59:49.679: ISIS-SNP: Same entry 0000.0000.0001.00-00, seq 6
*Jun 24 16:59:49.679: ISIS-SNP: Same entry 0000.0000.0002.00-00, seq 4
*Jun 24 16:59:49.679: ISIS-SNP: Same entry 0000.0000.0003.00-00, seq 3
*Jun 24 16:59:49.679: ISIS-SNP: Same entry 0000.0000.0003.01-00, seq 2
R1#
*Jun 24 17:00:07.479: ISIS-Snp: Rec L2 CSNP from 0000.0000.0003 (FastEthernet1/0)
*Jun 24 17:00:07.483: ISIS-SNP: CSNP range 0000.0000.0000.00-00 to FFFF.FFFF.FFFF.FF-FF
*Jun 24 17:00:07.483: ISIS-SNP: Same entry 0000.0000.0001.00-00, seq 6
*Jun 24 17:00:07.483: ISIS-SNP: Same entry 0000.0000.0002.00-00, seq 4
*Jun 24 17:00:07.483: ISIS-SNP: Same entry 0000.0000.0003.00-00, seq 3
*Jun 24 17:00:07.487: ISIS-SNP: Same entry 0000.0000.0003.01-00, seq 2

And lo and behold, its working!

Conclusion

With this command you have the ability to modify how often a DIS sends out the required CSNP (Complete Sequence Number PDU). Unless you have a certain requirement that requires you to change this timer, its default of 10 seconds should be able to scale to very large multi-access networks.

I hope the explanation of this timer has been useful to you.