doc: cleanup multiple

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
This commit is contained in:
Quentin Young 2018-01-29 12:16:20 -05:00
parent 50e75a2b82
commit d1a242fdbf
No known key found for this signature in database
GPG Key ID: DAF48E0F57E0834F
4 changed files with 550 additions and 539 deletions

View File

@ -4,14 +4,13 @@
Babel Babel
***** *****
Babel is an interior gateway protocol that is suitable both for wired Babel is an interior gateway protocol that is suitable both for wired networks
networks and for wireless mesh networks. Babel has been described as and for wireless mesh networks. Babel has been described as 'RIP on speed' --
'RIP on speed' --- it is based on the same principles as RIP, but it is based on the same principles as RIP, but includes a number of refinements
includes a number of refinements that make it react much faster to that make it react much faster to topology changes without ever counting to
topology changes without ever counting to infinity, and allow it to infinity, and allow it to perform reliable link quality estimation on wireless
perform reliable link quality estimation on wireless links. Babel is links. Babel is a double-stack routing protocol, meaning that a single Babel
a double-stack routing protocol, meaning that a single Babel instance instance is able to perform routing for both IPv4 and IPv6.
is able to perform routing for both IPv4 and IPv6.
FRR implements Babel as described in :rfc:`6126`. FRR implements Babel as described in :rfc:`6126`.
@ -40,78 +39,86 @@ Babel configuration
single: no router babel single: no router babel
.. clicmd:: [no] router babel .. clicmd:: [no] router babel
Enable or disable Babel routing.
Enable or disable Babel routing.
.. index:: .. index::
single: babel resend-delay (20-655340) single: babel resend-delay (20-655340)
single: no babel resend-delay [(20-655340)] single: no babel resend-delay [(20-655340)]
.. clicmd:: [no] babel resend-delay (20-655340) .. clicmd:: [no] babel resend-delay (20-655340)
Specifies the time after which important messages are resent when
avoiding a black-hole. The default is 2000 ms. Specifies the time after which important messages are resent when
avoiding a black-hole. The default is 2000 ms.
.. index:: .. index::
single: babel diversity single: babel diversity
single: no babel diversity single: no babel diversity
.. clicmd:: [no] babel diversity .. clicmd:: [no] babel diversity
Enable or disable routing using radio frequency diversity. This is
highly recommended in networks with many wireless nodes. Enable or disable routing using radio frequency diversity. This is
If you enable this, you will probably want to set `babel highly recommended in networks with many wireless nodes.
diversity-factor` and `babel channel` below. If you enable this, you will probably want to set `babel
diversity-factor` and `babel channel` below.
.. index:: babel diversity-factor (1-256) .. index:: babel diversity-factor (1-256)
.. clicmd:: babel diversity-factor (1-256) .. clicmd:: babel diversity-factor (1-256)
Sets the multiplicative factor used for diversity routing, in units of
1/256; lower values cause diversity to play a more important role in Sets the multiplicative factor used for diversity routing, in units of
route selection. The default it 256, which means that diversity plays 1/256; lower values cause diversity to play a more important role in
no role in route selection; you will probably want to set that to 128 route selection. The default it 256, which means that diversity plays
or less on nodes with multiple independent radios. no role in route selection; you will probably want to set that to 128
or less on nodes with multiple independent radios.
.. index:: .. index::
single: network IFNAME single: network IFNAME
single: no network IFNAME single: no network IFNAME
.. clicmd:: no network IFNAME .. clicmd:: no network IFNAME
Enable or disable Babel on the given interface.
Enable or disable Babel on the given interface.
.. index:: babel <wired|wireless> .. index:: babel <wired|wireless>
.. clicmd:: babel <wired|wireless> .. clicmd:: babel <wired|wireless>
Specifies whether this interface is wireless, which disables a number
of optimisations that are only correct on wired interfaces. Specifies whether this interface is wireless, which disables a number
Specifying `wireless` (the default) is always correct, but may of optimisations that are only correct on wired interfaces.
cause slower convergence and extra routing traffic. Specifying `wireless` (the default) is always correct, but may
cause slower convergence and extra routing traffic.
.. index:: .. index::
single: babel split-horizon single: babel split-horizon
single: no babel split-horizon single: no babel split-horizon
.. clicmd:: [no] babel split-horizon .. clicmd:: [no] babel split-horizon
Specifies whether to perform split-horizon on the interface. Specifying
``no babel split-horizon`` is always correct, while ``babel Specifies whether to perform split-horizon on the interface. Specifying
split-horizon`` is an optimisation that should only be used on symmetric ``no babel split-horizon`` is always correct, while ``babel
and transitive (wired) networks. The default is ``babel split-horizon`` split-horizon`` is an optimisation that should only be used on symmetric
on wired interfaces, and ``no babel split-horizon`` on wireless and transitive (wired) networks. The default is ``babel split-horizon``
interfaces. This flag is reset when the wired/wireless status of an on wired interfaces, and ``no babel split-horizon`` on wireless
interface is changed. interfaces. This flag is reset when the wired/wireless status of an
interface is changed.
.. index:: babel hello-interval (20-655340) .. index:: babel hello-interval (20-655340)
.. clicmd:: babel hello-interval (20-655340) .. clicmd:: babel hello-interval (20-655340)
Specifies the time in milliseconds between two scheduled hellos. On
wired links, Babel notices a link failure within two hello intervals; Specifies the time in milliseconds between two scheduled hellos. On
on wireless links, the link quality value is reestimated at every wired links, Babel notices a link failure within two hello intervals;
hello interval. The default is 4000 ms. on wireless links, the link quality value is reestimated at every
hello interval. The default is 4000 ms.
.. index:: babel update-interval (20-655340) .. index:: babel update-interval (20-655340)
.. clicmd:: babel update-interval (20-655340) .. clicmd:: babel update-interval (20-655340)
Specifies the time in milliseconds between two scheduled updates.
Since Babel makes extensive use of triggered updates, this can be set Specifies the time in milliseconds between two scheduled updates. Since
to fairly high values on links with little packet loss. The default Babel makes extensive use of triggered updates, this can be set to fairly
is 20000 ms. high values on links with little packet loss. The default is 20000 ms.
.. index:: .. index::
single: babel channel (1-254) single: babel channel (1-254)
@ -119,86 +126,90 @@ Babel configuration
single: babel channel noninterfering single: babel channel noninterfering
.. clicmd:: babel channel (1-254) .. clicmd:: babel channel (1-254)
see below
.. clicmd:: babel channel interfering .. clicmd:: babel channel interfering
see below
.. clicmd:: babel channel noninterfering .. clicmd:: babel channel noninterfering
Set the channel number that diversity routing uses for this interface
(see `babel diversity` above). Noninterfering interfaces are Set the channel number that diversity routing uses for this interface (see
assumed to only interfere with themselves, interfering interfaces are `babel diversity` above). Noninterfering interfaces are assumed to only
assumed to interfere with all other channels except noninterfering interfere with themselves, interfering interfaces are assumed to interfere
channels, and interfaces with a channel number interfere with with all other channels except noninterfering channels, and interfaces with
interfering interfaces and interfaces with the same channel number. a channel number interfere with interfering interfaces and interfaces with
The default is ``babel channel interfering`` for wireless the same channel number. The default is ``babel channel interfering`` for
interfaces, and ``babel channel noninterfering`` for wired wireless interfaces, and ``babel channel noninterfering`` for wired
interfaces. This is reset when the wired/wireless status of an interfaces. This is reset when the wired/wireless status of an interface is
interface is changed. changed.
.. index:: babel rxcost (1-65534) .. index:: babel rxcost (1-65534)
.. clicmd:: babel rxcost (1-65534) .. clicmd:: babel rxcost (1-65534)
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. This value is reset when
the wired/wireless attribute of the interface is changed.
Do not use this command unless you know what you are doing; in most Specifies the base receive cost for this interface. For wireless
networks, acting directly on the cost using route maps is a better interfaces, it specifies the multiplier used for computing the ETX
technique. reception cost (default 256); for wired interfaces, it specifies the
cost that will be advertised to neighbours. This value is reset when
the wired/wireless attribute of the interface is changed.
.. note::
Do not use this command unless you know what you are doing; in most
networks, acting directly on the cost using route maps is a better
technique.
.. index:: babel rtt-decay (1-256) .. index:: babel rtt-decay (1-256)
.. clicmd:: babel rtt-decay (1-256) .. clicmd:: babel rtt-decay (1-256)
This specifies the decay factor for the exponential moving average of
RTT samples, in units of 1/256. Higher values discard old samples This specifies the decay factor for the exponential moving average of
faster. The default is 42. RTT samples, in units of 1/256. Higher values discard old samples
faster. The default is 42.
.. index:: babel rtt-min (1-65535) .. index:: babel rtt-min (1-65535)
.. clicmd:: babel rtt-min (1-65535) .. clicmd:: babel rtt-min (1-65535)
This specifies the minimum RTT, in milliseconds, starting from which we
increase the cost to a neighbour. The additional cost is linear in This specifies the minimum RTT, in milliseconds, starting from which we
(rtt - rtt-min). The default is 100 ms. increase the cost to a neighbour. The additional cost is linear in
(rtt - rtt-min). The default is 100 ms.
.. index:: babel rtt-max (1-65535) .. index:: babel rtt-max (1-65535)
.. clicmd:: babel rtt-max (1-65535) .. clicmd:: babel rtt-max (1-65535)
This specifies the maximum RTT, in milliseconds, above which we don't
increase the cost to a neighbour. The default is 120 ms. This specifies the maximum RTT, in milliseconds, above which we don't
increase the cost to a neighbour. The default is 120 ms.
.. index:: babel max-rtt-penalty (0-65535) .. index:: babel max-rtt-penalty (0-65535)
.. clicmd:: babel max-rtt-penalty (0-65535) .. clicmd:: babel max-rtt-penalty (0-65535)
This 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 0, This specifies the maximum cost added to a neighbour because of RTT, i.e.
which effectively disables the use of a RTT-based cost. when the RTT is higher or equal than rtt-max. The default is 0, which
effectively disables the use of a RTT-based cost.
.. index:: .. index::
single: babel enable-timestamps single: babel enable-timestamps
single: no babel enable-timestamps single: no babel enable-timestamps
.. clicmd:: [no] babel enable-timestamps .. clicmd:: [no] babel enable-timestamps
Enable or disable sending timestamps with each Hello and IHU message in
order to compute RTT values. The default is `no babel enable-timestamps`. Enable or disable sending timestamps with each Hello and IHU message in
order to compute RTT values. The default is `no babel enable-timestamps`.
.. index:: babel resend-delay (20-655340) .. index:: babel resend-delay (20-655340)
.. clicmd:: babel resend-delay (20-655340) .. clicmd:: babel resend-delay (20-655340)
Specifies the time in milliseconds after which an 'important'
request or update will be resent. The default is 2000 ms. You Specifies the time in milliseconds after which an 'important' request or
probably don't want to tweak this value. update will be resent. The default is 2000 ms. You probably don't want to
tweak this value.
.. index:: babel smoothing-half-life (0-65534) .. index:: babel smoothing-half-life (0-65534)
.. clicmd:: babel smoothing-half-life (0-65534) .. clicmd:: babel smoothing-half-life (0-65534)
Specifies the time constant, in seconds, of the smoothing algorithm
used for implementing hysteresis. Larger values reduce route Specifies the time constant, in seconds, of the smoothing algorithm used for
oscillation at the cost of very slightly increasing convergence time. implementing hysteresis. Larger values reduce route oscillation at the cost
The value 0 disables hysteresis, and is suitable for wired networks. of very slightly increasing convergence time. The value 0 disables
The default is 4 s. hysteresis, and is suitable for wired networks. The default is 4 s.
.. _Babel_redistribution: .. _Babel_redistribution:
@ -210,7 +221,8 @@ Babel redistribution
single: no redistribute <ipv4|ipv6> KIND single: no redistribute <ipv4|ipv6> KIND
.. clicmd:: [no] redistribute <ipv4|ipv6> KIND .. clicmd:: [no] redistribute <ipv4|ipv6> KIND
Specify which kind of routes should be redistributed into Babel.
Specify which kind of routes should be redistributed into Babel.
.. _Show_Babel_information: .. _Show_Babel_information:
@ -222,47 +234,38 @@ These commands dump various parts of *babeld*'s internal state.
.. index:: show babel route .. index:: show babel route
.. clicmd:: show babel route .. clicmd:: show babel route
*missing description*
.. index:: show babel route A.B.C.D .. index:: show babel route A.B.C.D
.. clicmd:: show babel route A.B.C.D .. clicmd:: show babel route A.B.C.D
*missing description*
.. index:: show babel route X:X::X:X .. index:: show babel route X:X::X:X
.. clicmd:: show babel route X:X::X:X .. clicmd:: show babel route X:X::X:X
*missing description*
.. index:: show babel route A.B.C.D/M .. index:: show babel route A.B.C.D/M
.. clicmd:: show babel route A.B.C.D/M .. clicmd:: show babel route A.B.C.D/M
*missing description*
.. index:: show babel route X:X::X:X/M .. index:: show babel route X:X::X:X/M
.. clicmd:: show babel route X:X::X:X/M .. clicmd:: show babel route X:X::X:X/M
*missing description*
.. index:: show babel interface .. index:: show babel interface
.. clicmd:: show babel interface .. clicmd:: show babel interface
*missing description*
.. index:: show babel interface `IFNAME` .. index:: show babel interface IFNAME
.. clicmd:: show babel interface IFNAME .. clicmd:: show babel interface IFNAME
*missing description*
.. index:: show babel neighbor .. index:: show babel neighbor
.. clicmd:: show babel neighbor .. clicmd:: show babel neighbor
*missing description*
.. index:: show babel parameters .. index:: show babel parameters
.. clicmd:: show babel parameters .. clicmd:: show babel parameters
*missing description*
Babel debugging commands Babel debugging commands
======================== ========================
@ -272,16 +275,17 @@ Babel debugging commands
simple: no debug babel KIND simple: no debug babel KIND
.. clicmd:: [no] debug babel KIND .. clicmd:: [no] debug babel KIND
Enable or disable debugging messages of a given kind. ``KIND`` can
be one of:
- common Enable or disable debugging messages of a given kind. ``KIND`` can
- filter be one of:
- timeout
- interface
- route
- all
Note that if you have compiled with the NO_DEBUG flag, then these commands - ``common``
aren't available. - ``filter``
- ``timeout``
- ``interface``
- ``route``
- ``all``
.. note::
If you have compiled with the ``NO_DEBUG`` flag, then these commands aren't
available.

