@cindex ISIS
@node ISIS
@chapter ISIS

@acronym{ISIS,Intermediate System to Intermediate System} is a routing protocol
which is described in @cite{ISO10589, RFC1195, RFC5308}.  ISIS is an
@acronym{IGP,Interior Gateway Protocol}.  Compared with @acronym{RIP},
@acronym{ISIS} can provide scalable network support and faster
convergence times like @acronym{OSPF}. ISIS is widely used in large networks such as
@acronym{ISP,Internet Service Provider} and carrier backbone networks.

@menu
* Configuring isisd::
* ISIS router::
* ISIS Timer::
* ISIS region::
* ISIS interface::
* Showing ISIS information::
* ISIS Traffic Engineering::
* Debugging ISIS::
* ISIS Configuration Examples::
@end menu

@node Configuring isisd
@section Configuring isisd

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

Like other daemons, @command{isisd} configuration is done in @acronym{ISIS}
specific configuration file @file{isisd.conf}.

@node ISIS router
@section ISIS router

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

@deffn Command {router isis WORD} {}
@deffnx Command {no router isis WORD} {}
@anchor{router isis WORD}Enable or disable the ISIS process by specifying the ISIS domain with 'WORD'.
@command{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 @ref{ip router isis WORD}).
@end deffn

@deffn {ISIS Command} {net XX.XXXX. ... .XXX.XX} {}
@deffnx {ISIS Command} {no net XX.XXXX. ... .XXX.XX} {}
Set/Unset network entity title (NET) provided in ISO format.
@end deffn

@deffn {ISIS Command} {hostname dynamic} {}
@deffnx {ISIS Command} {no hostname dynamic} {}
Enable support for dynamic hostname.
@end deffn

@deffn {ISIS Command} {area-password [clear | md5] <password>} {}
@deffnx {ISIS Command} {domain-password [clear | md5] <password>} {}
@deffnx {ISIS Command} {no area-password} {}
@deffnx {ISIS Command} {no domain-password} {}
Configure the authentication password for an area, respectively a domain,
as clear text or md5 one.
@end deffn

@deffn {ISIS Command} {log-adjacency-changes} {}
@deffnx {ISIS Command} {no log-adjacency-changes} {}
Log changes in adjacency state.
@end deffn

