summaryrefslogtreecommitdiff
path: root/doc/user
diff options
context:
space:
mode:
Diffstat (limited to 'doc/user')
-rw-r--r--doc/user/about.rst (renamed from doc/user/overview.rst)57
-rw-r--r--doc/user/basics.rst23
-rw-r--r--doc/user/bfd.rst19
-rw-r--r--doc/user/bgp.rst58
-rw-r--r--doc/user/conf.py71
-rw-r--r--doc/user/index.rst81
-rw-r--r--doc/user/installation.rst31
-rw-r--r--doc/user/introduction.rst13
-rw-r--r--doc/user/ospfd.rst12
-rw-r--r--doc/user/protocols.rst35
-rw-r--r--doc/user/subdir.am2
11 files changed, 251 insertions, 151 deletions
diff --git a/doc/user/overview.rst b/doc/user/about.rst
index 2ef88acd7a..7d30a86154 100644
--- a/doc/user/overview.rst
+++ b/doc/user/about.rst
@@ -1,47 +1,8 @@
.. _overview:
-********
-Overview
-********
-
-`FRR`_ is a fully featured, high performance, free software IP routing suite.
-
-FRR implements all standard routing protocols such as BGP, RIP, OSPF, IS-IS and
-more (see :ref:`feature-matrix`), as well as many of their extensions.
-
-FRR is a high performance suite written primarily in C. It can easily handle
-full Internet routing tables and is suitable for use on hardware ranging from
-cheap SBCs to commercial grade routers. It is actively used in production by
-hundreds of companies, universities, research labs and governments.
-
-FRR is distributed under GPLv2, with development modeled after the Linux
-kernel. Anyone may contribute features, bug fixes, tools, documentation
-updates, or anything else.
-
-FRR is a fork of `Quagga <http://www.quagga.net/>`_.
-
-.. _how-to-get-frr:
-
-How to get FRR
-==============
-
-The official FRR website is located at |PACKAGE_URL| and contains further
-information, as well as links to additional resources.
-
-Several distributions provide packages for FRR. Check your distribution's
-repositories to find out if a suitable version is available.
-
-Up-to-date Debian & Redhat packages are available at https://deb.frrouting.org/
-& https://rpm.frrouting.org/ respectively.
-
-For instructions on installing from source, refer to the
-`developer documentation <http://docs.frrouting.org/projects/dev-guide/en/latest/>`_.
-
-
-.. _about-frr:
-
+*********
About FRR
-=========
+*********
FRR provides IP routing services. Its role in a networking stack is to exchange
routing information with other routers, make routing and policy decisions, and
@@ -55,11 +16,8 @@ light L2 functionality as well, but this is mostly left to the platform. This
makes it suitable for deployments ranging from small home networks with static
routes to Internet exchanges running full Internet tables.
-FRR runs on all modern \*NIX operating systems, including Linux and the BSDs.
-Feature support varies by platform; see the :ref:`feature-matrix`.
-
System Requirements
--------------------
+===================
System resources needed by FRR are highly dependent on workload. Routing
software performance is particularly susceptible to external factors such as:
@@ -86,8 +44,8 @@ information with peers about how to forward packets. Forwarding plane
performance largely depends on choice of NIC / ASIC.
-System Architecture
--------------------
+Architecture
+============
.. index::
pair: architecture; FRR
@@ -146,9 +104,8 @@ routing stack.
.. _supported-platforms:
-Supported Platforms
--------------------
-
+Platform Support
+================
Currently FRR supports GNU/Linux and BSD. Porting FRR to other platforms is not
too difficult as platform dependent code should be mostly limited to the
diff --git a/doc/user/basics.rst b/doc/user/basics.rst
new file mode 100644
index 0000000000..4504e9893c
--- /dev/null
+++ b/doc/user/basics.rst
@@ -0,0 +1,23 @@
+.. _basics:
+
+######
+Basics
+######
+
+.. toctree::
+ :maxdepth: 2
+
+ basic
+ extlog
+ vtysh
+ grpc
+ filter
+ routemap
+ affinitymap
+ ipv6
+ kernel
+ snmp
+ scripting
+ nexthop_groups
+
+
diff --git a/doc/user/bfd.rst b/doc/user/bfd.rst
index 3ca104a3a9..b2127e8955 100644
--- a/doc/user/bfd.rst
+++ b/doc/user/bfd.rst
@@ -1,12 +1,19 @@
.. _bfd:
-**********************************
-Bidirectional Forwarding Detection
-**********************************
+***
+BFD
+***
-:abbr:`BFD (Bidirectional Forwarding Detection)` stands for
-Bidirectional Forwarding Detection and it is described and extended by
-the following RFCs:
+:abbr:`BFD (Bidirectional Forwarding Detection)` is:
+
+ a protocol intended to detect faults in the bidirectional path between two
+ forwarding engines, including interfaces, data link(s), and to the extent
+ possible the forwarding engines themselves, with potentially very low
+ latency.
+
+ -- :rfc:`5880`
+
+It is described and extended by the following RFCs:
* :rfc:`5880`
* :rfc:`5881`
diff --git a/doc/user/bgp.rst b/doc/user/bgp.rst
index 150a915e3a..a569a9af28 100644
--- a/doc/user/bgp.rst
+++ b/doc/user/bgp.rst
@@ -92,6 +92,12 @@ be specified (:ref:`common-invocation-options`).
the operator has turned off communication to zebra and is running bgpd
as a complete standalone process.
+.. option:: -K, --graceful_restart
+
+ Bgpd will use this option to denote either a planned FRR graceful
+ restart or a bgpd-only graceful restart, and this will drive the BGP
+ GR restarting router procedures.
+
LABEL MANAGER
-------------
@@ -1080,6 +1086,52 @@ Default global mode is helper and default peer per mode is inherit from global.
If per peer mode is configured, the GR mode of this particular peer will
override the global mode.
+.. _bgp-GR-config-mode-cmd:
+
+BGP GR Config Mode Commands
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+.. clicmd:: bgp graceful-restart
+
+ This command will enable BGP graceful restart functionality for all BGP instances.
+
+.. clicmd:: bgp graceful-restart-disable
+
+ This command will disable both the functionality graceful restart and helper
+ mode for all BGP instances
+
+.. clicmd:: bgp graceful-restart select-defer-time (0-3600)
+
+ This is command, will set deferral time to value specified.
+
+.. clicmd:: bgp graceful-restart rib-stale-time (1-3600)
+
+ This is command, will set the time for which stale routes are kept in RIB.
+
+.. clicmd:: bgp graceful-restart restart-time (0-4095)
+
+ Set the time to wait to delete stale routes before a BGP open message
+ is received.
+
+ Using with Long-lived Graceful Restart capability, this is recommended
+ setting this timer to 0 and control stale routes with
+ ``bgp long-lived-graceful-restart stale-time``.
+
+ Default value is 120.
+
+.. clicmd:: bgp graceful-restart stalepath-time (1-4095)
+
+ This is command, will set the max time (in seconds) to hold onto
+ restarting peer's stale paths.
+
+ It also controls Enhanced Route-Refresh timer.
+
+ If this command is configured and the router does not receive a Route-Refresh EoRR
+ message, the router removes the stale routes from the BGP table after the timer
+ expires. The stale path timer is started when the router receives a Route-Refresh
+ BoRR message
+
+
.. _bgp-GR-global-mode-cmd:
BGP GR Global Mode Commands
@@ -1509,6 +1561,10 @@ Defining Peers
peers ASN is the same as mine as specified under the :clicmd:`router bgp ASN`
command the connection will be denied.
+.. clicmd:: neighbor PEER remote-as auto
+
+ The neighbor's ASN is detected automatically from the OPEN message.
+
.. clicmd:: neighbor PEER oad
Mark a peer belonging to the One Administrative Domain.
@@ -1647,7 +1703,7 @@ Configuring Peers
IPv4 session addresses, see the ``neighbor PEER update-source`` command
below.
-.. clicmd:: neighbor PEER interface remote-as <internal|external|ASN>
+.. clicmd:: neighbor PEER interface remote-as <internal|external|auto|ASN>
Configure an unnumbered BGP peer. ``PEER`` should be an interface name. The
session will be established via IPv6 link locals. Use ``internal`` for iBGP
diff --git a/doc/user/conf.py b/doc/user/conf.py
index 728f9c9364..395875520d 100644
--- a/doc/user/conf.py
+++ b/doc/user/conf.py
@@ -18,6 +18,8 @@ import re
import pygments
import sphinx
from sphinx.highlighting import lexers
+from sphinx.domains.std import GenericObject
+from docutils.parsers.rst import directives
# If extensions (or modules to document with autodoc) are in another directory,
# add these directories to sys.path here. If the directory is relative to the
@@ -52,18 +54,18 @@ source_suffix = ".rst"
master_doc = "index"
# General information about the project.
-project = u"FRR"
-copyright = u"2017, FRR"
-author = u"FRR authors"
+project = "FRR"
+copyright = "2017, FRR"
+author = "FRR authors"
# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
# built documents.
# The short X.Y version.
-version = u"?.?"
+version = "?.?"
# The full version, including alpha/beta/rc tags.
-release = u"?.?-?"
+release = "?.?-?"
# -----------------------------------------------------------------------------
@@ -287,7 +289,7 @@ latex_elements = {
# (source start file, target name, title,
# author, documentclass [howto, manual, or own class]).
latex_documents = [
- (master_doc, "FRR.tex", u"FRR User Manual", u"FRR", "manual"),
+ (master_doc, "FRR.tex", "FRR User Manual", "FRR", "manual"),
]
# The name of an image file (relative to this directory) to place at the top of
@@ -315,7 +317,7 @@ latex_logo = "../figures/frr-logo-medium.png"
# One entry per manual page. List of tuples
# (source start file, name, description, authors, manual section).
-man_pages = [(master_doc, "frr", u"FRR User Manual", [author], 1)]
+man_pages = [(master_doc, "frr", "FRR User Manual", [author], 1)]
# If true, show URL addresses after external links.
# man_show_urls = False
@@ -330,7 +332,7 @@ texinfo_documents = [
(
master_doc,
"frr",
- u"FRR User Manual",
+ "FRR User Manual",
author,
"FRR",
"One line description of project.",
@@ -358,6 +360,7 @@ texinfo_documents = [
with open("../extra/frrlexer.py", "rb") as lex:
frrlexerpy = lex.read()
+
# Parse version string into int array
def vparse(s):
a = []
@@ -372,11 +375,54 @@ def vparse(s):
return a[:3]
-# custom extensions here
+class ClicmdDirective(GenericObject):
+ """
+ Directive for documenting CLI commands.
+
+ The xref string, if no option is provided, will be the verbatim command
+ string. If the :daemon: option is provided, then it's
+ "(<daemon>) <command string>)".
+
+ Options:
+ :daemon: - specify the daemon this command belongs to. Useful for
+ disambiguating multiple definitions of the same command.
+ """
+
+ has_content = True
+ required_arguments = 1
+ optional_arguments = 0
+ option_spec = {
+ **GenericObject.option_spec,
+ "daemon": directives.unchanged,
+ }
+
+ def handle_signature(self, sig, signode):
+ name = super().handle_signature(sig, signode)
+ daemon = self.options["daemon"] if "daemon" in self.options else ""
+ prefix = f"({daemon}) " if daemon else ""
+ return prefix + name
+
+ def run(self):
+ daemon = self.options["daemon"] if "daemon" in self.options else ""
+ if daemon:
+ self.indextemplate = f"pair: ({daemon}) %s; configuration command"
+ else:
+ self.indextemplate = f"pair: %s; configuration command"
+
+ nodes = super().run()
+
+ return nodes
+
+
def setup(app):
- # object type for FRR CLI commands, can be extended to document parent CLI
- # node later on
- app.add_object_type("clicmd", "clicmd", indextemplate="pair: %s; configuration command")
+ # Override the directive that was just created for us
+ if int(sphinx.__version__.split(".")[0]) >= 2:
+ app.add_object_type("clicmd", "clicmd", objname="CLI command")
+ app.add_directive_to_domain("std", "clicmd", ClicmdDirective, override=True)
+ else:
+ app.add_object_type(
+ "clicmd", "clicmd", indextemplate="pair: %s; configuration command"
+ )
# I dont care how stupid this is
if "add_js_file" in dir(app):
@@ -389,7 +435,6 @@ def setup(app):
else:
app.add_stylesheet("overrides.css")
-
# load Pygments lexer for FRR config syntax
#
# NB: in Pygments 2.2+ this can be done with `load_lexer_from_file`, but we
diff --git a/doc/user/index.rst b/doc/user/index.rst
index 4789677a9a..d3b632a8de 100644
--- a/doc/user/index.rst
+++ b/doc/user/index.rst
@@ -1,80 +1,31 @@
FRRouting User Guide
====================
-############
-Introduction
-############
+FRR is a fully featured, high performance, free software IP routing suite. It
+implements all standard routing protocols such as BGP, RIP, OSPF, IS-IS and
+more (see :ref:`feature-matrix`), as well as many of their extensions. It can
+handle full Internet routing tables and is suitable for use on hardware ranging
+from cheap SBCs to commercial grade routers, and is actively used in production
+by hundreds of companies, universities, research labs and governments.
-.. _introduction:
-.. toctree::
- :maxdepth: 2
-
- overview
- installation
- setup
-
-######
-Basics
-######
+FRR runs on all modern \*NIX operating systems, including Linux and the BSDs.
+Feature support varies by platform; see the :ref:`feature-matrix`.
-.. _basics:
-.. toctree::
- :maxdepth: 2
+FRR is distributed under GPLv2, with development modeled after the Linux
+kernel. Anyone may contribute features, bug fixes, tools, documentation
+updates, or anything else.
- basic
- extlog
- vtysh
- grpc
- filter
- routemap
- affinitymap
- ipv6
- kernel
- snmp
- scripting
- nexthop_groups
-.. modules
+FRR is a fork of `Quagga <http://www.quagga.net/>`_.
-#########
-Protocols
-#########
-
-.. _protocols:
.. toctree::
:maxdepth: 2
- zebra
- bfd
- bgp
- babeld
- fabricd
- ldpd
- eigrpd
- evpn
- isisd
- nhrpd
- ospfd
- ospf6d
- pathd
- pim
- pimv6
- pbr
- ripd
- ripngd
- sharp
- static
- vnc
- vrrp
- bmp
- watchfrr
- mgmtd
-
-########
-Appendix
-########
+ introduction
+ basics
+ protocols
-.. _appendix:
.. toctree::
+ :caption: Appendix
:maxdepth: 2
bugs
diff --git a/doc/user/installation.rst b/doc/user/installation.rst
index e49f10491e..4d2017c0f8 100644
--- a/doc/user/installation.rst
+++ b/doc/user/installation.rst
@@ -3,22 +3,25 @@
single: Installing FRR
single: Building FRR
-.. _installation:
-
Installation
============
-This section covers the basics of building, installing and setting up FRR.
+This section covers the basics of building, installing and setting up
+FRR.
+The official FRR website is located at |PACKAGE_URL| and contains further
+information, as well as links to additional resources.
From Packages
-------------
-The project publishes packages for Red Hat, Centos, Debian and Ubuntu on the
-`GitHub releases <https://github.com/FRRouting/frr/releases>`_. page. External
-contributors offer packages for many other platforms including \*BSD, Alpine,
-Gentoo, Docker, and others. There is currently no documentation on how to use
-those but we hope to add it soon.
+Up-to-date Debian & Redhat packages are available at
+https://deb.frrouting.org/ & https://rpm.frrouting.org/ respectively.
+
+Several distributions also provide packages for FRR. Check your
+distribution's repositories to find out if a suitable version is
+available.
+
From Snapcraft
--------------
@@ -29,12 +32,12 @@ universal Snap images, available at https://snapcraft.io/frr.
From Source
-----------
-Building FRR from source is the best way to ensure you have the latest features
-and bug fixes. Details for each supported platform, including dependency
-package listings, permissions, and other gotchas, are in the `developer's
-documentation
-<http://docs.frrouting.org/projects/dev-guide/en/latest/building.html>`_. This
-section provides a brief overview on the process.
+Building FRR from source is the best way to ensure you have the latest
+features and bug fixes. Details for each supported platform, including
+dependency package listings, permissions, and other gotchas, are in the
+`developer's documentation
+<http://docs.frrouting.org/projects/dev-guide/en/latest/building.html>`_.
+This section provides a brief overview on the process.
Getting the Source
diff --git a/doc/user/introduction.rst b/doc/user/introduction.rst
new file mode 100644
index 0000000000..89866b9c29
--- /dev/null
+++ b/doc/user/introduction.rst
@@ -0,0 +1,13 @@
+.. _introduction:
+
+############
+Introduction
+############
+
+.. toctree::
+ :maxdepth: 2
+
+ about
+ installation
+ setup
+
diff --git a/doc/user/ospfd.rst b/doc/user/ospfd.rst
index 70c15e73de..b80adba7f0 100644
--- a/doc/user/ospfd.rst
+++ b/doc/user/ospfd.rst
@@ -738,7 +738,17 @@ Interfaces
retransmitting Database Description and Link State Request packets. The
default value is 5 seconds.
-.. clicmd:: ip ospf transmit-delay (1-65535) [A.B.C.D]
+.. clicmd:: ip ospf retransmit-window (20-1000)
+
+
+ Set number of milliseconds in the window for neighbor LSA retransmission.
+ When a neighbor Link State (LS) retransmission timer expires, LSAs scheduled
+ to be retransmitted within the number of milliseconds configured are
+ retransmitted to the neighbor. Any expiring after the window will be
+ retransmitted the next time the neighbor LS retransmission timer expires.
+ The default is 50 milliseconds.
+
+ .. clicmd:: ip ospf transmit-delay (1-65535) [A.B.C.D]
Set number of seconds for InfTransDelay value. LSAs' age should be
diff --git a/doc/user/protocols.rst b/doc/user/protocols.rst
new file mode 100644
index 0000000000..e571cd66fc
--- /dev/null
+++ b/doc/user/protocols.rst
@@ -0,0 +1,35 @@
+.. _protocols:
+
+#########
+Protocols
+#########
+
+.. toctree::
+ :maxdepth: 2
+
+ zebra
+ bfd
+ bgp
+ babeld
+ fabricd
+ ldpd
+ eigrpd
+ evpn
+ isisd
+ nhrpd
+ ospfd
+ ospf6d
+ pathd
+ pim
+ pimv6
+ pbr
+ ripd
+ ripngd
+ sharp
+ static
+ vnc
+ vrrp
+ bmp
+ watchfrr
+ mgmtd
+
diff --git a/doc/user/subdir.am b/doc/user/subdir.am
index 4879f7f7ef..395ce305fe 100644
--- a/doc/user/subdir.am
+++ b/doc/user/subdir.am
@@ -29,7 +29,7 @@ user_RSTFILES = \
doc/user/ospf6d.rst \
doc/user/ospfd.rst \
doc/user/ospf_fundamentals.rst \
- doc/user/overview.rst \
+ doc/user/about.rst \
doc/user/packet-dumps.rst \
doc/user/pathd.rst \
doc/user/pim.rst \