]> git.proxmox.com Git - mirror_frr.git/blob - doc/user/babeld.rst
Merge pull request #3311 from dslicenc/static-int-up
[mirror_frr.git] / doc / user / babeld.rst
1 .. _babel:
2
3 *****
4 Babel
5 *****
6
7 Babel is an interior gateway protocol that is suitable both for wired networks
8 and for wireless mesh networks. Babel has been described as 'RIP on speed' --
9 it is based on the same principles as RIP, but includes a number of refinements
10 that make it react much faster to topology changes without ever counting to
11 infinity, and allow it to perform reliable link quality estimation on wireless
12 links. Babel is a double-stack routing protocol, meaning that a single Babel
13 instance is able to perform routing for both IPv4 and IPv6.
14
15 FRR implements Babel as described in :rfc:`6126`.
16
17 .. _configuring-babeld:
18
19 Configuring babeld
20 ==================
21
22 The *babeld* daemon can be invoked with any of the common
23 options (:ref:`common-invocation-options`).
24
25 The *zebra* daemon must be running before *babeld* is
26 invoked. Also, if *zebra* is restarted then *babeld*
27 must be too.
28
29 Configuration of *babeld* is done in its configuration file
30 :file:`babeld.conf`.
31
32 .. _babel-configuration:
33
34 Babel configuration
35 ===================
36
37 .. index::
38 single: router babel
39 single: no router babel
40
41 .. clicmd:: [no] router babel
42
43 Enable or disable Babel routing.
44
45 .. index::
46 single: babel resend-delay (20-655340)
47 single: no babel resend-delay [(20-655340)]
48
49 .. clicmd:: [no] babel resend-delay (20-655340)
50
51 Specifies the time after which important messages are resent when
52 avoiding a black-hole. The default is 2000 ms.
53
54 .. index::
55 single: babel diversity
56 single: no babel diversity
57
58 .. clicmd:: [no] babel diversity
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.
64
65 .. index:: babel diversity-factor (1-256)
66
67 .. clicmd:: babel diversity-factor (1-256)
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.
74
75 .. index::
76 single: network IFNAME
77 single: no network IFNAME
78
79 .. clicmd:: no network IFNAME
80
81 Enable or disable Babel on the given interface.
82
83 .. index:: babel <wired|wireless>
84
85 .. clicmd:: babel <wired|wireless>
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.
91
92 .. index::
93 single: babel split-horizon
94 single: no babel split-horizon
95
96 .. clicmd:: [no] babel split-horizon
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.
105
106 .. index:: babel hello-interval (20-655340)
107
108 .. clicmd:: babel hello-interval (20-655340)
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.
114
115 .. index:: babel update-interval (20-655340)
116
117 .. clicmd:: babel update-interval (20-655340)
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.
122
123 .. index::
124 single: babel channel (1-254)
125 single: babel channel interfering
126 single: babel channel noninterfering
127
128 .. clicmd:: babel channel (1-254)
129 .. clicmd:: babel channel interfering
130 .. clicmd:: babel channel noninterfering
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.
141
142 .. index:: babel rxcost (1-65534)
143
144 .. clicmd:: babel rxcost (1-65534)
145
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.
156
157 .. index:: babel rtt-decay (1-256)
158
159 .. clicmd:: babel rtt-decay (1-256)
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.
164
165 .. index:: babel rtt-min (1-65535)
166
167 .. clicmd:: babel rtt-min (1-65535)
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.
172
173 .. index:: babel rtt-max (1-65535)
174
175 .. clicmd:: babel rtt-max (1-65535)
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.
179
180 .. index:: babel max-rtt-penalty (0-65535)
181
182 .. clicmd:: babel max-rtt-penalty (0-65535)
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.
187
188 .. index::
189 single: babel enable-timestamps
190 single: no babel enable-timestamps
191
192 .. clicmd:: [no] babel enable-timestamps
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`.
196
197 .. index:: babel resend-delay (20-655340)
198
199 .. clicmd:: babel resend-delay (20-655340)
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.
204
205 .. index:: babel smoothing-half-life (0-65534)
206
207 .. clicmd:: babel smoothing-half-life (0-65534)
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.
213
214 .. _babel-redistribution:
215
216 Babel redistribution
217 ====================
218
219 .. index::
220 single: redistribute <ipv4|ipv6> KIND
221 single: no redistribute <ipv4|ipv6> KIND
222
223 .. clicmd:: [no] redistribute <ipv4|ipv6> KIND
224
225 Specify which kind of routes should be redistributed into Babel.
226
227 .. _show-babel-information:
228
229 Show Babel information
230 ======================
231
232 These commands dump various parts of *babeld*'s internal state.
233
234 .. index:: show babel route
235
236 .. clicmd:: show babel route
237
238 .. index:: show babel route A.B.C.D
239
240 .. clicmd:: show babel route A.B.C.D
241
242 .. index:: show babel route X:X::X:X
243
244 .. clicmd:: show babel route X:X::X:X
245
246 .. index:: show babel route A.B.C.D/M
247
248 .. clicmd:: show babel route A.B.C.D/M
249
250 .. index:: show babel route X:X::X:X/M
251
252 .. clicmd:: show babel route X:X::X:X/M
253
254 .. index:: show babel interface
255
256 .. clicmd:: show babel interface
257
258 .. index:: show babel interface IFNAME
259
260 .. clicmd:: show babel interface IFNAME
261
262 .. index:: show babel neighbor
263
264 .. clicmd:: show babel neighbor
265
266 .. index:: show babel parameters
267
268 .. clicmd:: show babel parameters
269
270 Babel debugging commands
271 ========================
272
273 .. index::
274 simple: debug babel KIND
275 simple: no debug babel KIND
276
277 .. clicmd:: [no] debug babel KIND
278
279 Enable or disable debugging messages of a given kind. ``KIND`` can
280 be one of:
281
282 - ``common``
283 - ``filter``
284 - ``timeout``
285 - ``interface``
286 - ``route``
287 - ``all``
288
289 .. note::
290 If you have compiled with the ``NO_DEBUG`` flag, then these commands aren't
291 available.