OpenWrt mesh routers problems (Encryption, MAC address & Hostname)

No. The "protocol" used by the mesh to dynamically autoconfigure its mac-routing needs to be turned on. This, by default, cannot be done from the /etc/config/wireless file. It can be done manually once the mesh interface is "up", but will turn off again if the interface goes down or the router is rebooted.
The mesh11sd daemon checks/sets/resets the mesh parameters required for the mac-routing to work correctly, always running in the background.

802.11s uses a MESH topology. It is neither Tree nor Star but can sometimes look like both.

2 Likes

The hostname(s) of other meshnodes is/are determined by doing a reverse DNS lookup using the ip address of the remote meshnode. To get the remote meshnode ip, the ip address has to be looked up from the arp table.
OpenWrt uses Dnsmasq dhcp to populate the local .lan domain.
However, in your case, you have static ip addresses, so the reverse lookup will fail.

1 Like

Oh.... I see, so to solve this problem, do I need to turn on my mesh Node router to be DHCP client,
and the Main mesh router to be the DHCP server?

Currently, both my Main and the Node mesh routers are not running DHCP server nor DHCP client,
both are pure dump APs.

However, the Main mesh router is connected to my pfSense firewall and it is running DHCP server.

So if my mobile phone is connected to the internet via the dump APs. The firewall will lease out the IP address to my phone.

Alright, that is a better description than the previous one by far. :grinning:
So since mesh11sd is running in the background, just want to confirm there is no configuration to be done, right?

Yes. I am not familiar with pfSense, but you should be able to specify static leases for the meshnodes so they always get the same ip address.

Not necessarily. pfSense should be able to populate local DNS in the same way as OpenWrt can.
Alternatively, adding the meshnodes to the pfSense hosts file might work.

Unless you want a second level of nat routing, all of the meshnodes should be configured in exactly the same way (given that they are all the same hardware) and will be completely interchangeable. ie There is no such thing as "Main" and "Node" "routers".
One of them will have an ethernet connection to the pfSense so it can provide an Internet feed to the mesh network. None of the meshnodes will be doing any ip routing, and none will be running dhcp or dns. They should all be dhcp clients unless you want the complexity of manually maintaining ip address allocations.

I think you mean "Dumb APs". This is a very unfortunate "dumbed-down" description that is very misleading. The proper technical term is a "Wireless Access Point" (WAP).
A WAP is anything but dumb. It is true that it does not do any ip routing, but it does do many other non-trivial things. A typical WAP provides a wireless SSID for client stations to connect to. It will also provide an upstream connection, usually an Internet feed.
WAPs work entirely at network layer 2, passing packets backwards and forwards. Layer 3 ip is only needed for management purposes.

The upstream feed is typically an ethernet connection to an ISP router (or an intermediate firewall - in your case pfSense).

Here you have that upstream connection being provided by the mesh network link for remote meshnodes and by ethernet on the meshnode closest to the pfSense box.

A good way to visualise a mesh network is to consider it as a virtual unmanaged ethernet switch where each meshnode is a port of that virtual switch.

1 Like

That is correct. Mesh11sd autonomously adds required parameters. For advanced applications, additional parameters can be added to the config but are not required here.

You can check that mesh11sd is working by showing ip link when it is running and I will point out the differences.

Also show the output of mesh11sd status, and I will explain the output.

1 Like

Can someone explain the steps of adding another mesh link............

I have 3 routers, B has access to the internet, while routers A & C are mesh node routers.

Let's say router B has got a mesh link to C

How to create another mesh link from A to B?

That's the whole point of a mesh-- automatic link setup. When any number of nodes are joined to the same mesh, they all have a path to each other. The mesh executive will determine whether packets can be sent directly or need to relay through one or more intermediates.

If A and C are in radio range of each other, it should send directly, otherwise it will relay through B. This is automatic and invisible to the upper layers of the network.

2 Likes

Cool thanks, now all my 3 AX X5000R routers can see each other.

Ok below is the output:

root@OpenWrtX5000RmeshController180:~# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1504 qdisc fq_codel state UP qlen 1000
    link/ether 5c:92:5e:37:e8:72 brd ff:ff:ff:ff:ff:ff
3: lan1@eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master br-lan state LOWERLAYERDOWN qlen 1000
    link/ether 5c:92:5e:37:e8:72 brd ff:ff:ff:ff:ff:ff
4: lan2@eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master br-lan state LOWERLAYERDOWN qlen 1000
    link/ether 5c:92:5e:37:e8:72 brd ff:ff:ff:ff:ff:ff
5: lan3@eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master br-lan state LOWERLAYERDOWN qlen 1000
    link/ether 5c:92:5e:37:e8:72 brd ff:ff:ff:ff:ff:ff
6: lan4@eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master br-lan state LOWERLAYERDOWN qlen 1000
    link/ether 5c:92:5e:37:e8:72 brd ff:ff:ff:ff:ff:ff
7: wan@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-lan state UP qlen 1000
    link/ether 5c:92:5e:37:e8:71 brd ff:ff:ff:ff:ff:ff
10: br-lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
    link/ether 5c:92:5e:37:e8:72 brd ff:ff:ff:ff:ff:ff
17: wlan1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-lan state UP qlen 1000
    link/ether 5c:92:5e:37:e8:74 brd ff:ff:ff:ff:ff:ff
20: mesh0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-lan state UP qlen 1000
    link/ether 5c:92:5e:37:e8:70 brd ff:ff:ff:ff:ff:ff
root@OpenWrtX5000RmeshController180:~#

This is result output:

root@OpenWrtX5000RmeshController180:~# mesh11sd status
{
  "setup":{
    "version":"1.0.0",
    "enabled":"1",
    "checkinterval":"10",
    "interface_timeout":"10",
    "debuglevel":"1"
  }
  "interfaces":{
    "mesh0":{
      "mesh_retry_timeout":"100",
      "mesh_confirm_timeout":"100",
      "mesh_holding_timeout":"100",
      "mesh_max_peer_links":"150",
      "mesh_max_retries":"3",
      "mesh_ttl":"31",
      "mesh_element_ttl":"31",
      "mesh_auto_open_plinks":"0",
      "mesh_hwmp_max_preq_retries":"4",
      "mesh_path_refresh_time":"1000",
      "mesh_min_discovery_timeout":"100",
      "mesh_hwmp_active_path_timeout":"5000",
      "mesh_hwmp_preq_min_interval":"10",
      "mesh_hwmp_net_diameter_traversal_time":"50",
      "mesh_hwmp_rootmode":"3",
      "mesh_hwmp_rann_interval":"5000",
      "mesh_gate_announcements":"1",
      "mesh_fwding":"1",
      "mesh_sync_offset_max_neighor":"50",
      "mesh_rssi_threshold":"-80",
      "mesh_hwmp_active_path_to_root_timeout":"6000",
      "mesh_hwmp_root_interval":"5000",
      "mesh_hwmp_confirmation_interval":"2000",
      "mesh_power_mode":"active",
      "mesh_awake_window":"10",
      "mesh_plink_timeout":"0",
      "mesh_connected_to_gate":"0",
      "mesh_nolearn":"0",
      "mesh_connected_to_as":"0",
      "mesh_id":"Mesh2.4GHz",
      "device":"radio0",
      "channel":"1",
      "active_peers":"4"
    }
  }
}
root@OpenWrtX5000RmeshController180:~# clear
root@OpenWrtX5000RmeshController180:~# mesh11sd status
{
  "setup":{
    "version":"1.0.0",
    "enabled":"1",
    "checkinterval":"10",
    "interface_timeout":"10",
    "debuglevel":"1"
  }
  "interfaces":{
    "mesh0":{
      "mesh_retry_timeout":"100",
      "mesh_confirm_timeout":"100",
      "mesh_holding_timeout":"100",
      "mesh_max_peer_links":"150",
      "mesh_max_retries":"3",
      "mesh_ttl":"31",
      "mesh_element_ttl":"31",
      "mesh_auto_open_plinks":"0",
      "mesh_hwmp_max_preq_retries":"4",
      "mesh_path_refresh_time":"1000",
      "mesh_min_discovery_timeout":"100",
      "mesh_hwmp_active_path_timeout":"5000",
      "mesh_hwmp_preq_min_interval":"10",
      "mesh_hwmp_net_diameter_traversal_time":"50",
      "mesh_hwmp_rootmode":"3",
      "mesh_hwmp_rann_interval":"5000",
      "mesh_gate_announcements":"1",
      "mesh_fwding":"1",
      "mesh_sync_offset_max_neighor":"50",
      "mesh_rssi_threshold":"-80",
      "mesh_hwmp_active_path_to_root_timeout":"6000",
      "mesh_hwmp_root_interval":"5000",
      "mesh_hwmp_confirmation_interval":"2000",
      "mesh_power_mode":"active",
      "mesh_awake_window":"10",
      "mesh_plink_timeout":"0",
      "mesh_connected_to_gate":"0",
      "mesh_nolearn":"0",
      "mesh_connected_to_as":"0",
      "mesh_id":"Mesh2.4GHz",
      "device":"radio0",
      "channel":"1",
      "active_peers":"4"
    }
  }
}
root@OpenWrtX5000RmeshController180:~#

