wikiroute

networking recipes

User Tools

Site Tools


wireless_mesh

Wireless Mesh Network with Small and Low Cost Devices

The goal of this project is to implement a wireless mesh network that provides connectivity and multimedia services in a geographic area such as a small campus.

Mesh networking performance is directly related to the number of available radio channels. Particularly, a mesh node with one wireless LAN chipset is able to transmit and receive on a single channel. As a result, a wireless mesh network rarely can fully exploit the aggregate bandwidth available in the radio spectrum provisioned by the standards. For a scientific explanation of this problem, please refer to this research team page.

In order to overcome this problem, we implement in this project low cost multi-channel mesh devices consisting of a wireless router with an additional WLAN adapter. A typical equipment list that can be used for implementing the project is presented in the following:

Make sure you have the attitude adjustment release of OpenWRT on your TP-LINK MR3020. For more information on how to flash the firmware on your router and take basic control, please refer to this article.

Start by updating the package list and installing the necessary packages for the USB WLAN adapter.

root@MeshNode:~# opkg update
root@MeshNode:~# opkg install kmod-rt2800-lib kmod-rt2800-usb kmod-rt2x00-lib kmod-rt2x00-usb
Figure 1. MR3020 with WLAN adapter

Plug the WLAN adapter on the USB port of your routeur and verify that is detected:

root@MeshNode:~# wifi detect
config wifi-device  radio2
        option type     mac80211
        option channel  11
        option macaddr  00:e0:4c:81:88:8a
        option hwmode   11ng
        option htmode   HT20
        list ht_capab   GF
        list ht_capab   SHORT-GI-20
        list ht_capab   SHORT-GI-40
        list ht_capab   RX-STBC1
        # REMOVE THIS LINE TO ENABLE WIFI:
        option disabled 1
 
config wifi-iface
        option device   radio2
        option network  lan
        option mode     ap
        option ssid     OpenWrt
        option encryption none

Now, copy the detected WiFi modules into the wireless configuration of your MR3020.

root@MeshNode:~# wifi detect > /etc/config/wireless    

Your wireless configuration file should be similar to the following:

/etc/config/wireless
config wifi-device  radio0
        option type     mac80211
        option channel  11
        option macaddr  f8:d1:11:bd:62:ce
        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
 
config wifi-iface        
        option device   radio0
        option network  lan   
        option mode     ap    
        option ssid     OpenWrt1
        option encryption none 
 
config wifi-device  radio1    
        option type     mac80211
        option channel  11      
        option macaddr  00:e0:4c:81:88:8a
        option hwmode   11ng             
        option htmode   HT20             
        list ht_capab   GF  
        list ht_capab   SHORT-GI-20
        list ht_capab   SHORT-GI-40
        list ht_capab   RX-STBC1   
 
config wifi-iface                         
        option device   radio1            
        option network  lan   
        option mode     ap    
        option ssid     OpenWrt2
        option encryption none 

Check that both antennas are working:

root@MeshNode:~# wifi up
Configuration file: /var/run/hostapd-phy0.conf
Using interface wlan0 with hwaddr f8:d1:11:bd:62:ce and ssid "OpenWrt1"
Configuration file: /var/run/hostapd-phy1.conf
Using interface wlan1 with hwaddr 00:e0:4c:81:88:8a and ssid "OpenWrt2"

The USB WLAN adapter does not seem to be supported in the latest Barrier Breaker relaease of OpenWRT. Additional packages are installed correctly but the adapter is not detected as a WLAN module.

Start by installing the B.A.T.M.A.N package on your router:

root@MeshNode:~# opkg install kmod-batman-adv

Modify your wireless configuration to activate a mesh interface in ad-hoc mode on radio0, an interface in AP mode on radio1, as in the following:

/etc/config/wireless
config wifi-device 'radio0'
      option type 'mac80211'
      option macaddr 'f8:d1:11:bd:62:ce'
      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 txpower '27'
      option country 'US'
      option channel '9'
 
config wifi-iface 'wmesh'
      option device 'radio0'  
        option mode 'adhoc'     
        option ssid 'mesh'                   
        option encryption 'none'                        
        option network 'mesh'                                 
        option ifname 'adhoc0'  
        option bssid 'f8:d1:11:bd:62:ce'
 
config wifi-device 'radio1'
      option type 'mac80211'
      option channel '5'
      option macaddr '00:e0:4c:81:88:8a'
      option hwmode '11ng'
      option htmode 'HT20'
      list ht_capab 'GF'
      list ht_capab 'SHORT-GI-20'
      list ht_capab 'SHORT-GI-40'
      list ht_capab 'RX-STBC1'
 
config wifi-iface
        option device 'radio1'
        option mode 'ap'      
        option ssid 'tinode1'
        option encryption 'none'
        option network 'tinet'

Due to the compatibility problems of the USB WLAN adapters, it is preferable to configure the corresponding radio interface in AP mode and leave the internal chipset of the MR3020 router in ad-hoc mode.

Use the following network configuration:

/etc/config/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 type 'bridge'
      option proto 'static'
      option ipaddr '192.168.1.66'
      option netmask '255.255.255.0'
      option gateway '192.168.1.1'
      list dns '192.168.1.1'
      list dns '8.8.8.8'
      option _orig_ifname 'eth0 wlan0 wlan1'
      option _orig_bridge 'true'
      option ifname 'eth0'
 
config interface 'mesh'
      option ifname 'adhoc0'
      option mtu '1528'
      option proto 'batadv'
      option mesh 'bat0'
 
config interface tinet
      option ifname   bat0
      option type     bridge
      option proto    static
      option ipaddr   11.11.11.1
      option netmask  255.255.255.0

Make sure that bat0 interface is declared in /etc/config/batman-adv as in the following:

/etc/config/batman-adv
config 'mesh' 'bat0'
      option 'interfaces' 'mesh'
      option 'aggregated_ogms'
      option 'ap_isolation'
      option 'bonding'
      option 'fragmentation'
      option 'gw_bandwidth'
      option 'gw_mode'
      option 'gw_sel_class'
      option 'log_level'
      option 'orig_interval'
      option 'vis_mode'
      option 'bridge_loop_avoidance'

Activate the DHCP server on you acces point interface tinet:

config dhcp
      option start '100'
      option leasetime '12h'
      option limit '150'
      option interface 'tinet'

Reboot your router, …

wireless_mesh.txt · Last modified: 2014/10/19 22:03 by samer