Wifi 6 mesh support via wpad-openssl

Hi!

I am building a mesh network using GL-MT3000 routers running OpenWrt 24.10.0, I set them up so that the mesh runs on the 5GHz radio using the wpad-openssl package.

Up to now I thought everything was working as desired, I can connect through the mesh to the different routers and all is well. I created the mesh via luci, setting the mode to AX and the channel bandwidth to 40MHz (on top of the other parameters).

However I just noticed that it looks like the mesh is actually running using WiFi 4 (hwmode n) instead of WiFi 6 that the router supports.

uci show wireless.radio1 returns

wireless.radio1=wifi-device
wireless.radio1.type='mac80211'
wireless.radio1.path='platform/soc/18000000.wifi+1'
wireless.radio1.band='5g'
wireless.radio1.channel='36'
wireless.radio1.htmode='HE40'
wireless.radio1.country='US'
wireless.radio1.txpower='23'
wireless.radio1.cell_density='0'

and Luci shows
image

which looks correct, but when I run

ubus call iwinfo info '{ "device": "mesh0" }'

I get the following results which shows that the router is actually using WiFi n, even though it supports ax.

{
        "phy": "phy1",
        "ssid": "<redacted> ",
        "bssid": "<redacted>",
        "country": "US",
        "mode": "Mesh Point",
        "channel": 36,
        "center_chan1": 38,
        "frequency": 5180,
        "frequency_offset": 0,
        "txpower": 23,
        "txpower_offset": 0,
        "quality_max": 70,
        "noise": -92,
        "encryption": {
                "enabled": true,
                "wpa": [
                        3
                ],
                "authentication": [
                        "sae"
                ],
                "ciphers": [
                        "ccmp"
                ]
        },
        "htmodes": [
                "HT20",
                "HT40",
                "VHT20",
                "VHT40",
                "VHT80",
                "VHT160",
                "HE20",
                "HE40",
                "HE80",
                "HE160"
        ],
        "hwmodes": [
                "n",
                "ac",
                "ax"
        ],
        "hwmodes_text": "ac/ax/n",
        "hwmode": "n",
        "htmode": "HT40",
        "hardware": {
                "id": [
                        0,
                        0,
                        0,
                        0
                ],
                "name": "MediaTek MT7981"
        }
}

Is this an expected result ? I was able to have a dump AP running from that radio with correct wifi 6 implementation, could it be that wpad-openssl only support up to wifi 4 ?

Let me know if you need more info to help me figure this out! I would be grateful to know if it's possible to have my mesh running using wifi 6.

Yes it is.
But be aware:

  1. The iwinfo utility has bugs that for some wireless drivers, make it miss-report mesh interfaces.
  2. Luci, and for that matter UCI cannot set numerous required mesh parameters (you have to use the iw utulity or a dedicated package like mesh11sd to set these).

However, most likely, in your case it will be working in wifi6 mode.
You can check using the iw utility to get a station dump, while doing a data transfer eg streaming a video over the backhaul.
Do:
iw dev mesh0 station dump
while the video is playing.

Look for tx and rx bitrates in the output.
For an HE40 config, expect to see bitrates well over 300Mb/s for the direction of flow.

1 Like

Thanks for your reply!

I did some tests using iperf3 between two clients connected via Ethernet to two nodes (using iperf3 -c <ip> -b 400m -u -t 30)

On the receiving node I got the following output before the iperf test started:

Station 94:83:c4:a5:93:e1 (on mesh0)
        inactive time:  30 ms
        rx bytes:       1271568927
        rx packets:     960146
        tx bytes:       654787345
        tx packets:     495660
        tx retries:     191371
        tx failed:      191378
        rx drop misc:   1415
        signal:         -61 [-64, -64] dBm
        signal avg:     -62 [-64, -65] dBm
        Toffset:        9319891572 us
        tx bitrate:     413.0 MBit/s 40MHz HE-MCS 8 HE-NSS 2 HE-GI 0 HE-DCM 0
        tx duration:    43246678 us
        rx bitrate:     573.5 MBit/s 40MHz HE-MCS 11 HE-NSS 2 HE-GI 0 HE-DCM 0
        rx duration:    40012404 us
        last ack signal:-60 dBm
        avg ack signal: -60 dBm
        airtime weight: 256
        mesh llid:      0
        mesh plid:      0
        mesh plink:     ESTAB
        mesh airtime link metric: 19
        mesh connected to gate: no
        mesh connected to auth server:  no
        mesh local PS mode:     ACTIVE
        mesh peer PS mode:      ACTIVE
        mesh non-peer PS mode:  ACTIVE
        authorized:     yes
        authenticated:  yes
        associated:     yes
        preamble:       long
        WMM/WME:        yes
        MFP:            yes
        TDLS peer:      no
        DTIM period:    2
        beacon interval:100
        connected time: 4267 seconds
        associated at [boottime]:       3281.339s
        associated at:  1748595948269 ms
        current time:   1748600215401 ms

