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