IS-IS is an IGP, link-state routing protocol, similar to OSPF. It forms neighbor adjacencies, has areas, exchanges link-state packets, builds a link-state database and runs the Dijkstra SPF algorithm to find the best path to each destination, which is installed in the routing table.
Back when OSPF and IS-IS were developed, IP wasn’t the dominant protocol that it is today. When people think of OSI they automatically think of the OSI-model but back then, ISO (International Organization for Standardization) also created something similar to IP and UDP called CLNP (Connectionless-mode Network Protocol) and CLNS (Connectionless-mode Network Service).
ISO also uses some different terminology, for example:
- Router = Intermediate system
- Host = End system
Unlike OSPF which was developed by the IETF (Internet Engineering Task Force), IS-IS was originally developed by DEC for CLNS, not IP and this is why it’s called IS-IS (Intermediate System – Intermediate System).
Later, IS-IS was adapted so that it could also route IP and is then called integrated IS-IS.
Nowadays, we use IP everywhere so you might wonder why we care about this. When working with IS-IS, you will see some references to CLNP/CLNS here and there. For example, when configuring a router ID (called a Network Entity Title), it has to be configured with the NSAP (Network Service Access Point Address) format. NSAP is similar to an IP address, and it is not automatically configured so we have to understand its format.
IS-IS also rides directly on top of an Ethernet header, using its own header format. It’s not encapsulated in an IP packet like other routing protocols (OSPF and EIGRP) are:
IS-IS is a highly scalable routing protocol, which is why it is used often on large service provider network backbones. In this lesson I will give you an overview of what IS-IS is and how it works.
Areas and Router Roles
IS-IS uses different areas where the entire router sits in an area, not just one of its interfaces like with OSPF. There is no backbone area, the backbone is formed by a string of routers.
There are three types of routers:
- Level 1 system: this is an intra-area router, it only knows what the local area looks like and will only learn prefixes from its own area. It creates a level 1 link-state database and SPF tree for the area.
- Level 2 system: this is a backbone router that knows all intra-area and inter-area routes. It creates a level 2 link-state database and SPF tree for the backbone.
- Level 1-2 system: this is a router that performs both roles. It creates a separate level 1 and 2 link-state database and two SPF trees, one for each database.
Similar to other routing protocols like OSPF and EIGRP, IS-IS routers will send hello packets. When you send and receive hello packets, you will form a neighbor adjacency. Routers will only form neighbor adjacencies with routers that use the same level.
Let’s look at some examples to help you visualize this. Let’s start with a single area:
Above we have two routers in a single area. There is only one area so these two routers are configured as level 1 routers. These two routers will form a level 1 neighbor adjacency. Let’s add a second area:
Level 1 routers only know what the local area looks like. If a level 1 router wants to reach something outside of its area, it has to use a level 2 router. In each area, we configure one router as a level 1-2 router.
These level 1-2 routers will establish two neighbor adjacencies:
- Level 1 neighbor adjacency with the router in the same area.
- Level 2 neighbor adjacency with the router in the other area.
Here is one more example, a larger topology that gives a good overview of the different router levels and adjacencies:
Above you see two interesting things:
- The router in area 4 is a level 2 backbone router. There are no level 1 routers in area 4 so we don’t need a level 1-2 router there.
- Area 3 has two level 1-2 routers. These routers will form two neighbor adjacencies with each other:
- Level 1 adjacency
- Level 2 adjacency
The level two routers form a continuous string of backbone routers:
LSPs (Link State Packets)
Let’s talk about how IS-IS exchanges routing information. It uses LSPs (Link State Packet) which is similar to OSPF’s LSAs. In the LSP you will find:
- One or more prefixes
- Adjacent neighbors
Let’s take a closer look at how IS-IS uses LSPs to exchange routing information. Let’s start with two routers that are configured to use IS-IS but there is no neighbor adjacency yet:
Each router will create an LSP (illustrated with the green jigsaw) . In the LSP we find the directly connected networks that are advertised in IS-IS. A few seconds later, these routes become neighbors:
R1 and R2 are in the same area so they will establish a level 1 neighbor adjacency. These routers will flood their LSPs within the area so that everyone knows about all LSPs in the area. The two routers add each others LSP in their database. These routers can now run SPF on their level 1 database and figure out the shortest path to each destination.
Let’s say we want to connect area 12 to another area, this means we need a level 2 router. Let’s convert R2 into a level 1-2 router so I can show you what will happen. At this moment, we start with a clean slate so there is no neighbor adjacency between R1 and R2:
R2 now has a second database, the level 2 database. Besides its level 1 database and level 1 LSP, it now also has a level 2 database. It generates a level 2 LSP and all prefixes for interfaces that are directly connected and advertised in IS-IS.
A few seconds later, R1 and R2 form a level 1 neighbor adjacency:
Once again, R1 and R2 will exchange their level 1 LSPs. R2 receives the level 1 LSP from R1 and it copies new prefixes from its level 1 database to the LSP in the level 2 database. In my example, that is 126.96.36.199/32 from R1.
Let’s continue this story. I will add a second area now, similar to area 12. There is no connection yet between the two areas but the routers have formed a level 1 neighbor adjacency within the area:
As you can see above, R4 has learned about the 188.8.131.52/32 prefix from R1 and copies this prefix from the LSP in the level 1 database to its own LSP in the level 2 database.
Now we will create a connection between the two areas and enable IS-IS on this link Something exciting will happen: