Implementation of the algorithms presented in
F. Kauer and V. Turau, Constructing Customized Multi-hop Topologies in Dense Wireless Network Testbeds in Ad-hoc, Mobile, and Wireless Networks, Lecture Notes in Computer Science 11104, presented at the 17th International Conference on Ad Hoc Networks and Wireless (AdHoc-Now), St Malo, France, September 2018. https://doi.org/10.1007/978-3-030-00247-3_28
Preprint available at https://arxiv.org/abs/1805.06661
-
Setup a working directory
mkdir ~/topologies/
-
Install the IoT-LAB CLI tools (also for Python 3)
https://github.com/iot-lab/iot-lab/wiki/CLI-Tools-Installation
cd cli-tools-[release_version] && sudo python3 setup.py install
-
Authenticate to the IoT-LAB locally and at the IoT-LAB site
iotlab-auth -u [your_username] ssh -tt [your_username]@lyon.iot-lab.info "iotlab-auth -u [your_username]"
-
Clone this repository and install the prerequisites
git clone https://github.com/koalo/iotlab_topologies ~/topologies/iotlab_topologies sudo apt-get install graphviz-dev python3-tk graphviz pip3 install pygraphviz networkx pulp numpy scipy matplotlib pandas
-
Run a channel evaluation measurement and wait until it is finished
cd ~/topologies/iotlab_topologies/measurement/ ./run.py lyon
-
Analyze the logs
cd ~/topologies/iotlab_topologies/topology/ ./generate_paths_data.py lyon m3 all ../measurement/logs/latest/*_run.log ./linkhist.py paths-data-lyon-m3-all.json ./nodedeg.py paths-data-lyon-m3-all.json
-
Run the tree selection algorithm
cd ~/topologies/iotlab_topologies/selection/ ./tree_selection.py lyon all
For further options, run
./tree_selection.py --help
.It outputs multiple results like this
Topology with 6 nodes, depth 2 and root 6 (0xc279) for bound 56: [6, 10, 3, 7, 18, 2] Graph plot in ./results/lyon-all-01.png
That means, a tree topology was found that is also illustrated in the given png file. In this case, it consists of 6 nodes, has a depth of 2 and the node with ID 6 as root. The other nodes are 10, 3, 7, 18, 2. When using these 6 nodes in an IoT-LAB experiment and setting the transmission power and sensitivity according to the bound 56 (see the paper above for details), one can expect the given tree topology.
-
Run the fixed density algorithm
cd ~/topologies/iotlab_topologies/selection/ ./density.py lyon all 60
For further options, run
./density.py --help
.The result is similar to the one of the tree selection. However, you have to manually specify the bound (60 in this example).
Instead of using the precompiled firmware files as described above, you can compile the measurement firmware. This gives for example the possibility to change the radio channel (have a look at the run.py for that). Attention: There currently seems to be a bug with some compiler versions where the firmware seems to have been built correctly, but it does not run properly. If this is the case for you, please create an issue.
sudo apt-get install scons gcc-arm-none-eabi
git clone https://github.com/CometOS/CometOS.git ~/topologies/cometos
echo 'export COMETOS_PATH=~/topologies/cometos' >> ~/.bashrc
echo 'export PATH=$PATH:$COMETOS_PATH/support/builder' >> ~/.bashrc
source ~/.bashrc
cd ~/topologies/iotlab_topologies/cometos/
./run.py lyon
cd ~/topologies/iotlab_topologies/topology/
./generate_paths_data.py lyon m3 all ../cometos/logs/latest/*_run.log
...