]>
Commit | Line | Data |
---|---|---|
0efdf0fe | 1 | .. _babel: |
42fc5d26 QY |
2 | |
3 | ***** | |
4 | Babel | |
5 | ***** | |
6 | ||
d1a242fd QY |
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. | |
42fc5d26 | 14 | |
07a17e6d | 15 | FRR implements Babel as described in :rfc:`6126`. |
42fc5d26 | 16 | |
0efdf0fe | 17 | .. _configuring-babeld: |
42fc5d26 QY |
18 | |
19 | Configuring babeld | |
20 | ================== | |
21 | ||
22 | The *babeld* daemon can be invoked with any of the common | |
0efdf0fe | 23 | options (:ref:`common-invocation-options`). |
42fc5d26 QY |
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 | ||
0efdf0fe | 32 | .. _babel-configuration: |
42fc5d26 QY |
33 | |
34 | Babel 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 |
216 | Babel 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 |
229 | Show Babel information |
230 | ====================== | |
42fc5d26 | 231 | |
2dd0a0ed | 232 | These 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 | |
270 | Babel 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. |