B.A.T.M.A.N. advanced
- B.A.T.M.A.N. advanced (batman-adv) is an implementation of the B.A.T.M.A.N. routing protocol in form of a linux kernel module operating on layer 2.
- Batman-adv operates entirely on Layer 2 of OSI stack
- The routing information is transported using raw ethernet frames
- the data traffic is handled by batman-adv
- It encapsulates and forwards all traffic until it reaches the destination, hence emulating a virtual network switch of all nodes participating. Therefore all nodes appear to be link local and are unaware of the network's topology as well as unaffected by any network changes.
Interesting points
- you can run whatever you wish on top of batman-adv: IPv4, IPv6, DHCP, IPX
- nodes can participate in a mesh without having an IP
- easy integration of non-mesh (mobile) clients (no manual HNA fiddling required)
Why a kernel module?
Processing packets in userland is very expensive in terms of CPU cycles, as each packet has to be read() and write() to the kernel and back, which limits the sustainable bandwidth especially on low-end devices. To have good support for these devices as well, we implemented batman-adv as a kernel driver.
Note : Batman has no security implemented. Also assigning IP addresses to the node(s) is not Batman's task.