And this result while the test was running:

Station 94:83:c4:a5:93:e1 (on mesh0)
        inactive time:  0 ms
        rx bytes:       1713628279
        rx packets:     1247223
        tx bytes:       654870917
        tx packets:     495931
        tx retries:     191484
        tx failed:      191491
        rx drop misc:   1427
        signal:         -60 [-62, -64] dBm
        signal avg:     -60 [-62, -64] dBm
        Toffset:        9319891531 us
        tx bitrate:     458.8 MBit/s 40MHz HE-MCS 9 HE-NSS 2 HE-GI 0 HE-DCM 0
        tx duration:    43293400 us
        rx bitrate:     206.4 MBit/s 40MHz HE-MCS 4 HE-NSS 2 HE-GI 0 HE-DCM 0
        rx duration:    56134462 us
        last ack signal:-61 dBm
        avg ack signal: -60 dBm
        airtime weight: 256
        mesh llid:      0
        mesh plid:      0
        mesh plink:     ESTAB
        mesh airtime link metric: 19
        mesh connected to gate: no
        mesh connected to auth server:  no
        mesh local PS mode:     ACTIVE
        mesh peer PS mode:      ACTIVE
        mesh non-peer PS mode:  ACTIVE
        authorized:     yes
        authenticated:  yes
        associated:     yes
        preamble:       long
        WMM/WME:        yes
        MFP:            yes
        TDLS peer:      no
        DTIM period:    2
        beacon interval:100
        connected time: 4313 seconds
        associated at [boottime]:       3281.339s
        associated at:  1748595948269 ms
        current time:   1748600261772 ms

It's a bit strange because rx bitrate seems to go down during the test..

That's interesting to know, thanks!

Do you know what required mesh parameter can't be set with uci ? Because I automated my setup via a script that uses uci commands to setup the mesh and it has been working so far.
This is my current setup config script for the mesh nodes:

uci set wireless.wifinet1=wifi-iface
uci set wireless.wifinet1.device='radio1'
uci set wireless.wifinet1.mode='mesh'
uci set wireless.wifinet1.encryption='sae'
uci set wireless.wifinet1.mesh_id='<redacted>'
uci set wireless.wifinet1.mesh_fwding='1'
uci set wireless.wifinet1.mesh_rssi_threshold='0'
uci set wireless.wifinet1.ifname='mesh0'
uci set wireless.wifinet1.key='<redacted>'
uci set wireless.wifinet1.network='lan'
uci set wireless.radio1.disabled='0'
uci set wireless.radio1.country='US'
uci set wireless.radio1.txpower='23'
uci set wireless.radio1.htmode='HE40'
uci set wireless.radio1.channel='36'
uci set wireless.radio1.cell_density='0'

Thanks for your help :slight_smile:

1 Like

If you only have two nodes, you are good to go.
The most important mesh parameters when you have more than 2 nodes are those to do with the HWMP mac-routing that is built into the kernel. Most of these can only be set once the mesh interface is up. But of course, the uci config is what is used to set up the interface before bringing it up - see the problem?

You can see a full list of mesh parameters here:
Mesh Parameter Options

Anyway, the confirmation of AX mode is in your station dump output:

ie:
413.0 MBit/s 40MHz HE-MCS 8 HE-NSS 2 HE-GI 0 HE-DCM 0
confirming you are in HE40 (AX) mode.

Not really. The station dump output shows the average bitrates over a short time window, at the moment the output was produced. It is not a not a fixed clock rate.

1 Like

Okay thanks! Good to know that the mesh is running in AX mode.

I did the test using 2 nodes but my full setup will have up to 10-15 nodes. I have been doing tests with 3 nodes and it seemed to work as well without any extra configuration.

I don't have the mesh11sd package installed in my config for now. Do I need to install it to set specific parameters relative to HWMP mac-routing or are the defaults settings good enough for most usage ?

The default is for HWMP turned off. Typically 3 nodes in default will appear to work (if you are lucky), but only 1 link will be active at a time.
eg nodes 1, 2 and 3:

  • testing from 2 to 1 looks ok
  • testing from 3 to 1 looks ok as long as 3 can see 1
  • Testing from 2 to 1 and 3 to 1 at the same time gives dropouts and/or delays or maybe even failure.
  • Multi hop modes become very unstable or fail entirely eg 3 to 1 via 2

For 10 to 15 nodes you really need HWMP in full dynamic mac-routing mode or go for something like BATMAN that uses its own ipv6 backhaul routing method.

My biassed recommendation would be to go for mesh11sd.
BUT you cannot just install it as it does dynamic configuration that is totally incompatible with Luci/UCI static configuration.

This thread is not the place for that discussion as it is a bit off topic. You would be better off opening a Github Issue here:

Mesh11sd Support

Failing that, a new thread on this forum.

1 Like

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.