@deffn {ISIS Command} {metric-style [narrow | transition | wide]} {}
@deffnx {ISIS Command} {no metric-style} {}
@anchor{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
@end deffn

@deffn {ISIS Command} {set-overload-bit} {}
@deffnx {ISIS Command} {no set-overload-bit} {}
Set overload bit to avoid any transit traffic.
@end deffn

@node ISIS Timer
@section ISIS Timer

@deffn {ISIS Command} {lsp-gen-interval <1-120>} {}
@deffnx {ISIS Command} {lsp-gen-interval [level-1 | level-2] <1-120>} {}
@deffnx {ISIS Command} {no lsp-gen-interval} {}
@deffnx {ISIS Command} {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).
@end deffn

@deffn {ISIS Command} {lsp-refresh-interval <1-65235>} {}
@deffnx {ISIS Command} {lsp-refresh-interval [level-1 | level-2] <1-65235>} {}
@deffnx {ISIS Command} {no lsp-refresh-interval} {}
@deffnx {ISIS Command} {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).
@end deffn

@deffn {ISIS Command} {lsp-refresh-interval <1-65235>} {}
@deffnx {ISIS Command} {lsp-refresh-interval [level-1 | level-2] <1-65235>} {}
@deffnx {ISIS Command} {no lsp-refresh-interval} {}
@deffnx {ISIS Command} {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).
@end deffn

@deffn {ISIS Command} {max-lsp-lifetime <360-65535>} {}
@deffnx {ISIS Command} {max-lsp-lifetime [level-1 | level-2] <360-65535>} {}
@deffnx {ISIS Command} {no max-lsp-lifetime} {}
@deffnx {ISIS Command} {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).
@end deffn

@deffn {ISIS Command} {spf-interval <1-120>} {}
@deffnx {ISIS Command} {spf-interval [level-1 | level-2] <1-120>} {}
@deffnx {ISIS Command} {no spf-interval} {}
@deffnx {ISIS Command} {no spf-interval [level-1 | level-2]} {}
Set minimum interval between consecutive SPF calculations in seconds.
@end deffn

@node ISIS region
@section ISIS region

@deffn {ISIS Command} {is-type [level-1 | level-1-2 | level-2-only]} {}
@deffnx {ISIS Command} {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
@end deffn

@node ISIS interface
@section ISIS interface

@deffn {Interface Command} {ip router isis WORD} {}
@deffnx {Interface Command} {no ip router isis WORD} {}
@anchor{ip 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 @ref{router isis WORD}).
@end deffn

@deffn {Interface Command} {isis circuit-type [level-1 | level-1-2 | level-2]} {}
@deffnx {Interface Command} {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
@end deffn

@deffn {Interface Command} {isis csnp-interval <1-600>} {}
@deffnx {Interface Command} {isis csnp-interval <1-600> [level-1 | level-2]} {}
@deffnx {Interface Command} {no isis csnp-interval} {}
@deffnx {Interface Command} {no isis csnp-interval [level-1 | level-2]} {}
Set CSNP interval in seconds globally, for an area (level-1) or a domain (level-2).
@end deffn

@deffn {Interface Command} {isis hello padding} {}
Add padding to IS-IS hello packets.
@end deffn

@deffn {Interface Command} {isis hello-interval <1-600>} {}
@deffnx {Interface Command} {isis hello-interval <1-600> [level-1 | level-2]} {}
@deffnx {Interface Command} {no isis hello-interval} {}
@deffnx {Interface Command} {no isis hello-interval [level-1 | level-2]} {}
Set Hello interval in seconds globally, for an area (level-1) or a domain (level-2).
@end deffn

@deffn {Interface Command} {isis hello-multiplier <2-100>} {}
@deffnx {Interface Command} {isis hello-multiplier <2-100> [level-1 | level-2]} {}
@deffnx {Interface Command} {no isis hello-multiplier} {}
@deffnx {Interface Command} {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).
@end deffn

@deffn {Interface Command} {isis metric [<0-255> | <0-16777215>]} {}
@deffnx {Interface Command} {isis metric [<0-255> | <0-16777215>] [level-1 | level-2]} {}
@deffnx {Interface Command} {no isis metric} {}
@deffnx {Interface Command} {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 @ref{metric-style}).
@end deffn

@deffn {Interface Command} {isis network point-to-point} {}
@deffnx {Interface Command} {no isis network point-to-point} {}
Set network type to 'Point-to-Point' (broadcast by default).
@end deffn

@deffn {Interface Command} {isis passive} {}
@deffnx {Interface Command} {no isis passive} {}
Configure the passive mode for this interface.
@end deffn

@deffn {Interface Command} {isis password [clear | md5] <password>} {}
@deffnx {Interface Command} {no isis password} {}
Configure the authentication password (clear or encoded text) for the interface.
@end deffn

@deffn {Interface Command} {isis priority <0-127>} {}
@deffnx {Interface Command} {isis priority <0-127> [level-1 | level-2]} {}
@deffnx {Interface Command} {no isis priority} {}
@deffnx {Interface Command} {no isis priority [level-1 | level-2]} {}
Set priority for Designated Router election, globally, for the area (level-1)
or the domain (level-2).
@end deffn

@deffn {Interface Command} {isis psnp-interval <1-120>} {}
@deffnx {Interface Command} {isis psnp-interval <1-120> [level-1 | level-2]} {}
@deffnx {Interface Command} {no isis psnp-interval} {}
@deffnx {Interface Command} {no isis psnp-interval [level-1 | level-2]} {}
Set PSNP interval in seconds globally, for an area (level-1) or a domain (level-2).
@end deffn

@node Showing ISIS information
@section Showing ISIS information

@deffn {Command} {show isis summary} {}
Show summary information about ISIS.
@end deffn

@deffn {Command} {show isis hostname} {}
Show information about ISIS node.
@end deffn

@deffn {Command} {show isis interface} {}
@deffnx {Command} {show isis interface detail} {}
@deffnx {Command} {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.
@end deffn

@deffn {Command} {show isis neighbor} {}
@deffnx {Command} {show isis neighbor <System Id>} {}
@deffnx {Command} {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.
@end deffn

@deffn {Command} {show isis database} {}
@deffnx {Command} {show isis database [detail]} {}
@deffnx {Command} {show isis database <LSP id> [detail]} {}
@deffnx {Command} {show isis database detail <LSP id>} {}
Show the ISIS database globally, for a specific LSP id without or with details.
@end deffn

@deffn {Command} {show isis topology} {}
@deffnx {Command} {show isis topology [level-1|level-2]} {}
Show topology IS-IS paths to Intermediate Systems, globally,
in area (level-1) or domain (level-2).
@end deffn

@deffn {Command} {show ip route isis} {}
Show the ISIS routing table, as determined by the most recent SPF calculation.
@end deffn

@node ISIS Traffic Engineering
@section Traffic Engineering

@deffn {ISIS Command} {mpls-te on} {}
@deffnx {ISIS Command} {no mpls-te} {}
Enable Traffic Engineering LSP flooding.
@end deffn

@deffn {ISIS Command} {mpls-te router-address <A.B.C.D>} {}
@deffnx {ISIS Command} {no mpls-te router-address} {}
Configure stable IP address for MPLS-TE.
@end deffn

@deffn {Command} {show isis mpls-te interface} {}
@deffnx {Command} {show isis mpls-te interface @var{interface}} {}
Show MPLS Traffic Engineering parameters for all or specified interface.
@end deffn

@deffn {Command} {show isis mpls-te router} {}
Show Traffic Engineering router parameters.
@end deffn

@node Debugging ISIS
@section Debugging ISIS

@deffn {Command} {debug isis adj-packets} {}
@deffnx {Command} {no debug isis adj-packets} {}
IS-IS Adjacency related packets.
@end deffn

@deffn {Command} {debug isis checksum-errors} {}
@deffnx {Command} {no debug isis checksum-errors} {}
IS-IS LSP checksum errors.
@end deffn

@deffn {Command} {debug isis events} {}
@deffnx {Command} {no debug isis events} {}
IS-IS Events.
@end deffn

@deffn {Command} {debug isis local-updates} {}
@deffnx {Command} {no debug isis local-updates} {}
IS-IS local update packets.
@end deffn

@deffn {Command} {debug isis packet-dump} {}
@deffnx {Command} {no debug isis packet-dump} {}
IS-IS packet dump.
@end deffn

@deffn {Command} {debug isis protocol-errors} {}
@deffnx {Command} {no debug isis protocol-errors} {}
IS-IS LSP protocol errors.
@end deffn

@deffn {Command} {debug isis route-events} {}
@deffnx {Command} {no debug isis route-events} {}
IS-IS Route related events.
@end deffn

@deffn {Command} {debug isis snp-packets} {}
@deffnx {Command} {no debug isis snp-packets} {}
IS-IS CSNP/PSNP packets.
@end deffn

@deffn {Command} {debug isis spf-events} {}
@deffnx {Command} {debug isis spf-statistics} {}
@deffnx {Command} {debug isis spf-triggers} {}
@deffnx {Command} {no debug isis spf-events} {}
@deffnx {Command} {no debug isis spf-statistics} {}
@deffnx {Command} {no debug isis spf-triggers} {}
IS-IS Shortest Path First Events, Timing and Statistic Data
and triggering events.
@end deffn

@deffn {Command} {debug isis update-packets} {}
@deffnx {Command} {no debug isis update-packets} {}
Update related packets.
@end deffn

@deffn {Command} {show debugging isis} {}
Print which ISIS debug level is activate.
@end deffn

@node ISIS Configuration Examples
@section ISIS Configuration Examples
A simple example, with MD5 authentication enabled:

@example
@group
!
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
@end group
@end example


A Traffic Engineering configuration, with Inter-ASv2 support.

 - First, the 'zebra.conf' part:

@example
@group
hostname HOSTNAME
password PASSWORD
log file /var/log/zebra.log
!
interface eth0
 ip address 10.2.2.2/24
 mpls-te on
 mpls-te link metric 10
 mpls-te link max-bw 1.25e+06
 mpls-te link max-rsv-bw 1.25e+06
 mpls-te link unrsv-bw 0 1.25e+06
 mpls-te link unrsv-bw 1 1.25e+06
 mpls-te link unrsv-bw 2 1.25e+06
 mpls-te link unrsv-bw 3 1.25e+06
 mpls-te link unrsv-bw 4 1.25e+06
 mpls-te link unrsv-bw 5 1.25e+06
 mpls-te link unrsv-bw 6 1.25e+06
 mpls-te link unrsv-bw 7 1.25e+06
 mpls-te link rsc-clsclr 0xab
!
interface eth1
 ip address 10.1.1.1/24
 mpls-te on
 mpls-te link metric 10
 mpls-te link max-bw 1.25e+06
 mpls-te link max-rsv-bw 1.25e+06
 mpls-te link unrsv-bw 0 1.25e+06
 mpls-te link unrsv-bw 1 1.25e+06
 mpls-te link unrsv-bw 2 1.25e+06
 mpls-te link unrsv-bw 3 1.25e+06
 mpls-te link unrsv-bw 4 1.25e+06
 mpls-te link unrsv-bw 5 1.25e+06
 mpls-te link unrsv-bw 6 1.25e+06
 mpls-te link unrsv-bw 7 1.25e+06
 mpls-te link rsc-clsclr 0xab
 mpls-te neighbor 10.1.1.2 as 65000
@end group
@end example

 - Then the 'isisd.conf' itself:

@example
@group
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
@end group
@end example
