ISIS

ISIS is a routing protocol which is described in ISO10589, RFC 1195, RFC 5308. ISIS is an IGP. Compared with RIP, ISIS can provide scalable network support and faster convergence times like OSPF. ISIS is widely used in large networks such as ISP and carrier backbone networks.

Configuring isisd

There are no isisd specific options. Common options can be specified (Common Invocation Options) to isisd. isisd needs to acquire interface information from zebra in order to function. Therefore zebra must be running before invoking isisd. Also, if zebra is restarted then isisd must be too.

Like other daemons, isisd configuration is done in ISIS specific configuration file isisd.conf.

ISIS router

To start the ISIS process you have to specify the ISIS router. As of this writing, isisd does not support multiple ISIS processes.

[no] router isis WORD

Enable or disable the ISIS process by specifying the ISIS domain with ‘WORD’. isisd does not yet support multiple ISIS processes but you must specify the name of ISIS process. The ISIS process name ‘WORD’ is then used for interface (see command ip router isis WORD).

net XX.XXXX. ... .XXX.XX
no net XX.XXXX. ... .XXX.XX

Set/Unset network entity title (NET) provided in ISO format.

hostname dynamic
no hostname dynamic

Enable support for dynamic hostname.

area-password [clear | md5] <password>
domain-password [clear | md5] <password>
no area-password
no domain-password

Configure the authentication password for an area, respectively a domain, as clear text or md5 one.

log-adjacency-changes
no log-adjacency-changes

Log changes in adjacency state.

metric-style [narrow | transition | wide]
no metric-style

Set old-style (ISO 10589) or new-style packet formats:

  • narrow Use old style of TLVs with narrow metric
  • transition Send and accept both styles of TLVs during transition
  • wide Use new style of TLVs to carry wider metric
set-overload-bit
no set-overload-bit

Set overload bit to avoid any transit traffic.

purge-originator
no purge-originator

Enable or disable RFC 6232 purge originator identification.

[no] lsp-mtu (128-4352)

Configure the maximum size of generated LSPs, in bytes.

ISIS Timer

lsp-gen-interval (1-120)
lsp-gen-interval [level-1 | level-2] (1-120)
no lsp-gen-interval
no lsp-gen-interval [level-1 | level-2]

Set minimum interval in seconds between regenerating same LSP, globally, for an area (level-1) or a domain (level-2).

lsp-refresh-interval [level-1 | level-2] (1-65235)
no lsp-refresh-interval [level-1 | level-2]

Set LSP refresh interval in seconds, globally, for an area (level-1) or a domain (level-2).

max-lsp-lifetime (360-65535)
max-lsp-lifetime [level-1 | level-2] (360-65535)
no max-lsp-lifetime
no max-lsp-lifetime [level-1 | level-2]

Set LSP maximum LSP lifetime in seconds, globally, for an area (level-1) or a domain (level-2).

spf-interval (1-120)
spf-interval [level-1 | level-2] (1-120)
no spf-interval
no spf-interval [level-1 | level-2]

Set minimum interval between consecutive SPF calculations in seconds.

ISIS region

is-type [level-1 | level-1-2 | level-2-only]
no is-type

Define the ISIS router behavior:

  • level-1 Act as a station router only
  • level-1-2 Act as both a station router and an area router
  • level-2-only Act as an area router only

ISIS interface

[no] <ip|ipv6> router isis WORD

Activate ISIS adjacency on this interface. Note that the name of ISIS instance must be the same as the one used to configure the ISIS process (see command router isis WORD). To enable IPv4, issue ip router isis WORD; to enable IPv6, issue ipv6 router isis WORD.

isis circuit-type [level-1 | level-1-2 | level-2]
no isis circuit-type

Configure circuit type for interface:

  • level-1 Level-1 only adjacencies are formed
  • level-1-2 Level-1-2 adjacencies are formed
  • level-2-only Level-2 only adjacencies are formed
isis csnp-interval (1-600)
isis csnp-interval (1-600) [level-1 | level-2]
no isis csnp-interval
no isis csnp-interval [level-1 | level-2]

Set CSNP interval in seconds globally, for an area (level-1) or a domain (level-2).

isis hello padding

Add padding to IS-IS hello packets.

isis hello-interval (1-600)
isis hello-interval (1-600) [level-1 | level-2]
no isis hello-interval
no isis hello-interval [level-1 | level-2]