View File

@ -39,12 +39,10 @@ starting.
Config files are generally found in |INSTALL_PREFIX_ETC|. Config files are generally found in |INSTALL_PREFIX_ETC|.
Each of the daemons has its own Each of the daemons has its own config file. The daemon name plus ``.conf`` is
config file. For example, zebra's default config file name is *zebra.conf*. the default config file name. For example, zebra's default config file name is
:file:`zebra.conf`. You can specify a config file using the :option:`-f` or
The daemon name plus `.conf` is the default config file name. You :option:`--config-file` options when starting the daemon.
can specify a config file using the :kbd:`-f` or :kbd:`--config-file`
options when starting the daemon.
.. _Basic_Config_Commands: .. _Basic_Config_Commands:
@ -71,8 +69,8 @@ Basic Config Commands
Set enable password. Set enable password.
.. index:: .. index::
single: no log trap [LEVEL] single: no log trap [LEVEL]
single: log trap LEVEL single: log trap LEVEL
.. clicmd:: [no] log trap LEVEL .. clicmd:: [no] log trap LEVEL
@ -85,8 +83,8 @@ Basic Config Commands
existing logging destinations. existing logging destinations.
.. index:: .. index::
single: no log stdout [LEVEL] single: no log stdout [LEVEL]
single: log stdout [LEVEL] single: log stdout [LEVEL]
.. clicmd:: [no] log stdout LEVEL .. clicmd:: [no] log stdout LEVEL
@ -100,8 +98,8 @@ Basic Config Commands
``errors``. ``errors``.
.. index:: .. index::
single: no log file [FILENAME [LEVEL]] single: no log file [FILENAME [LEVEL]]
single: log file FILENAME [LEVEL] single: log file FILENAME [LEVEL]
.. clicmd:: [no] log file [FILENAME [LEVEL]] .. clicmd:: [no] log file [FILENAME [LEVEL]]
@ -121,8 +119,8 @@ Basic Config Commands
information. information.
.. index:: .. index::
single: no log syslog [LEVEL] single: no log syslog [LEVEL]
single: log syslog [LEVEL] single: log syslog [LEVEL]
.. clicmd:: [no] log syslog [LEVEL] .. clicmd:: [no] log syslog [LEVEL]
@ -132,8 +130,8 @@ Basic Config Commands
be used. The ``no`` form of the command disables logging to syslog. be used. The ``no`` form of the command disables logging to syslog.
.. index:: .. index::
single: no log monitor [LEVEL] single: no log monitor [LEVEL]
single: log monitor [LEVEL] single: log monitor [LEVEL]
.. clicmd:: [no] log monitor [LEVEL] .. clicmd:: [no] log monitor [LEVEL]
@ -147,8 +145,8 @@ Basic Config Commands
terminal monitors. terminal monitors.
.. index:: .. index::
single: no log facility [FACILITY] single: no log facility [FACILITY]
single: log facility [FACILITY] single: log facility [FACILITY]
.. clicmd:: [no] log facility [FACILITY] .. clicmd:: [no] log facility [FACILITY]
@ -157,8 +155,8 @@ Basic Config Commands
the facility to the default ``daemon`` facility. the facility to the default ``daemon`` facility.
.. index:: .. index::
single: no log record-priority single: no log record-priority
single: log record-priority single: log record-priority
.. clicmd:: [no] log record-priority .. clicmd:: [no] log record-priority
@ -171,8 +169,8 @@ Basic Config Commands
the facility and level in the messages emitted. the facility and level in the messages emitted.
.. index:: .. index::
single: log timestamp precision (0-6) single: log timestamp precision (0-6)
single: [no] log timestamp precision (0-6) single: [no] log timestamp precision (0-6)
.. clicmd:: [no] log timestamp precision [(0-6)] .. clicmd:: [no] log timestamp precision [(0-6)]
@ -298,59 +296,59 @@ Terminal Mode Commands
.. clicmd:: write terminal .. clicmd:: write terminal
Displays the current configuration to the vty interface. Displays the current configuration to the vty interface.
.. index:: write file .. index:: write file
.. clicmd:: write file .. clicmd:: write file
Write current configuration to configuration file. Write current configuration to configuration file.
.. index:: configure terminal .. index:: configure terminal
.. clicmd:: configure terminal .. clicmd:: configure terminal
Change to configuration mode. This command is the first step to Change to configuration mode. This command is the first step to
configuration. configuration.
.. index:: terminal length (0-512) .. index:: terminal length (0-512)
.. clicmd:: terminal length (0-512) .. clicmd:: terminal length (0-512)
Set terminal display length to ``(0-512)``. If length is 0, no Set terminal display length to ``(0-512)``. If length is 0, no
display control is performed. display control is performed.
.. index:: who .. index:: who
.. clicmd:: who .. clicmd:: who
Show a list of currently connected vty sessions. Show a list of currently connected vty sessions.
.. index:: list .. index:: list
.. clicmd:: list .. clicmd:: list
List all available commands. List all available commands.
.. index:: show version .. index:: show version
.. clicmd:: show version .. clicmd:: show version
Show the current version of |PACKAGE_NAME| and its build host information. Show the current version of |PACKAGE_NAME| and its build host information.
.. index:: show logging .. index:: show logging
.. clicmd:: show logging .. clicmd:: show logging
Shows the current configuration of the logging system. This includes Shows the current configuration of the logging system. This includes
the status of all logging destinations. the status of all logging destinations.
.. index:: logmsg LEVEL MESSAGE .. index:: logmsg LEVEL MESSAGE
.. clicmd:: logmsg LEVEL MESSAGE .. clicmd:: logmsg LEVEL MESSAGE
Send a message to all logging destinations that are enabled for messages Send a message to all logging destinations that are enabled for messages
of the given severity. of the given severity.
.. _Common_Invocation_Options: .. _Common_Invocation_Options:
@ -360,56 +358,55 @@ Common Invocation Options
These options apply to all |PACKAGE_NAME| daemons. These options apply to all |PACKAGE_NAME| daemons.
.. clicmd:: -d, --daemon .. option:: -d
.. option:: --daemon
Runs in daemon mode. Run in daemon mode.
.. option:: -f <file>
.. option:: --config-file <file>
.. clicmd:: -f file, --config_file=FILE Set configuration file name.
Set configuration file name. .. option:: -h, --help
Display this help and exit.
.. clicmd:: -h, --help .. option:: -i <file>
.. option:: --pid-file <file>
Display this help and exit. Upon startup the process identifier of the daemon is written to a file,
typically in :file:`/var/run`. This file can be used by the init system
to implement commands such as ``.../init.d/zebra status``,
``.../init.d/zebra restart`` or ``.../init.d/zebra stop``.
The file name is an run-time option rather than a configure-time option
so that multiple routing daemons can be run simultaneously. This is
useful when using |PACKAGE_NAME| to implement a routing looking glass. One
machine can be used to collect differing routing views from differing
points in the network.
.. clicmd:: -i file, --pid_file=file .. option:: -A <address>
.. option:: --vty-addr <address>
Upon startup the process identifier of the daemon is written to a file, Set the VTY local address to bind to. If set, the VTY socket will only
typically in :file:`/var/run`. This file can be used by the init system be bound to this address.
to implement commands such as ``.../init.d/zebra status``,
``.../init.d/zebra restart`` or ``.../init.d/zebra stop``.
The file name is an run-time option rather than a configure-time option .. option:: -P <port>
so that multiple routing daemons can be run simultaneously. This is .. option:: --vty-port <port>
useful when using |PACKAGE_NAME| to implement a routing looking glass. One
machine can be used to collect differing routing views from differing
points in the network.
Set the VTY TCP port number. If set to 0 then the TCP VTY sockets will not
be opened.
.. clicmd:: -A address, --vty_addr=address .. option:: -u <user>
.. option:: --vty_addr <user>
Set the VTY local address to bind to. If set, the VTY socket will only Set the user and group to run as.
be bound to this address.
.. option:: -v
.. option:: --version
.. clicmd:: -P port, --vty_port=port Print program version.
Set the VTY TCP port number. If set to 0 then the TCP VTY sockets will not
be opened.
.. clicmd:: -u user, --vty_addr=user
Set the user and group to run as.
.. clicmd:: -v, --version
Print program version.
.. _Loadable_Module_Support: .. _Loadable_Module_Support:
@ -421,17 +418,18 @@ unloading modules at runtime is not supported (yet). To load a module, use
the following command line option at daemon startup: the following command line option at daemon startup:
.. clicmd:: -M module:options, --module module:options .. option:: -M <module:options>
.. option:: --module <module:options>
Load the specified module, optionally passing options to it. If the module Load the specified module, optionally passing options to it. If the module
name contains a slash (/), it is assumed to be a full pathname to a file to name contains a slash (/), it is assumed to be a full pathname to a file to
be loaded. If it does not contain a slash, the be loaded. If it does not contain a slash, the |INSTALL_PREFIX_MODULES|
`INSTALL_PREFIX_MODULES` directory is searched for a module of directory is searched for a module of the given name; first with the daemon
the given name; first with the daemon name prepended (e.g. ``zebra_mod`` name prepended (e.g. ``zebra_mod`` for ``mod``), then without the daemon
for ``mod``), then without the daemon name prepended. name prepended.
This option is available on all daemons, though some daemons may not have This option is available on all daemons, though some daemons may not have
any modules available to be loaded. any modules available to be loaded.
The SNMP Module The SNMP Module
--------------- ---------------
@ -446,15 +444,14 @@ for information on its usage.
The FPM Module The FPM Module
-------------- --------------
If FPM is enabled during compile-time and installed as part of the package, If FPM is enabled during compile-time and installed as part of the package, the
the ``fpm`` module can be loaded for the *zebra* daemon. This ``fpm`` module can be loaded for the *zebra* daemon. This provides the
provides the Forwarding Plane Manager ("FPM") API. Forwarding Plane Manager ("FPM") API.
The module expects its argument to be either ``netlink`` or The module expects its argument to be either ``netlink`` or ``protobuf``,
.. clicmd:: protobuf, specifying the encapsulation to use. `netlink` is the specifying the encapsulation to use. ``netlink`` is the default, and
default, and `protobuf` may not be available if the module was built ``protobuf`` may not be available if the module was built without protobuf
without protobuf support. Refer to :ref:`zebra_FIB_push_interface` for more support. Refer to :ref:`zebra_FIB_push_interface` for more information.
information.
.. _Virtual_Terminal_Interfaces: .. _Virtual_Terminal_Interfaces:
@ -505,7 +502,7 @@ is no VTY password, one cannot connect to the VTY interface at all.
Router# Router#
:kbd:`?` is very useful for looking up commands. :kbd:`?` and the ``find`` command are very useful for looking up commands.
.. _VTY_Modes: .. _VTY_Modes:

