summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorOndrej Zajicek (work) <santiago@crfreenet.org>2021-01-07 01:20:56 +0100
committerOndrej Zajicek (work) <santiago@crfreenet.org>2021-01-07 01:20:56 +0100
commita141959f0729b2381a90aaa9b7ed0e41a5f9513e (patch)
treef05681a700b8cb36e5ace099560a271116611a6b /doc
parent7a1f4baac11cbfad82a2d09a130b3ae7bb48e9bd (diff)
Doc: Describe per-nexthop static route options
Also remove description of (no longer supported) per-route 'bfd' option, and add examples of IPv6 routes with link-local nexthops.
Diffstat (limited to 'doc')
-rw-r--r--doc/bird.sgml79
1 files changed, 57 insertions, 22 deletions
diff --git a/doc/bird.sgml b/doc/bird.sgml
index 23239328..28b0e400 100644
--- a/doc/bird.sgml
+++ b/doc/bird.sgml
@@ -4965,8 +4965,8 @@ static protocols, each with appropriate routes and channel.
<ref id="type-prefix" name="dependent on network type">.
<descrip>
- <tag>route <m/prefix/ via <m/ip/|<m/"interface"/ [mpls <m/num/[/<m/num/[/<m/num/[...]]]]</tag>
- Next hop routes may bear one or more <ref id="route-next-hop" name="next hops">.
+ <tag>route <m/prefix/ via <m/ip/|<m/"interface"/ [<m/per-nexthop options/] [via ...]</tag>
+ Regular routes may bear one or more <ref id="route-next-hop" name="next hops">.
Every next hop is preceded by <cf/via/ and configured as shown.
<tag>route <m/prefix/ recursive <m/ip/ [mpls <m/num/[/<m/num/[/<m/num/[...]]]]</tag>
@@ -4985,6 +4985,46 @@ the next hop of the route is not a neighbor at the moment), Static just
uninstalls the route from the table it is connected to and adds it again as soon
as the destination becomes adjacent again.
+<sect2>Per-nexthop options
+
+<p>There are several options that in a case of multipath route are per-nexthop
+(i.e., they can be used multiple times for a route, one time for each nexthop).
+Syntactically, they are not separate options but just parts of <cf/route/
+statement after each <cf/via/ statement, not separated by semicolons. E.g.,
+statement <cf/route 10.0.0.0/8 via 192.0.2.1 bfd weight 1 via 192.0.2.2 weight
+2;/ describes a route with two nexthops, the first nexthop has two per-nexthop
+options (<cf/bfd/ and <cf/weight 1/), the second nexthop has just <cf/weight 2/.
+
+<descrip>
+ <tag><label id="static-route-bfd">bfd <m/switch/</tag>
+ The Static protocol could use BFD protocol for next hop liveness
+ detection. If enabled, a BFD session to the route next hop is created
+ and the static route is BFD-controlled -- the static route is announced
+ only if the next hop liveness is confirmed by BFD. If the BFD session
+ fails, the static route (or just the affected nexthop from multiple
+ ones) is removed. Note that this is a bit different compared to other
+ protocols, which may use BFD as an advisory mechanism for fast failure
+ detection but ignore it if a BFD session is not even established. Note
+ that BFD protocol also has to be configured, see <ref id="bfd" name="BFD">
+ section for details. Default value is no.
+
+ <tag><label id="static-route-mpls">mpls <m/num/[/<m/num/[/<m/num/[...]]]</tag>
+ MPLS labels that should be pushed to packets forwarded by the route.
+ The option could be used for both IP routes (on MPLS ingress routers)
+ and MPLS switching rules (on MPLS transit routers). Default value is
+ no labels.
+
+ <tag><label id="static-route-onlink">onlink <m/switch/</tag>
+ Onlink flag means that the specified nexthop is accessible on the
+ (specified) interface regardless of IP prefixes of the interface. The
+ interface must be attached to nexthop IP address using link-local-scope
+ format (e.g. <cf/192.0.2.1%eth0/). Default value is no.
+
+ <tag><label id="static-route-weight">weight <m/switch/</tag>
+ For multipath routes, this value specifies a relative weight of the
+ nexthop. Allowed values are 1-256. Default value is 1.
+</descrip>
+
<sect1>Route Origin Authorization
<p>The ROA config is just <cf>route <m/prefix/ max <m/int/ as <m/int/</cf> with no nexthop.
@@ -5123,21 +5163,6 @@ protocol static {
<sect1>Per-route options
<p>
<descrip>
- <tag><label id="static-route-bfd">bfd <m/switch/</tag>
- The Static protocol could use BFD protocol for next hop liveness
- detection. If enabled, a BFD session to the route next hop is created
- and the static route is BFD-controlled -- the static route is announced
- only if the next hop liveness is confirmed by BFD. If the BFD session
- fails, the static route is removed. Note that this is a bit different
- compared to other protocols, which may use BFD as an advisory mechanism
- for fast failure detection but ignores it if a BFD session is not even
- established.
-
- This option can be used for static routes with a direct next hop, or
- also for for individual next hops in a static multipath route (see
- above). Note that BFD protocol also has to be configured, see
- <ref id="bfd" name="BFD"> section for details. Default value is no.
-
<tag><label id="static-route-filter"><m/filter expression/</tag>
This is a special option that allows filter expressions to be configured
on per-route basis. Can be used multiple times. These expressions are
@@ -5147,7 +5172,8 @@ protocol static {
exported to the OSPF protocol.
</descrip>
-<sect1>Example static config
+<sect1>Example static configs
+<label id="static-example">
<p><code>
protocol static {
@@ -5158,21 +5184,30 @@ protocol static {
via 198.51.100.10 weight 2
via 198.51.100.20 bfd # BFD-controlled next hop
via 192.0.2.1;
- route 203.0.113.0/24 unreachable; # Sink route
+ route 203.0.113.0/24 blackhole; # Sink route
route 10.2.0.0/24 via "arc0"; # Secondary network
route 192.168.10.0/24 via 198.51.100.100 {
ospf_metric1 = 20; # Set extended attribute
};
- route 192.168.10.0/24 via 198.51.100.100 {
+ route 192.168.11.0/24 via 198.51.100.100 {
ospf_metric2 = 100; # Set extended attribute
ospf_tag = 2; # Set extended attribute
- bfd; # BFD-controlled route
};
- route 192.168.11.0/24 via 198.51.100.100 {
+ route 192.168.12.0/24 via 198.51.100.100 {
bgp_community.add((65535, 65281)); # Set extended BGP attribute
bgp_large_community.add((64512, 1, 1)); # Set extended BGP attribute
};
}
+
+protocol static {
+ ipv6; # Channel is mandatory
+ route 2001:db8:10::/48 via 2001:db8:1::1; # Route with global nexthop
+ route 2001:db8:20::/48 via fe80::10%eth0; # Route with link-local nexthop
+ route 2001:db8:30::/48 via fe80::20%'eth1.60'; # Iface with non-alphanumeric characters
+ route 2001:db8:40::/48 via "eth2"; # Direct route to eth2
+ route 2001:db8::/32 unreachable; # Unreachable route
+ route ::/0 via 2001:db8:1::1 bfd; # BFD-controlled default route
+}
</code>