cozybit / wmediumd

mac80211_hwsim modifications and related stuff
14 stars 11 forks source link

This folder contains:

mac80211_hwsim/ -> Modified mac80211_hwsim module to support userspace frame tx. rawsocket/ -> Raw socket based ping-pong application to test stability and loss probability behaviour. wmediumd/ -> User space application to apply loss probability per link. wconfig/ -> Java based tool to create advanced config files for wmediumd. Dependencies:

[rawsocket] -> libpthread [wmediumd] -> libnl 2.0, libconfig [wconfig] -> Java JRE 6.0

Compilation of applications

Once all dependencies are satisfied, just execute make on the main folder, binaries and modules will be created on each folder.

Execution of applications

[mac80211_hwsim]

Modified mac80211_hwsim module starts in no wmediumd mode, so there is not loss probability applied to the tx frames, it just registers the custom generic netlink family, and waits until an user application is registered. When an application registers, all transmited frames will be handled by this user space application. When the registered application stops listening to the kernel module, the module will return to NO wmediumd mode automatically, and will not apply any loss probability.

[wmediumd]

The user application is responsible for handling the frames sent from the kernel space, this sample application creates a simple probability matrix with the same probability values per link.

It will create a new FILE with the a sample configuration schema.

Once launch it will show all the probability matrix and the transmission counters.

NOTE: It is necessary to provide a configuration file to start the simulation. Inside wmediumd/cfg-examples you can find multiple config file samples.

[rawsocket]

This a very simple Raw socket ping-pong application, developed to test the stability and behaviour of the mac80211_hwsim module. The application is composed from a server and a client. Server shows a counter of answered packets and clients shows sent and received back.

CLIENT  ===========================================   SERVER

FRAME sent ---------------- wmediumd ------------->   FRAME rcvd 
                              +
FRAME rcvd <--------------- wmediumd---------------   FRAME sent (ACK)

SERVER

$ cd rawsocket $ sudo ./server [listening interface]

CLIENT

$ cd rawsocket $ sudo ./client [listening interface] [destination interface] [msec between frames]

[wconfig]

This is an extra tool based on JUNG framework to support the generation of advanced topologies for wireless medium daemon.

To launch the application:

$ cd wconfig $ java - jar wconfig.jar

Enjoy!