]> git.proxmox.com Git - mirror_frr.git/blame - doc/user/bfd.rst
Merge pull request #5301 from idryzhov/show-interface
[mirror_frr.git] / doc / user / bfd.rst
CommitLineData
c44032c1
RZ
1.. _bfd:
2
3**********************************
4Bidirectional Forwarding Detection
5**********************************
6
7:abbr:`BFD (Bidirectional Forwarding Detection)` stands for
8Bidirectional Forwarding Detection and it is described and extended by
9the following RFCs:
10
11* :rfc:`5880`
12* :rfc:`5881`
13* :rfc:`5883`
14
15Currently, there are two implementations of the BFD commands in FRR:
16
17* :abbr:`PTM (Prescriptive Topology Manager)`: an external daemon which
18 implements BFD;
19* ``bfdd``: a BFD implementation that is able to talk with remote peers;
20
21This document will focus on the later implementation: *bfdd*.
22
23
24.. _bfd-starting:
25
26Starting BFD
27============
28
29*bfdd* default configuration file is :file:`bfdd.conf`. *bfdd* searches
30the current directory first then |INSTALL_PREFIX_ETC|/bfdd.conf. All of
31*bfdd*'s command must be configured in :file:`bfdd.conf`.
32
33*bfdd* specific invocation options are described below. Common options
34may also be specified (:ref:`common-invocation-options`).
35
36.. program:: bfdd
37
38.. option:: --bfdctl <unix-socket>
39
40 Set the BFD daemon control socket location. If using a non-default
123582b3 41 socket location::
c44032c1
RZ
42
43 /usr/lib/frr/bfdd --bfdctl /tmp/bfdd.sock
44
45
46 The default UNIX socket location is:
47
48 #define BFDD_CONTROL_SOCKET "|INSTALL_PREFIX_STATE|/bfdd.sock"
49
6ed85950
DS
50 This option overrides the location addition that the -N option provides
51 to the bfdd.sock
52
c44032c1
RZ
53
54.. _bfd-commands:
55
56BFDd Commands
57=============
58
59.. index:: bfd
60.. clicmd:: bfd
61
62 Opens the BFD daemon configuration node.
63
64.. index:: peer <A.B.C.D|X:X::X:X> [{multihop|local-address <A.B.C.D|X:X::X:X>|interface IFNAME|vrf NAME}]
65.. clicmd:: peer <A.B.C.D|X:X::X:X> [{multihop|local-address <A.B.C.D|X:X::X:X>|interface IFNAME|vrf NAME}]
66
67 Creates and configures a new BFD peer to listen and talk to.
68
69 `multihop` tells the BFD daemon that we should expect packets with
70 TTL less than 254 (because it will take more than one hop) and to
71 listen on the multihop port (4784). When using multi-hop mode
72 `echo-mode` will not work (see :rfc:`5883` section 3).
73
74 `local-address` provides a local address that we should bind our
75 peer listener to and the address we should use to send the packets.
76 This option is mandatory for IPv6.
77
626618ca 78 `interface` selects which interface we should use.
c44032c1
RZ
79
80 `vrf` selects which domain we want to use.
81
e429a2a0
IR
82.. index:: no peer <A.B.C.D|X:X::X:X>$peer [{multihop|local-address <A.B.C.D|X:X::X:X>$local|interface IFNAME$ifname|vrf NAME$vrf_name}]
83.. clicmd:: no peer <A.B.C.D|X:X::X:X>$peer [{multihop|local-address <A.B.C.D|X:X::X:X>$local|interface IFNAME$ifname|vrf NAME$vrf_name}]
c44032c1
RZ
84
85 Stops and removes the selected peer.
86
088f4902
RZ
87
88.. index:: profile WORD
89.. clicmd:: profile WORD
90
91 Creates a peer profile that can be configured in multiple peers.
92
93
94.. index:: no profile WORD
95.. clicmd:: no profile WORD
96
97 Deletes a peer profile. Any peer using the profile will have their
98 configurations reset to the default values.
99
100
c3771c91
PG
101.. index:: show bfd [vrf NAME] peers [json]
102.. clicmd:: show bfd [vrf NAME] peers [json]
c44032c1
RZ
103
104 Show all configured BFD peers information and current status.
105
e429a2a0
IR
106.. index:: show bfd [vrf NAME$vrf_name] peer <WORD$label|<A.B.C.D|X:X::X:X>$peer [{multihop|local-address <A.B.C.D|X:X::X:X>$local|interface IFNAME$ifname}]> [json]
107.. clicmd:: show bfd [vrf NAME$vrf_name] peer <WORD$label|<A.B.C.D|X:X::X:X>$peer [{multihop|local-address <A.B.C.D|X:X::X:X>$local|interface IFNAME$ifname}]> [json]
c44032c1
RZ
108
109 Show status for a specific BFD peer.
110
54719107
S
111.. index:: show bfd [vrf NAME] peers brief [json]
112.. clicmd:: show bfd [vrf NAME] peers brief [json]
113
114 Show all configured BFD peers information and current status in brief.
c44032c1
RZ
115
116.. _bfd-peer-config:
117
088f4902
RZ
118Peer / Profile Configuration
119----------------------------
120
121BFD peers and profiles share the same BFD session configuration commands.
c44032c1
RZ
122
123.. index:: detect-multiplier (2-255)
124.. clicmd:: detect-multiplier (2-255)
125
126 Configures the detection multiplier to determine packet loss. The
127 remote transmission interval will be multiplied by this value to
128 determine the connection loss detection timer. The default value is
129 3.
130
131 Example: when the local system has `detect-multiplier 3` and the
132 remote system has `transmission interval 300`, the local system will
133 detect failures only after 900 milliseconds without receiving
134 packets.
135
136.. index:: receive-interval (10-60000)
137.. clicmd:: receive-interval (10-60000)
138
139 Configures the minimum interval that this system is capable of
140 receiving control packets. The default value is 300 milliseconds.
141
142.. index:: transmit-interval (10-60000)
143.. clicmd:: transmit-interval (10-60000)
144
145 The minimum transmission interval (less jitter) that this system
a01cb26c 146 wants to use to send BFD control packets. Defaults to 300ms.
c44032c1
RZ
147
148.. index:: echo-interval (10-60000)
149.. clicmd:: echo-interval (10-60000)
150
151 Configures the minimal echo receive transmission interval that this
152 system is capable of handling.
153
154.. index:: [no] echo-mode
155.. clicmd:: [no] echo-mode
156
157 Enables or disables the echo transmission mode. This mode is disabled
158 by default.
159
160 It is recommended that the transmission interval of control packets
161 to be increased after enabling echo-mode to reduce bandwidth usage.
a01cb26c 162 For example: `transmit-interval 2000`.
c44032c1
RZ
163
164 Echo mode is not supported on multi-hop setups (see :rfc:`5883`
165 section 3).
166
167.. index:: [no] shutdown
168.. clicmd:: [no] shutdown
169
170 Enables or disables the peer. When the peer is disabled an
171 'administrative down' message is sent to the remote peer.
172
088f4902
RZ
173
174BFD Peer Specific Commands
175--------------------------
176
c44032c1
RZ
177.. index:: label WORD
178.. clicmd:: label WORD
179
180 Labels a peer with the provided word. This word can be referenced
181 later on other daemons to refer to a specific peer.
182
183
088f4902
RZ
184.. index:: profile BFDPROF
185.. clicmd:: profile BFDPROF
186
187 Configure peer to use the profile configurations.
188
189 Notes:
190
191 - Profile configurations can be overriden on a peer basis by specifying
192 new parameters in peer configuration node.
193 - Non existing profiles can be configured and they will only be applied
194 once they start to exist.
195 - If the profile gets updated the new configuration will be applied to all
196 peers with the profile without interruptions.
197
198
c44032c1
RZ
199.. _bfd-bgp-peer-config:
200
201BGP BFD Configuration
202---------------------
203
123582b3
RZ
204The following commands are available inside the BGP configuration node.
205
c44032c1
RZ
206.. index:: neighbor <A.B.C.D|X:X::X:X|WORD> bfd
207.. clicmd:: neighbor <A.B.C.D|X:X::X:X|WORD> bfd
208
209 Listen for BFD events registered on the same target as this BGP
210 neighbor. When BFD peer goes down it immediately asks BGP to shutdown
211 the connection with its neighbor and, when it goes back up, notify
212 BGP to try to connect to it.
213
214.. index:: no neighbor <A.B.C.D|X:X::X:X|WORD> bfd
215.. clicmd:: no neighbor <A.B.C.D|X:X::X:X|WORD> bfd
216
217 Removes any notification registration for this neighbor.
218
7b8ca2a8
PG
219.. index:: neighbor <A.B.C.D|X:X::X:X|WORD> bfd check-control-plane-failure
220.. clicmd:: neighbor <A.B.C.D|X:X::X:X|WORD> bfd check-control-plane-failure
221
222 Allow to write CBIT independence in BFD outgoing packets. Also allow to
223 read both C-BIT value of BFD and lookup BGP peer status. This command is
224 useful when a BFD down event is caught, while the BGP peer requested that
225 local BGP keeps the remote BGP entries as staled if such issue is detected.
226 This is the case when graceful restart is enabled, and it is wished to
227 ignore the BD event while waiting for the remote router to restart.
228
229.. index:: no neighbor <A.B.C.D|X:X::X:X|WORD> bfd check-control-plane-failure
230.. clicmd:: no neighbor <A.B.C.D|X:X::X:X|WORD> bfd check-control-plane-failure
231
232 Disallow to write CBIT independence in BFD outgoing packets. Also disallow
233 to ignore BFD down notification. This is the default behaviour.
c44032c1 234
55d1a984
RZ
235
236.. index:: neighbor <A.B.C.D|X:X::X:X|WORD> bfd profile BFDPROF
237.. clicmd:: neighbor <A.B.C.D|X:X::X:X|WORD> bfd profile BFDPROF
238
239 Same as command ``neighbor <A.B.C.D|X:X::X:X|WORD> bfd``, but applies the
240 BFD profile to the sessions it creates or that already exist.
241
242
243.. index:: no neighbor <A.B.C.D|X:X::X:X|WORD> bfd profile BFDPROF
244.. clicmd:: no neighbor <A.B.C.D|X:X::X:X|WORD> bfd profile BFDPROF
245
246 Removes the BFD profile configuration from peer session(s).
247
248
a01cb26c
G
249.. _bfd-isis-peer-config:
250
251IS-IS BFD Configuration
252-----------------------
253
254The following commands are available inside the interface configuration node.
255
256.. index:: isis bfd
257.. clicmd:: ip isis bfd
258
259 Listen for BFD events on peers created on the interface. Every time
260 a new neighbor is found a BFD peer is created to monitor the link
261 status for fast convergence.
262
263.. index:: no isis bfd
264.. clicmd:: no isis bfd
265
266 Removes any notification registration for this interface peers.
267
268 Note that there will be just one BFD session per interface. In case both
269 IPv4 and IPv6 support are configured then just a IPv6 based session is
270 created.
271
272
123582b3
RZ
273.. _bfd-ospf-peer-config:
274
275OSPF BFD Configuration
e36ff3f3 276----------------------
123582b3
RZ
277
278The following commands are available inside the interface configuration node.
279
280.. index:: ip ospf bfd
281.. clicmd:: ip ospf bfd
282
283 Listen for BFD events on peers created on the interface. Every time
284 a new neighbor is found a BFD peer is created to monitor the link
285 status for fast convergence.
286
287.. index:: no ip ospf bfd
288.. clicmd:: no ip ospf bfd
289
290 Removes any notification registration for this interface peers.
291
292
293.. _bfd-ospf6-peer-config:
294
295OSPF6 BFD Configuration
296-----------------------
297
298The following commands are available inside the interface configuration node.
299
300.. index:: ipv6 ospf6 bfd
301.. clicmd:: ipv6 ospf6 bfd
302
303 Listen for BFD events on peers created on the interface. Every time
304 a new neighbor is found a BFD peer is created to monitor the link
305 status for fast convergence.
306
307.. index:: no ipv6 ospf6 bfd
308.. clicmd:: no ipv6 ospf6 bfd
309
310 Removes any notification registration for this interface peers.
311
312
313.. _bfd-pim-peer-config:
314
315PIM BFD Configuration
316---------------------
317
318The following commands are available inside the interface configuration node.
319
320.. index:: ip pim bfd
321.. clicmd:: ip pim bfd
322
323 Listen for BFD events on peers created on the interface. Every time
324 a new neighbor is found a BFD peer is created to monitor the link
325 status for fast convergence.
326
327.. index:: no ip pim bfd
328.. clicmd:: no ip pim bfd
329
330 Removes any notification registration for this interface peers.
331
332
c44032c1
RZ
333.. _bfd-configuration:
334
335Configuration
336=============
337
338Before applying ``bfdd`` rules to integrated daemons (like BGPd), we must
339create the corresponding peers inside the ``bfd`` configuration node.
340
341Here is an example of BFD configuration:
342
343::
344
345 bfd
346 peer 192.168.0.1
347 label home-peer
348 no shutdown
349 !
350 !
351 router bgp 65530
352 neighbor 192.168.0.1 remote-as 65531
353 neighbor 192.168.0.1 bfd
354 neighbor 192.168.0.2 remote-as 65530
355 neighbor 192.168.0.2 bfd
356 neighbor 192.168.0.3 remote-as 65532
357 neighbor 192.168.0.3 bfd
358 !
359
360Peers can be identified by its address (use ``multihop`` when you need
361to specify a multi hop peer) or can be specified manually by a label.
362
363Here are the available peer configurations:
364
365::
366
367 bfd
088f4902
RZ
368 ! Configure a fast profile
369 profile fast
370 receive-interval 150
371 transmit-interval 150
372 !
373
374 ! Configure peer with fast profile
375 peer 192.168.0.6
376 profile fast
377 no shutdown
378 !
379
380 ! Configure peer with fast profile and override receive speed.
381 peer 192.168.0.7
382 profile fast
383 receive-interval 500
384 no shutdown
385 !
c44032c1
RZ
386
387 ! configure a peer on an specific interface
388 peer 192.168.0.1 interface eth0
389 no shutdown
390 !
391
392 ! configure a multihop peer
393 peer 192.168.0.2 multihop local-address 192.168.0.3
394 shutdown
395 !
396
397 ! configure a peer in a different vrf
398 peer 192.168.0.3 vrf foo
399 shutdown
400 !
401
402 ! configure a peer with every option possible
403 peer 192.168.0.4
404 label peer-label
405 detect-multiplier 50
406 receive-interval 60000
407 transmit-interval 3000
408 shutdown
409 !
410
626618ca
PG
411 ! configure a peer on an interface from a separate vrf
412 peer 192.168.0.5 interface eth1 vrf vrf2
413 no shutdown
414 !
415
c44032c1
RZ
416 ! remove a peer
417 no peer 192.168.0.3 vrf foo
418
419
420.. _bfd-status:
421
422Status
423======
424
425You can inspect the current BFD peer status with the following commands:
426
427::
428
429 frr# show bfd peers
430 BFD Peers:
431 peer 192.168.0.1
432 ID: 1
433 Remote ID: 1
434 Status: up
435 Uptime: 1 minute(s), 51 second(s)
436 Diagnostics: ok
437 Remote diagnostics: ok
54719107 438 Peer Type: dynamic
c44032c1 439 Local timers:
54719107 440 Detect-multiplier: 3
c44032c1
RZ
441 Receive interval: 300ms
442 Transmission interval: 300ms
443 Echo transmission interval: disabled
444 Remote timers:
54719107 445 Detect-multiplier: 3
c44032c1
RZ
446 Receive interval: 300ms
447 Transmission interval: 300ms
448 Echo transmission interval: 50ms
449
450 peer 192.168.1.1
451 label: router3-peer
452 ID: 2
453 Remote ID: 2
454 Status: up
455 Uptime: 1 minute(s), 53 second(s)
456 Diagnostics: ok
457 Remote diagnostics: ok
54719107 458 Peer Type: configured
c44032c1 459 Local timers:
54719107 460 Detect-multiplier: 3
c44032c1
RZ
461 Receive interval: 300ms
462 Transmission interval: 300ms
463 Echo transmission interval: disabled
464 Remote timers:
54719107 465 Detect-multiplier: 3
c44032c1
RZ
466 Receive interval: 300ms
467 Transmission interval: 300ms
468 Echo transmission interval: 50ms
469
470 frr# show bfd peer 192.168.1.1
471 BFD Peer:
472 peer 192.168.1.1
473 label: router3-peer
474 ID: 2
475 Remote ID: 2
476 Status: up
477 Uptime: 3 minute(s), 4 second(s)
478 Diagnostics: ok
479 Remote diagnostics: ok
54719107 480 Peer Type: dynamic
c44032c1 481 Local timers:
54719107 482 Detect-multiplier: 3
c44032c1
RZ
483 Receive interval: 300ms
484 Transmission interval: 300ms
485 Echo transmission interval: disabled
486 Remote timers:
54719107 487 Detect-multiplier: 3
c44032c1
RZ
488 Receive interval: 300ms
489 Transmission interval: 300ms
490 Echo transmission interval: 50ms
123582b3
RZ
491
492 frr# show bfd peer 192.168.0.1 json
54719107
S
493 {"multihop":false,"peer":"192.168.0.1","id":1,"remote-id":1,"status":"up","uptime":161,"diagnostic":"ok","remote-diagnostic":"ok","receive-interval":300,"transmit-interval":300,"echo-interval":50,"detect-multiplier":3,"remote-receive-interval":300,"remote-transmit-interval":300,"remote-echo-interval":50,"remote-detect-multiplier":3,"peer-type":"dynamic"}
494
495
496You can inspect the current BFD peer status in brief with the following commands:
497
498::
499
431dd37e 500 frr# show bfd peers brief
54719107
S
501 Session count: 1
502 SessionId LocalAddress PeerAddress Status
503 ========= ============ =========== ======
504 1 192.168.0.1 192.168.0.2 up
123582b3
RZ
505
506
507You can also inspect peer session counters with the following commands:
508
509::
510
511 frr# show bfd peers counters
512 BFD Peers:
513 peer 192.168.2.1 interface r2-eth2
514 Control packet input: 28 packets
515 Control packet output: 28 packets
516 Echo packet input: 0 packets
517 Echo packet output: 0 packets
518 Session up events: 1
519 Session down events: 0
520 Zebra notifications: 2
521
522 peer 192.168.0.1
523 Control packet input: 54 packets
524 Control packet output: 103 packets
525 Echo packet input: 965 packets
526 Echo packet output: 966 packets
527 Session up events: 1
528 Session down events: 0
529 Zebra notifications: 4
530
531 frr# show bfd peer 192.168.0.1 counters
532 peer 192.168.0.1
533 Control packet input: 126 packets
534 Control packet output: 247 packets
535 Echo packet input: 2409 packets
536 Echo packet output: 2410 packets
537 Session up events: 1
538 Session down events: 0
539 Zebra notifications: 4
540
541 frr# show bfd peer 192.168.0.1 counters json
e36ff3f3 542 {"multihop":false,"peer":"192.168.0.1","control-packet-input":348,"control-packet-output":685,"echo-packet-input":6815,"echo-packet-output":6816,"session-up":1,"session-down":0,"zebra-notifications":4}
54719107
S
543
544You can also clear packet counters per session with the following commands, only the packet counters will be reset:
545
546::
547
548 frr# clear bfd peers counters
549
550 frr# show bfd peers counters
551 BFD Peers:
552 peer 192.168.2.1 interface r2-eth2
553 Control packet input: 0 packets
554 Control packet output: 0 packets
555 Echo packet input: 0 packets
556 Echo packet output: 0 packets
557 Session up events: 1
558 Session down events: 0
559 Zebra notifications: 2
560
561 peer 192.168.0.1
562 Control packet input: 0 packets
563 Control packet output: 0 packets
564 Echo packet input: 0 packets
565 Echo packet output: 0 packets
566 Session up events: 1
567 Session down events: 0
568 Zebra notifications: 4
569
2b21c550
RZ
570Debugging
571=========
8202e9a0 572
2b21c550
RZ
573By default only informational, warning and errors messages are going to be
574displayed. If you want to get debug messages and other diagnostics then make
575sure you have `debugging` level enabled:
8202e9a0
TB
576
577::
578
579 config
580 log file /var/log/frr/frr.log debugging
581 log syslog debugging
2b21c550
RZ
582
583You may also fine tune the debug messages by selecting one or more of the
584debug levels:
585
586.. index:: [no] debug bfd network
587.. clicmd:: [no] debug bfd network
588
589 Toggle network events: show messages about socket failures and unexpected
590 BFD messages that may not belong to registered peers.
591
592.. index:: [no] debug bfd peer
593.. clicmd:: [no] debug bfd peer
594
595 Toggle peer event log messages: show messages about peer creation/removal
596 and state changes.
597
598.. index:: [no] debug bfd zebra
599.. clicmd:: [no] debug bfd zebra
600
601 Toggle zebra message events: show messages about interfaces, local
602 addresses, VRF and daemon peer registrations.