B.A.T.M.A.N. Advanced Documentation Overview¶
- Table of contents
- B.A.T.M.A.N. Advanced Documentation Overview
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
- RIP protocol (Rest in Peace)
- ideas for a new routing protocol (Rest in Peace)
Talks and further resources¶
- Wireless Kernel Tweaking - introduction to batman-adv by Marek and Simon (December 2007, also available at media.ccc.de)
- Batman-adv multicast optimization - how batman-adv optimizes multicast traffic by Linus and Simon (March 2011)
- Bisect the batman-adv routing protocol - 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 - 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