doc: manually finish conversion

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

View File

@ -1,11 +1,12 @@
.. _packet-binary-dump-format:
Packet Binary Dump Format
=========================
Packet Binary Dump Format
-------------------------
FRR can dump routing protocol packet into file with a binary format
(@pxref{Dump BGP packets and table}).
FRR can dump routing protocol packet into file with a binary format.
It seems to be better that we share the MRT's header format for
backward compatibility with MRT's dump logs. We should also define the

File diff suppressed because it is too large Load Diff

View File

@ -18,16 +18,14 @@ known topology.
Starting and Stopping eigrpd
============================
The default configuration file name of *eigrpd*'s is
:file:`eigrpd.conf`. When invocation *eigrpd* searches directory
|INSTALL_PREFIX_ETC|. If :file:`eigrpd.conf` is not there next
search current directory. If an integrated config is specified
configuration is written into frr.conf
The default configuration file name of *eigrpd*'s is :file:`eigrpd.conf`. When
invocation *eigrpd* searches directory |INSTALL_PREFIX_ETC|. If
:file:`eigrpd.conf` is not there next search current directory. If an
integrated config is specified configuration is written into :file:`frr.conf`.
The EIGRP protocol requires interface information
maintained by *zebra* daemon. So running *zebra*
is mandatory to run *eigrpd*. Thus minimum sequence for running
EIGRP is like below:
The EIGRP protocol requires interface information maintained by *zebra* daemon.
So running *zebra* is mandatory to run *eigrpd*. Thus minimum sequence for
running EIGRP is:
::
@ -37,8 +35,10 @@ EIGRP is like below:
Please note that *zebra* must be invoked before *eigrpd*.
To stop *eigrpd*. Please use @command{kill `cat
/var/run/eigrpd.pid`}. Certain signals have special meanings to *eigrpd*.
To stop *eigrpd*, please use ::
kill `cat /var/run/eigrpd.pid`
Certain signals have special meanings to *eigrpd*.
+------------------+-----------------------------------------------------------+
| Signal | Meaning |
@ -65,23 +65,23 @@ EIGRP Configuration
===================
.. index:: router eigrp (1-65535)
.. clicmd:: router eigrp (1-65535)
The `router eigrp` command is necessary to enable EIGRP. To disable EIGRP,
use the `no router eigrp (1-65535)` command. EIGRP must be enabled before
carrying out any of the EIGRP commands.
.. index:: no router eigrp (1-65535)
.. clicmd:: no router eigrp (1-65535)
Disable EIGRP.
.. index:: network NETWORK
.. clicmd:: network NETWORK
.. index:: no network NETWORK
.. index:: no network NETWORK
.. clicmd:: no network NETWORK
Set the EIGRP enable interface by `network`. The interfaces which
have addresses matching with `network` are enabled.
@ -102,19 +102,17 @@ EIGRP Configuration
!
Passive interface
.. index:: passive-interface (IFNAME|default)
.. clicmd:: passive-interface (IFNAME|default)
.. index:: no passive-interface IFNAME
.. index:: no passive-interface IFNAME
.. clicmd:: no passive-interface IFNAME
This command sets the specified interface to passive mode. On passive mode
interface, all receiving packets are ignored and eigrpd does
not send either multicast or unicast EIGRP packets except to EIGRP neighbors
specified with `neighbor` command. The interface may be specified
as `default` to make eigrpd default to passive on all interfaces.
interface, all receiving packets are ignored and eigrpd does not send either
multicast or unicast EIGRP packets except to EIGRP neighbors specified with
`neighbor` command. The interface may be specified as `default` to make
eigrpd default to passive on all interfaces.
The default is to be passive on all interfaces.
@ -124,70 +122,66 @@ How to Announce EIGRP route
===========================
.. index:: redistribute kernel
.. clicmd:: redistribute kernel
.. index:: redistribute kernel metric (1-4294967295) (0-4294967295) (0-255) (1-255) (1-65535)
.. clicmd:: redistribute kernel metric (1-4294967295) (0-4294967295) (0-255) (1-255) (1-65535)
.. index:: no redistribute kernel
.. index:: no redistribute kernel
.. clicmd:: no redistribute kernel
`redistribute kernel` redistributes routing information from
kernel route entries into the EIGRP tables. `no redistribute kernel`
disables the routes.
`redistribute kernel` redistributes routing information from kernel route
entries into the EIGRP tables. `no redistribute kernel` disables the routes.
.. index:: redistribute static
.. clicmd:: redistribute static
.. index:: redistribute static metric (1-4294967295) (0-4294967295) (0-255) (1-255) (1-65535)
.. clicmd:: redistribute static metric (1-4294967295) (0-4294967295) (0-255) (1-255) (1-65535)
.. index:: no redistribute static
.. index:: no redistribute static
.. clicmd:: no redistribute static
`redistribute static` redistributes routing information from
static route entries into the EIGRP tables. `no redistribute static`
disables the routes.
`redistribute static` redistributes routing information from static route
entries into the EIGRP tables. `no redistribute static` disables the routes.
.. index:: redistribute connected
.. clicmd:: redistribute connected
.. index:: redistribute connected metric (1-4294967295) (0-4294967295) (0-255) (1-255) (1-65535)
.. clicmd:: redistribute connected metric (1-4294967295) (0-4294967295) (0-255) (1-255) (1-65535)
.. index:: no redistribute connected
.. index:: no redistribute connected
.. clicmd:: no redistribute connected
Redistribute connected routes into the EIGRP tables. `no redistribute
connected` disables the connected routes in the EIGRP tables. This command
redistribute connected of the interface which EIGRP disabled. The connected
route on EIGRP enabled interface is announced by default.
.. index:: redistribute ospf
.. clicmd:: redistribute ospf
.. index:: redistribute ospf metric (1-4294967295) (0-4294967295) (0-255) (1-255) (1-65535)
.. clicmd:: redistribute ospf metric (1-4294967295) (0-4294967295) (0-255) (1-255) (1-65535)
.. index:: no redistribute ospf
.. index:: no redistribute ospf
.. clicmd:: no redistribute ospf
`redistribute ospf` redistributes routing information from ospf route
entries into the EIGRP tables. `no redistribute ospf` disables the
routes.
entries into the EIGRP tables. `no redistribute ospf` disables the routes.
.. index:: redistribute bgp
.. clicmd:: redistribute bgp
.. index:: redistribute bgp metric (1-4294967295) (0-4294967295) (0-255) (1-255) (1-65535)
.. clicmd:: redistribute bgp metric (1-4294967295) (0-4294967295) (0-255) (1-255) (1-65535)
.. index:: no redistribute bgp
.. index:: no redistribute bgp
.. clicmd:: no redistribute bgp
`redistribute bgp` redistributes routing information from
bgp route entries into the EIGRP tables. `no redistribute bgp`
disables the routes.
`redistribute bgp` redistributes routing information from bgp route entries
into the EIGRP tables. `no redistribute bgp` disables the routes.
.. _Show_EIGRP_Information:
@ -197,15 +191,15 @@ Show EIGRP Information
To display EIGRP routes.
.. index:: show ip eigrp topology
.. clicmd:: show ip eigrp topology
Show EIGRP routes.
The command displays all EIGRP routes.
.. index:: show ip eigrp topology
.. clicmd:: show ip eigrp topology
The command displays current EIGRP status
::
@ -228,24 +222,25 @@ EIGRP Debug Commands
Debug for EIGRP protocol.
.. index:: debug eigrp packets
.. clicmd:: debug eigrp packets
Debug eigrp packets
`debug eigrp` will show EIGRP packets that are sent and recevied.
``debug eigrp`` will show EIGRP packets that are sent and recevied.
.. index:: debug eigrp transmit
.. clicmd:: debug eigrp transmit
Debug eigrp transmit events
`debug eigrp transmit` will display detailed information about the EIGRP transmit events.
``debug eigrp transmit`` will display detailed information about the EIGRP
transmit events.
.. index:: show debugging eigrp
.. clicmd:: show debugging eigrp
Display *eigrpd*'s debugging option.
`show debugging eigrp` will show all information currently set for eigrpd
``show debugging eigrp`` will show all information currently set for eigrpd
debug.

View File