From ip link, this shows you now have an interface named mesh0 - this is an indication that mesh11sd is working.

The mesh11sd status is showing the current parameters, particularly mesh_fwding, mesh_gate_announcements, mesh_hwmp_rootmode and mesh_rssi_threshold have been set correctly.

It is a little odd that active_peers is showing "4". This should indicate that there are 4 meshnodes in the network, but don't you only have 3? Perhaps it is counting incorrectly...

1 Like

I switched on the power of all my 3 AX X5000R routers this morning, and run the command:
mesh11sd status again in SSH, now it is reporting the correct status: "active_peers":"3"
It might be a glitch in the router or something to report active peers = 4.

1 Like

I want to do a quick experiment here.......

I want to see the effect of having the mesh11sd package removed from all my mesh AX routers.

And see what happens if I switch off the power of the router 1 by 1, to simulate the interface is down.

Can this experiment shows without the mesh11sd package install, auto-configuration will not work?
:roll_eyes:

Just wishful thinking, is there a way where I can see a graphical map of my mesh topology? :grinning:

Just wondering if I can make OpenWrt wireless overview to show the hostname of all the connecting
mesh nodes.

I have configured each 3 mesh router to use Protocol = DHCP client

I have configured my pfSense DHCP to give out static IPs for the 3 routers

I rebooted the router and the hostname still showing ? under Host Is there a way to fix this?

Do I need to manually key in the hostname, in the host file within OpenWrt?

Well, :rofl:, if your mesh devices have a usb port you could plug a GPS adaptor into each one and somehow read the geographic locations and superimpose them onto a Google Maps page....
:smiley:

1 Like

It was probably a "ghost" node. Ghost nodes get into the mac-routing table if one or more meshnode does not have the correct parameters set. This can replicate to all other nodes and will persist for some time before timing out.
If mesh11sd is running on all nodes this should not happen.

1 Like

Ok, here is what to do:

  1. Disable mesh11sd on all meshnodes
  2. Reboot them all

If all the nodes are within close proximity it might be that it will still work, at least with any two nodes. It will most likely be a bit hit and miss, for example working for all 3 for a few hours, then one node will drop out and a reboot will be the only way to get it going again (consistent results from past research on various different hardware sets)

On each node do:
service mesh11sd disable
followed by:
service mesh11sd stop

When all are done, reboot them all and test.

To re-enable do:
service mesh11sd enable
Followed by:
service mesh11sd start or do a reboot

This is an issue with pfSense. Does it populate the local DNS domain with DHCP client host names?
You can find out by pinging a node by name. I very much suspect it does not, at least by default.
You could, as I suggested earlier, manually add the meshnodes into the pfSense hosts file.....

1 Like

Haha, I told you just a wishful thinking :smile: