Main features of B.A.T.M.A.N.
Not all routes are calculated, only route to the next neighbour So complete topology is not known to any single node, topology and routing decisions are distributed between all the nodes. Spreading this information reduces the “cost” on each nodeDesigned specifically for wireless networks – built for packet loss
Layer 2 vs. Layer 3
Most layer 3 routing protocols operate by sending UDP
packets to exchange routing information and manipulate the kernel routing table
to effect their routing decision. As packets are retransmitted they must be
brought up from layer 2 to layer 3 on each node before being moved back down to
layer 2 for retransmission.
Batman-adv operates entirely on layer 2 providing a virtual
switch port on each node. A batman-adv network of nodes can be imagined as a
large distributed switch where each node has a single switch port to which any
other bridge or switch can be connected.
Packet Routing and Transmission
The virtual Ethernet interface (tap) is used to emulate the
switch. This switch sends and receives the packets. The packet is retransmitted
by each node at layer 2 only; the packet is never brought up to higher levels
during transmission. This means any transmission looks like one hop to all the
higher layers (layer 3 and up) no matter how many nodes are in the network
At layer 2 the routing protocol must handle the data traffic
Batman-adv uses its own Ethernet type 0x0842. These Ethernet-Frames are sent to
find the routing information. Each data traffic Ethernet-Frame is encapsulated
in a 0x0842 Ethernet frame.
Node identification
Layer 3 routing protocols also have the problem that to join
the network the node must have a unique IP address, however without joining the
network how can the node know which IPs are unique? Batman-adv overcomes this problem.
Just like a switch batman-adv does not use IP addresses for identification but
instead uses MAC addresses. The BATMAN algorithm decides the best neighbour to
receive the packet being sent by looking it up in the MAC translation table.
Bridging Interfaces
The use of MAC addresses allows multiple other interfaces to
be bridged in easily using bridge tools. The MAC of each participant behind the
bridge is collected and transmitted as a list via HNA-messages to all the
batman-adv nodes. This makes integration of non-meshed clients very easy and
allows the non-meshed clients to roam.
Packet Loss and Encryption
Similarly to Ethernet, batman-adv will leave re-transmission
of packets to higher layer mechanisms such as TCP. As batman-adv works at layer
2, it is network-layer agnostic. DHCP, IPv4, IPv6 IPX etc can all be run on top
of batman-adv. Batman-adv does not perform any encryption at layer 2,
encryption must be performed at a higher layer.
User space Daemon vs. Kernel Module
User space daemons only handles the exchange of routing
information setting the routing tables while data traffic is routed by the
kernel using the routing tables defined and manipulated by the user space
daemon. In user space, packet forwarding usually takes place as follows:
- select() – wait for a packet
- read() the packet from the kernel
- find next hop, update tables
- write() the packet to the kernel
System calls to copy the message (read and write) takes a
long time and the mode must be switched between kernel and userspace. This
becomes a problem when the bandwidth usage rises so the peak performance of the
network interface card (NIC) can’t be reached
By switching to kernel space the kernel buffer can be reused
without having to copy it (read/write) and the Syscalls and mode switches are
no longer necessary. Kernel functions can be made asynchronous and pre-emptive
so asynchronous packet handling is possible. By implementing batman-adv as a
kernel module packet processing becomes almost negligible.