This kernel module implements the Scalable Position-Based Multicast (SPBM) routing protocol. It internally uses 16 bit-coordinates for each dimension (x and y). To use it in combination with GPS, an additional daemon is needed to map the GPS coordinates to the internal virtual coordinates of the module. An experimental daemon will be published shortly on this page.
Download
The following file contains the source code to be compiled with kernel 2.4:
Installation
First, untar the sources:
tar xjvf spbm-0.1alpha.tar.bz2
Next, change into the newly generated directory and run make:
cd spbm-0.1alpha
make
And finally, as root:
make install
This will copy the module into the modules' directory.
Static Configuration
There are some "static" configuration parameters you can change before compiling the module. They are defined in config.h. The values are in detail:
- Grid depth (GRIDDEPTH)
The number of the aggregation levels in the network.
- Update interval (UPDATETIME)
The basic interval between two consecutive update messages on the lowest level.
- Update interval jitter (UPDATEJITTER)
The basic time span for the exponential backoff part of the update timers.
- Beacon interval (BEACONTIME)
The interval between two consecutive beacons.
- Suppression distance (MAXDISTSQUARE)
Packets from nodes located more than the given distance away are dropped to simulate larger ad-hoc networks in a smaller area or to stabilize neighborship information by dropping "weak" beacons.
- Group address offset (GROUPOFFSET)
Defines the base address for SPBM multicast group addresses. Default is 10.255.255.0.
Usage
To load the module, issue the following command:
modprobe spbm
Now, you should have a new directory in /proc:
/proc/spbm:
-rw-r--r-- 1 root root 0 Dec 15 14:23 join
-rw-r--r-- 1 root root 0 Dec 15 14:23 leave
-r--r--r-- 1 root root 0 Dec 15 14:23 membertable
-r--r--r-- 1 root root 0 Dec 15 14:23 neighbours
-rw-r--r-- 1 root root 0 Dec 15 14:23 pos
To set your current position to 1234/5678 (hexadecimal values, please note the leading 0):
echo "01234 05678" > /proc/spbm/pos
And to check it, you can use:
cat /proc/spbm/pos
Dynamic Configuration
Besides the position, you can also control the subscribed groups via the proc interface. To join or leave a certain group, write the group number in ASCII to the correpsonding file. E.g.,
echo "25" > /proc/spbm/join
Additionally, you can get a list of the currently subscribed groups by issueing:
cat /proc/spbm/join
For debugging purposes, the protocols' internal tables are available via two additional files: one for the member table and one for the neighbor table.
cat /proc/spbm/membertable
cat /proc/spbm/neighbours
Acknowledgments
Many thanks to Thomas Butter who wrote this kernel module. Hold him responsible for the code ... ;-)
|