Multitopology

ISIS does not use IP (layer 3) to communicate. ISIS operates at layer 2, which makes it agnostic to layer 3 information. In ISIS it is very easy to add IPv6 support, whereas OSPF required an entire new version, OSPFv3.

If you’d like to run IPv4 and IPv6 in ISIS you have a choice - multi-topology or single topology. What is confusing is that, by default, IOS-XE uses single topology and IOS-XR uses multi-topology.

Single topology

In this case, a single topology is used, and both IPv4 and IPv6 prefixes are placed in this topology. IPv4 and IPv6 prefixes advertised by the same node will always have identical paths, because only a single topology is used to calculate paths. The benefit of single topology is that it requires only a single SPF run for both IPv4 and IPv6 shortest path determination.

Multi-topology

In this case, there is a topology for only IPv4, and a separate topology for only IPv6. Paths between two nodes for IPv4 and IPv6 prefixes on the same node can be different, as there is a topology for calculating IPv4 paths and a separate topology for calculating IPv6 paths. The benefit of this is that each router in the area can run only IPv4, only IPv6, or a mix. (With single topology, all routers have to support both IPv4 and IPv6). Another benefit is that you can control paths for IPv4 and IPv6 traffic independently. The drawback is that you have two full SPFs runs when determining paths for IPv4 and IPv6 destinations.

Lab (Single Topology)

We will use the following topology to examine single topology and multi-topology.

Here are the startup-configs:

You can verify that routers in the area are running single-topology by looking at their NLPID (Network Layer Protocol ID) in the LSPDB. 0xCC is IPv4 and 0x8E is IPv6.

What happens if a single router is not running IPv6? Let’s turn IPv6 off on R2.

0x8E (IPv6) is now missing from the NLPID. R2’s neighbors bring down the adjacency as the neighborship is no longer valid. Neighbors must agree and match on the supported NLPIDs.

R1 is now isolated, and has no reachability to the ISIS area.

Now you can see why multi-topology would be necessary for this scenario. If you wanted to strategically enable IPv6 and turn of IPv4 on your internal links, router by router, you could not run single-topology.

Let’s turn IPv6 routing back on. We also have to re-add the ipv6 address-family for ISIS under each interface again.

Next we’ll explore path selection for IPv4 and IPv6 traffic with single topology. What happens if we try to force traffic from R1 to XR3 to take the path R1-R2-R4-XR3? Let’s try to change the ipv6 metric for Gi3 on R2 to 30. This should make the path R1-R2-XR3 = 50, which is worse than R1-R2-R4-XR3 = 40.

The metric to XR3 is still 10. The ipv6 metric has no effect since this is single-topology. In single-topology, IPv6 “uses” the IPv4 topology. Let’s remove the ipv6 metric and configure the regular isis metric.

The metric is set correctly now, but both IPv4 and IPv6 traffic goes through the path R1-R2-R4-XR3.

The only way to force IPv4 and IPv6 traffic to take separate paths is to create a separate topology for each address-family.

Lab (Multi-Topology)

Let’s now configure multi-topology. This is the default on IOS-XR, so we will remove the single-topology statement from before. We’ll need to add the multi-topology statement to IOS-XE, since single-topology is the default on IOS-XE. To use multi-topology, we must enable wide metrics. You only set multi-topology on the IPv6 address-family.

Let’s pause here and examine the consequences of configuring this. R1 is running wide metrics and multi-topology. R2 is running wide metrics but single topology. All other routers are normal metrics and single topology.

R1’s adjacency with R2 stays up, because they both support 0xCC and 0x8E. However there is an additional TLV (237), Multi-Topology Reachable IPv6 prefixes, which R1 is using. This is not compatible with single topology for IPv6, which uses TLV 236 for IPv6 prefixes. So while the adjacencies stay up, R1 cannot reach any IPv6 prefixes advertised by other single topology routers. Similarly, single topology routers cannot reach any IPv6 prefixes behind R1.

However, while IPv6 is broken, you can see that IPv4 reachability still works fine. (Not all prefixes are in the RIB because only R2 is running wide-metrics right now).

There is an additional parameter you can use when you setup multi-topology, which is transition. This allows the router to generate the regular IPv6 TLVs as well as the multi-topology TLVs.

Looking at R1’s LSP, we can see that it is now advertising the normal IPv6 TLVs in addition to the multi-topology TLVs. Now IPv6 works, and you could convert all routers to multi-topology, and then remove the transition keyword.

Let’s continue configuring all routers for multi-topology.

Now that we are running multi-topology, what happens if we turn IPv6 routing off on R2 again? Will IPv4 reachability still work, or will it be broken like it was when we were running single-topology?

R1 has retained the IPv4 routes, but lost all IPv6 routes. This is because its only neighbor is R2, and R2 is no longer running the ISIS IPv6 address-family. This is different from single-topology, where turning off IPv6 broke IPv4 reachability as well.

Let’s turn IPv6 back on, on R2.

Let’s try our attempt to route traffic destined for XR3’s IPv6 loopback address along the path R1-R2-R4-XR3, but keep traffic destined to the IPv4 loopback along the path R1-R2-XR3. To do this, we’ll increase the ipv6 isis cost on Gi3 of R2.

Success! The IPv4 and IPv6 traffic takes separate routes, because they are using completely separate topologies.

Comparing ST and MT show commands

Single topology

  • “Topology” is missing, and IPv6 prefixes do not show “(MT-IPv6)”

  • There is no separate topology for IPv6. IPv6 is currently working right now, it is just using the IP topology.

  • Oddly, IOS-XR shows two topologies even though it is running ST.

  • This command is only available in IOS-XR, however in testing it does not indicate whether you are using ST or MT. Both scenarios show the same output.

Multi-topology

  • You see Topology and that IPv6 prefixes use (MT-IPv6). There is also two reachability metrics to neighbors, one for IPv4, and one for IPv6 which says IS (MT-IPv6).

  • In MT, you can have different metrics for IP and IPv4 to a given router. You will not see the IPv6 topology at all on IOS-XE if running ST.

  • I see no difference compared to ST with this output.

  • IOS-XR directly shows the two topologies, however this is the same output as in ST.

  • This command is only available in IOS-XR, however in testing it does not indicate whether you are using ST or MT. Both scenarios show the same output.

Conclusion

When you running ISIS for IPv6, you have two options. You can use single topology, which is the default on IOS-XE, in which IPv4 and IPv6 prefixes share the same underlying topology. You can also use multi-topology, the default on IOS-XR, in which IPv4 and IPv6 each have their own separate topology.

Remember that the underlying ISIS topology is not built on IPv4 addresses as in OSPFv2. The topology is simply a map of routers and the links between them. Separate TLVs are used to advertise IPv4 and IPv6 prefixes that are reachable by routers.

The benefits of single topology are that only a single SPF run is needed when calculating best paths for IPv4 and IPv6 prefixes, since both prefixes reside on the same topology.

The benefits of multi-topology are that you can steer IPv4 and IPv6 traffic along different paths by using IPv4 metrics and IPv6 metrics. Each metric only affects the respective topology. The other benefit is that you can gracefully migrate from IPv4 to IPv6-only. With single topology, if you turn off IPv6, it completely breaks the adjacency. However, with multi-topology, you can safely turn off IPv6 on a router and continue to have IPv4 reachability. Remember that when using multi-topology, you must use wide-metrics for the IPv6 address-family.

Last updated