mirror of
https://github.com/vyos/vyos-documentation.git
synced 2025-10-26 08:41:46 +01:00
T4977: Add Babel routing protocol
Documentation for https://github.com/vyos/vyos-1x/pull/1800.
This commit is contained in:
parent
d39ce49e2f
commit
b8056e27be
210
docs/configuration/protocols/babel.rst
Normal file
210
docs/configuration/protocols/babel.rst
Normal file
@ -0,0 +1,210 @@
|
||||
.. _babel:
|
||||
|
||||
####
|
||||
Babel
|
||||
####
|
||||
|
||||
Babel is a modern routing protocol designed to be robust and efficient
|
||||
both in ordinary wired networks and in wireless mesh networks.
|
||||
By default, it uses hop-count on wired networks and a variant of ETX
|
||||
on wireless links, It can be configured to take radio diversity into account
|
||||
and to automatically compute a link's latency and include it in the metric.
|
||||
It is defined in :rfc:`8966`.
|
||||
|
||||
Babel a dual stack protocol.
|
||||
A single Babel instance is able to perform routing for both IPv4 and IPv6.
|
||||
|
||||
General Configuration
|
||||
---------------------
|
||||
|
||||
VyOS does not have a special command to start the Babel process.
|
||||
The Babel process starts when the first Babel enabled interface is configured.
|
||||
|
||||
.. cfgcmd:: set protocols babel interface <interface>
|
||||
|
||||
This command specifies a Babel enabled interface by interface name. Both
|
||||
the sending and receiving of Babel packets will be enabled on the interface
|
||||
specified in this command.
|
||||
|
||||
Optional Configuration
|
||||
----------------------
|
||||
|
||||
.. cfgcmd:: set protocols babel parameters diversity
|
||||
|
||||
This command enables routing using radio frequency diversity.
|
||||
This is highly recommended in networks with many wireless nodes.
|
||||
|
||||
.. note:: If you enable this, you will probably want to
|
||||
set diversity-factor and channel below.
|
||||
|
||||
.. cfgcmd:: set protocols babel parameters diversity-factor <1-256>
|
||||
|
||||
This command sets the multiplicative factor used for diversity routing,
|
||||
in units of 1/256; lower values cause diversity to play a more important role
|
||||
in route selection.
|
||||
The default it 256, which means that diversity plays no role in route
|
||||
selection; you will probably want to set that to 128 or less on nodes
|
||||
with multiple independent radios.
|
||||
|
||||
.. cfgcmd:: set protocols babel parameters resend-delay <milliseconds>
|
||||
|
||||
This command specifies the time in milliseconds after which an 'important'
|
||||
request or update will be resent. The default is 2000 ms.
|
||||
|
||||
.. cfgcmd:: set protocols babel parameters smoothing-half-life <seconds>
|
||||
|
||||
This command specifies the time constant, in seconds, of the smoothing
|
||||
algorithm used for implementing hysteresis.
|
||||
Larger values reduce route oscillation at the cost of very slightly increasing
|
||||
convergence time. The value 0 disables hysteresis, and is suitable for wired
|
||||
networks. The default is 4 s.
|
||||
|
||||
Interfaces Configuration
|
||||
------------------------
|
||||
|
||||
.. cfgcmd:: set protocols babel interface <interface> type <auto|wired|wireless>
|
||||
|
||||
This command sets the interface type:
|
||||
|
||||
**auto** – automatically determines the interface type.
|
||||
**wired** – enables optimisations for wired interfaces.
|
||||
**wireless** – disables a number of optimisations that are only correct
|
||||
on wired interfaces. Specifying wireless is always correct,
|
||||
but may cause slower convergence and extra routing traffic.
|
||||
|
||||
.. cfgcmd:: set protocols babel interface <interface> split-horizon <default|disable|enable>
|
||||
|
||||
This command specifies whether to perform split-horizon on the interface.
|
||||
Specifying no babel split-horizon is always correct, while babel split-horizon
|
||||
is an optimisation that should only be used on symmetric
|
||||
and transitive (wired) networks.
|
||||
|
||||
**default** – enable split-horizon on wired interfaces, and disable
|
||||
split-horizon on wireless interfaces.
|
||||
**enable** – enable split-horizon on this interfaces.
|
||||
**disable** – disable split-horizon on this interfaces.
|
||||
|
||||
.. cfgcmd:: set protocols babel interface <interface> hello-interval <milliseconds>
|
||||
|
||||
This command specifies the time in milliseconds between two scheduled hellos.
|
||||
On wired links, Babel notices a link failure within two hello intervals;
|
||||
on wireless links, the link quality value is reestimated at every hello
|
||||
interval.
|
||||
The default is 4000 ms.
|
||||
|
||||
.. cfgcmd:: set protocols babel interface <interface> update-interval <milliseconds>
|
||||
|
||||
This command specifies the time in milliseconds between two scheduled updates.
|
||||
Since Babel makes extensive use of triggered updates,
|
||||
this can be set to fairly high values on links with little packet loss.
|
||||
The default is 20000 ms.
|
||||
|
||||
.. cfgcmd:: set protocols babel interface <interface> rxcost <1-65534>
|
||||
|
||||
This command specifies the base receive cost for this interface.
|
||||
For wireless interfaces, it specifies the multiplier used for computing
|
||||
the ETX reception cost (default 256);
|
||||
for wired interfaces, it specifies the cost that will be advertised to
|
||||
neighbours.
|
||||
|
||||
.. cfgcmd:: set protocols babel interface <interface> rtt-decay <1-256>
|
||||
|
||||
This command specifies the decay factor for the exponential moving average
|
||||
of RTT samples, in units of 1/256.
|
||||
Higher values discard old samples faster. The default is 42.
|
||||
|
||||
.. cfgcmd:: set protocols babel interface <interface> rtt-min <milliseconds>
|
||||
|
||||
This command specifies the minimum RTT, in milliseconds,
|
||||
starting from which we increase the cost to a neighbour.
|
||||
The additional cost is linear in (rtt - rtt-min). The default is 10 ms.
|
||||
|
||||
.. cfgcmd:: set protocols babel interface <interface> rtt-max <milliseconds>
|
||||
|
||||
This command specifies the maximum RTT, in milliseconds, above which
|
||||
we don't increase the cost to a neighbour. The default is 120 ms.
|
||||
|
||||
|
||||
.. cfgcmd:: set protocols babel interface <interface> max-rtt-penalty <milliseconds>
|
||||
|
||||
This command specifies the maximum cost added to a neighbour because of RTT,
|
||||
i.e. when the RTT is higher or equal than rtt-max.
|
||||
The default is 150.
|
||||
Setting it to 0 effectively disables the use of a RTT-based cost.
|
||||
|
||||
.. cfgcmd:: set protocols babel interface <interface> enable-timestamps
|
||||
|
||||
This command enables sending timestamps with each Hello and IHU message
|
||||
in order to compute RTT values.
|
||||
It is recommended to enable timestamps on tunnel interfaces.
|
||||
|
||||
.. cfgcmd:: set protocols babel interface <interface> channel <1-254|interfering|noninterfering>
|
||||
|
||||
This command set the channel number that diversity routing uses for this
|
||||
interface (see diversity option above).
|
||||
|
||||
**1-254** – interfaces with a channel number interfere with
|
||||
interfering interfaces and interfaces with the same channel number.
|
||||
**interfering** – interfering interfaces are assumed to interfere with all other channels except
|
||||
noninterfering channels.
|
||||
**noninterfering** – noninterfering interfaces are assumed to only interfere
|
||||
with themselves.
|
||||
|
||||
Redistribution Configuration
|
||||
----------------------------
|
||||
|
||||
.. cfgcmd:: set protocols babel redistribute <ipv4|ipv6> <route source>
|
||||
|
||||
This command redistributes routing information from the given route source
|
||||
to the Babel process.
|
||||
|
||||
IPv4 route source: bgp, connected, eigrp, isis, kernel, nhrp, ospf, rip, static.
|
||||
|
||||
IPv6 route source: bgp, connected, eigrp, isis, kernel, nhrp, ospfv3, ripng, static.
|
||||
|
||||
.. cfgcmd:: set protocols babel distribute-list <ipv4|ipv6> access-list <in|out> <number>
|
||||
|
||||
This command can be used to filter the Babel routes using access lists.
|
||||
:cfgcmd:`in` and :cfgcmd:`out` this is the direction in which the access
|
||||
lists are applied.
|
||||
|
||||
.. cfgcmd:: set protocols babel distribute-list <ipv4|ipv6> interface <interface> access-list <in|out> <number>
|
||||
|
||||
This command allows you apply access lists to a chosen interface to
|
||||
filter the Babel routes.
|
||||
|
||||
.. cfgcmd:: set protocols babel distribute-list <ipv4|ipv6> prefix-list <in|out> <name>
|
||||
|
||||
This command can be used to filter the Babel routes using prefix lists.
|
||||
:cfgcmd:`in` and :cfgcmd:`out` this is the direction in which the prefix
|
||||
lists are applied.
|
||||
|
||||
.. cfgcmd:: set protocols babel distribute-list <ipv4|ipv6> interface <interface> prefix-list <in|out> <name>
|
||||
|
||||
This command allows you apply prefix lists to a chosen interface to
|
||||
filter the Babel routes.
|
||||
|
||||
Configuration Example
|
||||
---------------------
|
||||
|
||||
Simple Babel configuration using 2 nodes and redistributing connected interfaces.
|
||||
|
||||
**Node 1:**
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
set interfaces loopback lo address 10.1.1.1/32
|
||||
set interfaces loopback lo address fd12:3456:dead:beef::1/128
|
||||
set protocols babel interface eth0 type wired
|
||||
set protocols babel redistribute ipv4 connected
|
||||
set protocols babel redistribute ipv6 connected
|
||||
|
||||
**Node 2:**
|
||||
|
||||
.. code-block:: none
|
||||
|
||||
set interfaces loopback lo address 10.2.2.2/32
|
||||
set interfaces loopback lo address fd12:3456:beef:dead::2/128
|
||||
set protocols babel interface eth0 type wired
|
||||
set protocols babel redistribute ipv4 connected
|
||||
set protocols babel redistribute ipv6 connected
|
||||
@ -7,6 +7,7 @@ Protocols
|
||||
:maxdepth: 1
|
||||
:includehidden:
|
||||
|
||||
babel
|
||||
bfd
|
||||
bgp
|
||||
failover
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user