diff options
Diffstat (limited to 'docs/configuration/protocols')
| -rw-r--r-- | docs/configuration/protocols/bfd.rst | 2 | ||||
| -rw-r--r-- | docs/configuration/protocols/bgp.rst | 27 | ||||
| -rw-r--r-- | docs/configuration/protocols/failover.rst | 103 | ||||
| -rw-r--r-- | docs/configuration/protocols/igmp.rst | 2 | ||||
| -rw-r--r-- | docs/configuration/protocols/index.rst | 1 | ||||
| -rw-r--r-- | docs/configuration/protocols/isis.rst | 263 | ||||
| -rw-r--r-- | docs/configuration/protocols/mpls.rst | 14 | ||||
| -rw-r--r-- | docs/configuration/protocols/ospf.rst | 182 | ||||
| -rw-r--r-- | docs/configuration/protocols/static.rst | 7 | 
9 files changed, 522 insertions, 79 deletions
diff --git a/docs/configuration/protocols/bfd.rst b/docs/configuration/protocols/bfd.rst index dac1bf0f..faec71bc 100644 --- a/docs/configuration/protocols/bfd.rst +++ b/docs/configuration/protocols/bfd.rst @@ -1,4 +1,4 @@ -:lastproofread: 2022-02-05 +:lastproofread: 2023-01-27  .. include:: /_include/need_improvement.txt diff --git a/docs/configuration/protocols/bgp.rst b/docs/configuration/protocols/bgp.rst index 24d81cef..6593730f 100644 --- a/docs/configuration/protocols/bgp.rst +++ b/docs/configuration/protocols/bgp.rst @@ -37,7 +37,7 @@ The :abbr:`ASN (Autonomous System Number)` is one of the essential elements of  BGP. BGP is a distance vector routing protocol, and the AS-Path framework  provides distance vector metric and loop detection to BGP. -.. cfgcmd:: set protocols bgp local-as <asn> +.. cfgcmd:: set protocols bgp system-as <asn>    Set local :abbr:`ASN (Autonomous System Number)` that this router represents.    This is a a mandatory option! @@ -174,10 +174,10 @@ The BGP protocol uses the AS number for detecting whether the BGP connection  is internal or external. VyOS does not have a special command to start the BGP  process. The BGP process starts when the first neighbor is configured. -.. cfgcmd:: set protocols bgp local-as <asn> +.. cfgcmd:: set protocols bgp system-as <asn>    Set local autonomous system number that this router represents. This is a -  a mandatory option! +  mandatory option!  Peers Configuration  ------------------- @@ -431,7 +431,7 @@ Peer Parameters     This command enforces Generalized TTL Security Mechanism (GTSM),     as specified in :rfc:`5082`. With this command, only neighbors -   that are the specified number of hops away will be allowed to +   that are specified number of hops away will be allowed to     become neighbors. The number of hops range is 1 to 254. This     command is mutually exclusive with :cfgcmd:`ebgp-multihop`. @@ -563,11 +563,6 @@ Common parameters     Path (both AS number and AS path length), Origin code, MED, IGP     metric. Also, the next hop address for each path must be different. -.. cfgcmd:: set protocols bgp parameters default no-ipv4-unicast - -   This command allows the user to specify that IPv4 peering is turned off by -   default. -  .. cfgcmd:: set protocols bgp parameters log-neighbor-changes     This command enable logging neighbor up/down changes and reset reason. @@ -984,7 +979,7 @@ Show  .. opcmd:: show ip bgp filter-list <name> -   This command displays BGP routes allowed by by the specified AS Path +   This command displays BGP routes allowed by the specified AS Path     access list.  .. opcmd:: show <ip|ipv6> bgp neighbors <address> advertised-routes @@ -1074,7 +1069,7 @@ A simple eBGP configuration:  .. code-block:: none -  set protocols bgp local-as 65534 +  set protocols bgp system-as 65534    set protocols bgp neighbor 192.168.0.2 ebgp-multihop '2'    set protocols bgp neighbor 192.168.0.2 remote-as '65535'    set protocols bgp neighbor 192.168.0.2 update-source '192.168.0.1' @@ -1085,7 +1080,7 @@ A simple eBGP configuration:  .. code-block:: none -  set protocols bgp local-as 65535 +  set protocols bgp system-as 65535    set protocols bgp neighbor 192.168.0.1 ebgp-multihop '2'    set protocols bgp neighbor 192.168.0.1 remote-as '65534'    set protocols bgp neighbor 192.168.0.1 update-source '192.168.0.2' @@ -1119,7 +1114,7 @@ A simple BGP configuration via IPv6.  .. code-block:: none -  set protocols bgp local-as 65534 +  set protocols bgp system-as 65534    set protocols bgp neighbor 2001:db8::2 ebgp-multihop '2'    set protocols bgp neighbor 2001:db8::2 remote-as '65535'    set protocols bgp neighbor 2001:db8::2 update-source '2001:db8::1' @@ -1131,7 +1126,7 @@ A simple BGP configuration via IPv6.  .. code-block:: none -  set protocols bgp local-as 65535 +  set protocols bgp system-as 65535    set protocols bgp neighbor 2001:db8::1 ebgp-multihop '2'    set protocols bgp neighbor 2001:db8::1 remote-as '65534'    set protocols bgp neighbor 2001:db8::1 update-source '2001:db8::2' @@ -1182,7 +1177,7 @@ Route filter can be applied using a route-map:    set policy route-map AS65535-OUT rule 10 match ipv6 address prefix-list 'AS65535-OUT'    set policy route-map AS65535-OUT rule 20 action 'permit' -  set protocols bgp local-as 65534 +  set protocols bgp system-as 65534    set protocols bgp neighbor 2001:db8::2 address-family ipv4-unicast route-map export 'AS65535-OUT'    set protocols bgp neighbor 2001:db8::2 address-family ipv4-unicast route-map import 'AS65535-IN'    set protocols bgp neighbor 2001:db8::2 address-family ipv6-unicast route-map export 'AS65535-OUT' @@ -1210,7 +1205,7 @@ Route filter can be applied using a route-map:    set policy route-map AS65534-OUT rule 10 match ipv6 address prefix-list 'AS65534-OUT'    set policy route-map AS65534-OUT rule 20 action 'permit' -  set protocols bgp local-as 65535 +  set protocols bgp system-as 65535    set protocols bgp neighbor 2001:db8::1 address-family ipv4-unicast route-map export 'AS65534-OUT'    set protocols bgp neighbor 2001:db8::1 address-family ipv4-unicast route-map import 'AS65534-IN'    set protocols bgp neighbor 2001:db8::1 address-family ipv6-unicast route-map export 'AS65534-OUT' diff --git a/docs/configuration/protocols/failover.rst b/docs/configuration/protocols/failover.rst new file mode 100644 index 00000000..72201ade --- /dev/null +++ b/docs/configuration/protocols/failover.rst @@ -0,0 +1,103 @@ +.. _routing-static: + +######## +Failover +######## + +Failover routes are manually configured routes, but they install +to the routing table if the health-check target is alive. +If the target is not alive the route is removed from the routing table +until the target will be available. + +*************** +Failover Routes +*************** + +.. cfgcmd:: set protocols failover route <subnet> next-hop <address> check  +   target <target-address> + +   Configure next-hop `<address>` and `<target-address>` for an IPv4 static  +   route. Specify the target +   IPv4 address for health checking. + +.. cfgcmd:: set protocols failover route <subnet> next-hop <address> check  +   timeout <timeout> + +   Timeout in seconds between health target checks. + +   Range is 1 to 300, default is 10. + +.. cfgcmd:: set protocols failover route <subnet> next-hop <address> check  +   type <protocol> + +   Defines protocols for checking ARP, ICMP, TCP + +   Default is ``icmp``. + +.. cfgcmd:: set protocols failover route <subnet> next-hop <address>  +   interface <interface> + +   Next-hop interface for the route + +.. cfgcmd:: set protocols failover route <subnet> next-hop <address>  +   metric <metric> + +   Route metric + +   Default 1. + + +******* +Example +******* + +**One gateway:** + +.. code-block:: none + +  set protocols failover route 203.0.113.1/32 next-hop 192.0.2.1 check target '192.0.2.1' +  set protocols failover route 203.0.113.1/32 next-hop 192.0.2.1 check timeout '5' +  set protocols failover route 203.0.113.1/32 next-hop 192.0.2.1 check type 'icmp' +  set protocols failover route 203.0.113.1/32 next-hop 192.0.2.1 interface 'eth0' +  set protocols failover route 203.0.113.1/32 next-hop 192.0.2.1 metric '10' + +Show the route + +.. code-block:: none + +  vyos@vyos:~$ show ip route 203.0.113.1 +    Routing entry for 203.0.113.1/32 +    Known via "kernel", distance 0, metric 10, best +    Last update 00:00:39 ago +    * 192.0.2.1, via eth0 + +**Two gateways and different metrics:** + +.. code-block:: none + +  set protocols failover route 203.0.113.1/32 next-hop 192.0.2.1 check target '192.0.2.1' +  set protocols failover route 203.0.113.1/32 next-hop 192.0.2.1 check timeout '5' +  set protocols failover route 203.0.113.1/32 next-hop 192.0.2.1 check type 'icmp' +  set protocols failover route 203.0.113.1/32 next-hop 192.0.2.1 interface 'eth0' +  set protocols failover route 203.0.113.1/32 next-hop 192.0.2.1 metric '10' + +  set protocols failover route 203.0.113.1/32 next-hop 198.51.100.1 check target '198.51.100.99' +  set protocols failover route 203.0.113.1/32 next-hop 198.51.100.1 check timeout '5' +  set protocols failover route 203.0.113.1/32 next-hop 198.51.100.1 check type 'icmp' +  set protocols failover route 203.0.113.1/32 next-hop 198.51.100.1 interface 'eth2' +  set protocols failover route 203.0.113.1/32 next-hop 198.51.100.1 metric '20' + +Show the route + +.. code-block:: none + +  vyos@vyos:~$ show ip route 203.0.113.1 +  Routing entry for 203.0.113.1/32 +    Known via "kernel", distance 0, metric 10, best +    Last update 00:08:06 ago +    * 192.0.2.1, via eth0 + +  Routing entry for 203.0.113.1/32 +    Known via "kernel", distance 0, metric 20 +    Last update 00:08:14 ago +    * 198.51.100.1, via eth2 diff --git a/docs/configuration/protocols/igmp.rst b/docs/configuration/protocols/igmp.rst index 0c7a470b..d3492632 100644 --- a/docs/configuration/protocols/igmp.rst +++ b/docs/configuration/protocols/igmp.rst @@ -1,4 +1,4 @@ -:lastproofread: 2021-09-30 +:lastproofread: 2023-01-27  .. _multicast: diff --git a/docs/configuration/protocols/index.rst b/docs/configuration/protocols/index.rst index c302d6a9..b7fc6289 100644 --- a/docs/configuration/protocols/index.rst +++ b/docs/configuration/protocols/index.rst @@ -9,6 +9,7 @@ Protocols     bfd     bgp +   failover     igmp     isis     mpls diff --git a/docs/configuration/protocols/isis.rst b/docs/configuration/protocols/isis.rst index 416a42c3..ef9cc960 100644 --- a/docs/configuration/protocols/isis.rst +++ b/docs/configuration/protocols/isis.rst @@ -7,14 +7,18 @@ 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. +interior gateway protocol (IGP) which is described in ISO10589, +:rfc:`1195`, :rfc:`5308`. 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, lowest cost) path to a +destination. The intermediate systems (the name for routers) exchange topology +information with their directly conencted 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. The tree database that is created with IS-IS is +similar to the one that is created with OSPF in that the paths chosen should +be similar. Comparisons to OSPF are inevitable and often are reasonable ones +to make in regards to the way a network will respond with either IGP.  *******  General @@ -26,60 +30,76 @@ Configuration  Mandatory Settings  ------------------ +For IS-IS top operate correctly, one must do the equivalent of a Router ID in +CLNS. This Router ID is called the :abbr:`NET (Network Entity Title)`. This +must be unique for each and every router that is operating in IS-IS. It also +must not be duplicated otherwise the same issues that occur within OSPF will +occur within IS-IS when it comes to said duplication. + +  .. cfgcmd:: set protocols isis net <network-entity-title> -  This commad also sets network entity title (NET) provided in ISO format. +  This commad sets network entity title (NET) provided in ISO format. -  For example :abbr:`NET (Network Entity Title)` +  Here is an example :abbr:`NET (Network Entity Title)` value:    .. code-block:: none      49.0001.1921.6800.1002.00 -  The IS-IS address consists of the following parts: +  The CLNS address consists of the following 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) +  * Area identifier: ``0001`` IS-IS area number (numberical area ``1``)    * System identifier: ``1921.6800.1002`` - for system idetifiers we recommend -    to use IP address or MAC address of the router itself. +    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``. -  * NET selector: ``00`` Must always be 00, to indicate "this system". +  * :abbr:`NET (Network Entity Title)` selector: ``00`` Must always be 00. This +    setting indicates "this system" or "local system."  .. cfgcmd:: set protocols isis 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. +  This command enables IS-IS on this interface, and allows for +  adjacency to occur. Note that the name of IS-IS instance must be +  the same as the one used to configure the IS-IS process. + +IS-IS Global Configuration +--------------------------  .. cfgcmd:: set protocols isis 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. +  This command enables support for dynamic hostname TLV. Dynamic hostname +  mapping determined as described in :rfc:`2763`, Dynamic Hostname +  Exchange Mechanism for IS-IS.  .. cfgcmd:: set protocols isis level <level-1|level-1-2|level-2> -  This command defines the ISIS router behavior: +  This command defines the IS-IS 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. +  * **level-1** - Act as a station (Level 1) router only. +  * **level-1-2** - Act as a station (Level 1) router and area (Level 2) router. +  * **level-2-only** - Act as an area (Level 2) router only.  .. cfgcmd:: set protocols isis lsp-mtu <size> -  This command configures the maximum size of generated LSPs, in bytes. The -  size range is 128 to 4352. +  This command configures the maximum size of generated +  :abbr:`LSPs (Link State PDUs)`, in bytes. The size range is 128 to 4352.  .. cfgcmd:: set protocols isis metric-style <narrow|transition|wide> -  This command sets old-style (ISO 10589) or new-style packet formats: +  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. +  * **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 purge-originator @@ -117,9 +137,9 @@ Interface Configuration    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 +  * **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 interface <interface> hello-interval    <seconds> @@ -261,12 +281,87 @@ Timers    to IGP events. The process described in :rfc:`8405`. -******* -Example -******* +******** +Examples +******** + +Enable IS-IS +============ + +**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 isis interface eth1 +  set protocols isis interface lo +  set protocols isis net '49.0001.1921.6825.5255.00' + +**Node 2:** + +.. code-block:: none + +  set interfaces ethernet eth1 address '192.0.2.2/24' + +  set interfaces loopback lo address '192.168.255.254/32' +  set interfaces ethernet eth1 address '192.0.2.2/24' + +  set protocols isis interface eth1 +  set protocols isis interface lo +  set protocols isis net '49.0001.1921.6825.5254.00' + + + +This gives us the following neighborships, Level 1 and Level 2: + +.. code-block:: none + +  Node-1@vyos:~$ show isis neighbor +  Area VyOS: +    System Id           Interface   L  State        Holdtime SNPA +   vyos                eth1        1  Up            28       0c87.6c09.0001 +   vyos                eth1        2  Up            28       0c87.6c09.0001 + +  Node-2@vyos:~$ show isis neighbor +  Area VyOS: +    System Id           Interface   L  State        Holdtime SNPA +   vyos                eth1        1  Up            29       0c33.0280.0001 +   vyos                eth1        2  Up            28       0c33.0280.0001 + + + +Here's the IP routes that are populated. Just the loopback: + +.. code-block:: none + +  Node-1@vyos:~$ 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, F - PBR, +         f - OpenFabric, +         > - selected route, * - FIB route, q - queued, r - rejected, b - backup +         t - trapped, o - offload failure + +  I   192.0.2.0/24 [115/20] via 192.0.2.2, eth1 inactive, weight 1, 00:02:22 +  I>* 192.168.255.254/32 [115/20] via 192.0.2.2, eth1, weight 1, 00:02:22 + +  Node-2@vyos:~$ 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, F - PBR, +         f - OpenFabric, +         > - selected route, * - FIB route, q - queued, r - rejected, b - backup +         t - trapped, o - offload failure -Simple IS-IS configuration using 2 nodes and redistributing connected -interfaces. +  I   192.0.2.0/24 [115/20] via 192.0.2.1, eth1 inactive, weight 1, 00:02:21 +  I>* 192.168.255.255/32 [115/20] via 192.0.2.1, eth1, weight 1, 00:02:21 + + + +Enable IS-IS and redistribute routes not natively in IS-IS +==========================================================  **Node 1:** @@ -293,11 +388,11 @@ interfaces.    set protocols isis interface eth1    set protocols isis net '49.0001.1921.6800.2002.00' -Show ip routes on Node2: +Routes on Node 2:  .. code-block:: none -  vyos@r2:~$ show ip route isis +  Node-2@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, @@ -305,3 +400,91 @@ Show ip routes on Node2:           > - 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 +   +   + + +Enable IS-IS with Segment Routing (Experimental) +================================================ + +**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 isis interface eth1 +  set protocols isis interface lo +  set protocols isis net '49.0001.1921.6825.5255.00' +  set protocols isis segment-routing global-block high-label-value '599' +  set protocols isis segment-routing global-block low-label-value '550' +  set protocols isis segment-routing prefix 192.168.255.255/32 index value '1' +  set protocols isis segment-routing prefix 192.168.255.255/32 index explicit-null +  set protocols mpls interface 'eth1' +   +**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 isis interface eth1 +  set protocols isis interface lo +  set protocols isis net '49.0001.1921.6825.5254.00' +  set protocols isis segment-routing global-block high-label-value '599' +  set protocols isis segment-routing global-block low-label-value '550' +  set protocols isis segment-routing prefix 192.168.255.254/32 index value '2' +  set protocols isis segment-routing prefix 192.168.255.254/32 index explicit-null +  set protocols mpls interface 'eth1' +   +   +   +This gives us MPLS segment routing enabled and labels for far end loopbacks: + +.. code-block:: none + +  Node-1@vyos:~$ show mpls table +   Inbound Label  Type        Nexthop                Outbound Label +   ---------------------------------------------------------------------- +   552            SR (IS-IS)  192.0.2.2              IPv4 Explicit Null <-- Node-2 loopback learned on Node-1 +   15000          SR (IS-IS)  192.0.2.2              implicit-null +   15001          SR (IS-IS)  fe80::e87:6cff:fe09:1  implicit-null +   15002          SR (IS-IS)  192.0.2.2              implicit-null +   15003          SR (IS-IS)  fe80::e87:6cff:fe09:1  implicit-null + +  Node-2@vyos:~$ show mpls table +   Inbound Label  Type        Nexthop               Outbound Label +   --------------------------------------------------------------------- +   551            SR (IS-IS)  192.0.2.1             IPv4 Explicit Null <-- Node-1 loopback learned on Node-2 +   15000          SR (IS-IS)  192.0.2.1             implicit-null +   15001          SR (IS-IS)  fe80::e33:2ff:fe80:1  implicit-null +   15002          SR (IS-IS)  192.0.2.1             implicit-null +   15003          SR (IS-IS)  fe80::e33:2ff:fe80:1  implicit-null + +Here is the routing tables showing the MPLS segment routing label operations: + +.. code-block:: none + +  Node-1@vyos:~$ 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, F - PBR, +         f - OpenFabric, +         > - selected route, * - FIB route, q - queued, r - rejected, b - backup +         t - trapped, o - offload failure + +  I   192.0.2.0/24 [115/20] via 192.0.2.2, eth1 inactive, weight 1, 00:07:48 +  I>* 192.168.255.254/32 [115/20] via 192.0.2.2, eth1, label IPv4 Explicit Null, weight 1, 00:03:39 + +  Node-2@vyos:~$ 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, F - PBR, +         f - OpenFabric, +         > - selected route, * - FIB route, q - queued, r - rejected, b - backup +         t - trapped, o - offload failure + +  I   192.0.2.0/24 [115/20] via 192.0.2.1, eth1 inactive, weight 1, 00:07:46 +  I>* 192.168.255.255/32 [115/20] via 192.0.2.1, eth1, label IPv4 Explicit Null, weight 1, 00:03:43 diff --git a/docs/configuration/protocols/mpls.rst b/docs/configuration/protocols/mpls.rst index d1d0cd87..550473d7 100644 --- a/docs/configuration/protocols/mpls.rst +++ b/docs/configuration/protocols/mpls.rst @@ -27,12 +27,14 @@ network transport of data packets.  For more information on how MPLS label switching works, please go visit  `Wikipedia (MPLS)`_. -.. note:: MPLS support in VyOS is not finished yet, and therefore its -   functionality is limited. Currently there is no support for MPLS enabled VPN -   services such as L3VPNs, L2VPNs, and mVPNs. RSVP support is also not present -   as the underlying routing stack (FRR) does not implement it. Currently VyOS -   can be configured as a label switched router (MPLS P router), in both -   penultimate and ultimate hop popping operations. +.. note:: MPLS support in VyOS is not finished yet, and therefore its  +  functionality is limited. Currently there is no support for MPLS enabled VPN +  services such as L2VPNs and mVPNs. RSVP support is also not present as the +  underlying routing stack (FRR) does not implement it. Currently VyOS  +  implements LDP as described in RFC 5036; other LDP standard are the  +  following ones: RFC 6720, RFC 6667, RFC 5919, RFC 5561, RFC 7552, RFC 4447.  +  Because MPLS is already available (FRR also supports RFC 3031). +  Label Distribution Protocol  =========================== diff --git a/docs/configuration/protocols/ospf.rst b/docs/configuration/protocols/ospf.rst index e3f9759e..60f9c149 100644 --- a/docs/configuration/protocols/ospf.rst +++ b/docs/configuration/protocols/ospf.rst @@ -43,7 +43,8 @@ starts when the first ospf enabled interface is configured.     enable ospf on interface with address 192.168.1.1/23, but it does on      interface with address 192.168.1.129/25. -   In some cases it may be more convenient to enable OSPF on a per interface/subnet +   In some cases it may be more convenient to enable OSPF on a per  +   interface/subnet     basis :cfgcmd:`set protocols ospf interface <interface> area <x.x.x.x | x>`  .. cfgcmd:: set protocols ospf auto-cost reference-bandwidth <number> @@ -733,11 +734,85 @@ the "<metric of the router which advertised the link>/<link metric>" format.     This command displays LSAs in MaxAge list. -Configuration Example ---------------------- +Examples +-------- -Below you can see a typical configuration using 2 nodes, redistribute loopback -address and the node 1 sending the default route: + +Enable OSPF +^^^^^^^^^^^ + +**Node 1** + +.. code-block:: none + +  set interfaces loopback lo address 10.1.1.1/32 +  set interfaces ethernet eth0 address 192.168.0.1/24 +  set protocols ospf area 0 network 192.168.0.0/24 +  set protocols ospf area 0 network 10.1.1.1/32 +  set protocols ospf parameters router-id 10.1.1.1 + +**Node 2** + +.. code-block:: none + +  set interfaces loopback lo address 10.1.1.2/32 +  set interfaces ethernet eth0 address 192.168.0.2/24 +  set protocols ospf area 0 network 192.168.0.0/24 +  set protocols ospf area 0 network 10.1.1.2/32 +  set protocols ospf parameters router-id 10.1.1.2 + + + +Here's the neighbors up: + +.. code-block:: none + +  Node-1@vyos:~$ show ip ospf neighbor + +  Neighbor ID     Pri State           Up Time         Dead Time Address         Interface                        RXmtL RqstL DBsmL +  10.1.1.2          1 Full/DR         3m43s             36.094s 192.168.0.2     eth0:192.168.0.1                     0     0     0 + + + +  Node-2@vyos:~$ show ip ospf neighbor + +  Neighbor ID     Pri State           Up Time         Dead Time Address         Interface                        RXmtL RqstL DBsmL +  10.1.1.1          1 Full/Backup     3m47s             31.736s 192.168.0.1     eth0:192.168.0.2                     0     0     0 + +Here's the routes: + +.. code-block:: none + +  Node-1@vyos:~$ show ip route ospf +  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 + +  O   10.1.1.1/32 [110/0] is directly connected, lo, weight 1, 00:00:14 +  O>* 10.1.1.2/32 [110/1] via 192.168.0.2, eth0, weight 1, 00:00:07 +  O   192.168.0.0/24 [110/1] is directly connected, eth0, weight 1, 00:03:32 + +  Node-2@vyos:~$ show ip route ospf +  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 + +  O>* 10.1.1.1/32 [110/1] via 192.168.0.1, eth0, weight 1, 00:00:11 +  O   10.1.1.2/32 [110/0] is directly connected, lo, weight 1, 00:00:04 +  O   192.168.0.0/24 [110/1] is directly connected, eth0, weight 1, 00:03:18 + + + + + +Enable OSPF with route redistribution of the loopback and default originate: +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  **Node 1** @@ -771,6 +846,89 @@ address and the node 1 sending the default route:    set policy route-map CONNECT rule 10 match interface lo +Enable OSPF with Segment Routing (Experimental): +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +**Node 1** + +.. code-block:: none + +  set interfaces loopback lo address 10.1.1.1/32 +  set interfaces ethernet eth0 address 192.168.0.1/24 +  set protocols ospf area 0 network '192.168.0.0/24' +  set protocols ospf area 0 network '10.1.1.1/32' +  set protocols ospf parameters opaque-lsa +  set protocols ospf parameters router-id '10.1.1.1' +  set protocols ospf segment-routing global-block high-label-value '1100' +  set protocols ospf segment-routing global-block low-label-value '1000' +  set protocols ospf segment-routing prefix 10.1.1.1/32 index explicit-null +  set protocols ospf segment-routing prefix 10.1.1.1/32 index value '1' + +**Node 2** + +.. code-block:: none + +  set interfaces loopback lo address 10.1.1.2/32 +  set interfaces ethernet eth0 address 192.168.0.2/24 +  set protocols ospf area 0 network '192.168.0.0/24' +  set protocols ospf area 0 network '10.1.1.2/32' +  set protocols ospf parameters opaque-lsa +  set protocols ospf parameters router-id '10.1.1.2' +  set protocols ospf segment-routing global-block high-label-value '1100' +  set protocols ospf segment-routing global-block low-label-value '1000' +  set protocols ospf segment-routing prefix 10.1.1.2/32 index explicit-null +  set protocols ospf segment-routing prefix 10.1.1.2/32 index value '2' + + +This gives us MPLS segment routing enabled and labels for far end loopbacks: + +.. code-block:: none + +  Node-1@vyos:~$ show mpls table +   Inbound Label  Type       Nexthop      Outbound Label +   ----------------------------------------------------------- +   1002           SR (OSPF)  192.168.0.2  IPv4 Explicit Null  <-- Node-2 loopback learned on Node-1 +   15000          SR (OSPF)  192.168.0.2  implicit-null +   15001          SR (OSPF)  192.168.0.2  implicit-null + +  Node-2@vyos:~$ show mpls table +   Inbound Label  Type       Nexthop      Outbound Label +   ----------------------------------------------------------- +   1001           SR (OSPF)  192.168.0.1  IPv4 Explicit Null  <-- Node-1 loopback learned on Node-2 +   15000          SR (OSPF)  192.168.0.1  implicit-null +   15001          SR (OSPF)  192.168.0.1  implicit-null + +Here is the routing tables showing the MPLS segment routing label operations: + +.. code-block:: none + +  Node-1@vyos:~$ show ip route ospf +  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 + +  O   10.1.1.1/32 [110/0] is directly connected, lo, weight 1, 00:03:43 +  O>* 10.1.1.2/32 [110/1] via 192.168.0.2, eth0, label IPv4 Explicit Null, weight 1, 00:03:32 +  O   192.168.0.0/24 [110/1] is directly connected, eth0, weight 1, 00:03:43 + +  Node-2@vyos:~$ show ip route ospf +  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 + +  O>* 10.1.1.1/32 [110/1] via 192.168.0.1, eth0, label IPv4 Explicit Null, weight 1, 00:03:36 +  O   10.1.1.2/32 [110/0] is directly connected, lo, weight 1, 00:03:51 +  O   192.168.0.0/24 [110/1] is directly connected, eth0, weight 1, 00:03:51 + + + +  .. _routing-ospfv3:  ************* @@ -790,7 +948,7 @@ General  VyOS does not have a special command to start the OSPFv3 process. The OSPFv3  process starts when the first ospf enabled interface is configured. -.. cfgcmd:: set protocols ospfv3 area <number> interface <interface> +.. cfgcmd:: set protocols ospfv3 interface <interface> area <number>      This command specifies the OSPFv3 enabled interface. This command is also     used to enable the OSPF process. The area number can be specified in @@ -987,7 +1145,7 @@ A typical configuration using 2 nodes.  .. code-block:: none -  set protocols ospfv3 area 0.0.0.0 interface eth1 +  set protocols ospfv3 interface eth1 area 0.0.0.0     set protocols ospfv3 area 0.0.0.0 range 2001:db8:1::/64    set protocols ospfv3 parameters router-id 192.168.1.1    set protocols ospfv3 redistribute connected @@ -996,7 +1154,7 @@ A typical configuration using 2 nodes.  .. code-block:: none -  set protocols ospfv3 area 0.0.0.0 interface eth1 +  set protocols ospfv3 interface eth1 area 0.0.0.0     set protocols ospfv3 area 0.0.0.0 range 2001:db8:2::/64    set protocols ospfv3 parameters router-id 192.168.2.1    set protocols ospfv3 redistribute connected @@ -1025,8 +1183,8 @@ Example configuration for WireGuard interfaces:    set interfaces wireguard wg01 peer ospf02 pubkey 'ie3...='    set interfaces wireguard wg01 port '12345'    set protocols ospfv3 parameters router-id 192.168.1.1 -  set protocols ospfv3 area 0.0.0.0 interface 'wg01' -  set protocols ospfv3 area 0.0.0.0 interface 'lo' +  set protocols ospfv3 interface 'wg01' area 0.0.0.0  +  set protocols ospfv3 interface 'lo' area 0.0.0.0  **Node 2** @@ -1040,8 +1198,8 @@ Example configuration for WireGuard interfaces:    set interfaces wireguard wg01 peer ospf01 pubkey 'NHI...='    set interfaces wireguard wg01 port '12345'    set protocols ospfv3 parameters router-id 192.168.1.2 -  set protocols ospfv3 area 0.0.0.0 interface 'wg01' -  set protocols ospfv3 area 0.0.0.0 interface 'lo' +  set protocols ospfv3 interface 'wg01' area 0.0.0.0  +  set protocols ospfv3 interface 'lo' area 0.0.0.0  **Status** diff --git a/docs/configuration/protocols/static.rst b/docs/configuration/protocols/static.rst index da471b86..1ad252e7 100644 --- a/docs/configuration/protocols/static.rst +++ b/docs/configuration/protocols/static.rst @@ -165,16 +165,17 @@ implemented.  Configure  ********* -.. cfgcmd:: set protocols static arp <address> hwaddr <mac> +.. cfgcmd:: set protocols static arp interface <interface> address <host> +   mac <mac>     This will configure a static ARP entry always resolving `<address>` to -   `<mac>`. +   `<mac>` for interface `<interface>`.     Example:     .. code-block:: none -     set protocols static arp 192.0.2.100 hwaddr 00:53:27:de:23:aa +     set protocols static arp interface eth0 address 192.0.2.1 mac 01:23:45:67:89:01  *********  | 
