]> git.puffer.fish Git - matthieu/frr.git/commitdiff
doc: Add an example on how to set a distance for a route from the kernel
authorDonatas Abraitis <donatas@opensourcerouting.org>
Thu, 28 Sep 2023 07:44:45 +0000 (10:44 +0300)
committerDonatas Abraitis <donatas@opensourcerouting.org>
Thu, 28 Sep 2023 09:52:15 +0000 (12:52 +0300)
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
doc/user/bgp.rst
doc/user/zebra.rst

index 1431cbdd281d1095bc2afd39f4577715d612159a..210ae447a142b69aed132749eee2bfc26c02c81c 100644 (file)
@@ -461,6 +461,15 @@ Administrative Distance Metrics
 
    Sets the administrative distance for a particular route.
 
+   If the system has a static route configured from the kernel, it has a
+   distance of 0. In some cases, it might be useful to override the route
+   from the FRR. E.g.: Kernel has a statically configured default route,
+   and you received another default route from the BGP and want to install
+   it to be preferred over the static route. In such a case, you MUST set
+   a higher distance from the kernel.
+
+   .. seealso:: :ref:`administrative-distance`
+
 .. _bgp-requires-policy:
 
 Require policy on EBGP
index 8b2d727f3667119ce2536ab04b0bba8f716bd562..7918fbd9d978d584a0bd181ec52795d4b2cb3c0b 100644 (file)
@@ -374,6 +374,8 @@ outgoing interface
 
    Resolve PBR nexthop via ip neigh tracking
 
+.. _administrative-distance:
+
 Administrative Distance
 =======================
 
@@ -420,16 +422,34 @@ the same distances that other routing suites have chosen.
 +------------+-----------+
 
 An admin distance of 255 indicates to Zebra that the route should not be
-installed into the Data Plane.  Additionally routes with an admin distance
+installed into the Data Plane. Additionally routes with an admin distance
 of 255 will not be redistributed.
 
 Zebra does treat Kernel routes as special case for the purposes of Admin
-Distance.  Upon learning about a route that is not originated by FRR
-we read the metric value as a uint32_t.  The top byte of the value
+Distance. Upon learning about a route that is not originated by FRR
+we read the metric value as a uint32_t. The top byte of the value
 is interpreted as the Administrative Distance and the low three bytes
-are read in as the metric.  This special case is to facilitate VRF
+are read in as the metric. This special case is to facilitate VRF
 default routes.
 
+.. code-block:: shell
+
+   $ # Set administrative distance to 255 for Zebra
+   $ ip route add 192.0.2.0/24 metric $(( 2**32 - 2**24 )) dev lo
+   $ vtysh -c 'show ip route 192.0.2.0/24 json' | jq '."192.0.2.0/24"[] | (.distance, .metric)'
+   255
+   0
+   $ # Set administrative distance to 192 for Zebra
+   $ ip route add 192.0.2.0/24 metric $(( 2**31 + 2**30 )) dev lo
+   $ vtysh -c 'show ip route 192.0.2.0/24 json' | jq '."192.0.2.0/24"[] | (.distance, .metric)'
+   192
+   0
+   $ # Set administrative distance to 128, and metric 100 for Zebra
+   $ ip route add 192.0.2.0/24 metric $(( 2**31 + 100 )) dev lo
+   $ vtysh -c 'show ip route 192.0.2.0/24 json' | jq '."192.0.2.0/24"[] | (.distance, .metric)'
+   128
+   100
+
 Route Replace Semantics
 =======================