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.
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.