Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision Next revisionBoth sides next revision | ||
| docs:guide-user:network:wifi:mesh:80211s [2022/04/07 19:08] – bluewavenet | docs:guide-user:network:wifi:mesh:80211s [2024/09/23 17:10] – Move note 5 into note 4 as previously it sounded like `wpad` was an available package taylorkline | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== 802.11s | + | ====== 802.11s |
| - | [[wp> | + | [[wp> |
| - | ===== Status ===== | + | Packages to enhance the basic layer 2 802.11 mesh have been developed, particularly where multiple Internet gateways and partial cabled backhaul are required. |
| + | These enhanced packages are targeted more for large infrastructure scenarios eg. local community through to city scale, rather than a typical home mesh application. | ||
| - | 802.11s works reliably with OpenWrt 19.07 and later, including authentication and encryption, assuming that there is hardware/ | + | See:\\ |
| + | [[: | ||
| + | [[: | ||
| + | [[: | ||
| - | A possible ARP relay bug was reported that supposedly prevented mesh nodes more than a single hop from each other from converging into a single | + | In contrast, |
| - | This was however | + | |
| - | This parameter had to be set manually using the iw utility, after startup and again after a network restart.\\ | + | |
| - | The mesh11sd package is now available to dynamically set and reset mesh parameters using the UCI config.\\ | + | |
| - | See: [[docs: | + | |
| - | + | ===== What is a Mesh? ===== | |
| - | ===== Config | + | |
| - | It is necessary | + | A mesh network |
| - | < | + | A normal user device, such as a phone, tablet, laptop etc., cannot connect to a mesh network. Instead, connection is achieved via a mesh gateway, a special type of mesh peer. |
| - | opkg remove wpad-mini | + | |
| - | opkg remove wpad-basic | + | |
| - | opkg remove wpad-basic-wolfssl | + | |
| - | </ | + | |
| - | Install dependencies ('' | + | ===== Are you sure you want a mesh? ===== |
| + | If you are looking for a solution to enable your user devices to [[docs: | ||
| - | < | + | //It is unfortunate that some manufacturers have used the word " |
| - | opkg install wpad-mesh-openssl # or wpad-mesh-wolfssl | + | // |
| - | </code> | + | |
| - | [[https:// | + | |
| + | - The accepted standard for fast roaming | ||
| - | **Notes: | + | These are two completely unrelated standards. |
| - | - '' | + | |
| - | - '' | + | |
| - | - '' | + | |
| - | - The **full version** of '' | + | |
| - | Edit ''/ | + | ===== 802.11s Mesh ===== |
| - | * '' | + | 802.11s works reliably with all current OpenWrt versions, |
| - | * '' | + | |
| - | * add an '' | + | |
| - | < | + | An 802.11s interface requires numerous operational parameters to be set **AFTER** the interface has come up and established itself as a part of the mesh. |
| - | config wifi-iface 'mesh' | + | Some SoC combinations do not establish the mesh interface quickly enough, so many of these operational parameters may fail to be implemented. |
| - | | + | |
| - | option device ' | + | |
| - | option mode ' | + | |
| - | option mesh_id ' | + | |
| - | option encryption ' | + | |
| - | option key ' | + | |
| - | </ | + | |
| - | **Note:** Access by client devices is achieved by bridging the ' | + | However, for single hop Wifi extender use, additional parameters do not need to be set for this very basic but useful mode. |
| - | If you want to run a routing protocol like OLSR on your mesh, disable 802.11s' | + | Historically, |
| - | For a complete list of mesh parameters | + | The mesh11sd package was developed to allow all available |
| - | * MP_CONFIG_INT | + | |
| - | * MP_CONFIG_BOOL | + | |
| - | * MP_CONFIG_STRING | + | |
| - | Alternatively, | + | ===== 802.11s Rapid Deployment ===== |
| - | < | + | |
| - | # iw dev < | + | |
| - | </ | + | |
| - | to obtain a list of available mesh parameters, but without documentation. | + | |
| - | Then reinitialize wifi and see if it worked: | + | An 802.11s mesh backhaul can be rapidly deployed by taking advantage of the OpenWrt Firmware Selector (or the Image Builder) |
| - | < | + | See: |
| - | # wifi | + | |
| - | # logread -l 20 -f | + | |
| - | # iw dev wlan0 station dump | + | |
| - | </ | + | |
| - | ===== Wireless Hardware Support ===== | + | [[docs: |
| - | :!: Support for 802.11s (type mesh) depends on wireless driver. Most up to date open source drivers work. Note that some drivers may advertise they support mesh but is not. For example ath10k-ct driver doesn' | + | ===== Verifying Wireless Driver Support ===== |
| + | |||
| + | :!: Support for 802.11s (type mesh) depends on wireless driver. Most up to date open source drivers work. Note that some drivers may advertise they support mesh but have problems with it. | ||
| + | |||
| + | For example, as of Dec 2023, the '' | ||
| Use the following to determine if your hardware supports 802.11s mesh. | Use the following to determine if your hardware supports 802.11s mesh. | ||
| Line 115: | Line 91: | ||
| ...</ | ...</ | ||
| - | ===== Using the command line (CLI) ===== | + | ===== Installation & Configuration |
| - | '' | + | If you want to run an encrypted mesh, you must install a version of '' |
| - | Create a new interface " | + | At the time of writing, either the full or mesh-capable version of '' |
| - | < | + | |
| - | Confirm that the new interface exists | + | Examples: |
| - | < | + | * '' |
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| - | | + | **Installing support for Mesh Encryption:** |
| + | It is necessary to remove the non-mesh version of '' | ||
| - | Bring up your mesh0 interface | + | Or with the following commands: |
| - | < | + | < |
| + | opkg list-installed wpad* | ||
| + | </ | ||
| - | Assign | + | Now install |
| - | < | + | |
| + | <code bash> | ||
| + | opkg update | ||
| + | opkg install ... | ||
| + | </ | ||
| + | |||
| + | **Notes: | ||
| + | - [[https:// | ||
| + | - The '' | ||
| + | - The '' | ||
| + | - The '' | ||
| + | |||
| + | Example of a single command to remove the basic wpad and replace it with mesh: | ||
| + | |||
| + | // | ||
| + | |||
| + | <code bash> | ||
| + | opkg update && opkg install wpad-mesh-mbedtls --download-only && opkg remove wpad-basic-mbedtls && opkg install wpad-mesh-mbedtls --cache . && rm *.ipk | ||
| + | </ | ||
| + | |||
| + | **Configuring Mesh Networking within the LuCI Web Interface: | ||
| + | |||
| + | // | ||
| + | This is because LuCI creates a static config and mesh11sd dynamically manages the mesh config.// | ||
| + | |||
| + | - Go to '' | ||
| + | - Click ' | ||
| + | - '' | ||
| + | - Select '' | ||
| + | - '' | ||
| + | - '' | ||
| + | - Now '' | ||
| + | |||
| + | **WARNING: | ||
| + | Bridge loops WILL occur if you have any non-mesh segments in the backhaul (eg ethernet links), or have multiple mesh backhauls (eg 2.4GHz AND 5GHz).\\ | ||
| + | To prevent mesh bridge loops and support non-mesh backhaul segments or multiple mesh backhauls you must either run mesh11sd or create your own nftables bridge ruleset to drop looping packets.\\ | ||
| + | |||
| + | ==== The Wireless UCI Config File ==== | ||
| + | |||
| + | // | ||
| + | This is because / | ||
| + | |||
| + | The ''/ | ||
| + | |||
| + | < | ||
| + | config wifi-iface ' | ||
| + | option device ' | ||
| + | option disabled '0' | ||
| + | option mode ' | ||
| + | option ifname ' | ||
| + | option network ' | ||
| + | option mesh_id ' | ||
| + | option encryption ' | ||
| + | option key ' | ||
| + | </ | ||
| + | |||
| + | **Note:** option network ' | ||
| + | |||
| + | This configuration should be sufficient to bring up the mesh network so you can now reinitialize wifi and see if it worked: | ||
| + | |||
| + | < | ||
| + | wifi | ||
| + | iw dev mesh0 info | ||
| + | </ | ||
| + | |||
| + | You should see an output similar to: | ||
| + | < | ||
| + | Interface mesh0 | ||
| + | ifindex | ||
| + | wdev 0x3 | ||
| + | addr 12: | ||
| + | type mesh point | ||
| + | wiphy | ||
| + | channel 2 (2417 MHz), width: 20 MHz, center1: 2417 MHz | ||
| + | txpower 28.00 dBm | ||
| + | multicast TXQ: | ||
| + | qsz-byt qsz-pkt flows drops marks overlmt hashcol tx-bytes tx-packets | ||
| + | 0 0 129166 0 0 0 0 9107016 129167 | ||
| + | </ | ||
| + | |||
| + | Every device you want to participate in the mesh must be configured in the same way ie same mesh_id, same channel, same key. | ||
| + | |||
| + | This wireless UCI configuration may be sufficient for a " | ||
| + | But an organic, autonomously self managing mesh network of many meshnodes requires additional configuration. | ||
| + | |||
| + | ==== Mesh11sd - Setting Parameters and Options ==== | ||
| + | |||
| + | There are many mesh parameters available, some of which are essential for a reliable mesh network. | ||
| + | |||
| + | The majority of these however, require the mesh interface to be up and established before setting. | ||
| + | |||
| + | If these parameters were to be set in the wireless UCI config file, they would fail, as of course the wireless UCI config is used to start/ | ||
| + | |||
| + | Parameters can be set manually using the IW utility, but any settings done this way will only persist as long as the mesh interface is up. | ||
| + | Rebooting, restarting the network, or reinitializing the wireless interface (" | ||
| + | |||
| + | For permanently setting parameters, the Mesh11sd package should be installed: | ||
| + | |||
| + | < | ||
| + | opkg update | ||
| + | opkg install mesh11sd | ||
| + | </ | ||
| - | By default, mesh points will use channel 1 and automatically attempt to create peer links with mesh nodes with the same mesh ID and channel. | + | For full details of the Mesh11sd package see: |
| + | [[: | ||
| - | ===== Verify ===== | + | ===== Verify |
| Use the '' | Use the '' | ||
| Line 169: | Line 254: | ||
| </ | </ | ||
| - | ===== Block single peer from meshing ===== | ||
| - | //This may require the iw-full package!// | ||
| - | Block a peer from meshing using its MAC address | ||
| - | < | ||
| - | iw dev $MESH_IFACE station set $MAC_TO_BLOCK plink_action block | ||
| - | </ | ||
| - | Verify using section above (iw dev $MESH_IFACE station dump) | ||
| - | < | ||
| - | mesh plink: | ||
| - | </ | ||
| - | Unblock: | ||
| - | < | ||
| - | iw dev $MESH_IFACE station set $MAC_TO_UNBLOCK plink_action open | ||
| - | </ | ||
| - | according to [[https:// | + | ===== More resources & background ===== |
| - | ===== More background ===== | + | * [[docs: |
| - | * [[http:// | + | * [[http:// |
| - | * [[https:// | + | * [[https:// |
| - | * [[http://lists.open80211s.org|Open80211s Mailing List]] | + | * [[https://www.youtube.com/ |