So I am working on a decentralized wireless manager that can configure and track lots of network equipment like access points. The idea is that a bunch of OpenWRT devices could be configured in a group and the devices would all participate to do things like band steering and rougue AP detection.
I initially started working on a centralized system with a master node that coordinated the transfer of changes and status data but I soon realized that there is actually much more potential.
In wireless roaming the client devices choose the best access point. Client devices benefit from 802.11k since it gives a list of nearby access points. This list helps wireless performance as it gives the client needed information about the environment. The key with 802.11k is that it needs a way of sharing data between access points. In a enterprise system this is done with a central controller. However, I got to thinking and it occurred to me that 802.11k doesn’t need data to be network wide. It is much more important to first share data with the local AP neighbors since the client is in the area anyway. I am working on a way for nodes to find the lowest latency partners so that the 802.11k data propagates outward from the source across the network.
One of the projects I really liked is DAWN. Dawn is a decentralized way to share 802.11k data across the network. It uses broadcast to send data periodically and the APs get that data and then share it with the clients.
The major limitation with DAWN (except for using broadcast) is that it is only for band steering and it has no authentication or configuration. I decided that a bigger management system really would be beneficial. The OpenWRT community seems to want better tooling for managing multiple devices son there is certainly a need. I want a network that has avoids the need for central controllers and that allows for mass changes. The network should work like some commercial wireless management solution and be effective in network of all sizes.
Even though I tend to be a Linux guy I do appreciate active directory and the overall design of the network. I like that you can set group policy that gets replicated and then applied. I am looking to have a centralized data store that is replicated across devices in the network. Changes are only accepted if they are properly signed by a user key. For the device data and status the changes will be signed by the device.
Now here is where I am curious. I have been looking at libp2p and it seems like it is kind of what I am looking for. The biggest thing for me is that I need something that works entirely on the local network and that allows for efficient reliable communication. I would want the network to be entirely self sustained with no interaction with the public internet. I am looking to make something idiot resistant that can be setup by someone with no experience with libp2p or any peer to peer networks.
Here are my questions:
- Can libp2p to restricted down to the local network? I want it to not be public. I think it is reasonable for a network administrator to set some devices to be the bootstrap nodes. However, under no circumstances should devices be connecting to public bootstrap servers or relays.
- How noisy is libp2p? If all of the devices are constantly sending changes will the network bog down when it gets big?
- How compatible is libp2p with embedded devices? More specifically, will it fit in a constrainedly device that has limited flash and ram?
Links:
Git repo: darin755/dusk: A hub and spoke communications and configuration system - Codeberg.org (only scratch notes for now)
Dawn: [OpenWrt Wiki] Setting up DAWN and band-steering in OpenWrt