Branches Explained

In 2007 many new branches were created and many numbers are floating around which caused much confusion. Here comes a brief summary why these branches and numbers were created, what they are good for and who is behind it:

Whenever we mention Roman numerals (as II or III) we speak of B.A.T.M.A.N.'s routing algorithm version. It describes how the routing information are flooded and how they are handled to make the best routing decission possible.

Arabic numerals are used to distinguish the version of our implementation. Next to the routing algorithm many features and goodies are added to simplify the users life.

Example: batman 0.2 uses the B.A.T.M.A.N. III routing algorithm.

batman (0.3)

Maintainer: Marek Lindner, Andreas Langer

batman 0.3 is the latest stable implementation, using a new version of the algorithm known as the BATMAN IV/TQ algorithm. It features better handling for asymetric links and packet aggregation.

bmx

Maintainer: Axel Neumann

This branch kept the 0.2 routing algorithm and tried to overcome its flaws by extending it. Under the hood it shares much code with 0.3 - not more or less.

batman-advanced (aka batman-adv-kernelland)

Maintainer: Marek Lindner, Simon Wunderlich

In April 2007 batman advanced (residing in user space) came to light. It uses the routing algorithm of batman 0.3, but instead of sending UDP packets and manipulating routing tables, it provides a virtual network interface and transparently transports packets on its own. It builds a switch of all your nodes and enables you to run any Layer 3 (and Ethernet Layer 2) protocols, like IPv4, IPv6, DHCP, IPX.., on top of it.

Batman advanced was first implemented in userspace as proof of concept. However the virtual interface in userspace imposed a significant overhead for low-end wireless access points, so we decided to re-implement batman-advanced as kernel module which is now batman-adv-kernelland.

batctl (former battools)

Maintainer: Andreas Langer, Marek Lindner

The batctl program contains a set of debugging tools which work together with our layer 2 implementation. You can use them to debug the mesh which proved to be difficult without them.