openwisp / openwisp/netjsonconfig

BATMAN-adv and 802.11s Mesh Interface Support

Open
#368 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.