summaryrefslogtreecommitdiff
path: root/docs/configuration/protocols/openfabric.rst
blob: f7126544543584e9056d9671551423e800e76875 (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
.. _openfabric:

#####
OpenFabric
#####

OpenFabric, specified in `draft-white-openfabric-06.txt
<https://datatracker.ietf.org/doc/html/draft-white-openfabric-06>`_, is
a routing protocol derived from IS-IS, providing link-state routing with
efficient flooding for topologies like spine-leaf networks.

OpenFabric a dual stack protocol.
A single OpenFabric instance is able to perform routing for both IPv4 and IPv6.

*******
General
*******

Configuration
=============

Mandatory Settings
------------------

For OpenFabric to operate correctly, one must do the equivalent of a Router ID
in Connectionless Network Service (CLNS). This Router ID is called the
:abbr:`NET (Network Entity Title)`. The system identifier must be unique within
the network

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

  This command sets network entity title (NET) provided in ISO format.

  Here is an example :abbr:`NET (Network Entity Title)` value:

  .. code-block:: none

    49.0001.1921.6800.1002.00

  The CLNS address consists of the following parts:

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

  * Area identifier: ``0001`` OpenFabric area number (numerical area ``1``)

  * System identifier: ``1921.6800.1002`` - for system identifiers we recommend
    to use IP address or MAC address of the router itself. The way to construct
    this is to keep all of the zeroes of the router IP address, and then change
    the periods from being every three numbers to every four numbers. The
    address that is listed here is ``192.168.1.2``, which if expanded will turn
    into ``192.168.001.002``. Then all one has to do is move the dots to have
    four numbers instead of three. This gives us ``1921.6800.1002``.

  * :abbr:`NET (Network Entity Title)` selector: ``00`` Must always be 00. This
    setting indicates "this system" or "local system."

.. cfgcmd:: set protocols openfabric domain <name> interface <interface>
   address-family <ipv4|ipv6>

  This command enables OpenFabric instance with <NAME> on this interface, and
  allows for adjacency to occur for address family (IPv4 or IPv6 or both).

OpenFabric Global Configuration
--------------------------

.. cfgcmd:: set protocols openfabric domain-password <plaintext-password|md5>
  <password>

  This command configures the authentication password for a routing domain,
  as clear text or md5 one.

.. cfgcmd:: set protocols openfabric domain <name> purge-originator

  This command enables :rfc:`6232` purge originator identification.

.. cfgcmd:: set protocols openfabric domain <name> set-overload-bit

  This command sets overload bit to avoid any transit traffic through this
  router.

.. cfgcmd:: set protocols openfabric domain <name> log-adjacency-changes

  Log changes in adjacency state.
  
.. cfgcmd:: set protocols openfabric domain <name> fabric-tier <number>

  This command sets a static tier number to advertise as location
  in the fabric.


Interface Configuration
-----------------------

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

  This command sets hello interval in seconds on a given interface.
  The range is 1 to 600. Hello packets are used to establish and maintain
  adjacency between OpenFabric neighbors.

.. cfgcmd:: set protocols openfabric domain <name> interface <interface>
   hello-multiplier <number>

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

.. cfgcmd:: set protocols openfabric domain <name> interface <interface>
   metric <metric>

  This command sets default metric for circuit.
  The metric range is 1 to 16777215.

.. cfgcmd:: set protocols openfabric interface <interface> passive

  This command enables the passive mode for this interface.

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

  This command sets the authentication password for the interface.

.. cfgcmd:: set protocols openfabric domain <name> interface <interface>
   csnp-interval <seconds>

  This command sets Complete Sequence Number Packets (CSNP) interval in seconds.
  The interval range is 1 to 600.

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

  This command sets Partial Sequence Number Packets (PSNP) interval in seconds.
  The interval range is 1 to 120.

Timers
------

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

  This command sets minimum interval at which link-state packets (LSPs) are
  generated. The interval range is 1 to 120.

.. cfgcmd:: set protocols openfabric domain <name> lsp-refresh-interval <seconds>

  This command sets LSP refresh interval in seconds. The interval range
  is 1 to 65235.

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

  This command sets LSP maximum LSP lifetime in seconds. The interval range
  is 360 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 openfabric domain <name> spf-interval <seconds>

  This command sets minimum interval between consecutive shortest path first
  (SPF) calculations in seconds.The interval range is 1 to 120.


********
Examples
********

Enable OpenFabric
============

**Node 1:**

.. code-block:: none

  set interfaces loopback lo address '192.168.255.255/32'
  set interfaces ethernet eth1 address '192.0.2.1/24'

  set protocols openfabric domain VyOS interface eth1 address-family ipv4
  set protocols openfabric domain VyOS interface lo address-family ipv4
  set protocols openfabric net '49.0001.1921.6825.5255.00'

**Node 2:**

.. code-block:: none

  set interfaces loopback lo address '192.168.255.254/32'
  set interfaces ethernet eth1 address '192.0.2.2/24'

  set protocols openfabric domain VyOS interface eth1 address-family ipv4
  set protocols openfabric domain VyOS interface lo address-family ipv4
  set protocols openfabric net '49.0001.1921.6825.5254.00'



This gives us the following neighborships:

.. code-block:: none

  Node-1@vyos:~$ show openfabric neighbor
  show openfabric neighbor
  Area VyOS:
    System Id           Interface   L  State        Holdtime SNPA
   vyos                eth1        2  Up            27       2020.2020.2020


  Node-2@vyos:~$ show openfabric neighbor
  show openfabric neighbor
  Area VyOS:
    System Id           Interface   L  State        Holdtime SNPA
   vyos                eth1        2  Up            30       2020.2020.2020



Here's the IP routes that are populated:

.. code-block:: none

  Node-1@vyos:~$ show ip route openfabric
  show ip route openfabric
  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, F - PBR,
         f - OpenFabric,
         > - selected route, * - FIB route, q - queued, r - rejected, b - backup
         t - trapped, o - offload failure

  f   192.0.2.0/24 [115/20] via 192.0.2.2, eth1 onlink, weight 1, 00:00:10
  f>* 192.168.255.254/32 [115/20] via 192.0.2.2, eth1 onlink, weight 1, 00:00:10

  Node-2@vyos:~$ show ip route openfabric
  show ip route openfabric
  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, F - PBR,
         f - OpenFabric,
         > - selected route, * - FIB route, q - queued, r - rejected, b - backup
         t - trapped, o - offload failure

  f   192.0.2.0/24 [115/20] via 192.0.2.1, eth1 onlink, weight 1, 00:00:48
  f>* 192.168.255.255/32 [115/20] via 192.0.2.1, eth1 onlink, weight 1, 00:00:48