Objectives

Main characteristics

  • Suitable for rapid deployments as well as for stable community networks
  • Ability to scale to thousands of nodes connecting different network clouds
  • Complete auto-configuration, with the option for different levels of manual tunning #5
  • Roaming within network clouds
  • Automatic Internet access detection and sharing
  • Dual stack IPv6/IPv4
  • Dynamic global and local hostname resolution
  • Decentralized network mapping and monitoring #6
  • Based on OpenWRT
  • Free Software

Agreements

  • Use Lua whenever possible instead of shell scripts
  • Guarantee a minimal mtu of 1350
  • Do not go over 0.64Mbit/s of routing overhead (we are estimating this should scale to 5k nodes with an average of 4 neighbors per node, considering an overhead of 4byte/s per node added to the net).
  • Roaming should maintain persistent connections where possible
  • The firmware should be structured as feed for OpenWRT

Firmware components:

  • Auto-config scripts (base config, gateway mode, etc.)
  • Manual configuration web interface (LUCI-based)
  • Safe config testing with revert-on-failure capability
  • Shell tools for node management ("qmpcontrol")
  • Tools to measure and monitor the network (aggregated data (like byte count) push/pull, more something like netflow (push only) ?)
    • Antenna alignment tools
    • Bandwidth measurement tool (actual tools rely on userspace programs, it would be better to find an in kernel solution ( seems ubiquity have a proprietary in kernel solution already ) because of limited CPU on devices; investigate arbitrary routing loops for throughput testing)
    • Wireless and network info (spectral analysis, signal, noise... both Push (with the agent) and Pull (via luci uhttpd) ?)
  • Splash screen/captive portal
  • Simple upgrade system
  • Regulatory domain unlocker
  • Versatile ping watchdog (watchping)
  • Internet sharing control and configuration (some openwisp components?)

Associated tools and projects

  • Decentralized network map (altermap, b6m)
  • Mesh tunnel broker for IPv6 provision (librenet6)
  • Tinc VPN for remote node management (synctincvpn) #15
  • Remote configuration administration and history (ruci + web/gui)
  • Firmware customization and build tools (chef, qmpfw?)
  • LUPI, a Lua API for OpenWRT #3
  • route validity checking (similar to eigenNet's babeld-route-share)