# B.A.T.M.A.N.

B.A.T.M.A.N. (Abkürzung für Better Approach To Mobile Adhoc Networking) ist ein Routingprotokoll für mobile Ad-hoc-Netze. Mobile Ad-hoc-Netze bringen die besondere Herausforderung mit sich, dass sich die Verbindungsqualität der Funkstrecken ständig verändert. Die Aufgabe des Routingprotokolls ist es, laufend zu ermitteln, welche Knoten in dem Netz aktuell über welchen Weg erreichbar sind, und dies in die Routingtabellen der beteiligten Geräte einzutragen. Das Protokoll B.A.T.M.A.N. wird seit 2006 hauptsächlich im Umfeld der Freifunk-Community entwickelt, sein Einsatz beschränkt sich jedoch nicht auf dieses Projekt.

## Geschichte

Bevor es B.A.T.M.A.N. gab, verwendeten Freifunk-Communitys nur das Routing-Protokoll OLSR. Dieses Protokoll ermittelt über den Dijkstra-Algorithmus permanent alle Routen zwischen allen Routern im mobilen Ad-hoc-Netz. Jeder Knoten kennt in einem OLSR-Netz das komplette Netz. Dadurch entstehen jedoch unnötiger Rechenaufwand und Datenverkehr. Diverse Versuche, die Software OLSR anzupassen, führten nicht zum erhofften Performance-Zugewinn. Basierend auf dieser Erfahrung begannen 2006 einige Mitglieder der Freifunk-Community, einen neuen Ansatz zu entwickeln. Die Routingtabellen der einzelnen Knoten eines mobilen Ad-hoc-Netzes sollten auf effizientere Weise ermittelt und aktualisiert werden.

## Funktionsweise

B.A.T.M.A.N. berechnet nicht auf jedem Gerät die Routingtabellen für das komplette Netzwerk. Jeder Router mit B.A.T.M.A.N. informiert regelmäßig seine Nachbarrouter durch Broadcast-Nachrichten (sogenannte Originatornachrichten) über seine Existenz. Die Router wiederholen diese Nachrichten wiederum für ihre benachbarten Router. So wird im gesamten Netzwerk mitgeteilt, welche B.A.T.M.A.N.-Router existieren. Ein Router schreibt lediglich in die Routingtabelle, über welche Nachbarn welche weiteren Router erreichbar sind, ohne dabei die komplette Route bis zum Ziel zu prüfen. In den Broadcast-Nachrichten ist eine Metrik enthalten, die etwas über die Qualität der Verbindung aussagt, so dass jeder Router auch Informationen darüber hat, wie gut die jeweilige Verbindung aktuell ist.
Es gibt verschiedene Implementierungen des Routingprotokolls B.A.T.M.A.N. Das ursprüngliche B.A.T.M.A.N. arbeitet wie die meisten Routingprotokolle auf Schicht 3 des OSI-Modells, versendet also IP-Pakete. Es ermittelt Informationen über die optimalen Routen im Rechnernetz durch den Austausch von UDP-Paketen mit anderen Routern. Anhand dieser Informationen befüllt es die Routingtabelle des Kernels.
Im Unterschied zu diesem klassischen B.A.T.M.A.N. arbeitet das neuere „B.A.T.M.A.N. advanced“ (auch „Batman-adv“) auf Schicht 2 des OSI-Modells. Das komplette vermaschte Netz erscheint damit für die darüberliegenden Schichten als verteilter Switch: Der Netzwerkverkehr wird gekapselt an sein Ziel geschickt, als ob es gleich der nächste Nachbar wäre. Software, die darüber auf Schicht 3 mittels IP arbeitet, muss von dem Meshnetzwerk nichts wissen.
B.A.T.M.A.N. advanced bringt deshalb folgende Eigenschaften mit sich:
* Ein Knoten kann schon am vermaschten Netz teilnehmen, bevor er eine IP-Adresse hat.
* Es können beliebige OSI-Layer-3-Protokolle verwendet werden, z. B. IPv4, IPv6, DHCP.
* (Mobile) Endgeräte können dann mittels IP-Adressvergabe über DHCP in das Gesamtnetz integriert werden, auch wenn sie selbst nicht meshen können.
* (Mobile) Endgeräte können zwischen B.A.T.M.A.N. advanced-vermaschten Access Points roamen.
Um den Datendurchsatz zu verbessern, wurde B.A.T.M.A.N. advanced als Linux-Kernel-Modul integriert und ist seit 2011 Teil des Linux-Mainline-Kernels. Dieses Modul wird weiterhin aktiv entwickelt.

## Verbreitung

B.A.T.M.A.N. advanced wird für den Aufbau von WLAN-Meshnetzen eingesetzt, etwa von Freifunk in Deutschland, von Altermundi in Argentinien und von guifi.net in Katalonien/Spanien. In der Freifunk-Initiative ist B.A.T.M.A.N. advanced inzwischen verbreiteter als das Protokoll OLSR. Im kommerziellen Bereich wird die Software von der Firma open-mesh.com auf vorkonfigurierten Access Points benutzt, die ebenfalls vermaschte Netze mittels B.A.T.M.A.N. aufbauen. Das Projekt RADIUSdesk entwickelt grafische Benutzeroberflächen für Access Points und vermaschte Netze als freie Software, bietet jedoch auch bezahlte Anpassungsarbeiten an der Software an.
Außer für WLANs wird B.A.T.M.A.N. auch für lokale IP-Telefonie verwendet: Die Initiative Village Telco baut kostengünstige lokale Telefonie-Netzwerke mit vermaschten Netzen, die die Implementierung „B.A.T.M.A.N. Daemon“ verwenden. Der entsprechende Router dafür trägt den Namen „Mesh Potato“. The Serval Project realisiert VoIP-Telefonie zwischen Smartphones über ein vermaschtes Netz.
Wie schon OLSR hat auch B.A.T.M.A.N. ein wissenschaftliches Interesse geweckt und findet in der Literatur zahlreiche Erwähnungen. Die meisten Vorträge und Studien haben sich mit Performance-Vergleichen zwischen verschiedenen Routingprotokollen beschäftigt. Die Eigenschaften von B.A.T.M.A.N. selbst wurden z. B. im Zusammenhang mit Voice over IP-Telefonie untersucht.
Die Communitys, die selbst drahtlose Mesh-Netze bauen, führen einmal im Jahr die internationale „Wireless Battle of the Mesh“ durch, in der die Performance verschiedenster Routingprotokolle Praxistests unterzogen wird.