Next-gen Mesh Routing Protocol


Developing a routing protocol and implementation practically usable in (wireless) mesh networks combining advantages of OLSR and B.A.T.M.A.N.-adv.

Key features aimed for:
  • Efficient forwarding of IPv4 and IPv6 traffic (OLSR, BATMAN-adv)
  • Useable on Wifi routers with small flash and RAM (OLSR, BATMAN-adv)
  • Zero or almost zero minimal node config (BATMAN-adv)
  • Inclusion of normal Wifi devices into the network without need for explicit prefix configuration on nodes (BATMAN-adv)
  • Efficient routing between NGMRP and external networks using different RPs without need for another routing protocol (OLSR)
  • Roaming of Mesh nodes and Wifi clients (BATMAN-adv)
  • Anycast (none?)
  • Integration of WoT features (none)
  • Combination with a DHT used for announcing services and domain names (Distributed DNS) (none)

Another feature that doesn't have top priority, but should be kept in mind, is multicast.


As of now, this is just a wild bunch of ideas.

  • Implementation as a userspace daemon, with a small kernel module if necessary (implementation in userspace will faciliate development and porting to BSDs and other Unix-likes)
  • For node discovery and routing a algorithm similar BATMAN-adv's could be used
  • IPv6 must be a mandatory feature for every node
  • Avoid the huge broadcast domains you have in BATMAN-adv ‒ instead don't support broadcast at all


What should be routed to? MAC addresses, IP addresses, DHT nodes? Mappings between these address spaces should be available in the DHT.



Web of Trust

Each participant of the mesh will generate a keypair. The network CAN demand some amount of trusted signatures to participate, allowing finding and isolating malicient nodes


The anycast concept depends on the routing concept.

It should be possible to define sticky anycast addresses, for that the protocol tries to keep (client,unicast destination) mappings constant if possible. Applications
would be NAT gateways and anycast node providing TCP and similar services.

Normal anycast addresses shouldn't be sticky, most anycast services work more efficient when always the nearest node is used. Example: DNS