]> git.proxmox.com Git - mirror_frr.git/blame - doc/user/zebra.rst
topotests: keep srv6-locator feature fine (step2)
[mirror_frr.git] / doc / user / zebra.rst
CommitLineData
0efdf0fe 1.. _zebra:
42fc5d26
QY
2
3*****
4Zebra
5*****
6
d1a242fd 7*zebra* is an IP routing manager. It provides kernel routing
42fc5d26
QY
8table updates, interface lookups, and redistribution of routes between
9different routing protocols.
10
0efdf0fe 11.. _invoking-zebra:
42fc5d26
QY
12
13Invoking zebra
14==============
15
0efdf0fe 16Besides the common invocation options (:ref:`common-invocation-options`), the
42fc5d26
QY
17*zebra* specific invocation options are listed below.
18
d1a242fd 19.. program:: zebra
42fc5d26 20
c9365894 21.. option:: -b, --batch
42fc5d26 22
d1a242fd
QY
23 Runs in batch mode. *zebra* parses configuration file and terminates
24 immediately.
42fc5d26 25
d4644d41
DS
26.. option:: -K TIME, --graceful_restart TIME
27
28 If this option is specified, the graceful restart time is TIME seconds.
29 Zebra, when started, will read in routes. Those routes that Zebra
30 identifies that it was the originator of will be swept in TIME seconds.
31 If no time is specified then we will sweep those routes immediately.
32
c9365894 33.. option:: -r, --retain
42fc5d26 34
da7e1a92
QY
35 When program terminates, do not flush routes installed by *zebra* from the
36 kernel.
42fc5d26 37
0d8df934
DS
38.. option:: -e X, --ecmp X
39
40 Run zebra with a limited ecmp ability compared to what it is compiled to.
41 If you are running zebra on hardware limited functionality you can
42 force zebra to limit the maximum ecmp allowed to X. This number
43 is bounded by what you compiled FRR with as the maximum number.
44
204ed384
PG
45.. option:: -n, --vrfwnetns
46
47 When *Zebra* starts with this option, the VRF backend is based on Linux
48 network namespaces. That implies that all network namespaces discovered by
49 ZEBRA will create an associated VRF. The other daemons will operate on the VRF
80ca5b6d 50 VRF defined by *Zebra*, as usual.
204ed384 51
f90115c5 52 .. seealso:: :ref:`zebra-vrf`
013f9762 53
cc6743c2
PG
54.. option:: -o, --vrfdefaultname
55
56 When *Zebra* starts with this option, the default VRF name is changed to the
57 parameter.
58
59 .. seealso:: :ref:`zebra-vrf`
60
6ed85950
DS
61.. option:: -z <path_to_socket>, --socket <path_to_socket>
62
63 If this option is supplied on the cli, the path to the zebra
64 control socket(zapi), is used. This option overrides a -N <namespace>
65 option if handed to it on the cli.
66
4354d381
DS
67.. option:: --v6-rr-semantics
68
69 The linux kernel is receiving the ability to use the same route
70 replacement semantics for v6 that v4 uses. If you are using a
71 kernel that supports this functionality then run *Zebra* with this
72 option and we will use Route Replace Semantics instead of delete
73 than add.
74
e4876266
DS
75.. option:: --asic-offload [notify_on_offload|notify_on_ack]
76
77 The linux kernel has the ability to use asic-offload ( see switchdev
78 development ). When the operator knows that FRR will be working in
79 this way, allow them to specify this with FRR. At this point this
80 code only supports asynchronous notification of the offload state.
81 In other words the initial ACK received for linux kernel installation
82 does not give zebra any data about what the state of the offload
83 is. This option takes the optional paramegers notify_on_offload
84 or notify_on_ack. This signals to zebra to notify upper level
85 protocols about route installation/update on ack received from
86 the linux kernel or from offload notification.
87
0efdf0fe 88.. _interface-commands:
42fc5d26 89
4d25da4f
PG
90Configuration Addresses behaviour
91=================================
92
93At startup, *Zebra* will first discover the underlying networking objects
94from the operating system. This includes interfaces, addresses of
95interfaces, static routes, etc. Then, it will read the configuration
96file, including its own interface addresses, static routes, etc. All this
97information comprises the operational context from *Zebra*. But
98configuration context from *Zebra* will remain the same as the one from
99:file:`zebra.conf` config file. As an example, executing the following
100:clicmd:`show running-config` will reflect what was in :file:`zebra.conf`.
101In a similar way, networking objects that are configured outside of the
102*Zebra* like *iproute2* will not impact the configuration context from
103*Zebra*. This behaviour permits you to continue saving your own config
104file, and decide what is really to be pushed on the config file, and what
105is dependent on the underlying system.
106Note that inversely, from *Zebra*, you will not be able to delete networking
107objects that were previously configured outside of *Zebra*.
108
109
42fc5d26
QY
110Interface Commands
111==================
112
0efdf0fe 113.. _standard-commands:
42fc5d26
QY
114
115Standard Commands
116-----------------
117
d1a242fd
QY
118
119.. clicmd:: interface IFNAME
120
204ed384
PG
121
122.. clicmd:: interface IFNAME vrf VRF
123
42fc5d26 124
d1a242fd 125.. clicmd:: shutdown
42fc5d26 126
42fc5d26 127
d1a242fd 128 Up or down the current interface.
42fc5d26 129
42fc5d26 130
d1a242fd 131.. clicmd:: ip address ADDRESS/PREFIX
42fc5d26 132
d1a242fd 133.. clicmd:: ipv6 address ADDRESS/PREFIX
42fc5d26 134
42fc5d26 135
42fc5d26 136
d1a242fd 137 Set the IPv4 or IPv6 address/prefix for the interface.
42fc5d26 138
42fc5d26 139
d1a242fd 140.. clicmd:: ip address LOCAL-ADDR peer PEER-ADDR/PREFIX
42fc5d26 141
42fc5d26 142
d1e7591e
QY
143 Configure an IPv4 Point-to-Point address on the interface. (The concept of
144 PtP addressing does not exist for IPv6.)
42fc5d26 145
d1a242fd
QY
146 `local-addr` has no subnet mask since the local side in PtP addressing is
147 always a single (/32) address. `peer-addr/prefix` can be an arbitrary subnet
148 behind the other end of the link (or even on the link in Point-to-Multipoint
149 setups), though generally /32s are used.
42fc5d26 150
42fc5d26 151
d1a242fd 152.. clicmd:: description DESCRIPTION ...
42fc5d26 153
d1a242fd 154 Set description for the interface.
42fc5d26 155
42fc5d26 156
d1a242fd 157.. clicmd:: multicast
42fc5d26 158
42fc5d26 159
d1a242fd 160 Enable or disables multicast flag for the interface.
42fc5d26 161
42fc5d26 162
d1a242fd 163.. clicmd:: bandwidth (1-10000000)
d1a242fd 164
d1a242fd
QY
165
166 Set bandwidth value of the interface in kilobits/sec. This is for
167 calculating OSPF cost. This command does not affect the actual device
168 configuration.
169
d1a242fd
QY
170
171.. clicmd:: link-detect
d1a242fd 172
d1a242fd
QY
173
174 Enable/disable link-detect on platforms which support this. Currently only
32d9e333
DS
175 Linux, and only where network interface drivers support reporting
176 link-state via the ``IFF_RUNNING`` flag.
4c97fd1a 177
30980e0a 178 In FRR, link-detect is on by default.
42fc5d26 179
0efdf0fe 180.. _link-parameters-commands:
42fc5d26
QY
181
182Link Parameters Commands
183------------------------
184
85400b29
MS
185.. note::
186
187 At this time, FRR offers partial support for some of the routing
188 protocol extensions that can be used with MPLS-TE. FRR does not
189 support a complete RSVP-TE solution currently.
190
d1a242fd 191.. clicmd:: link-params
42fc5d26 192
42fc5d26 193
85400b29
MS
194 Enter into the link parameters sub node. At least 'enable' must be
195 set to activate the link parameters, and consequently routing
196 information that could be used as part of Traffic Engineering on
197 this interface. MPLS-TE must be enable at the OSPF
198 (:ref:`ospf-traffic-engineering`) or ISIS
199 (:ref:`isis-traffic-engineering`) router level in complement to
200 this. Disable link parameters for this interface.
42fc5d26 201
d1a242fd 202 Under link parameter statement, the following commands set the different TE values:
42fc5d26 203
d1a242fd 204.. clicmd:: link-params [enable]
42fc5d26 205
d1a242fd 206 Enable link parameters for this interface.
42fc5d26 207
d1a242fd 208.. clicmd:: link-params [metric (0-4294967295)]
42fc5d26 209
d1a242fd 210.. clicmd:: link-params max-bw BANDWIDTH
42fc5d26 211
d1a242fd 212.. clicmd:: link-params max-rsv-bw BANDWIDTH
42fc5d26 213
d1a242fd 214.. clicmd:: link-params unrsv-bw (0-7) BANDWIDTH
42fc5d26 215
d1a242fd 216.. clicmd:: link-params admin-grp BANDWIDTH
42fc5d26 217
d1a242fd
QY
218 These commands specifies the Traffic Engineering parameters of the interface
219 in conformity to RFC3630 (OSPF) or RFC5305 (ISIS). There are respectively
220 the TE Metric (different from the OSPF or ISIS metric), Maximum Bandwidth
221 (interface speed by default), Maximum Reservable Bandwidth, Unreserved
222 Bandwidth for each 0-7 priority and Admin Group (ISIS) or Resource
223 Class/Color (OSPF).
42fc5d26 224
d1a242fd
QY
225 Note that BANDIWDTH is specified in IEEE floating point format and express
226 in Bytes/second.
42fc5d26 227
d1a242fd 228.. clicmd:: link-param delay (0-16777215) [min (0-16777215) | max (0-16777215)]
42fc5d26 229
d1a242fd 230.. clicmd:: link-param delay-variation (0-16777215)
42fc5d26 231
d1a242fd 232.. clicmd:: link-param packet-loss PERCENTAGE
42fc5d26 233
d1a242fd 234.. clicmd:: link-param res-bw BANDWIDTH
42fc5d26 235
d1a242fd 236.. clicmd:: link-param ava-bw BANDWIDTH
42fc5d26 237
d1a242fd 238.. clicmd:: link-param use-bw BANDWIDTH
42fc5d26 239
d1e7591e 240 These command specifies additional Traffic Engineering parameters of the
d1a242fd
QY
241 interface in conformity to draft-ietf-ospf-te-metrics-extension-05.txt and
242 draft-ietf-isis-te-metrics-extension-03.txt. There are respectively the
243 delay, jitter, loss, available bandwidth, reservable bandwidth and utilized
244 bandwidth.
42fc5d26 245
d1a242fd
QY
246 Note that BANDWIDTH is specified in IEEE floating point format and express
247 in Bytes/second. Delays and delay variation are express in micro-second
248 (µs). Loss is specified in PERCENTAGE ranging from 0 to 50.331642% by step
249 of 0.000003.
42fc5d26 250
d1a242fd 251.. clicmd:: link-param neighbor <A.B.C.D> as (0-65535)
42fc5d26 252
d1a242fd 253.. clicmd:: link-param no neighbor
42fc5d26 254
d1a242fd
QY
255 Specifies the remote ASBR IP address and Autonomous System (AS) number
256 for InterASv2 link in OSPF (RFC5392). Note that this option is not yet
257 supported for ISIS (RFC5316).
42fc5d26 258
43b8e264
QY
259.. clicmd:: ip nht resolve-via-default
260
261 Allows nexthop tracking to resolve via the default route. This is useful
262 when e.g. you want to allow BGP to peer across the default route.
263
f90115c5 264.. _zebra-vrf:
80ca5b6d 265
9187f11a
DS
266Administrative Distance
267=======================
268
269Administrative distance allows FRR to make decisions about what routes
270should be installed in the rib based upon the originating protocol.
271The lowest Admin Distance is the route selected. This is purely a
272subjective decision about ordering and care has been taken to choose
273the same distances that other routing suites have choosen.
274
275+------------+-----------+
276| Protocol | Distance |
277+------------+-----------+
278| System | 0 |
279+------------+-----------+
280| Kernel | 0 |
281+------------+-----------+
282| Connect | 0 |
283+------------+-----------+
284| Static | 1 |
285+------------+-----------+
286| NHRP | 10 |
287+------------+-----------+
288| EBGP | 20 |
289+------------+-----------+
290| EIGRP | 90 |
291+------------+-----------+
292| BABEL | 100 |
293+------------+-----------+
294| OSPF | 110 |
295+------------+-----------+
296| ISIS | 115 |
297+------------+-----------+
298| OPENFABRIC | 115 |
299+------------+-----------+
300| RIP | 120 |
301+------------+-----------+
302| Table | 150 |
303+------------+-----------+
304| SHARP | 150 |
305+------------+-----------+
306| IBGP | 200 |
307+------------+-----------+
308| PBR | 200 |
309+------------+-----------+
310
311An admin distance of 255 indicates to Zebra that the route should not be
312installed into the Data Plane. Additionally routes with an admin distance
313of 255 will not be redistributed.
314
315Zebra does treat Kernel routes as special case for the purposes of Admin
316Distance. Upon learning about a route that is not originated by FRR
317we read the metric value as a uint32_t. The top byte of the value
318is interpreted as the Administrative Distance and the low three bytes
319are read in as the metric. This special case is to facilitate VRF
320default routes.
321
ba5e7ae2
DS
322Route Replace Semantics
323=======================
324
325When using the Linux Kernel as a forwarding plane, routes are installed
326with a metric of 20 to the kernel. Please note that the kernel's metric
327value bears no resemblence to FRR's RIB metric or admin distance. It
328merely is a way for the Linux Kernel to decide which route to use if it
329has multiple routes for the same prefix from multiple sources. An example
330here would be if someone else was running another routing suite besides
331FRR at the same time, the kernel must choose what route to use to forward
332on. FRR choose the value of 20 because of two reasons. FRR wanted a
333value small enough to be choosen but large enough that the operator could
334allow route prioritization by the kernel when multiple routing suites are
335being run and FRR wanted to take advantage of Route Replace semantics that
336the linux kernel offers. In order for Route Replacement semantics to
337work FRR must use the same metric when issuing the replace command.
338Currently FRR only supports Route Replace semantics using the Linux
339Kernel.
340
80ca5b6d
QY
341Virtual Routing and Forwarding
342==============================
42fc5d26 343
80ca5b6d
QY
344FRR supports :abbr:`VRF (Virtual Routing and Forwarding)`. VRF is a way to
345separate networking contexts on the same machine. Those networking contexts are
346associated with separate interfaces, thus making it possible to associate one
347interface with a specific VRF.
204ed384 348
204ed384 349VRF can be used, for example, when instantiating per enterprise networking
80ca5b6d
QY
350services, without having to instantiate the physical host machine or the
351routing management daemons for each enterprise. As a result, interfaces are
352separate for each set of VRF, and routing daemons can have their own context
353for each VRF.
204ed384
PG
354
355This conceptual view introduces the *Default VRF* case. If the user does not
80ca5b6d
QY
356configure any specific VRF, then by default, FRR uses the *Default VRF*.
357
204ed384 358Configuring VRF networking contexts can be done in various ways on FRR. The VRF
80ca5b6d 359interfaces can be configured by entering in interface configuration mode
614aa5c1 360:clicmd:`interface IFNAME vrf VRF`.
204ed384
PG
361
362A VRF backend mode is chosen when running *Zebra*.
363
364If no option is chosen, then the *Linux VRF* implementation as references in
80ca5b6d 365https://www.kernel.org/doc/Documentation/networking/vrf.txt will be mapped over
204ed384
PG
366the *Zebra* VRF. The routing table associated to that VRF is a Linux table
367identifier located in the same *Linux network namespace* where *Zebra* started.
eff8e8a2
DS
368Please note when using the *Linux VRF* routing table it is expected that a
369default Kernel route will be installed that has a metric as outlined in the
370www.kernel.org doc above. The Linux Kernel does table lookup via a combination
371of rule application of the rule table and then route lookup of the specified
372table. If no route match is found then the next applicable rule is applied
373to find the next route table to use to look for a route match. As such if
374your VRF table does not have a default blackhole route with a high metric
375VRF route lookup will leave the table specified by the VRF, which is undesirable.
204ed384 376
80ca5b6d
QY
377If the :option:`-n` option is chosen, then the *Linux network namespace* will
378be mapped over the *Zebra* VRF. That implies that *Zebra* is able to configure
379several *Linux network namespaces*. The routing table associated to that VRF
380is the whole routing tables located in that namespace. For instance, this mode
381matches OpenStack Network Namespaces. It matches also OpenFastPath. The default
382behavior remains Linux VRF which is supported by the Linux kernel community,
383see https://www.kernel.org/doc/Documentation/networking/vrf.txt.
204ed384
PG
384
385Because of that difference, there are some subtle differences when running some
386commands in relationship to VRF. Here is an extract of some of those commands:
387
204ed384
PG
388.. clicmd:: vrf VRF
389
390 This command is available on configuration mode. By default, above command
52119114 391 permits accessing the VRF configuration mode. This mode is available for
d66a93dd
PG
392 both VRFs. It is to be noted that *Zebra* does not create Linux VRF.
393 The network administrator can however decide to provision this command in
394 configuration file to provide more clarity about the intended configuration.
204ed384 395
204ed384
PG
396.. clicmd:: netns NAMESPACE
397
80ca5b6d
QY
398 This command is based on VRF configuration mode. This command is available
399 when *Zebra* is run in :option:`-n` mode. This command reflects which *Linux
400 network namespace* is to be mapped with *Zebra* VRF. It is to be noted that
401 *Zebra* creates and detects added/suppressed VRFs from the Linux environment
d66a93dd
PG
402 (in fact, those managed with iproute2). The network administrator can however
403 decide to provision this command in configuration file to provide more clarity
404 about the intended configuration.
204ed384 405
204ed384
PG
406.. clicmd:: show ip route vrf VRF
407
408 The show command permits dumping the routing table associated to the VRF. If
80ca5b6d
QY
409 *Zebra* is launched with default settings, this will be the ``TABLENO`` of
410 the VRF configured on the kernel, thanks to information provided in
411 https://www.kernel.org/doc/Documentation/networking/vrf.txt. If *Zebra* is
412 launched with :option:`-n` option, this will be the default routing table of
413 the *Linux network namespace* ``VRF``.
204ed384 414
204ed384
PG
415.. clicmd:: show ip route vrf VRF table TABLENO
416
80ca5b6d
QY
417 The show command is only available with :option:`-n` option. This command
418 will dump the routing table ``TABLENO`` of the *Linux network namespace*
419 ``VRF``.
420
5a81528c
PG
421.. clicmd:: show ip route vrf VRF tables
422
423 This command will dump the routing tables within the vrf scope. If `vrf all`
424 is executed, all routing tables will be dumped.
425
a3fd74f7
DS
426.. clicmd:: show <ip|ipv6> route summary [vrf VRF] [table TABLENO] [prefix]
427
428 This command will dump a summary output of the specified VRF and TABLENO
429 combination. If neither VRF or TABLENO is specified FRR defaults to
430 the default vrf and default table. If prefix is specified dump the
431 number of prefix routes.
432
c94e6725
PG
433By using the :option:`-n` option, the *Linux network namespace* will be mapped
434over the *Zebra* VRF. One nice feature that is possible by handling *Linux
435network namespace* is the ability to name default VRF. At startup, *Zebra*
436discovers the available *Linux network namespace* by parsing folder
437`/var/run/netns`. Each file stands for a *Linux network namespace*, but not all
438*Linux network namespaces* are available under that folder. This is the case for
439default VRF. It is possible to name the default VRF, by creating a file, by
440executing following commands.
441
442.. code-block:: shell
443
444 touch /var/run/netns/vrf0
445 mount --bind /proc/self/ns/net /var/run/netns/vrf0
446
447Above command illustrates what happens when the default VRF is visible under
448`var/run/netns/`. Here, the default VRF file is `vrf0`.
449At startup, FRR detects the presence of that file. It detects that the file
450statistics information matches the same file statistics information as
451`/proc/self/ns/net` ( through stat() function). As statistics information
452matches, then `vrf0` stands for the new default namespace name.
56f0bea7 453Consequently, the VRF naming `Default` will be overridden by the new discovered
c94e6725
PG
454namespace name `vrf0`.
455
456For those who don't use VRF backend with *Linux network namespace*, it is
457possible to statically configure and recompile FRR. It is possible to choose an
458alternate name for default VRF. Then, the default VRF naming will automatically
459be updated with the new name. To illustrate, if you want to recompile with
460`global` value, use the following command:
461
cc4345d4 462.. code-block:: shell
c94e6725
PG
463
464 ./configure --with-defaultvrfname=global
465
df55b448
DS
466.. _zebra-ecmp:
467
468ECMP
469====
470
471FRR supports ECMP as part of normal operations and is generally compiled
472with a limit of 64 way ECMP. This of course can be modified via configure
473options on compilation if the end operator desires to do so. Individual
474protocols each have their own way of dictating ECMP policy and their
475respective documentation should be read.
476
477ECMP can be inspected in zebra by doing a `show ip route X` command.
478
479.. code-block:: shell
480
481 eva# show ip route 4.4.4.4/32
482 Codes: K - kernel route, C - connected, S - static, R - RIP,
483 O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
484 T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,
485 F - PBR, f - OpenFabric,
486 > - selected route, * - FIB route, q - queued, r - rejected, b - backup
487 t - trapped, o - offload failure
488
489 D>* 4.4.4.4/32 [150/0] via 192.168.161.1, enp39s0, weight 1, 00:00:02
490 * via 192.168.161.2, enp39s0, weight 1, 00:00:02
491 * via 192.168.161.3, enp39s0, weight 1, 00:00:02
492 * via 192.168.161.4, enp39s0, weight 1, 00:00:02
493 * via 192.168.161.5, enp39s0, weight 1, 00:00:02
494 * via 192.168.161.6, enp39s0, weight 1, 00:00:02
495 * via 192.168.161.7, enp39s0, weight 1, 00:00:02
496 * via 192.168.161.8, enp39s0, weight 1, 00:00:02
497 * via 192.168.161.9, enp39s0, weight 1, 00:00:02
498 * via 192.168.161.10, enp39s0, weight 1, 00:00:02
499 * via 192.168.161.11, enp39s0, weight 1, 00:00:02
500 * via 192.168.161.12, enp39s0, weight 1, 00:00:02
501 * via 192.168.161.13, enp39s0, weight 1, 00:00:02
502 * via 192.168.161.14, enp39s0, weight 1, 00:00:02
503 * via 192.168.161.15, enp39s0, weight 1, 00:00:02
504 * via 192.168.161.16, enp39s0, weight 1, 00:00:02
505
506In this example we have 16 way ecmp for the 4.4.4.4/32 route. The `*` character
507tells us that the route is installed in the Data Plane, or FIB.
508
509If you are using the Linux kernel as a Data Plane, this can be inspected
510via a `ip route show X` command:
511
512.. code-block:: shell
513
514 sharpd@eva ~/f/doc(ecmp_doc_change)> ip route show 4.4.4.4/32
515 4.4.4.4 nhid 185483868 proto sharp metric 20
516 nexthop via 192.168.161.1 dev enp39s0 weight 1
517 nexthop via 192.168.161.10 dev enp39s0 weight 1
518 nexthop via 192.168.161.11 dev enp39s0 weight 1
519 nexthop via 192.168.161.12 dev enp39s0 weight 1
520 nexthop via 192.168.161.13 dev enp39s0 weight 1
521 nexthop via 192.168.161.14 dev enp39s0 weight 1
522 nexthop via 192.168.161.15 dev enp39s0 weight 1
523 nexthop via 192.168.161.16 dev enp39s0 weight 1
524 nexthop via 192.168.161.2 dev enp39s0 weight 1
525 nexthop via 192.168.161.3 dev enp39s0 weight 1
526 nexthop via 192.168.161.4 dev enp39s0 weight 1
527 nexthop via 192.168.161.5 dev enp39s0 weight 1
528 nexthop via 192.168.161.6 dev enp39s0 weight 1
529 nexthop via 192.168.161.7 dev enp39s0 weight 1
530 nexthop via 192.168.161.8 dev enp39s0 weight 1
531 nexthop via 192.168.161.9 dev enp39s0 weight 1
532
533Once installed into the FIB, FRR currently has little control over what
534nexthops are choosen to forward packets on. Currently the Linux kernel
535has a `fib_multipath_hash_policy` sysctl which dictates how the hashing
536algorithm is used to forward packets.
537
b03d3432
PG
538.. _zebra-mpls:
539
540MPLS Commands
541=============
542
543You can configure static mpls entries in zebra. Basically, handling MPLS
544consists of popping, swapping or pushing labels to IP packets.
545
546MPLS Acronyms
547-------------
548
549:abbr:`LSR (Labeled Switch Router)`
550 Networking devices handling labels used to forward traffic between and through
551 them.
552
553:abbr:`LER (Labeled Edge Router)`
554 A Labeled edge router is located at the edge of an MPLS network, generally
555 between an IP network and an MPLS network.
556
557MPLS Push Action
558----------------
559
560The push action is generally used for LER devices, which want to encapsulate
561all traffic for a wished destination into an MPLS label. This action is stored
562in routing entry, and can be configured like a route:
563
03750f1e 564.. clicmd:: ip route NETWORK MASK GATEWAY|INTERFACE label LABEL
b03d3432 565
56f0bea7 566 NETWORK and MASK stand for the IP prefix entry to be added as static
b03d3432
PG
567 route entry.
568 GATEWAY is the gateway IP address to reach, in order to reach the prefix.
569 INTERFACE is the interface behind which the prefix is located.
570 LABEL is the MPLS label to use to reach the prefix abovementioned.
571
572 You can check that the static entry is stored in the zebra RIB database, by
573 looking at the presence of the entry.
574
575 ::
576
577 zebra(configure)# ip route 1.1.1.1/32 10.0.1.1 label 777
578 zebra# show ip route
579 Codes: K - kernel route, C - connected, S - static, R - RIP,
580 O - OSPF, I - IS-IS, B - BGP, E - EIGRP, N - NHRP,
581 T - Table, v - VNC, V - VNC-Direct, A - Babel, D - SHARP,
582 F - PBR,
583 > - selected route, * - FIB route
584
585 S>* 1.1.1.1/32 [1/0] via 10.0.1.1, r2-eth0, label 777, 00:39:42
586
587MPLS Swap and Pop Action
588------------------------
589
590The swap action is generally used for LSR devices, which swap a packet with a
591label, with an other label. The Pop action is used on LER devices, at the
592termination of the MPLS traffic; this is used to remove MPLS header.
593
03750f1e 594.. clicmd:: mpls lsp INCOMING_LABEL GATEWAY OUTGOING_LABEL|explicit-null|implicit-null
b03d3432
PG
595
596 INCOMING_LABEL and OUTGOING_LABEL are MPLS labels with values ranging from 16
597 to 1048575.
598 GATEWAY is the gateway IP address where to send MPLS packet.
599 The outgoing label can either be a value or have an explicit-null label header. This
600 specific header can be read by IP devices. The incoming label can also be removed; in
601 that case the implicit-null keyword is used, and the outgoing packet emitted is an IP
602 packet without MPLS header.
603
604You can check that the MPLS actions are stored in the zebra MPLS table, by looking at the
605presence of the entry.
606
b03d3432
PG
607.. clicmd:: show mpls table
608
609::
610
611 zebra(configure)# mpls lsp 18 10.125.0.2 implicit-null
612 zebra(configure)# mpls lsp 19 10.125.0.2 20
613 zebra(configure)# mpls lsp 21 10.125.0.2 explicit-null
614 zebra# show mpls table
615 Inbound Outbound
616 Label Type Nexthop Label
617 -------- ------- --------------- --------
618 18 Static 10.125.0.2 implicit-null
619 19 Static 10.125.0.2 20
620 21 Static 10.125.0.2 IPv4 Explicit Null
621
622
80ca5b6d
QY
623.. _multicast-rib-commands:
624
42fc5d26
QY
625Multicast RIB Commands
626======================
627
628The Multicast RIB provides a separate table of unicast destinations which
d1a242fd 629is used for Multicast Reverse Path Forwarding decisions. It is used with
42fc5d26
QY
630a multicast source's IP address, hence contains not multicast group
631addresses but unicast addresses.
632
d1a242fd 633This table is fully separate from the default unicast table. However,
42fc5d26
QY
634RPF lookup can include the unicast table.
635
dc1046f7 636WARNING: RPF lookup results are non-responsive in this version of FRR,
42fc5d26
QY
637i.e. multicast routing does not actively react to changes in underlying
638unicast topology!
639
d1a242fd 640.. clicmd:: ip multicast rpf-lookup-mode MODE
42fc5d26 641
42fc5d26 642
d1a242fd 643 MODE sets the method used to perform RPF lookups. Supported modes:
42fc5d26 644
9eb95b3b
QY
645 urib-only
646 Performs the lookup on the Unicast RIB. The Multicast RIB is never used.
42fc5d26 647
9eb95b3b
QY
648 mrib-only
649 Performs the lookup on the Multicast RIB. The Unicast RIB is never used.
42fc5d26 650
9eb95b3b
QY
651 mrib-then-urib
652 Tries to perform the lookup on the Multicast RIB. If any route is found,
653 that route is used. Otherwise, the Unicast RIB is tried.
42fc5d26 654
9eb95b3b
QY
655 lower-distance
656 Performs a lookup on the Multicast RIB and Unicast RIB each. The result
657 with the lower administrative distance is used; if they're equal, the
658 Multicast RIB takes precedence.
42fc5d26 659
9eb95b3b
QY
660 longer-prefix
661 Performs a lookup on the Multicast RIB and Unicast RIB each. The result
662 with the longer prefix length is used; if they're equal, the
663 Multicast RIB takes precedence.
42fc5d26 664
9eb95b3b
QY
665 The `mrib-then-urib` setting is the default behavior if nothing is
666 configured. If this is the desired behavior, it should be explicitly
667 configured to make the configuration immune against possible changes in
668 what the default behavior is.
42fc5d26 669
d1a242fd 670.. warning::
1e31580f 671
d1a242fd
QY
672 Unreachable routes do not receive special treatment and do not cause
673 fallback to a second lookup.
42fc5d26 674
d1a242fd 675.. clicmd:: show ip rpf ADDR
42fc5d26 676
d1a242fd
QY
677 Performs a Multicast RPF lookup, as configured with ``ip multicast
678 rpf-lookup-mode MODE``. ADDR specifies the multicast source address to look
679 up.
42fc5d26 680
d1a242fd 681 ::
42fc5d26
QY
682
683 > show ip rpf 192.0.2.1
684 Routing entry for 192.0.2.0/24 using Unicast RIB
d1a242fd
QY
685
686 Known via "kernel", distance 0, metric 0, best
687 * 198.51.100.1, via eth0
a8c90e15 688
42fc5d26 689
d1a242fd
QY
690 Indicates that a multicast source lookup for 192.0.2.1 would use an
691 Unicast RIB entry for 192.0.2.0/24 with a gateway of 198.51.100.1.
42fc5d26 692
d1a242fd 693.. clicmd:: show ip rpf
42fc5d26 694
d1a242fd
QY
695 Prints the entire Multicast RIB. Note that this is independent of the
696 configured RPF lookup mode, the Multicast RIB may be printed yet not
697 used at all.
42fc5d26 698
d1a242fd 699.. clicmd:: ip mroute PREFIX NEXTHOP [DISTANCE]
42fc5d26 700
42fc5d26 701
d1a242fd
QY
702 Adds a static route entry to the Multicast RIB. This performs exactly as the
703 ``ip route`` command, except that it inserts the route in the Multicast RIB
704 instead of the Unicast RIB.
42fc5d26 705
0efdf0fe 706.. _zebra-route-filtering:
42fc5d26
QY
707
708zebra Route Filtering
709=====================
710
0efdf0fe 711Zebra supports :dfn:`prefix-list` s and :ref:`route-map` s to match routes
013f9762 712received from other FRR components. The permit/deny facilities provided by
d1a242fd
QY
713these commands can be used to filter which routes zebra will install in the
714kernel.
42fc5d26 715
d1a242fd 716.. clicmd:: ip protocol PROTOCOL route-map ROUTEMAP
42fc5d26 717
013f9762 718 Apply a route-map filter to routes for the specified protocol. PROTOCOL can
431dd37e 719 be:
013f9762 720
563018b9
DS
721 - any,
722 - babel,
723 - bgp,
013f9762 724 - connected,
563018b9
DS
725 - eigrp,
726 - isis,
727 - kernel,
728 - nhrp,
729 - openfabric,
013f9762
QY
730 - ospf,
731 - ospf6,
563018b9
DS
732 - rip,
733 - sharp,
734 - static,
735 - ripng,
736 - table,
737 - vnc.
738
739 If you choose any as the option that will cause all protocols that are sending
740 routes to zebra. You can specify a :dfn:`ip protocol PROTOCOL route-map ROUTEMAP`
741 on a per vrf basis, by entering this command under vrf mode for the vrf you
742 want to apply the route-map against.
d1a242fd 743
d1a242fd
QY
744.. clicmd:: set src ADDRESS
745
746 Within a route-map, set the preferred source address for matching routes
747 when installing in the kernel.
748
749
750The following creates a prefix-list that matches all addresses, a route-map
751that sets the preferred source address, and applies the route-map to all
752*rip* routes.
753
9eb95b3b 754.. code-block:: frr
42fc5d26 755
d1a242fd
QY
756 ip prefix-list ANY permit 0.0.0.0/0 le 32
757 route-map RM1 permit 10
758 match ip address prefix-list ANY
759 set src 10.0.0.1
42fc5d26 760
d1a242fd 761 ip protocol rip route-map RM1
a8c90e15 762
1d0372dd
TB
763IPv6 example for OSPFv3.
764
765.. code-block:: frr
766
767 ipv6 prefix-list ANY seq 10 permit any
768 route-map RM6 permit 10
769 match ipv6 address prefix-list ANY
770 set src 2001:db8:425:1000::3
771
772 ipv6 protocol ospf6 route-map RM6
773
774
775.. note::
776
777 For both IPv4 and IPv6, the IP address has to exist at the point the
778 route-map is created. Be wary of race conditions if the interface is
779 not created at startup. On Debian, FRR might start before ifupdown
780 completes. Consider a reboot test.
42fc5d26 781
03750f1e 782.. clicmd:: zebra route-map delay-timer (0-600)
3d34678f
DS
783
784 Set the delay before any route-maps are processed in zebra. The
785 default time for this is 5 seconds.
786
0efdf0fe 787.. _zebra-fib-push-interface:
42fc5d26
QY
788
789zebra FIB push interface
790========================
791
792Zebra supports a 'FIB push' interface that allows an external
dc1046f7 793component to learn the forwarding information computed by the FRR
d1a242fd 794routing suite. This is a loadable module that needs to be enabled
0efdf0fe 795at startup as described in :ref:`loadable-module-support`.
42fc5d26 796
dc1046f7 797In FRR, the Routing Information Base (RIB) resides inside
42fc5d26
QY
798zebra. Routing protocols communicate their best routes to zebra, and
799zebra computes the best route across protocols for each prefix. This
800latter information makes up the Forwarding Information Base
801(FIB). Zebra feeds the FIB to the kernel, which allows the IP stack in
802the kernel to forward packets according to the routes computed by
dc1046f7 803FRR. The kernel FIB is updated in an OS-specific way. For example,
d1e7591e 804the `Netlink` interface is used on Linux, and route sockets are
42fc5d26
QY
805used on FreeBSD.
806
807The FIB push interface aims to provide a cross-platform mechanism to
808support scenarios where the router has a forwarding path that is
809distinct from the kernel, commonly a hardware-based fast path. In
810these cases, the FIB needs to be maintained reliably in the fast path
811as well. We refer to the component that programs the forwarding plane
812(directly or indirectly) as the Forwarding Plane Manager or FPM.
813
80ca5b6d
QY
814.. program:: configure
815
42fc5d26 816The relevant zebra code kicks in when zebra is configured with the
9d736133
RZ
817:option:`--enable-fpm` flag and started with the module (``-M fpm``
818or ``-M dplane_fpm_nl``).
819
820.. note::
821
822 The ``fpm`` implementation attempts to connect to ``127.0.0.1`` port ``2620``
823 by default without configurations. The ``dplane_fpm_nl`` only attempts to
824 connect to a server if configured.
825
826Zebra periodically attempts to connect to the well-known FPM port (``2620``).
827Once the connection is up, zebra starts sending messages containing routes
828over the socket to the FPM. Zebra sends a complete copy of the forwarding
829table to the FPM, including routes that it may have picked up from the kernel.
830The existing interaction of zebra with the kernel remains unchanged -- that
831is, the kernel continues to receive FIB updates as before.
832
833The default FPM message format is netlink, however it can be controlled
834with the module load-time option. The modules accept the following options:
835
836- ``fpm``: ``netlink`` and ``protobuf``.
837- ``dplane_fpm_nl``: none, it only implements netlink.
42fc5d26
QY
838
839The zebra FPM interface uses replace semantics. That is, if a 'route
840add' message for a prefix is followed by another 'route add' message,
841the information in the second message is complete by itself, and
842replaces the information sent in the first message.
843
844If the connection to the FPM goes down for some reason, zebra sends
845the FPM a complete copy of the forwarding table(s) when it reconnects.
846
9d736133
RZ
847For more details on the implementation, please read the developer's manual FPM
848section.
849
850FPM Commands
851============
852
853``fpm`` implementation
854----------------------
855
9d736133
RZ
856.. clicmd:: fpm connection ip A.B.C.D port (1-65535)
857
03750f1e
QY
858 Configure ``zebra`` to connect to a different FPM server than the default of
859 ``127.0.0.1:2060``
9d736133 860
9d736133
RZ
861.. clicmd:: show zebra fpm stats
862
863 Shows the FPM statistics.
864
865 Sample output:
866
867 ::
868
869 Counter Total Last 10 secs
870
871 connect_calls 3 2
872 connect_no_sock 0 0
873 read_cb_calls 2 2
874 write_cb_calls 2 0
875 write_calls 1 0
876 partial_writes 0 0
877 max_writes_hit 0 0
878 t_write_yields 0 0
879 nop_deletes_skipped 6 0
880 route_adds 5 0
881 route_dels 0 0
882 updates_triggered 11 0
883 redundant_triggers 0 0
884 dests_del_after_update 0 0
885 t_conn_down_starts 0 0
886 t_conn_down_dests_processed 0 0
887 t_conn_down_yields 0 0
888 t_conn_down_finishes 0 0
889 t_conn_up_starts 1 0
890 t_conn_up_dests_processed 11 0
891 t_conn_up_yields 0 0
892 t_conn_up_aborts 0 0
893 t_conn_up_finishes 1 0
894
895
9d736133
RZ
896.. clicmd:: clear zebra fpm stats
897
6d8589da
RZ
898 Reset statistics related to the zebra code that interacts with the
899 optional Forwarding Plane Manager (FPM) component.
9d736133
RZ
900
901
902``dplane_fpm_nl`` implementation
903--------------------------------
904
9d736133
RZ
905.. clicmd:: fpm address <A.B.C.D|X:X::X:X> [port (1-65535)]
906
907 Configures the FPM server address. Once configured ``zebra`` will attempt
908 to connect to it immediately.
909
03750f1e
QY
910 The ``no`` form disables FPM entirely. ``zebra`` will close any current
911 connections and will not attempt to connect to it anymore.
9d736133 912
5f66e9a0
RZ
913.. clicmd:: fpm use-next-hop-groups
914
915 Use the new netlink messages ``RTM_NEWNEXTHOP`` / ``RTM_DELNEXTHOP`` to
916 group repeated route next hop information.
917
f41ddc27 918 The ``no`` form uses the old known FPM behavior of including next hop
03750f1e 919 information in the route (e.g. ``RTM_NEWROUTE``) messages.
5f66e9a0 920
9d736133
RZ
921.. clicmd:: show fpm counters [json]
922
923 Show the FPM statistics (plain text or JSON formatted).
924
925 Sample output:
926
927 ::
928
929 FPM counters
930 ============
931 Input bytes: 0
932 Output bytes: 308
933 Output buffer current size: 0
934 Output buffer peak size: 308
935 Connection closes: 0
936 Connection errors: 0
937 Data plane items processed: 0
938 Data plane items enqueued: 0
939 Data plane items queue peak: 0
940 Buffer full hits: 0
941 User FPM configurations: 1
942 User FPM disable requests: 0
943
944
9d736133
RZ
945.. clicmd:: clear fpm counters
946
6d8589da
RZ
947 Reset statistics related to the zebra code that interacts with the
948 optional Forwarding Plane Manager (FPM) component.
9d736133
RZ
949
950
3fdcb303
MS
951.. _zebra-dplane:
952
953Dataplane Commands
954==================
955
956The zebra dataplane subsystem provides a framework for FIB
957programming. Zebra uses the dataplane to program the local kernel as
958it makes changes to objects such as IP routes, MPLS LSPs, and
959interface IP addresses. The dataplane runs in its own pthread, in
960order to off-load work from the main zebra pthread.
961
962
3fdcb303
MS
963.. clicmd:: show zebra dplane [detailed]
964
965 Display statistics about the updates and events passing through the
966 dataplane subsystem.
967
968
3fdcb303
MS
969.. clicmd:: show zebra dplane providers
970
971 Display information about the running dataplane plugins that are
972 providing updates to a FIB. By default, the local kernel plugin is
973 present.
974
975
3fdcb303
MS
976.. clicmd:: zebra dplane limit [NUMBER]
977
978 Configure the limit on the number of pending updates that are
979 waiting to be processed by the dataplane pthread.
980
981
42fc5d26
QY
982zebra Terminal Mode Commands
983============================
984
d1a242fd 985.. clicmd:: show ip route
42fc5d26 986
d1a242fd 987 Display current routes which zebra holds in its database.
42fc5d26
QY
988
989::
990
42fc5d26
QY
991 Router# show ip route
992 Codes: K - kernel route, C - connected, S - static, R - RIP,
d1a242fd 993 B - BGP * - FIB route.
42fc5d26 994
d1a242fd
QY
995 K* 0.0.0.0/0 203.181.89.241
996 S 0.0.0.0/0 203.181.89.1
997 C* 127.0.0.0/8 lo
42fc5d26 998 C* 203.181.89.240/28 eth0
a8c90e15 999
42fc5d26 1000
d1a242fd 1001.. clicmd:: show ipv6 route
42fc5d26 1002
da3ef85b 1003.. clicmd:: show [ip|ipv6] route [PREFIX] [nexthop-group]
fbe49edb 1004
da3ef85b
SW
1005 Display detailed information about a route. If [nexthop-group] is
1006 included, it will display the nexthop group ID the route is using as well.
1007
da3ef85b
SW
1008.. clicmd:: show interface [NAME] [{vrf VRF|brief}] [nexthop-group]
1009
da3ef85b
SW
1010.. clicmd:: show interface [NAME] [{vrf all|brief}] [nexthop-group]
1011
1012 Display interface information. If no extra information is added, it will
1013 dump information on all interfaces. If [NAME] is specified, it will display
1014 detailed information about that single interface. If [nexthop-group] is
1015 specified, it will display nexthop groups pointing out that interface.
42fc5d26 1016
d1a242fd 1017.. clicmd:: show ip prefix-list [NAME]
42fc5d26 1018
d1a242fd 1019.. clicmd:: show route-map [NAME]
42fc5d26 1020
d1a242fd 1021.. clicmd:: show ip protocol
42fc5d26 1022
854cdf7c 1023.. clicmd:: show ip forward
42fc5d26 1024
d1a242fd
QY
1025 Display whether the host's IP forwarding function is enabled or not.
1026 Almost any UNIX kernel can be configured with IP forwarding disabled.
1027 If so, the box can't work as a router.
42fc5d26 1028
854cdf7c 1029.. clicmd:: show ipv6 forward
42fc5d26 1030
d1a242fd 1031 Display whether the host's IP v6 forwarding is enabled or not.
42fc5d26 1032
d1a242fd 1033.. clicmd:: show zebra
42fc5d26 1034
d1a242fd
QY
1035 Display various statistics related to the installation and deletion
1036 of routes, neighbor updates, and LSP's into the kernel.
42fc5d26 1037
46677ed2
DS
1038.. clicmd:: show zebra client [summary]
1039
1040 Display statistics about clients that are connected to zebra. This is
1041 useful for debugging and seeing how much data is being passed between
1042 zebra and it's clients. If the summary form of the command is choosen
1043 a table is displayed with shortened information.
1044
46677ed2
DS
1045.. clicmd:: show zebra router table summary
1046
1047 Display summarized data about tables created, their afi/safi/tableid
1048 and how many routes each table contains. Please note this is the
1049 total number of route nodes in the table. Which will be higher than
1050 the actual number of routes that are held.
1051
a8ad9a89 1052.. clicmd:: show nexthop-group rib [ID] [vrf NAME] [singleton [ip|ip6]] [type]
083954e9
DS
1053
1054 Display nexthop groups created by zebra. The [vrf NAME] option
1055 is only meaningful if you have started zebra with the --vrfwnetns
1056 option as that nexthop groups are per namespace in linux.
1057 If you specify singleton you would like to see the singleton
a8ad9a89
SW
1058 nexthop groups that do have an afi. [type] allows you to filter those
1059 only coming from a specific NHG type (protocol).
da3ef85b 1060
d29fd1b7 1061.. clicmd:: show <ip|ipv6> zebra route dump [<vrf> VRFNAME]
1062
1063 It dumps all the routes from RIB with detailed information including
1064 internal flags, status etc. This is defined as a hidden command.
1065
13b01f2f
JAG
1066
1067Router-id
1068=========
1069
1070Many routing protocols require a router-id to be configured. To have a
1071consistent router-id across all daemons, the following commands are available
1072to configure and display the router-id:
1073
03750f1e 1074.. clicmd:: [ip] router-id A.B.C.D
13b01f2f 1075
17d1eafa 1076 Allow entering of the router-id. This command also works under the
98a3fb0a 1077 vrf subnode, to allow router-id's per vrf.
13b01f2f 1078
03750f1e 1079.. clicmd:: [ip] router-id A.B.C.D vrf NAME
17d1eafa
DS
1080
1081 Configure the router-id of this router from the configure NODE.
1082 A show run of this command will display the router-id command
1083 under the vrf sub node. This command is deprecated and will
1084 be removed at some point in time in the future.
98a3fb0a 1085
98a3fb0a 1086.. clicmd:: show [ip] router-id [vrf NAME]
13b01f2f
JAG
1087
1088 Display the user configured router-id.
1089
98a3fb0a
SM
1090For protocols requiring an IPv6 router-id, the following commands are available:
1091
03750f1e 1092.. clicmd:: ipv6 router-id X:X::X:X
98a3fb0a
SM
1093
1094 Configure the IPv6 router-id of this router. Like its IPv4 counterpart,
1095 this command works under the vrf subnode, to allow router-id's per vrf.
1096
98a3fb0a 1097.. clicmd:: show ipv6 router-id [vrf NAME]
13b01f2f 1098
98a3fb0a 1099 Display the user configured IPv6 router-id.
8d150f52 1100
cbacd05b
DS
1101Expected sysctl settings
1102========================
1103
1104The linux kernel has a variety of sysctl's that affect it's operation as a router. This
1105section is meant to act as a starting point for those sysctl's that must be used in
1106order to provide FRR with smooth operation as a router. This section is not meant
1107as the full documentation for sysctl's. The operator must use the sysctl documentation
1108with the linux kernel for that.
1109
1110.. option:: net.ipv4.ip_forward = 1
1111
1112 This option allows the linux kernel to forward ipv4 packets incoming from one interface
1113 to an outgoing interface. Without this no forwarding will take place from off box packets.
1114
1115.. option:: net.ipv6.conf.all_forwarding=1
1116
1117 This option allows the linux kernel to forward ipv6 packets incoming from one interface
1118 to an outgoing interface. Without this no forwarding will take place from off box packets.
1119
1120.. option:: net.ipv6.conf.all.keep_addr_on_down=1
1121
1122 When an interface is taken down, do not remove the v6 addresses associated with the interface.
1123 This option is recommended because this is the default behavior for v4 as well.
1124
1125.. option:: net.ipv6.route.skip_notify_on_dev_down=1
1126
1127 When an interface is taken down, the linux kernel will not notify, via netlink, about routes
1128 that used that interface being removed from the FIB. This option is recommended because this
1129 is the default behavior for v4 as well.
8d150f52
MS
1130
1131Debugging
1132=========
1133
1134.. clicmd:: debug zebra mpls [detailed]
1135
1136 MPLS-related events and information.
1137
1138.. clicmd:: debug zebra events
1139
1140 Zebra events
1141
1142.. clicmd:: debug zebra nht [detailed]
1143
1144 Nexthop-tracking / reachability information
1145
1146.. clicmd:: debug zebra vxlan
1147
1148 VxLAN (EVPN) events
1149
1150.. clicmd:: debug zebra pseudowires
1151
1152 Pseudowire events.
1153
1154.. clicmd:: debug zebra packet [<recv|send>] [detail]
1155
1156 ZAPI message and packet details
1157
1158.. clicmd:: debug zebra kernel
1159
1160 Kernel / OS events.
1161
1162.. clicmd:: debug zebra kernel msgdump [<recv|send>]
1163
1164 Raw OS (netlink) message details.
1165
1166.. clicmd:: debug zebra rib [detailed]
1167
1168 RIB events.
1169
1170.. clicmd:: debug zebra fpm
1171
1172 FPM (forwarding-plane manager) events.
1173
1174.. clicmd:: debug zebra dplane [detailed]
1175
1176 Dataplane / FIB events.
1177
1178.. clicmd:: debug zebra pbr
1179
1180 PBR (policy-based routing) events.
1181
1182.. clicmd:: debug zebra mlag
1183
1184 MLAG events.
1185
1186.. clicmd:: debug zebra evpn mh <es|mac|neigh|nh>
1187
1188 EVPN multi-hop events.
1189
1190.. clicmd:: debug zebra nexthop [detail]
1191
1192 Nexthop and nexthop-group events.
1193