View File

@ -55,7 +55,6 @@ customize the build to include or exclude specific features and dependencies.
.. option:: --disable-zebra .. option:: --disable-zebra
Do not build zebra daemon. Do not build zebra daemon.
.. option:: --disable-ripd .. option:: --disable-ripd
@ -118,7 +117,7 @@ customize the build to include or exclude specific features and dependencies.
Enable Traffic Engineering Extension for ISIS (RFC5305) Enable Traffic Engineering Extension for ISIS (RFC5305)
.. option:: --enable-multipath=`ARG` .. option:: --enable-multipath <ARG>
Enable support for Equal Cost Multipath. `ARG` is the maximum number Enable support for Equal Cost Multipath. `ARG` is the maximum number
of ECMP paths to allow, set to 0 to allow unlimited number of paths. of ECMP paths to allow, set to 0 to allow unlimited number of paths.
@ -129,9 +128,9 @@ customize the build to include or exclude specific features and dependencies.
.. option:: --enable-gcc-rdynamic .. option:: --enable-gcc-rdynamic
Pass the *-rdynamic* option to the linker driver. This is in most Pass the ``-rdynamic`` option to the linker driver. This is in most cases
cases neccessary for getting usable backtraces. This option defaults to on neccessary for getting usable backtraces. This option defaults to on if the
if the compiler is detected as gcc, but giving an explicit enable/disable is compiler is detected as gcc, but giving an explicit enable/disable is
suggested. suggested.
.. option:: --disable-backtrace .. option:: --disable-backtrace
@ -164,23 +163,23 @@ and the configuration files in :file:`/usr/local/etc`. The :file:`/usr/local/`
installation prefix and other directories may be changed using the following installation prefix and other directories may be changed using the following
options to the configuration script. options to the configuration script.
.. option:: --prefix=`prefix` .. option:: --prefix <prefix>
Install architecture-independent files in `prefix` [/usr/local]. Install architecture-independent files in `prefix` [/usr/local].
.. option:: --sysconfdir=`dir` .. option:: --sysconfdir <dir>
Look for configuration files in `dir` [`prefix`/etc]. Note that sample Look for configuration files in `dir` [`prefix`/etc]. Note that sample
configuration files will be installed here. configuration files will be installed here.
.. option:: --localstatedir=`dir` .. option:: --localstatedir <dir>
Configure zebra to use `dir` for local state files, such Configure zebra to use `dir` for local state files, such as pid files and
as pid files and unix sockets. unix sockets.
.. _Least-Privilege_support: .. _Least-Privilege_support:
Least-Privilege support Least-Privilege Support
----------------------- -----------------------
.. index:: FRR Least-Privileges .. index:: FRR Least-Privileges
@ -192,23 +191,21 @@ shortly after startup and switch to another user. The configure script will
automatically try to configure this support. There are three configure automatically try to configure this support. There are three configure
options to control the behaviour of FRR daemons. options to control the behaviour of FRR daemons.
.. option:: --enable-user=`user` .. option:: --enable-user <user>
Switch to user `ARG` shortly after startup, and run as user `ARG` Switch to user `user shortly after startup, and run as user `user` in normal
in normal operation. operation.
.. option:: --enable-group=`group` .. option:: --enable-group <user>
Switch real and effective group to `group` shortly after Switch real and effective group to `group` shortly after startup.
startup.
.. option:: --enable-vty-group=`group` .. option:: --enable-vty-group <group>
Create Unix Vty sockets (for use with vtysh) with group owndership set to Create Unix Vty sockets (for use with vtysh) with group owndership set to
`group`. This allows one to create a seperate group which is `group`. This allows one to create a seperate group which is restricted to
restricted to accessing only the Vty sockets, hence allowing one to accessing only the vty sockets, hence allowing one to delegate this group to
delegate this group to individual users, or to run vtysh setgid to individual users, or to run vtysh setgid to this group.
this group.
The default user and group which will be configured is 'frr' if no user or The default user and group which will be configured is 'frr' if no user or
group is specified. Note that this user or group requires write access to the group is specified. Note that this user or group requires write access to the
@ -257,14 +254,16 @@ make sure the following libraries have been installed. Please note that
these libraries will not be needed when you uses GNU C library 2.1 these libraries will not be needed when you uses GNU C library 2.1
or upper. or upper.
*inet6-apps* - inet6-apps
The `inet6-apps` package includes basic IPv6 related libraries such The `inet6-apps` package includes basic IPv6 related libraries such
as `inet_ntop` and `inet_pton`. Some basic IPv6 programs such as `inet_ntop` and `inet_pton`. Some basic IPv6 programs such
as *ping*, *ftp*, and *inetd* are also as *ping*, *ftp*, and *inetd* are also
included. The `inet-apps` can be found at included. The `inet-apps` can be found at
`ftp://ftp.inner.net/pub/ipv6/ <ftp://ftp.inner.net/pub/ipv6/>`_. `ftp://ftp.inner.net/pub/ipv6/ <ftp://ftp.inner.net/pub/ipv6/>`_.
*net-tools* - net-tools
The `net-tools` package provides an IPv6 enabled interface and routing The `net-tools` package provides an IPv6 enabled interface and routing
utility. It contains *ifconfig*, *route*, *netstat*, and other tools. utility. It contains *ifconfig*, *route*, *netstat*, and other tools.
`net-tools` may be found at http://www.tazenda.demon.co.uk/phil/net-tools/. `net-tools` may be found at http://www.tazenda.demon.co.uk/phil/net-tools/.

