Archiv:OLSRd/Client Roaming Plugin
Development seems to have stopped in 2010: https://github.com/ralisi/olsrd_cl_roam |
About the plugin
This plugin will permit mobile Clients where no software can be installed to be fully intergrated into the wireless meshed network, and does only connect to a network in Accespoint-Mode. The Mesh-Node will do all the work for the client.
How does it work?
The technique the plugin uses to archive this will be described by an example:
Clinet: a laptop not running olsrd, a smartphone, ....
Node: Wireless router in the Meshed network
Every Node(which offers roaming and client access) needs two wireless interfaces(which can be archieved with atheros-wifi). One of these is run in Master(Accespoint)-Mode and has a given ESSID, for example "freiroam". Every Node uses the same IP-adress 10.0.0.1 and a changed MAC-adress 02:44:44:44:44 on it. This does not cause any collisions because each Node is an individual cell. The Node offers IP-adresses via DHCP and 10.0.0.1 is the given default route. The second wireless interface (or VAP) is run in ad-hoc mode and is partiticpating in the wireless meshed network and has an IP adress in it.
Packets from Clients will be forwarded to the Mesh but will not be NATted, so other Nodes will see the given IP. The Node will announce the clients IP-adress as an HNA, so other Nodes in the network will know how to reach the client.
If a client changes from one cell to another, he will not realize it, as he can still reach the standard-gateway on the same IP and MAC (but actually is another node). The Node will then start to newly announce this Clinet via HNA.
How to use the plugin
You need two wifi-interfaces, called ath0 and ath1. ath1 is used for your normal meshing-setup. ath0 is your interface for the Accesspoint. Make sure every Node has the same IP and mac-adress on this interface.
Make sure, dnsmasq dhcp-leasefile is located at /var/dhcp.leases and is accessible via http://IPADRESS/dhcp.leases. dnsmasq needs to give leases on ath0.
Do not add ath0 as an interface in olsrd.conf, but add a line like this:
LoadPlugin "/root/olsrd_cl_roam.so.0.1" { }
Make sure routing between ath0 and ath1 is possible (without nat!) and routing between ath0 and eth0 is natted.