]> git.proxmox.com Git - mirror_frr.git/blob - doc/babeld.texi
Merge branch 'stable/3.0' into tmp-3.0-master-merge
[mirror_frr.git] / doc / babeld.texi
1 @c -*-texinfo-*-
2 @c This is part of the FRR Manual.
3 @c @value{COPYRIGHT_STR}
4 @c See file frr.texi for copying conditions.
5 @node Babel
6 @chapter Babel
7
8 Babel is an interior gateway protocol that is suitable both for wired
9 networks and for wireless mesh networks. Babel has been described as
10 ``RIP on speed'' --- it is based on the same principles as RIP, but
11 includes a number of refinements that make it react much faster to
12 topology changes without ever counting to infinity, and allow it to
13 perform reliable link quality estimation on wireless links. Babel is
14 a double-stack routing protocol, meaning that a single Babel instance
15 is able to perform routing for both IPv4 and IPv6.
16
17 FRR implements Babel as described in RFC6126.
18
19 @menu
20 * Configuring babeld::
21 * Babel configuration::
22 * Babel redistribution::
23 * Show Babel information::
24 * Babel debugging commands::
25 @end menu
26
27 @node Configuring babeld, Babel configuration, Babel, Babel
28 @section Configuring babeld
29
30 The @command{babeld} daemon can be invoked with any of the common
31 options (@pxref{Common Invocation Options}).
32
33 The @command{zebra} daemon must be running before @command{babeld} is
34 invoked. Also, if @command{zebra} is restarted then @command{babeld}
35 must be too.
36
37 Configuration of @command{babeld} is done in its configuration file
38 @file{babeld.conf}.
39
40 @node Babel configuration, Babel redistribution, Configuring babeld, Babel
41 @section Babel configuration
42
43 @deffn Command {router babel} {}
44 @deffnx Command {no router babel} {}
45 Enable or disable Babel routing.
46 @end deffn
47
48 @deffn Command {babel resend-delay <20-655340>} {}
49 Specifies the time after which important messages are resent when
50 avoiding a black-hole. The default is 2000@dmn{ms}.
51 @end deffn
52
53 @deffn Command {babel diversity} {}
54 @deffnx Command {no babel diversity} {}
55 Enable or disable routing using radio frequency diversity. This is
56 highly recommended in networks with many wireless nodes.
57
58 If you enable this, you will probably want to set @code{babel
59 diversity-factor} and @code{babel channel} below.
60 @end deffn
61
62 @deffn Command {babel diversity-factor <1-256>} {}
63 Sets the multiplicative factor used for diversity routing, in units of
64 1/256; lower values cause diversity to play a more important role in
65 route selection. The default it 256, which means that diversity plays
66 no role in route selection; you will probably want to set that to 128
67 or less on nodes with multiple independent radios.
68 @end deffn
69
70 @deffn {Babel Command} {network @var{ifname}} {}
71 @deffnx {Babel Command} {no network @var{ifname}} {}
72 Enable or disable Babel on the given interface.
73 @end deffn
74
75 @deffn {Interface Command} {babel wired} {}
76 @deffnx {Interface Command} {babel wireless} {}
77 Specifies whether this interface is wireless, which disables a number
78 of optimisations that are only correct on wired interfaces.
79 Specifying @code{wireless} (the default) is always correct, but may
80 cause slower convergence and extra routing traffic.
81 @end deffn
82
83 @deffn {Interface Command} {babel split-horizon}
84 @deffnx {Interface Command} {no babel split-horizon}
85 Specifies whether to perform split-horizon on the interface.
86 Specifying @code{no babel split-horizon} is always correct, while
87 @code{babel split-horizon} is an optimisation that should only be used
88 on symmetric and transitive (wired) networks. The default is
89 @code{babel split-horizon} on wired interfaces, and @code{no babel
90 split-horizon} on wireless interfaces. This flag is reset when the
91 wired/wireless status of an interface is changed.
92 @end deffn
93
94 @deffn {Interface Command} {babel hello-interval <20-655340>}
95 Specifies the time in milliseconds between two scheduled hellos. On
96 wired links, Babel notices a link failure within two hello intervals;
97 on wireless links, the link quality value is reestimated at every
98 hello interval. The default is 4000@dmn{ms}.
99 @end deffn
100
101 @deffn {Interface Command} {babel update-interval <20-655340>}
102 Specifies the time in milliseconds between two scheduled updates.
103 Since Babel makes extensive use of triggered updates, this can be set
104 to fairly high values on links with little packet loss. The default
105 is 20000@dmn{ms}.
106 @end deffn
107
108 @deffn {Interface Command} {babel channel <1-254>}
109 @deffnx {Interface Command} {babel channel interfering}
110 @deffnx {Interface Command} {babel channel noninterfering}
111 Set the channel number that diversity routing uses for this interface
112 (see @code{babel diversity} above). Noninterfering interfaces are
113 assumed to only interfere with themselves, interfering interfaces are
114 assumed to interfere with all other channels except noninterfering
115 channels, and interfaces with a channel number interfere with
116 interfering interfaces and interfaces with the same channel number.
117 The default is @samp{babel channel interfering} for wireless
118 interfaces, and @samp{babel channel noninterfering} for wired
119 interfaces. This is reset when the wired/wireless status of an
120 interface is changed.
121 @end deffn
122
123 @deffn {Interface Command} {babel rxcost <1-65534>}
124 Specifies the base receive cost for this interface. For wireless
125 interfaces, it specifies the multiplier used for computing the ETX
126 reception cost (default 256); for wired interfaces, it specifies the
127 cost that will be advertised to neighbours. This value is reset when
128 the wired/wireless attribute of the interface is changed.
129
130 Do not use this command unless you know what you are doing; in most
131 networks, acting directly on the cost using route maps is a better
132 technique.
133 @end deffn
134
135 @deffn {Interface Command} {babel rtt-decay <1-256>}
136 This specifies the decay factor for the exponential moving average of
137 RTT samples, in units of 1/256. Higher values discard old samples
138 faster. The default is 42.
139 @end deffn
140
141 @deffn {Interface Command} {babel rtt-min <1-65535>}
142 This specifies the minimum RTT, in milliseconds, starting from which we
143 increase the cost to a neighbour. The additional cost is linear in (rtt
144 - rtt-min ). The default is 10@dmn{ms}.
145 @end deffn
146
147 @deffn {Interface Command} {babel rtt-max <1-65535>}
148 This specifies the maximum RTT, in milliseconds, above which we don't
149 increase the cost to a neighbour. The default is 120@dmn{ms}.
150 @end deffn
151
152 @deffn {Interface Command} {babel max-rtt-penalty <0-65535>}
153 This specifies the maximum cost added to a neighbour because of RTT,
154 i.e. when the RTT is higher or equal than rtt-max. The default is 0,
155 which effectively disables the use of a RTT-based cost.
156 @end deffn
157
158 @deffn {Interface Command} {babel enable-timestamps}
159 @deffnx {Interface Command} {no babel enable-timestamps}
160 Enable or disable sending timestamps with each Hello and IHU message in
161 order to compute RTT values. The default is @code{no babel
162 enable-timestamps}.
163 @end deffn
164
165 @deffn {Babel Command} {babel resend-delay <20-655340>}
166 Specifies the time in milliseconds after which an ``important''
167 request or update will be resent. The default is 2000@dmn{ms}. You
168 probably don't want to tweak this value.
169 @end deffn
170
171 @deffn {Babel Command} {babel smoothing-half-life <0-65534>}
172 Specifies the time constant, in seconds, of the smoothing algorithm
173 used for implementing hysteresis. Larger values reduce route
174 oscillation at the cost of very slightly increasing convergence time.
175 The value 0 disables hysteresis, and is suitable for wired networks.
176 The default is 4@dmn{s}.
177 @end deffn
178
179 @node Babel redistribution, Show Babel information, Babel configuration, Babel
180 @section Babel redistribution
181
182 @deffn {Babel command} {redistribute @var{<ipv4|ipv6>} @var{kind}}
183 @deffnx {Babel command} {no redistribute @var{<ipv4|ipv6>} @var{kind}}
184 Specify which kind of routes should be redistributed into Babel.
185 @end deffn
186
187 @node Show Babel information, Babel debugging commands, Babel redistribution, Babel
188 @section Show Babel information
189
190 @deffn {Command} {show babel route} {}
191 @deffnx {Command} {show babel route A.B.C.D}
192 @deffnx {Command} {show babel route X:X::X:X}
193 @deffnx {Command} {show babel route A.B.C.D/M}
194 @deffnx {Command} {show babel route X:X::X:X/M}
195 @deffnx {Command} {show babel interface} {}
196 @deffnx {Command} {show babel interface @var{ifname}} {}
197 @deffnx {Command} {show babel neighbor} {}
198 @deffnx {Command} {show babel parameters} {}
199 These commands dump various parts of @command{babeld}'s internal state.
200 @end deffn
201
202 @node Babel debugging commands, , Show Babel information, Babel
203 @section Babel debugging commands
204
205 @deffn {Babel Command} {debug babel @var{kind}} {}
206 @deffnx {Babel Command} {no debug babel @var{kind}} {}
207 Enable or disable debugging messages of a given kind. @var{kind} can
208 be one of @samp{common}, @samp{kernel}, @samp{filter}, @samp{timeout},
209 @samp{interface}, @samp{route} or @samp{all}. Note that if you have
210 compiled with the NO_DEBUG flag, then these commands aren't available.
211 @end deffn
212