summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/developer/next-hop-tracking.rst2
-rw-r--r--doc/developer/testing.rst1
-rw-r--r--doc/developer/topotests-jsontopo.rst88
-rw-r--r--doc/developer/workflow.rst28
-rw-r--r--doc/user/basic.rst11
-rw-r--r--doc/user/bgp.rst20
-rw-r--r--doc/user/overview.rst38
7 files changed, 124 insertions, 64 deletions
diff --git a/doc/developer/next-hop-tracking.rst b/doc/developer/next-hop-tracking.rst
index a9af5e749c..99e1d65c2b 100644
--- a/doc/developer/next-hop-tracking.rst
+++ b/doc/developer/next-hop-tracking.rst
@@ -111,8 +111,6 @@ provides the following APIs:
+============================+==================================================+
| bgp_find_or_add_nexthop() | find or add a nexthop in BGP nexthop table |
+----------------------------+--------------------------------------------------+
-| bgp_find_nexthop() | find a nexthop in BGP nexthop table |
-+----------------------------+--------------------------------------------------+
| bgp_parse_nexthop_update() | parse a nexthop update message coming from zebra |
+----------------------------+--------------------------------------------------+
diff --git a/doc/developer/testing.rst b/doc/developer/testing.rst
index 6396faf9a6..5865a6becc 100644
--- a/doc/developer/testing.rst
+++ b/doc/developer/testing.rst
@@ -8,3 +8,4 @@ Testing
:maxdepth: 2
topotests
+ topotests-jsontopo
diff --git a/doc/developer/topotests-jsontopo.rst b/doc/developer/topotests-jsontopo.rst
index 130f072b62..bbae80f11d 100644
--- a/doc/developer/topotests-jsontopo.rst
+++ b/doc/developer/topotests-jsontopo.rst
@@ -1,53 +1,50 @@
-.. role:: raw-html-m2r(raw)
- :format: html
+.. _topotests-json:
-*************************************
-FRRouting Topology Tests with Mininet
-*************************************
+Topotests with JSON
+===================
Overview
-========
+--------
On top of current topotests framework following enhancements are done:
-#. Creating the topology and assigning IPs to router' interfaces dynamically.\ :raw-html-m2r:`<br>`
- It is achieved by using json file, in which user specify the number of routers,
- links to each router, interfaces for the routers and protocol configurations for
- all routers.
+* Creating the topology and assigning IPs to router' interfaces dynamically.
+ It is achieved by using json file, in which user specify the number of
+ routers, links to each router, interfaces for the routers and protocol
+ configurations for all routers.
-#. Creating the configurations dynamically. It is achieved by using
- /usr/lib/frr/frr-reload.py utility, which takes running configuration and the
- newly created configuration for any particular router and creates a delta
- file(diff file) and loads it to router.
+* Creating the configurations dynamically. It is achieved by using
+ :file:`/usr/lib/frr/frr-reload.py` utility, which takes running configuration
+ and the newly created configuration for any particular router and creates a
+ delta file(diff file) and loads it to router.
Logging of test case executions
-===============================
+-------------------------------
-
-#. User can enable logging of testcases execution messages into log file by
- adding "frrtest_log_dir = /tmp/topotests/" in pytest.ini file
-#.Router's current configuration can be displyed on console or sent to logs by
- adding "show_router_config = True" in pytest.ini file
+* The user can enable logging of testcases execution messages into log file by
+ adding ``frrtest_log_dir = /tmp/topotests/`` in :file:`pytest.ini`.
+* Router's current configuration can be displyed on console or sent to logs by
+ adding ``show_router_config = True`` in :file:`pytest.ini`.
Log file name will be displayed when we start execution:
.. code-block:: console
- root@test:~/topotests/example-topojson-test/test_topo_json_single_link# python
- test_topo_json_single_link.py Logs will be sent to logfile:
+ root@test:# python ./test_topo_json_single_link.py
+
+ Logs will be sent to logfile:
/tmp/topotests/test_topo_json_single_link_11:57:01.353797
Note: directory "/tmp/topotests/" is created by topotests by default, making
use of same directory to save execution logs.
-
Guidelines
-==========
+----------
Writing New Tests
------------------
+^^^^^^^^^^^^^^^^^
This section will guide you in all recommended steps to produce a standard
topology test.
@@ -60,29 +57,30 @@ This is the recommended test writing routine:
* Write the tests
* Create a Pull Request
+
File Hierarchy
---------------
+^^^^^^^^^^^^^^
Before starting to write any tests one must know the file hierarchy. The
repository hierarchy looks like this:
-.. code-block::
-
- $ cd path/to/topotests
- $ find ./*
- ...
- ./example-topojson-test # the basic example test topology-1
- ./example-topojson-test/test_example_topojson.json # input json file, having
- topology, interfaces, bgp and other configuration
- ./example-topojson-test/test_example_topojson.py # test script to write and
- execute testcases
- ...
- ./lib # shared test/topology functions
- ./lib/topojson.py # library to create topology and configurations dynamically
- from json file
- ./lib/common_config.py # library to create protocol's common configurations ex-
- static_routes, prefix_lists, route_maps etc.
- ./lib/bgp.py # library to create only bgp configurations
+.. code-block:: console
+
+ $ cd path/to/topotests
+ $ find ./*
+ ...
+ ./example-topojson-test # the basic example test topology-1
+ ./example-topojson-test/test_example_topojson.json # input json file, having
+ topology, interfaces, bgp and other configuration
+ ./example-topojson-test/test_example_topojson.py # test script to write and
+ execute testcases
+ ...
+ ./lib # shared test/topology functions
+ ./lib/topojson.py # library to create topology and configurations dynamically
+ from json file
+ ./lib/common_config.py # library to create protocol's common configurations ex-
+ static_routes, prefix_lists, route_maps etc.
+ ./lib/bgp.py # library to create only bgp configurations
Defining the Topology and initial configuration in JSON file
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -325,7 +323,7 @@ BGP neighborship with Multiple phy-links, sample JSON file::
...
-JSON File Explained
+JSON File Explained
"""""""""""""""""""
Mandatory keywords/options in JSON:
@@ -466,7 +464,7 @@ Example:
* ``__main__`` initialization code (to support running the script directly)
.. code-block:: python
-
+
if **name** == '\ **main**\ ':
sys.exit(pytest.main(["-s"]))
diff --git a/doc/developer/workflow.rst b/doc/developer/workflow.rst
index c2e3724df2..6eef7532b3 100644
--- a/doc/developer/workflow.rst
+++ b/doc/developer/workflow.rst
@@ -163,6 +163,34 @@ releases have support for this feature request. Moreover, introducing features
requests may result in breaking the stability of the branch. LTS branches are first
done to bring long term support for stability.
+Development Branches
+--------------------
+
+Occassionally the community will desire the ability to work together
+on a feature that is considered useful to FRR. In this case the
+parties may ask the Maintainers for the creation of a development
+branch in the main FRR repository. Requirements for this to happen
+are:
+
+- A one paragraph description of the feature being implemented to
+ allow for the facilitation of discussion about the feature. This
+ might include pointers to relevant RFC's or presentations that
+ explain what is planned. This is intended to set a somewhat
+ low bar for organization.
+- A branch maintainer must be named. This person is responsible for
+ keeping the branch up to date, and general communication about the
+ project with the other FRR Maintainers. Additionally this person
+ must already be a FRR Maintainer.
+- Commits to this branch must follow the normal PR and commit process
+ as outlined in other areas of this document. The goal of this is
+ to prevent the current state where large features are submitted
+ and are so large they are difficult to review.
+
+After a development branch has completed the work together, a final
+review can be made and the branch merged into master. If a development
+branch is becomes un-maintained or not being actively worked on after
+three months then the Maintainers can decide to remove the branch.
+
Changelog
---------
The changelog will be the base for the release notes. A changelog entry for
diff --git a/doc/user/basic.rst b/doc/user/basic.rst
index c7d722164a..f946c37a73 100644
--- a/doc/user/basic.rst
+++ b/doc/user/basic.rst
@@ -238,6 +238,17 @@ Basic Config Commands
Set default motd string.
+.. index:: banner motd file FILE
+.. clicmd:: banner motd file FILE
+
+ Set motd string from file. The file must be in directory specified
+ under ``--sysconfdir``.
+
+.. index:: banner motd line LINE
+.. clicmd:: banner motd line LINE
+
+ Set motd string from an input.
+
.. index:: no banner motd
.. clicmd:: no banner motd
diff --git a/doc/user/bgp.rst b/doc/user/bgp.rst
index b916fcf413..4b3113cf3b 100644
--- a/doc/user/bgp.rst
+++ b/doc/user/bgp.rst
@@ -440,6 +440,9 @@ Route Flap Dampening
The route-flap damping algorithm is compatible with :rfc:`2439`. The use of
this command is not recommended nowadays.
+ At the moment, route-flap dampening is not working per VRF and is working only
+ for IPv4 unicast and multicast.
+
.. seealso::
https://www.ripe.net/publications/docs/ripe-378
@@ -836,11 +839,16 @@ Redistribution
Redistribute OSPF route to BGP process.
-.. index:: redistribute vpn
-.. clicmd:: redistribute vpn
+.. index:: redistribute vnc
+.. clicmd:: redistribute vnc
Redistribute VNC routes to BGP process.
+.. index:: redistribute vnc-direct
+.. clicmd:: redistribute vnc-direct
+
+ Redistribute VNC direct (not via zebra) routes to BGP process.
+
.. index:: update-delay MAX-DELAY
.. clicmd:: update-delay MAX-DELAY
@@ -1137,6 +1145,14 @@ Peer Filtering
on reflected routes. This option allows the modifications to be reflected as
well. Once enabled, it affects all reflected routes.
+.. index:: [no] neighbor PEER sender-as-path-loop-detection
+.. clicmd:: [no] neighbor PEER sender-as-path-loop-detection
+
+ Enable the detection of sender side AS path loops and filter the
+ bad routes before they are sent.
+
+ This setting is disabled by default.
+
.. _bgp-peer-group:
Peer Groups
diff --git a/doc/user/overview.rst b/doc/user/overview.rst
index 24d9ece93b..03d7299bf7 100644
--- a/doc/user/overview.rst
+++ b/doc/user/overview.rst
@@ -64,6 +64,21 @@ The ultimate goal of the FRR project is making a production-grade, high
quality, featureful and free IP routing software suite.
+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 packages are available at https://deb.frrouting.org/.
+
+For instructions on installing from source, refer to the
+`developer documentation <http://docs.frrouting.org/projects/dev-guide/en/latest/>`_.
+
+
System Architecture
===================
@@ -242,13 +257,15 @@ The indicators have the following semantics:
* :mark:`N` - daemon/feature not supported by operating system
-Known Kernel Issues:
-====================
+Known Kernel Issues
+-------------------
+
+- Linux < 4.11
-- Linux
- v6 Route Replacement - Linux kernels before 4.11 can cause issues with v6 route deletion when you
- have ecmp routes installed into the kernel. This especially becomes apparent if the route is being
- transformed from one ecmp path to another.
+ v6 Route Replacement - Linux kernels before 4.11 can cause issues with v6
+ route deletion when you have ECMP routes installed into the kernel. This
+ especially becomes apparent if the route is being transformed from one ECMP
+ path to another.
.. _supported-rfcs:
@@ -348,15 +365,6 @@ FRR implements the following RFCs:
- :rfc:`2741`
:t:`Agent Extensibility (AgentX) Protocol. M. Daniele, B. Wijnen. January 2000.`
-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.
-
Mailing Lists
=============