Skip to content

MirrorZ/nodeman

Repository files navigation

Nodeman - Nodemanager for the WMN
Go with the flow!
(An SDN Approach using Click Modular Router)

Nodeman is an attempt to utilize all the available bandwidth of a Wireless Mesh Network using open80211s. Moving away from the conventional single association with a gateway, Nodeman running on each node knows all the mesh gates present in the network and effectively uses all of them. It uses the fact that applications generally open multiple sockets for data transfer. The traffic is split on a per-flow basis and routed to a suitable gateway known to the mesh node. This approach makes it possible to utilize all the internet access gateways present in the network thereby resulting in increased network throughput.

Nodeman makes use of the Click modular router for packet processing in userspace. It includes the experiments carried out in controlled environments to establish the proof of concept. Linear gains are visible till the link capacity becomes a bottleneck.

************************************************************************

Grab the click modified copy : https://www.github.com/scar1337/click
(You might wanna check out the notes section at the end of the document if you have never set up a mesh before)

************************************************************************
FOR BUILDING CLICK

$ git clone https://www.github.com/scar1337/click scar-click
$ cd scar-click
$ ./configure --enable-all-elements --disable-linuxmodule
$ make
$ make elemlist
# make install

This will install click with the required GatewaySelector element and let you use node click scripts.

# -> Superuser priveleges (use sudo or su)
$ -> Normal user.

*************************************************************************
To see this in action :
*************************************************************************
FOR SETTING UP A GATE : 
-----------------------
(# -> Requires super user privelege)

1) Clear your IP route table :
# ip route flush table 0

2)Run setup_gate.sh with the required CL args : 

# ./setup_gate wlanX meshY ethZ br0 GW_IP

wlanX is the real interface with mesh support.
meshY is the virtual mesh interface you want to create.
ethZ/usbZ is the real interface you have internet access on.
br0 is the name of the bridge you want to create.
GW_IP is the IP address of the router which provides internet access (Example : 192.168.42.1)

This sets up the required interfaces and starts up the click script appropriately.

3) Add a default gateway via 10.0.0.1
# ip route add default via 10.0.0.1

This is so that the kernel on the gate knows where to send out requests/packets.
This sets up a gate which can service internet related requests for a node on the mesh network.
You can check the working of the bridge by pinging an outside server such as open80211s.org

**********************FOR GATE BROADCASTING********************************

Once the gate is set up, you will also want to broadcast it's presence using the included mac-ping.sh
This calls mac-ping.click and broadcasts the IP address mentioned in hex in the last 4 bytes.

You need to modify this line : 

ff:ff:ff:ff:ff:ff e0:2a:82:43:5b:e2 07 00 c0 a8 2a 05

And modify the last 4 bytes to reflect the IP address (in HEX) of the router on your network.
c0 -> 192, a8 -> 168, 2a -> 42, 05 -> 5

This will enable the nodes on the network to add this gate to their list of gates and use it.
************************************************************************************************

FOR SETTING UP A NON-GATE NODE:
------------------------------

1) Clear your IP route table :
# ip route flush table 0

2)Run setup_node.sh with the required CL args : 

# ./setup_node wlanX meshY mesh_ipv4

wlanX is the real interface with mesh support.
meshY is the virtual mesh interface you want to create.
mesh_ipv4 is the IPv4 IP address desired for meshY interface.

Please note, more arguments can be supplied but are not usually required.
Please check setup_node.sh file for more details and changing variable values.

This sets up the required interfaces and starts up the node click script.

3) Add a default gateway via 10.0.0.1
# ip route add default via 10.0.0.1

Now the node is set up.
If a gate is also present on the network, then you can ping outside servers.

You can check if your mesh interface is properly up by issuing : 
$ iw dev meshY station dump

This will give you a list of all the nodes on the mesh.
************************************************************************

ABOUT CLICK FILES: 

node_gatewayselector.click -> Runs on a node and handles all the activites of that node. Also listens for any upcoming broadcasts from the gates to update the gate table accordingly. It also decides which gate to route the outbound traffic to using our QoS processing , which just does it on an even - odd source port basis for now.

bridge.click - Runs on a gate which is bridged to an external gateway and routes the traffic to external worlds for the internal network. If any NAT is required, this seems like a place to do it. 

mac-ping.click - It broadcasts L2 packets and usually is meant to run on the gate. The gate's IP address is embedded in the packet. Any additional metrics that are required to be sent can be just appended to the end of the generated packet. 

NOTES:
-----

The default MESH ID for mesh network is openmesh. In case you want to change that , make changes to setup_{node,gate}.sh files.

Network manager tries to put interfaces in managed mode, so it is of utmost importance that it be disabled/removed.
An alternative to networkmanager is wicd (pronounced "wicked")

In case of any issues/suggestions/feedback, please do write to us at scar.nodeman@gmail.com or mail any of the AUTHORS.
Don't hesitate to open tickets/add issues on the git repos as well.

This is a work under heavy progress! Your suggestions are welcome.

AUTHORS
Abhijit Gadgil <gabhijit@gmail.com>
Ashish Gupta <ashmew2@gmail.com>
Chandrika Parimoo <chandrika3437@gmail.com>
Rutuja Shah <rutu.shah.26@gmail.com>
Sudipto Chatterjee <sudip1401@gmail.com>

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •