diff options
Diffstat (limited to 'doc')
-rw-r--r-- | doc/developer/conf.py | 1 | ||||
-rw-r--r-- | doc/developer/topotests.rst | 10 | ||||
-rw-r--r-- | doc/user/bgp.rst | 15 | ||||
-rw-r--r-- | doc/user/conf.py | 2 | ||||
-rw-r--r-- | doc/user/evpn.rst | 8 | ||||
-rw-r--r-- | doc/user/ipv6.rst | 3 | ||||
-rw-r--r-- | doc/user/ospfd.rst | 38 | ||||
-rw-r--r-- | doc/user/routemap.rst | 7 | ||||
-rw-r--r-- | doc/user/zebra.rst | 31 |
9 files changed, 94 insertions, 21 deletions
diff --git a/doc/developer/conf.py b/doc/developer/conf.py index 634f4aa80..a5b514814 100644 --- a/doc/developer/conf.py +++ b/doc/developer/conf.py @@ -71,6 +71,7 @@ release = "?.?-?" html_baseurl = os.environ.get("READTHEDOCS_CANONICAL_URL", "") # Tell Jinja2 templates the build is running on Read the Docs +html_context = {} if os.environ.get("READTHEDOCS", "") == "True": html_context["READTHEDOCS"] = True diff --git a/doc/developer/topotests.rst b/doc/developer/topotests.rst index 1ec516a1e..5077745a1 100644 --- a/doc/developer/topotests.rst +++ b/doc/developer/topotests.rst @@ -1323,6 +1323,8 @@ You can run scripts inside the node, or use vtysh's <tab> or <?> feature. loc1 1 2001:db8:1:1::/64 Up loc2 2 2001:db8:2:2::/64 Up +.. _writing-tests: + Writing Tests """"""""""""" @@ -1347,9 +1349,9 @@ or using unified config (specifying which daemons to run is optional): for _, (rname, router) in enumerate(router_list.items(), 1): router.load_frr_config(os.path.join(CWD, "{}/frr.conf".format(rname)), [ - TopoRouter.RD_ZEBRA - TopoRouter.RD_MGMTD, - TopoRouter.RD_BGP]) + (TopoRouter.RD_ZEBRA, "-s 90000000"), + (TopoRouter.RD_MGMTD, None), + (TopoRouter.RD_BGP, None)] - The topology definition or build function @@ -1408,7 +1410,7 @@ Requirements: - Always use IPv4 :rfc:`5737` (``192.0.2.0/24``, ``198.51.100.0/24``, ``203.0.113.0/24``) and IPv6 :rfc:`3849` (``2001:db8::/32``) ranges reserved for documentation; -- Use unified config (``frr.conf``) for all new [tests](#writing-tests). +- Use unified config (``frr.conf``) for all new tests. See :ref:`writing-tests`. Tips: diff --git a/doc/user/bgp.rst b/doc/user/bgp.rst index d7c624ee4..0c7fcecb9 100644 --- a/doc/user/bgp.rst +++ b/doc/user/bgp.rst @@ -160,16 +160,16 @@ bottom until one of the factors can be used. Prefer higher local preference routes to lower. +3. **Local route check** + + Prefer local routes (statics, aggregates, redistributed) to received routes. + If ``bgp bestpath aigp`` is enabled, and both paths that are compared have AIGP attribute, BGP uses AIGP tie-breaking unless both of the paths have the AIGP metric attribute. This means that the AIGP attribute is not evaluated during the best path selection process between two paths when one path does not have the AIGP attribute. -3. **Local route check** - - Prefer local routes (statics, aggregates, redistributed) to received routes. - 4. **AS path length check** Prefer shortest hop-count AS_PATHs. @@ -1290,6 +1290,13 @@ IPv6 Support address family is enabled by default for all new neighbors. +.. clicmd:: bgp ipv6-auto-ra + + By default, bgpd can ask Zebra to enable sending IPv6 router advertisement + messages on interfaces. For example, this happens for unnumbered peers + support or when extended-nexthop capability is used. The ``no`` form of this + command disables such behaviour. + .. _bgp-route-aggregation: Route Aggregation diff --git a/doc/user/conf.py b/doc/user/conf.py index 236a90e90..f9f178f5f 100644 --- a/doc/user/conf.py +++ b/doc/user/conf.py @@ -73,11 +73,11 @@ release = "?.?-?" html_baseurl = os.environ.get("READTHEDOCS_CANONICAL_URL", "") # Tell Jinja2 templates the build is running on Read the Docs +html_context = {} if os.environ.get("READTHEDOCS", "") == "True": html_context["READTHEDOCS"] = True - # ----------------------------------------------------------------------------- # Extract values from codebase for substitution into docs. # ----------------------------------------------------------------------------- diff --git a/doc/user/evpn.rst b/doc/user/evpn.rst index 7c4d9fe7d..a72ea56fe 100644 --- a/doc/user/evpn.rst +++ b/doc/user/evpn.rst @@ -56,13 +56,13 @@ FRR learns about the system's Linux network interface configuration from the kernel via Netlink, however it does not manage network interfaces directly. The following sections will include examples of Linux interface configurations that are compatible with FRR's EVPN implementation. While there are multiple -interface managers that can setup a proper kernel config (e.g. ifupdown2), +interface managers that can set up a proper kernel config (e.g. ifupdown2), these examples will use iproute2 to add/configure the interfaces. All of the examples will follow the same basic setup but use different, yet compatible, interface configurations. -In this example we will setup the following: +In this example we will set up the following: * An IP-VRF named vrf1, associated with L3VNI 100 * An IP-VRF named vrf2, associated with L3VNI 200 @@ -78,7 +78,7 @@ In this example we will setup the following: Sample Configuration -------------------- This is a sample FRR configuration that implements the above EVPN environment. -The first snippet will be the config in its entiretly, then each config element +The first snippet will be the config in its entirety, then each config element will be explained individually later in the document. The following snippet will result in a functional EVPN control plane if the @@ -484,7 +484,7 @@ VNI, The interface settings are the same for an L2VNI as they are for an L3VNI. Finally, to limit a traditional bridge's broadcast domain to traffic matching specific VLAN-IDs, ``vlan`` subinterfaces of a host/network port need to be -setup. This example shows the creation of a VLAN subinterface of "eth0" +set up. This example shows the creation of a VLAN subinterface of "eth0" matching VID 10 with the name "eth0.10". By enslaving "eth0.10" to "br10" (instead of "eth0") we ensure that only Ethernet frames ingressing "eth0" tagged with VID 10 will be associated with the "br10" broadcast domain. diff --git a/doc/user/ipv6.rst b/doc/user/ipv6.rst index 4f01061e7..18aae00bd 100644 --- a/doc/user/ipv6.rst +++ b/doc/user/ipv6.rst @@ -25,7 +25,8 @@ Router Advertisement .. clicmd:: ipv6 nd suppress-ra Don't send router advertisement messages. The ``no`` form of this command - enables sending RA messages. + enables sending RA messages. Note that while being suppressed, RA messages + might still be enabled by other daemons, such as bgpd or vrrpd. .. clicmd:: ipv6 nd prefix ipv6prefix [valid-lifetime] [preferred-lifetime] [off-link] [no-autoconfig] [router-address] diff --git a/doc/user/ospfd.rst b/doc/user/ospfd.rst index b80adba7f..b2571dfd7 100644 --- a/doc/user/ospfd.rst +++ b/doc/user/ospfd.rst @@ -200,6 +200,44 @@ To start OSPF process you have to specify the OSPF router. This command supersedes the *timers spf* command in previous FRR releases. +.. clicmd:: timers throttle lsa all (0-5000) + + This command sets the minumum interval between originations of the + same LSA or the `minimum LSA refresh interval`. The time is specified + in milliseconds and the default is 5 seconds (5000 milliseconds) consistent + with the architectual constant MinLSInterval specified in Appendix D of + RFC 2328. When a self-originated LSA needs to be reoriginated, it may be + delayed for up to this interval. + + .. code-block:: frr + + router ospf + timers throttle lsa all 1000 + + + In this example, the `mininum LSA refresh interval` is set to 1000ms. This + command reduces the delay between successive originations of a self-originated + LSA from 5000 milliseconds to 1000 milliseconds. + +.. clicmd:: timers lsa min-arrival (0-5000) + + This command sets the minumum interval between receptions of instances of + the same LSA or the `minimum LSA arrival interval`. The time is specified in + milliseconds and the default is 1 second (1000 milliseconds) consistent with + the architectual constant MinLSArrival specified in Appendix D of RFC 2328. If a + newer instance of the same LSA is received in less than this interval, it is + ignored. + + .. code-block:: frr + + router ospf + timers lsa min-arrival 50 + + + In this example, the `minimum LSA arrival interval` is set to 50ms. This + command reduces the minimum interval required between instances of the same + LSA from 1000 milliseconds to 50 milliseconds. + .. clicmd:: max-metric router-lsa [on-startup (5-86400)|on-shutdown (5-100)] .. clicmd:: max-metric router-lsa administrative diff --git a/doc/user/routemap.rst b/doc/user/routemap.rst index 02d674dff..1481a1bbe 100644 --- a/doc/user/routemap.rst +++ b/doc/user/routemap.rst @@ -101,9 +101,10 @@ cont .. clicmd:: clear route-map counter [WORD] - Clear counters that are being stored about the route-map utilization - so that subsuquent show commands will indicate since the last clear. - If WORD is specified clear just that particular route-map's counters. + Clear counters as well as cpu time spent that are being stored about + the route-map utilization so that subsequent show commands will indicate + since the last clear. If WORD is specified clear just that particular + route-map's counters. .. _route-map-command: diff --git a/doc/user/zebra.rst b/doc/user/zebra.rst index 06a19a613..b862ba9f5 100644 --- a/doc/user/zebra.rst +++ b/doc/user/zebra.rst @@ -985,7 +985,7 @@ and this section also helps that case. :: router# configure terminal - router(config)# segment-routinig + router(config)# segment-routing router(config-sr)# srv6 router(config-srv6)# locators router(config-srv6-locs)# locator loc1 @@ -1013,7 +1013,7 @@ and this section also helps that case. :: router# configure terminal - router(config)# segment-routinig + router(config)# segment-routing router(config-sr)# srv6 router(config-srv6)# locators router(config-srv6-locators)# locator loc1 @@ -1042,7 +1042,7 @@ and this section also helps that case. :: router# configure terminal - router(config)# segment-routinig + router(config)# segment-routing router(config-sr)# srv6 router(config-srv6)# locators router(config-srv6-locators)# locator loc1 @@ -1099,7 +1099,7 @@ and this section also helps that case. :: router# configure terminal - router(config)# segment-routinig + router(config)# segment-routing router(config-sr)# srv6 router(config-srv6)# formats router(config-srv6-formats)# format usid-f3216 @@ -1287,6 +1287,25 @@ IPv6 example for OSPFv3. Set the delay before any route-maps are processed in zebra. The default time for this is 5 seconds. + +.. _zebra-table-import: + +zebra Table Import +================== + +Zebra supports importing an alternate routing table into the main unicast RIB (URIB). +An imported table will continously sync all changes to the main URIB as routes are +added or deleted from the alternate table. +Zebra also supports importing into the main multicast RIB (MRIB) which can be used +to affect how multicast RPF lookups are performed as described in :ref: `_pim-multicast-rib`. + +.. clicmd:: ip import-table (1-252) [mrib] [distance (1-255)] [route-map RMAP_NAME] + + Import table, by given table id, into the main URIB (or MRIB). Optional distance can override + the default distance when importing routes from the alternate table. An optional route map + can be provided to filter routes that are imported into the main table. + + .. _zebra-fib-push-interface: zebra FIB push interface @@ -1864,6 +1883,10 @@ Debugging Nexthop and nexthop-group events. +.. clicmd:: debug zebra srv6 + + Segment Routing for IPv6 dataplane debugging. + Scripting ========= |