Mesh con 802.11s e OpenWrt
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