Set Hello interval in seconds globally, for an area (level-1) or a domain (level-2).

isis hello-multiplier (2-100)
isis hello-multiplier (2-100) [level-1 | level-2]
no isis hello-multiplier
no isis hello-multiplier [level-1 | level-2]

Set multiplier for Hello holding time globally, for an area (level-1) or a domain (level-2).

isis metric [(0-255) | (0-16777215)]
isis metric [(0-255) | (0-16777215)] [level-1 | level-2]
no isis metric
no isis metric [level-1 | level-2]

Set default metric value globally, for an area (level-1) or a domain (level-2). Max value depend if metric support narrow or wide value (see command metric-style [narrow | transition | wide]).

isis network point-to-point
no isis network point-to-point

Set network type to ‘Point-to-Point’ (broadcast by default).

isis passive
no isis passive

Configure the passive mode for this interface.

isis password [clear | md5] <password>
no isis password

Configure the authentication password (clear or encoded text) for the interface.

isis priority (0-127)
isis priority (0-127) [level-1 | level-2]
no isis priority
no isis priority [level-1 | level-2]

Set priority for Designated Router election, globally, for the area (level-1) or the domain (level-2).

isis psnp-interval (1-120)
isis psnp-interval (1-120) [level-1 | level-2]
no isis psnp-interval
no isis psnp-interval [level-1 | level-2]

Set PSNP interval in seconds globally, for an area (level-1) or a domain (level-2).

isis three-way-handshake
no isis three-way-handshake

Enable or disable RFC 5303 Three-Way Handshake for P2P adjacencies. Three-Way Handshake is enabled by default.

Showing ISIS information

show isis summary

Show summary information about ISIS.

show isis hostname

Show information about ISIS node.

show isis interface
show isis interface detail
show isis interface <interface name>

Show state and configuration of ISIS specified interface, or all interfaces if no interface is given with or without details.

show isis neighbor
show isis neighbor <System Id>
show isis neighbor detail

Show state and information of ISIS specified neighbor, or all neighbors if no system id is given with or without details.

show isis database
show isis database [detail]
show isis database <LSP id> [detail]
show isis database detail <LSP id>

Show the ISIS database globally, for a specific LSP id without or with details.

show isis topology
show isis topology [level-1|level-2]

Show topology IS-IS paths to Intermediate Systems, globally, in area (level-1) or domain (level-2).

show ip route isis

Show the ISIS routing table, as determined by the most recent SPF calculation.

Traffic Engineering

Note

At this time, FRR offers partial support for some of the routing protocol extensions that can be used with MPLS-TE. FRR does not support a complete RSVP-TE solution currently.

mpls-te on
no mpls-te

Enable Traffic Engineering LSP flooding.

mpls-te router-address <A.B.C.D>
no mpls-te router-address

Configure stable IP address for MPLS-TE.

show isis mpls-te interface
show isis mpls-te interface INTERFACE

Show MPLS Traffic Engineering parameters for all or specified interface.

show isis mpls-te router

Show Traffic Engineering router parameters.

Segment Routing

This is an EXPERIMENTAL support of Segment Routing as per RFC8667 for MPLS dataplane. It supports IPv4, IPv6 and ECMP and has been tested against Cisco & Juniper routers.

Known limitations:
  • No support for level redistribution (L1 to L2 or L2 to L1)
  • No support for binding SID
  • No support for SRMS
  • No support for SRLB
  • Only one SRGB and default SPF Algorithm is supported
[no] segment-routing on

Enable Segment Routing.

[no] segment-routing global-block (0-1048575) (0-1048575)

Set the Segment Routing Global Block i.e. the label range used by MPLS to store label in the MPLS FIB for Prefix SID. Note that the block size may not exceed 65535.

[no] segment-routing local-block (0-1048575) (0-1048575)

Set the Segment Routing Local Block i.e. the label range used by MPLS to store label in the MPLS FIB for Adjacency SID. Note that the block size may not exceed 65535.

[no] segment-routing node-msd (1-16)

Set the Maximum Stack Depth supported by the router. The value depend of the MPLS dataplane. E.g. for Linux kernel, since version 4.13 the maximum value is 32.

[no] segment-routing prefix <A.B.C.D/M|X:X::X:X/M> <absolute (16-1048575)|index (0-65535) [no-php-flag|explicit-null]