View File

@ -4,7 +4,7 @@
Zebra Zebra
***** *****
*zebra* is an IP routing manager. It provides kernel routing *zebra* is an IP routing manager. It provides kernel routing
table updates, interface lookups, and redistribution of routes between table updates, interface lookups, and redistribution of routes between
different routing protocols. different routing protocols.
@ -16,257 +16,268 @@ Invoking zebra
Besides the common invocation options (:ref:`Common_Invocation_Options`), the Besides the common invocation options (:ref:`Common_Invocation_Options`), the
*zebra* specific invocation options are listed below. *zebra* specific invocation options are listed below.
.. program:: zebra
.. option:: -b
.. option:: --batch
*-b* Runs in batch mode. *zebra* parses configuration file and terminates
immediately.
*--batch* .. option:: -k
Runs in batch mode. *zebra* parses configuration file and terminates .. option:: --keep_kernel
immediately.
When zebra starts up, don't delete old self inserted routes.
*-k* .. option:: -r
.. option:: --retain
*--keep_kernel*
When zebra starts up, don't delete old self inserted routes.
*-r*
*--retain*
When program terminates, retain routes added by zebra.
When program terminates, retain routes added by zebra.
.. _Interface_Commands: .. _Interface_Commands:
Interface Commands Interface Commands
================== ==================
.. _Standard_Commands: .. _Standard_Commands:
Standard Commands Standard Commands
----------------- -----------------
.. index:: Command {interface `ifname`} {} .. index:: interface IFNAME
Command {interface `ifname`} {} .. clicmd:: interface IFNAME
.. index:: {Interface Command} {shutdown} {} .. index:: shutdown
{Interface Command} {shutdown} {} .. clicmd:: shutdown
.. index:: {Interface Command} {no shutdown} {} .. index:: no shutdown
{Interface Command} {no shutdown} {} .. clicmd:: no shutdown
Up or down the current interface.
.. index:: {Interface Command} {ip address `address/prefix`} {} Up or down the current interface.
{Interface Command} {ip address `address/prefix`} {} .. index:: ip address ADDRESS/PREFIX
.. index:: {Interface Command} {ipv6 address `address/prefix`} {}
{Interface Command} {ipv6 address `address/prefix`} {} .. clicmd:: ip address ADDRESS/PREFIX
.. index:: {Interface Command} {no ip address `address/prefix`} {} .. index:: ipv6 address ADDRESS/PREFIX
{Interface Command} {no ip address `address/prefix`} {} .. clicmd:: ipv6 address ADDRESS/PREFIX
.. index:: {Interface Command} {no ipv6 address `address/prefix`} {} .. index:: no ip address ADDRESS/PREFIX
{Interface Command} {no ipv6 address `address/prefix`} {} .. clicmd:: no ip address ADDRESS/PREFIX
Set the IPv4 or IPv6 address/prefix for the interface. .. index:: no ipv6 address ADDRESS/PREFIX
.. index:: {Interface Command} {ip address `local-addr` peer `peer-addr/prefix`} {} .. clicmd:: no ipv6 address ADDRESS/PREFIX
{Interface Command} {ip address `local-addr` peer `peer-addr/prefix`} {} Set the IPv4 or IPv6 address/prefix for the interface.
.. index:: {Interface Command} {no ip address `local-addr` peer `peer-addr/prefix`} {}
{Interface Command} {no ip address `local-addr` peer `peer-addr/prefix`} {} .. index:: ip address LOCAL-ADDR peer PEER-ADDR/PREFIX
Configure an IPv4 Pointopoint address on the interface.
(The concept of PtP addressing does not exist for IPv6.)
`local-addr` has no subnet mask since the local side in PtP .. clicmd:: ip address LOCAL-ADDR peer PEER-ADDR/PREFIX
addressing is always a single (/32) address. `peer-addr/prefix` .. index:: no ip address LOCAL-ADDR peer PEER-ADDR/PREFIX
can be an arbitrary subnet behind the other end of the link (or even on the
link in Point-to-Multipoint setups), though generally /32s are used.
.. index:: {Interface Command} {ip address `address/prefix` secondary} {} .. clicmd:: no ip address LOCAL-ADDR peer PEER-ADDR/PREFIX
{Interface Command} {ip address `address/prefix` secondary} {} Configure an IPv4 Pointopoint address on the interface. (The concept of PtP
.. index:: {Interface Command} {no ip address `address/prefix` secondary} {} addressing does not exist for IPv6.)
{Interface Command} {no ip address `address/prefix` secondary} {} `local-addr` has no subnet mask since the local side in PtP addressing is
Set the secondary flag for this address. This causes ospfd to not treat the always a single (/32) address. `peer-addr/prefix` can be an arbitrary subnet
address as a distinct subnet. behind the other end of the link (or even on the link in Point-to-Multipoint
setups), though generally /32s are used.
.. index:: {Interface Command} {description `description` ...} {} .. index:: ip address ADDRESS/PREFIX secondary
{Interface Command} {description `description` ...} {} .. clicmd:: ip address ADDRESS/PREFIX secondary
Set description for the interface. .. index:: no ip address ADDRESS/PREFIX secondary
.. index:: {Interface Command} {multicast} {} .. clicmd:: no ip address ADDRESS/PREFIX secondary
{Interface Command} {multicast} {} Set the secondary flag for this address. This causes ospfd to not treat the
.. index:: {Interface Command} {no multicast} {} address as a distinct subnet.
{Interface Command} {no multicast} {} .. index:: description DESCRIPTION ...
Enable or disables multicast flag for the interface.
.. index:: {Interface Command} {bandwidth (1-10000000)} {} .. clicmd:: description DESCRIPTION ...
{Interface Command} {bandwidth (1-10000000)} {} Set description for the interface.
.. index:: {Interface Command} {no bandwidth (1-10000000)} {}
{Interface Command} {no bandwidth (1-10000000)} {} .. index:: multicast
Set bandwidth value of the interface in kilobits/sec. This is for
calculating OSPF cost. This command does not affect the actual device
configuration.
.. index:: {Interface Command} {link-detect} {} .. clicmd:: multicast
.. index:: no multicast
{Interface Command} {link-detect} {} .. clicmd:: no multicast
.. index:: {Interface Command} {no link-detect} {}
{Interface Command} {no link-detect} {} Enable or disables multicast flag for the interface.
Enable/disable link-detect on platforms which support this. Currently
only Linux and Solaris, and only where network interface drivers support reporting .. index:: bandwidth (1-10000000)
link-state via the IFF_RUNNING flag.
.. clicmd:: bandwidth (1-10000000)
.. index:: no bandwidth (1-10000000)
.. clicmd:: no bandwidth (1-10000000)
Set bandwidth value of the interface in kilobits/sec. This is for
calculating OSPF cost. This command does not affect the actual device
configuration.
.. index:: link-detect
.. clicmd:: link-detect
.. index:: no link-detect
.. clicmd:: no link-detect
Enable/disable link-detect on platforms which support this. Currently only
Linux and Solaris, and only where network interface drivers support
reporting link-state via the ``IFF_RUNNING`` flag.
.. _Link_Parameters_Commands: .. _Link_Parameters_Commands:
Link Parameters Commands Link Parameters Commands
------------------------ ------------------------
.. index:: {Interface Command} {link-params} {} .. index:: link-params
.. clicmd:: link-params
{Interface Command} {link-params} {} .. index:: no link-param
.. index:: {Interface Command} {no link-param} {} .. clicmd:: no link-param
{Interface Command} {no link-param} {} Enter into the link parameters sub node. At least 'enable' must be set to
Enter into the link parameters sub node. At least 'enable' must be set to activate the link parameters, activate the link parameters, and consequently Traffic Engineering on this
and consequently Traffic Engineering on this interface. MPLS-TE must be enable at the OSPF (:ref:`OSPF_Traffic_Engineering`) interface. MPLS-TE must be enable at the OSPF
or ISIS (:ref:`ISIS_Traffic_Engineering`) router level in complement to this. (:ref:`OSPF_Traffic_Engineering`) or ISIS (:ref:`ISIS_Traffic_Engineering`)
Disable link parameters for this interface. router level in complement to this. Disable link parameters for this
interface.
Under link parameter statement, the following commands set the different TE values: Under link parameter statement, the following commands set the different TE values:
.. index:: link-params {enable} .. index:: link-params [enable]
.. clicmd:: link-params [enable]
link-params {enable} Enable link parameters for this interface.
Enable link parameters for this interface.
.. index:: link-params {metric (0-4294967295)} {} .. index:: link-params [metric (0-4294967295)]
.. clicmd:: link-params [metric (0-4294967295)]
link-params {metric (0-4294967295)} {} .. index:: link-params max-bw BANDWIDTH
.. index:: link-params {max-bw `bandwidth`} {} .. clicmd:: link-params max-bw BANDWIDTH
link-params {max-bw `bandwidth`} {} .. index:: link-params max-rsv-bw BANDWIDTH
.. index:: link-params {max-rsv-bw `bandwidth`} {} .. clicmd:: link-params max-rsv-bw BANDWIDTH
link-params {max-rsv-bw `bandwidth`} {} .. index:: link-params unrsv-bw (0-7) BANDWIDTH
.. index:: link-params {unrsv-bw (0-7) `bandwidth`} {} .. clicmd:: link-params unrsv-bw (0-7) BANDWIDTH
link-params {unrsv-bw (0-7) `bandwidth`} {} .. index:: link-params admin-grp BANDWIDTH
.. index:: link-params {admin-grp `bandwidth`} {} .. clicmd:: link-params admin-grp BANDWIDTH
link-params {admin-grp `bandwidth`} {} These commands specifies the Traffic Engineering parameters of the interface
These commands specifies the Traffic Engineering parameters of the interface in conformity to RFC3630 (OSPF) in conformity to RFC3630 (OSPF) or RFC5305 (ISIS). There are respectively
or RFC5305 (ISIS). the TE Metric (different from the OSPF or ISIS metric), Maximum Bandwidth
There are respectively the TE Metric (different from the OSPF or ISIS metric), Maximum Bandwidth (interface speed (interface speed by default), Maximum Reservable Bandwidth, Unreserved
by default), Maximum Reservable Bandwidth, Unreserved Bandwidth for each 0-7 priority and Admin Group (ISIS) or Bandwidth for each 0-7 priority and Admin Group (ISIS) or Resource
Resource Class/Color (OSPF). Class/Color (OSPF).
Note that `bandwidth` are specified in IEEE floating point format and express in Bytes/second. Note that BANDIWDTH is specified in IEEE floating point format and express
in Bytes/second.
.. index:: link-param {delay (0-16777215) [min (0-16777215) | max (0-16777215)]} {} .. index:: link-param delay (0-16777215) [min (0-16777215) | max (0-16777215)]
.. clicmd:: link-param delay (0-16777215) [min (0-16777215) | max (0-16777215)]
link-param {delay (0-16777215) [min (0-16777215) | max (0-16777215)]} {} .. index:: link-param delay-variation (0-16777215)
.. index:: link-param {delay-variation (0-16777215)} {} .. clicmd:: link-param delay-variation (0-16777215)
link-param {delay-variation (0-16777215)} {} .. index:: link-param packet-loss PERCENTAGE
.. index:: link-param {packet-loss `percentage`} {} .. clicmd:: link-param packet-loss PERCENTAGE
link-param {packet-loss `percentage`} {} .. index:: link-param res-bw BANDWIDTH
.. index:: link-param {res-bw `bandwidth`} {} .. clicmd:: link-param res-bw BANDWIDTH
link-param {res-bw `bandwidth`} {} .. index:: link-param ava-bw BANDWIDTH
.. index:: link-param {ava-bw `bandwidth`} {} .. clicmd:: link-param ava-bw BANDWIDTH
link-param {ava-bw `bandwidth`} {} .. index:: link-param use-bw BANDWIDTH
.. index:: link-param {use-bw `bandwidth`} {} .. clicmd:: link-param use-bw BANDWIDTH
link-param {use-bw `bandwidth`} {} These command specifies additionnal Traffic Engineering parameters of the
These command specifies additionnal Traffic Engineering parameters of the interface in conformity to interface in conformity to draft-ietf-ospf-te-metrics-extension-05.txt and
draft-ietf-ospf-te-metrics-extension-05.txt and draft-ietf-isis-te-metrics-extension-03.txt. There are draft-ietf-isis-te-metrics-extension-03.txt. There are respectively the
respectively the delay, jitter, loss, available bandwidth, reservable bandwidth and utilized bandwidth. delay, jitter, loss, available bandwidth, reservable bandwidth and utilized
bandwidth.
Note that `bandwidth` are specified in IEEE floating point format and express in Bytes/second. Note that BANDWIDTH is specified in IEEE floating point format and express
Delays and delay variation are express in micro-second (µs). Loss is specified in `percentage` ranging in Bytes/second. Delays and delay variation are express in micro-second
from 0 to 50.331642% by step of 0.000003. (µs). Loss is specified in PERCENTAGE ranging from 0 to 50.331642% by step
of 0.000003.
.. index:: link-param {neighbor <A.B.C.D> as (0-65535)} {} .. index:: link-param neighbor <A.B.C.D> as (0-65535)
.. clicmd:: link-param neighbor <A.B.C.D> as (0-65535)
link-param {neighbor <A.B.C.D> as (0-65535)} {} .. index:: link-param no neighbor
.. index:: link-param {no neighbor} {} .. clicmd:: link-param no neighbor
link-param {no neighbor} {} Specifies the remote ASBR IP address and Autonomous System (AS) number
Specifies the remote ASBR IP address and Autonomous System (AS) number for InterASv2 link in OSPF (RFC5392). for InterASv2 link in OSPF (RFC5392). Note that this option is not yet
Note that this option is not yet supported for ISIS (RFC5316). supported for ISIS (RFC5316).
.. _Static_Route_Commands: .. _Static_Route_Commands:
Static Route Commands Static Route Commands
===================== =====================
Static routing is a very fundamental feature of routing technology. It Static routing is a very fundamental feature of routing technology. It
defines static prefix and gateway. defines static prefix and gateway.
.. index:: Command {ip route `network` `gateway`} {} .. index:: ip route NETWORK GATEWAY
.. clicmd:: ip route NETWORK GATEWAY
Command {ip route `network` `gateway`} {} NETWORK is destination prefix with format of A.B.C.D/M. GATEWAY is gateway
`network` is destination prefix with format of A.B.C.D/M. for the prefix. When GATEWAY is A.B.C.D format. It is taken as a IPv4
`gateway` is gateway for the prefix. When `gateway` is address gateway. Otherwise it is treated as an interface name. If the
A.B.C.D format. It is taken as a IPv4 address gateway. Otherwise it interface name is ``null0`` then zebra installs a blackhole route.
is treated as an interface name. If the interface name is `null0` then
zebra installs a blackhole route.
:: Some example configuration:
ip route 10.0.0.0/8 10.0.0.2 ::
ip route 10.0.0.0/8 ppp0 ip route 10.0.0.0/8 10.0.0.2
ip route 10.0.0.0/8 null0 ip route 10.0.0.0/8 ppp0
ip route 10.0.0.0/8 null0
First example defines 10.0.0.0/8 static route with gateway 10.0.0.2.
Second one defines the same prefix but with gateway to interface ppp0. The
third install a blackhole route.
.. index:: ip route NETWORK NETMASK GATEWAY
.. clicmd:: ip route NETWORK NETMASK GATEWAY
This is alternate version of above command. When NETWORK is
A.B.C.D format, user must define NETMASK value with A.B.C.D
format. GATEWAY is same option as above command.
::
ip route 10.0.0.0 255.255.255.0 10.0.0.2
ip route 10.0.0.0 255.255.255.0 ppp0
ip route 10.0.0.0 255.255.255.0 null0
First example defines 10.0.0.0/8 static route with gateway 10.0.0.2. These statements are equivalent to those in the previous example.
Second one defines the same prefix but with gateway to interface ppp0. The
third install a blackhole route.
.. index:: Command {ip route `network` `netmask` `gateway`} {} .. index:: ip route NETWORK GATEWAY DISTANCE
.. clicmd:: ip route NETWORK GATEWAY DISTANCE
Command {ip route `network` `netmask` `gateway`} {} Installs the route with the specified distance.
This is alternate version of above command. When `network` is
A.B.C.D format, user must define `netmask` value with A.B.C.D
format. `gateway` is same option as above command
::
ip route 10.0.0.0 255.255.255.0 10.0.0.2
ip route 10.0.0.0 255.255.255.0 ppp0
ip route 10.0.0.0 255.255.255.0 null0
These statements are equivalent to those in the previous example.
.. index:: Command {ip route `network` `gateway` `distance`} {}
Command {ip route `network` `gateway` `distance`} {}
Installs the route with the specified distance.
Multiple nexthop static route Multiple nexthop static route
:: ::
ip route 10.0.0.1/32 10.0.0.2 ip route 10.0.0.1/32 10.0.0.2
ip route 10.0.0.1/32 10.0.0.3 ip route 10.0.0.1/32 10.0.0.3
ip route 10.0.0.1/32 eth0 ip route 10.0.0.1/32 eth0
If there is no route to 10.0.0.2 and 10.0.0.3, and interface eth0 If there is no route to 10.0.0.2 and 10.0.0.3, and interface eth0
@ -278,17 +289,17 @@ nexthops, if the platform supports this.
:: ::
zebra> show ip route zebra> show ip route
S> 10.0.0.1/32 [1/0] via 10.0.0.2 inactive S> 10.0.0.1/32 [1/0] via 10.0.0.2 inactive
via 10.0.0.3 inactive via 10.0.0.3 inactive
* is directly connected, eth0 * is directly connected, eth0
:: ::
ip route 10.0.0.0/8 10.0.0.2 ip route 10.0.0.0/8 10.0.0.2
ip route 10.0.0.0/8 10.0.0.3 ip route 10.0.0.0/8 10.0.0.3
ip route 10.0.0.0/8 null0 255 ip route 10.0.0.0/8 null0 255
This will install a multihop route via the specified next-hops if they are This will install a multihop route via the specified next-hops if they are
@ -298,45 +309,45 @@ default) should the specified gateways not be reachable. Eg:
:: ::
zebra> show ip route 10.0.0.0/8 zebra> show ip route 10.0.0.0/8
Routing entry for 10.0.0.0/8 Routing entry for 10.0.0.0/8
Known via "static", distance 1, metric 0 Known via "static", distance 1, metric 0
10.0.0.2 inactive 10.0.0.2 inactive
10.0.0.3 inactive 10.0.0.3 inactive
Routing entry for 10.0.0.0/8 Routing entry for 10.0.0.0/8
Known via "static", distance 255, metric 0 Known via "static", distance 255, metric 0
directly connected, Null0 directly connected, Null0
.. index:: Command {ipv6 route `network` `gateway`} {} .. index:: ipv6 route NETWORK GATEWAY
.. clicmd:: ipv6 route NETWORK GATEWAY
Command {ipv6 route `network` `gateway`} {} .. index:: ipv6 route NETWORK GATEWAY DISTANCE
.. index:: Command {ipv6 route `network` `gateway` `distance`} {} .. clicmd:: ipv6 route NETWORK GATEWAY DISTANCE
Command {ipv6 route `network` `gateway` `distance`} {} These behave similarly to their ipv4 counterparts.
These behave similarly to their ipv4 counterparts.
.. index:: Command {ipv6 route `network` from `srcprefix` `gateway`} {} .. index:: ipv6 route NETWORK from SRCPREFIX GATEWAY
.. clicmd:: ipv6 route NETWORK from SRCPREFIX GATEWAY
Command {ipv6 route `network` from `srcprefix` `gateway`} {} .. index:: ipv6 route NETWORK from SRCPREFIX GATEWAY DISTANCE
.. index:: Command {ipv6 route `network` from `srcprefix` `gateway` `distance`} {} .. clicmd:: ipv6 route NETWORK from SRCPREFIX GATEWAY DISTANCE
Command {ipv6 route `network` from `srcprefix` `gateway` `distance`} {} Install a static source-specific route. These routes are currently supported
Install a static source-specific route. These routes are currently supported on Linux operating systems only, and perform AND matching on packet's
on Linux operating systems only, and perform AND matching on packet's destination and source addresses in the kernel's forwarding path. Note that
destination and source addresses in the kernel's forwarding path. Note that destination longest-prefix match is "more important" than source LPM, e.g.
destination longest-prefix match is "more important" than source LPM, e.g. *"2001:db8:1::/64 from 2001:db8::/48"* will win over
*"2001:db8:1::/64 from 2001:db8::/48"* will win over *"2001:db8::/48 from 2001:db8:1::/64"* if both match.
*"2001:db8::/48 from 2001:db8:1::/64"* if both match.
.. index:: Command {table `tableno`} {} .. index:: table TABLENO
.. clicmd:: table TABLENO
Command {table `tableno`} {} Select the primary kernel routing table to be used. This only works
Select the primary kernel routing table to be used. This only works for kernels supporting multiple routing tables (like GNU/Linux 2.2.x
for kernels supporting multiple routing tables (like GNU/Linux 2.2.x and later). After setting TABLENO with this command,
and later). After setting `tableno` with this command, static routes defined after this are added to the specified table.
static routes defined after this are added to the specified table.
.. _Multicast_RIB_Commands: .. _Multicast_RIB_Commands:
@ -344,135 +355,137 @@ Multicast RIB Commands
====================== ======================
The Multicast RIB provides a separate table of unicast destinations which The Multicast RIB provides a separate table of unicast destinations which
is used for Multicast Reverse Path Forwarding decisions. It is used with is used for Multicast Reverse Path Forwarding decisions. It is used with
a multicast source's IP address, hence contains not multicast group a multicast source's IP address, hence contains not multicast group
addresses but unicast addresses. addresses but unicast addresses.
This table is fully separate from the default unicast table. However, This table is fully separate from the default unicast table. However,
RPF lookup can include the unicast table. RPF lookup can include the unicast table.
WARNING: RPF lookup results are non-responsive in this version of FRR, WARNING: RPF lookup results are non-responsive in this version of FRR,
i.e. multicast routing does not actively react to changes in underlying i.e. multicast routing does not actively react to changes in underlying
unicast topology! unicast topology!
.. index:: Command {ip multicast rpf-lookup-mode `mode`} {} .. index:: ip multicast rpf-lookup-mode MODE
.. clicmd:: ip multicast rpf-lookup-mode MODE
Command {ip multicast rpf-lookup-mode `mode`} {} .. index:: no ip multicast rpf-lookup-mode [MODE]
.. index:: Command {no ip multicast rpf-lookup-mode [`mode`]} {} .. clicmd:: no ip multicast rpf-lookup-mode [MODE]
Command {no ip multicast rpf-lookup-mode [`mode`]} {} MODE sets the method used to perform RPF lookups. Supported modes:
`mode` sets the method used to perform RPF lookups. Supported modes:
urib-only
Performs the lookup on the Unicast RIB. The Multicast RIB is never used.
mrib-only
Performs the lookup on the Multicast RIB. The Unicast RIB is never used.
*urib-only* mrib-then-urib
Performs the lookup on the Unicast RIB. The Multicast RIB is never used. Tries to perform the lookup on the Multicast RIB. If any route is found,
that route is used. Otherwise, the Unicast RIB is tried.
*mrib-only* lower-distance
Performs the lookup on the Multicast RIB. The Unicast RIB is never used. Performs a lookup on the Multicast RIB and Unicast RIB each. The result
with the lower administrative distance is used; if they're equal, the
Multicast RIB takes precedence.
*mrib-then-urib* longer-prefix
Tries to perform the lookup on the Multicast RIB. If any route is found, Performs a lookup on the Multicast RIB and Unicast RIB each. The result
that route is used. Otherwise, the Unicast RIB is tried. with the longer prefix length is used; if they're equal, the
Multicast RIB takes precedence.
*lower-distance* The `mrib-then-urib` setting is the default behavior if nothing is
Performs a lookup on the Multicast RIB and Unicast RIB each. The result configured. If this is the desired behavior, it should be explicitly
with the lower administrative distance is used; if they're equal, the configured to make the configuration immune against possible changes in
Multicast RIB takes precedence. what the default behavior is.
*longer-prefix* .. warning::
Performs a lookup on the Multicast RIB and Unicast RIB each. The result Unreachable routes do not receive special treatment and do not cause
with the longer prefix length is used; if they're equal, the fallback to a second lookup.
Multicast RIB takes precedence.
The `mrib-then-urib` setting is the default behavior if nothing is .. index:: show ip rpf ADDR
configured. If this is the desired behavior, it should be explicitly .. clicmd:: show ip rpf ADDR
configured to make the configuration immune against possible changes in
what the default behavior is.
WARNING: Unreachable routes do not receive special treatment and do not Performs a Multicast RPF lookup, as configured with ``ip multicast
cause fallback to a second lookup. rpf-lookup-mode MODE``. ADDR specifies the multicast source address to look
up.
.. index:: Command {show ip rpf `addr`} {} ::
Command {show ip rpf `addr`} {}
Performs a Multicast RPF lookup, as configured with
*ip multicast rpf-lookup-mode `mode*`. `addr` specifies
the multicast source address to look up.
::
> show ip rpf 192.0.2.1 > show ip rpf 192.0.2.1
Routing entry for 192.0.2.0/24 using Unicast RIB Routing entry for 192.0.2.0/24 using Unicast RIB
Known via "kernel", distance 0, metric 0, best
* 198.51.100.1, via eth0 Known via "kernel", distance 0, metric 0, best
* 198.51.100.1, via eth0
Indicates that a multicast source lookup for 192.0.2.1 would use an Indicates that a multicast source lookup for 192.0.2.1 would use an
Unicast RIB entry for 192.0.2.0/24 with a gateway of 198.51.100.1. Unicast RIB entry for 192.0.2.0/24 with a gateway of 198.51.100.1.
.. index:: Command {show ip rpf} {} .. index:: show ip rpf
.. clicmd:: show ip rpf
Command {show ip rpf} {} Prints the entire Multicast RIB. Note that this is independent of the
Prints the entire Multicast RIB. Note that this is independent of the configured RPF lookup mode, the Multicast RIB may be printed yet not
configured RPF lookup mode, the Multicast RIB may be printed yet not used at all.
used at all.
.. index:: Command {ip mroute `prefix` `nexthop` [`distance`]} {} .. index:: ip mroute PREFIX NEXTHOP [DISTANCE]
.. clicmd:: ip mroute PREFIX NEXTHOP [DISTANCE]
Command {ip mroute `prefix` `nexthop` [`distance`]} {} .. index:: no ip mroute PREFIX NEXTHOP [DISTANCE]
.. index:: Command {no ip mroute `prefix` `nexthop` [`distance`]} {} .. clicmd:: no ip mroute PREFIX NEXTHOP [DISTANCE]
Command {no ip mroute `prefix` `nexthop` [`distance`]} {} Adds a static route entry to the Multicast RIB. This performs exactly as the
Adds a static route entry to the Multicast RIB. This performs exactly as ``ip route`` command, except that it inserts the route in the Multicast RIB
the *ip route* command, except that it inserts the route in the instead of the Unicast RIB.
Multicast RIB instead of the Unicast RIB.
.. _zebra_Route_Filtering: .. _zebra_Route_Filtering:
zebra Route Filtering zebra Route Filtering
===================== =====================
Zebra supports *prefix-list* and *route-map* to match Zebra supports :dfn:`prefix-list`s and :ref:`Route_Map`s to match routes
routes received from other frr components. The received from other frr components. The permit/deny facilities provided by
*permit*/*deny* facilities provided by these commands these commands can be used to filter which routes zebra will install in the
can be used to filter which routes zebra will install in the kernel. kernel.
.. index:: Command {ip protocol `protocol` route-map `routemap`} {} .. index:: ip protocol PROTOCOL route-map ROUTEMAP
.. clicmd:: ip protocol PROTOCOL route-map ROUTEMAP
Command {ip protocol `protocol` route-map `routemap`} {} Apply a route-map filter to routes for the specified protocol. PROTOCOL can
Apply a route-map filter to routes for the specified protocol. `protocol` be **any** or one of
can be **any** or one of
**system**,
**kernel**,
**connected**,
**static**,
**rip**,
**ripng**,
**ospf**,
**ospf6**,
**isis**,
**bgp**,
**hsls**.
.. index:: {Route Map} {set src `address`} - system,
- kernel,
- connected,
- static,
- rip,
- ripng,
- ospf,
- ospf6,
- isis,
- bgp,
- hsls.
{Route Map} {set src `address`} .. index:: set src ADDRESS
Within a route-map, set the preferred source address for matching routes .. clicmd:: set src ADDRESS
when installing in the kernel.
Within a route-map, set the preferred source address for matching routes
when installing in the kernel.
The following creates a prefix-list that matches all addresses, a route-map
that sets the preferred source address, and applies the route-map to all
*rip* routes.
:: ::
The following creates a prefix-list that matches all addresses, a route-map ip prefix-list ANY permit 0.0.0.0/0 le 32
that sets the preferred source address, and applies the route-map to all route-map RM1 permit 10
*rip* routes. match ip address prefix-list ANY
set src 10.0.0.1
ip prefix-list ANY permit 0.0.0.0/0 le 32 ip protocol rip route-map RM1
route-map RM1 permit 10
match ip address prefix-list ANY
set src 10.0.0.1
ip protocol rip route-map RM1
.. _zebra_FIB_push_interface: .. _zebra_FIB_push_interface:
@ -482,7 +495,7 @@ zebra FIB push interface
Zebra supports a 'FIB push' interface that allows an external Zebra supports a 'FIB push' interface that allows an external
component to learn the forwarding information computed by the FRR component to learn the forwarding information computed by the FRR
routing suite. This is a loadable module that needs to be enabled routing suite. This is a loadable module that needs to be enabled
at startup as described in :ref:`Loadable_Module_Support`. at startup as described in :ref:`Loadable_Module_Support`.
In FRR, the Routing Information Base (RIB) resides inside In FRR, the Routing Information Base (RIB) resides inside
@ -507,7 +520,7 @@ the FPM. The connection is initiated by zebra -- that is, the FPM acts
as the TCP server. as the TCP server.
The relevant zebra code kicks in when zebra is configured with the The relevant zebra code kicks in when zebra is configured with the
`--enable-fpm` flag. Zebra periodically attempts to connect to :option:`--enable-fpm` flag. Zebra periodically attempts to connect to
the well-known FPM port. Once the connection is up, zebra starts the well-known FPM port. Once the connection is up, zebra starts
sending messages containing routes over the socket to the FPM. Zebra sending messages containing routes over the socket to the FPM. Zebra
sends a complete copy of the forwarding table to the FPM, including sends a complete copy of the forwarding table to the FPM, including
@ -527,12 +540,10 @@ schema. Protobuf messages can be extended easily while maintaining
backward-compatibility with older code. Protobuf has the following backward-compatibility with older code. Protobuf has the following
advantages over netlink: advantages over netlink:
* - Code for serialization/deserialization is generated automatically. This
Code for serialization/deserialization is generated reduces the likelihood of bugs, allows third-party programs to be integrated
automatically. This reduces the likelihood of bugs, allows third-party quickly, and makes it easy to add fields.
programs to be integrated quickly, and makes it easy to add fields. - The message format is not tied to an OS (Linux), and can be evolved
*
The message format is not tied to an OS (Linux), and can be evolved
independently. independently.
As mentioned before, zebra encodes routes sent to the FPM in netlink As mentioned before, zebra encodes routes sent to the FPM in netlink
@ -551,65 +562,65 @@ the FPM a complete copy of the forwarding table(s) when it reconnects.
zebra Terminal Mode Commands zebra Terminal Mode Commands
============================ ============================
.. index:: Command {show ip route} {} .. index:: show ip route
.. clicmd:: show ip route
Command {show ip route} {} Display current routes which zebra holds in its database.
Display current routes which zebra holds in its database.
:: ::
Router# show ip route Router# show ip route
Codes: K - kernel route, C - connected, S - static, R - RIP, Codes: K - kernel route, C - connected, S - static, R - RIP,
B - BGP * - FIB route. B - BGP * - FIB route.
K* 0.0.0.0/0 203.181.89.241 K* 0.0.0.0/0 203.181.89.241
S 0.0.0.0/0 203.181.89.1 S 0.0.0.0/0 203.181.89.1
C* 127.0.0.0/8 lo C* 127.0.0.0/8 lo
C* 203.181.89.240/28 eth0 C* 203.181.89.240/28 eth0
.. index:: Command {show ipv6 route} {} .. index:: show ipv6 route
.. clicmd:: show ipv6 route
Command {show ipv6 route} {} .. index:: show interface
.. index:: Command {show interface} {} .. clicmd:: show interface
Command {show interface} {} .. index:: show ip prefix-list [NAME]
.. index:: Command {show ip prefix-list [`name`]} {} .. clicmd:: show ip prefix-list [NAME]
Command {show ip prefix-list [`name`]} {} .. index:: show route-map [NAME]
.. index:: Command {show route-map [`name`]} {} .. clicmd:: show route-map [NAME]
Command {show route-map [`name`]} {} .. index:: show ip protocol
.. index:: Command {show ip protocol} {} .. clicmd:: show ip protocol
Command {show ip protocol} {} .. index:: show ipforward
.. index:: Command {show ipforward} {} .. clicmd:: show ipforward
Command {show ipforward} {} Display whether the host's IP forwarding function is enabled or not.
Display whether the host's IP forwarding function is enabled or not. Almost any UNIX kernel can be configured with IP forwarding disabled.
Almost any UNIX kernel can be configured with IP forwarding disabled. If so, the box can't work as a router.
If so, the box can't work as a router.
.. index:: Command {show ipv6forward} {} .. index:: show ipv6forward
.. clicmd:: show ipv6forward
Command {show ipv6forward} {} Display whether the host's IP v6 forwarding is enabled or not.
Display whether the host's IP v6 forwarding is enabled or not.
.. index:: Command {show zebra} {} .. index:: show zebra
.. clicmd:: show zebra
Command {show zebra} {} Display various statistics related to the installation and deletion
Display various statistics related to the installation and deletion of routes, neighbor updates, and LSP's into the kernel.
of routes, neighbor updates, and LSP's into the kernel.
.. index:: Command {show zebra fpm stats} {} .. index:: show zebra fpm stats
.. clicmd:: show zebra fpm stats
Command {show zebra fpm stats} {} Display statistics related to the zebra code that interacts with the
Display statistics related to the zebra code that interacts with the optional Forwarding Plane Manager (FPM) component.
optional Forwarding Plane Manager (FPM) component.
.. index:: Command {clear zebra fpm stats} {} .. index:: clear zebra fpm stats
.. clicmd:: clear zebra fpm stats
Command {clear zebra fpm stats} {} Reset statistics related to the zebra code that interacts with the
Reset statistics related to the zebra code that interacts with the optional Forwarding Plane Manager (FPM) component.
optional Forwarding Plane Manager (FPM) component.