ISIS configuration options

Communication between areas

Each Level-1 area is essentially a stub area. Packets destined for an address that is outside of the Level-1 area are routed to the closest Level-1-2 router to be forwarded on to the destination area. The attached-bit is a bit set in LSP packets that Level-1-2 routers send to Level-1 routers. When the Level-1 router receives the LSP with the attached-bit bit is set, it creates a default route pointing toward the neighbor to provide a default route out of the Level-1 area. The below setup shows how the rt1 device creates a default route.

rt1

rt1 running vrf main# interface physical eth0
rt1 running physical eth0#! port pci-b0s5
rt1 running physical eth0# ipv4 address 20.6.1.2/24
rt1 running physical eth0# ..
rt1 running vrf main# physical eth1
rt1 running physical eth1#! port pci-b0s4
rt1 running physical eth1# ipv4 address 20.3.1.2/24
rt1 running physical eth1# .. ..
rt1 running vrf main# routing isis instance 1
rt1 running instance 1# area-address 49.0002.0000.1994.00
rt1 running instance 1# .. ..
rt1 running routing# interface eth0
rt1 running interface eth0# isis ipv4-routing true
rt1 running interface eth0#! isis area-tag 1
rt1 running interface eth1# isis circuit-type level-1
rt1 running interface eth0# ..
rt1 running routing# interface eth1
rt1 running interface eth1# isis ipv4-routing true
rt1 running interface eth1#! isis area-tag 1
rt1 running interface eth1# isis circuit-type level-1
rt1 running interface eth1#

rt2

rt2 running vrf main# interface physical eth0
rt2 running physical eth0#! port pci-b0s5
rt2 running physical eth0# ipv4 address 20.3.1.4/24
rt2 running physical eth0# ..
rt2 running vrf main# physical eth1
rt2 running physical eth1#! port pci-b0s4
rt2 running physical eth1# ipv4 address 20.4.1.4/24
rt2 running physical eth1# .. ..
rt2 running vrf main# routing isis instance 1
rt2 running instance 1# area-address 49.0004.0000.1994.00
rt2 running instance 1# .. ..
rt2 running routing# interface eth0
rt2 running interface eth0# isis ipv4-routing true
rt2 running interface eth0#! isis area-tag 1
rt2 running interface eth0# ..
rt2 running routing# interface eth1
rt2 running interface eth1# isis ipv4-routing true
rt2 running interface eth1#! isis area-tag 1
rt2 running interface eth1# isis circuit-type level-2
rt2 running interface eth1#

rt3

rt3 running vrf main# interface physical eth0
rt3 running physical eth0#! port pci-b0s5
rt3 running physical eth0# ipv4 address 20.4.1.3/24
rt3 running physical eth0# ..
rt3 running vrf main# physical eth1
rt3 running physical eth1#! port pci-b0s4
rt3 running physical eth1# ipv4 address 20.1.1.3/24
rt3 running physical eth1# .. ..
rt3 running vrf main# routing isis instance 1
rt3 running instance 1# area-address 49.0003.0000.1994.00
rt3 running instance 1# .. ..
rt3 running routing# interface eth0
rt3 running interface eth0# isis ipv4-routing true
rt3 running interface eth0#! isis area-tag 1
rt3 running interface eth0# isis circuit-type level-2
rt3 running interface eth0# ..
rt3 running routing# interface eth1
rt3 running interface eth1# isis ipv4-routing true
rt3 running interface eth1#! isis area-tag 1
rt3 running interface eth1# isis circuit-type level-2
rt3 running interface eth1#
   rt1 running config# show isis route level-1
   Area 1:
   IS-IS L1 IPv4 routing table:

    Prefix       Metric  Interface  Nexthop   Label(s)
    ----------------------------------------------------
    0.0.0.0/0    10      ntfp3      20.3.1.4  -
    20.3.1.0/24  20      eth1       20.3.1.4  -
    20.4.1.0/24  20      eth1       20.3.1.4  -
    20.6.1.0/24  0       -          -         -

The below command on rt1 ignores the attached-bit bit. Consequently, no default route is created when receiving Level-1 routes.

rt1

rt1 running vrf main# routing isis instance 1
rt1 running instance 1# attached receive-ignore true
rt1 running instance 1#

An alternative consists in not setting the attached-bit bit. The below command on rt2 unsets the attached-bit bit.

rt1

rt1 running vrf main# routing isis instance 1
rt1 running instance 1# attached send false
rt1 running instance 1#

Note

Routing to the closest Level-1-2 router can lead to sub-optimal routing when the shortest path to the destination is through a different Level-1-2 router.

Multi-topology

By default, on a given Level, there is only one topology for all addresses families enabled on that level. The topology is getting populated with the IP and IPv6 reachability TLVs appended in the various systems. To forge the resulting routes, IS-IS does not take into account the connectivity of the reachability TLVs. The multi-topology parameter helps to dissociate the two IP and IPv6 topologies.

See also

RFC 5120 for details about multi-topology.

Note

Virtual Service Router does not support transition mode where multi-topology TLVs would be transmitted along with standard TLVs.