@ -6,17 +6,14 @@ FRR provides many very flexible filtering features. Filtering is used
for both input and output of the routing information. Once filtering is
defined, it can be applied in any direction.
@comment node-name, next, previous, up
IP Access List
==============
.. index:: {Command} {access-list `name` permit `ipv4-network`} {}
.. index:: access-list NAME permit IPV4-NETWORK
.. clicmd:: access-list NAME permit IPV4-NETWORK
{Command} {access-list `name` permit `ipv4-network`} {}
.. index:: {Command} {access-list `name` deny `ipv4-network`} {}
{Command} {access-list `name` deny `ipv4-network`} {}
.. index:: access-list NAME deny IPV4-NETWORK
.. clicmd:: access-list NAME deny IPV4-NETWORK
Basic filtering is done by `access-list` as shown in the
following example.
@ -27,8 +24,6 @@ IP Access List
access-list filter permit 10.0.0.0/8
@comment node-name, next, previous, up
IP Prefix List
==============
@ -41,17 +36,15 @@ filters to arbitrary points of prefix-list using sequential number specification
If no ip prefix-list is specified, it acts as permit. If *ip prefix-list*
is defined, and no match is found, default deny is applied.
.. index:: {Command} {ip prefix-list `name` (permit|deny) `prefix` [le `len`] [ge `len`]} {}
.. index:: ip prefix-list NAME (permit|deny) PREFIX [le LEN] [ge LEN]
.. clicmd:: ip prefix-list NAME (permit|deny) PREFIX [le LEN] [ge LEN]
{Command} {ip prefix-list `name` (permit|deny) `prefix` [le `len`] [ge `len`]} {}
.. index:: {Command} {ip prefix-list `name` seq `number` (permit|deny) `prefix` [le `len`] [ge `len`]} {}
.. index:: ip prefix-list NAME seq NUMBER (permit|deny) PREFIX [le LEN] [ge LEN]
.. clicmd:: ip prefix-list NAME seq NUMBER (permit|deny) PREFIX [le LEN] [ge LEN]
{Command} {ip prefix-list `name` seq `number` (permit|deny) `prefix` [le `len`] [ge `len`]} {}
You can create *ip prefix-list* using above commands.
*@asis{seq}*
seq
seq `number` can be set either automatically or manually. In the
case that sequential numbers are set manually, the user may pick any
number less than 4294967295. In the case that sequential number are set
@ -64,15 +57,13 @@ is defined, and no match is found, default deny is applied.
lists 2 and 7 already exist and a new list with no specified number is
created, the new list will be numbered 10.
le
Specifies prefix length. The prefix list will be applied if the prefix
length is less than or equal to the le prefix length.
*@asis{le}*
*le* command specifies prefix length. The prefix list will be
applied if the prefix length is less than or equal to the le prefix length.
*@asis{ge}*
*ge* command specifies prefix length. The prefix list will be
applied if the prefix length is greater than or equal to the ge prefix length.
ge
Specifies prefix length. The prefix list will be applied if the prefix
length is greater than or equal to the ge prefix length.
Less than or equal to prefix numbers and greater than or equal to
@ -93,24 +84,23 @@ is defined, and no match is found, default deny is applied.
In the case of no le or ge command, the prefix length must match exactly the
length specified in the prefix list.
.. index:: {Command} {no ip prefix-list `name`} {}
{Command} {no ip prefix-list `name`} {}
.. index:: no ip prefix-list NAME
.. clicmd:: no ip prefix-list NAME
.. _ip_prefix-list_description:
ip prefix-list description
--------------------------
.. index:: {Command} {ip prefix-list `name` description `desc`} {}
.. index:: ip prefix-list NAME description DESC
.. clicmd:: ip prefix-list NAME description DESC
{Command} {ip prefix-list `name` description `desc`} {}
Descriptions may be added to prefix lists. This command adds a
description to the prefix list.
.. index:: {Command} {no ip prefix-list `name` description [`desc`]} {}
.. index:: no ip prefix-list NAME description [DESC]
.. clicmd:: no ip prefix-list NAME description [DESC]
{Command} {no ip prefix-list `name` description [`desc`]} {}
Deletes the description from a prefix list. It is possible to use the
command without the full description.
@ -119,15 +109,15 @@ ip prefix-list description
ip prefix-list sequential number control
----------------------------------------
.. index:: {Command} {ip prefix-list sequence-number} {}
.. index:: ip prefix-list sequence-number
.. clicmd:: ip prefix-list sequence-number
{Command} {ip prefix-list sequence-number} {}
With this command, the IP prefix list sequential number is displayed.
This is the default behavior.
.. index:: {Command} {no ip prefix-list sequence-number} {}
.. index:: no ip prefix-list sequence-number
.. clicmd:: no ip prefix-list sequence-number
{Command} {no ip prefix-list sequence-number} {}
With this command, the IP prefix list sequential number is not
displayed.
@ -136,62 +126,53 @@ ip prefix-list sequential number control
Showing ip prefix-list
----------------------
.. index:: {Command} {show ip prefix-list} {}
.. index:: show ip prefix-list
.. clicmd:: show ip prefix-list
{Command} {show ip prefix-list} {}
Display all IP prefix lists.
.. 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`} {}
Show IP prefix list can be used with a prefix list name.
.. index:: {Command} {show ip prefix-list `name` seq `num`} {}
.. index:: show ip prefix-list NAME seq NUM
.. clicmd:: show ip prefix-list NAME seq NUM
{Command} {show ip prefix-list `name` seq `num`} {}
Show IP prefix list can be used with a prefix list name and sequential
number.
.. index:: {Command} {show ip prefix-list `name` `a.b.c.d/m`} {}
.. index:: show ip prefix-list NAME A.B.C.D/M
.. clicmd:: show ip prefix-list NAME A.B.C.D/M
{Command} {show ip prefix-list `name` `a.b.c.d/m`} {}
If the command longer is used, all prefix lists with prefix lengths equal to
or longer than the specified length will be displayed.
If the command first match is used, the first prefix length match will be
displayed.
or longer than the specified length will be displayed. If the command first
match is used, the first prefix length match will be displayed.
.. index:: {Command} {show ip prefix-list `name` `a.b.c.d/m` longer} {}
{Command} {show ip prefix-list `name` `a.b.c.d/m` longer} {}
.. index:: {Command} {show ip prefix-list `name` `a.b.c.d/m` first-match} {}
{Command} {show ip prefix-list `name` `a.b.c.d/m` first-match} {}
.. index:: {Command} {show ip prefix-list summary} {}
{Command} {show ip prefix-list summary} {}
.. index:: {Command} {show ip prefix-list summary `name`} {}
{Command} {show ip prefix-list summary `name`} {}
.. index:: {Command} {show ip prefix-list detail} {}
{Command} {show ip prefix-list detail} {}
.. index:: {Command} {show ip prefix-list detail `name`} {}
{Command} {show ip prefix-list detail `name`} {}
.. index:: show ip prefix-list NAME A.B.C.D/M longer
.. clicmd:: show ip prefix-list NAME A.B.C.D/M longer
.. index:: show ip prefix-list NAME A.B.C.D/M first-match
.. clicmd:: show ip prefix-list NAME A.B.C.D/M first-match
.. index:: show ip prefix-list summary
.. clicmd:: show ip prefix-list summary
.. index:: show ip prefix-list summary NAME
.. clicmd:: show ip prefix-list summary NAME
.. index:: show ip prefix-list detail
.. clicmd:: show ip prefix-list detail
.. index:: show ip prefix-list detail NAME
.. clicmd:: show ip prefix-list detail NAME
Clear counter of ip prefix-list
-------------------------------
.. index:: {Command} {clear ip prefix-list} {}
.. index:: clear ip prefix-list
.. clicmd:: clear ip prefix-list
{Command} {clear ip prefix-list} {}
Clears the counters of all IP prefix lists. Clear IP Prefix List can be
used with a specified name and prefix.
Clears the counters of all IP prefix lists. Clear IP Prefix List can be used
with a specified name and prefix.
.. index:: {Command} {clear ip prefix-list `name`} {}
{Command} {clear ip prefix-list `name`} {}
.. index:: {Command} {clear ip prefix-list `name` `a.b.c.d/m`} {}
{Command} {clear ip prefix-list `name` `a.b.c.d/m`} {}
.. index:: clear ip prefix-list NAME
.. clicmd:: clear ip prefix-list NAME
.. index:: clear ip prefix-list NAME A.B.C.D/M
.. clicmd:: clear ip prefix-list NAME A.B.C.D/M

View File

@ -156,6 +156,9 @@ customize the build to include or exclude specific features and dependencies.
Build without SNMP support.
.. option:: --disable-vtysh
Build without VTYSH.
You may specify any combination of the above options to the configure
script. By default, the executables are placed in :file:`/usr/local/sbin`

View File

@ -4,11 +4,12 @@
IPv6 Support
************
FRR fully supports IPv6 routing. As described so far, Frr supports
RIPng, OSPFv3, and BGP-4+. You can give IPv6 addresses to an interface
and configure static IPv6 routing information. FRR IPv6 also provides
automatic address configuration via a feature called ``address auto configuration``. To do it, the router must send router advertisement
messages to the all nodes that exist on the network.
FRR fully supports IPv6 routing. As described so far, Frr supports RIPng,
OSPFv3, and BGP-4+. You can give IPv6 addresses to an interface and configure
static IPv6 routing information. FRR IPv6 also provides automatic address
configuration via a feature called ``address auto configuration``. To do it,
the router must send router advertisement messages to the all nodes that exist
on the network.
Previous versions of FRR could be built without IPv6 support. This is
no longer possible.
@ -17,18 +18,18 @@ Router Advertisement
====================
.. index:: no ipv6 nd suppress-ra
.. clicmd:: no ipv6 nd suppress-ra
Send router advertisment messages.
.. index:: ipv6 nd suppress-ra
.. clicmd:: ipv6 nd suppress-ra
Don't send router advertisment messages.
.. index:: ipv6 nd prefix ipv6prefix [valid-lifetime] [preferred-lifetime] [off-link] [no-autoconfig] [router-address]
.. clicmd:: ipv6 nd prefix ipv6prefix [valid-lifetime] [preferred-lifetime] [off-link] [no-autoconfig] [router-address]
Configuring the IPv6 prefix to include in router advertisements. Several prefix
specific optional parameters and flags may follow:
@ -59,20 +60,18 @@ Router Advertisement
.. index::
single: no ipv6 nd ra-interval [(1-1800)]
single: no ipv6 nd ra-interval [(1-1800)]
.. clicmd:: [no] ipv6 nd ra-interval [(1-1800)]
The maximum time allowed between sending unsolicited multicast router
advertisements from the interface, in seconds.
Default: ``600``
.. index:: ipv6 nd ra-interval msec (70-1800000)
.. index::
single: no ipv6 nd ra-interval [msec (70-1800000)]
single: ipv6 nd ra-interval msec (70-1800000)
.. clicmd:: [no] ipv6 nd ra-interval [msec (70-1800000)]
The maximum time allowed between sending unsolicited multicast router
advertisements from the interface, in milliseconds.
Default: ``600000``
@ -80,8 +79,8 @@ Router Advertisement
.. index::
single: ipv6 nd ra-lifetime (0-9000)
single: no ipv6 nd ra-lifetime [(0-9000)]
.. clicmd:: [no] ipv6 nd ra-lifetime [(0-9000)]
The value to be placed in the Router Lifetime field of router advertisements
sent from the interface, in seconds. Indicates the usefulness of the router
as a default router on this interface. Setting the value to zero indicates
@ -93,30 +92,30 @@ Router Advertisement
.. index::
single: no ipv6 nd reachable-time [(1-3600000)]
single: ipv6 nd reachable-time (1-3600000)
.. clicmd:: [no] ipv6 nd reachable-time [(1-3600000)]
The value to be placed in the Reachable Time field in the Router Advertisement
messages sent by the router, in milliseconds. The configured time enables the
router to detect unavailable neighbors. The value zero means unspecified (by
this router).
The value to be placed in the Reachable Time field in the Router
Advertisement messages sent by the router, in milliseconds. The configured
time enables the router to detect unavailable neighbors. The value zero
means unspecified (by this router).
Default: ``0``
.. index::
single: ipv6 nd managed-config-flag
single: no ipv6 nd managed-config-flag
.. clicmd:: [no] ipv6 nd managed-config-flag
Set/unset flag in IPv6 router advertisements which indicates to hosts that they
should use managed (stateful) protocol for addresses autoconfiguration in
addition to any addresses autoconfigured using stateless address
Set/unset flag in IPv6 router advertisements which indicates to hosts that
they should use managed (stateful) protocol for addresses autoconfiguration
in addition to any addresses autoconfigured using stateless address
autoconfiguration.
Default: not set
.. index::
single: ipv6 nd other-config-flag
single: no ipv6 nd other-config-flag
.. clicmd:: [no] ipv6 nd other-config-flag
Set/unset flag in IPv6 router advertisements which indicates to hosts that
they should use administered (stateful) protocol to obtain autoconfiguration
information other than addresses.
@ -125,8 +124,8 @@ Router Advertisement
.. index::
single: ipv6 nd home-agent-config-flag
single: no ipv6 nd home-agent-config-flag
.. clicmd:: [no] ipv6 nd home-agent-config-flag
Set/unset flag in IPv6 router advertisements which indicates to hosts that
the router acts as a Home Agent and includes a Home Agent Option.
Default: not set
@ -136,18 +135,18 @@ Router Advertisement
.. index::
single: no ipv6 nd home-agent-preference [(0-65535)]
single: ipv6 nd home-agent-preference (0-65535)
.. clicmd:: [no] ipv6 nd home-agent-preference [(0-65535)]
The value to be placed in Home Agent Option, when Home Agent config flag is set,
which indicates to hosts Home Agent preference. The default value of 0 stands
for the lowest preference possible.
The value to be placed in Home Agent Option, when Home Agent config flag is
set, which indicates to hosts Home Agent preference. The default value of 0
stands for the lowest preference possible.
Default: ``0``
.. index::
single: ipv6 nd home-agent-lifetime (0-65520)
single: no ipv6 nd home-agent-lifetime (0-65520)
.. clicmd:: [no] ipv6 nd home-agent-lifetime [(0-65520)]
The value to be placed in Home Agent Option, when Home Agent config flag is set,
which indicates to hosts Home Agent Lifetime. The default value of 0 means to
place the current Router Lifetime value.
@ -157,8 +156,8 @@ Router Advertisement
.. index::
single: ipv6 nd adv-interval-option
single: no ipv6 nd adv-interval-option
.. clicmd:: [no] ipv6 nd adv-interval-option
Include an Advertisement Interval option which indicates to hosts the maximum time,
in milliseconds, between successive unsolicited Router Advertisements.
Default: not set
@ -166,19 +165,19 @@ Router Advertisement
.. index::
single: ipv6 nd router-preference (high|medium|low)
single: no ipv6 nd router-preference (high|medium|low)
.. clicmd:: [no] ipv6 nd router-preference [(high|medium|low)]
Set default router preference in IPv6 router advertisements per RFC4191.
Default: medium
.. index::
single: ipv6 nd mtu (1-65535)
single: no ipv6 nd mtu [(1-65535)]
.. clicmd:: [no] ipv6 nd mtu [(1-65535)]
Include an MTU (type 5) option in each RA packet to assist the attached hosts
in proper interface configuration. The announced value is not verified to be
consistent with router interface MTU.
Include an MTU (type 5) option in each RA packet to assist the attached
hosts in proper interface configuration. The announced value is not verified
to be consistent with router interface MTU.
Default: don't advertise any MTU option.::
interface eth0
@ -186,8 +185,9 @@ Router Advertisement
ipv6 nd prefix 2001:0DB8:5009::/64
For more information see
:t:`RFC2462 (IPv6 Stateless Address Autoconfiguration)`,
:t:`RFC4861 (Neighbor Discovery for IP Version 6 (IPv6))`,
:t:`RFC6275 (Mobility Support in IPv6)` and
:t:`RFC4191 (Default Router Preferences and More-Specific Routes)`.
.. seealso::
- :rfc:`2462` (IPv6 Stateless Address Autoconfiguration)
- :rfc:`4861` (Neighbor Discovery for IP Version 6 (IPv6))
- :rfc:`6275` (Mobility Support in IPv6)
- :rfc:`4191` (Default Router Preferences and More-Specific Routes)

View File

@ -16,15 +16,14 @@ like :abbr:`OSPF`. ISIS is widely used in large networks such as :abbr:`ISP
Configuring isisd
=================
There are no *isisd* specific options. Common options can be
specified (:ref:`Common_Invocation_Options`) to *isisd*.
*isisd* needs to acquire interface information from
*zebra* in order to function. Therefore *zebra* must be
running before invoking *isisd*. Also, if *zebra* is
restarted then *isisd* must be too.
There are no *isisd* specific options. Common options can be specified
(:ref:`Common_Invocation_Options`) to *isisd*. *isisd* needs to acquire
interface information from *zebra* in order to function. Therefore *zebra* must
be running before invoking *isisd*. Also, if *zebra* is restarted then *isisd*
must be too.
Like other daemons, *isisd* configuration is done in :abbr:`ISIS`
specific configuration file :file:`isisd.conf`.
Like other daemons, *isisd* configuration is done in :abbr:`ISIS` specific
configuration file :file:`isisd.conf`.
.. _ISIS_router:
@ -34,77 +33,81 @@ ISIS router
To start ISIS process you have to specify the ISIS router. As of this
writing, *isisd* does not support multiple ISIS processes.
.. index:: Command {router isis WORD} {}
.. index:: router isis WORD
.. clicmd:: router isis WORD
Command {router isis WORD} {}
.. index:: Command {no router isis WORD} {}
.. index:: no router isis WORD
.. clicmd:: no router isis WORD
Command {no router isis WORD} {}
.. _router_isis_WORD:
Enable or disable the ISIS process by specifying the ISIS domain with 'WORD'.
*isisd* does not yet support multiple ISIS processes but you must specify
the name of ISIS process. The ISIS process name 'WORD' is then used for interface
(see command :ref:`ip_router_isis_WORD`).
Enable or disable the ISIS process by specifying the ISIS domain with
'WORD'. *isisd* does not yet support multiple ISIS processes but you must
specify the name of ISIS process. The ISIS process name 'WORD' is then used
for interface (see command :ref:`ip_router_isis_WORD`).
.. index:: {ISIS Command} {net XX.XXXX. ... .XXX.XX} {}
.. index:: net XX.XXXX. ... .XXX.XX
.. clicmd:: net XX.XXXX. ... .XXX.XX
{ISIS Command} {net XX.XXXX. ... .XXX.XX} {}
.. index:: {ISIS Command} {no net XX.XXXX. ... .XXX.XX} {}
.. index:: no net XX.XXXX. ... .XXX.XX
.. clicmd:: no net XX.XXXX. ... .XXX.XX
{ISIS Command} {no net XX.XXXX. ... .XXX.XX} {}
Set/Unset network entity title (NET) provided in ISO format.
.. index:: {ISIS Command} {hostname dynamic} {}
.. index:: hostname dynamic
.. clicmd:: hostname dynamic
{ISIS Command} {hostname dynamic} {}
.. index:: {ISIS Command} {no hostname dynamic} {}
.. index:: no hostname dynamic
.. clicmd:: no hostname dynamic
{ISIS Command} {no hostname dynamic} {}
Enable support for dynamic hostname.
.. index:: {ISIS Command} {area-password [clear | md5] <password>} {}
.. index:: area-password [clear | md5] <password>
.. clicmd:: area-password [clear | md5] <password>
{ISIS Command} {area-password [clear | md5] <password>} {}
.. index:: {ISIS Command} {domain-password [clear | md5] <password>} {}
.. index:: domain-password [clear | md5] <password>
.. clicmd:: domain-password [clear | md5] <password>
{ISIS Command} {domain-password [clear | md5] <password>} {}
.. index:: {ISIS Command} {no area-password} {}
.. index:: no area-password
.. clicmd:: no area-password
{ISIS Command} {no area-password} {}
.. index:: {ISIS Command} {no domain-password} {}
.. index:: no domain-password
.. clicmd:: no domain-password
{ISIS Command} {no domain-password} {}
Configure the authentication password for an area, respectively a domain,
as clear text or md5 one.
Configure the authentication password for an area, respectively a domain, as
clear text or md5 one.
.. index:: {ISIS Command} {log-adjacency-changes} {}
.. index:: log-adjacency-changes
.. clicmd:: log-adjacency-changes
{ISIS Command} {log-adjacency-changes} {}
.. index:: {ISIS Command} {no log-adjacency-changes} {}
.. index:: no log-adjacency-changes
.. clicmd:: no log-adjacency-changes
{ISIS Command} {no log-adjacency-changes} {}
Log changes in adjacency state.
.. index:: {ISIS Command} {metric-style [narrow | transition | wide]} {}
.. index:: metric-style [narrow | transition | wide]
.. clicmd:: metric-style [narrow | transition | wide]
{ISIS Command} {metric-style [narrow | transition | wide]} {}
.. index:: {ISIS Command} {no metric-style} {}
.. index:: no metric-style
.. clicmd:: no metric-style
{ISIS Command} {no metric-style} {}
.. _metric-style:
Set old-style (ISO 10589) or new-style packet formats:
- narrow Use old style of TLVs with narrow metric
- transition Send and accept both styles of TLVs during transition
- wide Use new style of TLVs to carry wider metric
.. index:: {ISIS Command} {set-overload-bit} {}
- narrow
Use old style of TLVs with narrow metric
- transition
Send and accept both styles of TLVs during transition
- wide
Use new style of TLVs to carry wider metric
{ISIS Command} {set-overload-bit} {}
.. index:: {ISIS Command} {no set-overload-bit} {}
.. index:: set-overload-bit
.. clicmd:: set-overload-bit
.. index:: no set-overload-bit
.. clicmd:: no set-overload-bit
{ISIS Command} {no set-overload-bit} {}
Set overload bit to avoid any transit traffic.
.. _ISIS_Timer:
@ -112,75 +115,57 @@ Command {no router isis WORD} {}
ISIS Timer
==========
.. index:: {ISIS Command} {lsp-gen-interval (1-120)} {}
.. index:: lsp-gen-interval (1-120)
.. clicmd:: lsp-gen-interval (1-120)
{ISIS Command} {lsp-gen-interval (1-120)} {}
.. index:: {ISIS Command} {lsp-gen-interval [level-1 | level-2] (1-120)} {}
.. index:: lsp-gen-interval [level-1 | level-2] (1-120)
.. clicmd:: lsp-gen-interval [level-1 | level-2] (1-120)
{ISIS Command} {lsp-gen-interval [level-1 | level-2] (1-120)} {}
.. index:: {ISIS Command} {no lsp-gen-interval} {}
.. index:: no lsp-gen-interval
.. clicmd:: no lsp-gen-interval
{ISIS Command} {no lsp-gen-interval} {}
.. index:: {ISIS Command} {no lsp-gen-interval [level-1 | level-2]} {}
.. index:: no lsp-gen-interval [level-1 | level-2]
.. clicmd:: no lsp-gen-interval [level-1 | level-2]
{ISIS Command} {no lsp-gen-interval [level-1 | level-2]} {}
Set minimum interval in seconds between regenerating same LSP,
globally, for an area (level-1) or a domain (level-2).
.. index:: {ISIS Command} {lsp-refresh-interval (1-65235)} {}
.. index:: lsp-refresh-interval [level-1 | level-2] (1-65235)
.. clicmd:: lsp-refresh-interval [level-1 | level-2] (1-65235)
{ISIS Command} {lsp-refresh-interval (1-65235)} {}
.. index:: {ISIS Command} {lsp-refresh-interval [level-1 | level-2] (1-65235)} {}
.. index:: no lsp-refresh-interval [level-1 | level-2]
.. clicmd:: no lsp-refresh-interval [level-1 | level-2]
{ISIS Command} {lsp-refresh-interval [level-1 | level-2] (1-65235)} {}
.. index:: {ISIS Command} {no lsp-refresh-interval} {}
Set LSP refresh interval in seconds, globally, for an area (level-1) or a
domain (level-2).
{ISIS Command} {no lsp-refresh-interval} {}
.. index:: {ISIS Command} {no lsp-refresh-interval [level-1 | level-2]} {}
.. index:: max-lsp-lifetime (360-65535)
.. clicmd:: max-lsp-lifetime (360-65535)
{ISIS Command} {no lsp-refresh-interval [level-1 | level-2]} {}
Set LSP refresh interval in seconds, globally, for an area (level-1) or a domain (level-2).
.. index:: max-lsp-lifetime [level-1 | level-2] (360-65535)
.. clicmd:: max-lsp-lifetime [level-1 | level-2] (360-65535)
.. index:: {ISIS Command} {lsp-refresh-interval (1-65235)} {}
.. index:: no max-lsp-lifetime
.. clicmd:: no max-lsp-lifetime
{ISIS Command} {lsp-refresh-interval (1-65235)} {}
.. index:: {ISIS Command} {lsp-refresh-interval [level-1 | level-2] (1-65235)} {}
.. index:: no max-lsp-lifetime [level-1 | level-2]
.. clicmd:: no max-lsp-lifetime [level-1 | level-2]
{ISIS Command} {lsp-refresh-interval [level-1 | level-2] (1-65235)} {}
.. index:: {ISIS Command} {no lsp-refresh-interval} {}
Set LSP maximum LSP lifetime in seconds, globally, for an area (level-1) or
a domain (level-2).
{ISIS Command} {no lsp-refresh-interval} {}
.. index:: {ISIS Command} {no lsp-refresh-interval [level-1 | level-2]} {}
.. index:: spf-interval (1-120)
.. clicmd:: spf-interval (1-120)
{ISIS Command} {no lsp-refresh-interval [level-1 | level-2]} {}
Set LSP refresh interval in seconds, globally, for an area (level-1) or a domain (level-2).
.. index:: spf-interval [level-1 | level-2] (1-120)
.. clicmd:: spf-interval [level-1 | level-2] (1-120)
.. index:: {ISIS Command} {max-lsp-lifetime (360-65535)} {}
.. index:: no spf-interval
.. clicmd:: no spf-interval
{ISIS Command} {max-lsp-lifetime (360-65535)} {}
.. index:: {ISIS Command} {max-lsp-lifetime [level-1 | level-2] (360-65535)} {}
.. index:: no spf-interval [level-1 | level-2]
.. clicmd:: no spf-interval [level-1 | level-2]
{ISIS Command} {max-lsp-lifetime [level-1 | level-2] (360-65535)} {}
.. index:: {ISIS Command} {no max-lsp-lifetime} {}
{ISIS Command} {no max-lsp-lifetime} {}
.. index:: {ISIS Command} {no max-lsp-lifetime [level-1 | level-2]} {}
{ISIS Command} {no max-lsp-lifetime [level-1 | level-2]} {}
Set LSP maximum LSP lifetime in seconds, globally, for an area (level-1) or a domain (level-2).
.. index:: {ISIS Command} {spf-interval (1-120)} {}
{ISIS Command} {spf-interval (1-120)} {}
.. index:: {ISIS Command} {spf-interval [level-1 | level-2] (1-120)} {}
{ISIS Command} {spf-interval [level-1 | level-2] (1-120)} {}
.. index:: {ISIS Command} {no spf-interval} {}
{ISIS Command} {no spf-interval} {}
.. index:: {ISIS Command} {no spf-interval [level-1 | level-2]} {}
{ISIS Command} {no spf-interval [level-1 | level-2]} {}
Set minimum interval between consecutive SPF calculations in seconds.
.. _ISIS_region:
@ -188,259 +173,275 @@ ISIS Timer
ISIS region
===========
.. index:: {ISIS Command} {is-type [level-1 | level-1-2 | level-2-only]} {}
.. index:: is-type [level-1 | level-1-2 | level-2-only]
.. clicmd:: is-type [level-1 | level-1-2 | level-2-only]
{ISIS Command} {is-type [level-1 | level-1-2 | level-2-only]} {}
.. index:: {ISIS Command} {no is-type} {}
.. index:: no is-type
.. clicmd:: no is-type
{ISIS Command} {no is-type} {}
Define the ISIS router behavior:
- level-1 Act as a station router only
- level-1-2 Act as both a station router and an area router
- level-2-only Act as an area router only
- level-1
Act as a station router only
- level-1-2
Act as both a station router and an area router
- level-2-only
Act as an area router only
.. _ISIS_interface:
ISIS interface
==============
.. index:: {Interface Command} {ip router isis WORD} {}
.. index:: ip router isis WORD
.. clicmd:: ip router isis WORD
{Interface Command} {ip router isis WORD} {}
.. index:: {Interface Command} {no ip router isis WORD} {}
.. index:: no ip router isis WORD
.. clicmd:: no ip router isis WORD
{Interface Command} {no ip router isis WORD} {}
.. _ip_router_isis_WORD:
Activate ISIS adjacency on this interface. Note that the name
of ISIS instance must be the same as the one used to configure the ISIS process
(see command :ref:`router_isis_WORD`).
.. index:: {Interface Command} {isis circuit-type [level-1 | level-1-2 | level-2]} {}
.. index:: isis circuit-type [level-1 | level-1-2 | level-2]
.. clicmd:: isis circuit-type [level-1 | level-1-2 | level-2]
{Interface Command} {isis circuit-type [level-1 | level-1-2 | level-2]} {}
.. index:: {Interface Command} {no isis circuit-type} {}
.. index:: no isis circuit-type
.. clicmd:: no isis circuit-type
{Interface Command} {no isis circuit-type} {}
Configure circuit type for interface:
- level-1 Level-1 only adjacencies are formed
- level-1-2 Level-1-2 adjacencies are formed
- level-2-only Level-2 only adjacencies are formed
.. index:: {Interface Command} {isis csnp-interval (1-600)} {}
- level-1
Level-1 only adjacencies are formed
- level-1-2
Level-1-2 adjacencies are formed
- level-2-only
Level-2 only adjacencies are formed
{Interface Command} {isis csnp-interval (1-600)} {}
.. index:: {Interface Command} {isis csnp-interval (1-600) [level-1 | level-2]} {}
.. index:: isis csnp-interval (1-600)
.. clicmd:: isis csnp-interval (1-600)
{Interface Command} {isis csnp-interval (1-600) [level-1 | level-2]} {}
.. index:: {Interface Command} {no isis csnp-interval} {}
.. index:: isis csnp-interval (1-600) [level-1 | level-2]
.. clicmd:: isis csnp-interval (1-600) [level-1 | level-2]
{Interface Command} {no isis csnp-interval} {}
.. index:: {Interface Command} {no isis csnp-interval [level-1 | level-2]} {}
.. index:: no isis csnp-interval
.. clicmd:: no isis csnp-interval
{Interface Command} {no isis csnp-interval [level-1 | level-2]} {}
Set CSNP interval in seconds globally, for an area (level-1) or a domain (level-2).
.. index:: no isis csnp-interval [level-1 | level-2]
.. clicmd:: no isis csnp-interval [level-1 | level-2]
.. index:: {Interface Command} {isis hello padding} {}
Set CSNP interval in seconds globally, for an area (level-1) or a domain
(level-2).
.. index:: isis hello padding
.. clicmd:: isis hello padding
{Interface Command} {isis hello padding} {}
Add padding to IS-IS hello packets.
.. index:: {Interface Command} {isis hello-interval (1-600)} {}
.. index:: isis hello-interval (1-600)
.. clicmd:: isis hello-interval (1-600)
{Interface Command} {isis hello-interval (1-600)} {}
.. index:: {Interface Command} {isis hello-interval (1-600) [level-1 | level-2]} {}
.. index:: isis hello-interval (1-600) [level-1 | level-2]
.. clicmd:: isis hello-interval (1-600) [level-1 | level-2]
{Interface Command} {isis hello-interval (1-600) [level-1 | level-2]} {}
.. index:: {Interface Command} {no isis hello-interval} {}
.. index:: no isis hello-interval
.. clicmd:: no isis hello-interval
{Interface Command} {no isis hello-interval} {}
.. index:: {Interface Command} {no isis hello-interval [level-1 | level-2]} {}
.. index:: no isis hello-interval [level-1 | level-2]
.. clicmd:: no isis hello-interval [level-1 | level-2]
{Interface Command} {no isis hello-interval [level-1 | level-2]} {}
Set Hello interval in seconds globally, for an area (level-1) or a domain (level-2).
Set Hello interval in seconds globally, for an area (level-1) or a domain
(level-2).
.. index:: {Interface Command} {isis hello-multiplier (2-100)} {}
.. index:: isis hello-multiplier (2-100)
.. clicmd:: isis hello-multiplier (2-100)
{Interface Command} {isis hello-multiplier (2-100)} {}
.. index:: {Interface Command} {isis hello-multiplier (2-100) [level-1 | level-2]} {}
.. index:: isis hello-multiplier (2-100) [level-1 | level-2]
.. clicmd:: isis hello-multiplier (2-100) [level-1 | level-2]
{Interface Command} {isis hello-multiplier (2-100) [level-1 | level-2]} {}
.. index:: {Interface Command} {no isis hello-multiplier} {}
.. index:: no isis hello-multiplier
.. clicmd:: no isis hello-multiplier
{Interface Command} {no isis hello-multiplier} {}
.. index:: {Interface Command} {no isis hello-multiplier [level-1 | level-2]} {}
.. index:: no isis hello-multiplier [level-1 | level-2]
.. clicmd:: no isis hello-multiplier [level-1 | level-2]
{Interface Command} {no isis hello-multiplier [level-1 | level-2]} {}
Set multiplier for Hello holding time globally, for an area (level-1) or a domain (level-2).
Set multiplier for Hello holding time globally, for an area (level-1) or a
domain (level-2).
.. index:: {Interface Command} {isis metric [(0-255) | (0-16777215)]} {}
.. index:: isis metric [(0-255) | (0-16777215)]
.. clicmd:: isis metric [(0-255) | (0-16777215)]
{Interface Command} {isis metric [(0-255) | (0-16777215)]} {}
.. index:: {Interface Command} {isis metric [(0-255) | (0-16777215)] [level-1 | level-2]} {}
.. index:: isis metric [(0-255) | (0-16777215)] [level-1 | level-2]
.. clicmd:: isis metric [(0-255) | (0-16777215)] [level-1 | level-2]
{Interface Command} {isis metric [(0-255) | (0-16777215)] [level-1 | level-2]} {}
.. index:: {Interface Command} {no isis metric} {}
.. index:: no isis metric
.. clicmd:: no isis metric
{Interface Command} {no isis metric} {}
.. index:: {Interface Command} {no isis metric [level-1 | level-2]} {}
.. index:: no isis metric [level-1 | level-2]
.. clicmd:: no isis metric [level-1 | level-2]
{Interface Command} {no isis metric [level-1 | level-2]} {}
Set default metric value globally, for an area (level-1) or a domain (level-2).
Max value depend if metric support narrow or wide value (see command :ref:`metric-style`).
Set default metric value globally, for an area (level-1) or a domain
(level-2). Max value depend if metric support narrow or wide value (see
command :ref:`metric-style`).
.. index:: {Interface Command} {isis network point-to-point} {}
.. index:: isis network point-to-point
.. clicmd:: isis network point-to-point
{Interface Command} {isis network point-to-point} {}
.. index:: {Interface Command} {no isis network point-to-point} {}
.. index:: no isis network point-to-point
.. clicmd:: no isis network point-to-point
{Interface Command} {no isis network point-to-point} {}
Set network type to 'Point-to-Point' (broadcast by default).
.. index:: {Interface Command} {isis passive} {}
.. index:: isis passive
.. clicmd:: isis passive
{Interface Command} {isis passive} {}
.. index:: {Interface Command} {no isis passive} {}
.. index:: no isis passive
.. clicmd:: no isis passive
{Interface Command} {no isis passive} {}
Configure the passive mode for this interface.
.. index:: {Interface Command} {isis password [clear | md5] <password>} {}
.. index:: isis password [clear | md5] <password>
.. clicmd:: isis password [clear | md5] <password>
{Interface Command} {isis password [clear | md5] <password>} {}
.. index:: {Interface Command} {no isis password} {}
.. index:: no isis password
.. clicmd:: no isis password
{Interface Command} {no isis password} {}
Configure the authentication password (clear or encoded text) for the interface.
Configure the authentication password (clear or encoded text) for the
interface.
.. index:: {Interface Command} {isis priority (0-127)} {}
.. index:: isis priority (0-127)
.. clicmd:: isis priority (0-127)
{Interface Command} {isis priority (0-127)} {}
.. index:: {Interface Command} {isis priority (0-127) [level-1 | level-2]} {}
.. index:: isis priority (0-127) [level-1 | level-2]
.. clicmd:: isis priority (0-127) [level-1 | level-2]
{Interface Command} {isis priority (0-127) [level-1 | level-2]} {}
.. index:: {Interface Command} {no isis priority} {}
.. index:: no isis priority
.. clicmd:: no isis priority
{Interface Command} {no isis priority} {}
.. index:: {Interface Command} {no isis priority [level-1 | level-2]} {}
.. index:: no isis priority [level-1 | level-2]
.. clicmd:: no isis priority [level-1 | level-2]
{Interface Command} {no isis priority [level-1 | level-2]} {}
Set priority for Designated Router election, globally, for the area (level-1)
or the domain (level-2).
Set priority for Designated Router election, globally, for the area
(level-1) or the domain (level-2).
.. index:: {Interface Command} {isis psnp-interval (1-120)} {}
.. index:: isis psnp-interval (1-120)
.. clicmd:: isis psnp-interval (1-120)
{Interface Command} {isis psnp-interval (1-120)} {}
.. index:: {Interface Command} {isis psnp-interval (1-120) [level-1 | level-2]} {}
.. index:: isis psnp-interval (1-120) [level-1 | level-2]
.. clicmd:: isis psnp-interval (1-120) [level-1 | level-2]
{Interface Command} {isis psnp-interval (1-120) [level-1 | level-2]} {}
.. index:: {Interface Command} {no isis psnp-interval} {}
.. index:: no isis psnp-interval
.. clicmd:: no isis psnp-interval
{Interface Command} {no isis psnp-interval} {}
.. index:: {Interface Command} {no isis psnp-interval [level-1 | level-2]} {}
.. index:: no isis psnp-interval [level-1 | level-2]
.. clicmd:: no isis psnp-interval [level-1 | level-2]
{Interface Command} {no isis psnp-interval [level-1 | level-2]} {}
Set PSNP interval in seconds globally, for an area (level-1) or a domain (level-2).
Set PSNP interval in seconds globally, for an area (level-1) or a domain
(level-2).
.. _Showing_ISIS_information:
Showing ISIS information
========================
.. index:: {Command} {show isis summary} {}
.. index:: show isis summary
.. clicmd:: show isis summary
{Command} {show isis summary} {}
Show summary information about ISIS.
.. index:: {Command} {show isis hostname} {}
.. index:: show isis hostname
.. clicmd:: show isis hostname
{Command} {show isis hostname} {}
Show information about ISIS node.
.. index:: {Command} {show isis interface} {}
.. index:: show isis interface
.. clicmd:: show isis interface
{Command} {show isis interface} {}
.. index:: {Command} {show isis interface detail} {}
.. index:: show isis interface detail
.. clicmd:: show isis interface detail
{Command} {show isis interface detail} {}
.. index:: {Command} {show isis interface <interface name>} {}
.. index:: show isis interface <interface name>
.. clicmd:: show isis interface <interface name>
{Command} {show isis interface <interface name>} {}
Show state and configuration of ISIS specified interface, or all
interfaces if no interface is given with or without details.
Show state and configuration of ISIS specified interface, or all interfaces
if no interface is given with or without details.
.. index:: {Command} {show isis neighbor} {}
.. index:: show isis neighbor
.. clicmd:: show isis neighbor
{Command} {show isis neighbor} {}
.. index:: {Command} {show isis neighbor <System Id>} {}
.. index:: show isis neighbor <System Id>
.. clicmd:: show isis neighbor <System Id>
{Command} {show isis neighbor <System Id>} {}
.. index:: {Command} {show isis neighbor detail} {}
.. index:: show isis neighbor detail
.. clicmd:: show isis neighbor detail
{Command} {show isis neighbor detail} {}
Show state and information of ISIS specified neighbor, or all
neighbors if no system id is given with or without details.
Show state and information of ISIS specified neighbor, or all neighbors if
no system id is given with or without details.
.. index:: {Command} {show isis database} {}
.. index:: show isis database
.. clicmd:: show isis database
{Command} {show isis database} {}
.. index:: {Command} {show isis database [detail]} {}
.. index:: show isis database [detail]
.. clicmd:: show isis database [detail]
{Command} {show isis database [detail]} {}
.. index:: {Command} {show isis database <LSP id> [detail]} {}
.. index:: show isis database <LSP id> [detail]
.. clicmd:: show isis database <LSP id> [detail]
{Command} {show isis database <LSP id> [detail]} {}
.. index:: {Command} {show isis database detail <LSP id>} {}
.. index:: show isis database detail <LSP id>
.. clicmd:: show isis database detail <LSP id>
{Command} {show isis database detail <LSP id>} {}
Show the ISIS database globally, for a specific LSP id without or with details.
Show the ISIS database globally, for a specific LSP id without or with
details.
.. index:: {Command} {show isis topology} {}
.. index:: show isis topology
.. clicmd:: show isis topology
{Command} {show isis topology} {}
.. index:: {Command} {show isis topology [level-1|level-2]} {}
.. index:: show isis topology [level-1|level-2]
.. clicmd:: show isis topology [level-1|level-2]
{Command} {show isis topology [level-1|level-2]} {}
Show topology IS-IS paths to Intermediate Systems, globally,
in area (level-1) or domain (level-2).
Show topology IS-IS paths to Intermediate Systems, globally, in area
(level-1) or domain (level-2).
.. index:: {Command} {show ip route isis} {}
.. index:: show ip route isis
.. clicmd:: show ip route isis
{Command} {show ip route isis} {}
Show the ISIS routing table, as determined by the most recent SPF calculation.
Show the ISIS routing table, as determined by the most recent SPF
calculation.
.. _Traffic_Engineering:
.. _ospf-traffic-engineering:
Traffic Engineering
===================
.. index:: {ISIS Command} {mpls-te on} {}
.. index:: mpls-te on
.. clicmd:: mpls-te on
{ISIS Command} {mpls-te on} {}
.. index:: {ISIS Command} {no mpls-te} {}
.. index:: no mpls-te
.. clicmd:: no mpls-te
{ISIS Command} {no mpls-te} {}
Enable Traffic Engineering LSP flooding.
.. index:: {ISIS Command} {mpls-te router-address <A.B.C.D>} {}
.. index:: mpls-te router-address <A.B.C.D>
.. clicmd:: mpls-te router-address <A.B.C.D>
{ISIS Command} {mpls-te router-address <A.B.C.D>} {}
.. index:: {ISIS Command} {no mpls-te router-address} {}
.. index:: no mpls-te router-address
.. clicmd:: no mpls-te router-address
{ISIS Command} {no mpls-te router-address} {}
Configure stable IP address for MPLS-TE.
.. index:: {Command} {show isis mpls-te interface} {}
.. index:: show isis mpls-te interface
.. clicmd:: show isis mpls-te interface
{Command} {show isis mpls-te interface} {}
.. index:: {Command} {show isis mpls-te interface `interface`} {}
.. index:: show isis mpls-te interface INTERFACE
.. clicmd:: show isis mpls-te interface INTERFACE
{Command} {show isis mpls-te interface `interface`} {}
Show MPLS Traffic Engineering parameters for all or specified interface.
.. index:: {Command} {show isis mpls-te router} {}
.. index:: show isis mpls-te router
.. clicmd:: show isis mpls-te router
{Command} {show isis mpls-te router} {}
Show Traffic Engineering router parameters.
.. _Debugging_ISIS:
@ -448,110 +449,108 @@ Traffic Engineering
Debugging ISIS
==============
.. index:: {Command} {debug isis adj-packets} {}
.. index:: debug isis adj-packets
.. clicmd:: debug isis adj-packets
{Command} {debug isis adj-packets} {}
.. index:: {Command} {no debug isis adj-packets} {}
.. index:: no debug isis adj-packets
.. clicmd:: no debug isis adj-packets
{Command} {no debug isis adj-packets} {}
IS-IS Adjacency related packets.
.. index:: {Command} {debug isis checksum-errors} {}
.. index:: debug isis checksum-errors
.. clicmd:: debug isis checksum-errors
{Command} {debug isis checksum-errors} {}
.. index:: {Command} {no debug isis checksum-errors} {}
.. index:: no debug isis checksum-errors
.. clicmd:: no debug isis checksum-errors
{Command} {no debug isis checksum-errors} {}
IS-IS LSP checksum errors.
.. index:: {Command} {debug isis events} {}
.. index:: debug isis events
.. clicmd:: debug isis events
{Command} {debug isis events} {}
.. index:: {Command} {no debug isis events} {}
.. index:: no debug isis events
.. clicmd:: no debug isis events
{Command} {no debug isis events} {}
IS-IS Events.
.. index:: {Command} {debug isis local-updates} {}
.. index:: debug isis local-updates
.. clicmd:: debug isis local-updates
{Command} {debug isis local-updates} {}
.. index:: {Command} {no debug isis local-updates} {}
.. index:: no debug isis local-updates
.. clicmd:: no debug isis local-updates
{Command} {no debug isis local-updates} {}
IS-IS local update packets.
.. index:: {Command} {debug isis packet-dump} {}
.. index:: debug isis packet-dump
.. clicmd:: debug isis packet-dump
{Command} {debug isis packet-dump} {}
.. index:: {Command} {no debug isis packet-dump} {}
.. index:: no debug isis packet-dump
.. clicmd:: no debug isis packet-dump
{Command} {no debug isis packet-dump} {}
IS-IS packet dump.
.. index:: {Command} {debug isis protocol-errors} {}
.. index:: debug isis protocol-errors
.. clicmd:: debug isis protocol-errors
{Command} {debug isis protocol-errors} {}
.. index:: {Command} {no debug isis protocol-errors} {}
.. index:: no debug isis protocol-errors
.. clicmd:: no debug isis protocol-errors
{Command} {no debug isis protocol-errors} {}
IS-IS LSP protocol errors.
.. index:: {Command} {debug isis route-events} {}
.. index:: debug isis route-events
.. clicmd:: debug isis route-events
{Command} {debug isis route-events} {}
.. index:: {Command} {no debug isis route-events} {}
.. index:: no debug isis route-events
.. clicmd:: no debug isis route-events
{Command} {no debug isis route-events} {}
IS-IS Route related events.
.. index:: {Command} {debug isis snp-packets} {}
.. index:: debug isis snp-packets
.. clicmd:: debug isis snp-packets
{Command} {debug isis snp-packets} {}
.. index:: {Command} {no debug isis snp-packets} {}
.. index:: no debug isis snp-packets
.. clicmd:: no debug isis snp-packets
{Command} {no debug isis snp-packets} {}
IS-IS CSNP/PSNP packets.
.. index:: {Command} {debug isis spf-events} {}
.. index:: debug isis spf-events
.. clicmd:: debug isis spf-events
{Command} {debug isis spf-events} {}
.. index:: {Command} {debug isis spf-statistics} {}
.. index:: debug isis spf-statistics
.. clicmd:: debug isis spf-statistics
{Command} {debug isis spf-statistics} {}
.. index:: {Command} {debug isis spf-triggers} {}
.. index:: debug isis spf-triggers
.. clicmd:: debug isis spf-triggers
{Command} {debug isis spf-triggers} {}
.. index:: {Command} {no debug isis spf-events} {}
.. index:: no debug isis spf-events
.. clicmd:: no debug isis spf-events
{Command} {no debug isis spf-events} {}
.. index:: {Command} {no debug isis spf-statistics} {}
.. index:: no debug isis spf-statistics
.. clicmd:: no debug isis spf-statistics
{Command} {no debug isis spf-statistics} {}
.. index:: {Command} {no debug isis spf-triggers} {}
.. index:: no debug isis spf-triggers
.. clicmd:: no debug isis spf-triggers
{Command} {no debug isis spf-triggers} {}
IS-IS Shortest Path First Events, Timing and Statistic Data
and triggering events.
IS-IS Shortest Path First Events, Timing and Statistic Data and triggering
events.
.. index:: {Command} {debug isis update-packets} {}
.. index:: debug isis update-packets
.. clicmd:: debug isis update-packets
{Command} {debug isis update-packets} {}
.. index:: {Command} {no debug isis update-packets} {}
.. index:: no debug isis update-packets
.. clicmd:: no debug isis update-packets
{Command} {no debug isis update-packets} {}
Update related packets.
.. index:: {Command} {show debugging isis} {}
.. index:: show debugging isis
.. clicmd:: show debugging isis
{Command} {show debugging isis} {}
Print which ISIS debug level is activate.
ISIS Configuration Examples
===========================
A simple example, with MD5 authentication enabled:
::
A simple example, with MD5 authentication enabled:::
!
interface eth0
@ -567,9 +566,7 @@ A simple example, with MD5 authentication enabled:
A Traffic Engineering configuration, with Inter-ASv2 support.
- First, the 'zebra.conf' part:
::
First, the 'zebra.conf' part:::
hostname HOSTNAME
password PASSWORD
@ -609,9 +606,7 @@ A Traffic Engineering configuration, with Inter-ASv2 support.
mpls-te neighbor 10.1.1.2 as 65000
- Then the 'isisd.conf' itself:
::
Then the 'isisd.conf' itself:::
hostname HOSTNAME
password PASSWORD
@ -631,5 +626,3 @@ A Traffic Engineering configuration, with Inter-ASv2 support.
mpls-te router-address 10.1.1.1
!
line vty

