diff options
| author | mergify[bot] <37929162+mergify[bot]@users.noreply.github.com> | 2026-06-09 11:25:21 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-06-09 11:25:21 +0100 |
| commit | b4cffbf38e970b2683d07e063cac455371da681e (patch) | |
| tree | 7250e2c77e7ab4133f1cd9b1c03ce1aeb818c9a9 | |
| parent | aef48d0eea2c2b66cb2b4de0da7f792bd97e38d7 (diff) | |
| download | vyos-documentation-b4cffbf38e970b2683d07e063cac455371da681e.tar.gz vyos-documentation-b4cffbf38e970b2683d07e063cac455371da681e.zip | |
docs: Update OpenFabric page to VyOS 1.5 standards (#2060) (#2094)
* docs: Update OpenFabric page to VyOS 1.5 standards
* Update openfabric.md
* Update openfabric.md
* Update openfabric.md
(cherry picked from commit 754295dcb7c048e8142b36eb90b9a0b18cad506d)
# Conflicts:
# docs/configuration/protocols/openfabric.md
Co-authored-by: LiudmylaNad <l.nadolina@vyos.io>
| -rw-r--r-- | docs/configuration/protocols/openfabric.md | 379 |
1 files changed, 379 insertions, 0 deletions
diff --git a/docs/configuration/protocols/openfabric.md b/docs/configuration/protocols/openfabric.md new file mode 100644 index 00000000..4c9b934d --- /dev/null +++ b/docs/configuration/protocols/openfabric.md @@ -0,0 +1,379 @@ +--- +myst: + html_meta: + description: | + OpenFabric is a routing protocol derived from IS-IS that provides + link-state routing with optimized flooding, making it well-suited + for spine-leaf topologies. + keywords: openfabric, isis, link-state, spine-leaf, fabric, net, lsp +--- + +(openfabric)= + +# OpenFabric + +% stop_vyoslinter +OpenFabric, specified in [draft-white-openfabric-06.txt](https://datatracker.ietf.org/doc/html/draft-white-openfabric-06), +% start_vyoslinter +is a routing protocol derived from IS-IS. It provides link-state routing with +optimized flooding, making it well-suited for spine-leaf topologies. + +OpenFabric is a dual-stack protocol. A single instance can simultaneously +route both IPv4 and IPv6 traffic. + +## Configuration + +### Mandatory settings + +Each OpenFabric router must be configured with a unique +{abbr}`NET (Network Entity Title)`, the +{abbr}`CLNS (Connectionless Network Service)` equivalent of a Router ID. The +6-byte system identifier portion of the NET must be unique across the fabric. + +```{cfgcmd} set protocols openfabric net \<network-entity-title\> + +**Configure the Network Entity Title (NET) for the router.** + +A typical NET looks like ``49.0001.1921.6800.1002.00``. + +The NET consists of the following parts: + +- **{abbr}`AFI (Authority and Format Identifier)`** (`49`): OpenFabric + conventionally uses AFI value 49 for private addressing. +- **Area identifier** (`0001`): The area number within the fabric (in this + case, Area 1). +- **System identifier** (`1921.6800.1002`): Uniquely identifies the router + within the fabric. We recommend deriving this value from the router IP + address or MAC address. To construct the system identifier from an IPv4 + address (for example, `192.168.1.2`): + + - Pad each octet with leading zeros: `192.168.1.2` → `192.168.001.002`. + - Regroup the digits into three 4-digit blocks: `192.168.001.002` → + `1921.6800.1002`. + +- **NET selector** (`00`): Must always be `00` to indicate the local system. +``` + +Example: + +```none +set protocols openfabric net 49.0001.1921.6800.1002.00 +``` + +```{cfgcmd} set protocols openfabric domain \<name\> interface \<interface\> address-family \<ipv4|ipv6\> + +**Configure the named OpenFabric domain on a specific interface for the +given address family (IPv4 or IPv6).** + +For dual-stack operation, run the command twice: once with `ipv4` and once +with `ipv6`. +``` + +Example: + +```none +set protocols openfabric domain fabric1 interface eth1 address-family ipv4 +set protocols openfabric domain fabric1 interface eth1 address-family ipv6 +``` + +### OpenFabric global configuration + +```{cfgcmd} set protocols openfabric domain \<name\> domain-password \<plaintext-password|md5\> \<password\> + +**Configure the authentication password for the specified OpenFabric +domain.** + +The password can be specified as either plain text or +an {abbr}`MD5 (Message-Digest Algorithm 5)` hash. +``` + +Example: + +```none +set protocols openfabric domain fabric1 domain-password md5 'shared-secret' +``` + +```{cfgcmd} set protocols openfabric domain \<name\> purge-originator + +**Enable {abbr}`POI (Purge Originator Identification)` for the specified +OpenFabric domain.** + +POI is defined in RFC 6232. +``` + +Example: + +```none +set protocols openfabric domain fabric1 purge-originator +``` + +```{cfgcmd} set protocols openfabric domain \<name\> set-overload-bit + +**Configure the overload bit for the specified OpenFabric domain.** + +This instructs other routers in the domain not to use this router for +transit traffic. +``` + +Example: + +```none +set protocols openfabric domain fabric1 set-overload-bit +``` + +```{cfgcmd} set protocols openfabric domain \<name\> log-adjacency-changes + +**Enable logging of adjacency state changes in the specified OpenFabric +domain.** +``` + +Example: + +```none +set protocols openfabric domain fabric1 log-adjacency-changes +``` + +```{cfgcmd} set protocols openfabric domain \<name\> fabric-tier \<0-14\> + +**Configure a static tier number for the specified OpenFabric domain.** + +The router advertises the tier value to indicate its location in the +OpenFabric domain. +``` + +Example: + +```none +set protocols openfabric domain fabric1 fabric-tier 1 +``` + +### Interface configuration + +```{cfgcmd} set protocols openfabric domain \<name\> interface \<interface\> hello-interval \<1-600\> + +**Configure the interval, in seconds, at which the router transmits Hello +packets on this interface.** + +Hello packets are exchanged with neighbors to establish and maintain +adjacencies. +``` + +Example: + +```none +set protocols openfabric domain fabric1 interface eth0 hello-interval 5 +``` + +```{cfgcmd} set protocols openfabric domain \<name\> interface \<interface\> hello-multiplier \<2-100\> + +**Configure the multiplier used to compute the Hello hold time on the +specified interface.** +``` + +Example: + +```none +set protocols openfabric domain fabric1 interface eth0 hello-multiplier 3 +``` + +```{cfgcmd} set protocols openfabric domain \<name\> interface \<interface\> metric \<0-16777215\> + +**Configure the routing metric for the specified interface.** + +This metric is used in path selection to determine the most efficient +route. Lower metrics indicate preferred paths. +``` + +Example: + +```none +set protocols openfabric domain fabric1 interface eth0 metric 100 +``` + +```{cfgcmd} set protocols openfabric domain \<name\> interface \<interface\> passive + +**Enable passive mode for the specified interface.** + +In passive mode, the router does not send Hello packets on the interface +and does not form adjacencies. +``` + +Example: + +```none +set protocols openfabric domain fabric1 interface eth0 passive +``` + +```{cfgcmd} set protocols openfabric domain \<name\> interface \<interface\> password \<plaintext-password|md5\> \<password\> + +**Configure the authentication password for the specified interface.** + +The password can be specified as either plain text or +an {abbr}`MD5 (Message-Digest Algorithm 5)` hash. +``` + +Example: + +```none +set protocols openfabric domain fabric1 interface eth0 password plaintext-password link-secret +``` + +```{cfgcmd} set protocols openfabric domain \<name\> interface \<interface\> csnp-interval \<1-600\> + +**Configure the interval, in seconds, at which +{abbr}`CSNPs (Complete Sequence Number PDUs)` are sent on the specified +interface.** +``` + +Example: + +```none +set protocols openfabric domain fabric1 interface eth0 csnp-interval 10 +``` + +```{cfgcmd} set protocols openfabric domain \<name\> interface \<interface\> psnp-interval \<0-120\> + +**Configure the interval, in seconds, at which +{abbr}`PSNPs (Partial Sequence Number PDUs)` are sent on the specified +interface.** +``` + +Example: + +```none +set protocols openfabric domain fabric1 interface eth0 psnp-interval 2 +``` + +### Timers + +```{cfgcmd} set protocols openfabric domain \<name\> lsp-gen-interval \<1-120\> + +**Configure the minimum interval, in seconds, between successive +generations of the same {abbr}`LSP (Link State PDU)` in the OpenFabric +domain.** +``` + +Example: + +```none +set protocols openfabric domain fabric1 lsp-gen-interval 5 +``` + +```{cfgcmd} set protocols openfabric domain \<name\> lsp-refresh-interval \<1-65235\> + +**Configure the LSP refresh interval, in seconds, for the OpenFabric +domain.** +``` + +```{note} +The value must be lower than `max-lsp-lifetime`. Otherwise, LSPs will +time out before they can be refreshed. +``` + +Example: + +```none +set protocols openfabric domain fabric1 lsp-refresh-interval 900 +``` + +```{cfgcmd} set protocols openfabric domain \<name\> max-lsp-lifetime \<360-65535\> + +**Configure the maximum lifetime, in seconds, for LSPs in the OpenFabric +domain.** + +By default, LSPs remain in the link-state database for 1200 seconds and +are deleted if they are not refreshed. +``` + +Example: + +```none +set protocols openfabric domain fabric1 max-lsp-lifetime 1200 +``` + +```{cfgcmd} set protocols openfabric domain \<name\> spf-interval \<1-120\> + +**Configure the minimum interval, in seconds, between consecutive +{abbr}`SPF (Shortest Path First)` calculations in the OpenFabric domain.** +``` + +Example: + +```none +set protocols openfabric domain fabric1 spf-interval 5 +``` + +## Example + +The following example demonstrates a basic OpenFabric configuration between +two routers. + +**Node 1:** + +```none +set interfaces loopback lo address '198.51.100.1/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 domain VyOS interface lo passive +set protocols openfabric net '49.0001.1980.5110.0001.00' +``` + +**Node 2:** + +```none +set interfaces loopback lo address '198.51.100.2/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 domain VyOS interface lo passive +set protocols openfabric net '49.0001.1980.5110.0002.00' +``` + +After committing the configuration, verify the neighbor adjacencies on both +nodes: + +```none +vyos@node-1:~$ show openfabric neighbor +show openfabric neighbor +Area VyOS: + System Id Interface L State Holdtime SNPA + node-2 eth1 2 Up 27 2020.2020.2020 + + +vyos@node-2:~$ show openfabric neighbor +show openfabric neighbor +Area VyOS: + System Id Interface L State Holdtime SNPA + node-1 eth1 2 Up 30 2020.2020.2020 +``` + +Verify that the OpenFabric routes have successfully populated: + +```none +vyos@node-1:~$ 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>* 198.51.100.2/32 [115/20] via 192.0.2.2, eth1 onlink, weight 1, 00:00:10 + +vyos@node-2:~$ 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>* 198.51.100.1/32 [115/20] via 192.0.2.1, eth1 onlink, weight 1, 00:00:48 +``` |
