]> git.proxmox.com Git - mirror_frr.git/blame - doc/user/babeld.rst
Merge pull request #3195 from donaldsharp/nht_crash
[mirror_frr.git] / doc / user / babeld.rst
CommitLineData
0efdf0fe 1.. _babel:
42fc5d26
QY
2
3*****
4Babel
5*****
6
d1a242fd
QY
7Babel is an interior gateway protocol that is suitable both for wired networks
8and for wireless mesh networks. Babel has been described as 'RIP on speed' --
9it is based on the same principles as RIP, but includes a number of refinements
10that make it react much faster to topology changes without ever counting to
11infinity, and allow it to perform reliable link quality estimation on wireless
12links. Babel is a double-stack routing protocol, meaning that a single Babel
13instance is able to perform routing for both IPv4 and IPv6.
42fc5d26 14
07a17e6d 15FRR implements Babel as described in :rfc:`6126`.
42fc5d26 16
0efdf0fe 17.. _configuring-babeld:
42fc5d26
QY
18
19Configuring babeld
20==================
21
22The *babeld* daemon can be invoked with any of the common
0efdf0fe 23options (:ref:`common-invocation-options`).
42fc5d26
QY
24
25The *zebra* daemon must be running before *babeld* is
26invoked. Also, if *zebra* is restarted then *babeld*
27must be too.
28
29Configuration of *babeld* is done in its configuration file
30:file:`babeld.conf`.
31
0efdf0fe 32.. _babel-configuration:
42fc5d26
QY
33
34Babel configuration
35===================
36
2dd0a0ed
QY
37.. index::
38 single: router babel
39 single: no router babel
42fc5d26 40
29adcd50 41.. clicmd:: [no] router babel
d1a242fd
QY
42
43 Enable or disable Babel routing.
42fc5d26 44
2dd0a0ed 45.. index::
29adcd50
QY
46 single: babel resend-delay (20-655340)
47 single: no babel resend-delay [(20-655340)]
42fc5d26 48
29adcd50 49.. clicmd:: [no] babel resend-delay (20-655340)
d1a242fd
QY
50
51 Specifies the time after which important messages are resent when
52 avoiding a black-hole. The default is 2000 ms.
42fc5d26 53
2dd0a0ed
QY
54.. index::
55 single: babel diversity
56 single: no babel diversity
42fc5d26 57
29adcd50 58.. clicmd:: [no] babel diversity
d1a242fd
QY
59
60 Enable or disable routing using radio frequency diversity. This is
61 highly recommended in networks with many wireless nodes.
62 If you enable this, you will probably want to set `babel
63 diversity-factor` and `babel channel` below.
42fc5d26 64
29adcd50 65.. index:: babel diversity-factor (1-256)
42fc5d26 66
29adcd50 67.. clicmd:: babel diversity-factor (1-256)
d1a242fd
QY
68
69 Sets the multiplicative factor used for diversity routing, in units of
70 1/256; lower values cause diversity to play a more important role in
71 route selection. The default it 256, which means that diversity plays
72 no role in route selection; you will probably want to set that to 128
73 or less on nodes with multiple independent radios.
42fc5d26 74
2dd0a0ed
QY
75.. index::
76 single: network IFNAME
77 single: no network IFNAME
78
29adcd50 79.. clicmd:: no network IFNAME
d1a242fd
QY
80
81 Enable or disable Babel on the given interface.
2dd0a0ed
QY
82
83.. index:: babel <wired|wireless>
84
29adcd50 85.. clicmd:: babel <wired|wireless>
d1a242fd
QY
86
87 Specifies whether this interface is wireless, which disables a number
88 of optimisations that are only correct on wired interfaces.
89 Specifying `wireless` (the default) is always correct, but may
90 cause slower convergence and extra routing traffic.
2dd0a0ed
QY
91
92.. index::
93 single: babel split-horizon
94 single: no babel split-horizon
95
29adcd50 96.. clicmd:: [no] babel split-horizon
d1a242fd
QY
97
98 Specifies whether to perform split-horizon on the interface. Specifying
99 ``no babel split-horizon`` is always correct, while ``babel
100 split-horizon`` is an optimisation that should only be used on symmetric
101 and transitive (wired) networks. The default is ``babel split-horizon``
102 on wired interfaces, and ``no babel split-horizon`` on wireless
103 interfaces. This flag is reset when the wired/wireless status of an
104 interface is changed.
2dd0a0ed 105
29adcd50 106.. index:: babel hello-interval (20-655340)
2dd0a0ed 107
29adcd50 108.. clicmd:: babel hello-interval (20-655340)
d1a242fd
QY
109
110 Specifies the time in milliseconds between two scheduled hellos. On
111 wired links, Babel notices a link failure within two hello intervals;
112 on wireless links, the link quality value is reestimated at every
113 hello interval. The default is 4000 ms.
2dd0a0ed 114
29adcd50 115.. index:: babel update-interval (20-655340)
2dd0a0ed 116
29adcd50 117.. clicmd:: babel update-interval (20-655340)
d1a242fd
QY
118
119 Specifies the time in milliseconds between two scheduled updates. Since
120 Babel makes extensive use of triggered updates, this can be set to fairly
121 high values on links with little packet loss. The default is 20000 ms.
2dd0a0ed
QY
122
123.. index::
29adcd50 124 single: babel channel (1-254)
2dd0a0ed
QY
125 single: babel channel interfering
126 single: babel channel noninterfering
127
29adcd50 128.. clicmd:: babel channel (1-254)
29adcd50 129.. clicmd:: babel channel interfering
29adcd50 130.. clicmd:: babel channel noninterfering
d1a242fd
QY
131
132 Set the channel number that diversity routing uses for this interface (see
133 `babel diversity` above). Noninterfering interfaces are assumed to only
134 interfere with themselves, interfering interfaces are assumed to interfere
135 with all other channels except noninterfering channels, and interfaces with
136 a channel number interfere with interfering interfaces and interfaces with
137 the same channel number. The default is ``babel channel interfering`` for
138 wireless interfaces, and ``babel channel noninterfering`` for wired
139 interfaces. This is reset when the wired/wireless status of an interface is
140 changed.
2dd0a0ed 141
29adcd50 142.. index:: babel rxcost (1-65534)
2dd0a0ed 143
29adcd50 144.. clicmd:: babel rxcost (1-65534)
2dd0a0ed 145
d1a242fd
QY
146 Specifies the base receive cost for this interface. For wireless
147 interfaces, it specifies the multiplier used for computing the ETX
148 reception cost (default 256); for wired interfaces, it specifies the
149 cost that will be advertised to neighbours. This value is reset when
150 the wired/wireless attribute of the interface is changed.
151
152.. note::
153 Do not use this command unless you know what you are doing; in most
154 networks, acting directly on the cost using route maps is a better
155 technique.
2dd0a0ed 156
29adcd50 157.. index:: babel rtt-decay (1-256)
2dd0a0ed 158
29adcd50 159.. clicmd:: babel rtt-decay (1-256)
d1a242fd
QY
160
161 This specifies the decay factor for the exponential moving average of
162 RTT samples, in units of 1/256. Higher values discard old samples
163 faster. The default is 42.
2dd0a0ed 164
29adcd50 165.. index:: babel rtt-min (1-65535)
2dd0a0ed 166
29adcd50 167.. clicmd:: babel rtt-min (1-65535)
d1a242fd
QY
168
169 This specifies the minimum RTT, in milliseconds, starting from which we
170 increase the cost to a neighbour. The additional cost is linear in
171 (rtt - rtt-min). The default is 100 ms.
2dd0a0ed 172
29adcd50 173.. index:: babel rtt-max (1-65535)
2dd0a0ed 174
29adcd50 175.. clicmd:: babel rtt-max (1-65535)
d1a242fd
QY
176
177 This specifies the maximum RTT, in milliseconds, above which we don't
178 increase the cost to a neighbour. The default is 120 ms.
2dd0a0ed 179
29adcd50 180.. index:: babel max-rtt-penalty (0-65535)
2dd0a0ed 181
29adcd50 182.. clicmd:: babel max-rtt-penalty (0-65535)
d1a242fd
QY
183
184 This specifies the maximum cost added to a neighbour because of RTT, i.e.
185 when the RTT is higher or equal than rtt-max. The default is 0, which
186 effectively disables the use of a RTT-based cost.
2dd0a0ed
QY
187
188.. index::
189 single: babel enable-timestamps
190 single: no babel enable-timestamps
191
29adcd50 192.. clicmd:: [no] babel enable-timestamps
d1a242fd
QY
193
194 Enable or disable sending timestamps with each Hello and IHU message in
195 order to compute RTT values. The default is `no babel enable-timestamps`.
2dd0a0ed 196
29adcd50 197.. index:: babel resend-delay (20-655340)
2dd0a0ed 198
29adcd50 199.. clicmd:: babel resend-delay (20-655340)
d1a242fd
QY
200
201 Specifies the time in milliseconds after which an 'important' request or
202 update will be resent. The default is 2000 ms. You probably don't want to
203 tweak this value.
2dd0a0ed 204
29adcd50 205.. index:: babel smoothing-half-life (0-65534)
2dd0a0ed 206
29adcd50 207.. clicmd:: babel smoothing-half-life (0-65534)
d1a242fd
QY
208
209 Specifies the time constant, in seconds, of the smoothing algorithm used for
210 implementing hysteresis. Larger values reduce route oscillation at the cost
211 of very slightly increasing convergence time. The value 0 disables
212 hysteresis, and is suitable for wired networks. The default is 4 s.
42fc5d26 213
0efdf0fe 214.. _babel-redistribution:
42fc5d26 215
2dd0a0ed
QY
216Babel redistribution
217====================
42fc5d26 218
2dd0a0ed
QY
219.. index::
220 single: redistribute <ipv4|ipv6> KIND
221 single: no redistribute <ipv4|ipv6> KIND
42fc5d26 222
29adcd50 223.. clicmd:: [no] redistribute <ipv4|ipv6> KIND
d1a242fd
QY
224
225 Specify which kind of routes should be redistributed into Babel.
42fc5d26 226
0efdf0fe 227.. _show-babel-information:
42fc5d26 228
2dd0a0ed
QY
229Show Babel information
230======================
42fc5d26 231
2dd0a0ed 232These commands dump various parts of *babeld*'s internal state.
42fc5d26 233
2dd0a0ed 234.. index:: show babel route
42fc5d26 235
29adcd50 236.. clicmd:: show babel route
42fc5d26 237
2dd0a0ed 238.. index:: show babel route A.B.C.D
42fc5d26 239
29adcd50 240.. clicmd:: show babel route A.B.C.D
42fc5d26 241
2dd0a0ed 242.. index:: show babel route X:X::X:X
42fc5d26 243
29adcd50 244.. clicmd:: show babel route X:X::X:X
42fc5d26 245
2dd0a0ed 246.. index:: show babel route A.B.C.D/M
42fc5d26 247
29adcd50 248.. clicmd:: show babel route A.B.C.D/M
42fc5d26 249
2dd0a0ed 250.. index:: show babel route X:X::X:X/M
42fc5d26 251
29adcd50 252.. clicmd:: show babel route X:X::X:X/M
42fc5d26 253
2dd0a0ed 254.. index:: show babel interface
42fc5d26 255
29adcd50 256.. clicmd:: show babel interface
42fc5d26 257
d1a242fd 258.. index:: show babel interface IFNAME
42fc5d26 259
29adcd50 260.. clicmd:: show babel interface IFNAME
42fc5d26 261
2dd0a0ed 262.. index:: show babel neighbor
42fc5d26 263
29adcd50 264.. clicmd:: show babel neighbor
42fc5d26 265
2dd0a0ed 266.. index:: show babel parameters
42fc5d26 267
29adcd50 268.. clicmd:: show babel parameters
42fc5d26
QY
269
270Babel debugging commands
271========================
272
2dd0a0ed
QY
273.. index::
274 simple: debug babel KIND
275 simple: no debug babel KIND
276
29adcd50 277.. clicmd:: [no] debug babel KIND
42fc5d26 278
d1a242fd
QY
279 Enable or disable debugging messages of a given kind. ``KIND`` can
280 be one of:
42fc5d26 281
d1a242fd
QY
282 - ``common``
283 - ``filter``
284 - ``timeout``
285 - ``interface``
286 - ``route``
287 - ``all``
42fc5d26 288
d1a242fd
QY
289.. note::
290 If you have compiled with the ``NO_DEBUG`` flag, then these commands aren't
291 available.