View File

@ -4,18 +4,17 @@
NHRP
****
*nhrpd* is a daemon to support Next Hop Routing Protocol (NHRP).
NHRP is described in RFC2332.
*nhrpd* is an implementation of the :abbr:NHRP `(Next Hop Routing Protocol)`.
NHRP is described in :rfc`2332`.
NHRP is used to improve the efficiency of routing computer network
traffic over Non-Broadcast, Multiple Access (NBMA) Networks. NHRP provides
an ARP-like solution that allows a system to dynamically learn the NBMA
address of the other systems that are part of that network, allowing
these systems to directly communicate without requiring traffic to use
an intermediate hop.
NHRP is used to improve the efficiency of routing computer network traffic over
:abbr:`NBMA (Non-Broadcast, Multiple Access)` networks. NHRP provides an
ARP-like solution that allows a system to dynamically learn the NBMA address of
the other systems that are part of that network, allowing these systems to
directly communicate without requiring traffic to use an intermediate hop.
Cisco Dynamic Multipoint VPN (DMVPN) is based on NHRP, and
|PACKAGE_NAME| nhrpd implements this scenario.
Cisco Dynamic Multipoint VPN (DMVPN) is based on NHRP, and |PACKAGE_NAME| nhrpd
implements this scenario.
.. _Routing_Design:
@ -31,9 +30,8 @@ nhrpd does route NHRP domain addresses individually using per-host prefixes.
This is similar to Cisco FlexVPN; but in contrast to opennhrp which uses
a generic subnet route.
To create NBMA GRE tunnel you might use the following (linux terminal
commands):
::
To create NBMA GRE tunnel you might use the following (Linux terminal
commands):::
ip tunnel add gre1 mode gre key 42 ttl 64
ip addr add 10.255.255.2/32 dev gre1
@ -54,8 +52,7 @@ hub nodes, these routes should be internally redistributed using some
routing protocol (e.g. iBGP) to allow hubs to be able to relay all traffic.
This can be achieved in hubs with the following bgp configuration (network
command defines the GRE subnet):
::
command defines the GRE subnet):::
router bgp 65555
address-family ipv4 unicast
@ -98,20 +95,16 @@ announce internal, add additional IP range matches, or rate limitation
if needed. However, the above should be good in most cases.
This kernel NFLOG target's nflog-group is configured in global nhrp config
with:
::
with:::
nhrp nflog-group 1
To start sending these traffic notices out from hubs, use the nhrp
per-interface directive:
::
per-interface directive:::
interface gre1
ip nhrp redirect
.. _Integration_with_IKE:
Integration with IKE

View File

