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
========================= =========================
Packet Binary Dump Format Packet Binary Dump Format
------------------------- -------------------------
FRR can dump routing protocol packet into file with a binary format FRR can dump routing protocol packet into file with a binary format.
(@pxref{Dump BGP packets and table}).
It seems to be better that we share the MRT's header format for 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 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 Starting and Stopping eigrpd
============================ ============================
The default configuration file name of *eigrpd*'s is The default configuration file name of *eigrpd*'s is :file:`eigrpd.conf`. When
:file:`eigrpd.conf`. When invocation *eigrpd* searches directory invocation *eigrpd* searches directory |INSTALL_PREFIX_ETC|. If
|INSTALL_PREFIX_ETC|. If :file:`eigrpd.conf` is not there next :file:`eigrpd.conf` is not there next search current directory. If an
search current directory. If an integrated config is specified integrated config is specified configuration is written into :file:`frr.conf`.
configuration is written into frr.conf
The EIGRP protocol requires interface information The EIGRP protocol requires interface information maintained by *zebra* daemon.
maintained by *zebra* daemon. So running *zebra* So running *zebra* is mandatory to run *eigrpd*. Thus minimum sequence for
is mandatory to run *eigrpd*. Thus minimum sequence for running running EIGRP is:
EIGRP is like below:
:: ::
@ -37,8 +35,10 @@ EIGRP is like below:
Please note that *zebra* must be invoked before *eigrpd*. Please note that *zebra* must be invoked before *eigrpd*.
To stop *eigrpd*. Please use @command{kill `cat To stop *eigrpd*, please use ::
/var/run/eigrpd.pid`}. Certain signals have special meanings to *eigrpd*. kill `cat /var/run/eigrpd.pid`
Certain signals have special meanings to *eigrpd*.
+------------------+-----------------------------------------------------------+ +------------------+-----------------------------------------------------------+
| Signal | Meaning | | Signal | Meaning |
@ -65,23 +65,23 @@ EIGRP Configuration
=================== ===================
.. index:: router eigrp (1-65535) .. index:: router eigrp (1-65535)
.. clicmd:: router eigrp (1-65535) .. clicmd:: router eigrp (1-65535)
The `router eigrp` command is necessary to enable EIGRP. To disable EIGRP, 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 use the `no router eigrp (1-65535)` command. EIGRP must be enabled before
carrying out any of the EIGRP commands. carrying out any of the EIGRP commands.
.. index:: no router eigrp (1-65535) .. index:: no router eigrp (1-65535)
.. clicmd:: no router eigrp (1-65535) .. clicmd:: no router eigrp (1-65535)
Disable EIGRP. Disable EIGRP.
.. index:: network NETWORK .. index:: network NETWORK
.. clicmd:: network NETWORK .. clicmd:: network NETWORK
.. index:: no network NETWORK
.. index:: no network NETWORK
.. clicmd:: no network NETWORK .. clicmd:: no network NETWORK
Set the EIGRP enable interface by `network`. The interfaces which Set the EIGRP enable interface by `network`. The interfaces which
have addresses matching with `network` are enabled. have addresses matching with `network` are enabled.
@ -94,7 +94,7 @@ EIGRP Configuration
Below is very simple EIGRP configuration. Interface `eth0` and Below is very simple EIGRP configuration. Interface `eth0` and
interface which address match to `10.0.0.0/8` are EIGRP enabled. interface which address match to `10.0.0.0/8` are EIGRP enabled.
:: ::
! !
router eigrp 1 router eigrp 1
@ -102,19 +102,17 @@ EIGRP Configuration
! !
Passive interface
.. index:: passive-interface (IFNAME|default) .. index:: passive-interface (IFNAME|default)
.. clicmd:: passive-interface (IFNAME|default) .. clicmd:: passive-interface (IFNAME|default)
.. index:: no passive-interface IFNAME
.. index:: no passive-interface IFNAME
.. clicmd:: no passive-interface IFNAME .. clicmd:: no passive-interface IFNAME
This command sets the specified interface to passive mode. On passive mode This command sets the specified interface to passive mode. On passive mode
interface, all receiving packets are ignored and eigrpd does interface, all receiving packets are ignored and eigrpd does not send either
not send either multicast or unicast EIGRP packets except to EIGRP neighbors multicast or unicast EIGRP packets except to EIGRP neighbors specified with
specified with `neighbor` command. The interface may be specified `neighbor` command. The interface may be specified as `default` to make
as `default` to make eigrpd default to passive on all interfaces. eigrpd default to passive on all interfaces.
The default is to be 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 .. index:: redistribute kernel
.. clicmd:: redistribute kernel .. clicmd:: redistribute kernel
.. index:: redistribute kernel metric (1-4294967295) (0-4294967295) (0-255) (1-255) (1-65535) .. 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) .. 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 .. clicmd:: no redistribute kernel
`redistribute kernel` redistributes routing information from
kernel route entries into the EIGRP tables. `no redistribute kernel` `redistribute kernel` redistributes routing information from kernel route
disables the routes. entries into the EIGRP tables. `no redistribute kernel` disables the routes.
.. index:: redistribute static .. index:: redistribute static
.. clicmd:: redistribute static .. clicmd:: redistribute static
.. index:: redistribute static metric (1-4294967295) (0-4294967295) (0-255) (1-255) (1-65535) .. 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) .. 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 .. clicmd:: no redistribute static
`redistribute static` redistributes routing information from
static route entries into the EIGRP tables. `no redistribute static` `redistribute static` redistributes routing information from static route
disables the routes. entries into the EIGRP tables. `no redistribute static` disables the routes.
.. index:: redistribute connected .. index:: redistribute connected
.. clicmd:: redistribute connected .. clicmd:: redistribute connected
.. index:: redistribute connected metric (1-4294967295) (0-4294967295) (0-255) (1-255) (1-65535) .. 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) .. 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 .. clicmd:: no redistribute connected
Redistribute connected routes into the EIGRP tables. `no redistribute Redistribute connected routes into the EIGRP tables. `no redistribute
connected` disables the connected routes in the EIGRP tables. This command connected` disables the connected routes in the EIGRP tables. This command
redistribute connected of the interface which EIGRP disabled. The connected redistribute connected of the interface which EIGRP disabled. The connected
route on EIGRP enabled interface is announced by default. route on EIGRP enabled interface is announced by default.
.. index:: redistribute ospf .. index:: redistribute ospf
.. clicmd:: redistribute ospf .. clicmd:: redistribute ospf
.. index:: redistribute ospf metric (1-4294967295) (0-4294967295) (0-255) (1-255) (1-65535) .. 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) .. 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 .. clicmd:: no redistribute ospf
`redistribute ospf` redistributes routing information from ospf route `redistribute ospf` redistributes routing information from ospf route
entries into the EIGRP tables. `no redistribute ospf` disables the entries into the EIGRP tables. `no redistribute ospf` disables the routes.
routes.
.. index:: redistribute bgp .. index:: redistribute bgp
.. clicmd:: redistribute bgp .. clicmd:: redistribute bgp
.. index:: redistribute bgp metric (1-4294967295) (0-4294967295) (0-255) (1-255) (1-65535) .. 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) .. 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 .. clicmd:: no redistribute bgp
`redistribute bgp` redistributes routing information from
bgp route entries into the EIGRP tables. `no redistribute bgp` `redistribute bgp` redistributes routing information from bgp route entries
disables the routes. into the EIGRP tables. `no redistribute bgp` disables the routes.
.. _Show_EIGRP_Information: .. _Show_EIGRP_Information:
@ -197,18 +191,18 @@ Show EIGRP Information
To display EIGRP routes. To display EIGRP routes.
.. index:: show ip eigrp topology .. index:: show ip eigrp topology
.. clicmd:: show ip eigrp topology .. clicmd:: show ip eigrp topology
Show EIGRP routes. Show EIGRP routes.
The command displays all EIGRP routes. The command displays all EIGRP routes.
.. index:: show ip eigrp topology .. index:: show ip eigrp topology
.. clicmd:: show ip eigrp topology .. clicmd:: show ip eigrp topology
The command displays current EIGRP status The command displays current EIGRP status
:: ::
eigrpd> **show ip eigrp topology** eigrpd> **show ip eigrp topology**
# show ip eigrp topo # show ip eigrp topo
@ -228,24 +222,25 @@ EIGRP Debug Commands
Debug for EIGRP protocol. Debug for EIGRP protocol.
.. index:: debug eigrp packets .. index:: debug eigrp packets
.. clicmd:: debug eigrp packets .. clicmd:: debug eigrp packets
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 .. index:: debug eigrp transmit
.. clicmd:: debug eigrp transmit .. clicmd:: debug eigrp transmit
Debug eigrp transmit events 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 .. index:: show debugging eigrp
.. clicmd:: show debugging eigrp .. clicmd:: show debugging eigrp
Display *eigrpd*'s debugging option. 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. debug.

View File

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

View File

@ -4,11 +4,12 @@
IPv6 Support IPv6 Support
************ ************
FRR fully supports IPv6 routing. As described so far, Frr supports FRR fully supports IPv6 routing. As described so far, Frr supports RIPng,
RIPng, OSPFv3, and BGP-4+. You can give IPv6 addresses to an interface OSPFv3, and BGP-4+. You can give IPv6 addresses to an interface and configure
and configure static IPv6 routing information. FRR IPv6 also provides static IPv6 routing information. FRR IPv6 also provides automatic address
automatic address configuration via a feature called ``address auto configuration``. To do it, the router must send router advertisement configuration via a feature called ``address auto configuration``. To do it,
messages to the all nodes that exist on the network. 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 Previous versions of FRR could be built without IPv6 support. This is
no longer possible. no longer possible.
@ -17,18 +18,18 @@ Router Advertisement
==================== ====================
.. index:: no ipv6 nd suppress-ra .. index:: no ipv6 nd suppress-ra
.. clicmd:: no ipv6 nd suppress-ra .. clicmd:: no ipv6 nd suppress-ra
Send router advertisment messages. Send router advertisment messages.
.. index:: ipv6 nd suppress-ra .. index:: ipv6 nd suppress-ra
.. clicmd:: ipv6 nd suppress-ra .. clicmd:: ipv6 nd suppress-ra
Don't send router advertisment messages. Don't send router advertisment messages.
.. index:: ipv6 nd prefix ipv6prefix [valid-lifetime] [preferred-lifetime] [off-link] [no-autoconfig] [router-address] .. 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] .. 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 Configuring the IPv6 prefix to include in router advertisements. Several prefix
specific optional parameters and flags may follow: specific optional parameters and flags may follow:
@ -59,20 +60,18 @@ Router Advertisement
.. index:: .. index::
single: no ipv6 nd ra-interval [(1-1800)] single: no ipv6 nd ra-interval [(1-1800)]
single: no ipv6 nd ra-interval [(1-1800)] single: no ipv6 nd ra-interval [(1-1800)]
.. clicmd:: [no] ipv6 nd ra-interval [(1-1800)] .. clicmd:: [no] ipv6 nd ra-interval [(1-1800)]
The maximum time allowed between sending unsolicited multicast router The maximum time allowed between sending unsolicited multicast router
advertisements from the interface, in seconds. advertisements from the interface, in seconds.
Default: ``600`` Default: ``600``
.. index:: ipv6 nd ra-interval msec (70-1800000) .. index:: ipv6 nd ra-interval msec (70-1800000)
.. index:: .. index::
single: no ipv6 nd ra-interval [msec (70-1800000)] single: no ipv6 nd ra-interval [msec (70-1800000)]
single: ipv6 nd ra-interval msec (70-1800000) single: ipv6 nd ra-interval msec (70-1800000)
.. clicmd:: [no] 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 The maximum time allowed between sending unsolicited multicast router
advertisements from the interface, in milliseconds. advertisements from the interface, in milliseconds.
Default: ``600000`` Default: ``600000``
@ -80,8 +79,8 @@ Router Advertisement
.. index:: .. index::
single: ipv6 nd ra-lifetime (0-9000) single: ipv6 nd ra-lifetime (0-9000)
single: no ipv6 nd ra-lifetime [(0-9000)] single: no ipv6 nd ra-lifetime [(0-9000)]
.. clicmd:: [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 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 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 as a default router on this interface. Setting the value to zero indicates
@ -93,30 +92,30 @@ Router Advertisement
.. index:: .. index::
single: no ipv6 nd reachable-time [(1-3600000)] single: no ipv6 nd reachable-time [(1-3600000)]
single: ipv6 nd reachable-time (1-3600000) single: ipv6 nd reachable-time (1-3600000)
.. clicmd:: [no] 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 The value to be placed in the Reachable Time field in the Router
router to detect unavailable neighbors. The value zero means unspecified (by Advertisement messages sent by the router, in milliseconds. The configured
this router). time enables the router to detect unavailable neighbors. The value zero
means unspecified (by this router).
Default: ``0`` Default: ``0``
.. index:: .. index::
single: ipv6 nd managed-config-flag single: ipv6 nd managed-config-flag
single: no ipv6 nd managed-config-flag single: no ipv6 nd managed-config-flag
.. clicmd:: [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 Set/unset flag in IPv6 router advertisements which indicates to hosts that
addition to any addresses autoconfigured using stateless address they should use managed (stateful) protocol for addresses autoconfiguration
in addition to any addresses autoconfigured using stateless address
autoconfiguration. autoconfiguration.
Default: not set Default: not set
.. index:: .. index::
single: ipv6 nd other-config-flag single: ipv6 nd other-config-flag
single: no ipv6 nd other-config-flag single: no ipv6 nd other-config-flag
.. clicmd:: [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 Set/unset flag in IPv6 router advertisements which indicates to hosts that
they should use administered (stateful) protocol to obtain autoconfiguration they should use administered (stateful) protocol to obtain autoconfiguration
information other than addresses. information other than addresses.
@ -125,8 +124,8 @@ Router Advertisement
.. index:: .. index::
single: ipv6 nd home-agent-config-flag single: ipv6 nd home-agent-config-flag
single: no ipv6 nd home-agent-config-flag single: no ipv6 nd home-agent-config-flag
.. clicmd:: [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 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. the router acts as a Home Agent and includes a Home Agent Option.
Default: not set Default: not set
@ -136,18 +135,18 @@ Router Advertisement
.. index:: .. index::
single: no ipv6 nd home-agent-preference [(0-65535)] single: no ipv6 nd home-agent-preference [(0-65535)]
single: ipv6 nd home-agent-preference (0-65535) single: ipv6 nd home-agent-preference (0-65535)
.. clicmd:: [no] 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 The value to be placed in Home Agent Option, when Home Agent config flag is
for the lowest preference possible. set, which indicates to hosts Home Agent preference. The default value of 0
stands for the lowest preference possible.
Default: ``0`` Default: ``0``
.. index:: .. index::
single: ipv6 nd home-agent-lifetime (0-65520) single: ipv6 nd home-agent-lifetime (0-65520)
single: no 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)] .. 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, 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 which indicates to hosts Home Agent Lifetime. The default value of 0 means to
place the current Router Lifetime value. place the current Router Lifetime value.
@ -157,8 +156,8 @@ Router Advertisement
.. index:: .. index::
single: ipv6 nd adv-interval-option single: ipv6 nd adv-interval-option
single: no ipv6 nd adv-interval-option single: no ipv6 nd adv-interval-option
.. clicmd:: [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, Include an Advertisement Interval option which indicates to hosts the maximum time,
in milliseconds, between successive unsolicited Router Advertisements. in milliseconds, between successive unsolicited Router Advertisements.
Default: not set Default: not set
@ -166,19 +165,19 @@ Router Advertisement
.. index:: .. index::
single: ipv6 nd router-preference (high|medium|low) single: ipv6 nd router-preference (high|medium|low)
single: no 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)] .. clicmd:: [no] ipv6 nd router-preference [(high|medium|low)]
Set default router preference in IPv6 router advertisements per RFC4191. Set default router preference in IPv6 router advertisements per RFC4191.
Default: medium Default: medium
.. index:: .. index::
single: ipv6 nd mtu (1-65535) single: ipv6 nd mtu (1-65535)
single: no ipv6 nd mtu [(1-65535)] single: no ipv6 nd mtu [(1-65535)]
.. clicmd:: [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 Include an MTU (type 5) option in each RA packet to assist the attached
consistent with router interface MTU. 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.:: Default: don't advertise any MTU option.::
interface eth0 interface eth0
@ -186,8 +185,9 @@ Router Advertisement
ipv6 nd prefix 2001:0DB8:5009::/64 ipv6 nd prefix 2001:0DB8:5009::/64
For more information see .. seealso::
:t:`RFC2462 (IPv6 Stateless Address Autoconfiguration)`,
:t:`RFC4861 (Neighbor Discovery for IP Version 6 (IPv6))`, - :rfc:`2462` (IPv6 Stateless Address Autoconfiguration)
:t:`RFC6275 (Mobility Support in IPv6)` and - :rfc:`4861` (Neighbor Discovery for IP Version 6 (IPv6))
:t:`RFC4191 (Default Router Preferences and More-Specific Routes)`. - :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 Configuring isisd
================= =================
There are no *isisd* specific options. Common options can be There are no *isisd* specific options. Common options can be specified
specified (:ref:`Common_Invocation_Options`) to *isisd*. (:ref:`Common_Invocation_Options`) to *isisd*. *isisd* needs to acquire
*isisd* needs to acquire interface information from interface information from *zebra* in order to function. Therefore *zebra* must
*zebra* in order to function. Therefore *zebra* must be be running before invoking *isisd*. Also, if *zebra* is restarted then *isisd*
running before invoking *isisd*. Also, if *zebra* is must be too.
restarted then *isisd* must be too.
Like other daemons, *isisd* configuration is done in :abbr:`ISIS` Like other daemons, *isisd* configuration is done in :abbr:`ISIS` specific
specific configuration file :file:`isisd.conf`. configuration file :file:`isisd.conf`.
.. _ISIS_router: .. _ISIS_router:
@ -34,77 +33,81 @@ ISIS router
To start ISIS process you have to specify the ISIS router. As of this To start ISIS process you have to specify the ISIS router. As of this
writing, *isisd* does not support multiple ISIS processes. 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:: no router isis WORD
.. index:: Command {no router isis WORD} {} .. clicmd:: no router isis WORD
Command {no router isis WORD} {}
.. _router_isis_WORD: .. _router_isis_WORD:
Enable or disable the ISIS process by specifying the ISIS domain with 'WORD'. Enable or disable the ISIS process by specifying the ISIS domain with
*isisd* does not yet support multiple ISIS processes but you must specify 'WORD'. *isisd* does not yet support multiple ISIS processes but you must
the name of ISIS process. The ISIS process name 'WORD' is then used for interface specify the name of ISIS process. The ISIS process name 'WORD' is then used
(see command :ref:`ip_router_isis_WORD`). 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:: no net XX.XXXX. ... .XXX.XX
.. index:: {ISIS Command} {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. 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:: no hostname dynamic
.. index:: {ISIS Command} {no hostname dynamic} {} .. clicmd:: no hostname dynamic
{ISIS Command} {no hostname dynamic} {}
Enable support for dynamic hostname. 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:: domain-password [clear | md5] <password>
.. index:: {ISIS Command} {domain-password [clear | md5] <password>} {} .. clicmd:: domain-password [clear | md5] <password>
{ISIS Command} {domain-password [clear | md5] <password>} {} .. index:: no area-password
.. index:: {ISIS Command} {no area-password} {} .. clicmd:: no area-password
{ISIS Command} {no area-password} {} .. index:: no domain-password
.. index:: {ISIS Command} {no domain-password} {} .. clicmd:: no domain-password
{ISIS Command} {no domain-password} {} Configure the authentication password for an area, respectively a domain, as
Configure the authentication password for an area, respectively a domain, clear text or md5 one.
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:: no log-adjacency-changes
.. index:: {ISIS Command} {no log-adjacency-changes} {} .. clicmd:: no log-adjacency-changes
{ISIS Command} {no log-adjacency-changes} {}
Log changes in adjacency state. 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:: no metric-style
.. index:: {ISIS Command} {no metric-style} {} .. clicmd:: no metric-style
{ISIS Command} {no metric-style} {} .. _metric-style:
.. _metric-style:
Set old-style (ISO 10589) or new-style packet formats: 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:: set-overload-bit
.. index:: {ISIS Command} {no 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. Set overload bit to avoid any transit traffic.
.. _ISIS_Timer: .. _ISIS_Timer:
@ -112,75 +115,57 @@ Command {no router isis WORD} {}
ISIS Timer 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:: lsp-gen-interval [level-1 | level-2] (1-120)
.. index:: {ISIS Command} {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:: no lsp-gen-interval
.. index:: {ISIS Command} {no lsp-gen-interval} {} .. clicmd:: no lsp-gen-interval
{ISIS Command} {no lsp-gen-interval} {} .. index:: no lsp-gen-interval [level-1 | level-2]
.. index:: {ISIS Command} {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, Set minimum interval in seconds between regenerating same LSP,
globally, for an area (level-1) or a domain (level-2). 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:: no lsp-refresh-interval [level-1 | level-2]
.. index:: {ISIS Command} {lsp-refresh-interval [level-1 | level-2] (1-65235)} {} .. clicmd:: no lsp-refresh-interval [level-1 | level-2]
{ISIS Command} {lsp-refresh-interval [level-1 | level-2] (1-65235)} {} Set LSP refresh interval in seconds, globally, for an area (level-1) or a
.. index:: {ISIS Command} {no lsp-refresh-interval} {} domain (level-2).
{ISIS Command} {no lsp-refresh-interval} {} .. index:: max-lsp-lifetime (360-65535)
.. index:: {ISIS Command} {no lsp-refresh-interval [level-1 | level-2]} {} .. clicmd:: max-lsp-lifetime (360-65535)
{ISIS Command} {no lsp-refresh-interval [level-1 | level-2]} {} .. index:: max-lsp-lifetime [level-1 | level-2] (360-65535)
Set LSP refresh interval in seconds, globally, for an area (level-1) or a domain (level-2). .. 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:: no max-lsp-lifetime [level-1 | level-2]
.. index:: {ISIS Command} {lsp-refresh-interval [level-1 | level-2] (1-65235)} {} .. clicmd:: no max-lsp-lifetime [level-1 | level-2]
{ISIS Command} {lsp-refresh-interval [level-1 | level-2] (1-65235)} {} Set LSP maximum LSP lifetime in seconds, globally, for an area (level-1) or
.. index:: {ISIS Command} {no lsp-refresh-interval} {} a domain (level-2).
{ISIS Command} {no lsp-refresh-interval} {} .. index:: spf-interval (1-120)
.. index:: {ISIS Command} {no lsp-refresh-interval [level-1 | level-2]} {} .. clicmd:: spf-interval (1-120)
{ISIS Command} {no lsp-refresh-interval [level-1 | level-2]} {} .. index:: spf-interval [level-1 | level-2] (1-120)
Set LSP refresh interval in seconds, globally, for an area (level-1) or a domain (level-2). .. 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:: no spf-interval [level-1 | level-2]
.. index:: {ISIS Command} {max-lsp-lifetime [level-1 | level-2] (360-65535)} {} .. 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. Set minimum interval between consecutive SPF calculations in seconds.
.. _ISIS_region: .. _ISIS_region:
@ -188,259 +173,275 @@ ISIS Timer
ISIS region 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:: no is-type
.. index:: {ISIS Command} {no is-type} {} .. clicmd:: no is-type
{ISIS Command} {no is-type} {}
Define the ISIS router behavior: 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-1
- level-2-only Act as an area router only 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:
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:: no ip router isis WORD
.. index:: {Interface Command} {no ip router isis WORD} {} .. clicmd:: no ip router isis WORD
{Interface Command} {no ip router isis WORD} {} .. _ip_router_isis_WORD:
.. _ip_router_isis_WORD:
Activate ISIS adjacency on this interface. Note that the name 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 of ISIS instance must be the same as the one used to configure the ISIS process
(see command :ref:`router_isis_WORD`). (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:: no isis circuit-type
.. index:: {Interface Command} {no isis circuit-type} {} .. clicmd:: no isis circuit-type
{Interface Command} {no isis circuit-type} {}
Configure circuit type for interface: 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:: isis csnp-interval (1-600)
.. index:: {Interface Command} {isis csnp-interval (1-600) [level-1 | level-2]} {} .. clicmd:: isis csnp-interval (1-600)
{Interface Command} {isis csnp-interval (1-600) [level-1 | level-2]} {} .. index:: isis csnp-interval (1-600) [level-1 | level-2]
.. index:: {Interface Command} {no isis csnp-interval} {} .. clicmd:: isis csnp-interval (1-600) [level-1 | level-2]
{Interface Command} {no isis csnp-interval} {} .. index:: no isis csnp-interval
.. index:: {Interface Command} {no isis csnp-interval [level-1 | level-2]} {} .. clicmd:: no isis csnp-interval
{Interface Command} {no isis csnp-interval [level-1 | level-2]} {} .. index:: no isis csnp-interval [level-1 | level-2]
Set CSNP interval in seconds globally, for an area (level-1) or a domain (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. 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:: isis hello-interval (1-600) [level-1 | level-2]
.. index:: {Interface Command} {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:: no isis hello-interval
.. index:: {Interface Command} {no isis hello-interval} {} .. clicmd:: no isis hello-interval
{Interface Command} {no isis hello-interval} {} .. index:: no isis hello-interval [level-1 | level-2]
.. index:: {Interface Command} {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
Set Hello interval in seconds globally, for an area (level-1) or a domain (level-2). (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:: isis hello-multiplier (2-100) [level-1 | level-2]
.. index:: {Interface Command} {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:: no isis hello-multiplier
.. index:: {Interface Command} {no isis hello-multiplier} {} .. clicmd:: no isis hello-multiplier
{Interface Command} {no isis hello-multiplier} {} .. index:: no isis hello-multiplier [level-1 | level-2]
.. index:: {Interface Command} {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
Set multiplier for Hello holding time globally, for an area (level-1) or a domain (level-2). 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:: isis metric [(0-255) | (0-16777215)] [level-1 | level-2]
.. index:: {Interface Command} {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:: no isis metric
.. index:: {Interface Command} {no isis metric} {} .. clicmd:: no isis metric
{Interface Command} {no isis metric} {} .. index:: no isis metric [level-1 | level-2]
.. index:: {Interface Command} {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
Set default metric value globally, for an area (level-1) or a domain (level-2). (level-2). Max value depend if metric support narrow or wide value (see
Max value depend if metric support narrow or wide value (see command :ref:`metric-style`). 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:: no isis network point-to-point
.. index:: {Interface Command} {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). 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:: no isis passive
.. index:: {Interface Command} {no isis passive} {} .. clicmd:: no isis passive
{Interface Command} {no isis passive} {}
Configure the passive mode for this interface. 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:: no isis password
.. index:: {Interface Command} {no isis password} {} .. clicmd:: no isis password
{Interface Command} {no isis password} {} Configure the authentication password (clear or encoded text) for the
Configure the authentication password (clear or encoded text) for the interface. 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:: isis priority (0-127) [level-1 | level-2]
.. index:: {Interface Command} {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:: no isis priority
.. index:: {Interface Command} {no isis priority} {} .. clicmd:: no isis priority
{Interface Command} {no isis priority} {} .. index:: no isis priority [level-1 | level-2]
.. index:: {Interface Command} {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
Set priority for Designated Router election, globally, for the area (level-1) (level-1) or the domain (level-2).
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:: isis psnp-interval (1-120) [level-1 | level-2]
.. index:: {Interface Command} {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:: no isis psnp-interval
.. index:: {Interface Command} {no isis psnp-interval} {} .. clicmd:: no isis psnp-interval
{Interface Command} {no isis psnp-interval} {} .. index:: no isis psnp-interval [level-1 | level-2]
.. index:: {Interface Command} {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
Set PSNP interval in seconds globally, for an area (level-1) or a domain (level-2). (level-2).
.. _Showing_ISIS_information: .. _Showing_ISIS_information:
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. 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. Show information about ISIS node.
.. index:: {Command} {show isis interface} {} .. index:: show isis interface
.. clicmd:: show isis interface
{Command} {show isis interface} {} .. index:: show isis interface detail
.. index:: {Command} {show isis interface detail} {} .. clicmd:: show isis interface detail
{Command} {show isis interface detail} {} .. index:: show isis interface <interface name>
.. index:: {Command} {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
Show state and configuration of ISIS specified interface, or all if no interface is given with or without details.
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:: show isis neighbor <System Id>
.. index:: {Command} {show isis neighbor <System Id>} {} .. clicmd:: show isis neighbor <System Id>
{Command} {show isis neighbor <System Id>} {} .. index:: show isis neighbor detail
.. index:: {Command} {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
Show state and information of ISIS specified neighbor, or all no system id is given with or without details.
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:: show isis database [detail]
.. index:: {Command} {show isis database [detail]} {} .. clicmd:: show isis database [detail]
{Command} {show isis database [detail]} {} .. index:: show isis database <LSP id> [detail]
.. index:: {Command} {show isis database <LSP id> [detail]} {} .. clicmd:: show isis database <LSP id> [detail]
{Command} {show isis database <LSP id> [detail]} {} .. index:: show isis database detail <LSP id>
.. index:: {Command} {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
Show the ISIS database globally, for a specific LSP id without or with details. details.
.. index:: {Command} {show isis topology} {} .. index:: show isis topology
.. clicmd:: show isis topology
{Command} {show isis topology} {} .. index:: show isis topology [level-1|level-2]
.. index:: {Command} {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
Show topology IS-IS paths to Intermediate Systems, globally, (level-1) or domain (level-2).
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
Show the ISIS routing table, as determined by the most recent SPF calculation. calculation.
.. _Traffic_Engineering: .. _ospf-traffic-engineering:
Traffic Engineering Traffic Engineering
=================== ===================
.. index:: {ISIS Command} {mpls-te on} {} .. index:: mpls-te on
.. clicmd:: mpls-te on
{ISIS Command} {mpls-te on} {} .. index:: no mpls-te
.. index:: {ISIS Command} {no mpls-te} {} .. clicmd:: no mpls-te
{ISIS Command} {no mpls-te} {}
Enable Traffic Engineering LSP flooding. 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:: no mpls-te router-address
.. index:: {ISIS Command} {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. 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:: show isis mpls-te interface INTERFACE
.. index:: {Command} {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. 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. Show Traffic Engineering router parameters.
.. _Debugging_ISIS: .. _Debugging_ISIS:
@ -448,110 +449,108 @@ Traffic Engineering
Debugging ISIS Debugging ISIS
============== ==============
.. index:: {Command} {debug isis adj-packets} {} .. index:: debug isis adj-packets
.. clicmd:: debug isis adj-packets
{Command} {debug isis adj-packets} {} .. index:: no debug isis adj-packets
.. index:: {Command} {no debug isis adj-packets} {} .. clicmd:: no debug isis adj-packets
{Command} {no debug isis adj-packets} {}
IS-IS Adjacency related 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:: no debug isis checksum-errors
.. index:: {Command} {no debug isis checksum-errors} {} .. clicmd:: no debug isis checksum-errors
{Command} {no debug isis checksum-errors} {}
IS-IS LSP 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:: no debug isis events
.. index:: {Command} {no debug isis events} {} .. clicmd:: no debug isis events
{Command} {no debug isis events} {}
IS-IS 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:: no debug isis local-updates
.. index:: {Command} {no debug isis local-updates} {} .. clicmd:: no debug isis local-updates
{Command} {no debug isis local-updates} {}
IS-IS local update packets. 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:: no debug isis packet-dump
.. index:: {Command} {no debug isis packet-dump} {} .. clicmd:: no debug isis packet-dump
{Command} {no debug isis packet-dump} {}
IS-IS 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:: no debug isis protocol-errors
.. index:: {Command} {no debug isis protocol-errors} {} .. clicmd:: no debug isis protocol-errors
{Command} {no debug isis protocol-errors} {}
IS-IS LSP 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:: no debug isis route-events
.. index:: {Command} {no debug isis route-events} {} .. clicmd:: no debug isis route-events
{Command} {no debug isis route-events} {}
IS-IS Route related 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:: no debug isis snp-packets
.. index:: {Command} {no debug isis snp-packets} {} .. clicmd:: no debug isis snp-packets
{Command} {no debug isis snp-packets} {}
IS-IS CSNP/PSNP 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:: debug isis spf-statistics
.. index:: {Command} {debug isis spf-statistics} {} .. clicmd:: debug isis spf-statistics
{Command} {debug isis spf-statistics} {} .. index:: debug isis spf-triggers
.. index:: {Command} {debug isis spf-triggers} {} .. clicmd:: debug isis spf-triggers
{Command} {debug isis spf-triggers} {} .. index:: no debug isis spf-events
.. index:: {Command} {no debug isis spf-events} {} .. clicmd:: no debug isis spf-events
{Command} {no debug isis spf-events} {} .. index:: no debug isis spf-statistics
.. index:: {Command} {no debug isis spf-statistics} {} .. clicmd:: no debug isis spf-statistics
{Command} {no debug isis spf-statistics} {} .. index:: no debug isis spf-triggers
.. index:: {Command} {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
IS-IS Shortest Path First Events, Timing and Statistic Data events.
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:: no debug isis update-packets
.. index:: {Command} {no debug isis update-packets} {} .. clicmd:: no debug isis update-packets
{Command} {no debug isis update-packets} {}
Update related 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. Print which ISIS debug level is activate.
ISIS Configuration Examples ISIS Configuration Examples
=========================== ===========================
A simple example, with MD5 authentication enabled: A simple example, with MD5 authentication enabled:::
::
! !
interface eth0 interface eth0
@ -567,9 +566,7 @@ A simple example, with MD5 authentication enabled:
A Traffic Engineering configuration, with Inter-ASv2 support. A Traffic Engineering configuration, with Inter-ASv2 support.
- First, the 'zebra.conf' part: First, the 'zebra.conf' part:::
::
hostname HOSTNAME hostname HOSTNAME
password PASSWORD password PASSWORD
@ -609,9 +606,7 @@ A Traffic Engineering configuration, with Inter-ASv2 support.
mpls-te neighbor 10.1.1.2 as 65000 mpls-te neighbor 10.1.1.2 as 65000
- Then the 'isisd.conf' itself: Then the 'isisd.conf' itself:::
::
hostname HOSTNAME hostname HOSTNAME
password PASSWORD password PASSWORD
@ -631,5 +626,3 @@ A Traffic Engineering configuration, with Inter-ASv2 support.
mpls-te router-address 10.1.1.1 mpls-te router-address 10.1.1.1
! !
line vty line vty

View File

@ -4,18 +4,17 @@
NHRP NHRP
**** ****
*nhrpd* is a daemon to support Next Hop Routing Protocol (NHRP). *nhrpd* is an implementation of the :abbr:NHRP `(Next Hop Routing Protocol)`.
NHRP is described in RFC2332. NHRP is described in :rfc`2332`.
NHRP is used to improve the efficiency of routing computer network NHRP is used to improve the efficiency of routing computer network traffic over
traffic over Non-Broadcast, Multiple Access (NBMA) Networks. NHRP provides :abbr:`NBMA (Non-Broadcast, Multiple Access)` networks. NHRP provides an
an ARP-like solution that allows a system to dynamically learn the NBMA ARP-like solution that allows a system to dynamically learn the NBMA address of
address of the other systems that are part of that network, allowing the other systems that are part of that network, allowing these systems to
these systems to directly communicate without requiring traffic to use directly communicate without requiring traffic to use an intermediate hop.
an intermediate hop.
Cisco Dynamic Multipoint VPN (DMVPN) is based on NHRP, and Cisco Dynamic Multipoint VPN (DMVPN) is based on NHRP, and |PACKAGE_NAME| nhrpd
|PACKAGE_NAME| nhrpd implements this scenario. implements this scenario.
.. _Routing_Design: .. _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 This is similar to Cisco FlexVPN; but in contrast to opennhrp which uses
a generic subnet route. a generic subnet route.
To create NBMA GRE tunnel you might use the following (linux terminal To create NBMA GRE tunnel you might use the following (Linux terminal
commands): commands):::
::
ip tunnel add gre1 mode gre key 42 ttl 64 ip tunnel add gre1 mode gre key 42 ttl 64
ip addr add 10.255.255.2/32 dev gre1 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. 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 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 router bgp 65555
address-family ipv4 unicast 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. if needed. However, the above should be good in most cases.
This kernel NFLOG target's nflog-group is configured in global nhrp config This kernel NFLOG target's nflog-group is configured in global nhrp config
with: with:::
::
nhrp nflog-group 1 nhrp nflog-group 1
To start sending these traffic notices out from hubs, use the nhrp To start sending these traffic notices out from hubs, use the nhrp
per-interface directive: per-interface directive:::
::
interface gre1 interface gre1
ip nhrp redirect ip nhrp redirect
.. _Integration_with_IKE: .. _Integration_with_IKE:
Integration with IKE Integration with IKE

View File

@ -4,35 +4,34 @@
OSPFv3 OSPFv3
****** ******
*ospf6d* is a daemon support OSPF version 3 for IPv6 network. *ospf6d* is a daemon support OSPF version 3 for IPv6 network. OSPF for IPv6 is
OSPF for IPv6 is described in RFC2740. described in :rfc:`2740`.
.. _OSPF6_router: .. _OSPF6_router:
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. 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 Bind interface to specified area, and start sending OSPF packets. `area` can
be specified as 0. 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:: no timers throttle spf
.. index:: {OSPF6 Command} {no timers throttle spf} {} .. clicmd:: no timers throttle spf
{OSPF6 Command} {no timers throttle spf} {}
This command sets the initial `delay`, the `initial-holdtime` This command sets the initial `delay`, the `initial-holdtime`
and the `maximum-holdtime` between when SPF is calculated and the and the `maximum-holdtime` between when SPF is calculated and the
event which triggered the calculation. The times are specified in 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 will cause the holdtime to be increased by `initial-holdtime`, bounded
by the `maximum-holdtime` configured with this command. If the adaptive by the `maximum-holdtime` configured with this command. If the adaptive
hold-time elapses without any SPF-triggering event occuring then 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 router ospf6
timers throttle spf 200 400 10000 timers throttle spf 200 400 10000
In this example, the `delay` is set to 200ms, the @var{initial In this example, the `delay` is set to 200ms, the initial holdtime is set
holdtime} is set to 400ms and the `maximum holdtime` to 10s. Hence to 400ms and the `maximum holdtime` to 10s. Hence there will always be at
there will always be at least 200ms between an event which requires SPF least 200ms between an event which requires SPF calculation and the actual
calculation and the actual SPF calculation. Further consecutive SPF SPF calculation. Further consecutive SPF calculations will always be
calculations will always be seperated by between 400ms to 10s, the seperated by between 400ms to 10s, the hold-time increasing by 400ms each
hold-time increasing by 400ms each time an SPF-triggering event occurs time an SPF-triggering event occurs within the hold-time of the previous
within the hold-time of the previous SPF calculation. 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:: no auto-cost reference-bandwidth
.. index:: {OSPF6 Command} {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 This sets the reference bandwidth for cost calculations, where this
bandwidth is considered equivalent to an OSPF cost of 1, specified in 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 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 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 Sets interface's output cost. Default value depends on the interface
bandwidth and on the auto-cost reference bandwidth. 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 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. 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. 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. 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. 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. Set explicitly network type for specifed interface.
.. _Redistribute_routes_to_OSPF6: .. _Redistribute_routes_to_OSPF6:
@ -134,55 +131,55 @@ OSPF6 interface
Redistribute routes to OSPF6 Redistribute routes to OSPF6
============================ ============================
.. index:: {OSPF6 Command} {redistribute static} {} .. index:: redistribute static
.. clicmd:: redistribute static
{OSPF6 Command} {redistribute static} {} .. index:: redistribute connected
.. index:: {OSPF6 Command} {redistribute connected} {} .. clicmd:: redistribute connected
{OSPF6 Command} {redistribute connected} {} .. index:: redistribute ripng
.. index:: {OSPF6 Command} {redistribute ripng} {} .. clicmd:: redistribute ripng
{OSPF6 Command} {redistribute ripng} {}
.. _Showing_OSPF6_information: .. _Showing_OSPF6_information:
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 is an optional OSPF instance ID. To see router ID and OSPF
instance ID, simply type "show ipv6 ospf6 <cr>". 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. 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. 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. 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. 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. 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 Shows state about what is being redistributed between zebra and OSPF6
OSPF6 Configuration Examples 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 area 0.0.0.0 range 2001:770:105:2::/64
interface eth0 area 0.0.0.0 interface eth0 area 0.0.0.0
! !

View File

@ -4,7 +4,6 @@ OSPF Fundamentals
================= =================
.. index:: Link-state routing protocol .. index:: Link-state routing protocol
.. index:: Distance-vector routing protocol .. index:: Distance-vector routing protocol
:abbr:`OSPF` is, mostly, a link-state routing protocol. In contrast :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. routers.
.. index:: Link State Announcement .. index:: Link State Announcement
.. index:: Link State Advertisement .. index:: Link State Advertisement
.. index:: LSA flooding .. index:: LSA flooding
.. index:: Link State Database
.. index:: Link State DataBase
Each router describes their link-state information in a message known Each router describes their link-state information in a message known
as an :abbr:`LSA (Link State Advertisement)`, which is then propogated 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: broadly classed as:
.. index:: OSPF Hello Protocol overview .. index:: OSPF Hello Protocol
The Hello Protocol
^^^^^^^^^^^^^^^^^^
*The Hello Protocol* The OSPF Hello protocol allows OSPF to quickly detect changes in two-way
.. index:: OSPF Hello Protocol 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)`.
The OSPF Hello protocol allows OSPF to quickly detect changes in OSPF also uses the Hello protocol to propagate certain state between routers
two-way reachability between routers on a link. OSPF can additionally sharing a link, for example:
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)`.
OSPF also uses the Hello protocol to propagate certain state between - Hello protocol configured state, such as the dead-interval.
routers sharing a link, for example: - 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.
*Hello protocol configured state, such as the dead-interval.* .. index:: OSPF LSA overview
.. _ospf-lsas:
*Router priority, for DR/BDR election.* LSAs
^^^^
*DR/BDR election results.* 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:
*Any optional capabilities supported by each router.* - Routers, in terms of their links.
- Networks, in terms of attached routers.
- Routes, external to a link-state domain:
The Hello protocol is comparatively trivial and will not be explored in External Routes
greater detail than here.
.. index:: OSPF LSA overview
*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:
*External Routes*
Routes entirely external to :abbr:`OSPF`. Routers originating such Routes entirely external to :abbr:`OSPF`. Routers originating such
routes are known as :abbr:`ASBR (Autonomous-System Border Router)` routes are known as :abbr:`ASBR (Autonomous-System Border Router)`
routers. routers.
Summary Routes
*Summary Routes*
Routes which summarise routing information relating to OSPF areas Routes which summarise routing information relating to OSPF areas
external to the OSPF link-state area at hand, originated by external to the OSPF link-state area at hand, originated by
:abbr:`ABR (Area Boundary Router)` routers. :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.
:ref:`OSPF_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.
.. index:: OSPF Areas overview :ref:`OSPF_Flooding`.
*Areas* .. index:: OSPF Areas overview
OSPF provides for the protocol to be broken up into multiple smaller .. _ospf-areas:
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. 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`. 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.
OSPF LSAs OSPF LSAs
--------- ---------
:abbr:`LSA`s are the core object in OSPF. Everything else in OSPF The core objects in OSPF are :abbr:`LSA` s. Everything else in OSPF revolves
revolves around detecting what to describe in LSAs, when to update around detecting what to describe in LSAs, when to update them, how to flood
them, how to flood them throughout a network and how to calculate them throughout a network and how to calculate routes from them.
routes from them.
There are a variety of different :abbr:`LSA`s, for purposes such There are a variety of different :abbr:`LSA` s, for purposes such as describing
as describing actual link-state information, describing paths (i.e. actual link-state information, describing paths (i.e. routes), describing
routes), describing bandwidth usage of links for bandwidth usage of links for :abbr:`TE (Traffic Engineering)` purposes, and
:abbr:`TE (Traffic Engineering)` purposes, and even arbitrary data even arbitrary data by way of *Opaque* :abbr:`LSA` s.
by way of *Opaque* :abbr:`LSA`s.
LSA Header LSA Header
^^^^^^^^^^ ^^^^^^^^^^
All LSAs share a common header with the following information: All LSAs share a common header with the following information:
* Type - Type
Different types of :abbr:`LSA`s describe different things in Different types of :abbr:`LSA` s describe different things in
:abbr:`OSPF`. Types include: :abbr:`OSPF`. Types include:
* Router LSA - Router LSA
* Network LSA - Network LSA
* Network Summary LSA - Network Summary LSA
* Router Summary LSA - Router Summary LSA
* AS-External LSA - AS-External LSA
The specifics of the different types of LSA are examined below. 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`. 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 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 information the LSA describes, e.g. a Router LSA uses the Router ID as
@ -202,9 +188,9 @@ All LSAs share a common header with the following information:
an LSA with the same Type, LSA ID and Advertising Router ID, see an LSA with the same Type, LSA ID and Advertising Router ID, see
:ref:`OSPF_LSA_sequence_number,,LSA_Sequence_Number`. :ref:`OSPF_LSA_sequence_number,,LSA_Sequence_Number`.
* Age - Age
A number to allow stale :abbr:`LSA`s to, eventually, be purged by routers A number to allow stale :abbr:`LSA` s to, eventually, be purged by routers
from their :abbr:`LSDB`s. from their :abbr:`LSDB`s.
The value nominally is one of seconds. An age of 3600, i.e. 1 hour, is The value nominally is one of seconds. An age of 3600, i.e. 1 hour, is
@ -222,51 +208,47 @@ All LSAs share a common header with the following information:
.. _OSPF_LSA_sequence_number: .. _OSPF_LSA_sequence_number:
* Sequence Number - Sequence Number
A number used to distinguish newer instances of an LSA from older instances. A number used to distinguish newer instances of an LSA from older instances.
Link-State LSAs Link-State LSAs
^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^
Of all the various kinds of :abbr:`LSA`s, just two types comprise the Of all the various kinds of :abbr:`LSA` s, just two types comprise the
actual link-state part of :abbr:`OSPF`, Router :abbr:`LSA`s and actual link-state part of :abbr:`OSPF`, Router :abbr:`LSA` s and
Network :abbr:`LSA`s. These LSA types are absolutely core to the Network :abbr:`LSA` s. These LSA types are absolutely core to the
protocol. protocol.
Instances of these LSAs are specific to the link-state area in which Instances of these LSAs are specific to the link-state area in which
they are originated. Routes calculated from these two LSA types are they are originated. Routes calculated from these two LSA types are
called :term:`intra-area routes`. called :term:`intra-area routes`.
* Router LSA - Router LSA
Each OSPF Router must originate a router :abbr:`LSA` to describe Each OSPF Router must originate a router :abbr:`LSA` to describe
itself. In it, the router lists each of its :abbr:`OSPF` enabled itself. In it, the router lists each of its :abbr:`OSPF` enabled
interfaces, for the given link-state area, in terms of: interfaces, for the given link-state area, in terms of:
* Cost Cost
The output cost of that interface, scaled inversely to some commonly known The output cost of that interface, scaled inversely to some commonly known
reference value, :ref:`OSPF_auto-cost_reference-bandwidth,,auto-cost_reference-bandwidth`. reference value, :ref:`OSPF_auto-cost_reference-bandwidth,,auto-cost_reference-bandwidth`.
* Link Type Link Type
Transit Network
* Transit Network
A link to a multi-access network, on which the router has at least one A link to a multi-access network, on which the router has at least one
Full adjacency with another router. 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 A link to a single remote router, with a Full adjacency. No
:abbr:`DR (Designated Router)` is elected on such links; no network :abbr:`DR (Designated Router)` is elected on such links; no network
LSA is originated for such a link. LSA is originated for such a link.
* Stub Stub
A link with no adjacent neighbours, or a host route. 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: These values depend on the Link Type:
@ -282,36 +264,37 @@ called :term:`intra-area routes`.
| Stub | IP address | Subnet Mask | | Stub | IP address | Subnet Mask |
+----------------+-----------------------------------+------------------------------------------+ +----------------+-----------------------------------+------------------------------------------+
Links on a router may be listed multiple times in the Router LSA, e.g. Links on a router may be listed multiple times in the Router LSA, e.g. a
a :abbr:`PtP` interface on which OSPF is enabled must *always* :abbr:`PtP` interface on which OSPF is enabled must *always* be described
be described by a Stub link in the Router :abbr:`LSA`, in addition to by a Stub link in the Router :abbr:`LSA`, in addition to being listed as
being listed as PtP link in the Router :abbr:`LSA` if the adjacency PtP link in the Router :abbr:`LSA` if the adjacency with the remote router
with the remote router is Full. is Full.
Stub links may also be used as a way to describe links on which OSPF is 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 On multi-access links (e.g. ethernets, certain kinds of ATM and X.25
configurations), routers elect a :abbr:`DR`. The :abbr:`DR` is configurations), routers elect a :abbr:`DR`. The :abbr:`DR` is
responsible for originating a Network :abbr:`LSA`, which helps reduce responsible for originating a Network :abbr:`LSA`, which helps reduce
the information needed to describe multi-access networks with multiple the information needed to describe multi-access networks with multiple
routers attached. The :abbr:`DR` also acts as a hub for the flooding of routers attached. The :abbr:`DR` also acts as a hub for the flooding of
:abbr:`LSA`s on that link, thus reducing flooding overheads. :abbr:`LSA` s on that link, thus reducing flooding overheads.
The contents of the Network LSA describes the: 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 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 :abbr:`DR`, the Subnet Mask together with the :abbr:`LSA` ID gives
you the network address. you the network address.
* Attached Routers - Attached Routers
Each router fully-adjacent with the :abbr:`DR` is listed in the LSA, 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 by their Router-ID. This allows the corresponding Router :abbr:`LSA` s to be
easily retrieved from the :abbr:`LSDB`. easily retrieved from the :abbr:`LSDB`.
Summary of Link State LSAs: Summary of Link State LSAs:
@ -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 stage of :abbr:`SPF` calculation concerns itself only with these two
LSA types. LSA types.
.. _ospf-link-state-lsa-examples:
Link-State LSA Examples Link-State LSA Examples
^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^
The example below (:ref:`OSPF_Link-State_LSA_Example`) shows two The example below shows two :abbr:`LSA` s, both originated by the same router
:abbr:`LSA`s, both originated by the same router (Router ID (Router ID 192.168.0.49) and with the same :abbr:`LSA` ID (192.168.0.49), but
192.168.0.49) and with the same :abbr:`LSA` ID (192.168.0.49), but of of different LSA types.
different LSA types.
The first LSA being the router LSA describing 192.168.0.49's links: 2 links 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 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 :abbr:`DR`, listing the Router IDs of 4 routers on that network which
are fully adjacent with 192.168.0.49. are fully adjacent with 192.168.0.49.
.. _OSPF_Link-State_LSA_Example:
:: ::
# show ip ospf database router 192.168.0.49 # show ip ospf database router 192.168.0.49
@ -424,7 +406,7 @@ as their LSA ID, so you can then look up that Network LSA and from that
find all the attached routers on that link, leading potentially to more find all the attached routers on that link, leading potentially to more
links and Network and Router LSAs, etc. etc. links and Network and Router LSAs, etc. etc.
From just the above two :abbr:`LSA`s, one can already see the From just the above two :abbr:`LSA` s, one can already see the
following partial topology: following partial topology:
:: ::
@ -458,66 +440,57 @@ reachable addresses (though, OSPF will calculate routes to Router IDs).
External LSAs External LSAs
^^^^^^^^^^^^^ ^^^^^^^^^^^^^
External, or "Type 5", :abbr:`LSA`s describe routing information which is External, or "Type 5", :abbr:`LSA` s describe routing information which is
entirely external to :abbr:`OSPF`, and is "injected" into entirely external to :abbr:`OSPF`, and is "injected" into
:abbr:`OSPF`. Such routing information may have come from another :abbr:`OSPF`. Such routing information may have come from another
routing protocol, such as RIP or BGP, they may represent static routes routing protocol, such as RIP or BGP, they may represent static routes
or they may represent a default route. or they may represent a default route.
An :abbr:`OSPF` router which originates External :abbr:`LSA`s is known as an An :abbr:`OSPF` router which originates External :abbr:`LSA` s is known as an
:abbr:`ASBR (AS Boundary Router)`. Unlike the link-state :abbr:`LSA`s, and :abbr:`ASBR (AS Boundary Router)`. Unlike the link-state :abbr:`LSA` s, and
most other :abbr:`LSA`s, which are flooded only within the area in most other :abbr:`LSA` s, which are flooded only within the area in
which they originate, External :abbr:`LSA`s are flooded through-out which they originate, External :abbr:`LSA` s are flooded through-out
the :abbr:`OSPF` network to all areas capable of carrying External the :abbr:`OSPF` network to all areas capable of carrying External
:abbr:`LSA`s (:ref:`OSPF_Areas`). :abbr:`LSA` s (:ref:`OSPF_Areas`).
Routes internal to OSPF (intra-area or inter-area) are always preferred Routes internal to OSPF (intra-area or inter-area) are always preferred
over external routes. over external routes.
The External :abbr:`LSA` describes the following: 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 IP Network Mask
field. 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 Forwarding Address
route. This, together with the :abbr:`LSA` ID, describes the prefix The address of the router to forward packets to for the route. This may be,
of the IP route concerned. 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 Tag
An arbitrary 4-bytes of data, not interpreted by OSPF, which may carry
The cost of the External Route. This cost may be an OSPF cost (also whatever information about the route which OSPF speakers desire.
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.
AS External LSA Example AS External LSA Example
^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^
To illustrate, below is an example of an External :abbr:`LSA` in the 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 :abbr:`LSDB` of an OSPF router. It describes a route to the IP prefix of
of 192.168.165.0/24, originated by the ASBR with Router-ID 192.168.165.0/24, originated by the ASBR with Router-ID 192.168.0.49. The
192.168.0.49. The metric of 20 is external to OSPF. The forwarding metric of 20 is external to OSPF. The forwarding address is 0, so the route
address is 0, so the route should forward to the originating ASBR if should forward to the originating ASBR if selected.
selected.
:: ::
@ -540,8 +513,7 @@ selected.
We can add this to our partial topology from above, which now looks We can add this to our partial topology from above, which now looks
like: like:::
::
--------------------- Network: ...... --------------------- Network: ......
| Designated Router IP: 192.168.1.3 | Designated Router IP: 192.168.1.3
@ -568,16 +540,6 @@ like:
Summary LSAs 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. 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,
.. _OSPF_Flooding: potentially in aggregated form, or :abbr:`ASBR` routers.
OSPF Flooding
-------------
.. _OSPF_Areas:
OSPF Areas
----------

File diff suppressed because it is too large Load Diff

View File

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

View File

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

View File

@ -4,16 +4,16 @@
RIPng RIPng
***** *****
*ripngd* supports the RIPng protocol as described in RFC2080. It's an *ripngd* supports the RIPng protocol as described in :rfc:`2080`. It's an IPv6
IPv6 reincarnation of the RIP protocol. reincarnation of the RIP protocol.
.. _Invoking_ripngd: .. _Invoking_ripngd:
Invoking ripngd Invoking ripngd
=============== ===============
There are no `ripngd` specific invocation options. Common options There are no `ripngd` specific invocation options. Common options can be
can be specified (:ref:`Common_Invocation_Options`). specified (:ref:`Common_Invocation_Options`).
.. _ripngd_Configuration: .. _ripngd_Configuration:
@ -22,72 +22,68 @@ ripngd Configuration
Currently ripngd supports the following commands: Currently ripngd supports the following commands:
.. index:: Command {router ripng} {} .. index:: router ripng
.. clicmd:: router ripng
Command {router ripng} {}
Enable 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. 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 command is the default and does not appear in the configuration. this statement, RIPng routes go to the *zebra* daemon.
With this statement, RIPng routes go to the *zebra* daemon.
.. _ripngd_Terminal_Mode_Commands: .. _ripngd_Terminal_Mode_Commands:
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:: debug ripng packet
.. index:: Command {debug ripng events} {} .. clicmd:: debug ripng packet
Command {debug ripng events} {} .. index:: debug ripng zebra
.. index:: Command {debug ripng packet} {} .. clicmd:: debug ripng zebra
Command {debug ripng packet} {}
.. index:: Command {debug ripng zebra} {}
Command {debug ripng zebra} {}
ripngd Filtering Commands 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`
You can apply an access-list to the interface using the command. ACCESS_LIST is an access-list name. `direct` is ``in`` or
`distribute-list` command. `access_list` is an access-list ``out``. If `direct` is ``in``, the access-list is applied only to incoming
name. `direct` is ``in`` or ``out``. If `direct` is packets.::
``in``, the access-list is applied only to incoming packets.
::
distribute-list local-only out sit1 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 This means that if a route matches ip access-list number 10 it's
local-preference value is set to 200. 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. useage of route-maps, including of the ``call`` action.

View File

@ -3,33 +3,26 @@
Prefix Origin Validation Using RPKI Prefix Origin Validation Using RPKI
=================================== ===================================
Prefix Origin Validation allows BGP routers to verify if the origin AS of Prefix Origin Validation allows BGP routers to verify if the origin AS of an IP
an IP prefix is legitimate to announce this IP prefix. The required prefix is legitimate to announce this IP prefix. The required attestation
attestation objects are stored in the Resource Public Key Infrastructure objects are stored in the Resource Public Key Infrastructure (:abbr:`RPKI`).
(:abbr:`RPKI`). However, RPKI-enabled routers do not store cryptographic However, RPKI-enabled routers do not store cryptographic data itself but only
data itself but only validation information. The validation of the validation information. The validation of the cryptographic data (so called
cryptographic data (so called Route Origin Authorization, or short Route Origin Authorization, or short :abbr:`ROA`, objects) will be performed by
:abbr:`ROA`, objects) will be performed by trusted cache servers. The trusted cache servers. The RPKI/RTR protocol defines a standard mechanism to
RPKI/RTR protocol defines a standard mechanism to maintain the exchange of maintain the exchange of the prefix/origin AS mapping between the cache server
the prefix/origin AS mapping between the cache server and routers. and routers. In combination with a BGP Prefix Origin Validation scheme a
In combination with a BGP Prefix Origin Validation scheme a router is able router is able to verify received BGP updates without suffering from
to verify received BGP updates without suffering from cryptographic cryptographic complexity.
complexity.
The RPKI/RTR protocol is defined in :rfc:`6810` and the validation scheme in 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 :rfc:`6811`. The current version of Prefix Origin Validation in FRR implements
both RFCs. both RFCs.
For a more detailed but still easy-to-read background, we suggest the For a more detailed but still easy-to-read background, we suggest:
following two articles:
* @cite{Geoff Huston, Randy Bush: Securing BGP, In: The Internet - [Securing-BGP]_
Protocol Journal, Volume 14, No. 2, 2011.} - [Resource-Certification]_
`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>`_
.. _Features_of_the_Current_Implementation: .. _Features_of_the_Current_Implementation:
@ -38,24 +31,19 @@ Features of the Current Implementation
In a nutshell, the current implementation provides the following features In a nutshell, the current implementation provides the following features
* The BGP router can connect to one or more RPKI cache servers to - The BGP router can connect to one or more RPKI cache servers to receive
receive validated prefix to origin AS mappings. validated prefix to origin AS mappings. Advanced failover can be implemented
Advanced failover can be implemented by server sockets with different by server sockets with different preference values.
preference values. - If no connection to an RPKI cache server can be established after a
* If no connection to an RPKI cache server can be established after a
pre-defined timeout, the router will process routes without prefix origin pre-defined timeout, the router will process routes without prefix origin
validation. It still will try to establish a connection to an RPKI cache validation. It still will try to establish a connection to an RPKI cache
server in the background. server in the background.
- By default, enabling RPKI does not change best path selection. In particular,
* By default, enabling RPKI does not change best path selection. In invalid prefixes will still be considered during best path selection.
particular, invalid prefixes will still be considered during best path However, the router can be configured to ignore all invalid prefixes.
selection. However, the router can be configured to ignore all invalid - Route maps can be configured to match a specific RPKI validation state. This
prefixes. allows the creation of local policies, which handle BGP routes based on the
outcome of the Prefix Origin Validation.
* 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: .. _Enabling_RPKI:
@ -63,100 +51,95 @@ In a nutshell, the current implementation provides the following features
Enabling RPKI Enabling RPKI
------------- -------------
.. index:: {Command} {rpki} {} .. index:: rpki
.. clicmd:: rpki
{Command} {rpki} {}
This command enables the RPKI configuration mode. Most commands that start This command enables the RPKI configuration mode. Most commands that start
with *rpki* can only be used in this mode. 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. 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 Executing this command alone does not activate prefix validation. You need
validation. You need to configure at least one reachable cache server. See section to configure at least one reachable cache server. See section
:ref:`Configuring_RPKI/RTR_Cache_Servers` for configuring a cache server. :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 Configuring RPKI/RTR Cache Servers
---------------------------------- ----------------------------------
The following commands are independent of a specific cache server. 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:: no rpki polling_period
.. index:: {RPKI Command} {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
Set the number of seconds the router waits until the router asks the cache again again for updated data.
for updated data.
The default value is 300 seconds. 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:: no rpki timeout
.. index:: {RPKI Command} {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
Set the number of seconds the router waits for the cache reply. If the server is not replying within this time period, the router deletes all
cache server is not replying within this time period, the router deletes received prefix records from the prefix table.
all received prefix records from the prefix table.
The default value is 600 seconds. 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:: no rpki initial-synchronisation-timeout
.. index:: {RPKI Command} {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 Set the number of seconds until the first synchronization with the cache
server needs to be completed. If the timeout expires, BGP routing is server needs to be completed. If the timeout expires, BGP routing is started
started without RPKI. The router will try to establish the cache server without RPKI. The router will try to establish the cache server connection in
connection in the background. the background.
The default value is 30 seconds. The default value is 30 seconds.
The following commands configure one or multiple cache servers. 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:: no rpki cache (A.B.C.D|WORD) [PORT] PREFERENCE
.. index:: {RPKI Socket Command} {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
Add a cache server to the socket. By default, the connection between and cache server is based on plain TCP. Protecting the connection between
router and cache server is based on plain TCP. Protecting the connection router and cache server by SSH is optional. Deleting a socket removes the
between router and cache server by SSH is optional. associated cache server and terminates the existing connection.
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. Address of the cache server.
PORT
*`PORT`*
Port number to connect to the cache server Port number to connect to the cache server
SSH_USERNAME
*`SSH_USERNAME`*
SSH username to establish an SSH connection to the cache server. 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. 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. Local path that includes the public key file of the router.
*`KNOWN_HOSTS_PATH`* KNOWN_HOSTS_PATH
Local path that includes the known hosts file. The default value depends on the Local path that includes the known hosts file. The default value depends
configuration of the operating system environment, usually on the configuration of the operating system environment, usually
:file:`~/.ssh/known_hosts`. :file:`~/.ssh/known_hosts`.
@ -165,21 +148,23 @@ The following commands are independent of a specific cache server.
Validating BGP Updates 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:: no match rpki notfound|invalid|valid
.. index:: {Route Map Command} {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
Create a clause for a route map to match prefixes with the specified RPKI state. state.
**Note** that the matching of invalid prefixes requires that invalid **Note** that the matching of invalid prefixes requires that invalid
prefixes are considered for best path selection, i.e., @command{bgp prefixes are considered for best path selection, i.e.,
bestpath prefix-validate disallow-invalid} is not enabled. ``bgp bestpath prefix-validate disallow-invalid`` is not enabled.
In the following example, the router prefers valid routes over invalid In the following example, the router prefers valid routes over invalid
prefixes because invalid routes have a lower local preference. prefixes because invalid routes have a lower local preference.
::
::
! Allow for invalid routes in route selection process ! Allow for invalid routes in route selection process
route bgp 60001 route bgp 60001
@ -195,18 +180,17 @@ Validating BGP Updates
set local-preference 500 set local-preference 500
.. _Debugging: .. _Debugging:
Debugging Debugging
--------- ---------
.. index:: {Command} {debug rpki} {} .. index:: debug rpki
.. clicmd:: debug rpki
{Command} {debug rpki} {} .. index:: no debug rpki
.. index:: {Command} {no debug rpki} {} .. clicmd:: no debug rpki
{Command} {no debug rpki} {}
Enable or disable debugging output for RPKI. Enable or disable debugging output for RPKI.
.. _Displaying_RPKI: .. _Displaying_RPKI:
@ -214,16 +198,16 @@ Debugging
Displaying RPKI 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 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, received from the cache servers and stored in the router. Based on this data,
the router validates BGP Updates. 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. Display all configured cache servers, whether active or not.
RPKI Configuration Example RPKI Configuration Example
@ -273,4 +257,5 @@ RPKI Configuration Example
route-map rpki permit 40 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 SNMP Support
************ ************
:abbr:`SNMP (Simple Network Managing Protocol)` is a widely implemented :abbr:`SNMP (Simple Network Managing Protocol)` is a widely implemented feature
feature for collecting network information from router and/or host. for collecting network information from router and/or host. FRR itself does
FRR itself does not support SNMP agent (server daemon) functionality not support SNMP agent (server daemon) functionality but is able to connect to
but is able to connect to a SNMP agent using the SMUX protocol a SNMP agent using the SMUX protocol (:rfc:`1227`) or the AgentX protocol
(:rfc:`1227`) or the AgentX protocol (:rfc:`2741`) and make the (:rfc:`2741`) and make the routing protocol MIBs available through it.
routing protocol MIBs available through it.
Note that SNMP Support needs to be enabled at compile-time and loaded as Note that SNMP Support needs to be enabled at compile-time and loaded as module
module on daemon startup. Refer to :ref:`Loadable_Module_Support` on on daemon startup. Refer to :ref:`Loadable_Module_Support` on the latter.
the latter.
.. _Getting_and_installing_an_SNMP_agent: .. _Getting_and_installing_an_SNMP_agent:
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 There are several SNMP agent which support SMUX or AgentX. We recommend to use
version of `net-snmp` which was formerly known as `ucd-snmp`. the latest version of `net-snmp` which was formerly known as `ucd-snmp`. It is
It is free and open software and available at `http://www.net-snmp.org/ <http://www.net-snmp.org/>`_ 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. and as binary package for most Linux distributions. `net-snmp` has to be
`net-snmp` has to be compiled with `--with-mib-modules=agentx` to compiled with `--with-mib-modules=agentx` to be able to accept connections from
be able to accept connections from FRR using AgentX protocol or with FRR using AgentX protocol or with `--with-mib-modules=smux` to use SMUX
`--with-mib-modules=smux` to use SMUX protocol. protocol.
Nowadays, SMUX is a legacy protocol. The AgentX protocol should be Nowadays, SMUX is a legacy protocol. The AgentX protocol should be preferred
preferred for any new deployment. Both protocols have the same coverage. for any new deployment. Both protocols have the same coverage.
.. _AgentX_configuration: .. _AgentX_configuration:
AgentX configuration AgentX configuration
==================== ====================
.. program:: configure
To enable AgentX protocol support, FRR must have been build with the To enable AgentX protocol support, FRR must have been build with the
`--enable-snmp` or `--enable-snmp=agentx` option. Both the :option:`--enable-snmp` or `--enable-snmp=agentx` option. Both the
master SNMP agent (snmpd) and each of the FRR daemons must be master SNMP agent (snmpd) and each of the FRR daemons must be configured. In
configured. In `/etc/snmp/snmpd.conf`, `master agentx` :file:`/etc/snmp/snmpd.conf`, the ``master agentx`` directive should be added.
directive should be added. In each of the FRR daemons, `agentx` In each of the FRR daemons, ``agentx`` command will enable AgentX support.
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 Upon successful connection, you should get something like this in the log of
log of each FRR daemons: 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 The AgentX protocol can be transported over a Unix socket or using TCP or UDP.
or UDP. It usually defaults to a Unix socket and depends on how NetSNMP It usually defaults to a Unix socket and depends on how NetSNMP was built. If
was built. If need to configure FRR to use another transport, you can need to configure FRR to use another transport, you can configure it through
configure it through `/etc/snmp/frr.conf`: :file:`/etc/snmp/frr.conf`:
:: ::
@ -101,18 +100,17 @@ SMUX configuration
================== ==================
To enable SMUX protocol support, FRR must have been build with the 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 A separate connection has then to be established between the SNMP agent (snmpd)
SNMP agent (snmpd) and each of the FRR daemons. This connections and each of the FRR daemons. This connections each use different OID numbers
each use different OID numbers and passwords. Be aware that this OID and passwords. Be aware that this OID number is not the one that is used in
number is not the one that is used in queries by clients, it is solely queries by clients, it is solely used for the intercommunication of the
used for the intercommunication of the daemons. daemons.
In the following example the ospfd daemon will be connected to the In the following example the ospfd daemon will be connected to the snmpd daemon
snmpd daemon using the password "frr_ospfd". For testing it is using the password "frr_ospfd". For testing it is recommending to take exactly
recommending to take exactly the below snmpd.conf as wrong access the below snmpd.conf as wrong access restrictions can be hard to debug.
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 After restarting snmpd and frr, a successful connection can be verified in the
the syslog and by querying the SNMP daemon: 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 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. 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 If that is a problem you should consider to patch snmpd and comment out the
troublesome `snmp_log()` line in the function troublesome `snmp_log()` line in the function `netsnmp_agent_check_packet()` in
`netsnmp_agent_check_packet()` in `agent/snmp_agent.c`. `agent/snmp_agent.c`.
MIB and command reference MIB and command reference
========================= =========================
The following OID numbers are used for the interprocess communication of snmpd and 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 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 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 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 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 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 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 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: The following syntax is understood by the FRR daemons for configuring SNMP
.. index:: {Command} {smux peer `oid`} {} using SMUX:
{Command} {smux peer `oid`} {} .. index:: smux peer OID
.. index:: {Command} {no 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`} {} Here is the syntax for using AgentX:
.. index:: {Command} {smux peer `oid` `password`} {} .. index:: agentx
.. clicmd:: agentx
.. index:: no agentx
.. clicmd:: no agentx
{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} {}
{Command} {no agentx} {}
.. include:: snmptrap.rst .. include:: snmptrap.rst

View File

@ -1,18 +1,18 @@
Handling SNMP Traps Handling SNMP Traps
=================== ===================
To handle snmp traps make sure your snmp setup of frr works To handle snmp traps make sure your snmp setup of frr works correctly as
correctly as described in the frr documentation in :ref:`SNMP_Support`. described in the frr documentation in :ref:`SNMP_Support`.
The BGP4 mib will send traps on peer up/down events. These should be The BGP4 mib will send traps on peer up/down events. These should be visible in
visible in your snmp logs with a message similar to: your snmp logs with a message similar to:
:: ::
snmpd[13733]: Got trap from peer on fd 14 snmpd[13733]: Got trap from peer on fd 14
To react on these traps they should be handled by a trapsink. Configure To react on these traps they should be handled by a trapsink. Configure your
your trapsink by adding the following lines to :file:`/etc/snmpd/snmpd.conf`: 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 trapsink localhost
This will send all traps to an snmptrapd running on localhost. You can This will send all traps to an snmptrapd running on localhost. You can of
of course also use a dedicated management station to catch traps. course also use a dedicated management station to catch traps. Configure the
Configure the snmptrapd daemon by adding the following line to snmptrapd daemon by adding the following line to
:file:`/etc/snmpd/snmptrapd.conf`: :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 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 the BGP4 traps. To add traps for other protocol daemons, lookup their
appropriate OID from their mib. (For additional information about which appropriate OID from their mib. (For additional information about which traps
traps are supported by your mib, lookup the mib on are supported by your mib, lookup the mib on
`http://www.oidview.com/mibs/detail.html <http://www.oidview.com/mibs/detail.html>`_). `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 The snmptrap_handle.sh script I personally use for handling BGP4 traps is
is below. You can of course do all sorts of things when handling traps, below. You can of course do all sorts of things when handling traps, like sound
like sound a siren, have your display flash, etc., be creative ;). 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 VTY shell
********* *********
*vtysh* provides a combined frontend to all FRR daemons in a .. program:: configure
single combined session. It is enabled by default at build time, but can
be disabled through the *--disable-vtysh* option to
*./configure*.
*vtysh* has a configuration file, :file:`vtysh.conf`. The location *vtysh* provides a combined frontend to all FRR daemons in a single combined
of that file cannot be changed from :file:`|INSTALL_PREFIX_ETC|` since session. It is enabled by default at build time, but can be disabled through
it contains options controlling authentication behavior. This file will the :option:`--disable-vtysh` option to the configure script.
also not be written by configuration-save commands, it is intended to be
updated manually by an administrator with an external editor. *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 Permissions and setup requirements
================================== ==================================
*vtysh* connects to running daemons through Unix sockets located in *vtysh* connects to running daemons through Unix sockets located in
:file:`|INSTALL_PREFIX_STATE|`. Running vtysh thus requires access to |INSTALL_PREFIX_STATE|. Running vtysh thus requires access to that directory,
that directory, plus membership in the *|INSTALL_VTY_GROUP|* plus membership in the |INSTALL_VTY_GROUP| group (which is the group that the
group (which is the group that the daemons will change ownership of their daemons will change ownership of their sockets to).
sockets to).
To restrict access to FRR configuration, make sure no unauthorized users To restrict access to FRR configuration, make sure no unauthorized users are
are members of the *|INSTALL_VTY_GROUP|* group. members of the |INSTALL_VTY_GROUP| group.
PAM support (experimental) PAM support (experimental)
-------------------------- --------------------------
vtysh has working (but rather useless) PAM support. It will perform vtysh has working (but rather useless) PAM support. It will perform an
an "authenticate" PAM call using *|PACKAGE_NAME|* as service "authenticate" PAM call using |PACKAGE_NAME| as service name. No other
name. No other (accounting, session, password change) calls will be (accounting, session, password change) calls will be performed by vtysh.
performed by vtysh.
Users using vtysh still need to have appropriate access to the daemons' Users using vtysh still need to have appropriate access to the daemons' VTY
VTY sockets, usually by being member of the *|INSTALL_VTY_GROUP|* sockets, usually by being member of the |INSTALL_VTY_GROUP| group. If they
group. If they have this membership, PAM support is useless since they can have this membership, PAM support is useless since they can connect to daemons
connect to daemons and issue commands using some other tool. Alternatively, and issue commands using some other tool. Alternatively, the *vtysh* binary
the *vtysh* binary could be made SGID (set group ID) to the could be made SGID (set group ID) to the |INSTALL_VTY_GROUP| group.
*|INSTALL_VTY_GROUP|* group. @strong{No security guarantees are
made for this configuration}.
.. 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 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 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 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:`frr.conf`, for all daemons. This replaces the individual files like
:file:`zebra.conf` or :file:`bgpd.conf`. :file:`zebra.conf` or :file:`bgpd.conf`.
:file:`frr.conf` is located in :file:`|INSTALL_PREFIX_ETC|`. All :file:`frr.conf` is located in |INSTALL_PREFIX_ETC|. All daemons check for the
daemons check for the existence of this file at startup, and if it exists existence of this file at startup, and if it exists will not load their
will not load their individual configuration files. Instead, individual configuration files. Instead, ``vtysh -b`` must be invoked to
*vtysh -b* must be invoked to process :file:`frr.conf` and apply process :file:`frr.conf` and apply its settings to the individual daemons.
its settings to the individual daemons.
.. warning::
*vtysh -b* must also be executed after restarting any daemon.
@quotation Warning
*vtysh -b* must also be executed after restarting any daemon.
@end quotation
Configuration saving, file ownership and permissions Configuration saving, file ownership and permissions
---------------------------------------------------- ----------------------------------------------------
The :file:`frr.conf` file is not written by any of the daemons; instead The :file:`frr.conf` file is not written by any of the daemons; instead *vtysh*
*vtysh* contains the neccessary logic to collect configuration from contains the neccessary logic to collect configuration from all of the daemons,
all of the daemons, combine it and write it out. combine it and write it out.
@quotation Warning .. 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 Daemons must be running for *vtysh* to be able to collect their
system, configuration writes will be tried through *watchfrr*, configuration. Any configuration from non-running daemons is permanently
using the *write integrated* command internally. Since lost after doing a configuration save.
*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, Since the *vtysh* command may be running as ordinary user on the system,
*vtysh* will attempt to directly write to the file. This is likely configuration writes will be tried through *watchfrr*, using the ``write
to fail if running as unprivileged user; alternatively it may leave the integrated`` command internally. Since *watchfrr* is running as superuser,
file with incorrect owner or permissions. *vtysh* is able to ensure correct ownership and permissions on
:file:`frr.conf`.
Writing the configuration can be triggered directly by invoking If *watchfrr* is not running or the configuration write fails, *vtysh* will
*vtysh -w*. This may be useful for scripting. Note this command attempt to directly write to the file. This is likely to fail if running as
should be run as either the superuser or the FRR user. unprivileged user; alternatively it may leave the file with incorrect owner or
permissions.
We recommend you do not mix the use of the two types of files. Further, it Writing the configuration can be triggered directly by invoking *vtysh -w*.
is better not to use the integrated frr.conf file, as any syntax error in This may be useful for scripting. Note this command should be run as either the
it can lead to /all/ of your daemons being unable to start up. Per daemon superuser or the FRR user.
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} {} 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.
{Command} {service integrated-vtysh-config} {} .. index:: service integrated-vtysh-config
.. index:: {Command} {no service integrated-vtysh-config} {} .. clicmd:: 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 Control whether integrated :file:`frr.conf` file is written when
'write file' is issued. 'write file' is issued.
@ -127,22 +129,15 @@ the daemon in whose file the error is made.
This command has 3 states: This command has 3 states:
`` service integrated-vtysh-config
*service integrated-vtysh-config*
*vtysh* will always write :file:`frr.conf`. *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 *vtysh* will never write :file:`frr.conf`; instead it will ask
daemons to write their individual configuration files. daemons to write their individual configuration files.
``
Neither option present (default) Neither option present (default)
*vtysh* will check whether :file:`frr.conf` exists. If it does, *vtysh* will check whether :file:`frr.conf` exists. If it does,
configuration writes will update that file. Otherwise, writes are performed configuration writes will update that file. Otherwise, writes are performed
through the individual daemons. 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 preset one of the two operating modes and ensure consistent operation across
installations. installations.
.. index:: {Command} {write integrated} {} .. index:: write integrated
.. clicmd:: write integrated
{Command} {write integrated} {} Unconditionally (regardless of ``service integrated-vtysh-config`` setting)
Unconditionally (regardless of *service integrated-vtysh-config* write out integrated :file:`frr.conf` file through *watchfrr*. If *watchfrr*
setting) write out integrated :file:`frr.conf` file through is not running, this command is unavailable.
*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
Configuration changes made while some daemon is not running will be invisible :file:`frr.conf`). This is particularly troublesome for route-maps and
to that daemon. The daemon will start up with its saved configuration prefix lists, which would otherwise be synchronized between daemons.
(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.