openwisp / openwisp/netjsonconfig
BATMAN-adv and 802.11s Mesh Interface Support
Nobody has claimed this yet.
- Dominant language
- Python
- Stars
- 388
- Forks
- 87
- Avg merge
- 1h 26m
- Merged PRs (30d)
- 4
Description
Summary
Add support for BATMAN-adv (Better Approach To Mobile Ad-hoc Networking) mesh networking protocol and 802.11s wireless mesh interfaces to the OpenWrt backend of
netjsonconfig.
Motivation
BATMAN-adv is a popular Layer 2 mesh networking protocol used in decentralized mesh networks, community networks, and IoT deployments. Currently, netjsonconfig lacks native
support for configuring BATMAN-adv interfaces, forcing users to manually configure mesh networks or use workarounds.
Requested Functionality
BATMAN-adv Main Interface Support
Support for configuring the main BATMAN-adv virtual mesh interface with options for:
- Routing algorithm selection (BATMAN_IV or BATMAN_V)
- Bridge loop avoidance
- Gateway mode configuration (off/client/server)
- Hop penalty tuning
- MTU configuration
- Fragmentation control
BATMAN-adv Hard Interface Support
Support for configuring physical/wireless interfaces that participate in the mesh network:
- Binding physical devices to the mesh
- Association with master BATMAN-adv interface
- Support for 802.11s wireless mesh interfaces
Mesh-Specific Wireless Properties
Support for 802.11s mesh-specific wireless configuration:
- Mesh forwarding control
- RSSI threshold configuration
- WPA3 encryption for mesh networks
Use Cases
This feature would enable:
- Community mesh network deployments
- Redundant wireless backhaul networks
- IoT mesh networks with automatic routing
- Disaster recovery communication networks
- Rural connectivity projects using mesh topologies
- OpenWISP-managed mesh network infrastructure
Expected Behavior
Users should be able to define BATMAN-adv mesh networks using NetJSON configuration, and netjsonconfig should automatically generate the correct OpenWrt UCI configuration
for mesh networking.
Example Use Case
A user wants to configure a mesh node with a BATMAN-adv interface and a wireless mesh hard interface. They should be able to express this declaratively in NetJSON format,
and netjsonconfig should generate the appropriate OpenWrt configuration files.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by examining the OpenWrt backend and its existing NetJSON-to-UCI interface handling. Trace how virtual, physical, and wireless interfaces are represented, then define the required BATMAN-adv and 802.11s configuration coverage and verify that generated OpenWrt UCI configuration matches the requested mesh options.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- backend, networking
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 30/100