@ -4,35 +4,34 @@
OSPFv3
******
*ospf6d* is a daemon support OSPF version 3 for IPv6 network.
OSPF for IPv6 is described in RFC2740.
*ospf6d* is a daemon support OSPF version 3 for IPv6 network. OSPF for IPv6 is
described in :rfc:`2740`.
.. _OSPF6_router:
OSPF6 router
============
.. index:: {Command} {router ospf6} {}
.. index:: router ospf6
.. clicmd:: router ospf6
{Command} {router ospf6} {}
.. index:: router-id A.B.C.D
.. clicmd:: router-id A.B.C.D
.. index:: {OSPF6 Command} {router-id `a.b.c.d`} {}
{OSPF6 Command} {router-id `a.b.c.d`} {}
Set router's Router-ID.
.. index:: {OSPF6 Command} {interface `ifname` area `area`} {}
.. index:: interface IFNAME area AREA
.. clicmd:: interface IFNAME area AREA
{OSPF6 Command} {interface `ifname` area `area`} {}
Bind interface to specified area, and start sending OSPF packets. `area` can
be specified as 0.
.. index:: {OSPF6 Command} {timers throttle spf `delay` `initial-holdtime` `max-holdtime`} {}
.. index:: timers throttle spf DELAY INITIAL-HOLDTIME MAX-HOLDTIME
.. clicmd:: timers throttle spf DELAY INITIAL-HOLDTIME MAX-HOLDTIME
{OSPF6 Command} {timers throttle spf `delay` `initial-holdtime` `max-holdtime`} {}
.. index:: {OSPF6 Command} {no timers throttle spf} {}
.. index:: no timers throttle spf
.. clicmd:: no timers throttle spf
{OSPF6 Command} {no timers throttle spf} {}
This command sets the initial `delay`, the `initial-holdtime`
and the `maximum-holdtime` between when SPF is calculated and the
event which triggered the calculation. The times are specified in
@ -50,28 +49,26 @@ OSPF6 router
will cause the holdtime to be increased by `initial-holdtime`, bounded
by the `maximum-holdtime` configured with this command. If the adaptive
hold-time elapses without any SPF-triggering event occuring then
the current holdtime is reset to the `initial-holdtime`.
::
the current holdtime is reset to the `initial-holdtime`.::
router ospf6
timers throttle spf 200 400 10000
In this example, the `delay` is set to 200ms, the @var{initial
holdtime} is set to 400ms and the `maximum holdtime` to 10s. Hence
there will always be at least 200ms between an event which requires SPF
calculation and the actual SPF calculation. Further consecutive SPF
calculations will always be seperated by between 400ms to 10s, the
hold-time increasing by 400ms each time an SPF-triggering event occurs
within the hold-time of the previous SPF calculation.
In this example, the `delay` is set to 200ms, the initial holdtime is set
to 400ms and the `maximum holdtime` to 10s. Hence there will always be at
least 200ms between an event which requires SPF calculation and the actual
SPF calculation. Further consecutive SPF calculations will always be
seperated by between 400ms to 10s, the hold-time increasing by 400ms each
time an SPF-triggering event occurs within the hold-time of the previous
SPF calculation.
.. index:: {OSPF6 Command} {auto-cost reference-bandwidth `cost`} {}
.. index:: auto-cost reference-bandwidth COST
.. clicmd:: auto-cost reference-bandwidth COST
{OSPF6 Command} {auto-cost reference-bandwidth `cost`} {}
.. index:: {OSPF6 Command} {no auto-cost reference-bandwidth} {}
.. index:: no auto-cost reference-bandwidth
.. clicmd:: no auto-cost reference-bandwidth
{OSPF6 Command} {no auto-cost reference-bandwidth} {}
This sets the reference bandwidth for cost calculations, where this
bandwidth is considered equivalent to an OSPF cost of 1, specified in
Mbits/s. The default is 100Mbit/s (i.e. a link of bandwidth 100Mbit/s
@ -93,40 +90,40 @@ Area support for OSPFv3 is not yet implemented.
OSPF6 interface
===============
.. index:: {Interface Command} {ipv6 ospf6 cost COST} {}
.. index:: ipv6 ospf6 cost COST
.. clicmd:: ipv6 ospf6 cost COST
{Interface Command} {ipv6 ospf6 cost COST} {}
Sets interface's output cost. Default value depends on the interface
bandwidth and on the auto-cost reference bandwidth.
.. index:: {Interface Command} {ipv6 ospf6 hello-interval HELLOINTERVAL} {}
.. index:: ipv6 ospf6 hello-interval HELLOINTERVAL
.. clicmd:: ipv6 ospf6 hello-interval HELLOINTERVAL
{Interface Command} {ipv6 ospf6 hello-interval HELLOINTERVAL} {}
Sets interface's Hello Interval. Default 40
.. index:: {Interface Command} {ipv6 ospf6 dead-interval DEADINTERVAL} {}
.. index:: ipv6 ospf6 dead-interval DEADINTERVAL
.. clicmd:: ipv6 ospf6 dead-interval DEADINTERVAL
{Interface Command} {ipv6 ospf6 dead-interval DEADINTERVAL} {}
Sets interface's Router Dead Interval. Default value is 40.
.. index:: {Interface Command} {ipv6 ospf6 retransmit-interval RETRANSMITINTERVAL} {}
.. index:: ipv6 ospf6 retransmit-interval RETRANSMITINTERVAL
.. clicmd:: ipv6 ospf6 retransmit-interval RETRANSMITINTERVAL
{Interface Command} {ipv6 ospf6 retransmit-interval RETRANSMITINTERVAL} {}
Sets interface's Rxmt Interval. Default value is 5.
.. index:: {Interface Command} {ipv6 ospf6 priority PRIORITY} {}
.. index:: ipv6 ospf6 priority PRIORITY
.. clicmd:: ipv6 ospf6 priority PRIORITY
{Interface Command} {ipv6 ospf6 priority PRIORITY} {}
Sets interface's Router Priority. Default value is 1.
.. index:: {Interface Command} {ipv6 ospf6 transmit-delay TRANSMITDELAY} {}
.. index:: ipv6 ospf6 transmit-delay TRANSMITDELAY
.. clicmd:: ipv6 ospf6 transmit-delay TRANSMITDELAY
{Interface Command} {ipv6 ospf6 transmit-delay TRANSMITDELAY} {}
Sets interface's Inf-Trans-Delay. Default value is 1.
.. index:: {Interface Command} {ipv6 ospf6 network (broadcast|point-to-point)} {}
.. index:: ipv6 ospf6 network (broadcast|point-to-point)
.. clicmd:: ipv6 ospf6 network (broadcast|point-to-point)
{Interface Command} {ipv6 ospf6 network (broadcast|point-to-point)} {}
Set explicitly network type for specifed interface.
.. _Redistribute_routes_to_OSPF6:
@ -134,55 +131,55 @@ OSPF6 interface
Redistribute routes to OSPF6
============================
.. index:: {OSPF6 Command} {redistribute static} {}
.. index:: redistribute static
.. clicmd:: redistribute static
{OSPF6 Command} {redistribute static} {}
.. index:: {OSPF6 Command} {redistribute connected} {}
.. index:: redistribute connected
.. clicmd:: redistribute connected
{OSPF6 Command} {redistribute connected} {}
.. index:: {OSPF6 Command} {redistribute ripng} {}
.. index:: redistribute ripng
.. clicmd:: redistribute ripng
{OSPF6 Command} {redistribute ripng} {}
.. _Showing_OSPF6_information:
Showing OSPF6 information
=========================
.. index:: {Command} {show ipv6 ospf6 [INSTANCE_ID]} {}
.. index:: show ipv6 ospf6 [INSTANCE_ID]
.. clicmd:: show ipv6 ospf6 [INSTANCE_ID]
{Command} {show ipv6 ospf6 [INSTANCE_ID]} {}
INSTANCE_ID is an optional OSPF instance ID. To see router ID and OSPF
instance ID, simply type "show ipv6 ospf6 <cr>".
.. index:: {Command} {show ipv6 ospf6 database} {}
.. index:: show ipv6 ospf6 database
.. clicmd:: show ipv6 ospf6 database
{Command} {show ipv6 ospf6 database} {}
This command shows LSA database summary. You can specify the type of LSA.
.. index:: {Command} {show ipv6 ospf6 interface} {}
.. index:: show ipv6 ospf6 interface
.. clicmd:: show ipv6 ospf6 interface
{Command} {show ipv6 ospf6 interface} {}
To see OSPF interface configuration like costs.
.. index:: {Command} {show ipv6 ospf6 neighbor} {}
.. index:: show ipv6 ospf6 neighbor
.. clicmd:: show ipv6 ospf6 neighbor
{Command} {show ipv6 ospf6 neighbor} {}
Shows state and chosen (Backup) DR of neighbor.
.. index:: {Command} {show ipv6 ospf6 request-list A.B.C.D} {}
.. index:: show ipv6 ospf6 request-list A.B.C.D
.. clicmd:: show ipv6 ospf6 request-list A.B.C.D
{Command} {show ipv6 ospf6 request-list A.B.C.D} {}
Shows requestlist of neighbor.
.. index:: {Command} {show ipv6 route ospf6} {}
.. index:: show ipv6 route ospf6
.. clicmd:: show ipv6 route ospf6
{Command} {show ipv6 route ospf6} {}
This command shows internal routing table.
.. index:: {Command} {show ipv6 ospf6 zebra} {}
.. index:: show ipv6 ospf6 zebra
.. clicmd:: show ipv6 ospf6 zebra
{Command} {show ipv6 ospf6 zebra} {}
Shows state about what is being redistributed between zebra and OSPF6
OSPF6 Configuration Examples
@ -200,5 +197,3 @@ Example of ospf6d configured on one interface and area:
area 0.0.0.0 range 2001:770:105:2::/64
interface eth0 area 0.0.0.0
!

View File

@ -4,7 +4,6 @@ OSPF Fundamentals
=================
.. index:: Link-state routing protocol
.. index:: Distance-vector routing protocol
:abbr:`OSPF` is, mostly, a link-state routing protocol. In contrast
@ -15,12 +14,9 @@ describe the state of their links to their immediate neighbouring
routers.
.. index:: Link State Announcement
.. index:: Link State Advertisement
.. index:: LSA flooding
.. index:: Link State DataBase
.. index:: Link State Database
Each router describes their link-state information in a message known
as an :abbr:`LSA (Link State Advertisement)`, which is then propogated
@ -69,128 +65,118 @@ will nearly all be covered in greater detail further on. They may be
broadly classed as:
.. index:: OSPF Hello Protocol overview
*The Hello Protocol*
.. index:: OSPF Hello Protocol
The OSPF Hello protocol allows OSPF to quickly detect changes in
two-way reachability between routers on a link. OSPF can additionally
avail of other sources of reachability information, such as link-state
information provided by hardware, or through dedicated reachability
protocols such as :abbr:`BFD (Bi-directional Forwarding Detection)`.
The Hello Protocol
^^^^^^^^^^^^^^^^^^
OSPF also uses the Hello protocol to propagate certain state between
routers sharing a link, for example:
The OSPF Hello protocol allows OSPF to quickly detect changes in two-way
reachability between routers on a link. OSPF can additionally avail of other
sources of reachability information, such as link-state information provided by
hardware, or through dedicated reachability protocols such as :abbr:`BFD
(Bidirectional Forwarding Detection)`.
OSPF also uses the Hello protocol to propagate certain state between routers
sharing a link, for example:
*Hello protocol configured state, such as the dead-interval.*
- Hello protocol configured state, such as the dead-interval.
- Router priority, for DR/BDR election.
- DR/BDR election results.
- Any optional capabilities supported by each router.
*Router priority, for DR/BDR election.*
*DR/BDR election results.*
*Any optional capabilities supported by each router.*
The Hello protocol is comparatively trivial and will not be explored in
greater detail than here.
The Hello protocol is comparatively trivial and will not be explored in greater
detail than here.
.. index:: OSPF LSA overview
.. _ospf-lsas:
LSAs
^^^^
*LSAs*
At the heart of :abbr:`OSPF` are :abbr:`LSA (Link State Advertisement)`
messages. Despite the name, some :abbr:`LSA` s do not, strictly speaking,
describe link-state information. Common :abbr:`LSA` s describe information
such as:
- Routers, in terms of their links.
- Networks, in terms of attached routers.
- Routes, external to a link-state domain:
**
Routers, in terms of their links.
**
Networks, in terms of attached routers.
**
Routes, external to a link-state domain:
*External Routes*
External Routes
Routes entirely external to :abbr:`OSPF`. Routers originating such
routes are known as :abbr:`ASBR (Autonomous-System Border Router)`
routers.
*Summary Routes*
Summary Routes
Routes which summarise routing information relating to OSPF areas
external to the OSPF link-state area at hand, originated by
:abbr:`ABR (Area Boundary Router)` routers.
.. _ospf-lsa-flooding:
LSA Flooding
""""""""""""
*LSA Flooding*
OSPF defines several related mechanisms, used to manage synchronisation of
:abbr:`LSDB`s between neighbours as neighbours form adjacencies and
the propogation, or :term:`flooding` of new or updated :abbr:`LSA`s.
:abbr:`LSDB`s between neighbours as neighbours form adjacencies and the
propogation, or :term:`flooding` of new or updated :abbr:`LSA` s.
:ref:`OSPF_Flooding`.
.. index:: OSPF Areas overview
.. _ospf-areas:
Areas
^^^^^
*Areas*
OSPF provides for the protocol to be broken up into multiple smaller
and independent link-state areas. Each area must be connected to a
common backbone area by an :abbr:`ABR (Area Boundary Router)`. These
:abbr:`ABR` routers are responsible for summarising the link-state
routing information of an area into :term:`Summary LSAs`, possibly in a
condensed (i.e. aggregated) form, and then originating these summaries
into all other areas the :abbr:`ABR` is connected to.
OSPF provides for the protocol to be broken up into multiple smaller and
independent link-state areas. Each area must be connected to a common backbone
area by an :abbr:`ABR (Area Boundary Router)`. These :abbr:`ABR` routers are
responsible for summarising the link-state routing information of an area into
:term:`Summary LSAs`, possibly in a condensed (i.e. aggregated) form, and then
originating these summaries into all other areas the :abbr:`ABR` is connected
to.
Note that only summaries and external routes are passed between areas.
As these describe *paths*, rather than any router link-states,
routing between areas hence is by :term:`distance-vector`, **not**
link-state.
:ref:`OSPF_Areas`.
Note that only summaries and external routes are passed between areas. As
these describe *paths*, rather than any router link-states, routing between
areas hence is by :term:`distance-vector`, **not** link-state.
OSPF LSAs
---------
:abbr:`LSA`s are the core object in OSPF. Everything else in OSPF
revolves around detecting what to describe in LSAs, when to update
them, how to flood them throughout a network and how to calculate
routes from them.
The core objects in OSPF are :abbr:`LSA` s. Everything else in OSPF revolves
around detecting what to describe in LSAs, when to update them, how to flood
them throughout a network and how to calculate routes from them.
There are a variety of different :abbr:`LSA`s, for purposes such
as describing actual link-state information, describing paths (i.e.
routes), describing bandwidth usage of links for
:abbr:`TE (Traffic Engineering)` purposes, and even arbitrary data
by way of *Opaque* :abbr:`LSA`s.
There are a variety of different :abbr:`LSA` s, for purposes such as describing
actual link-state information, describing paths (i.e. routes), describing
bandwidth usage of links for :abbr:`TE (Traffic Engineering)` purposes, and
even arbitrary data by way of *Opaque* :abbr:`LSA` s.
LSA Header
^^^^^^^^^^
All LSAs share a common header with the following information:
* Type
- Type
Different types of :abbr:`LSA` s describe different things in
:abbr:`OSPF`. Types include:
* Router LSA
* Network LSA
* Network Summary LSA
* Router Summary LSA
* AS-External LSA
- Router LSA
- Network LSA
- Network Summary LSA
- Router Summary LSA
- AS-External LSA
The specifics of the different types of LSA are examined below.
* Advertising Router
- Advertising Router
The Router ID of the router originating the LSA, see :ref:`ospf_router-id`.
* LSA ID
- LSA ID
The ID of the LSA, which is typically derived in some way from the
information the LSA describes, e.g. a Router LSA uses the Router ID as
@ -202,7 +188,7 @@ All LSAs share a common header with the following information:
an LSA with the same Type, LSA ID and Advertising Router ID, see
:ref:`OSPF_LSA_sequence_number,,LSA_Sequence_Number`.
* Age
- Age
A number to allow stale :abbr:`LSA` s to, eventually, be purged by routers
from their :abbr:`LSDB`s.
@ -222,7 +208,7 @@ All LSAs share a common header with the following information:
.. _OSPF_LSA_sequence_number:
* Sequence Number
- Sequence Number
A number used to distinguish newer instances of an LSA from older instances.
@ -238,35 +224,31 @@ Instances of these LSAs are specific to the link-state area in which
they are originated. Routes calculated from these two LSA types are
called :term:`intra-area routes`.
* Router LSA
- Router LSA
Each OSPF Router must originate a router :abbr:`LSA` to describe
itself. In it, the router lists each of its :abbr:`OSPF` enabled
interfaces, for the given link-state area, in terms of:
* Cost
Cost
The output cost of that interface, scaled inversely to some commonly known
reference value, :ref:`OSPF_auto-cost_reference-bandwidth,,auto-cost_reference-bandwidth`.
* Link Type
* Transit Network
Link Type
Transit Network
A link to a multi-access network, on which the router has at least one
Full adjacency with another router.
* :abbr:`PtP (Point-to-Point)`
:abbr:`PtP (Point-to-Point)`
A link to a single remote router, with a Full adjacency. No
:abbr:`DR (Designated Router)` is elected on such links; no network
LSA is originated for such a link.
* Stub
Stub
A link with no adjacent neighbours, or a host route.
* Link ID and Data
- Link ID and Data
These values depend on the Link Type:
@ -282,16 +264,17 @@ called :term:`intra-area routes`.
| Stub | IP address | Subnet Mask |
+----------------+-----------------------------------+------------------------------------------+
Links on a router may be listed multiple times in the Router LSA, e.g.
a :abbr:`PtP` interface on which OSPF is enabled must *always*
be described by a Stub link in the Router :abbr:`LSA`, in addition to
being listed as PtP link in the Router :abbr:`LSA` if the adjacency
with the remote router is Full.
Links on a router may be listed multiple times in the Router LSA, e.g. a
:abbr:`PtP` interface on which OSPF is enabled must *always* be described
by a Stub link in the Router :abbr:`LSA`, in addition to being listed as
PtP link in the Router :abbr:`LSA` if the adjacency with the remote router
is Full.
Stub links may also be used as a way to describe links on which OSPF is
*not* spoken, known as :term:`passive interfaces`, see :ref:`OSPF_passive-interface,,passive-interface`.
*not* spoken, known as :term:`passive interfaces`, see
:ref:`OSPF_passive-interface,,passive-interface`.
* Network LSA
- Network LSA
On multi-access links (e.g. ethernets, certain kinds of ATM and X.25
configurations), routers elect a :abbr:`DR`. The :abbr:`DR` is
@ -302,13 +285,13 @@ called :term:`intra-area routes`.
The contents of the Network LSA describes the:
* Subnet Mask
- Subnet Mask
As the :abbr:`LSA` ID of a Network LSA must be the IP address of the
:abbr:`DR`, the Subnet Mask together with the :abbr:`LSA` ID gives
you the network address.
* Attached Routers
- Attached Routers
Each router fully-adjacent with the :abbr:`DR` is listed in the LSA,
by their Router-ID. This allows the corresponding Router :abbr:`LSA` s to be
@ -333,13 +316,14 @@ surprisingly, when OSPF routers build updated routing tables, the first
stage of :abbr:`SPF` calculation concerns itself only with these two
LSA types.
.. _ospf-link-state-lsa-examples:
Link-State LSA Examples
^^^^^^^^^^^^^^^^^^^^^^^
The example below (:ref:`OSPF_Link-State_LSA_Example`) shows two
:abbr:`LSA`s, both originated by the same router (Router ID
192.168.0.49) and with the same :abbr:`LSA` ID (192.168.0.49), but of
different LSA types.
The example below shows two :abbr:`LSA` s, both originated by the same router
(Router ID 192.168.0.49) and with the same :abbr:`LSA` ID (192.168.0.49), but
of different LSA types.
The first LSA being the router LSA describing 192.168.0.49's links: 2 links
to multi-access networks with fully-adjacent neighbours (i.e. Transit
@ -349,8 +333,6 @@ The second LSA being a Network LSA, for which 192.168.0.49 is the
:abbr:`DR`, listing the Router IDs of 4 routers on that network which
are fully adjacent with 192.168.0.49.
.. _OSPF_Link-State_LSA_Example:
::
# show ip ospf database router 192.168.0.49
@ -476,48 +458,39 @@ over external routes.
The External :abbr:`LSA` describes the following:
* IP Network number
IP Network number
The IP Network number of the route is described by the :abbr:`LSA` ID field.
The IP Network number of the route is described by the :abbr:`LSA` ID
field.
IP Network Mask
The body of the External LSA describes the IP Network Mask of the route.
This, together with the :abbr:`LSA` ID, describes the prefix of the IP route
concerned.
* IP Network Mask
Metric
The cost of the External Route. This cost may be an OSPF cost (also known as
a "Type 1" metric), i.e. equivalent to the normal OSPF costs, or an
externally derived cost ("Type 2" metric) which is not comparable to OSPF
costs and always considered larger than any OSPF cost. Where there are both
Type 1 and 2 External routes for a route, the Type 1 is always preferred.
The body of the External LSA describes the IP Network Mask of the
route. This, together with the :abbr:`LSA` ID, describes the prefix
of the IP route concerned.
Forwarding Address
The address of the router to forward packets to for the route. This may be,
and usually is, left as 0 to specify that the ASBR originating the External
:abbr:`LSA` should be used. There must be an internal OSPF route to the
forwarding address, for the forwarding address to be useable.
* Metric
The cost of the External Route. This cost may be an OSPF cost (also
known as a "Type 1" metric), i.e. equivalent to the normal OSPF costs,
or an externally derived cost ("Type 2" metric) which is not comparable
to OSPF costs and always considered larger than any OSPF cost. Where
there are both Type 1 and 2 External routes for a route, the Type 1 is
always preferred.
* Forwarding Address
The address of the router to forward packets to for the route. This may
be, and usually is, left as 0 to specify that the ASBR originating the
External :abbr:`LSA` should be used. There must be an internal OSPF
route to the forwarding address, for the forwarding address to be
useable.
* Tag
An arbitrary 4-bytes of data, not interpreted by OSPF, which may
carry whatever information about the route which OSPF speakers desire.
Tag
An arbitrary 4-bytes of data, not interpreted by OSPF, which may carry
whatever information about the route which OSPF speakers desire.
AS External LSA Example
^^^^^^^^^^^^^^^^^^^^^^^
To illustrate, below is an example of an External :abbr:`LSA` in the
:abbr:`LSDB` of an OSPF router. It describes a route to the IP prefix
of 192.168.165.0/24, originated by the ASBR with Router-ID
192.168.0.49. The metric of 20 is external to OSPF. The forwarding
address is 0, so the route should forward to the originating ASBR if
selected.
:abbr:`LSDB` of an OSPF router. It describes a route to the IP prefix of
192.168.165.0/24, originated by the ASBR with Router-ID 192.168.0.49. The
metric of 20 is external to OSPF. The forwarding address is 0, so the route
should forward to the originating ASBR if selected.
::
@ -540,8 +513,7 @@ selected.
We can add this to our partial topology from above, which now looks
like:
::
like:::
--------------------- Network: ......
| Designated Router IP: 192.168.1.3
@ -568,16 +540,6 @@ like:
Summary LSAs
^^^^^^^^^^^^
Summary LSAs are created by :abbr:`ABR`s to summarise the destinations available within one area to other areas. These LSAs may describe IP networks, potentially in aggregated form, or :abbr:`ASBR` routers.
.. _OSPF_Flooding:
OSPF Flooding
-------------
.. _OSPF_Areas:
OSPF Areas
----------
Summary LSAs are created by :abbr:`ABR`s to summarise the destinations
available within one area to other areas. These LSAs may describe IP networks,
potentially in aggregated form, or :abbr:`ASBR` routers.

File diff suppressed because it is too large Load Diff

View File

@ -7,34 +7,30 @@ Zebra Protocol
Overview of the Zebra Protocol
==============================
Zebra Protocol is used by protocol daemons to communicate with the
zebra daemon.
Zebra Protocol is used by protocol daemons to communicate with the zebra
daemon.
Each protocol daemon may request and send information to and from the
zebra daemon such as interface states, routing state,
nexthop-validation, and so on. Protocol daemons may also install routes
with zebra. The zebra daemon manages which route is installed into the
forwarding table with the kernel.
Each protocol daemon may request and send information to and from the zebra
daemon such as interface states, routing state, nexthop-validation, and so on.
Protocol daemons may also install routes with zebra. The zebra daemon manages
which route is installed into the forwarding table with the kernel.
Zebra Protocol is a streaming protocol, with a common header. Two
versions of the header are in use. Version 0 is implicitely versioned.
Version 1 has an explicit version field. Version 0 can be distinguished
from all other versions by examining the 3rd byte of the header, which
contains a marker value for all versions bar version 0. The marker byte
corresponds to the command field in version 0, and the marker value is
a reserved command in version 0.
Zebra Protocol is a streaming protocol, with a common header. Two versions of
the header are in use. Version 0 is implicitely versioned. Version 1 has an
explicit version field. Version 0 can be distinguished from all other versions
by examining the 3rd byte of the header, which contains a marker value for all
versions bar version 0. The marker byte corresponds to the command field in
version 0, and the marker value is a reserved command in version 0.
We do not anticipate there will be further versions of the header for
the foreseeable future, as the command field in version 1 is wide
enough to allow for future extensions to done compatibly through
seperate commands.
We do not anticipate there will be further versions of the header for the
foreseeable future, as the command field in version 1 is wide enough to allow
for future extensions to done compatibly through seperate commands.
Version 0 is used by all versions of GNU Zebra as of this writing, and
versions of Quagga up to and including Quagga 0.98. Version 2 was created
for 0.99.21 of Quagga. Version 3 designates VRF compatibility and was
released in 1.0. Version 4 will be used as of FRR 2.0 to indicate that
we are a different Routing Suite now and to hopefully prevent accidental
Quagga <-> FRR issues.
Version 0 is used by all versions of GNU Zebra as of this writing, and versions
of Quagga up to and including Quagga 0.98. Version 2 was created for 0.99.21 of
Quagga. Version 3 designates VRF compatibility and was released in 1.0.
Version 4 will be used as of FRR 2.0 to indicate that we are a different
Routing Suite now and to hopefully prevent accidental Quagga <-> FRR issues.
Zebra Protocol Definition
=========================
@ -68,61 +64,59 @@ Zebra Protocol Common Header (version 1)
Zebra Protocol Header Field Definitions
---------------------------------------
@table @samp
@item Length
Total packet length including this header. The minimum length is 3
bytes for version 0 messages and 6 bytes for version 1 messages.
Length
Total packet length including this header. The minimum length is 3 bytes for
version 0 messages and 6 bytes for version 1 messages.
@item Marker
Static marker with a value of 255 always. This is to allow version 0
Zserv headers (which do not include version explicitely) to be
distinguished from versioned headers. Not present in version 0
messages.
Marker
Static marker with a value of 255 always. This is to allow version 0 Zserv
headers (which do not include version explicitly) to be distinguished from
versioned headers. Not present in version 0 messages.
@item Version
Version number of the Zserv message. Clients should not continue
processing messages past the version field for versions they do not
recognise. Not present in version 0 messages.
Version
Version number of the Zserv message. Clients should not continue processing
messages past the version field for versions they do not recognise. Not
present in version 0 messages.
@item Command
Command
The Zebra Protocol command.
@end table
Zebra Protocol Commands
-----------------------
@multitable {ZEBRA_REDISTRIBUTE_DEFAULT_DELETE_WHATEVER} {99999}
@headitem Command @tab Value
@item ZEBRA_INTERFACE_ADD
@tab 1
@item ZEBRA_INTERFACE_DELETE
@tab 2
@item ZEBRA_INTERFACE_ADDRESS_ADD
@tab 3
@item ZEBRA_INTERFACE_ADDRESS_DELETE
@tab 4
@item ZEBRA_INTERFACE_UP
@tab 5
@item ZEBRA_INTERFACE_DOWN
@tab 6
@item ZEBRA_IPV4_ROUTE_ADD
@tab 7
@item ZEBRA_IPV4_ROUTE_DELETE
@tab 8
@item ZEBRA_IPV6_ROUTE_ADD
@tab 9
@item ZEBRA_IPV6_ROUTE_DELETE
@tab 10
@item ZEBRA_REDISTRIBUTE_ADD
@tab 11
@item ZEBRA_REDISTRIBUTE_DELETE
@tab 12
@item ZEBRA_REDISTRIBUTE_DEFAULT_ADD
@tab 13
@item ZEBRA_REDISTRIBUTE_DEFAULT_DELETE
@tab 14
@item ZEBRA_IPV4_NEXTHOP_LOOKUP
@tab 15
@item ZEBRA_IPV6_NEXTHOP_LOOKUP
@tab 16
@end multitable
+-----------------------------------+-------+
| Command | Value |
+===================================+=======+
| ZEBRA_INTERFACE_ADD | 1 |
+-----------------------------------+-------+
| ZEBRA_INTERFACE_DELETE | 2 |
+-----------------------------------+-------+
| ZEBRA_INTERFACE_ADDRESS_ADD | 3 |
+-----------------------------------+-------+
| ZEBRA_INTERFACE_ADDRESS_DELETE | 4 |
+-----------------------------------+-------+
| ZEBRA_INTERFACE_UP | 5 |
+-----------------------------------+-------+
| ZEBRA_INTERFACE_DOWN | 6 |
+-----------------------------------+-------+
| ZEBRA_IPV4_ROUTE_ADD | 7 |
+-----------------------------------+-------+
| ZEBRA_IPV4_ROUTE_DELETE | 8 |
+-----------------------------------+-------+
| ZEBRA_IPV6_ROUTE_ADD | 9 |
+-----------------------------------+-------+
| ZEBRA_IPV6_ROUTE_DELETE | 10 |
+-----------------------------------+-------+
| ZEBRA_REDISTRIBUTE_ADD | 11 |
+-----------------------------------+-------+
| ZEBRA_REDISTRIBUTE_DELETE | 12 |
+-----------------------------------+-------+
| ZEBRA_REDISTRIBUTE_DEFAULT_ADD | 13 |
+-----------------------------------+-------+
| ZEBRA_REDISTRIBUTE_DEFAULT_DELETE | 14 |
+-----------------------------------+-------+
| ZEBRA_IPV4_NEXTHOP_LOOKUP | 15 |
+-----------------------------------+-------+
| ZEBRA_IPV6_NEXTHOP_LOOKUP | 16 |
+-----------------------------------+-------+

View File

@ -21,17 +21,15 @@ version 1 as described in RFC1058.
Starting and Stopping ripd
==========================
The default configuration file name of *ripd*'s is
:file:`ripd.conf`. When invocation *ripd* searches directory
|INSTALL_PREFIX_ETC|. If :file:`ripd.conf` is not there next
search current directory.
The default configuration file name of *ripd*'s is :file:`ripd.conf`. When
invocation *ripd* searches directory |INSTALL_PREFIX_ETC|. If :file:`ripd.conf`
is not there next search current directory.
RIP uses UDP port 520 to send and receive RIP packets. So the user must have
the capability to bind the port, generally this means that the user must
have superuser privileges. RIP protocol requires interface information
maintained by *zebra* daemon. So running *zebra*
is mandatory to run *ripd*. Thus minimum sequence for running
RIP is like below:
the capability to bind the port, generally this means that the user must have
superuser privileges. RIP protocol requires interface information maintained by
*zebra* daemon. So running *zebra* is mandatory to run *ripd*. Thus minimum
sequence for running RIP is like below:
::
@ -41,8 +39,10 @@ RIP is like below:
Please note that *zebra* must be invoked before *ripd*.
To stop *ripd*. Please use @command{kill `cat
/var/run/ripd.pid`}. Certain signals have special meaningss to *ripd*.
To stop *ripd*. Please use::
kill `cat /var/run/ripd.pid`
Certain signals have special meaningss to *ripd*.
+-------------+------------------------------------------------------+
| Signal | Action |
@ -70,81 +70,82 @@ To stop *ripd*. Please use @command{kill `cat
RIP netmask
-----------
The netmask features of *ripd* support both version 1 and version 2 of
RIP. Version 1 of RIP originally contained no netmask information. In
RIP version 1, network classes were originally used to determine the
size of the netmask. Class A networks use 8 bits of mask, Class B
networks use 16 bits of masks, while Class C networks use 24 bits of
mask. Today, the most widely used method of a network mask is assigned
to the packet on the basis of the interface that received the packet.
Version 2 of RIP supports a variable length subnet mask (VLSM). By
extending the subnet mask, the mask can be divided and reused. Each
subnet can be used for different purposes such as large to middle size
LANs and WAN links. FRR *ripd* does not support the non-sequential
netmasks that are included in RIP Version 2.
The netmask features of *ripd* support both version 1 and version 2 of RIP.
Version 1 of RIP originally contained no netmask information. In RIP version 1,
network classes were originally used to determine the size of the netmask.
Class A networks use 8 bits of mask, Class B networks use 16 bits of masks,
while Class C networks use 24 bits of mask. Today, the most widely used method
of a network mask is assigned to the packet on the basis of the interface that
received the packet. Version 2 of RIP supports a variable length subnet mask
(VLSM). By extending the subnet mask, the mask can be divided and reused. Each
subnet can be used for different purposes such as large to middle size LANs and
WAN links. FRR *ripd* does not support the non-sequential netmasks that are
included in RIP Version 2.
In a case of similar information with the same prefix and metric, the
old information will be suppressed. Ripd does not currently support
equal cost multipath routing.
In a case of similar information with the same prefix and metric, the old
information will be suppressed. Ripd does not currently support equal cost
multipath routing.
.. _RIP_Configuration:
RIP Configuration
=================
.. index:: Command {router rip} {}
.. index:: router rip
.. clicmd:: router rip
Command {router rip} {}
The `router rip` command is necessary to enable RIP. To disable
RIP, use the `no router rip` command. RIP must be enabled before
carrying out any of the RIP commands.
The `router rip` command is necessary to enable RIP. To disable RIP, use the
`no router rip` command. RIP must be enabled before carrying out any of the
RIP commands.
.. index:: Command {no router rip} {}
.. index:: no router rip
.. clicmd:: no router rip
Command {no router rip} {}
Disable RIP.
.. index:: {RIP Command} {network `network`} {}
.. index:: network NETWORK
.. clicmd:: network NETWORK
{RIP Command} {network `network`} {}
.. index:: {RIP Command} {no network `network`} {}
.. index:: no network NETWORK
.. clicmd:: no network NETWORK
{RIP Command} {no network `network`} {}
Set the RIP enable interface by `network`. The interfaces which
have addresses matching with `network` are enabled.
Set the RIP enable interface by NETWORK. The interfaces which have addresses
matching with NETWORK are enabled.
This group of commands either enables or disables RIP interfaces between
certain numbers of a specified network address. For example, if the
network for 10.0.0.0/24 is RIP enabled, this would result in all the
addresses from 10.0.0.0 to 10.0.0.255 being enabled for RIP. The `no network` command will disable RIP for the specified network.
certain numbers of a specified network address. For example, if the network
for 10.0.0.0/24 is RIP enabled, this would result in all the addresses from
10.0.0.0 to 10.0.0.255 being enabled for RIP. The `no network` command will
disable RIP for the specified network.
.. index:: {RIP Command} {network `ifname`} {}
.. index:: network IFNAME
.. clicmd:: network IFNAME
{RIP Command} {network `ifname`} {}
.. index:: {RIP Command} {no network `ifname`} {}
.. index:: no network IFNAME
.. clicmd:: no network IFNAME
{RIP Command} {no network `ifname`} {}
Set a RIP enabled interface by `ifname`. Both the sending and
Set a RIP enabled interface by IFNAME. Both the sending and
receiving of RIP packets will be enabled on the port specified in the
`network ifname` command. The `no network ifname` command will disable
RIP on the specified interface.
.. index:: {RIP Command} {neighbor `a.b.c.d`} {}
.. index:: neighbor A.B.C.D
.. clicmd:: neighbor A.B.C.D
{RIP Command} {neighbor `a.b.c.d`} {}
.. index:: {RIP Command} {no neighbor `a.b.c.d`} {}
.. index:: no neighbor A.B.C.D
.. clicmd:: no neighbor A.B.C.D
{RIP Command} {no neighbor `a.b.c.d`} {}
Specify RIP neighbor. When a neighbor doesn't understand multicast,
this command is used to specify neighbors. In some cases, not all
routers will be able to understand multicasting, where packets are sent
to a network or a group of addresses. In a situation where a neighbor
cannot process multicast packets, it is necessary to establish a direct
link between routers. The neighbor command allows the network
administrator to specify a router as a RIP neighbor. The `no neighbor a.b.c.d` command will disable the RIP neighbor.
Specify RIP neighbor. When a neighbor doesn't understand multicast, this
command is used to specify neighbors. In some cases, not all routers will be
able to understand multicasting, where packets are sent to a network or a
group of addresses. In a situation where a neighbor cannot process multicast
packets, it is necessary to establish a direct link between routers. The
neighbor command allows the network administrator to specify a router as a
RIP neighbor. The `no neighbor a.b.c.d` command will disable the RIP
neighbor.
Below is very simple RIP configuration. Interface `eth0` and
interface which address match to `10.0.0.0/8` are RIP enabled.
Below is very simple RIP configuration. Interface `eth0` and interface which
address match to `10.0.0.0/8` are RIP enabled.
::
@ -155,89 +156,83 @@ Command {no router rip} {}
!
Passive interface
.. index:: passive-interface (IFNAME|default)
.. clicmd:: passive-interface (IFNAME|default)
.. index:: {RIP command} {passive-interface (`IFNAME`|default)} {}
.. index:: no passive-interface IFNAME
.. clicmd:: no passive-interface IFNAME
{RIP command} {passive-interface (`IFNAME`|default)} {}
.. index:: {RIP command} {no passive-interface `IFNAME`} {}
{RIP command} {no passive-interface `IFNAME`} {}
This command sets the specified interface to passive mode. On passive mode
interface, all receiving packets are processed as normal and ripd does
not send either multicast or unicast RIP packets except to RIP neighbors
specified with `neighbor` command. The interface may be specified
as `default` to make ripd default to passive on all interfaces.
interface, all receiving packets are processed as normal and ripd does not
send either multicast or unicast RIP packets except to RIP neighbors
specified with `neighbor` command. The interface may be specified as
`default` to make ripd default to passive on all interfaces.
The default is to be passive on all interfaces.
RIP split-horizon
.. index:: ip split-horizon
.. clicmd:: ip split-horizon
.. index:: {Interface command} {ip split-horizon} {}
.. index:: no ip split-horizon
.. clicmd:: no ip split-horizon
{Interface command} {ip split-horizon} {}
.. index:: {Interface command} {no ip split-horizon} {}
{Interface command} {no ip split-horizon} {}
Control split-horizon on the interface. Default is `ip split-horizon`. If you don't perform split-horizon on the interface,
please specify `no ip split-horizon`.
Control split-horizon on the interface. Default is `ip split-horizon`. If
you don't perform split-horizon on the interface, please specify `no ip
split-horizon`.
.. _RIP_Version_Control:
RIP Version Control
===================
RIP can be configured to send either Version 1 or Version 2 packets.
The default is to send RIPv2 while accepting both RIPv1 and RIPv2 (and
replying with packets of the appropriate version for REQUESTS /
triggered updates). The version to receive and send can be specified
globally, and further overriden on a per-interface basis if needs be
for send and receive seperately (see below).
RIP can be configured to send either Version 1 or Version 2 packets. The
default is to send RIPv2 while accepting both RIPv1 and RIPv2 (and replying
with packets of the appropriate version for REQUESTS / triggered updates). The
version to receive and send can be specified globally, and further overriden on
a per-interface basis if needs be for send and receive seperately (see below).
It is important to note that RIPv1 can not be authenticated. Further,
if RIPv1 is enabled then RIP will reply to REQUEST packets, sending the
state of its RIP routing table to any remote routers that ask on
demand. For a more detailed discussion on the security implications of
RIPv1 see :ref:`RIP_Authentication`.
It is important to note that RIPv1 cannot be authenticated. Further, if RIPv1
is enabled then RIP will reply to REQUEST packets, sending the state of its RIP
routing table to any remote routers that ask on demand. For a more detailed
discussion on the security implications of RIPv1 see :ref:`RIP_Authentication`.
.. index:: {RIP Command} {version `version`} {}
.. index:: version VERSION
.. clicmd:: version VERSION
{RIP Command} {version `version`} {}
Set RIP version to accept for reads and send. `version`
can be either `1'' or `2''.
Set RIP version to accept for reads and send. ``VERSION`` can be either 1 or
1.
Disabling RIPv1 by specifying version 2 is STRONGLY encouraged,
:ref:`RIP_Authentication`. This may become the default in a future
release.
:ref:`RIP_Authentication`. This may become the default in a future release.
Default: Send Version 2, and accept either version.
.. index:: {RIP Command} {no version} {}
.. index:: no version
.. clicmd:: no version
{RIP Command} {no version} {}
Reset the global version setting back to the default.
.. index:: {Interface command} {ip rip send version `version`} {}
.. index:: ip rip send version VERSION
.. clicmd:: ip rip send version VERSION
{Interface command} {ip rip send version `version`} {}
`version` can be `1', `2' or `1 2'.
VERSION can be ``1``, ``2``, or ``1 2``.
This interface command overrides the global rip version setting, and
selects which version of RIP to send packets with, for this interface
specifically. Choice of RIP Version 1, RIP Version 2, or both versions.
In the latter case, where `1 2' is specified, packets will be both
broadcast and multicast.
This interface command overrides the global rip version setting, and selects
which version of RIP to send packets with, for this interface specifically.
Choice of RIP Version 1, RIP Version 2, or both versions. In the latter
case, where ``1 2`` is specified, packets will be both broadcast and
multicast.
Default: Send packets according to the global version (version 2)
.. index:: {Interface command} {ip rip receive version `version`} {}
.. index:: ip rip receive version VERSION
.. clicmd:: ip rip receive version VERSION
{Interface command} {ip rip receive version `version`} {}
`version` can be `1', `2' or `1 2'.
VERSION can be ``1``, ``2``, or ``1 2``.
This interface command overrides the global rip version setting, and
selects which versions of RIP packets will be accepted on this
interface. Choice of RIP Version 1, RIP Version 2, or both.
This interface command overrides the global rip version setting, and selects
which versions of RIP packets will be accepted on this interface. Choice of
RIP Version 1, RIP Version 2, or both.
Default: Accept packets according to the global setting (both 1 and 2).
@ -246,102 +241,99 @@ RIPv1 see :ref:`RIP_Authentication`.
How to Announce RIP route
=========================
.. index:: {RIP command} {redistribute kernel} {}
.. index:: redistribute kernel
.. clicmd:: redistribute kernel
{RIP command} {redistribute kernel} {}
.. index:: {RIP command} {redistribute kernel metric (0-16)} {}
.. index:: redistribute kernel metric (0-16)
.. clicmd:: redistribute kernel metric (0-16)
{RIP command} {redistribute kernel metric (0-16)} {}
.. index:: {RIP command} {redistribute kernel route-map `route-map`} {}
.. index:: redistribute kernel route-map ROUTE-MAP
.. clicmd:: redistribute kernel route-map ROUTE-MAP
{RIP command} {redistribute kernel route-map `route-map`} {}
.. index:: {RIP command} {no redistribute kernel} {}
.. index:: no redistribute kernel
.. clicmd:: no redistribute kernel
{RIP command} {no redistribute kernel} {}
`redistribute kernel` redistributes routing information from
kernel route entries into the RIP tables. `no redistribute kernel`
disables the routes.
`redistribute kernel` redistributes routing information from kernel route
entries into the RIP tables. `no redistribute kernel` disables the routes.
.. index:: {RIP command} {redistribute static} {}
.. index:: redistribute static
.. clicmd:: redistribute static
{RIP command} {redistribute static} {}
.. index:: {RIP command} {redistribute static metric (0-16)} {}
.. index:: redistribute static metric (0-16)
.. clicmd:: redistribute static metric (0-16)
{RIP command} {redistribute static metric (0-16)} {}
.. index:: {RIP command} {redistribute static route-map `route-map`} {}
.. index:: redistribute static route-map ROUTE-MAP
.. clicmd:: redistribute static route-map ROUTE-MAP
{RIP command} {redistribute static route-map `route-map`} {}
.. index:: {RIP command} {no redistribute static} {}
.. index:: no redistribute static
.. clicmd:: no redistribute static
{RIP command} {no redistribute static} {}
`redistribute static` redistributes routing information from
static route entries into the RIP tables. `no redistribute static`
disables the routes.
`redistribute static` redistributes routing information from static route
entries into the RIP tables. `no redistribute static` disables the routes.
.. index:: {RIP command} {redistribute connected} {}
.. index:: redistribute connected
.. clicmd:: redistribute connected
{RIP command} {redistribute connected} {}
.. index:: {RIP command} {redistribute connected metric (0-16)} {}
.. index:: redistribute connected metric (0-16)
.. clicmd:: redistribute connected metric (0-16)
{RIP command} {redistribute connected metric (0-16)} {}
.. index:: {RIP command} {redistribute connected route-map `route-map`} {}
.. index:: redistribute connected route-map ROUTE-MAP
.. clicmd:: redistribute connected route-map ROUTE-MAP
{RIP command} {redistribute connected route-map `route-map`} {}
.. index:: {RIP command} {no redistribute connected} {}
.. index:: no redistribute connected
.. clicmd:: no redistribute connected
{RIP command} {no redistribute connected} {}
Redistribute connected routes into the RIP tables. `no redistribute connected` disables the connected routes in the RIP tables.
This command redistribute connected of the interface which RIP disabled.
The connected route on RIP enabled interface is announced by default.
Redistribute connected routes into the RIP tables. `no redistribute
connected` disables the connected routes in the RIP tables. This command
redistribute connected of the interface which RIP disabled. The connected
route on RIP enabled interface is announced by default.
.. index:: {RIP command} {redistribute ospf} {}
.. index:: redistribute ospf
.. clicmd:: redistribute ospf
{RIP command} {redistribute ospf} {}
.. index:: {RIP command} {redistribute ospf metric (0-16)} {}
.. index:: redistribute ospf metric (0-16)
.. clicmd:: redistribute ospf metric (0-16)
{RIP command} {redistribute ospf metric (0-16)} {}
.. index:: {RIP command} {redistribute ospf route-map `route-map`} {}
.. index:: redistribute ospf route-map ROUTE-MAP
.. clicmd:: redistribute ospf route-map ROUTE-MAP
{RIP command} {redistribute ospf route-map `route-map`} {}
.. index:: {RIP command} {no redistribute ospf} {}
.. index:: no redistribute ospf
.. clicmd:: no redistribute ospf
{RIP command} {no redistribute ospf} {}
`redistribute ospf` redistributes routing information from
ospf route entries into the RIP tables. `no redistribute ospf`
disables the routes.
`redistribute ospf` redistributes routing information from ospf route
entries into the RIP tables. `no redistribute ospf` disables the routes.
.. index:: {RIP command} {redistribute bgp} {}
.. index:: redistribute bgp
.. clicmd:: redistribute bgp
{RIP command} {redistribute bgp} {}
.. index:: {RIP command} {redistribute bgp metric (0-16)} {}
.. index:: redistribute bgp metric (0-16)
.. clicmd:: redistribute bgp metric (0-16)
{RIP command} {redistribute bgp metric (0-16)} {}
.. index:: {RIP command} {redistribute bgp route-map `route-map`} {}
.. index:: redistribute bgp route-map ROUTE-MAP
.. clicmd:: redistribute bgp route-map ROUTE-MAP
{RIP command} {redistribute bgp route-map `route-map`} {}
.. index:: {RIP command} {no redistribute bgp} {}
.. index:: no redistribute bgp
.. clicmd:: no redistribute bgp
{RIP command} {no redistribute bgp} {}
`redistribute bgp` redistributes routing information from
bgp route entries into the RIP tables. `no redistribute bgp`
disables the routes.
`redistribute bgp` redistributes routing information from bgp route entries
into the RIP tables. `no redistribute bgp` disables the routes.
If you want to specify RIP only static routes:
.. index:: {RIP command} {default-information originate} {}
.. index:: default-information originate
.. clicmd:: default-information originate
{RIP command} {default-information originate} {}
.. index:: {RIP command} {route `a.b.c.d/m`} {}
.. index:: route A.B.C.D/M
.. clicmd:: route A.B.C.D/M
{RIP command} {route `a.b.c.d/m`} {}
.. index:: {RIP command} {no route `a.b.c.d/m`} {}
.. index:: no route A.B.C.D/M
.. clicmd:: no route A.B.C.D/M
{RIP command} {no route `a.b.c.d/m`} {}
This command is specific to FRR. The `route` command makes a static
route only inside RIP. This command should be used only by advanced
users who are particularly knowledgeable about the RIP protocol. In
most cases, we recommend creating a static route in FRR and
redistributing it in RIP using `redistribute static`.
This command is specific to FRR. The `route` command makes a static route
only inside RIP. This command should be used only by advanced users who are
particularly knowledgeable about the RIP protocol. In most cases, we
recommend creating a static route in FRR and redistributing it in RIP using
`redistribute static`.
.. _Filtering_RIP_Routes:
@ -350,20 +342,18 @@ Filtering RIP Routes
RIP routes can be filtered by a distribute-list.
.. index:: Command {distribute-list `access_list` `direct` `ifname`} {}
.. index:: distribute-list ACCESS_LIST DIRECT IFNAME
.. clicmd:: distribute-list ACCESS_LIST DIRECT IFNAME
Command {distribute-list `access_list` `direct` `ifname`} {}
You can apply access lists to the interface with a `distribute-list`
command. `access_list` is the access list name. `direct` is
``in`` or ``out``. If `direct` is ``in`` the access list
is applied to input packets.
You can apply access lists to the interface with a `distribute-list` command.
ACCESS_LIST is the access list name. DIRECT is ``in`` or ``out``. If DIRECT
is ``in`` the access list is applied to input packets.
The `distribute-list` command can be used to filter the RIP path.
`distribute-list` can apply access-lists to a chosen interface.
First, one should specify the access-list. Next, the name of the
access-list is used in the distribute-list command. For example, in the
following configuration ``eth0`` will permit only the paths that
match the route 10.0.0.0/8
`distribute-list` can apply access-lists to a chosen interface. First, one
should specify the access-list. Next, the name of the access-list is used in
the distribute-list command. For example, in the following configuration
``eth0`` will permit only the paths that match the route 10.0.0.0/8
::
@ -378,13 +368,13 @@ Command {distribute-list `access_list` `direct` `ifname`} {}
`distribute-list` can be applied to both incoming and outgoing data.
.. index:: Command {distribute-list prefix `prefix_list` (in|out) `ifname`} {}
.. index:: distribute-list prefix PREFIX_LIST (in|out) IFNAME
.. clicmd:: distribute-list prefix PREFIX_LIST (in|out) IFNAME
Command {distribute-list prefix `prefix_list` (in|out) `ifname`} {}
You can apply prefix lists to the interface with a
`distribute-list` command. `prefix_list` is the prefix list
name. Next is the direction of ``in`` or ``out``. If
`direct` is ``in`` the access list is applied to input packets.
You can apply prefix lists to the interface with a `distribute-list`
command. PREFIX_LIST is the prefix list name. Next is the direction of
``in`` or ``out``. If DIRECT is ``in`` the access list is applied to input
packets.
.. _RIP_Metric_Manipulation:
@ -395,25 +385,24 @@ RIP metric is a value for distance for the network. Usually
*ripd* increment the metric when the network information is
received. Redistributed routes' metric is set to 1.
.. index:: {RIP command} {default-metric (1-16)} {}
.. index:: default-metric (1-16)
.. clicmd:: default-metric (1-16)
{RIP command} {default-metric (1-16)} {}
.. index:: {RIP command} {no default-metric (1-16)} {}
.. index:: no default-metric (1-16)
.. clicmd:: no default-metric (1-16)
{RIP command} {no default-metric (1-16)} {}
This command modifies the default metric value for redistributed routes. The
default value is 1. This command does not affect connected route
even if it is redistributed by *redistribute connected*. To modify
connected route's metric value, please use @command{redistribute
connected metric} or *route-map*. *offset-list* also
affects connected routes.
This command modifies the default metric value for redistributed routes.
The default value is 1. This command does not affect connected route even if
it is redistributed by *redistribute connected*. To modify connected route's
metric value, please use ``redistribute connected metric`` or *route-map*.
*offset-list* also affects connected routes.
.. index:: {RIP command} {offset-list `access-list` (in|out)} {}
.. index:: offset-list ACCESS-LIST (in|out)
.. clicmd:: offset-list ACCESS-LIST (in|out)
{RIP command} {offset-list `access-list` (in|out)} {}
.. index:: {RIP command} {offset-list `access-list` (in|out) `ifname`} {}
.. index:: offset-list ACCESS-LIST (in|out) IFNAME
.. clicmd:: offset-list ACCESS-LIST (in|out) IFNAME
{RIP command} {offset-list `access-list` (in|out) `ifname`} {}
.. _RIP_distance:
@ -422,29 +411,29 @@ RIP distance
Distance value is used in zebra daemon. Default RIP distance is 120.
.. index:: {RIP command} {distance (1-255)} {}
.. index:: distance (1-255)
.. clicmd:: distance (1-255)
{RIP command} {distance (1-255)} {}
.. index:: {RIP command} {no distance (1-255)} {}
.. index:: no distance (1-255)
.. clicmd:: no distance (1-255)
{RIP command} {no distance (1-255)} {}
Set default RIP distance to specified value.
.. index:: {RIP command} {distance (1-255) `A.B.C.D/M`} {}
.. index:: distance (1-255) A.B.C.D/M
.. clicmd:: distance (1-255) A.B.C.D/M
{RIP command} {distance (1-255) `A.B.C.D/M`} {}
.. index:: {RIP command} {no distance (1-255) `A.B.C.D/M`} {}
.. index:: no distance (1-255) A.B.C.D/M
.. clicmd:: no distance (1-255) A.B.C.D/M
{RIP command} {no distance (1-255) `A.B.C.D/M`} {}
Set default RIP distance to specified value when the route's source IP
address matches the specified prefix.
.. index:: {RIP command} {distance (1-255) `A.B.C.D/M` `access-list`} {}
.. index:: distance (1-255) A.B.C.D/M ACCESS-LIST
.. clicmd:: distance (1-255) A.B.C.D/M ACCESS-LIST
{RIP command} {distance (1-255) `A.B.C.D/M` `access-list`} {}
.. index:: {RIP command} {no distance (1-255) `A.B.C.D/M` `access-list`} {}
.. index:: no distance (1-255) A.B.C.D/M ACCESS-LIST
.. clicmd:: no distance (1-255) A.B.C.D/M ACCESS-LIST
{RIP command} {no distance (1-255) `A.B.C.D/M` `access-list`} {}
Set default RIP distance to specified value when the route's source IP
address matches the specified prefix and the specified access-list.
@ -465,64 +454,63 @@ statement.
.....
Cisco applies route-map _before_ routes will exported to rip route table.
In current FRR's test implementation, *ripd* applies route-map
after routes are listed in the route table and before routes will be
announced to an interface (something like output filter). I think it is not
so clear, but it is draft and it may be changed at future.
Cisco applies route-map _before_ routes will exported to rip route table. In
current FRR's test implementation, *ripd* applies route-map after routes are
listed in the route table and before routes will be announced to an interface
(something like output filter). I think it is not so clear, but it is draft and
it may be changed at future.
Route-map statement (:ref:`Route_Map`) is needed to use route-map
functionality.
.. index:: {Route Map} {match interface `word`} {}
.. index:: match interface WORD
.. clicmd:: match interface WORD
{Route Map} {match interface `word`} {}
This command match to incoming interface. Notation of this match is
different from Cisco. Cisco uses a list of interfaces - NAME1 NAME2
... NAMEN. Ripd allows only one name (maybe will change in the
future). Next - Cisco means interface which includes next-hop of
routes (it is somewhat similar to "ip next-hop" statement). Ripd
means interface where this route will be sent. This difference is
because "next-hop" of same routes which sends to different interfaces
must be different. Maybe it'd be better to made new matches - say
"match interface-out NAME" or something like that.
different from Cisco. Cisco uses a list of interfaces - NAME1 NAME2 ...
NAMEN. Ripd allows only one name (maybe will change in the future). Next -
Cisco means interface which includes next-hop of routes (it is somewhat
similar to "ip next-hop" statement). Ripd means interface where this route
will be sent. This difference is because "next-hop" of same routes which
sends to different interfaces must be different. Maybe it'd be better to
made new matches - say "match interface-out NAME" or something like that.
.. index:: {Route Map} {match ip address `word`} {}
.. index:: match ip address WORD
.. clicmd:: match ip address WORD
{Route Map} {match ip address `word`} {}
.. index:: {Route Map} {match ip address prefix-list `word`} {}
.. index:: match ip address prefix-list WORD
.. clicmd:: match ip address prefix-list WORD
{Route Map} {match ip address prefix-list `word`} {}
Match if route destination is permitted by access-list.
.. index:: {Route Map} {match ip next-hop `word`} {}
.. index:: match ip next-hop WORD
.. clicmd:: match ip next-hop WORD
{Route Map} {match ip next-hop `word`} {}
.. index:: {Route Map} {match ip next-hop prefix-list `word`} {}
.. index:: match ip next-hop prefix-list WORD
.. clicmd:: match ip next-hop prefix-list WORD
{Route Map} {match ip next-hop prefix-list `word`} {}
Match if route next-hop (meaning next-hop listed in the rip route-table
as displayed by "show ip rip") is permitted by access-list.
Match if route next-hop (meaning next-hop listed in the rip route-table as
displayed by "show ip rip") is permitted by access-list.
.. index:: {Route Map} {match metric (0-4294967295)} {}
.. index:: match metric (0-4294967295)
.. clicmd:: match metric (0-4294967295)
{Route Map} {match metric (0-4294967295)} {}
This command match to the metric value of RIP updates. For other
protocol compatibility metric range is shown as (0-4294967295). But
for RIP protocol only the value range (0-16) make sense.
This command match to the metric value of RIP updates. For other protocol
compatibility metric range is shown as (0-4294967295). But for RIP protocol
only the value range (0-16) make sense.
.. index:: {Route Map} {set ip next-hop A.B.C.D} {}
.. index:: set ip next-hop A.B.C.D
.. clicmd:: set ip next-hop A.B.C.D
{Route Map} {set ip next-hop A.B.C.D} {}
This command set next hop value in RIPv2 protocol. This command does
not affect RIPv1 because there is no next hop field in the packet.
This command set next hop value in RIPv2 protocol. This command does not
affect RIPv1 because there is no next hop field in the packet.
.. index:: {Route Map} {set metric (0-4294967295)} {}
.. index:: set metric (0-4294967295)
.. clicmd:: set metric (0-4294967295)
{Route Map} {set metric (0-4294967295)} {}
Set a metric for matched route when sending announcement. The metric
value range is very large for compatibility with other protocols. For
RIP, valid metric values are from 1 to 16.
Set a metric for matched route when sending announcement. The metric value
range is very large for compatibility with other protocols. For RIP, valid
metric values are from 1 to 16.
.. _RIP_Authentication:
@ -552,37 +540,37 @@ on the internet, via RIPv1.
To prevent such unauthenticated querying of routes disable RIPv1,
:ref:`RIP_Version_Control`.
.. index:: {Interface command} {ip rip authentication mode md5} {}
.. index:: ip rip authentication mode md5
.. clicmd:: ip rip authentication mode md5
{Interface command} {ip rip authentication mode md5} {}
.. index:: {Interface command} {no ip rip authentication mode md5} {}
.. index:: no ip rip authentication mode md5
.. clicmd:: no ip rip authentication mode md5
{Interface command} {no ip rip authentication mode md5} {}
Set the interface with RIPv2 MD5 authentication.
.. index:: {Interface command} {ip rip authentication mode text} {}
.. index:: ip rip authentication mode text
.. clicmd:: ip rip authentication mode text
{Interface command} {ip rip authentication mode text} {}
.. index:: {Interface command} {no ip rip authentication mode text} {}
.. index:: no ip rip authentication mode text
.. clicmd:: no ip rip authentication mode text
{Interface command} {no ip rip authentication mode text} {}
Set the interface with RIPv2 simple password authentication.
.. index:: {Interface command} {ip rip authentication string `string`} {}
.. index:: ip rip authentication string STRING
.. clicmd:: ip rip authentication string STRING
{Interface command} {ip rip authentication string `string`} {}
.. index:: {Interface command} {no ip rip authentication string `string`} {}
.. index:: no ip rip authentication string STRING
.. clicmd:: no ip rip authentication string STRING
{Interface command} {no ip rip authentication string `string`} {}
RIP version 2 has simple text authentication. This command sets
authentication string. The string must be shorter than 16 characters.
.. index:: {Interface command} {ip rip authentication key-chain `key-chain`} {}
.. index:: ip rip authentication key-chain KEY-CHAIN
.. clicmd:: ip rip authentication key-chain KEY-CHAIN
{Interface command} {ip rip authentication key-chain `key-chain`} {}
.. index:: {Interface command} {no ip rip authentication key-chain `key-chain`} {}
.. index:: no ip rip authentication key-chain KEY-CHAIN
.. clicmd:: no ip rip authentication key-chain KEY-CHAIN
{Interface command} {no ip rip authentication key-chain `key-chain`} {}
Specifiy Keyed MD5 chain.
::
@ -603,43 +591,34 @@ To prevent such unauthenticated querying of routes disable RIPv1,
RIP Timers
==========
.. index:: {RIP command} {timers basic `update` `timeout` `garbage`} {}
.. index:: timers basic UPDATE TIMEOUT GARBAGE
.. clicmd:: timers basic UPDATE TIMEOUT GARBAGE
{RIP command} {timers basic `update` `timeout` `garbage`} {}
RIP protocol has several timers. User can configure those timers' values
by `timers basic` command.
The default settings for the timers are as follows:
``
The update timer is 30 seconds. Every update timer seconds, the RIP
- The update timer is 30 seconds. Every update timer seconds, the RIP
process is awakened to send an unsolicited Response message containing
the complete routing table to all neighboring RIP routers.
``
The timeout timer is 180 seconds. Upon expiration of the timeout, the
- The timeout timer is 180 seconds. Upon expiration of the timeout, the
route is no longer valid; however, it is retained in the routing table
for a short time so that neighbors can be notified that the route has
been dropped.
``
The garbage collect timer is 120 seconds. Upon expiration of the
- The garbage collect timer is 120 seconds. Upon expiration of the
garbage-collection timer, the route is finally removed from the routing
table.
The `timers basic` command allows the the default values of the timers
The ``timers basic`` command allows the the default values of the timers
listed above to be changed.
.. index:: {RIP command} {no timers basic} {}
.. index:: no timers basic
.. clicmd:: no timers basic
{RIP command} {no timers basic} {}
The `no timers basic` command will reset the timers to the default
settings listed above.
The `no timers basic` command will reset the timers to the default settings
listed above.
.. _Show_RIP_Information:
@ -648,9 +627,9 @@ Show RIP Information
To display RIP routes.
.. index:: Command {show ip rip} {}
.. index:: show ip rip
.. clicmd:: show ip rip
Command {show ip rip} {}
Show RIP routes.
The command displays all RIP routes. For routes that are received
@ -658,9 +637,9 @@ through RIP, this command will display the time the packet was sent and
the tag information. This command will also display this information
for routes redistributed into RIP.
.. index:: Command {show ip rip status} {}
.. index:: show ip rip status
.. clicmd:: show ip rip status
Command {show ip rip status} {}
The command displays current RIP status. It includes RIP timer,
filtering, version, RIP enabled interface and RIP peer inforation.
@ -690,37 +669,27 @@ RIP Debug Commands
Debug for RIP protocol.
.. index:: Command {debug rip events} {}
.. index:: debug rip events
.. clicmd:: debug rip events
Command {debug rip events} {}
Debug rip events.
Shows RIP events. Sending and receiving packets, timers, and changes in
interfaces are events shown with *ripd*.
`debug rip` will show RIP events. Sending and receiving
packets, timers, and changes in interfaces are events shown with *ripd*.
.. index:: debug rip packet
.. clicmd:: debug rip packet
.. index:: Command {debug rip packet} {}
Shows display detailed information about the RIP packets. The origin and
port number of the packet as well as a packet dump is shown.
Command {debug rip packet} {}
Debug rip packet.
.. index:: debug rip zebra
.. clicmd:: debug rip zebra
`debug rip packet` will display detailed information about the RIP
packets. The origin and port number of the packet as well as a packet
dump is shown.
This command will show the communication between *ripd* and *zebra*. The
main information will include addition and deletion of paths to the kernel
and the sending and receiving of interface information.
.. index:: Command {debug rip zebra} {}
.. index:: show debugging rip
.. clicmd:: show debugging rip
Command {debug rip zebra} {}
Debug rip between zebra communication.
This command will show the communication between *ripd* and
*zebra*. The main information will include addition and deletion of
paths to the kernel and the sending and receiving of interface information.
.. index:: Command {show debugging rip} {}
Command {show debugging rip} {}
Display *ripd*'s debugging option.
`show debugging rip` will show all information currently set for ripd
debug.
Shows all information currently set for ripd debug.

View File

@ -4,16 +4,16 @@
RIPng
*****
*ripngd* supports the RIPng protocol as described in RFC2080. It's an
IPv6 reincarnation of the RIP protocol.
*ripngd* supports the RIPng protocol as described in :rfc:`2080`. It's an IPv6
reincarnation of the RIP protocol.
.. _Invoking_ripngd:
Invoking ripngd
===============
There are no `ripngd` specific invocation options. Common options
can be specified (:ref:`Common_Invocation_Options`).
There are no `ripngd` specific invocation options. Common options can be
specified (:ref:`Common_Invocation_Options`).
.. _ripngd_Configuration:
@ -22,72 +22,68 @@ ripngd Configuration
Currently ripngd supports the following commands:
.. index:: Command {router ripng} {}
.. index:: router ripng
.. clicmd:: router ripng
Command {router ripng} {}
Enable RIPng.
.. index:: {RIPng Command} {flush_timer `time`} {}
.. index:: flush_timer TIME
.. clicmd:: flush_timer TIME
{RIPng Command} {flush_timer `time`} {}
Set flush timer.
.. index:: {RIPng Command} {network `network`} {}
.. index:: network NETWORK
.. clicmd:: network NETWORK
{RIPng Command} {network `network`} {}
Set RIPng enabled interface by `network`
Set RIPng enabled interface by NETWORK.
.. index:: {RIPng Command} {network `ifname`} {}
.. index:: network IFNAME
.. clicmd:: network IFNAME
{RIPng Command} {network `ifname`} {}
Set RIPng enabled interface by `ifname`
Set RIPng enabled interface by IFNAME.
.. index:: {RIPng Command} {route `network`} {}
.. index:: route NETWORK
.. clicmd:: route NETWORK
{RIPng Command} {route `network`} {}
Set RIPng static routing announcement of `network`.
Set RIPng static routing announcement of NETWORK.
.. index:: Command {router zebra} {}
.. index:: router zebra
.. clicmd:: router zebra
Command {router zebra} {}
This command is the default and does not appear in the configuration.
With this statement, RIPng routes go to the *zebra* daemon.
This command is the default and does not appear in the configuration. With
this statement, RIPng routes go to the *zebra* daemon.
.. _ripngd_Terminal_Mode_Commands:
ripngd Terminal Mode Commands
=============================
.. index:: Command {show ip ripng} {}
.. index:: show ip ripng
.. clicmd:: show ip ripng
Command {show ip ripng} {}
.. index:: show debugging ripng
.. clicmd:: show debugging ripng
.. index:: Command {show debugging ripng} {}
.. index:: debug ripng events
.. clicmd:: debug ripng events
Command {show debugging ripng} {}
.. index:: Command {debug ripng events} {}
.. index:: debug ripng packet
.. clicmd:: debug ripng packet
Command {debug ripng events} {}
.. index:: Command {debug ripng packet} {}
.. index:: debug ripng zebra
.. clicmd:: debug ripng zebra
Command {debug ripng packet} {}
.. index:: Command {debug ripng zebra} {}
Command {debug ripng zebra} {}
ripngd Filtering Commands
=========================
.. index:: Command {distribute-list `access_list` (in|out) `ifname`} {}
.. index:: distribute-list ACCESS_LIST (in|out) IFNAME
.. clicmd:: distribute-list ACCESS_LIST (in|out) IFNAME
Command {distribute-list `access_list` (in|out) `ifname`} {}
You can apply an access-list to the interface using the
`distribute-list` command. `access_list` is an access-list
name. `direct` is ``in`` or ``out``. If `direct` is
``in``, the access-list is applied only to incoming packets.
::
You can apply an access-list to the interface using the `distribute-list`
command. ACCESS_LIST is an access-list name. `direct` is ``in`` or
``out``. If `direct` is ``in``, the access-list is applied only to incoming
packets.::
distribute-list local-only out sit1

View File

@ -269,6 +269,6 @@ A simple example of a route-map:
This means that if a route matches ip access-list number 10 it's
local-preference value is set to 200.
See :ref:`BGP_Configuration_Examples` for examples of more sophisticated
See :ref:`bgp-configuration-examples` for examples of more sophisticated
useage of route-maps, including of the ``call`` action.

View File

@ -3,33 +3,26 @@
Prefix Origin Validation Using RPKI
===================================
Prefix Origin Validation allows BGP routers to verify if the origin AS of
an IP prefix is legitimate to announce this IP prefix. The required
attestation objects are stored in the Resource Public Key Infrastructure
(:abbr:`RPKI`). However, RPKI-enabled routers do not store cryptographic
data itself but only validation information. The validation of the
cryptographic data (so called Route Origin Authorization, or short
:abbr:`ROA`, objects) will be performed by trusted cache servers. The
RPKI/RTR protocol defines a standard mechanism to maintain the exchange of
the prefix/origin AS mapping between the cache server and routers.
In combination with a BGP Prefix Origin Validation scheme a router is able
to verify received BGP updates without suffering from cryptographic
complexity.
Prefix Origin Validation allows BGP routers to verify if the origin AS of an IP
prefix is legitimate to announce this IP prefix. The required attestation
objects are stored in the Resource Public Key Infrastructure (:abbr:`RPKI`).
However, RPKI-enabled routers do not store cryptographic data itself but only
validation information. The validation of the cryptographic data (so called
Route Origin Authorization, or short :abbr:`ROA`, objects) will be performed by
trusted cache servers. The RPKI/RTR protocol defines a standard mechanism to
maintain the exchange of the prefix/origin AS mapping between the cache server
and routers. In combination with a BGP Prefix Origin Validation scheme a
router is able to verify received BGP updates without suffering from
cryptographic complexity.
The RPKI/RTR protocol is defined in :rfc:`6810` and the validation scheme in
:rfc:`6811`. The current version of Prefix Origin Validation in FRR implements
both RFCs.
For a more detailed but still easy-to-read background, we suggest the
following two articles:
For a more detailed but still easy-to-read background, we suggest:
* @cite{Geoff Huston, Randy Bush: Securing BGP, In: The Internet
Protocol Journal, Volume 14, No. 2, 2011.}
`http://www.cisco.com/web/about/ac123/ac147/archived_issues/ipj_14-2/142_bgp.html <http://www.cisco.com/web/about/ac123/ac147/archived_issues/ipj_14-2/142_bgp.html>`_
* @cite{Geoff Huston: Resource Certification, In: The Internet Protocol
Journal, Volume 12, No.1, 2009.}
`http://www.cisco.com/web/about/ac123/ac147/archived_issues/ipj_12-1/121_resource.html <http://www.cisco.com/web/about/ac123/ac147/archived_issues/ipj_12-1/121_resource.html>`_
- [Securing-BGP]_
- [Resource-Certification]_
.. _Features_of_the_Current_Implementation:
@ -38,24 +31,19 @@ Features of the Current Implementation
In a nutshell, the current implementation provides the following features
* The BGP router can connect to one or more RPKI cache servers to
receive validated prefix to origin AS mappings.
Advanced failover can be implemented by server sockets with different
preference values.
* If no connection to an RPKI cache server can be established after a
- The BGP router can connect to one or more RPKI cache servers to receive
validated prefix to origin AS mappings. Advanced failover can be implemented
by server sockets with different preference values.
- If no connection to an RPKI cache server can be established after a
pre-defined timeout, the router will process routes without prefix origin
validation. It still will try to establish a connection to an RPKI cache
server in the background.
* By default, enabling RPKI does not change best path selection. In
particular, invalid prefixes will still be considered during best path
selection. However, the router can be configured to ignore all invalid
prefixes.
* Route maps can be configured to match a specific RPKI validation
state. This allows the creation of local policies, which handle BGP routes
based on the outcome of the Prefix Origin Validation.
- By default, enabling RPKI does not change best path selection. In particular,
invalid prefixes will still be considered during best path selection.
However, the router can be configured to ignore all invalid prefixes.
- Route maps can be configured to match a specific RPKI validation state. This
allows the creation of local policies, which handle BGP routes based on the
outcome of the Prefix Origin Validation.
.. _Enabling_RPKI:
@ -63,100 +51,95 @@ In a nutshell, the current implementation provides the following features
Enabling RPKI
-------------
.. index:: {Command} {rpki} {}
.. index:: rpki
.. clicmd:: rpki
{Command} {rpki} {}
This command enables the RPKI configuration mode. Most commands that start
with *rpki* can only be used in this mode.
When it is used in a telnet session, leaving of this mode cause rpki to be initialized.
Executing this command alone does not activate prefix
validation. You need to configure at least one reachable cache server. See section
:ref:`Configuring_RPKI/RTR_Cache_Servers` for configuring a cache server.
Executing this command alone does not activate prefix validation. You need
to configure at least one reachable cache server. See section
:ref:`configuring-rpki-rtr-cache-servers` for configuring a cache server.
.. _Configuring_RPKI/RTR_Cache_Servers:
.. _configuring-rpki-rtr-cache-servers:
Configuring RPKI/RTR Cache Servers
----------------------------------
The following commands are independent of a specific cache server.
.. index:: {RPKI Command} {rpki polling_period (1-3600)} {}
.. index:: rpki polling_period (1-3600)
.. clicmd:: rpki polling_period (1-3600)
{RPKI Command} {rpki polling_period (1-3600)} {}
.. index:: {RPKI Command} {no rpki polling_period} {}
.. index:: no rpki polling_period
.. clicmd:: no rpki polling_period
{RPKI Command} {no rpki polling_period} {}
Set the number of seconds the router waits until the router asks the cache again
for updated data.
Set the number of seconds the router waits until the router asks the cache
again for updated data.
The default value is 300 seconds.
.. index:: {RPKI Command} {rpki timeout <1-4,294,967,296>} {}
.. index:: rpki timeout <1-4,294,967,296>
.. clicmd:: rpki timeout <1-4,294,967,296>
{RPKI Command} {rpki timeout <1-4,294,967,296>} {}
.. index:: {RPKI Command} {no rpki timeout} {}
.. index:: no rpki timeout
.. clicmd:: no rpki timeout
{RPKI Command} {no rpki timeout} {}
Set the number of seconds the router waits for the cache reply. If the
cache server is not replying within this time period, the router deletes
all received prefix records from the prefix table.
Set the number of seconds the router waits for the cache reply. If the cache
server is not replying within this time period, the router deletes all
received prefix records from the prefix table.
The default value is 600 seconds.
.. index:: {RPKI Command} {rpki initial-synchronisation-timeout <1-4,294,967,296>} {}
.. index:: rpki initial-synchronisation-timeout <1-4,294,967,296>
.. clicmd:: rpki initial-synchronisation-timeout <1-4,294,967,296>
{RPKI Command} {rpki initial-synchronisation-timeout <1-4,294,967,296>} {}
.. index:: {RPKI Command} {no rpki initial-synchronisation-timeout} {}
.. index:: no rpki initial-synchronisation-timeout
.. clicmd:: no rpki initial-synchronisation-timeout
{RPKI Command} {no rpki initial-synchronisation-timeout} {}
Set the number of seconds until the first synchronization with the cache
server needs to be completed. If the timeout expires, BGP routing is
started without RPKI. The router will try to establish the cache server
connection in the background.
server needs to be completed. If the timeout expires, BGP routing is started
without RPKI. The router will try to establish the cache server connection in
the background.
The default value is 30 seconds.
The following commands configure one or multiple cache servers.
.. index:: {RPKI Socket Command} {rpki cache (`A.B.C.D`|`WORD`) `PORT` [`SSH_USERNAME`] [`SSH_PRIVKEY_PATH`] [`SSH_PUBKEY_PATH`] [`KNOWN_HOSTS_PATH`] `PREFERENCE`} {}
.. index:: rpki cache (A.B.C.D|WORD) PORT [SSH_USERNAME] [SSH_PRIVKEY_PATH] [SSH_PUBKEY_PATH] [KNOWN_HOSTS_PATH] PREFERENCE
.. clicmd:: rpki cache (A.B.C.D|WORD) PORT [SSH_USERNAME] [SSH_PRIVKEY_PATH] [SSH_PUBKEY_PATH] [KNOWN_HOSTS_PATH] PREFERENCE
{RPKI Socket Command} {rpki cache (`A.B.C.D`|`WORD`) `PORT` [`SSH_USERNAME`] [`SSH_PRIVKEY_PATH`] [`SSH_PUBKEY_PATH`] [`KNOWN_HOSTS_PATH`] `PREFERENCE`} {}
.. index:: {RPKI Socket Command} {no rpki cache (`A.B.C.D`|`WORD`) [`PORT`] `PREFERENCE`} {}
.. index:: no rpki cache (A.B.C.D|WORD) [PORT] PREFERENCE
.. clicmd:: no rpki cache (A.B.C.D|WORD) [PORT] PREFERENCE
{RPKI Socket Command} {no rpki cache (`A.B.C.D`|`WORD`) [`PORT`] `PREFERENCE`} {}
Add a cache server to the socket. By default, the connection between
router and cache server is based on plain TCP. Protecting the connection
between router and cache server by SSH is optional.
Deleting a socket removes the associated cache server and
terminates the existing connection.
Add a cache server to the socket. By default, the connection between router
and cache server is based on plain TCP. Protecting the connection between
router and cache server by SSH is optional. Deleting a socket removes the
associated cache server and terminates the existing connection.
*`A.B.C.D`|`WORD`*
A.B.C.D|WORD
Address of the cache server.
*`PORT`*
PORT
Port number to connect to the cache server
*`SSH_USERNAME`*
SSH_USERNAME
SSH username to establish an SSH connection to the cache server.
*`SSH_PRIVKEY_PATH`*
SSH_PRIVKEY_PATH
Local path that includes the private key file of the router.
*`SSH_PUBKEY_PATH`*
SSH_PUBKEY_PATH
Local path that includes the public key file of the router.
*`KNOWN_HOSTS_PATH`*
Local path that includes the known hosts file. The default value depends on the
configuration of the operating system environment, usually
KNOWN_HOSTS_PATH
Local path that includes the known hosts file. The default value depends
on the configuration of the operating system environment, usually
:file:`~/.ssh/known_hosts`.
@ -165,20 +148,22 @@ The following commands are independent of a specific cache server.
Validating BGP Updates
----------------------
.. index:: {Route Map Command} {match rpki {notfound|invalid|valid}} {}
.. index:: match rpki notfound|invalid|valid
.. clicmd:: match rpki notfound|invalid|valid
{Route Map Command} {match rpki {notfound|invalid|valid}} {}
.. index:: {Route Map Command} {no match rpki {notfound|invalid|valid}} {}
.. index:: no match rpki notfound|invalid|valid
.. clicmd:: no match rpki notfound|invalid|valid
{Route Map Command} {no match rpki {notfound|invalid|valid}} {}
Create a clause for a route map to match prefixes with the specified RPKI state.
Create a clause for a route map to match prefixes with the specified RPKI
state.
**Note** that the matching of invalid prefixes requires that invalid
prefixes are considered for best path selection, i.e., @command{bgp
bestpath prefix-validate disallow-invalid} is not enabled.
prefixes are considered for best path selection, i.e.,
``bgp bestpath prefix-validate disallow-invalid`` is not enabled.
In the following example, the router prefers valid routes over invalid
prefixes because invalid routes have a lower local preference.
::
! Allow for invalid routes in route selection process
@ -195,18 +180,17 @@ Validating BGP Updates
set local-preference 500
.. _Debugging:
Debugging
---------
.. index:: {Command} {debug rpki} {}
.. index:: debug rpki
.. clicmd:: debug rpki
{Command} {debug rpki} {}
.. index:: {Command} {no debug rpki} {}
.. index:: no debug rpki
.. clicmd:: no debug rpki
{Command} {no debug rpki} {}
Enable or disable debugging output for RPKI.
.. _Displaying_RPKI:
@ -214,16 +198,16 @@ Debugging
Displaying RPKI
---------------
.. index:: {Command} {show rpki prefix-table} {}
.. index:: show rpki prefix-table
.. clicmd:: show rpki prefix-table
{Command} {show rpki prefix-table} {}
Display all validated prefix to origin AS mappings/records which have been
received from the cache servers and stored in the router. Based on this data,
the router validates BGP Updates.
.. index:: {Command} {show rpki cache-connection} {}
.. index:: show rpki cache-connection
.. clicmd:: show rpki cache-connection
{Command} {show rpki cache-connection} {}
Display all configured cache servers, whether active or not.
RPKI Configuration Example
@ -273,4 +257,5 @@ RPKI Configuration Example
route-map rpki permit 40
!
.. [Securing-BGP] `Geoff Huston, Randy Bush: Securing BGP, In: The Internet Protocol Journal, Volume 14, No. 2, 2011. <http://www.cisco.com/web/about/ac123/ac147/archived_issues/ipj_14-2/142_bgp.html>`_
.. [Resource-Certification] `Geoff Huston: Resource Certification, In: The Internet Protocol Journal, Volume 12, No.1, 2009. <http://www.cisco.com/web/about/ac123/ac147/archived_issues/ipj_12-1/121_resource.html>`_

View File

@ -4,44 +4,43 @@
SNMP Support
************
:abbr:`SNMP (Simple Network Managing Protocol)` is a widely implemented
feature for collecting network information from router and/or host.
FRR itself does not support SNMP agent (server daemon) functionality
but is able to connect to a SNMP agent using the SMUX protocol
(:rfc:`1227`) or the AgentX protocol (:rfc:`2741`) and make the
routing protocol MIBs available through it.
:abbr:`SNMP (Simple Network Managing Protocol)` is a widely implemented feature
for collecting network information from router and/or host. FRR itself does
not support SNMP agent (server daemon) functionality but is able to connect to
a SNMP agent using the SMUX protocol (:rfc:`1227`) or the AgentX protocol
(:rfc:`2741`) and make the routing protocol MIBs available through it.
Note that SNMP Support needs to be enabled at compile-time and loaded as
module on daemon startup. Refer to :ref:`Loadable_Module_Support` on
the latter.
Note that SNMP Support needs to be enabled at compile-time and loaded as module
on daemon startup. Refer to :ref:`Loadable_Module_Support` on the latter.
.. _Getting_and_installing_an_SNMP_agent:
Getting and installing an SNMP agent
====================================
There are several SNMP agent which support SMUX or AgentX. We recommend to use the latest
version of `net-snmp` which was formerly known as `ucd-snmp`.
It is free and open software and available at `http://www.net-snmp.org/ <http://www.net-snmp.org/>`_
and as binary package for most Linux distributions.
`net-snmp` has to be compiled with `--with-mib-modules=agentx` to
be able to accept connections from FRR using AgentX protocol or with
`--with-mib-modules=smux` to use SMUX protocol.
There are several SNMP agent which support SMUX or AgentX. We recommend to use
the latest version of `net-snmp` which was formerly known as `ucd-snmp`. It is
free and open software and available at `http://www.net-snmp.org/ <http://www.net-snmp.org/>`_
and as binary package for most Linux distributions. `net-snmp` has to be
compiled with `--with-mib-modules=agentx` to be able to accept connections from
FRR using AgentX protocol or with `--with-mib-modules=smux` to use SMUX
protocol.
Nowadays, SMUX is a legacy protocol. The AgentX protocol should be
preferred for any new deployment. Both protocols have the same coverage.
Nowadays, SMUX is a legacy protocol. The AgentX protocol should be preferred
for any new deployment. Both protocols have the same coverage.
.. _AgentX_configuration:
AgentX configuration
====================
.. program:: configure
To enable AgentX protocol support, FRR must have been build with the
`--enable-snmp` or `--enable-snmp=agentx` option. Both the
master SNMP agent (snmpd) and each of the FRR daemons must be
configured. In `/etc/snmp/snmpd.conf`, `master agentx`
directive should be added. In each of the FRR daemons, `agentx`
command will enable AgentX support.
:option:`--enable-snmp` or `--enable-snmp=agentx` option. Both the
master SNMP agent (snmpd) and each of the FRR daemons must be configured. In
:file:`/etc/snmp/snmpd.conf`, the ``master agentx`` directive should be added.
In each of the FRR daemons, ``agentx`` command will enable AgentX support.
::
@ -65,8 +64,8 @@ command will enable AgentX support.
!
Upon successful connection, you should get something like this in the
log of each FRR daemons:
Upon successful connection, you should get something like this in the log of
each FRR daemons:
::
@ -82,10 +81,10 @@ Then, you can use the following command to check everything works as expected:
[...]
The AgentX protocol can be transported over a Unix socket or using TCP
or UDP. It usually defaults to a Unix socket and depends on how NetSNMP
was built. If need to configure FRR to use another transport, you can
configure it through `/etc/snmp/frr.conf`:
The AgentX protocol can be transported over a Unix socket or using TCP or UDP.
It usually defaults to a Unix socket and depends on how NetSNMP was built. If
need to configure FRR to use another transport, you can configure it through
:file:`/etc/snmp/frr.conf`:
::
@ -101,18 +100,17 @@ SMUX configuration
==================
To enable SMUX protocol support, FRR must have been build with the
`--enable-snmp=smux` option.
:option:`--enable-snmp` option.
A separate connection has then to be established between the
SNMP agent (snmpd) and each of the FRR daemons. This connections
each use different OID numbers and passwords. Be aware that this OID
number is not the one that is used in queries by clients, it is solely
used for the intercommunication of the daemons.
A separate connection has then to be established between the SNMP agent (snmpd)
and each of the FRR daemons. This connections each use different OID numbers
and passwords. Be aware that this OID number is not the one that is used in
queries by clients, it is solely used for the intercommunication of the
daemons.
In the following example the ospfd daemon will be connected to the
snmpd daemon using the password "frr_ospfd". For testing it is
recommending to take exactly the below snmpd.conf as wrong access
restrictions can be hard to debug.
In the following example the ospfd daemon will be connected to the snmpd daemon
using the password "frr_ospfd". For testing it is recommending to take exactly
the below snmpd.conf as wrong access restrictions can be hard to debug.
::
@ -136,8 +134,8 @@ restrictions can be hard to debug.
!
After restarting snmpd and frr, a successful connection can be verified in
the syslog and by querying the SNMP daemon:
After restarting snmpd and frr, a successful connection can be verified in the
syslog and by querying the SNMP daemon:
::
@ -152,17 +150,16 @@ the syslog and by querying the SNMP daemon:
Be warned that the current version (5.1.1) of the Net-SNMP daemon writes a line
for every SNMP connect to the syslog which can lead to enormous log file sizes.
If that is a problem you should consider to patch snmpd and comment out the
troublesome `snmp_log()` line in the function
`netsnmp_agent_check_packet()` in `agent/snmp_agent.c`.
troublesome `snmp_log()` line in the function `netsnmp_agent_check_packet()` in
`agent/snmp_agent.c`.
MIB and command reference
=========================
The following OID numbers are used for the interprocess communication of snmpd and
the FRR daemons with SMUX only.
::
the FRR daemons with SMUX only.::
(OIDs below .iso.org.dod.internet.private.enterprises)
. (OIDs below .iso.org.dod.internet.private.enterprises)
zebra .1.3.6.1.4.1.3317.1.2.1 .gnome.gnomeProducts.zebra.zserv
bgpd .1.3.6.1.4.1.3317.1.2.2 .gnome.gnomeProducts.zebra.bgpd
ripd .1.3.6.1.4.1.3317.1.2.3 .gnome.gnomeProducts.zebra.ripd
@ -171,8 +168,7 @@ the FRR daemons with SMUX only.
Sadly, SNMP has not been implemented in all daemons yet. The following
OID numbers are used for querying the SNMP daemon by a client:
::
OID numbers are used for querying the SNMP daemon by a client:::
zebra .1.3.6.1.2.1.4.24 .iso.org.dot.internet.mgmt.mib-2.ip.ipForward
ospfd .1.3.6.1.2.1.14 .iso.org.dot.internet.mgmt.mib-2.ospf
@ -181,26 +177,24 @@ OID numbers are used for querying the SNMP daemon by a client:
ospf6d .1.3.6.1.3.102 .iso.org.dod.internet.experimental.ospfv3
The following syntax is understood by the FRR daemons for configuring SNMP using SMUX:
.. index:: {Command} {smux peer `oid`} {}
The following syntax is understood by the FRR daemons for configuring SNMP
using SMUX:
{Command} {smux peer `oid`} {}
.. index:: {Command} {no smux peer `oid`} {}
.. index:: smux peer OID
.. clicmd:: smux peer OID
.. index:: no smux peer OID
.. clicmd:: no smux peer OID
.. index:: smux peer OID PASSWORD
.. clicmd:: smux peer OID PASSWORD
.. index:: no smux peer OID PASSWORD
.. clicmd:: no smux peer OID PASSWORD
{Command} {no smux peer `oid`} {}
.. index:: {Command} {smux peer `oid` `password`} {}
{Command} {smux peer `oid` `password`} {}
.. index:: {Command} {no smux peer `oid` `password`} {}
{Command} {no smux peer `oid` `password`} {}
Here is the syntax for using AgentX:
.. index:: {Command} {agentx} {}
{Command} {agentx} {}
.. index:: {Command} {no agentx} {}
.. index:: agentx
.. clicmd:: agentx
.. index:: no agentx
.. clicmd:: no agentx
{Command} {no agentx} {}
.. include:: snmptrap.rst

View File

@ -1,18 +1,18 @@
Handling SNMP Traps
===================
To handle snmp traps make sure your snmp setup of frr works
correctly as described in the frr documentation in :ref:`SNMP_Support`.
To handle snmp traps make sure your snmp setup of frr works correctly as
described in the frr documentation in :ref:`SNMP_Support`.
The BGP4 mib will send traps on peer up/down events. These should be
visible in your snmp logs with a message similar to:
The BGP4 mib will send traps on peer up/down events. These should be visible in
your snmp logs with a message similar to:
::
snmpd[13733]: Got trap from peer on fd 14
To react on these traps they should be handled by a trapsink. Configure
your trapsink by adding the following lines to :file:`/etc/snmpd/snmpd.conf`:
To react on these traps they should be handled by a trapsink. Configure your
trapsink by adding the following lines to :file:`/etc/snmpd/snmpd.conf`:
::
@ -20,9 +20,9 @@ your trapsink by adding the following lines to :file:`/etc/snmpd/snmpd.conf`:
trapsink localhost
This will send all traps to an snmptrapd running on localhost. You can
of course also use a dedicated management station to catch traps.
Configure the snmptrapd daemon by adding the following line to
This will send all traps to an snmptrapd running on localhost. You can of
course also use a dedicated management station to catch traps. Configure the
snmptrapd daemon by adding the following line to
:file:`/etc/snmpd/snmptrapd.conf`:
::
@ -32,15 +32,15 @@ Configure the snmptrapd daemon by adding the following line to
This will use the bash script :file:`/etc/snmp/snmptrap_handle.sh` to handle
the BGP4 traps. To add traps for other protocol daemons, lookup their
appropriate OID from their mib. (For additional information about which
traps are supported by your mib, lookup the mib on
appropriate OID from their mib. (For additional information about which traps
are supported by your mib, lookup the mib on
`http://www.oidview.com/mibs/detail.html <http://www.oidview.com/mibs/detail.html>`_).
Make sure snmptrapd is started.
Make sure *snmptrapd* is started.
The snmptrap_handle.sh script I personally use for handling BGP4 traps
is below. You can of course do all sorts of things when handling traps,
like sound a siren, have your display flash, etc., be creative ;).
The snmptrap_handle.sh script I personally use for handling BGP4 traps is
below. You can of course do all sorts of things when handling traps, like sound
a siren, have your display flash, etc., be creative ;).
::

File diff suppressed because it is too large Load Diff

View File

@ -4,54 +4,56 @@
VTY shell
*********
*vtysh* provides a combined frontend to all FRR daemons in a
single combined session. It is enabled by default at build time, but can
be disabled through the *--disable-vtysh* option to
*./configure*.
.. program:: configure
*vtysh* has a configuration file, :file:`vtysh.conf`. The location
of that file cannot be changed from :file:`|INSTALL_PREFIX_ETC|` since
it contains options controlling authentication behavior. This file will
also not be written by configuration-save commands, it is intended to be
updated manually by an administrator with an external editor.
*vtysh* provides a combined frontend to all FRR daemons in a single combined
session. It is enabled by default at build time, but can be disabled through
the :option:`--disable-vtysh` option to the configure script.
*vtysh* has a configuration file, :file:`vtysh.conf`. The location of that
file cannot be changed from |INSTALL_PREFIX_ETC| since it contains options
controlling authentication behavior. This file will also not be written by
configuration-save commands, it is intended to be updated manually by an
administrator with an external editor.
.. warning::
This also means the ``hostname`` and ``banner motd`` commands (which both do
have effect for vtysh) need to be manually updated in :file:`vtysh.conf`.
@quotation Warning
This also means the *hostname* and *banner motd* commands
(which both do have effect for vtysh) need to be manually updated in
:file:`vtysh.conf`.
@end quotation
Permissions and setup requirements
==================================
*vtysh* connects to running daemons through Unix sockets located in
:file:`|INSTALL_PREFIX_STATE|`. Running vtysh thus requires access to
that directory, plus membership in the *|INSTALL_VTY_GROUP|*
group (which is the group that the daemons will change ownership of their
sockets to).
|INSTALL_PREFIX_STATE|. Running vtysh thus requires access to that directory,
plus membership in the |INSTALL_VTY_GROUP| group (which is the group that the
daemons will change ownership of their sockets to).
To restrict access to FRR configuration, make sure no unauthorized users
are members of the *|INSTALL_VTY_GROUP|* group.
To restrict access to FRR configuration, make sure no unauthorized users are
members of the |INSTALL_VTY_GROUP| group.
PAM support (experimental)
--------------------------
vtysh has working (but rather useless) PAM support. It will perform
an "authenticate" PAM call using *|PACKAGE_NAME|* as service
name. No other (accounting, session, password change) calls will be
performed by vtysh.
vtysh has working (but rather useless) PAM support. It will perform an
"authenticate" PAM call using |PACKAGE_NAME| as service name. No other
(accounting, session, password change) calls will be performed by vtysh.
Users using vtysh still need to have appropriate access to the daemons'
VTY sockets, usually by being member of the *|INSTALL_VTY_GROUP|*
group. If they have this membership, PAM support is useless since they can
connect to daemons and issue commands using some other tool. Alternatively,
the *vtysh* binary could be made SGID (set group ID) to the
*|INSTALL_VTY_GROUP|* group. @strong{No security guarantees are
made for this configuration}.
Users using vtysh still need to have appropriate access to the daemons' VTY
sockets, usually by being member of the |INSTALL_VTY_GROUP| group. If they
have this membership, PAM support is useless since they can connect to daemons
and issue commands using some other tool. Alternatively, the *vtysh* binary
could be made SGID (set group ID) to the |INSTALL_VTY_GROUP| group.
.. index:: {Command} {username `username` nopassword} {}
.. warning::
No security guarantees are made for this configuration.
.. index:: username USERNAME nopassword
.. clicmd:: username USERNAME nopassword
{Command} {username `username` nopassword} {}
If PAM support is enabled at build-time, this command allows disabling the
use of PAM on a per-user basis. If vtysh finds that an user is trying to
use vtysh and a "nopassword" entry is found, no calls to PAM will be made
@ -67,56 +69,56 @@ Integrated configuration mode uses a single configuration file,
:file:`frr.conf`, for all daemons. This replaces the individual files like
:file:`zebra.conf` or :file:`bgpd.conf`.
:file:`frr.conf` is located in :file:`|INSTALL_PREFIX_ETC|`. All
daemons check for the existence of this file at startup, and if it exists
will not load their individual configuration files. Instead,
*vtysh -b* must be invoked to process :file:`frr.conf` and apply
its settings to the individual daemons.
:file:`frr.conf` is located in |INSTALL_PREFIX_ETC|. All daemons check for the
existence of this file at startup, and if it exists will not load their
individual configuration files. Instead, ``vtysh -b`` must be invoked to
process :file:`frr.conf` and apply its settings to the individual daemons.
.. warning::
@quotation Warning
*vtysh -b* must also be executed after restarting any daemon.
@end quotation
Configuration saving, file ownership and permissions
----------------------------------------------------
The :file:`frr.conf` file is not written by any of the daemons; instead
*vtysh* contains the neccessary logic to collect configuration from
all of the daemons, combine it and write it out.
The :file:`frr.conf` file is not written by any of the daemons; instead *vtysh*
contains the neccessary logic to collect configuration from all of the daemons,
combine it and write it out.
.. warning::
@quotation Warning
Daemons must be running for *vtysh* to be able to collect their
configuration. Any configuration from non-running daemons is permanently
lost after doing a configuration save.
@end quotation
Since the *vtysh* command may be running as ordinary user on the
system, configuration writes will be tried through *watchfrr*,
using the *write integrated* command internally. Since
*watchfrr* is running as superuser, *vtysh* is able to
ensure correct ownership and permissions on :file:`frr.conf`.
Since the *vtysh* command may be running as ordinary user on the system,
configuration writes will be tried through *watchfrr*, using the ``write
integrated`` command internally. Since *watchfrr* is running as superuser,
*vtysh* is able to ensure correct ownership and permissions on
:file:`frr.conf`.
If *watchfrr* is not running or the configuration write fails,
*vtysh* will attempt to directly write to the file. This is likely
to fail if running as unprivileged user; alternatively it may leave the
file with incorrect owner or permissions.
If *watchfrr* is not running or the configuration write fails, *vtysh* will
attempt to directly write to the file. This is likely to fail if running as
unprivileged user; alternatively it may leave the file with incorrect owner or
permissions.
Writing the configuration can be triggered directly by invoking
*vtysh -w*. This may be useful for scripting. Note this command
should be run as either the superuser or the FRR user.
Writing the configuration can be triggered directly by invoking *vtysh -w*.
This may be useful for scripting. Note this command should be run as either the
superuser or the FRR user.
We recommend you do not mix the use of the two types of files. Further, it
is better not to use the integrated frr.conf file, as any syntax error in
it can lead to /all/ of your daemons being unable to start up. Per daemon
files are more robust as impact of errors in configuration are limited to
the daemon in whose file the error is made.
We recommend you do not mix the use of the two types of files. Further, it is
better not to use the integrated :file:`frr.conf` file, as any syntax error in
it can lead to /all/ of your daemons being unable to start up. Per daemon files
are more robust as impact of errors in configuration are limited to the daemon
in whose file the error is made.
.. index:: {Command} {service integrated-vtysh-config} {}
.. index:: service integrated-vtysh-config
.. clicmd:: service integrated-vtysh-config
{Command} {service integrated-vtysh-config} {}
.. index:: {Command} {no service integrated-vtysh-config} {}
.. index:: no service integrated-vtysh-config
.. clicmd:: no service integrated-vtysh-config
{Command} {no service integrated-vtysh-config} {}
Control whether integrated :file:`frr.conf` file is written when
'write file' is issued.
@ -127,22 +129,15 @@ the daemon in whose file the error is made.
This command has 3 states:
``
*service integrated-vtysh-config*
service integrated-vtysh-config
*vtysh* will always write :file:`frr.conf`.
``
*no service integrated-vtysh-config*
no service integrated-vtysh-config
*vtysh* will never write :file:`frr.conf`; instead it will ask
daemons to write their individual configuration files.
``
Neither option present (default)
*vtysh* will check whether :file:`frr.conf` exists. If it does,
configuration writes will update that file. Otherwise, writes are performed
through the individual daemons.
@ -151,21 +146,18 @@ the daemon in whose file the error is made.
preset one of the two operating modes and ensure consistent operation across
installations.
.. index:: {Command} {write integrated} {}
.. index:: write integrated
.. clicmd:: write integrated
{Command} {write integrated} {}
Unconditionally (regardless of *service integrated-vtysh-config*
setting) write out integrated :file:`frr.conf` file through
*watchfrr*. If *watchfrr* is not running, this command
is unavailable.
Unconditionally (regardless of ``service integrated-vtysh-config`` setting)
write out integrated :file:`frr.conf` file through *watchfrr*. If *watchfrr*
is not running, this command is unavailable.
.. warning::
Caveats
=======
Configuration changes made while some daemon is not running will be invisible
to that daemon. The daemon will start up with its saved configuration
(either in its individual configuration file, or in :file:`frr.conf`).
This is particularly troublesome for route-maps and prefix lists, which would
otherwise be synchronized between daemons.
Configuration changes made while some daemon is not running will be
invisible to that daemon. The daemon will start up with its saved
configuration (either in its individual configuration file, or in
:file:`frr.conf`). This is particularly troublesome for route-maps and
prefix lists, which would otherwise be synchronized between daemons.