Mesh con 802.11s e OpenWrt

Da EigenWiki.
Versione del 5 apr 2023 alle 16:51 di Juma (discussione | contributi) (Aggiunto esempio di configurazione interfaccia)
(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)
Vai alla navigazione Vai alla ricerca

Informazioni generali

Data una versione sufficientemente recente di OpenWrt è possibile creare una rete mesh usando direttamente lo standard IEEE 802.11s. Le principali informazioni sono ottenibili direttamente dalla relativa pagina di OpenWrt.

Preparazione firmware

Ciò che rimane da fare è configurare un'immagine di OpenWrt con i giusti pacchetti, o meglio, preparare un'immagine già pronta all'uso.

Per fare ciò, è possibile usare ImageBuilder, che consente di assemblare un'immagine a partire dai pacchetti precompilati dai repo di OpenWrt, senza perciò dover compilare da capo l'immagine e la relativa toolchain.

Come documentato in dettaglio nella relativa pagina, è necessario scaricare e scompattare l'immagine imagebuilder della stessa architettura e versione del proprio device, ed invocare il comando make con gli opportuni argomenti.

Ad esempio, per assemblare un'immagine per una Ubiquity Nanostation M5 (XM), rimuovendo tutti i pacchetti non necessari (ppp, odhcpd, dnsmasq, firewall4), sostituendo altri con quelli in grado di supportare 802.11s (wpad-mesh-openssl, mesh11sd), ed aggiungendo alcuni pacchetti utili per configurare il dispositivo e migliorarne le prestazioni (shadow, zram-swap) è possibile usare il comando:

make image PROFILE=ubnt_nanostation-m \
   PACKAGES="-ppp -ppp-mod-pppoe -odhcpd -odhcp6c odhcpd-ipv6only -firewall4 \
        -wpad-basic-wolfssl -dnsmasq wpad-mesh-wolfssl mesh11sd sudo shadow zram-swap" \
   FILES="files"

dove files è la directory contenente file aggiuntivi da aggiungere all'immagine.

Fatto ciò è necessario configurare l'interfaccia wireless, ad esempio ponendo un file in /etc/uci-defaults, dove verrà eseguito al primo avvio. Un esempio di file di tale tipo può essere il seguente:

uci set wireless.radio0.channel='36'
uci set wireless.radio0.htmode='HT40'
uci set wireless.radio0.disabled='0'
uci set wireless.default_radio0.disabled='1'

iface=$(uci add wireless wifi-iface)
uci -q batch << EOI
set wireless.$iface.network='mesh'
set wireless.$iface.device='radio0'
set wireless.$iface.mode='mesh'
set wireless.$iface.ifname='mesh0'
set wireless.$iface.network='lan'
set wireless.$iface.mesh_id='nome-della-rete-mesh'
set wireless.$iface.encryption='sae'
set wireless.$iface.key='password-della-rete-mesh'
EOI
uci commit wireless

/etc/init.d/wireless restart
/etc/init.d/mesh11sd restart

Il file di configurazione di mesh11sd si trova in /etc/config/mesh11sd, e la versione distribuita con OpenWrt è già sufficiente a far funzionare il collegamento.

Un'implementazione "quick and dirty" si può trovare sulla repo https://git.eigenlab.org/Juma7C9/openwrt-meshed