50d57997827a743253514e676f8f4d01f2918d64
[babeld.git] / CHANGES
1 4 July 2014: babeld-1.5.1:
2
3   * Added support for reading multiple configuration files by specifying
4     the -c command-line flag multiple times.
5   * Be less noisy about unknown TLV types.  Thanks to Baptiste Jonglez.
6
7 22 May 2014: babeld-1.5.0
8
9   * Added support for an RTT-based metric -- see the description of
10     "enable-timestamps" in the manual page.  This work was done by
11     Baptiste Jonglez with help from Matthieu Boutier.
12
13 15 November 2013: babeld-1.4.3
14
15   * Added random-id option to config file (equivalent to -r).
16   * Fixed parsing of compressed IPv4 updates.  Thanks to Matthieu Boutier.
17   * Fixed formatting of seqno requests with short prefixes.  Thanks to
18     Matthieu Boutier.
19   * Fixed possible DoS on the local interface.  Thanks to Baptiste Jonglez.
20   * Fixed advertising costs higher than INFINITY on the local interface.
21     Thanks to Baptiste Jonglez.
22   * Fixed an assertion failure when an interface configuration is
23     split into multiple config file directives.
24   * Disable atomic route changes on BSD, which are buggy at least under
25     Mac OS X.  Thanks to Grégoire Henry.
26
27 19 June 2013: babeld-1.4.2
28
29   * Extensive changes to the configuration parser.  It is now possible
30     to set all command-line options from the configuration file, and
31     to specify default values for interface parameters.
32   * Allow redistributing routes from multiple kernel tables.  Thanks
33     to Toke Høiland-Jørgensen.
34   * Fix some whitespace issues in the configuration parser.
35   * Fix a bug in the configuration parser that could give wrong values
36     to some exotic interface parameters (channel and faraway).
37   * Fix a bug that could cause some extra traffic at shutdown.  Thanks
38     to Matthieu Boutier.
39   * Under Linux, set rp_filter explicitly for all interfaces.  This
40     avoids mysterious routing failures on distributions that set
41     rp_filter by default.  Reported by Baptiste Jonglez.
42
43 19 June 2013: babeld-1.3.8
44
45   * Fix a bug in the configuration parser that could give wrong values
46     to some exotic interface parameters (channel and faraway).
47   * Fix a bug that could cause some extra traffic at shutdown.  Thanks
48     to Matthieu Boutier.
49   * Under Linux, set rp_filter explicitly for all interfaces.  This
50     avoids mysterious routing failures on distributions that set
51     rp_filter by default.  Reported by Baptiste Jonglez.
52
53 26 May 2013: babeld-1.4.1
54
55   * Fix a bug that would cause the channel list to remain stuck at its
56     initial value when running with -z3.
57
58 26 May 2013: babeld-1.3.7
59
60   * Fix a bug that would cause the channel list to remain stuck at its
61     initial value when running with -z3.
62
63 3 May 2013: babeld-1.4.0
64
65   * Change the route selection algorithm to used a smoothed metric in
66     addition to the "real" metric.  This reduces the amount of route
67     flapping without any special case hacks.
68   * New flag -r, use a random router-id.  This avoids temporarily
69     unreachable nodes after a reboot when persistent storage is not
70     available.
71   * INCOMPATIBLE CHANGE: the local interface now announces the local
72     hostname, and marks the end of the initial route dump.  (Thanks to
73     Gabriel Kerneis.)
74   * The local interface is now able to accept multiple simultaneous
75     connections.
76   * Detect BATMAN interfaces, don't assume they are wired.
77
78 2 May 2013: babeld-1.3.6
79
80   * Work around recent Linux kernels advertising the IPv6 route cache
81     as if it were part of the routing table.  Thanks to Baptiste Jonglez.
82
83 12 April 2013: babeld-1.3.5
84
85   * Fix parsing of "channel interfering".  Reported by Gioacchino
86     Mazzurco.
87   * Correctly reset rp_filter to its old value at shutdown.  Thanks to
88     Matthias Schiffer.
89   * Work around a race condition that could cause us to fail to notice
90     an interface's link-local address, and hence mark all neighbours
91     as unreachable.  Reported by Gabriel Kerneis.
92
93 8 August 2012: babeld-1.3.4
94
95   * Disable atomic route changes on Linux; this used to cause stuck
96     unreachable routes on non-multipath kernels.
97   * Improve error checking in command-line and configuration parser.
98
99 12 July 2012: babeld-1.3.3
100
101   * More fixes to IPv4 support on BSD -- pure meshes are now
102     supported.
103   * Fixed a very rare bug where an unfeasible route could be
104     selected.
105
106 30 June 2012: babeld-1.3.2
107
108   * INCOMPATIBLE CHANGE: removed parasitic mode (-P).
109   * Fixes to IPv4 support on BSD.
110   * More reduction to the rate of sending requests.  
111
112 11 February 2012: babeld-1.3.1
113
114   * Made the resend logic less aggressive.  This should lead to fewer
115     request messages upon link failure, at the cost of somewhat worse
116     behaviour in the presence of heavy packet loss.
117   * INCOMPATIBLE CHANGE: removed the idle detection functionality (-i).
118     This feature was little used and complicated the code somewhat.
119   * Various internal tweaks to bring babeld closer to the Quagga version.
120
121 8 December 2011: babeld-1.3.0
122
123   * Made the route table into a sorted array, and use binary sort for
124     searching for routes.  This makes most route operations O(log n), at
125     a slight cost in memory usage.
126   * Changed the update sending strategy to use buffers large enough for
127     a full update.  This makes the duplicate suppression mechanism
128     effective in large networks, at a small cost in memory usage.
129   * Rate-limit the reaction to wildcard requests.  This avoids an update
130     storm at boot in large networks.
131   * Fixed a bug that prevented usage of the "default" keyword in
132     configuration files.
133
134 16 October 2011: babeld-1.2.1
135
136   * Fixed an incorrect assertion that would cause a crash when -w was
137     being used (reported by Thomas McLure).
138
139 9 September 2011: babeld 1.2.0
140
141   * Merged the interference-aware branch ("babelz").  Please see the
142     "-z" flag in the manual page.
143   * Fixed a memory leak when expiring resent messages.
144   * Fixed a buffer overflow when parsing MAC addresses (Matthieu Boutier).
145   * Implemented MAC address parsing for BSD (Matthieu Boutier).
146
147 27 August 2011: babeld 1.1.4
148
149   * Change the default port number to 6696, as allocated by IANA.
150
151 3 August 2011: babeld 1.1.3
152
153   * Implemented an option -u to keep unfeasible routes; this is useful
154     for giving more data to front-end interfaces.
155   * Fixed a number of minor bugs in the front-end interface.
156   * Fixed incorrect handling of interfaces with multiple link-local
157     addresses (thanks to Matthieu Boutier).
158
159 27 July 2011: babeld 1.1.2:
160
161   * Changed the strategy used to tweak an installed route in a way that
162     should avoid packet loss (thanks to Dave Taht).
163   * Fixed the handling of duplicate interface definitions in the config
164     file (thanks to Matthieu Boutier).
165
166 16 May 2011: babeld 1.1.1:
167
168   * Fixed two bugs in the message parser that could cause IPv4 updates to
169     get lost.
170   * Fixed a bug in the monitoring interface that could cause route ids
171     to change (thanks to Gabriel Kerneis).
172   * INCOMPATIBLE CHANGE: the default wired hello interval is now 4 seconds.
173   * Ported to Bionic libc.
174
175 30 January 2011: babeld 1.1.0:
176
177   * INCOMPATIBLE CHANGE: the UDP port number and multicast group have
178     been changed to be the ones allocated by IANA.
179   * Initial port to OpenBSD, by Vincent Gross.
180
181 1 October 2010: babeld 1.0.2:
182
183   * Worked around a gcc bug that would cause assertion failures on MIPS.
184
185 2 May 2010: babeld 1.0.1:
186
187   * Fixed a bug that could cause input filters to be ignored.
188
189 22 April 2010: babeld 1.0:
190
191   * Minor portability fixes.
192
193 8 February 2010: babeld 0.98:
194
195   * Implement the ability to prefer Babel routes to external routes
196     according to the kernel priority (-A).
197   * Implement the ability to redistribute "boot" routes when the protocol
198     is explicitly specified on the "redistribute" line.
199   * Allow trailing whitespace in config file.
200
201 5 November 2009: babeld 0.97:
202
203   * INCOMPATIBLE CHANGE: rename babel.{conf,log} to babeld.*.
204   * Use getopt for parsing command-line options.
205
206 11 August 2009: babeld 0.96
207
208   * Renamed babel to babeld.
209   * Routes are now automatically flushed when an interface goes down or an
210     IPv4 address changes, which avoids desynchronisation between Babel and
211     the kernel.
212
213 21 April 2009: babel 0.95
214
215   * Fixed a bug that broke link-quality estimation, and could cause
216     severe instability when we had both good and marginal neighbours.
217   * We now send retractions after a redistributed route is retracted.
218   * Fixed a bug that could cause reliable messages (retractions and
219     router-id switches) to only be sent twice.
220   * We no longer obey a silent time at startup, instead sending a bunch of
221     retractions.  The silent time is inconvenient, but seldom useful.
222   * Updates for routes to self are now sent together with other updates
223     (they used to be sent more frequently).
224   * Fixes the configuration parser to interpret hello-interval as a number
225     of seconds, as specified in the documentation (it used to be interpreted
226     as a number of milliseconds).
227   * INCOMPATIBLE CHANGE: the update interval is now a per-interface value,
228     may be configured manually in the configuraton file, and defaults to
229     4 times the hello interval.  The -u flag is gone.
230
231 10 April 2009: babel 0.94
232
233   * Fixed a bug introduced in 0.17 that caused recently retracted routes to
234     remain until the routing table entry was flushed.
235   * Implemented per-interface configuration of parameters such as link
236     cost, hello interval etc.  The command-line flags are now only used to
237     set defaults.
238
239 15 March 2009: babel 0.93
240
241   * No longer update seqno periodically, rely on explicit seqno requests.
242
243 21 January 2009: babel 0.92
244
245   * Fixed a bug that could cause a crash if an interface was repeatedly
246     brought down and then back up.
247   * Implemented some protection against time stepping when POSIX clocks are
248     not available.
249
250 10 November 2008: babel 0.91
251
252   * Maintain buffered updates per-interface, which makes multi-interface
253     nodes significantly less noisy.
254   * Changed the strategy for dealing with unfeasible routes to be slightly
255     more generous while still avoiding loops.
256   * Fixed a bug that would cause multi-hop requests to be spuriously resent.
257   * Made a number of micro-optimisations throughout.
258
259 23 October 2008: babel 0.90
260
261   * INCOMPATIBLE CHANGE: all new Babel version 2 protocol, which is both
262     more robust and less chatty than version 1.
263   * Tweaked the strategies for sending triggered updates and unfeasible
264     requests to be more conservative.
265   * Minor optimisations all over the place.
266   * Removed the protocol specification -- the version 2 spec is maintained
267     separately.
268
269 18 October 2008: babel 0.17
270
271   * INCOMPATIBLE CHANGE: removed support for ``inherit'' in redistribution.
272   * INCOMPATIBLE CHANGE: a pidfile is now created by default.
273   * Increased the default seqno interval.
274   * Use a fixed kernel priority for routes installed by babel.
275
276 29 September 2008: babel 0.16
277
278   * Tweaked cost computation to be slightly slower.
279   * Implemented a local interface for GUIs.
280   * INCOMPATIBLE CHANGE: the -X command-line option is no more.
281
282 8 July 2008: babel 0.15
283
284   * Fixed a bug that could break link-quality estimation on yo-yo links.
285   * Protect against duplicate neighbour ids on the same interface.
286   * More tweaks to improve scaling with the number of kernel routes.
287   * Tweaked the default update interval.
288
289 1 July 2008: babel 0.14
290
291   * Use POSIX clocks if available to protect against clock stepping.
292   * Made babel use available internal routes straight away when the
293     set of redistributed routes changes.
294   * Lifted the arbitrary limit on the number of kernel routes.
295   * Changed the routing metric used on wireless links to plain ETX.
296   * Bridges are now automatically detected and treated as potential
297     wireless interfaces.
298   * Reduced the default hello interval.
299
300 24 May 2008: babel 0.13
301
302   * Removed all arbitrary limits (interfaces, neighbours, routes,
303     xroutes and sources).
304   * Fixed a bug that prevented expiration of stale sources.
305   * Updated the kernel interface to work with recent Linux kernels.
306   * More tweaks to the order in which updates are sent.
307
308 7 April 2008: babel 0.12
309
310   * Retractions are now sent multiple times, which should speed up
311     convergence in presence of packet loss.
312   * Optimised the sending of updates to make them smaller.
313   * Don't forward requests multiple times; this should reduce the
314     noise due to requests with no increase in convergence time.
315   * Fixed a bug that could cause a crash when resending requests.
316   * Added some protection against clock stepping.
317
318 29 March 2008: babel 0.11
319
320   * Implemented sub-second hello and update intervals.
321   * Fixed a bug that could prevent the best route from being selected
322     for extended periods of time.
323   * Implemented protection against out-of-date requests being sent and
324     forwarded when a node loses its sequence number.
325   * INCOMPATIBLE CHANGE: reduced the cost of wired networks down to 96
326     from 128.
327   * Tweaked the frequency at which a router's seqno increases, to make
328     it more likely that a feasible route will be available when needed.
329   * Implemented garbage collection of old sources.
330   * Implemented coalescing of unicast messages.
331   * Fixed a bug that could cause a crash when a link's MTU changes.
332   * Fixed a bug that could delay noticing that a network is no longer
333     idle when running Babel with the -i flag.
334   * Fixed a bug that could cause incorrect metrics to be advertised
335     when output filtering was used.
336   * Fixed a bug that could cause incorrect link costs to be computed when
337     a neighbour reduces its hello interval.
338   * Fixed some minor issues with the ordering of outgoing messages.
339
340 11 March 2008: babel 0.10
341
342   * Implemented the ability to automatically export local addresses (see
343     the ``local'' keyword in redistribute specifications).  This should
344     avoid the need to explicitly specify -X on the command line
345     (Julien Cristau and Juliusz Chroboczek).
346   * INCOMPATIBLE CHANGE: local routes (local interface addresses) are
347     now exported by default.  Specify ``redistribute local deny'' to
348     avoid that.
349   * Babel will now automatically choose a router id if none is
350     specified on the command line.
351   * Automatically adapt to interfaces appearing or disappearing at runtime,
352     as is usually the case when running over tunnels or VPNs.
353   * Changed the link quality computation algorithm to not discard very
354     lossy links.
355   * Multi-hop requests will now be forwarded to an unfeasible successor
356     under some circumstances.
357   * Send multi-hop requests more aggressively.
358   * Send requests for a new seqno upon receiving an unfeasible update
359     if it's better than what we have.
360   * No longer consider the age of routes in route selection.
361   * Added ability to run as a daemon.
362
363 14 February 2008: babel 0.9
364
365   * Implemented a proper configuration language to specify input and
366     output filters and redistribution policies.
367   * INCOMPATIBLE CHANGE: the flags -4, -x and -c are no longer supported.
368
369 8 February 2008: babel 0.8
370
371   * Babel will now automatically check for interfaces' up/down status,
372     IPv4 address, and optionally for carrier sense.
373   * Implemented the -w option, which disables all optimisations for
374     wired interfaces.
375   * Implemented support for non-default routing tables.
376   * Fixed a bug that could spuriously remove IPv4 routes (thanks to
377     Julien Cristau).
378
379 3 January 2008: babel 0.7
380
381   * Implemented support for IPv4.
382   * Fixed sending of unicast requests.
383   * Don't send poison when receiving a request for an unknown route.
384   * Basic filtering infrastructure.
385   * Removed support for broadcast IHU.
386   * Changed the behaviour of -d.
387
388 16 October 2007: babel 0.6
389
390   * Implemented resending of unsatisfied requests, with exponential backoff.
391   * Fixed a potential crash in the request handling code.
392   * Send IHUs more aggressively.
393
394 9 October 2007: babel 0.5
395
396   * Implemented forwarding of requests and replies.
397   * Fixed a bug that prevented requests from being parsed correctly.
398   * Fixed a bug that prevented IHU intervals from being sent.
399   * Respect reboot_time even after an id change.
400   * Deal with neighbours rebooting and losing their hello seqno when
401     computing link quality.
402
403 23 September 2007: babel 0.4
404
405   * Fixed incorrect expiration of old sources.  This could prevent
406     convergence in some cases.
407
408 16 September 2007: babel 0.3
409
410   * Fixes to Mac OS X support (Grégoire Henry).
411
412 29 August 2007: babel 0.2
413
414   * Made jitter computation depend on how urgent a given message is.
415     This dramatically improves convergence speed, without increasing
416     network load.
417   * Fixed a bug that prevented neighbour associations from being
418     discarded at shutdown.
419
420 22 August 2007: babel 0.1
421
422   * Initial public release.