Batman-adv 2012.2.0 released
Today, the B.A.T.M.A.N. team releases batman-adv 2012.2.0, packed with new features and improvements in various subsystems as well as the usual set of fixes and cleanups. 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.
This release comes with a completely rewritten bridge loop avoidance (also known as bridge loop avoidance II). The concept of the first bridge loop avoidance was simple and worked well in small size LANs while larger networks suffered from the overhead. The new concept is very different and requires changes in your batman-adv configuration. If you were using the bridge loop avoidance you should consult our documentation before upgrading your network(s).
The default "per hop" penalty was increased to encourage batman-adv to take shorter routes. If you notice altered routing behavior and are unhappy with the result you should revisit the hop penalty configuration option.
Thanks to all people sending in patches:
- Antonio Quartulli <email@example.com>
- Danny Kukawka <firstname.lastname@example.org>
- David S. Miller <email@example.com>
- Eric Dumazet <firstname.lastname@example.org>
- Linus Luessing <email@example.com>
- Marek Lindner <firstname.lastname@example.org>
- Simon Wunderlich <email@example.com>
- Sven Eckelmann <firstname.lastname@example.org>
- Xabier Rodriguez <email@example.com>
and to all those that supported us with good advice, code review and/or rigorous testing:
- Al Viro <viro@ZenIV.linux.org.uk>
- Daniele Furlan <firstname.lastname@example.org>
- David Laight <David.Laight@aculab.com>
- Jo-Philipp Wich <email@example.com>
- Martin Hundebøll <firstname.lastname@example.org>
The new bridge loop avoidance certainly is the most prominent of the new features this release has to offer (completely replacing the old bridge loop avoidance mechanism). The major design goals were performance and scalability. Since the old implementation was relying on a single gateway to be the main gateway to the LAN for everybody else it created a performance bottleneck. Furthermore, the LAN was used to send traffic to and receive data from the main gateway. With the number of bridged gateways grew the amount of broadcast traffic in the LAN. The new bridge loop avoidance splits the client responsibility amongst all participating gateways. Each gateway "claims" the clients it feels responsible for and ignores the traffic from all other clients to avoid the bridge loop. It also is able to handle multiple VLANs on top of the batX interface connected to different topologies. All details about the loop avoidance mechanism are explained in our documentation section.
The routing code also received lots of attention: The recently added routing protocol abstraction was further polished and extended to better accommodate the needs of alternative routing protocols. B.A.T.M.A.N. IV protocol has been enhanced with an additional flag to apply stricter forwarding rules to OGMs which allows the protocol to avert routing loops in certain corner cases. Also, the B.A.T.M.A.N. IV sequence numbers are now randomized at startup to reduce the probability of a collision and thus, slowing down the protocol in the startup phase. Rerouting of unicast payload packets during a roaming phase is handled with greater efficiency to avoid as much packet loss while roaming as possible.
All manual HZ-jiffies-calculations have been replaced with the in-kernel jiffies_to_msecs() function. To facilitate comprehension of the code base the ETH_ALEN macro is used instead of hardcoded numeric constants. The batman-adv internal bitarray operations have been converted to the efficient in-kernel bitmap operations. It was discovered that the TT-Request packet did not always send the tt-crc field in network byte order, thereby invalidating the packet. This has been fixed alongside the suboptimal DHCP option list parser used by the gateway extension. OGM sequence numbers now are always printed as unsigned long to avoid misinterpretation while printing the numbers in the debug log.
The batctl utility supports the new bridge loop avoidance by providing an option to conveniently enable/disable the bridge loop avoidance and exports the bridge loop avoidance claim table. It will also warn about features that haven't been compiled into batman-adv such as debug log and bridge loop avoidance. The mini-tcpdump learned to display the newly added 'not best hop flag' when parsing OGMs.
The B.A.T.M.A.N. team