First some explanation about why one would want to use IS-IS over OSPF in the first place. After all, both are link-state routing protocols and OSPF is much more familiar to most. However, there are a few key differences in design of the protocols. But the most important reason to choose IS-IS over OSPF is scalability. IS-IS scales to larger topologies compared to OSPF using the same resources. A general recommendation for the number of OSPF routers in an area is between 70 and 100 maximum, while IS-IS will do 150 routers in an area (of course, the number of uplinks, routes and type of routers will influence this number). The difference in multi-area design can also make IS-IS more suitable for some topologies.

IS-IS has a concept of areas but refers to it as ‘levels’. On a Cisco router the IS-IS routing protocol will try to form neighborships for both level 1 and level 2 by default. When using just one area, it’s best to configure the routing protocol to form neighborship of level 1 only.

A Network Entity Title (NET) is used to identify a router. It is made up of four parts: the first byte is an Authority and Format Identifier (AFI), next two bytes that define the area, followed by six bytes that act as a unique identifier (much like an OSPF router-id) and one byte for n-selector (NSEL). This NSEL is always set to zero for IS-IS for IP (non-zero values are used for actual data transport over CLNS, which likely isn’t used anywhere anymore). The AFI must be officially registered but 49 can be used for internal addressing. As a consequence, the first six bytes (AFI and area ID) have to be the same for all IS-IS routers in an area, and the following six bytes have to be unique for each IS-IS router in an area.

Here is a basic configuration.

R1(config)# router isis
R1(config-router)# log-adjacency-changes
R1(config-router)# is-type level-1
R1(config-router)# net 49.0001.0000.0000.0017.00
R1(config-router)# exit
R1(config)# interface GigabitEthernet0/1
R1(config-if)# ip address 10.0.2.1 255.255.255.252
R1(config-if)# ip router isis
R1(config-if)# exit
R1(config)# interface Loopback0
R1(config-if)# ip address 10.0.19.14 255.255.255.252
R1(config-if)# exit
R1(config)# router isis
R1(config-router)# passive-interface Loopback0
R1(config-router)# exit

Notice that we have to enable IS-IS on a per-interface basis with the ip router isis command even after we started the router isis process, as there is no network command in IS-IS.