summaryrefslogtreecommitdiff
path: root/docs/configuration/protocols/isis.rst
blob: 71ddc856c875357331acc91fc2f15069d3d5e4ff (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
.. include:: /_include/need_improvement.txt

.. _isis:

#####
IS-IS
#####

:abbr:`IS-IS (Intermediate System to Intermediate System)` is a link-state
interior gateway routing protocol which is described in ISO10589,
:rfc:`1195`, :rfc:`5308`. Like OSPF, IS-IS runs the Dijkstra shortest-path
first (SPF) algorithm to create a database of the network’s topology and,
from that database, to determine the best (that is, shortest) path to a
destination. The routers exchange topology information with their nearest
neighbors. IS-IS runs directly on the data link layer (Layer 2). IS-IS
addresses are called :abbr:`NETs (Network Entity Titles)` and can be
8 to 20 bytes long, but are generally 10 bytes long.

For example :abbr:`NET (Network Entity Title)`

.. code-block:: none

  49.0001.1921.6800.1002.00

The IS-IS address consists of three parts:

  :abbr:`AFI (Address family authority identifier)`
    ``49`` The AFI value 49 is what IS-IS uses for private addressing.

  Area identifier:
    ``0001`` IS-IS area number (Area1)

  System identifier:
    ``1921.6800.1002`` For system idetifier we recommend to use IP address or
    MAC address of the router.

  NET selector:
    ``00`` Must always be 00, to indicate "this system".


General Configuration
---------------------

.. cfgcmd:: set protocols isis <name> net <network-entity-title>

  This command enables the ISIS process by specifying the ISIS domain with
  ‘name’. ISIS implementation does not yet support multiple ISIS processes
  but you must specify the name of ISIS process. This commad also sets
  network entity title (NET) provided in ISO format.

.. cfgcmd:: set protocols isis <name> interface <interface>

  This command activates 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.
  
.. cfgcmd:: set protocols isis <name> dynamic-hostname

  This command enables support for dynamic hostname. Dynamic hostname mapping
  determined as described in :rfc:`2763`, Dynamic Hostname Exchange Mechanism
  for IS-IS.

.. cfgcmd:: set protocols isis <name> level <level-1|level-1-2|level-2>

  This command defines 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.

.. cfgcmd:: set protocols isis <name> lsp-mtu <size>

  This command configures the maximum size of generated LSPs, in bytes. The
  size range is 128 to 4352.

.. cfgcmd:: set protocols isis <name> metric-style <narrow|transition|wide>

  This command sets 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.

.. cfgcmd:: set protocols isis <name> purge-originator

  This command enables :rfc:`6232` purge originator identification. Enable
  purge originator identification (POI) by adding the type, length and value
  (TLV) with the Intermediate System (IS) identification to the LSPs that do
  not contain POI information. If an IS generates a purge, VyOS adds this TLV
  with the system ID of the IS to the purge. 

.. cfgcmd:: set protocols isis <name> set-attached-bit

  This command sets ATT bit to 1 in Level1 LSPs. It is described in :rfc:`3787`.

.. cfgcmd:: set protocols isis <name> set-overload-bit

  This command sets overload bit to avoid any transit traffic through this
  router. It is described in :rfc:`3787`.

.. cfgcmd:: set protocols isis name default-information originate <ipv4|ipv6>
  level-1

  This command will generate a default-route in L1 database.
  
.. cfgcmd:: set protocols isis name default-information originate <ipv4|ipv6>
  level-2

  This command will generate a default-route in L2 database.


Interfaces Configuration
------------------------

.. cfgcmd:: set protocols isis <name> interface <interface> circuit-type
  <level-1|level-1-2|level-2-only>

  This command specifies 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

.. cfgcmd:: set protocols isis <name> interface <interface> hello-interval
  <seconds>

  This command sets hello interval in seconds on a given interface.
  The range is 1 to 600.

.. cfgcmd:: set protocols isis <name> interface <interface> hello-multiplier
  <seconds>

  This command sets multiplier for hello holding time on a given 
  interface. The range is 2 to 100.

.. cfgcmd:: set protocols isis <name> interface <interface> hello-padding

  This command configures padding on hello packets to accommodate asymmetrical
  maximum transfer units (MTUs) from different hosts as described in
  :rfc:`3719`. This helps to prevent a premature adjacency Up state when one
  routing device’s MTU does not meet the requirements to establish the
  adjacency. 

.. cfgcmd:: set protocols isis <name> interface <interface> metric <metric>

  This command set default metric for circuit. The metric range is 1 to 
  16777215 (Max value depend if metric support narrow or wide value).

.. cfgcmd:: set protocols isis <name> interface <interface> network
  point-to-point

  This command specifies network type to ‘Point-to-Point’. The default network
  type is broadcast.

.. cfgcmd:: set protocols isis <name> interface <interface> passive

  This command configures the passive mode for this interface.

.. cfgcmd:: set protocols isis <name> interface <interface> password
  plaintext-password <text>

  This command configures the authentication password for the interface.

.. cfgcmd:: set protocols isis <name> interface <interface> priority <number>

  This command sets priority for the interface for
  :abbr:`DIS (Designated Intermediate System)` election. The priority
  range is 0 to 127.

.. cfgcmd:: set protocols isis <name> interface <interface> psnp-interval
  <number>

  This command sets PSNP interval in seconds. The interval range is 0
  to 127.

.. cfgcmd:: set protocols isis <name> interface <interface>
  three-way-handshake

  This command enables :rfc:`5303` Three-Way Handshake for P2P adjacencies.
  Three-Way Handshake is enabled by default.


Redistribution Configuration
----------------------------

.. cfgcmd:: set protocols isis <name> redistribute ipv4 <route source> level-1

  This command redistributes routing information from the given route source
  into the ISIS database as Level-1. There are six modes available for route
  source: bgp, connected, kernel, ospf, rip, static.

.. cfgcmd:: set protocols isis <name> redistribute ipv4 <route source> level-2

  This command redistributes routing information from the given route source
  into the ISIS database as Level-2. There are six modes available for route
  source: bgp, connected, kernel, ospf, rip, static.
   
.. cfgcmd:: set protocols isis <name> redistribute ipv4 <route source>
  <level-1|level-2> metric <number>

  This command specifies metric for redistributed routes from the given route
  source. There are six modes available for route source: bgp, connected,
  kernel, ospf, rip, static. The metric range is 1 to 16777215.

.. cfgcmd:: set protocols isis <name> redistribute ipv4 <route source>
  <level-1|level-2> route-map <name>

  This command allows to use route map to filter redistributed routes from
  the given route source. There are six modes available for route source:
  bgp, connected, kernel, ospf, rip, static.


Timers Configuration
--------------------

.. cfgcmd:: set protocols isis <name> lsp-gen-interval <seconds>

  This command sets minimum interval in seconds between regenerating same
  LSP. The interval range is 1 to 120.
  
.. cfgcmd:: set protocols isis <name> lsp-refresh-interval <seconds>

  This command sets LSP refresh interval in seconds. IS-IS generates LSPs
  when the state of a link changes. However, to ensure that routing
  databases on all routers remain converged, LSPs in stable networks are
  generated on a regular basis even though there has been no change to
  the state of the links. The interval range is 1 to 65235. The default
  value is 900 seconds.

.. cfgcmd:: set protocols isis <name> max-lsp-lifetime <seconds>

  This command sets LSP maximum LSP lifetime in seconds. The interval range
  is 350 to 65535. LSPs remain in a database for 1200 seconds by default.
  If they are not refreshed by that time, they are deleted. You can change
  the LSP refresh interval or the LSP lifetime. The LSP refresh interval
  should be less than the LSP lifetime or else LSPs will time out before
  they are refreshed. 
  
.. cfgcmd:: set protocols isis <name> spf-interval <seconds>

  This command sets minimum interval between consecutive SPF calculations in
  seconds.The interval range is 1 to 120.

.. cfgcmd:: set protocols isis <name> spf-delay-ietf holddown <milliseconds>

.. cfgcmd:: set protocols isis <name> spf-delay-ietf init-delay 
  <milliseconds>

.. cfgcmd:: set protocols isis <name> spf-delay-ietf long-delay 
  <milliseconds>

.. cfgcmd:: set protocols isis <name> spf-delay-ietf short-delay 
  <milliseconds>

.. cfgcmd:: set protocols isis <name> spf-delay-ietf time-to-learn 
  <milliseconds>

  This commands specifies the Finite State Machine (FSM) intended to
  control the timing of the execution of SPF calculations in response
  to IGP events. The process described in :rfc:`8405`.


Configuration Example
---------------------

Simple IS-IS configuration using 2 nodes and redistributing connected
interfaces.

**Node 1:**

.. code-block:: none

  set interfaces dummy dum0 address '203.0.113.1/24'
  set interfaces ethernet eth1 address '192.0.2.1/24'

  set policy prefix-list EXPORT-ISIS rule 10 action 'permit'
  set policy prefix-list EXPORT-ISIS rule 10 prefix '203.0.113.0/24'
  set policy route-map EXPORT-ISIS rule 10 action 'permit'
  set policy route-map EXPORT-ISIS rule 10 match ip address prefix-list 'EXPORT-ISIS'

  set protocols isis FOO interface eth1
  set protocols isis FOO net '49.0001.1921.6800.1002.00'
  set protocols isis FOO redistribute ipv4 connected level-2 route-map 'EXPORT-ISIS'

**Node 2:**

.. code-block:: none

  set interfaces ethernet eth1 address '192.0.2.2/24'

  set protocols isis FOO interface eth1
  set protocols isis FOO net '49.0001.1921.6800.2002.00'

Show ip routes on Node2:

.. code-block:: none

  vyos@r2:~$ show ip route isis 
  Codes: K - kernel route, C - connected, S - static, R - RIP,
         O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
         T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,
         F - PBR, f - OpenFabric,
         > - selected route, * - FIB route, q - queued route, r - rejected route

  I   203.0.113.0/24 [115/10] via 192.0.2.1, eth1, 00:03:42