The below example illustrates a 4 device setup in a Level-1 area. All links have IP and IPv6 addresses. Only the link between rt2 and rt3 does not support IPv6.

../../../../_images/isis_ipv6_multi_topology.svg

IS-IS setup with 4 devices running on a single Level-1 area.

By using a basic IS-IS configuration on each device, rt4 discovers the topology and deduces that the IPv6 addresses located on rt1 are reachable via a route to rt3. The below command dumps the resulting topology. The emphasized lines give IPv6 information about rt1 and rt2, even if those IPs are not reachable.

rt4 running config# show isis topology level-1
Area 1:
IS-IS paths to level-1 routers that speak IP
[..]
IS-IS paths to level-1 routers that speak IPv6
Vertex               Type         Metric Next-Hop             Interface Parent
rt4
4:4::4:4/128         IP6 internal 0                                     rt4(4)
2005::/64            IP6 internal 0                                     rt4(4)
2008::/64            IP6 internal 0                                     rt4(4)
rt3                  TE-IS        10     rt3                  eth0      rt4(4)
rt2                  TE-IS        20     rt3                  eth0      rt3(2)
3:3::3:3/128         IP6 internal 20     rt3                  eth0      rt3(4)
rt1                  TE-IS        30     rt3                  eth0      rt1(2)
2:2::2:2/128         IP6 internal 30     rt3                  eth0      rt2(4)
2003::/64            IP6 internal 30     rt3                  eth0      rt2(4)
1:1::1:1/128         IP6 internal 40     rt3                  eth0      rt1(4)
2001::/64            IP6 internal 40     rt3                  eth0      rt1(4)
rt4 running config# show isis route
Area 1:
IS-IS L1 IPv4 routing table:
[..]
IS-IS L1 IPv6 routing table:

 Prefix        Metric  Interface  Nexthop                   Label(s)
 ---------------------------------------------------------------------
 1:1::1:1/128  40      eth0       fe80::dced:1ff:fe1c:1663  -
 3:3::3:3/128  20      eth0       fe80::dced:1ff:fe1c:1663  -
 4:4::4:4/128  0       -          -                         -
 2001::/64     40      eth0       fe80::dced:1ff:fe1c:1663  -
 2003::/64     40      eth0       fe80::dced:1ff:fe1c:1663  -
 2005::/64     0       -          -                         -
 2008::/64     0       -          -                         -

The above command displays the resulting IS-IS routes. The emphasized lines indicate the IPv6 routes that IS-IS installs on rt4. When attempting to ping rt1 from rt4, IPv6 traffic is blackholed on rt3. By enabling multi-topology for ipv6-unicast, no IPv6 route would have been installed on rt4 to reach rt1.

The below configuration is exposed below for the 4 devices with the appropriate multi-topology parameter. The derived IS-IS IPv6 topology will not populate the emphasized entries in the above show commands. With multi-topology, two distinct topologies are defined for each address family. A given path to reach an IPv6 endpoint is dissociated from a path to reach an IPv4 endpoint on the same system.

rt1

rt1 running vrf main# interface physical eth0
rt1 running physical eth0#! port pci-b0s4
rt1 running physical eth0# ipv4 address 20.1.1.1/24
rt1 running physical eth0# ipv6 address 2001::1/64
rt1 running physical eth0# ..
rt1 running interface# loopback loop1
rt1 running loopback loop1# ipv4 address 1.1.1.1/32
rt1 running loopback loop1# ipv6 address 1:1::1:1/128
rt1 running loopback loop1# ..
rt1 running interface# physical eth1
rt1 running physical eth1#! port pci-b0s6
rt1 running physical eth1# ipv4 address 20.3.1.1/24
rt1 running physical eth1# ipv6 address 2003::1/64
rt1 running physical eth1# .. ..
rt1 running vrf main# routing isis instance 1
rt1 running instance 1# area-address 49.0001.0000.1994.00
rt1 running instance 1# is-type level-1
rt1 running instance 1# multi-topology ipv6-unicast overload false
rt1 running instance 1# .. ..
rt1 running routing# interface eth0
rt1 running interface eth0# isis area-tag 1
rt1 running interface eth0#! isis ipv4-routing true
rt1 running interface eth0# isis ipv6-routing true
rt1 running interface eth0# isis network-point-to-point true
rt1 running interface eth0# ..
rt1 running routing# interface loop1
rt1 running interface loop1# isis area-tag 1
rt1 running interface loop1#! isis ipv4-routing true
rt1 running interface loop1# isis ipv6-routing true
rt1 running interface loop1# ..
rt1 running routing# interface eth1
rt1 running interface eth1# isis area-tag 1
rt1 running interface eth1#! isis ipv4-routing true
rt1 running interface eth1# isis ipv6-routing true
rt1 running interface eth1# isis network-point-to-point true
rt1 running interface eth1#

rt2

