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 is an interior gateway protocol that is suitable both for wired
networks and for wireless mesh networks. Babel has been described as
'RIP on speed' --- it is based on the same principles as RIP, but
includes a number of refinements that make it react much faster to
topology changes without ever counting to infinity, and allow it to
perform reliable link quality estimation on wireless links. Babel is
a double-stack routing protocol, meaning that a single Babel instance
is able to perform routing for both IPv4 and IPv6.
Babel is an interior gateway protocol that is suitable both for wired networks
and for wireless mesh networks. Babel has been described as 'RIP on speed' --
it is based on the same principles as RIP, but includes a number of refinements
that make it react much faster to topology changes without ever counting to
infinity, and allow it to perform reliable link quality estimation on wireless
links. Babel is a double-stack routing protocol, meaning that a single Babel
instance is able to perform routing for both IPv4 and IPv6.
FRR implements Babel as described in :rfc:`6126`.
@ -40,78 +39,86 @@ Babel configuration
single: no router babel
.. clicmd:: [no] router babel
Enable or disable Babel routing.
Enable or disable Babel routing.
.. index::
single: babel resend-delay (20-655340)
single: 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::
single: babel diversity
single: 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.
If you enable this, you will probably want to set `babel
diversity-factor` and `babel channel` below.
Enable or disable routing using radio frequency diversity. This is
highly recommended in networks with many wireless nodes.
If you enable this, you will probably want to set `babel
diversity-factor` and `babel channel` below.
.. index:: 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
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.
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.
.. index::
single: network IFNAME
single: 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>
.. clicmd:: babel <wired|wireless>
Specifies whether this interface is wireless, which disables a number
of optimisations that are only correct on wired interfaces.
Specifying `wireless` (the default) is always correct, but may
cause slower convergence and extra routing traffic.
Specifies whether this interface is wireless, which disables a number
of optimisations that are only correct on wired interfaces.
Specifying `wireless` (the default) is always correct, but may
cause slower convergence and extra routing traffic.
.. index::
single: babel split-horizon
single: 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
split-horizon`` is an optimisation that should only be used on symmetric
and transitive (wired) networks. The default is ``babel split-horizon``
on wired interfaces, and ``no babel split-horizon`` on wireless
interfaces. This flag is reset when the wired/wireless status of an
interface is changed.
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. The default is ``babel split-horizon``
on wired interfaces, and ``no babel split-horizon`` on wireless
interfaces. This flag is reset when the wired/wireless status of an
interface is changed.
.. index:: 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;
on wireless links, the link quality value is reestimated at every
hello interval. The default is 4000 ms.
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.
.. index:: 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
to fairly high values on links with little packet loss. The default
is 20000 ms.
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.
.. index::
single: babel channel (1-254)
@ -119,86 +126,90 @@ Babel configuration
single: babel channel noninterfering
.. clicmd:: babel channel (1-254)
see below
.. clicmd:: babel channel interfering
see below
.. clicmd:: babel channel noninterfering
Set the channel number that diversity routing uses for this interface
(see `babel diversity` above). Noninterfering interfaces are
assumed to only interfere with themselves, interfering interfaces are
assumed to interfere with all other channels except noninterfering
channels, and interfaces with a channel number interfere with
interfering interfaces and interfaces with the same channel number.
The default is ``babel channel interfering`` for wireless
interfaces, and ``babel channel noninterfering`` for wired
interfaces. This is reset when the wired/wireless status of an
interface is changed.
Set the channel number that diversity routing uses for this interface (see
`babel diversity` above). Noninterfering interfaces are assumed to only
interfere with themselves, interfering interfaces are assumed to interfere
with all other channels except noninterfering channels, and interfaces with
a channel number interfere with interfering interfaces and interfaces with
the same channel number. The default is ``babel channel interfering`` for
wireless interfaces, and ``babel channel noninterfering`` for wired
interfaces. This is reset when the wired/wireless status of an interface is
changed.
.. index:: 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
networks, acting directly on the cost using route maps is a better
technique.
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.
.. 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)
.. 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
faster. The default is 42.
This 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.
.. index:: 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
(rtt - rtt-min). The default is 100 ms.
This 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 100 ms.
.. index:: 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)
.. 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,
which effectively disables the use of a RTT-based cost.
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, which
effectively disables the use of a RTT-based cost.
.. index::
single: babel enable-timestamps
single: 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)
.. 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
probably don't want to tweak this value.
Specifies the time in milliseconds after which an 'important' request or
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)
.. 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
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.
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.
.. _Babel_redistribution:
@ -210,7 +221,8 @@ Babel redistribution
single: 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:
@ -222,47 +234,38 @@ These commands dump various parts of *babeld*'s internal state.
.. index:: show babel route
.. clicmd:: show babel route
*missing description*
.. index:: 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
.. clicmd:: show babel route X:X::X:X
*missing description*
.. index:: 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
.. clicmd:: show babel route X:X::X:X/M
*missing description*
.. index:: show babel interface
.. clicmd:: show babel interface
*missing description*
.. index:: show babel interface `IFNAME`
.. index:: show babel interface IFNAME
.. clicmd:: show babel interface IFNAME
*missing description*
.. index:: show babel neighbor
.. clicmd:: show babel neighbor
*missing description*
.. index:: show babel parameters
.. clicmd:: show babel parameters
*missing description*
Babel debugging commands
========================
@ -272,16 +275,17 @@ Babel debugging commands
simple: no debug babel KIND
.. clicmd:: [no] debug babel KIND
Enable or disable debugging messages of a given kind. ``KIND`` can
be one of:
- common
- filter
- timeout
- interface
- route
- all
Enable or disable debugging messages of a given kind. ``KIND`` can
be one of:
Note that if you have compiled with the NO_DEBUG flag, then these commands
aren't available.
- ``common``
- ``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|.
Each of the daemons has its own
config file. For example, zebra's default config file name is *zebra.conf*.
The daemon name plus `.conf` is the default config file name. You
can specify a config file using the :kbd:`-f` or :kbd:`--config-file`
options when starting the daemon.
Each of the daemons has its own config file. The daemon name plus ``.conf`` is
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
:option:`--config-file` options when starting the daemon.
.. _Basic_Config_Commands:
@ -71,8 +69,8 @@ Basic Config Commands
Set enable password.
.. index::
single: no log trap [LEVEL]
single: log trap LEVEL
single: no log trap [LEVEL]
single: log trap LEVEL
.. clicmd:: [no] log trap LEVEL
@ -85,8 +83,8 @@ Basic Config Commands
existing logging destinations.
.. index::
single: no log stdout [LEVEL]
single: log stdout [LEVEL]
single: no log stdout [LEVEL]
single: log stdout [LEVEL]
.. clicmd:: [no] log stdout LEVEL
@ -100,8 +98,8 @@ Basic Config Commands
``errors``.
.. index::
single: no log file [FILENAME [LEVEL]]
single: log file FILENAME [LEVEL]
single: no log file [FILENAME [LEVEL]]
single: log file FILENAME [LEVEL]
.. clicmd:: [no] log file [FILENAME [LEVEL]]
@ -121,8 +119,8 @@ Basic Config Commands
information.
.. index::
single: no log syslog [LEVEL]
single: log syslog [LEVEL]
single: no log syslog [LEVEL]
single: 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.
.. index::
single: no log monitor [LEVEL]
single: log monitor [LEVEL]
single: no log monitor [LEVEL]
single: log monitor [LEVEL]
.. clicmd:: [no] log monitor [LEVEL]
@ -147,8 +145,8 @@ Basic Config Commands
terminal monitors.
.. index::
single: no log facility [FACILITY]
single: log facility [FACILITY]
single: no log facility [FACILITY]
single: log facility [FACILITY]
.. clicmd:: [no] log facility [FACILITY]
@ -157,8 +155,8 @@ Basic Config Commands
the facility to the default ``daemon`` facility.
.. index::
single: no log record-priority
single: log record-priority
single: no log record-priority
single: log record-priority
.. clicmd:: [no] log record-priority
@ -171,8 +169,8 @@ Basic Config Commands
the facility and level in the messages emitted.
.. index::
single: log timestamp precision (0-6)
single: [no] log timestamp precision (0-6)
single: log timestamp precision (0-6)
single: [no] log timestamp precision (0-6)
.. clicmd:: [no] log timestamp precision [(0-6)]
@ -298,59 +296,59 @@ Terminal Mode Commands
.. clicmd:: write terminal
Displays the current configuration to the vty interface.
Displays the current configuration to the vty interface.
.. index:: write file
.. clicmd:: write file
Write current configuration to configuration file.
Write current configuration to configuration file.
.. index:: configure terminal
.. clicmd:: configure terminal
Change to configuration mode. This command is the first step to
configuration.
Change to configuration mode. This command is the first step to
configuration.
.. index:: terminal length (0-512)
.. clicmd:: terminal length (0-512)
Set terminal display length to ``(0-512)``. If length is 0, no
display control is performed.
Set terminal display length to ``(0-512)``. If length is 0, no
display control is performed.
.. index:: who
.. clicmd:: who
Show a list of currently connected vty sessions.
Show a list of currently connected vty sessions.
.. index:: list
.. clicmd:: list
List all available commands.
List all available commands.
.. index:: 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
.. clicmd:: show logging
Shows the current configuration of the logging system. This includes
the status of all logging destinations.
Shows the current configuration of the logging system. This includes
the status of all logging destinations.
.. index:: logmsg LEVEL MESSAGE
.. clicmd:: logmsg LEVEL MESSAGE
Send a message to all logging destinations that are enabled for messages
of the given severity.
Send a message to all logging destinations that are enabled for messages
of the given severity.
.. _Common_Invocation_Options:
@ -360,56 +358,55 @@ Common Invocation Options
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,
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``.
Set the VTY local address to bind to. If set, the VTY socket will only
be bound to this address.
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.
.. option:: -P <port>
.. option:: --vty-port <port>
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
be bound to this address.
Set the user and group to run as.
.. option:: -v
.. option:: --version
.. clicmd:: -P port, --vty_port=port
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.
Print program version.
.. _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:
.. 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
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
`INSTALL_PREFIX_MODULES` directory is searched for a module of
the given name; first with the daemon name prepended (e.g. ``zebra_mod``
for ``mod``), then without the daemon name prepended.
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
be loaded. If it does not contain a slash, the |INSTALL_PREFIX_MODULES|
directory is searched for a module of the given name; first with the daemon
name prepended (e.g. ``zebra_mod`` for ``mod``), then without the daemon
name prepended.
This option is available on all daemons, though some daemons may not have
any modules available to be loaded.
This option is available on all daemons, though some daemons may not have
any modules available to be loaded.
The SNMP Module
---------------
@ -446,15 +444,14 @@ for information on its usage.
The FPM Module
--------------
If FPM is enabled during compile-time and installed as part of the package,
the ``fpm`` module can be loaded for the *zebra* daemon. This
provides the Forwarding Plane Manager ("FPM") API.
If FPM is enabled during compile-time and installed as part of the package, the
``fpm`` module can be loaded for the *zebra* daemon. This provides the
Forwarding Plane Manager ("FPM") API.
The module expects its argument to be either ``netlink`` or
.. clicmd:: protobuf, specifying the encapsulation to use. `netlink` is the
default, and `protobuf` may not be available if the module was built
without protobuf support. Refer to :ref:`zebra_FIB_push_interface` for more
information.
The module expects its argument to be either ``netlink`` or ``protobuf``,
specifying the encapsulation to use. ``netlink`` is the default, and
``protobuf`` may not be available if the module was built without protobuf
support. Refer to :ref:`zebra_FIB_push_interface` for more information.
.. _Virtual_Terminal_Interfaces:
@ -505,7 +502,7 @@ is no VTY password, one cannot connect to the VTY interface at all.
Router#
:kbd:`?` is very useful for looking up commands.
:kbd:`?` and the ``find`` command are very useful for looking up commands.
.. _VTY_Modes:

View File

@ -55,7 +55,6 @@ customize the build to include or exclude specific features and dependencies.
.. option:: --disable-zebra
Do not build zebra daemon.
.. 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)
.. option:: --enable-multipath=`ARG`
.. option:: --enable-multipath <ARG>
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.
@ -129,9 +128,9 @@ customize the build to include or exclude specific features and dependencies.
.. option:: --enable-gcc-rdynamic
Pass the *-rdynamic* option to the linker driver. This is in most
cases neccessary for getting usable backtraces. This option defaults to on
if the compiler is detected as gcc, but giving an explicit enable/disable is
Pass the ``-rdynamic`` option to the linker driver. This is in most cases
neccessary for getting usable backtraces. This option defaults to on if the
compiler is detected as gcc, but giving an explicit enable/disable is
suggested.
.. 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
options to the configuration script.
.. option:: --prefix=`prefix`
.. option:: --prefix <prefix>
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
configuration files will be installed here.
.. option:: --localstatedir=`dir`
.. option:: --localstatedir <dir>
Configure zebra to use `dir` for local state files, such
as pid files and unix sockets.
Configure zebra to use `dir` for local state files, such as pid files and
unix sockets.
.. _Least-Privilege_support:
Least-Privilege support
Least-Privilege Support
-----------------------
.. 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
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`
in normal operation.
Switch to user `user shortly after startup, and run as user `user` in normal
operation.
.. option:: --enable-group=`group`
.. option:: --enable-group <user>
Switch real and effective group to `group` shortly after
startup.
Switch real and effective group to `group` shortly after startup.
.. option:: --enable-vty-group=`group`
.. option:: --enable-vty-group <group>
Create Unix Vty sockets (for use with vtysh) with group owndership set to
`group`. This allows one to create a seperate group which is
restricted to accessing only the Vty sockets, hence allowing one to
delegate this group to individual users, or to run vtysh setgid to
this group.
`group`. This allows one to create a seperate group which is restricted to
accessing only the vty sockets, hence allowing one to delegate this group to
individual users, or to run vtysh setgid to this group.
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
@ -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
or upper.
*inet6-apps*
- inet6-apps
The `inet6-apps` package includes basic IPv6 related libraries such
as `inet_ntop` and `inet_pton`. Some basic IPv6 programs such
as *ping*, *ftp*, and *inetd* are also
included. The `inet-apps` can be found at
`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
utility. It contains *ifconfig*, *route*, *netstat*, and other tools.
`net-tools` may be found at http://www.tazenda.demon.co.uk/phil/net-tools/.

View File

@ -4,7 +4,7 @@
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
different routing protocols.
@ -16,257 +16,268 @@ Invoking zebra
Besides the common invocation options (:ref:`Common_Invocation_Options`), the
*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*
Runs in batch mode. *zebra* parses configuration file and terminates
immediately.
.. option:: -k
.. option:: --keep_kernel
When zebra starts up, don't delete old self inserted routes.
*-k*
*--keep_kernel*
When zebra starts up, don't delete old self inserted routes.
*-r*
*--retain*
When program terminates, retain routes added by zebra.
.. option:: -r
.. option:: --retain
When program terminates, retain routes added by zebra.
.. _Interface_Commands:
Interface 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} {}
.. index:: {Interface Command} {no shutdown} {}
.. clicmd:: shutdown
.. index:: no shutdown
{Interface Command} {no shutdown} {}
Up or down the current interface.
.. clicmd:: no shutdown
.. index:: {Interface Command} {ip address `address/prefix`} {}
Up or down the current interface.
{Interface Command} {ip address `address/prefix`} {}
.. index:: {Interface Command} {ipv6 address `address/prefix`} {}
.. index:: ip address ADDRESS/PREFIX
{Interface Command} {ipv6 address `address/prefix`} {}
.. index:: {Interface Command} {no ip address `address/prefix`} {}
.. clicmd:: ip address ADDRESS/PREFIX
.. index:: ipv6 address ADDRESS/PREFIX
{Interface Command} {no ip address `address/prefix`} {}
.. index:: {Interface Command} {no ipv6 address `address/prefix`} {}
.. clicmd:: ipv6 address ADDRESS/PREFIX
.. index:: no ip address ADDRESS/PREFIX
{Interface Command} {no ipv6 address `address/prefix`} {}
Set the IPv4 or IPv6 address/prefix for the interface.
.. clicmd:: no ip address ADDRESS/PREFIX
.. 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`} {}
.. index:: {Interface Command} {no ip address `local-addr` peer `peer-addr/prefix`} {}
Set the IPv4 or IPv6 address/prefix for the interface.
{Interface Command} {no 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.)
.. index:: ip address LOCAL-ADDR peer PEER-ADDR/PREFIX
`local-addr` has no subnet mask since the local side in PtP
addressing is always a single (/32) address. `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.
.. clicmd:: ip address LOCAL-ADDR peer PEER-ADDR/PREFIX
.. index:: no ip address LOCAL-ADDR peer PEER-ADDR/PREFIX
.. 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} {}
.. index:: {Interface Command} {no ip address `address/prefix` secondary} {}
Configure an IPv4 Pointopoint address on the interface. (The concept of PtP
addressing does not exist for IPv6.)
{Interface Command} {no ip address `address/prefix` secondary} {}
Set the secondary flag for this address. This causes ospfd to not treat the
address as a distinct subnet.
`local-addr` has no subnet mask since the local side in PtP addressing is
always a single (/32) address. `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} {description `description` ...} {}
.. index:: ip address ADDRESS/PREFIX secondary
{Interface Command} {description `description` ...} {}
Set description for the interface.
.. clicmd:: ip address ADDRESS/PREFIX secondary
.. index:: no ip address ADDRESS/PREFIX secondary
.. index:: {Interface Command} {multicast} {}
.. clicmd:: no ip address ADDRESS/PREFIX secondary
{Interface Command} {multicast} {}
.. index:: {Interface Command} {no multicast} {}
Set the secondary flag for this address. This causes ospfd to not treat the
address as a distinct subnet.
{Interface Command} {no multicast} {}
Enable or disables multicast flag for the interface.
.. index:: description DESCRIPTION ...
.. index:: {Interface Command} {bandwidth (1-10000000)} {}
.. clicmd:: description DESCRIPTION ...
{Interface Command} {bandwidth (1-10000000)} {}
.. index:: {Interface Command} {no bandwidth (1-10000000)} {}
Set description for the interface.
{Interface Command} {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:: multicast
.. index:: {Interface Command} {link-detect} {}
.. clicmd:: multicast
.. index:: no multicast
{Interface Command} {link-detect} {}
.. index:: {Interface Command} {no link-detect} {}
.. clicmd:: no multicast
{Interface Command} {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.
Enable or disables multicast flag for the interface.
.. index:: bandwidth (1-10000000)
.. 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
------------------------
.. index:: {Interface Command} {link-params} {}
.. index:: link-params
.. clicmd:: link-params
{Interface Command} {link-params} {}
.. index:: {Interface Command} {no link-param} {}
.. index:: 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 activate the link parameters,
and consequently Traffic Engineering on this interface. MPLS-TE must be enable at the OSPF (:ref:`OSPF_Traffic_Engineering`)
or ISIS (:ref:`ISIS_Traffic_Engineering`) router level in complement to this.
Disable link parameters for this interface.
Enter into the link parameters sub node. At least 'enable' must be set to
activate the link parameters, and consequently Traffic Engineering on this
interface. MPLS-TE must be enable at the OSPF
(:ref:`OSPF_Traffic_Engineering`) or ISIS (:ref:`ISIS_Traffic_Engineering`)
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 in conformity to RFC3630 (OSPF)
or RFC5305 (ISIS).
There are respectively the TE Metric (different from the OSPF or ISIS metric), Maximum Bandwidth (interface speed
by default), Maximum Reservable Bandwidth, Unreserved Bandwidth for each 0-7 priority and Admin Group (ISIS) or
Resource Class/Color (OSPF).
These commands specifies the Traffic Engineering parameters of the interface
in conformity to RFC3630 (OSPF) or RFC5305 (ISIS). There are respectively
the TE Metric (different from the OSPF or ISIS metric), Maximum Bandwidth
(interface speed by default), Maximum Reservable Bandwidth, Unreserved
Bandwidth for each 0-7 priority and Admin Group (ISIS) or Resource
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 interface in conformity to
draft-ietf-ospf-te-metrics-extension-05.txt and draft-ietf-isis-te-metrics-extension-03.txt. There are
respectively the delay, jitter, loss, available bandwidth, reservable bandwidth and utilized bandwidth.
These command specifies additionnal Traffic Engineering parameters of the
interface in conformity to draft-ietf-ospf-te-metrics-extension-05.txt and
draft-ietf-isis-te-metrics-extension-03.txt. There are respectively the
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.
Delays and delay variation are express in micro-second (µs). Loss is specified in `percentage` ranging
from 0 to 50.331642% by step of 0.000003.
Note that BANDWIDTH is specified in IEEE floating point format and express
in Bytes/second. Delays and delay variation are express in micro-second
(µ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 for InterASv2 link in OSPF (RFC5392).
Note that this option is not yet supported for ISIS (RFC5316).
Specifies the remote ASBR IP address and Autonomous System (AS) number
for InterASv2 link in OSPF (RFC5392). Note that this option is not yet
supported for ISIS (RFC5316).
.. _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.
.. 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 for the prefix. When `gateway` is
A.B.C.D format. It is taken as a IPv4 address gateway. Otherwise it
is treated as an interface name. If the interface name is `null0` then
zebra installs a blackhole route.
NETWORK is destination prefix with format of A.B.C.D/M. GATEWAY is gateway
for the prefix. When GATEWAY is A.B.C.D format. It is taken as a IPv4
address gateway. Otherwise it 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 null0
::
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 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.
Second one defines the same prefix but with gateway to interface ppp0. The
third install a blackhole route.
These statements are equivalent to those in the previous example.
.. 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`} {}
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.
Installs the route with the specified distance.
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.3
ip route 10.0.0.1/32 eth0
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 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
S> 10.0.0.1/32 [1/0] via 10.0.0.2 inactive
via 10.0.0.3 inactive
* is directly connected, eth0
zebra> show ip route
S> 10.0.0.1/32 [1/0] via 10.0.0.2 inactive
via 10.0.0.3 inactive
* 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.3
ip route 10.0.0.0/8 null0 255
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 null0 255
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
Routing entry for 10.0.0.0/8
Known via "static", distance 1, metric 0
10.0.0.2 inactive
10.0.0.3 inactive
zebra> show ip route 10.0.0.0/8
Routing entry for 10.0.0.0/8
Known via "static", distance 1, metric 0
10.0.0.2 inactive
10.0.0.3 inactive
Routing entry for 10.0.0.0/8
Known via "static", distance 255, metric 0
directly connected, Null0
Routing entry for 10.0.0.0/8
Known via "static", distance 255, metric 0
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:: Command {ipv6 route `network` `gateway` `distance`} {}
.. index:: 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:: Command {ipv6 route `network` from `srcprefix` `gateway` `distance`} {}
.. index:: 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
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 longest-prefix match is "more important" than source LPM, e.g.
*"2001:db8:1::/64 from 2001:db8::/48"* will win over
*"2001:db8::/48 from 2001:db8:1::/64"* if both match.
Install a static source-specific route. These routes are currently supported
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 longest-prefix match is "more important" than source LPM, e.g.
*"2001:db8:1::/64 from 2001:db8::/48"* will win over
*"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
for kernels supporting multiple routing tables (like GNU/Linux 2.2.x
and later). After setting `tableno` with this command,
static routes defined after this are added to the specified table.
Select the primary kernel routing table to be used. This only works
for kernels supporting multiple routing tables (like GNU/Linux 2.2.x
and later). After setting TABLENO with this command,
static routes defined after this are added to the specified table.
.. _Multicast_RIB_Commands:
@ -344,135 +355,137 @@ Multicast RIB Commands
======================
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
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.
WARNING: RPF lookup results are non-responsive in this version of FRR,
i.e. multicast routing does not actively react to changes in underlying
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:: Command {no ip multicast rpf-lookup-mode [`mode`]} {}
.. index:: 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*
Performs the lookup on the Unicast RIB. The Multicast RIB is never used.
mrib-then-urib
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*
Performs the lookup on the Multicast RIB. The Unicast RIB is never used.
lower-distance
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*
Tries to perform the lookup on the Multicast RIB. If any route is found,
that route is used. Otherwise, the Unicast RIB is tried.
longer-prefix
Performs a lookup on the Multicast RIB and Unicast RIB each. The result
with the longer prefix length is used; if they're equal, the
Multicast RIB takes precedence.
*lower-distance*
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.
The `mrib-then-urib` setting is the default behavior if nothing is
configured. If this is the desired behavior, it should be explicitly
configured to make the configuration immune against possible changes in
what the default behavior is.
*longer-prefix*
Performs a lookup on the Multicast RIB and Unicast RIB each. The result
with the longer prefix length is used; if they're equal, the
Multicast RIB takes precedence.
.. warning::
Unreachable routes do not receive special treatment and do not cause
fallback to a second lookup.
The `mrib-then-urib` setting is the default behavior if nothing is
configured. If this is the desired behavior, it should be explicitly
configured to make the configuration immune against possible changes in
what the default behavior is.
.. index:: show ip rpf ADDR
.. clicmd:: show ip rpf ADDR
WARNING: Unreachable routes do not receive special treatment and do not
cause fallback to a second lookup.
Performs a Multicast RPF lookup, as configured with ``ip multicast
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
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
Unicast RIB entry for 192.0.2.0/24 with a gateway of 198.51.100.1.
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.
.. 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
configured RPF lookup mode, the Multicast RIB may be printed yet not
used at all.
Prints the entire Multicast RIB. Note that this is independent of the
configured RPF lookup mode, the Multicast RIB may be printed yet not
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:: Command {no ip mroute `prefix` `nexthop` [`distance`]} {}
.. index:: 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 *ip route* command, except that it inserts the route in the
Multicast RIB instead of the Unicast RIB.
Adds a static route entry to the Multicast RIB. This performs exactly as the
``ip route`` command, except that it inserts the route in the Multicast RIB
instead of the Unicast RIB.
.. _zebra_Route_Filtering:
zebra Route Filtering
=====================
Zebra supports *prefix-list* and *route-map* to match
routes received from other frr components. The
*permit*/*deny* facilities provided by these commands
can be used to filter which routes zebra will install in the kernel.
Zebra supports :dfn:`prefix-list`s and :ref:`Route_Map`s to match routes
received from other frr components. The permit/deny facilities provided by
these commands can be used to filter which routes zebra will install in the
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 be **any** or one of
**system**,
**kernel**,
**connected**,
**static**,
**rip**,
**ripng**,
**ospf**,
**ospf6**,
**isis**,
**bgp**,
**hsls**.
Apply a route-map filter to routes for the specified protocol. PROTOCOL can
be **any** or one of
.. index:: {Route Map} {set src `address`}
- system,
- kernel,
- connected,
- static,
- rip,
- ripng,
- ospf,
- ospf6,
- isis,
- bgp,
- hsls.
{Route Map} {set src `address`}
Within a route-map, set the preferred source address for matching routes
when installing in the kernel.
.. index:: set src ADDRESS
.. clicmd:: set src ADDRESS
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
that sets the preferred source address, and applies the route-map to all
*rip* routes.
ip prefix-list ANY permit 0.0.0.0/0 le 32
route-map RM1 permit 10
match ip address prefix-list ANY
set src 10.0.0.1
ip prefix-list ANY permit 0.0.0.0/0 le 32
route-map RM1 permit 10
match ip address prefix-list ANY
set src 10.0.0.1
ip protocol rip route-map RM1
ip protocol rip route-map RM1
.. _zebra_FIB_push_interface:
@ -482,7 +495,7 @@ zebra FIB push interface
Zebra supports a 'FIB push' interface that allows an external
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`.
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.
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
sending messages containing routes over the socket to the FPM. Zebra
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
advantages over netlink:
*
Code for serialization/deserialization is generated
automatically. This reduces the likelihood of bugs, allows third-party
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
- Code for serialization/deserialization is generated automatically. This
reduces the likelihood of bugs, allows third-party 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
independently.
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
============================
.. 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
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
S 0.0.0.0/0 203.181.89.1
C* 127.0.0.0/8 lo
K* 0.0.0.0/0 203.181.89.241
S 0.0.0.0/0 203.181.89.1
C* 127.0.0.0/8 lo
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:: Command {show interface} {}
.. index:: show interface
.. clicmd:: show interface
Command {show interface} {}
.. index:: Command {show ip prefix-list [`name`]} {}
.. index:: show ip prefix-list [NAME]
.. clicmd:: show ip prefix-list [NAME]
Command {show ip prefix-list [`name`]} {}
.. index:: Command {show route-map [`name`]} {}
.. index:: show route-map [NAME]
.. clicmd:: show route-map [NAME]
Command {show route-map [`name`]} {}
.. index:: Command {show ip protocol} {}
.. index:: show ip protocol
.. clicmd:: show ip protocol
Command {show ip protocol} {}
.. index:: Command {show ipforward} {}
.. index:: show ipforward
.. clicmd:: show ipforward
Command {show ipforward} {}
Display whether the host's IP forwarding function is enabled or not.
Almost any UNIX kernel can be configured with IP forwarding disabled.
If so, the box can't work as a router.
Display whether the host's IP forwarding function is enabled or not.
Almost any UNIX kernel can be configured with IP forwarding disabled.
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
of routes, neighbor updates, and LSP's into the kernel.
Display various statistics related to the installation and deletion
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
optional Forwarding Plane Manager (FPM) component.
Display statistics related to the zebra code that interacts with the
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
optional Forwarding Plane Manager (FPM) component.
Reset statistics related to the zebra code that interacts with the
optional Forwarding Plane Manager (FPM) component.