Discovering and peering WiFi devices in 802.11s mesh networks
Mesh networks are an efficient way to connect WiFi devices without using Ethernet cabling to connect to the backbone. It consists of WiFi devices that have one or more radios, with the particularity that they are all considered STAs (clients) and none of them is considered an AP in the network architecture. Neighboring radios are discovered using beacons and may or may not be paired to create a communications channel based on various criteria that are left to the discretion of the administrator.
However, the configuration is not clear in most scenarios.
That is why in this article we characterize the discovery and peering of devices based on mesh networks based on 802.11s.
1. Radio stations evaluate RSSI_threshold when they discover a nearby radio candidate to peer with them:
a) If that candidate radio has more signal than the threshold, the link is established (mesh plink will remain: ESTAB and mesh PS mode will remain: ACTIVE in iw dev wlan0 station dump
).
b) If that candidate radio has less signal than the threshold, the link is not established (mesh plink will remain: LISTEN and mesh PS mode will remain: UNKNOWN in iw dev w wlan0 station dump
).
In both cases, in the web they shall appear in the list of connected stations, but in case b) the Throughput will be 0 and the Bandwidth will be 0 as well.
2. Once they have discovered the nearby radios and the peering has been determined, it doesn’t matter if it goes above or below the threshold. In other words, moving the AP closer or further away does not change from ESTABLISHED to LISTEN or vice versa. In order for the candidates to be re-evaluated, the radio or AP must be restarted (by doing wifi
). A connection established before setting the threshold will still be established.
3. Even if you change the threshold during runtime (with iw dev wlan0 set mesh_param mesh_rssi_threshold
), if the radio or AP is not restarted (by doing wifi
), the condition will not be re-evaluated. An established connection that deteriorates after setting the threshold will not be blocked.
4. RSSI_threshold can be set on the web (negative value) or in /etc/config/wireless
. And then restart the radio or AP. Therefore, the iw-full
tool is not needed.
5. If you want to block a particular radio candidate, you can use plink_action
against the MAC of that radio. The mesh plink will remain: BLOCKED in iw dev wlan0 station dump
.
6. If you want to limit the number of radio peers that link to your radio, you can use mesh_max_peer_links, knowing that you will accept the first ones you find (watch out, as they are not necessarily the best ones) until you reach the set number. The mesh plink will remain: BLOCKED in iw dev wlan0 station dump
.
We hope this clarification will be helpful to all network engineers and technicians who want to configure and operate mesh networks based on 802.11s.
https://www.galgus.net/en/blog/discovering-and-peering-wifi-devices-in-802-11s-mesh-networks/
#!/bin/sh
mesh_fwding=$(iw dev wlan0 get mesh_param mesh_fwding)
mesh_gate_announcements=$(iw dev wlan0 get mesh_param mesh_gate_announcements)
mesh_rssi_threshold=$(iw dev wlan0 get mesh_param mesh_rssi_threshold)
echo "the current forwarding is: $mesh_fwding"
echo "the current gate announcements is: $mesh_gate_announcements"
echo "the current rssi threshold is: $mesh_rssi_threshold"
if [ $mesh_fwding == "0" ]; then
iw dev wlan0 set mesh_param mesh_fwding '1'
echo "forwarding set"
else
echo "forwarding already set"
fi
if [ $mesh_gate_announcements == "0" ]; then
iw dev wlan0 set mesh_param mesh_gate_announcements '1'
echo "announcements set"
else
echo "announcements already set"
fi
if [ "$mesh_rssi_threshold" != "-80 dBm" ]; then
iw dev wlan0 set mesh_param mesh_rssi_threshold '-80'
echo "threshold set"
else
echo "threshold already set"
fi
I guess yours is similar. I then put this on the scheduled tasks to run it every 5min:
5 * * * * /root/mesh_parameter.sh
https://forum.openwrt.org/t/bug-report-802-11s-mesh-v19-07-4/78524/14