Libre-mesh antecedents

AlterMesh

AlterMesh was designed as a simple fully auto-configurable firmware for multi-radio nodes to enable the deployment of community networks in small towns that usually lack technically oriented people with specific networking skills. It's part of the MiniMaxi network model developed by AlterMundi. It uses batman-adv as dynamic routing protocol and takes advantages of the L2 cloud for easy public IPv6 provision.

Components

  • firmware:
    • batman-adv-auto-gw-mode, gw_mode=master on Internet connected nodes
    • batmesh-autoconf, batman mesh auto-config
    • safe-reboot, config testing and revert on fail
    • watchping, versatile ping watchdog
    • altermesh-webgui, minimalistic web gui (work in progress)
  • chef, firmware "cooker" http://chef.mesh.altermundi.net
  • altermap, federated network map (CouchApp).
  • ruci, remote config administration
  • Librenet6 mesh tunnel broker
  • dynamic global hostname resolution

qMp

It is a firmware to easy and quick build a mesh network. It tries to be as generic as possible.

Two modes:

  • Roaming: for quick deployments, for instance to cover a natural disaster
  • Community: for network communities such as Guifi or NiNux

Each mode has its own needs. User can select his mode.

Key Features

  • Complete LUCI-based web interface
    • Wizard
    • Configuration
    • Tools for measure the network
    • Tools to monitorize the network
  • Native IPv6 (ULA if user does not configure public ipv6)
  • IPv4 is tunneled over IPv6 backbone ( There is some MTU stuff to take in account ? )
  • Use VLAN tags to isolate routing protocol
  • Each interface can be configured in three modes:
    • LAN
    • WAN
    • MESH
  • Shell tools to manage and monitorize the system
    • qmpcontrol
    • qmpinfo
  • Auto-upgrade system implemented
  • Complete autoconfiguration system
  • Map Tool based on OpenStreetMaps (b6m)
  • Gateway checker (gwck) to auto-publish internet
  • TINC VPN to manage the nodes in remote
  • Structured as feed for OpenWRT (in packages)
  • Splash screen support (configurable via web iface)
  • Small chat using bmx6 sms plugin :-P

Components

  • qmp firmware
  • qmpfw a powerful tool to build automaticaly the firmware from a shell
  • synctincvpn cake-PHP web interface (for manage the network in remote)
  • synctincvpn client (installed in the nodes)
  • LUPI, a Lua API for OpenWRT

eigenNet

For eigenNet we have developed a set of tools, to help deploying the community network in the simplest way possible (just flash and plug).

Key Features

Completely decentralized and human indipendent autoconfiguration, native client roaming in the same cloud, basic multicast support, L3 agnostic, (a lot of other things i don't remember now :| )

Components

Nodes based on openwrt with batman-adv does just L2 things except for gateway checking

  • eigennet-autoconf autoconfigure the nodes to make the mesh and/or make hotspot
  • eigennet-bwtest Bandwidth Measurement Tool using nc yes and pv commands
  • eigennet-bwtest-webui Bandwidth Measurement Tool Web Interface (need some refactoring to be luci compatible)
  • eigennet-firewall Layer 2 Firewall based on ebtables, provide common rules out of the box (like DHCP isolation)
  • eigennet-gw4server IPv4 Gateway Checker (i think this si the same as altermesh batman-adv-auto-gw-mode)
  • eigennet-httpinfo Export info via HTTP protocol (just some cgi script on uhttpd) (need some refactoring to be luci compatible)
  • eigennet-pointing Antenna Pointing Tools
  • eigennet-pointing-webui Antenna pointing tools Web Interface (need refactoring to be luci compatible)
  • eigennet-reghack Regulatory domain unlocker

Server (Border gateways and various services) based on gentoo

  • babeld as L3 routing (read routes directly from routing table, powerfull route filtering –announcing, forwarding and also receiving!–, near to 0 footprint on vpn/wired links)
  • babeld-route-share a little daemon that check "static" routes validity and add/remove them from routing table
  • Anycast DNS
  • Anycast ipv6 gateway (we are doing this only for ipv6 because in ipv4 we are natted so it would break some connection)