Set the Segment Routing index or absolute label value for the specified prefix. The ‘no-php-flag’ means NO Penultimate Hop Popping that allows SR node to request to its neighbor to not pop the label. The ‘explicit-null’ flag allows SR node to request to its neighbor to send IP packet with the EXPLICIT-NULL label.

show isis segment-routing prefix-sids

Show detailed information about all learned Segment Routing Prefix-SIDs.

show isis segment-routing nodes

Show detailed information about all learned Segment Routing Nodes.

Debugging ISIS

debug isis adj-packets
no debug isis adj-packets

IS-IS Adjacency related packets.

debug isis checksum-errors
no debug isis checksum-errors

IS-IS LSP checksum errors.

debug isis events
no debug isis events

IS-IS Events.

debug isis local-updates
no debug isis local-updates

IS-IS local update packets.

debug isis packet-dump
no debug isis packet-dump

IS-IS packet dump.

debug isis protocol-errors
no debug isis protocol-errors

IS-IS LSP protocol errors.

debug isis route-events
no debug isis route-events

IS-IS Route related events.

debug isis snp-packets
no debug isis snp-packets

IS-IS CSNP/PSNP packets.

debug isis spf-events
debug isis spf-statistics
debug isis spf-triggers
no debug isis spf-events
no debug isis spf-statistics
no debug isis spf-triggers

IS-IS Shortest Path First Events, Timing and Statistic Data and triggering events.

debug isis update-packets
no debug isis update-packets

Update related packets.

debug isis sr-events
no debug isis sr-events

IS-IS Segment Routing events.

show debugging isis

Print which ISIS debug level is activate.

ISIS Configuration Examples

A simple example, with MD5 authentication enabled:

!
interface eth0
 ip router isis FOO
 isis network point-to-point
 isis circuit-type level-2-only
!
router isis FOO
net 47.0023.0000.0000.0000.0000.0000.0000.1900.0004.00
 metric-style wide
 is-type level-2-only

A Traffic Engineering configuration, with Inter-ASv2 support.

First, the zebra.conf part:

hostname HOSTNAME
password PASSWORD
log file /var/log/zebra.log
!
interface eth0
 ip address 10.2.2.2/24
 link-params
  max-bw 1.25e+07
  max-rsv-bw 1.25e+06
  unrsv-bw 0 1.25e+06
  unrsv-bw 1 1.25e+06
  unrsv-bw 2 1.25e+06
  unrsv-bw 3 1.25e+06
  unrsv-bw 4 1.25e+06
  unrsv-bw 5 1.25e+06
  unrsv-bw 6 1.25e+06
  unrsv-bw 7 1.25e+06
  admin-grp 0xab
!
interface eth1
 ip address 10.1.1.1/24
 link-params
  enable
  metric 100
  max-bw 1.25e+07
  max-rsv-bw 1.25e+06
  unrsv-bw 0 1.25e+06
  unrsv-bw 1 1.25e+06
  unrsv-bw 2 1.25e+06
  unrsv-bw 3 1.25e+06
  unrsv-bw 4 1.25e+06
  unrsv-bw 5 1.25e+06
  unrsv-bw 6 1.25e+06
  unrsv-bw 7 1.25e+06
  neighbor 10.1.1.2 as 65000

Then the isisd.conf itself:

hostname HOSTNAME
password PASSWORD
log file /var/log/isisd.log
!
!
interface eth0
 ip router isis FOO
!
interface eth1
 ip router isis FOO
!
!
router isis FOO
 isis net 47.0023.0000.0000.0000.0000.0000.0000.1900.0004.00
  mpls-te on
  mpls-te router-address 10.1.1.1
!
line vty

A Segment Routing configuration, with IPv4, IPv6, SRGB and MSD configuration.

hostname HOSTNAME
password PASSWORD
log file /var/log/isisd.log
!
!
interface eth0
 ip router isis SR
 isis network point-to-point
!
interface eth1
 ip router isis SR
!
!
router isis SR
 net 49.0000.0000.0000.0001.00
 is-type level-1
 topology ipv6-unicast
 lsp-gen-interval 2
 segment-routing on
 segment-routing node-msd 8
 segment-routing prefix 10.1.1.1/32 index 100 explicit-null
 segment-routing prefix 2001:db8:1000::1/128 index 101 explicit-null
!