From d1a242fdbf983c4902fe41bcd827f4ff9bd4deb7 Mon Sep 17 00:00:00 2001 From: Quentin Young Date: Mon, 29 Jan 2018 12:16:20 -0500 Subject: [PATCH] doc: cleanup multiple Signed-off-by: Quentin Young --- doc/user/babeld.rst | 212 ++++++------ doc/user/basic.rst | 171 +++++----- doc/user/installation.rst | 47 ++- doc/user/zebra.rst | 657 +++++++++++++++++++------------------- 4 files changed, 549 insertions(+), 538 deletions(-) diff --git a/doc/user/babeld.rst b/doc/user/babeld.rst index 3e5c1b16b3..62ba8a26f2 100644 --- a/doc/user/babeld.rst +++ b/doc/user/babeld.rst @@ -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 .. clicmd:: babel - 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 KIND .. clicmd:: [no] redistribute 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. diff --git a/doc/user/basic.rst b/doc/user/basic.rst index 97a29129c9..7c6f97aed6 100644 --- a/doc/user/basic.rst +++ b/doc/user/basic.rst @@ -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 - - Runs in daemon mode. - - -.. clicmd:: -f file, --config_file=FILE - - Set configuration file name. - - -.. clicmd:: -h, --help - - Display this help and exit. - +.. option:: -d +.. option:: --daemon -.. clicmd:: -i file, --pid_file=file + Run in daemon mode. - 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``. +.. option:: -f +.. option:: --config-file - 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. + Set configuration file name. +.. option:: -h, --help -.. clicmd:: -A address, --vty_addr=address + Display this help and exit. - Set the VTY local address to bind to. If set, the VTY socket will only - be bound to this address. +.. option:: -i +.. option:: --pid-file + 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``. -.. clicmd:: -P port, --vty_port=port + 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. - Set the VTY TCP port number. If set to 0 then the TCP VTY sockets will not - be opened. +.. option:: -A
+.. option:: --vty-addr
+ Set the VTY local address to bind to. If set, the VTY socket will only + be bound to this address. -.. clicmd:: -u user, --vty_addr=user +.. option:: -P +.. option:: --vty-port - Set the user and group to run as. + Set the VTY TCP port number. If set to 0 then the TCP VTY sockets will not + be opened. +.. option:: -u +.. option:: --vty_addr -.. clicmd:: -v, --version + Set the user and group to run as. - Print program version. +.. option:: -v +.. option:: --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 +.. option:: --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 - 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: diff --git a/doc/user/installation.rst b/doc/user/installation.rst index 3bf0eac332..43f7ddb4a2 100644 --- a/doc/user/installation.rst +++ b/doc/user/installation.rst @@ -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 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 Install architecture-independent files in `prefix` [/usr/local]. -.. option:: --sysconfdir=`dir` +.. option:: --sysconfdir Look for configuration files in `dir` [`prefix`/etc]. Note that sample configuration files will be installed here. -.. option:: --localstatedir=`dir` +.. option:: --localstatedir - 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 - 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 - 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 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/ `_. -*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/. diff --git a/doc/user/zebra.rst b/doc/user/zebra.rst index ab60857bca..b04b8c7365 100644 --- a/doc/user/zebra.rst +++ b/doc/user/zebra.rst @@ -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 + +.. clicmd:: interface IFNAME + +.. index:: shutdown -Command {interface `ifname`} {} +.. clicmd:: shutdown +.. index:: no shutdown -.. index:: {Interface Command} {shutdown} {} +.. clicmd:: no shutdown -{Interface Command} {shutdown} {} -.. index:: {Interface Command} {no shutdown} {} + Up or down the current interface. -{Interface Command} {no shutdown} {} - Up or down the current interface. +.. index:: ip address ADDRESS/PREFIX -.. index:: {Interface Command} {ip address `address/prefix`} {} +.. clicmd:: ip address ADDRESS/PREFIX +.. index:: ipv6 address ADDRESS/PREFIX -{Interface Command} {ip address `address/prefix`} {} -.. index:: {Interface Command} {ipv6 address `address/prefix`} {} +.. clicmd:: ipv6 address ADDRESS/PREFIX +.. index:: no ip address ADDRESS/PREFIX -{Interface Command} {ipv6 address `address/prefix`} {} -.. index:: {Interface Command} {no ip address `address/prefix`} {} +.. clicmd:: no ip address ADDRESS/PREFIX +.. index:: no ipv6 address ADDRESS/PREFIX -{Interface Command} {no ip address `address/prefix`} {} -.. index:: {Interface Command} {no ipv6 address `address/prefix`} {} +.. clicmd:: no ipv6 address ADDRESS/PREFIX -{Interface Command} {no ipv6 address `address/prefix`} {} - Set the IPv4 or IPv6 address/prefix for the interface. + Set the IPv4 or IPv6 address/prefix for the interface. -.. index:: {Interface Command} {ip address `local-addr` peer `peer-addr/prefix`} {} +.. index:: ip address LOCAL-ADDR peer PEER-ADDR/PREFIX -{Interface Command} {ip address `local-addr` peer `peer-addr/prefix`} {} -.. index:: {Interface Command} {no ip address `local-addr` peer `peer-addr/prefix`} {} +.. clicmd:: ip address LOCAL-ADDR peer PEER-ADDR/PREFIX +.. index:: no ip address LOCAL-ADDR peer PEER-ADDR/PREFIX -{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.) +.. clicmd:: no 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. + Configure an IPv4 Pointopoint address on the interface. (The concept of PtP + addressing does not exist for IPv6.) -.. index:: {Interface Command} {ip address `address/prefix` secondary} {} + `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. -{Interface Command} {ip address `address/prefix` secondary} {} -.. index:: {Interface Command} {no ip address `address/prefix` secondary} {} +.. index:: ip address ADDRESS/PREFIX secondary -{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. +.. clicmd:: ip address ADDRESS/PREFIX secondary +.. index:: no ip address ADDRESS/PREFIX secondary -.. index:: {Interface Command} {description `description` ...} {} +.. clicmd:: no ip address ADDRESS/PREFIX secondary -{Interface Command} {description `description` ...} {} - Set description for the interface. + Set the secondary flag for this address. This causes ospfd to not treat the + address as a distinct subnet. -.. index:: {Interface Command} {multicast} {} +.. index:: description DESCRIPTION ... -{Interface Command} {multicast} {} -.. index:: {Interface Command} {no multicast} {} +.. clicmd:: description DESCRIPTION ... -{Interface Command} {no multicast} {} - Enable or disables multicast flag for the interface. + Set description for the interface. -.. index:: {Interface Command} {bandwidth (1-10000000)} {} +.. index:: multicast -{Interface Command} {bandwidth (1-10000000)} {} -.. index:: {Interface Command} {no bandwidth (1-10000000)} {} +.. clicmd:: multicast +.. index:: no multicast -{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. +.. clicmd:: no multicast -.. index:: {Interface Command} {link-detect} {} + Enable or disables multicast flag for the interface. -{Interface Command} {link-detect} {} -.. index:: {Interface Command} {no link-detect} {} +.. index:: bandwidth (1-10000000) -{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. +.. 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 as (0-65535)} {} +.. index:: link-param neighbor as (0-65535) +.. clicmd:: link-param neighbor as (0-65535) -link-param {neighbor 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`} {} - -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. +.. index:: ip route NETWORK GATEWAY +.. clicmd:: 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. - 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 + 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 - 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. + 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:: Command {ip route `network` `netmask` `gateway`} {} +.. index:: ip route NETWORK NETMASK GATEWAY +.. clicmd:: ip route NETWORK NETMASK GATEWAY -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 + 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 + 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. + These statements are equivalent to those in the previous example. -.. index:: Command {ip route `network` `gateway` `distance`} {} +.. index:: ip route NETWORK GATEWAY DISTANCE +.. clicmd:: 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. - -.. index:: Command {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**. - -.. index:: {Route Map} {set src `address`} - -{Route Map} {set src `address`} - Within a route-map, set the preferred source address for matching routes - when installing 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:: ip protocol PROTOCOL route-map ROUTEMAP +.. clicmd:: ip protocol PROTOCOL route-map ROUTEMAP - 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. + 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. + +.. 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. + +:: - 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. -- 2.39.5