Documentation for the sudo mesh firmware.
Stuff the firmware should have
BATMAN-adv
We'll use this as the mesh protocol.
Multiple virtual network interfaces with their own SSIDs
- One ad-hock mode, unencrypted interface for the mesh nodes, e.g. sudomesh-backchannel
- One access point mode, unencrypted interface, for non-mesh devices to connect to the mesh, e.g. sudomesh.
- One access point mode, private interface with WPA2, for the people who own the nodes. [optional]
Traffic on the private interface should be completely separated from traffic on the non-private interfaces unless a client connected to the private interface requests an IP on the mesh.
Maybe the last one is optional because some people may not need that feature (they already have another access point and they want to keep it), but then how do people administrate the router?
Web admin interface
A very simple one-page interface. It should do at least the following:
- Status info: How many nodes is your node connected to. Is the internet link working.
- Let people select how much bandwidth they share.
- They always share 100% when they're not using the connection themselves.
- Do any ISPs have bandwidth caps around here? If so, let people specify how many MB to share per month.
- Let people set the admin password and the private wifi wpa2 password.
- Donate / "buy routers as presents for your friends"-button.
Nice to have:
- An "I don't know what my internet bandwidth is, test it for me"-function.
- Usage statistics (so people can see how many people they helped get internet!)
- Let people put up a bit of info about their node / house / co-op, on a simple web page that people can access only if they're connected to that node. It could be shown as part of the splash page.
DNS server
Each node _could_ run its own caching DNS server. Doing this would allow people to access the admin page by going to e.g. http://me.mesh/ from the private interface.
QoS / bandwidth shaping
To support letting node owners select how much bandwidth they share.
Splash page
We should have a captive portal so people can learn about the mesh. We have also thought about letting local groups and businesses advertise with location-specific advertisements on the splash page. This could be a source of revenue for the mesh.
Internet VPN
The firmware should tunnel all Internet traffic from the mesh through a VPN server, unless this feature is specifically disabled.
This should not be a single VPN server, as that would be a single point of failure.
Mesh VPN
If the mesh does not see any other nodes (and maybe even if it does?), and it has internet, then it should connect to another node or two over VPN. The easy solution is to use the same VPN servers as for the internet.
DHCP and batman-adv gateway mode
Nodes with an internet connection should run DHCP and batman-adv gateway mode.
Compatible devices
We should have ready-made images for:
- One really cheap indoor router (with 3G usb stick support?) like TP-Link TL-WR703N
- One nice high-speed indoor router (300 mbps 802.11n)
- Ubiquiti hardware. Most of the AirMAX stuff.