IS-IS Configuration Module
This configuration module configures the IS-IS routing process on Cisco IOS, Cisco NX-OS, Arista EOS, Junos (tested on vSRX), Nokia SR OS, and Nokia SR Linux.
The module supports the following IS-IS features:
IPv4 and IPv6
IS type (L1 and/or L2)
Multi-topology IPv6 (enabled by default as soon as the node has at least one IPv6 address, cannot be disabled)
Wide metrics (enabled by default, cannot be turned off)
Unnumbered IPv4 interfaces
Passive interfaces
VRF IS-IS instances
Route import (redistribution)
BFD
Platform Support
The following table describes per-platform support of individual IS-IS features:
Operating system |
IS type |
IPv6 |
Multi |
Unnumbered |
Route |
VRF |
---|---|---|---|---|---|---|
Arista EOS |
✅ |
✅ |
✅ |
✅ |
✅ |
✅ |
Cisco ASAv |
✅ |
✅ |
✅ |
❌ |
❌ |
❌ |
Cisco IOSv/IOSvL2 |
✅ |
✅ |
✅ |
✅ |
✅ |
❌ |
Cisco IOS XE[1] |
✅ |
✅ |
✅ |
✅ |
✅ |
❌ |
Cisco IOS XRv |
✅ |
✅ |
✅ |
✅ |
❌ |
❌ |
Cisco Nexus OS |
✅ |
✅ |
✅ |
✅ |
❌ |
❌ |
FRR |
✅ |
✅ |
✅ |
✅ |
✅ |
✅ |
Junos[2] |
✅ |
✅ |
✅ |
✅ |
❌ |
❌ |
Nokia SR Linux |
✅ |
✅ |
✅ |
✅ |
✅ ❗ |
✅ |
Nokia SR OS |
✅ |
✅ |
✅ |
✅ |
❌ |
❌ |
VyOS |
✅ |
✅ |
✅ |
❌ |
❌ |
❌ |
Notes:
On Arista EOS, IPv6 is enabled on all interfaces as soon as one has an IPv6 address. Arista EOS implementation of IS-IS refuses to work on interfaces with missing address families.
On VyOS, IPv6 is enabled on all interfaces as soon as one has an IPv6 address.
Cisco ASA does not support P2P IS-IS links. You could add
isis.network_type: false
to point-to-point links connecting ASA to other devices.
Some platforms can use BFD to speed up IS-IS convergence:
Operating system |
IPv4 |
IPv6 |
---|---|---|
Arista EOS |
✅ |
❌ |
Cisco IOSv/IOSvL2 |
✅ |
✅ |
Cisco IOS XE[1] |
✅ |
✅ |
Cisco Nexus OS |
✅ |
❌ |
Junos[2] |
✅ |
✅ |
Nokia SR Linux |
✅ |
✅ |
Nokia SR OS |
✅ |
✅ |
VyOS |
✅ |
✅ |
Tip
See IS-IS Integration Tests Results for more details.
Global Parameters
isis.area – CLNS area prefix. Router address (NET) is computed from area prefix, 6-byte system ID (using id node attribute), and NSAP selector (.00)
isis.type – IS-IS router type (level-1, level-2 or level-1-2. Default: level-2)
isis.instance – The name of the IS-IS instance. Used on devices that want to have a name for an IS-IS instance. Default: Gandalf.
isis.bfd – enable BFD for IS-IS. This parameter could be a boolean value (True/False) or a dictionary of address families, for example:
isis:
area: "49.0002"
bfd:
ipv4: True
ipv6: True
Warning
Specify an isis.area value that has a single dot (example: 49.0001) within quotes to tell the YAML parser it’s not a floating-point number.
Node Parameters
You can specify most node parameters as global values (top-level topology elements) or within individual nodes. You can also specify these node parameters:
isis.net: Set specific NET on individual nodes instead of using isis.area to generate it (see example for details).
isis.import – import (redistribute) routes into the global IS-IS instance. By default, no routes are redistributed into the global IS-IS instance.
Note:
When specifying isis.net, avoid values in range area.0000.0000.0001.00 through area.0000.0000.0099.00 as they are used for auto-generated NETs.
Tip
The IS-IS configuration module is automatically removed from a node that does not run IS-IS on any non-loopback interface. In that case, netlab generates a warning that can be turned off by setting defaults.isis.warnings.inactive to False.
Link Parameters
IS-IS is automatically started on all interfaces within an autonomous system (interfaces with no EBGP neighbors; see also External Interfaces). To disable IS-IS on an intra-AS link, set the isis link parameter to False (see also Disabling a Routing Protocol on a Link/Interface).
You can also set these parameters:
isis.type – Link type (level-1, level-2 or level-1-2). Recognized as a valid attribute but not implemented. Please feel free to fix the configuration templates and submit a pull request.
isis.network_type – Set IS-IS network type. Valid values are point-to-point or False (do not set the network type). See also Default Link Parameters.
isis.metric or isis.cost – Interface cost. Both parameters are recognized to make IS-IS configuration similar to OSPF (metric takes precedence over cost)
isis.bfd – enable or disable BFD on individual interfaces. Like with the node-level isis.bfd parameter, this parameter could be a boolean value (True to enable BFD for all address families, False to disable IS-IS BFD on the interface) or a dictionary of address families, for example:
Example:
links:
- name: Link with IPv4-only BFD
sros_r1:
srlinux_r2:
isis.bfd:
ipv4: True
ipv6: False
Default Link Parameters
The number of neighbors on an interface is used to set the IS-IS network type unless it’s specified with isis.network_type link or interface attribute. Interfaces with exactly one non-host neighbor (point-to-point links) have isis.network_type set to point-to-point.
When the isis.passive interface parameter is not set on a link or an interface, netlab uses the link roles together with the link types to decide whether to include an interface in an IS-IS process and whether to make an interface passive:
External links (links with role: external) are not included in the IS-IS process.
Links with role set to passive are configured as passive IS-IS interfaces.
Interfaces connected to links with a single router or routing daemon attached are passive IS-IS interfaces.
Notes:
The BGP module could set link role. Links with devices from different AS numbers attached to them get a role specified in defaults.bgp.ebgp_role parameter. The system default value of that parameter is external, excluding inter-AS links from the IS-IS process.
Management interfaces are never added to the IS-IS process. They are not in the set of device links and, thus, not considered in the IS-IS configuration template.
Example
We want to create a three-router multi-area IS-IS network:
R1 and R2 are in area 49.0001
R3 is in area 49.0002.
All devices run OSPF:
module: [ isis ]
The default IS-IS area is 49.0001:
isis:
area: 49.0001
R1 and R2 are in the default IS-IS area. We’ll specify explicit NET for R2:
nodes:
r1:
device: iosv
r2:
device: eos
isis:
net: 49.0001.0000.cafe.0002.00
R3 is in area 49.0002.
nodes:
r3:
device: nxos
isis:
area: 49.0002
Each router has a stub interface:
links:
- r1:
- r2:
- r3:
We’ll specify per-link IS-IS metric on the link between R1 and R2:
links:
- isis:
metric: 10
r1:
r2:
We’ll specify asymmetric per-node IS-IS metrics on the link between R2 and R3:
links:
- r2:
isis:
metric: 20
r3:
isis:
metric: 30
Resulting Device Configurations
The above topology generates the following device configurations:
R1 (Cisco IOS)
router isis Gandalf
log-adjacency-changes
hostname dynamic
is-type level-2
metric-style wide
net 49.0001.0000.0000.0001.00
passive-interface GigabitEthernet0/1
address-family ipv4 unicast
!
interface Loopback0
ip router isis Gandalf
!
interface GigabitEthernet0/1
ip router isis Gandalf
!
interface GigabitEthernet0/2
ip router isis Gandalf
isis metric 10
R2 (Arista EOS)
router isis Gandalf
log-adjacency-changes
is-hostname r2
is-type level-2
net 49.0001.0000.cafe.0002.00
address-family ipv4 unicast
!
interface Loopback0
isis enable Gandalf
!
interface Ethernet1
isis enable Gandalf
isis passive
!
interface Ethernet2
isis enable Gandalf
isis metric 10
!
interface Ethernet3
isis enable Gandalf
isis metric 20
R3 (Cisco Nexus OS)
feature isis
!
router isis Gandalf
log-adjacency-changes
is-type level-2
hostname dynamic
net 49.0002.0000.0000.0003.00
address-family ipv4 unicast
!
interface Loopback0
ip router isis Gandalf
!
interface Ethernet1/1
ip router isis Gandalf
isis passive-interface level-1-2
!
interface Ethernet1/2
ip router isis Gandalf
isis metric 30 level-1
isis metric 30 level-2
Complete Network Topology
module: [ isis ]
isis:
area: 49.0001
nodes:
r1:
device: iosv
r2:
device: eos
isis:
net: 49.0001.0000.cafe.0002.00
r3:
device: nxos
isis:
area: 49.0002
links:
- r1:
- r2:
- r3:
- isis:
metric: 10
r1:
r2:
- r2:
isis:
metric: 20
r3:
isis:
metric: 30