M-Channel is a Topology-Aware Group Communication Middleware for MANETs based on the JGroups Tookit. We have modified the JGroups protocol stack to incorporate two protocols: jOLSR and OMOLSR. jOLSR is a Java implementation of the MANET OLSR unicast protocol using UDP. On top of it, we have developed an overlay Multicast protocol (OMOLSR) that directly benefits from the jOLSR protocol to improve communication efficiency.
In our middleware, group membership is obtained from the overlay multicast protocol (OMOLSR), failure detection is received from the jOLSR protocol, and our modified flow control protocol benefits from jOLSR topology information.
The idea is that the developer uses this group communication toolkit for developing collaborative applications over MANETs. Using our communication toolkit, the developer can spend their effort mainly in their application logic because the transport layer and the related services are provided by MChannel. Furthermore, the developer can design adaptive MANET-aware applications using our MChannel's Network Topology API.
Now we are going to show an example of the capabilities of this toolkit!
In our project there are some sample applications which have been used to test the toolkit in real/emulated environments. They are really accurate for this section!
Of course, starting from the scratch with a new technology or tool is hard. For this reason we are going to provide easy instructions about how to execute an exemple in emulation mode:
- First of all,
Deprecated: Non-static method Router::url() should not be called statically, assuming $this from incompatible context in /var/www/mchannel/cake/libs/view/helper.php on line 178
Deprecated: Non-static method Router::getInstance() should not be called statically, assuming $this from incompatible context in /var/www/mchannel/cake/libs/router.php on line 752
Deprecated: Non-static method Inflector::underscore() should not be called statically, assuming $this from incompatible context in /var/www/mchannel/cake/libs/router.php on line 920
download the Binaries of The Project (just for follow the example below).
- Secondly, unzip the downloaded file. You will find 3 elements here: the MChannel.jar (the project library), the configuration directory ("conf") and the resources directory ("resources"). The project is configured by default for execute the example below.
- In third place, we need execute the AppTest application. For doing that only write the following line: java -Djava.net.preferIPv4Stack=true -jar MChannel.jar . If you want to test the sending of big files you will need more heap space in the JVM: only add before the "-jar" command -Xmx128m (for example).
FINISH! ENJOY THE TEST!!
Once developed the application as a MChannel client (in this case our AppTest), we start it in Emulation Mode. In Emulation Mode we can use files (pajek files) to define a specific topology and see the behaviour of our application in a network. In this example we are using a 4-nodes in-line topology.
The following features of the application are noticeable:
- The MChannel client manages the topology events that come periodically from the layers below, to show a (nice) graph that represents the underlying topology. (You can use it too!!)
- The MChannel client has access to the IP Addresses of all the group members and you can send messages to any of them.
- Sending a message to the Multicast Address (225.222.222.222) your message will be sent to all the members in the group.
- Each member can belong to N groups mantaining all the mentioned features in each group.
As the screenshot shows, Node 4 (192.168.145.4) has sent a text message to Node 1 (192.168.145.1). The most important to observe here is that the message has arrived from 3-hops far, because nodes 1 and 4 are connected by the nodes 2 and 3.
In this image we can see the sending of a multicast message through the network. The Node 1 has sent "Hello Group 225.222.222.222!!" funny message and all members of this goup have received it.
If the emulated example is not convincing enough for you, we are going to show a real test bed in a MANET with more than 30 members!. This test was done on May 2008 and it was a success. Now, with some months more of working to improve the toolkit we can say that is prepared to be a real and useful development tool.
Ok, in our opinion you are prepared to start a REAL TEST!!. We are going to provide you the three steps to start the REAL FUN:
- First Step: download the Binaries of The Project for each computer in your real network.
- Second Step: go to the "conf" directory and change the value of the property EMULATED to FALSE in the omolsr.properties configuration file of each computer.
- Third Step:Create an Ad-Hoc Network among the computers with the same SSID (POPEYE in the screenshot) and assing to each of them a LAN IP, for exemple 192.168.1.2, 192.168.1.3,... Be careful with the firewalls!
This is all the configuration you need to starting the AppTest application in a real environment. You only need to execute the same command as the emmulated example in each computer and enjoy a REAL TEST!.