Batman-adv 2013.0.0 released
On January 15th, the B.A.T.M.A.N. team has released batman-adv 2013.0.0, bringing many new features, performance improvements and tweaks under the hood. As the kernel module always depends on the Linux kernel it was compiled against, it does not make sense to provide binaries on our website. As usual, you will find the signed tarballs in our download section:
as well as prepackaged binaries in your distribution.
Thanks to all people sending in patches:
- Akinobu Mita <firstname.lastname@example.org>
- Antonio Quartulli <email@example.com>
- Marek Lindner <firstname.lastname@example.org>
- Martin Hundebøll <email@example.com>
- Moritz Warning <firstname.lastname@example.org>
- Simon Wunderlich <email@example.com>
- Sven Eckelmann <firstname.lastname@example.org>
and to all those that supported us with good advice or rigorous testing:
- David Miller <email@example.com>
- Glen Page <firstname.lastname@example.org>
- Linus Luessing <email@example.com>
- Mike Burmeister-Brown <firstname.lastname@example.org>
- Pau Koning <email@example.com>
In summer 2011, the B.A.T.M.A.N. project participated in Google's Summer of Code for the first time. One of the two projects was about implementing a distributed ARP table for batman-adv (short: DAT), enabling a mesh node to speed up the ARP discovery phase for its non-mesh clients by intelligently caching & retrieving IPv4 address/MAC address translations. Many obstacles like clean code, lack of time and kernel maintainer objections had to be taken before DAT could finally be merged. This release finally brings the long-awaited distributed ARP table. The wiki features basic DAT documentation as well as technical insights for those who are interested.
The batman-adv Ethernet type (0x4305) was accepted as "official" Ethernet type inside the Linux kernel to help avoiding future collisions with other protocols. Only the IEEE is entitled to raise our Ethernet type to the level of "standard" recognized beyond the realm of Linux but this step still moves us forward.
Thanks to a hint from David Miller we began removing the famously known "__packed" attribute from our packet definitions as it allows the compiler to generate slightly faster code on some platforms. He also encouraged us to implement a minor modification in our hash code to squeeze a little more performance out of it. The translation table was enhanced with the ability to handle multiple roaming events during a single OGM interval (especially useful in environments with higher OGM intervals). The bridge loop avoidance drops ECTP traffic to avoid packets looping around. In addition, various race conditions during the bridge loop avoidance initialization phase have been identified & fixed. An unusual speedy join / bridge loop avoidance interaction bug caught our attention and was addressed soon thereafter.
The batctl utility was enriched with a couple of tools completing the distributed ARP table support: A switch to enable / disable DAT at runtime, an ARP cache viewer and a minimal unicast 4addr dissector (unicast 4addr packets are used to exchange DAT packets). This release also features small but useful 'translation' helpers: Whenever an IP or MAC address needs to be 'translated' to the originator mac address responsible for the IP or MAC the 'batctl translate' functionality can be used. It is now also possible to call 'batctl ping' and 'batctl traceroute' with an IP or MAC address because these tools will take advantage of the 'translate' functionality internally. Beware: layer 2 ping and traceroute will still only work across batman-adv enabled nodes.
All of batctl's output errors are redirected to stderr instead of stdout. To save space on embedded devices 'batctl bisect' was turned into a compile-time option which is disabled by default. The manpage explaining gateway functionality received some attention as well.
The B.A.T.M.A.N. team