batman-adv
B.A.T.M.A.N. advanced (often referenced as 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. It is configured with the tool batctl, which is described in its manpage.
Getting started
- Introduction
the concept of batman-adv: a layer 2 mesh as distributed switch
- Quick start guide
first steps to set up a mesh network (or: what the hell is bat0 for?)
- Using batctl
a quick introduction to batctl
- FAQ
frequently asked questions and answers
Installation and configuration
- Building with OpenWrt
set up an OpenWrt build environment to compile batman-adv
- OpenWrt configuration
example network and wireless configurations for OpenWrt
- Debian autostart
start batman-adv automatically on Debian and derived distributions
- Tweaking
overview of all settings to tweak the behavior of batman-adv
- Uevents
events sent by batman-adv to user space
- Understand your network
information exported by batman-adv about the mesh network
- Troubleshooting
what to do if the setup does not behave as expected
Features
- DHCP gateway optimization
choose the nearest internet gateway node
- Bridge loop avoidance
detect and avoid loops when bridging multiple nodes into the same LAN
- Multi-link optimizations
optimize traffic by using multiple links
- AP isolation and Extended isolation
prevent communication between (wifi) clients
- Distributed ARP Table
speed up the network by caching ARP replies in the mesh
- Broadcasts
how broadcasts are forwarded in the mesh
- Multicast optimizations
avoid flooding of multicast traffic
- Throughput meter
measure the throughput between two nodes
- Feature history
batman-adv versions which introduced each feature
The alfred daemon can additionally be used to distribute local information or visualize the mesh network.
Technical documentation
The protocol concept shared by all B.A.T.M.A.N. implementations is described in Protocol concept and Routing scenarios.
Routing algorithms
- B.A.T.M.A.N. IV
the TQ based routing algorithm
- B.A.T.M.A.N. V
throughput based routing algorithm and its differences to B.A.T.M.A.N. IV
- Originator message (OGM), Originator message v2 (OGMv2) and Echo Location Protocol (ELP)
the messages used by the routing algorithms
Non-mesh clients
- Client announcement
how non-mesh clients bridged into the mesh are announced
- Client roaming
non-mesh clients moving from one mesh node to the next
- TT flags
internal flags used by the translation table
Packet format
- Packet types
backward compatibility of unicast packet types
- Compat version
packet versions and formats used by batman-adv
- TVLV
the type-version-length-value API and its containers
Feature internals
- Network wide multi-link optimization
using multiple links in the whole mesh
- Bridge loop avoidance II, Bridge loop avoidance protocol and Bridge loop avoidance test cases
design, protocol and test cases of the bridge loop avoidance
- Distributed ARP Table internals
inner workings of the distributed ARP table
- Fragmentation
layer 2 fragmentation of packets larger than the MTU
- Throughput meter protocol
protocol used by the throughput meter
Broadcast and multicast
- Multicast optimizations internals
technical description of the multicast optimizations
- Multicast flags
the multicast flags announced by each node
- Multicast with bridges
multicast optimizations with bridged clients
- Multicast listener reports and Multicast report suppression
handling of IGMP/MLD reports
- Multicast packet type
packet type to forward multicast packets to multiple destinations
Development
- Tracking linux-next
how patches get from batman-adv into the Linux kernel
- Git repositories
structure and usage of the git repositories
The development tools describe how to test and debug batman-adv.
Ideas and drafts
These pages document ideas, drafts and analyses. They may be outdated or were never (completely) implemented.
- B.A.T.M.A.N. V draft
early draft of B.A.T.M.A.N. V
- OGMv2 permeability
reduce OGMv2 overhead in VPN connected networks
- Gateway selection issue
analysis of a suboptimal gateway selection
- Interconnecting batman-adv clouds
interconnect multiple batman-adv clouds
- DAT DHCP snooping
fill the distributed ARP table from DHCP messages
- Hidden node problem, Broadcast avoidances and Neighborhood hash assessment
reduce the overhead of broadcasts
- Multicast awareness, Multicast awareness (updated) and IGMP/MLD report forwarding
early multicast concepts and extensions
- Noflood mark
avoid flooding of frames marked via netfilter (rejected)
- RIP protocol (Rest in Peace)
ideas for a new routing protocol (Rest in Peace)
Talks and further resources
Wireless Kernel Tweaking (video) - introduction to batman-adv by Marek and Simon (December 2007, also available at media.ccc.de)
Batman-adv multicast optimization (video) - how batman-adv optimizes multicast traffic by Linus and Simon (March 2011)
Bisect the batman-adv routing protocol (video) - the bisect tool explained & demonstrated by Marek (March 2011)
Project CATWOMAN - network coding with batman-adv (video) - introduction into network coding with batman-adv by Martin and Jeppe (March 2011)
Random Linear Coding (video) - presentation on network coding by Martin (April 2013)
Translation table in a nutshell - the inner workings of the non-mesh client integration
Layer 2 fragmentation - basic concept behind the layer 2 fragmentation (GSoC final report)
Experience - who uses batman-adv