IS-IS 101 - Unraveling the Enigma
IS-IS is a very powerful Link-State routing protocol that is often overlooked and shied away from. Officially removed from Cisco's CCNP Routing and Switching Certification Track, as of 2012, it is no surprise that many Network Technicians lack basic familiarity with the protocol. I personally have never touched on IS-IS at all throughout my career until very recently, being tasked with making Metric changes within my Company's Core Network. Therefore I have began studying the ins-and-outs of IS-IS and documenting my understanding. Below I will give an overview of the development, operation and basic configuration of the IS-IS Routing Protocol.
ISIS was developed in 1992 by the ISO (International Organization for Standardization), best known for being the originators of the OSI model. ISIS was never invented to be used with TCP/IP, and was in fact intended to route ISO's own (unsuccessful) addressing protocol called CLNP. The underlying technology, however, allows ISIS and IP to in fact work very well together.
Similar to OSPF, ISIS uses an area-centric architecture for differentiation of the access network (area) and core network (station) .
In order for each ISIS host to formulate a topology, each device is designated an "Intermediate-System" (IS-Type). This instructs the device whether it will act as a station router, an area router, or combination of the two.
Each device will be also given a "Net", in Cisco syntax, that designates it's Area (High Order DSP) and unique System ID. Unlike OSPF, devices are assigned an area globally, and will not have any interfaces in other areas. The device ID is to differentiate between devices in the same area.
You may have noticed by now that ISIS is extremely device-focused, which heavily influenced by the network designs of the era. Nevertheless the powerful underlying technology means it can scale extremely well.
So, the protocol we know as IS-IS is officially named Integrated IS-IS (RFC 1195), otherwise known as Dual IS-IS, as it has been integrated with IP for layer 3 compatibility. However, the original IS-IS development actually integrated with CLNP and ES-IS to support CLNP addressing, and was renamed by the ISO themselves as Connectionless Network Service
(CLNS). Thus, the name IS-IS became available once again and the "Integrated" prefix was soon dropped, coming full-circle.
CLNS address example:
Here is an example of a basic IS-IS device configuration. First, the Global configurations designates the device a System ID and sets Area parameters:
Router(config)# router isis //enable process Router(config-router)# net 49.0001.1921.6800.5005.00 //set CLNP address Router(config-router)# is-type level-<1/1-2/2> //set IS-Type
Next, we enable IS-IS operation on a per-interface basis:
Router(config)# interface fa0/0 Router(config-if)# ip router isis //enable interfaces for IS-IS operation Router(config-if)# isis priority 100 //set interface priority for DIS election
Enabling the IS-IS process operation on an interface is required in order to begin Neighbor Discovery on that port, and also adds the Interface IP Address into the IS-IS Topology Table. Priority is used for the DIS (Designated-IS) election, which is near identically to OSPF's DR elections (minus the Backup idea). The IS-Type can also be overridden on each individual interface:
Router(config)# interface Gig 0/0 Router(config-if)# isis circuit-type level-1 Router(config)# interface TenGig 1/0 Router(config-if)# isis circuit-type level-1-2
Once each device has been assigned an Area, a IS-Type and an ID, they will begin working to generate 3 tables:
- Neighbor Table
- Topology Table (similar to OSPF's LSDB)
- Routing Table
And they can achieve this with only 4 different packet types:
- Hello (Neighbor Discovery)
- LSP (Link State Packet, for Level 1 and Level 2 topology sharing)
- CSNP (Complete Sequence Number PDU, containing full Link-state Database)
- PSNP (Partial Sequence Number PDU, for requesting and acknowledging CSNPs)
Hello packets are exchanged initially for network discovery, advertising IS-IS parameters to potential neighbors. Every device will record their Neighbor's details in a Neighbor Table, and maintain a Hello-based relationship to ensure reachability. IS-IS uses Hello/Hold timings of 3 and 9 seconds respectively by default, but can be configured for sub-second reconvergence by configuring the Hold Timer as 1 second (thereby setting a 0.33 second Hello-interval).
Once a Neighbor relationship has been formed, LSPs (Level 1 and 2 Link State Packets, to be precise) are then exchanged to share topology information between routers in the same area and populate their Topology Table, which is very similar to OSPF's LSDB (Link-State Database). Devices attached to both Areas, Level 1 and Level 2, will flag this in their LSP's to let Neighbors know, and will exchange LSP's with devices both Levels.
We can verify IS-IS adjacencies as follows:
Router# show isis neighbors detail System Id Type Interface IP Address State Holdtime Circuit Id Device2 L2 Et1/0 10.1.1.0 UP 255 Circuit3.01 Area Address(es): 32 SNPA: dead.beef.c0fe State Changed: 00:00:30 LAN Priority: 24 Format: Phase V
And to view the IS-IS Topology Table:
Router#show isis topology IS-IS paths to level-2 routers System Id Metric Next-Hop Interface SNPA 0102.5400.5001 10 0102.5400.5001 Fa1/0/1 0102.5400.5003 20 0102.5400.5001 Gi0/0/1 0102.5400.5004 10 0102.5400.5001 Gi0/0/2
Once a device has a full Topology Table, they will run Dijkstra's Shortest Path Algorithm on the resultant Metrics to calculate Best Paths worthy of entry into the Routing Table. In normal operation, all devices will exchange CSNP Packets containing the complete LSDB via broadcast every 15 seconds, and will send PSPNs to both request and acknowledge these updates. IS-IS has now converged and standard operation can commence. Level-1 routers will route packets destined for the local
area to the System ID of the device announcing the destination network as per the Level-1 topology table. Level-1 routes are always preferred over Level-2 routes. If a Level-1 router has a packet destined for a remote area, it forwards it to the nearest Level-1-2 router.
In this sense, IS-IS can exchange routes as effectively as OSPF, while fundamentally being independent of IP itself. Pretty cool.
This has been a quick look at IS-IS from a very high-level. I look forward to becoming more familiar with the Protocol with more involved practical experience in the future.
Thanks for reading!