]> git.proxmox.com Git - mirror_frr.git/blame - doc/user/bfd.rst
*: add BFD profile support for IS-IS
[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
4affdba7 257.. clicmd:: isis bfd
a01cb26c
G
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
4affdba7
G
272.. index:: isis bfd profile BFDPROF
273.. clicmd:: isis bfd profile BFDPROF
274
275 Use a BFD profile BFDPROF as provided in the BFD configuration.
276
277.. index:: no isis bfd profile BFDPROF
278.. clicmd:: no isis bfd profile BFDPROF
279
280 Removes any BFD profile if present.
a01cb26c 281
123582b3
RZ
282.. _bfd-ospf-peer-config:
283
284OSPF BFD Configuration
e36ff3f3 285----------------------
123582b3
RZ
286
287The following commands are available inside the interface configuration node.
288
289.. index:: ip ospf bfd
290.. clicmd:: ip ospf bfd
291
292 Listen for BFD events on peers created on the interface. Every time
293 a new neighbor is found a BFD peer is created to monitor the link
294 status for fast convergence.
295
296.. index:: no ip ospf bfd
297.. clicmd:: no ip ospf bfd
298
299 Removes any notification registration for this interface peers.
300
301
302.. _bfd-ospf6-peer-config:
303
304OSPF6 BFD Configuration
305-----------------------
306
307The following commands are available inside the interface configuration node.
308
309.. index:: ipv6 ospf6 bfd
310.. clicmd:: ipv6 ospf6 bfd
311
312 Listen for BFD events on peers created on the interface. Every time
313 a new neighbor is found a BFD peer is created to monitor the link
314 status for fast convergence.
315
316.. index:: no ipv6 ospf6 bfd
317.. clicmd:: no ipv6 ospf6 bfd
318
319 Removes any notification registration for this interface peers.
320
321
322.. _bfd-pim-peer-config:
323
324PIM BFD Configuration
325---------------------
326
327The following commands are available inside the interface configuration node.
328
329.. index:: ip pim bfd
330.. clicmd:: ip pim bfd
331
332 Listen for BFD events on peers created on the interface. Every time
333 a new neighbor is found a BFD peer is created to monitor the link
334 status for fast convergence.
335
336.. index:: no ip pim bfd
337.. clicmd:: no ip pim bfd
338
339 Removes any notification registration for this interface peers.
340
341
c44032c1
RZ
342.. _bfd-configuration:
343
344Configuration
345=============
346
347Before applying ``bfdd`` rules to integrated daemons (like BGPd), we must
348create the corresponding peers inside the ``bfd`` configuration node.
349
350Here is an example of BFD configuration:
351
352::
353
354 bfd
355 peer 192.168.0.1
356 label home-peer
357 no shutdown
358 !
359 !
360 router bgp 65530
361 neighbor 192.168.0.1 remote-as 65531
362 neighbor 192.168.0.1 bfd
363 neighbor 192.168.0.2 remote-as 65530
364 neighbor 192.168.0.2 bfd
365 neighbor 192.168.0.3 remote-as 65532
366 neighbor 192.168.0.3 bfd
367 !
368
369Peers can be identified by its address (use ``multihop`` when you need
370to specify a multi hop peer) or can be specified manually by a label.
371
372Here are the available peer configurations:
373
374::
375
376 bfd
088f4902
RZ
377 ! Configure a fast profile
378 profile fast
379 receive-interval 150
380 transmit-interval 150
381 !
382
383 ! Configure peer with fast profile
384 peer 192.168.0.6
385 profile fast
386 no shutdown
387 !
388
389 ! Configure peer with fast profile and override receive speed.
390 peer 192.168.0.7
391 profile fast
392 receive-interval 500
393 no shutdown
394 !
c44032c1
RZ
395
396 ! configure a peer on an specific interface
397 peer 192.168.0.1 interface eth0
398 no shutdown
399 !
400
401 ! configure a multihop peer
402 peer 192.168.0.2 multihop local-address 192.168.0.3
403 shutdown
404 !
405
406 ! configure a peer in a different vrf
407 peer 192.168.0.3 vrf foo
408 shutdown
409 !
410
411 ! configure a peer with every option possible
412 peer 192.168.0.4
413 label peer-label
414 detect-multiplier 50
415 receive-interval 60000
416 transmit-interval 3000
417 shutdown
418 !
419
626618ca
PG
420 ! configure a peer on an interface from a separate vrf
421 peer 192.168.0.5 interface eth1 vrf vrf2
422 no shutdown
423 !
424
c44032c1
RZ
425 ! remove a peer
426 no peer 192.168.0.3 vrf foo
427
428
429.. _bfd-status:
430
431Status
432======
433
434You can inspect the current BFD peer status with the following commands:
435
436::
437
438 frr# show bfd peers
439 BFD Peers:
440 peer 192.168.0.1
441 ID: 1
442 Remote ID: 1
443 Status: up
444 Uptime: 1 minute(s), 51 second(s)
445 Diagnostics: ok
446 Remote diagnostics: ok
54719107 447 Peer Type: dynamic
c44032c1 448 Local timers:
54719107 449 Detect-multiplier: 3
c44032c1
RZ
450 Receive interval: 300ms
451 Transmission interval: 300ms
452 Echo transmission interval: disabled
453 Remote timers:
54719107 454 Detect-multiplier: 3
c44032c1
RZ
455 Receive interval: 300ms
456 Transmission interval: 300ms
457 Echo transmission interval: 50ms
458
459 peer 192.168.1.1
460 label: router3-peer
461 ID: 2
462 Remote ID: 2
463 Status: up
464 Uptime: 1 minute(s), 53 second(s)
465 Diagnostics: ok
466 Remote diagnostics: ok
54719107 467 Peer Type: configured
c44032c1 468 Local timers:
54719107 469 Detect-multiplier: 3
c44032c1
RZ
470 Receive interval: 300ms
471 Transmission interval: 300ms
472 Echo transmission interval: disabled
473 Remote timers:
54719107 474 Detect-multiplier: 3
c44032c1
RZ
475 Receive interval: 300ms
476 Transmission interval: 300ms
477 Echo transmission interval: 50ms
478
479 frr# show bfd peer 192.168.1.1
480 BFD Peer:
481 peer 192.168.1.1
482 label: router3-peer
483 ID: 2
484 Remote ID: 2
485 Status: up
486 Uptime: 3 minute(s), 4 second(s)
487 Diagnostics: ok
488 Remote diagnostics: ok
54719107 489 Peer Type: dynamic
c44032c1 490 Local timers:
54719107 491 Detect-multiplier: 3
c44032c1
RZ
492 Receive interval: 300ms
493 Transmission interval: 300ms
494 Echo transmission interval: disabled
495 Remote timers:
54719107 496 Detect-multiplier: 3
c44032c1
RZ
497 Receive interval: 300ms
498 Transmission interval: 300ms
499 Echo transmission interval: 50ms
123582b3
RZ
500
501 frr# show bfd peer 192.168.0.1 json
54719107
S
502 {"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"}
503
504
505You can inspect the current BFD peer status in brief with the following commands:
506
507::
508
431dd37e 509 frr# show bfd peers brief
54719107
S
510 Session count: 1
511 SessionId LocalAddress PeerAddress Status
512 ========= ============ =========== ======
513 1 192.168.0.1 192.168.0.2 up
123582b3
RZ
514
515
516You can also inspect peer session counters with the following commands:
517
518::
519
520 frr# show bfd peers counters
521 BFD Peers:
522 peer 192.168.2.1 interface r2-eth2
523 Control packet input: 28 packets
524 Control packet output: 28 packets
525 Echo packet input: 0 packets
526 Echo packet output: 0 packets
527 Session up events: 1
528 Session down events: 0
529 Zebra notifications: 2
530
531 peer 192.168.0.1
532 Control packet input: 54 packets
533 Control packet output: 103 packets
534 Echo packet input: 965 packets
535 Echo packet output: 966 packets
536 Session up events: 1
537 Session down events: 0
538 Zebra notifications: 4
539
540 frr# show bfd peer 192.168.0.1 counters
541 peer 192.168.0.1
542 Control packet input: 126 packets
543 Control packet output: 247 packets
544 Echo packet input: 2409 packets
545 Echo packet output: 2410 packets
546 Session up events: 1
547 Session down events: 0
548 Zebra notifications: 4
549
550 frr# show bfd peer 192.168.0.1 counters json
e36ff3f3 551 {"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
552
553You can also clear packet counters per session with the following commands, only the packet counters will be reset:
554
555::
556
557 frr# clear bfd peers counters
558
559 frr# show bfd peers counters
560 BFD Peers:
561 peer 192.168.2.1 interface r2-eth2
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: 2
569
570 peer 192.168.0.1
571 Control packet input: 0 packets
572 Control packet output: 0 packets
573 Echo packet input: 0 packets
574 Echo packet output: 0 packets
575 Session up events: 1
576 Session down events: 0
577 Zebra notifications: 4
578
2b21c550
RZ
579Debugging
580=========
8202e9a0 581
2b21c550
RZ
582By default only informational, warning and errors messages are going to be
583displayed. If you want to get debug messages and other diagnostics then make
584sure you have `debugging` level enabled:
8202e9a0
TB
585
586::
587
588 config
589 log file /var/log/frr/frr.log debugging
590 log syslog debugging
2b21c550
RZ
591
592You may also fine tune the debug messages by selecting one or more of the
593debug levels:
594
595.. index:: [no] debug bfd network
596.. clicmd:: [no] debug bfd network
597
598 Toggle network events: show messages about socket failures and unexpected
599 BFD messages that may not belong to registered peers.
600
601.. index:: [no] debug bfd peer
602.. clicmd:: [no] debug bfd peer
603
604 Toggle peer event log messages: show messages about peer creation/removal
605 and state changes.
606
607.. index:: [no] debug bfd zebra
608.. clicmd:: [no] debug bfd zebra
609
610 Toggle zebra message events: show messages about interfaces, local
611 addresses, VRF and daemon peer registrations.