rt2 running vrf main# interface physical eth0
rt2 running physical eth0#! port pci-b0s5
rt2 running physical eth0# ipv4 address 20.3.1.2/24
rt2 running physical eth0# ipv6 address 2003::2/64
rt2 running physical eth0# ..
rt2 running interface# loopback loop1
rt2 running loopback loop1# ipv4 address 2.2.2.2/32
rt2 running loopback loop1# ipv6 address 2:2::2:2/128
rt2 running loopback loop1# ..
rt2 running interface# physical eth1
rt2 running physical eth1#! port pci-b0s6
rt2 running physical eth1# ipv4 address 20.4.1.2/24
rt2 running physical eth1# .. ..
rt2 running vrf main# routing isis instance 1
rt2 running instance 1# area-address 49.0002.0000.1994.00
rt2 running instance 1# is-type level-1
rt2 running instance 1# multi-topology ipv6-unicast overload false
rt2 running instance 1# .. ..
rt2 running routing# interface eth0
rt2 running interface eth0# isis area-tag 1
rt2 running interface eth0#! isis ipv4-routing true
rt2 running interface eth0# isis ipv6-routing true
rt2 running interface eth0# isis network-point-to-point true
rt2 running interface eth0# ..
rt2 running routing# interface loop1
rt2 running interface loop1# isis area-tag 1
rt2 running interface loop1#! isis ipv4-routing true
rt2 running interface loop1# isis ipv6-routing true
rt2 running interface loop1# ..
rt2 running routing# interface eth1
rt2 running interface eth1# isis area-tag 1
rt2 running interface eth1#! isis ipv4-routing true
rt2 running interface eth1# isis network-point-to-point true
rt2 running interface eth1#

rt3

rt3 running vrf main# interface physical eth0
rt3 running physical eth0#! port pci-b0s6
rt3 running physical eth0# ipv4 address 20.4.1.3/24
rt3 running physical eth0# ..
rt3 running interface# loopback loop1
rt3 running loopback loop1# ipv4 address 3.3.3.3/32
rt3 running loopback loop1# ipv6 address 3:3::3:3/128
rt3 running loopback loop1# ..
rt3 running interface# physical eth1
rt3 running physical eth1#! port pci-b0s4
rt3 running physical eth1# ipv4 address 20.5.1.3/24
rt3 running physical eth1# ipv6 address 2005::3/64
rt3 running physical eth1# .. ..
rt3 running vrf main# routing isis instance 1
rt3 running instance 1# area-address 49.0003.0000.1994.00
rt3 running instance 1# is-type level-1
rt3 running instance 1# multi-topology ipv6-unicast overload false
rt3 running instance 1# .. ..
rt3 running routing# interface eth0
rt3 running interface eth0# isis area-tag 1
rt3 running interface eth0#! isis ipv4-routing true
rt3 running interface eth0# isis network-point-to-point true
rt3 running interface eth0# ..
rt3 running routing# interface loop1
rt3 running interface loop1# isis area-tag 1
rt3 running interface loop1#! isis ipv4-routing true
rt3 running interface loop1# isis ipv6-routing true
rt3 running interface loop1# ..
rt3 running routing# interface eth1
rt3 running interface eth1# isis area-tag 1
rt3 running interface eth1#! isis ipv4-routing true
rt3 running interface eth1# isis ipv6-routing true
rt3 running interface eth1# isis network-point-to-point true
rt3 running interface eth1#

rt4

rt4 running vrf main# interface physical eth0
rt4 running physical eth0#! port pci-b0s6
rt4 running physical eth1# ipv4 address 20.5.1.4/24
rt4 running physical eth1# ipv6 address 2005::4/64
rt4 running physical eth0# ..
rt4 running interface# loopback loop1
rt4 running loopback loop1# ipv4 address 4.4.4.4/32
rt4 running loopback loop1# ipv6 address 4:4::4:4/128
rt4 running loopback loop1# ..
rt4 running interface# physical eth1
rt4 running physical eth1#! port pci-b0s4
rt4 running physical eth1# ipv4 address 20.8.1.4/24
rt4 running physical eth1# ipv6 address 2008::4/64
rt4 running physical eth1# .. ..
rt4 running vrf main# routing isis instance 1
rt4 running instance 1# area-address 49.0004.0000.1994.00
rt4 running instance 1# is-type level-1
rt4 running instance 1# multi-topology ipv6-unicast overload false
rt4 running instance 1# .. ..
rt4 running routing# interface eth0
rt4 running interface eth0# isis area-tag 1
rt4 running interface eth0#! isis ipv4-routing true
rt4 running interface eth0# isis ipv6-routing true
rt4 running interface eth0# isis network-point-to-point true
rt4 running interface eth0# ..
rt4 running routing# interface loop1
rt4 running interface loop1# isis area-tag 1
rt4 running interface loop1#! isis ipv4-routing true
rt4 running interface loop1# isis ipv6-routing true
rt4 running interface loop1# ..
rt4 running routing# interface eth1
rt4 running interface eth1# isis area-tag 1
rt4 running interface eth1#! isis ipv4-routing true
rt4 running interface eth1# isis ipv6-routing true
rt4 running interface eth1# isis network-point-to-point true
rt4 running interface eth1#

Note

Each address family has its own SPT. This solution consumes more memory and more CPU.