Mesh network with OpenWrt: clients can not ping each other

2.1k Views Asked by At

I am building a WiFi mesh network using Openwrt 802.11s and Tp-Link wr703n mini routers for my final year project. OLSR is running as a routing protocol. I am using Linux.

Total of 4 routers

    LAN     IP Adress       Mac     Mesh IP Adress
    Node A  192.168.10.1    AO      192.168.5.1
    Node B  192.168.11.1    6E      192.168.5.2
    Node C  192.168.12.1    42      192.168.5.3
    Node D  192.168.13.1    54      192.168.5.4

Above you can see the Lan IP address and the mesh addresses of each router. So client X is connected to Node A with a cable and a node is assigned the IP address 192.168.10.100. Client Y is connected to D and is assigned the IP addresses 192.168.13.50.

When I try to ping X from Y, I cannot get it to work. Also, I can't ping the mesh IP addresses as well from the operating system terminal. But when I am logged to the OpenWrt via terminal, I am able to ping any IP addresses within the mesh.

openwrt terminal pings mesh ip or the clients

I have captured some 802.11s beacon frame which I am adding to the post. If you look at the very end:

Capability: 0x01

...

.... 0... = Mesh Forwarding: No

...

I feel like that's the problem because I have a previous thesis paper and the student that did that project has that setting to be Yes, and it was working.

802.11s beacon frame

So, does anybody have any idea?


Additionally, I checked with Wireshark that OLSR is working perfectly and transmits hello messages, to messages, etc.

One of the routers config files -- OLSRD ----network---wireless (they are all the same except the IP addresses):

root@OpenWrt:/etc/config# cat wireless
config wifi-device 'radio0'
    option type 'mac80211'
    option macaddr '14:cf:92:3c:67:54'
    option hwmode '11ng'
    option htmode 'HT20'
    list ht_capab 'SHORT-GI-20'
    list ht_capab 'SHORT-GI-40'
    list ht_capab 'RX-STBC1'
    list ht_capab 'DSSS_CCK-40'
    option country 'IE'
    option channel '11'
    option txpower '7'
config wifi-iface
    option device 'radio0'
    option mesh_id 'mesh_OpenWrt'
    option mode 'mesh'
    option network 'mesh'
    option encryption 'none'

root@OpenWrt:/etc/config# cat network
config interface 'loopback'
    option ifname 'lo'
    option proto 'static'
    option ipaddr '127.0.0.1'
    option netmask '255.0.0.0'
config interface 'lan'
    option ifname 'eth0'
    option type 'bridge'
    option proto 'static'
    option netmask '255.255.255.0'
    option ipaddr '192.168.13.1'
    option gateway '192.168.5.4'
config interface 'mesh'
    option _orig_ifname 'wlan0'
    option _orig_bridge 'false'
    option proto 'static'
    option ipaddr '192.168.5.4'
    option netmask '255.255.255.0'

root@OpenWrt:/etc/config# cat olsrd
config olsrd
    option IpVersion '4'
    option FIBMetric 'flat'
    option LinkQualityLevel '2'
    option LinkQualityAlgorithm 'etx_ff'
    option OlsrPort '698'
    option Willingness '3'
    option NatThreshold '1.0'
config LoadPlugin
    option library 'olsrd_arprefresh.so.0.1'
config LoadPlugin
    option library 'olsrd_dyn_gw.so.0.5'
config LoadPlugin
    option library 'olsrd_httpinfo.so.0.1'
    option port '1978'
    list Net '0.0.0.0 0.0.0.0'
config LoadPlugin
    option library 'olsrd_nameservice.so.0.3'
config LoadPlugin
    option library 'olsrd_txtinfo.so.0.1'
    option accept '0.0.0.0'
config Interface
    option ignore '0'
    option Mode 'mesh'
    option interface 'mesh'
config InterfaceDefaults
    option Mode 'mesh' 
1

There are 1 best solutions below

0
On

I believe there will be one bridge interface, br-lan and two interfaces wlan0
, wlan1

In NODE A:

  1. Add these two interfaces wlan0, wlan1 into the bridge br-lan. wlan0<----[br-lan]--->wlan1 wlan0 make as a mesh point. wlan1 make as AP.

  2. Make the changes in /etc/cofig/network

option type 'bridge'

option proto 'static'

option netmask '255.255.255.0'

option ipaddr '192.168.13.1'

3. Run the dhcp server on br-lan of NodeA

  1. Make the changes in /etc/config/network of other Nodes same as below:

    option proto 'dhcp'

Now all NodeB,NodeC,NodeD are in same DHCP subnet IP series of NodeA. 192.168.13.x, DHCP clients are running on all NodeB/C/D and DHCP server is running NodeA.

It will resolve your end to end PING issue.

Another approach if you want to access the internet to all nodes. Setup should be like this:

ISP<----ETH--->wan[NodeA]-wlan0<---mesh-->wlan0-[NodeB]<---mesh-->wlan0-[NodeC]<---mesh--->wlan0-[NodeD]-wlan1 <---wifi--->sta/pc

All nodes will get DHCP IP, in every br-lan of nodes we need to run dhcp client.

NodeA

wan interface eth0.2

-Add all interface eth0.2, wlan0, wlan1 into bridge br-lan.
- Make the changes in /etc/config/network

option type 'bridge'

option proto 'dhcp' 



 # option netmask '255.255.255.0' /* comment this line */



# option ipaddr '192.168.13.1' /* comment this line */

Rest of the nodes will same as previous. This will resolve your end to end ping issue, even every nodes and STA has access to internet.