Using the TWIST testbed¶
Accessing the testbed¶
The TWIST testbed has two different networks to play with: a sensor network and a wireless network. To access the sensor network it is possible to use a web interface to schedule and control jobs (https://www.twist.tu-berlin.de:8000/). To access, you need to request an account by filling the form at https://www.twist.tu-berlin.de:8000/request_account.
For the wireless testbed you need to create an iMinds account at https://authority.ilabt.iminds.be/signup.php?pid=POPROW. Michele created the project POPROW, so you have to join the project. After creating your account, sign in to obtain a certificate used to access the test bed (Actions -> Start experiment or get certificate). Then download the jFed application (more details at https://www.twist.tu-berlin.de/tutorials/twist-am-usage.html) that can be used to graphically setup your experiment.
By using the jFed application you can add nodes to the experiment by dragging them into the GUI. By right-clicking on a node you can configure it. In the Disk image option it is possible to choose a distribution to run. They already provide a wishful-enabled ubuntu 16.04, it is possible to create custom images (https://www.twist.tu-berlin.de/tutorials/custom-disk-images.html), which might be very useful, as OLSRd and other required software would be already setup. Alternatively, it is possible to use Ansible (https://www.ansible.com/) to automate tasks, which would include downloading and installing software. Suggestions from the test bed people might help.
Once the nodes are placed, by clicking Play they will startup, and it will be possible to ssh into them for commands. WARNING: when running an experiment, remember to NOT tick "Add SSH Keys of all Project Members". Apparently, this mechanism is bugged and users' public key are not correctly deployed and the user that started the experiment won't be able to ssh into the nodes. We filed a bug (https://groups.google.com/forum/#!category-topic/fed4fire-experimenters/KHh5mxTm1sQ). Mail report:
The jFed Experimenter GUI sent feedback for user urn:publicid:IDN+wall2.ilabt.iminds.be+user+segata Basic info: Type: Bug Report Related testbeds: urn:publicid:IDN+twist.tu-berlin.de+authority+am Send to mailinglist: Yes User email: firstname.lastname@example.org Included calls: 67 jFed Version: 5.7.1 - build #2 - git commit #dccbc452c66f3c45f0abe3bc0597d2c191347e1f on HEAD jFed Environment: Linux 4.4.0-64-generic amd64 - Java 1.8.0_121 (Oracle Corporation) Description: When starting an experiment and ticking the option "Add SSH Keys of all Project Members" the public keys are not correctly deployed on the remote nodes. When I tick it, I can't ssh into the nodes, but my colleague can. When I don't tick it, I am able to ssh into the nodes. By checking the content of ~/.ssh/authorized_keys we noticed that, in the first case, only the public key of my colleague is included in the file, while I was expecting to have both. In the included calls, you see the invocations for the first case and the second case, one after the other. In the calls for the first attempt (bugged behavior) you can actually see that both certificates are fetched (task 4). Then, in task 9, both users (segata and nfacchi) are being authorized. However, only nfacchi is able to ssh (only his public key is listed in ~/.ssh/authorized_keys). In the second case (starting from task 28), the "Get user SSH Keys for users in project POPROW" is missing (as expected) and in the provisioning task (number 32) only the credentials for segata are present. In conclusion, by looking at the call logs, everything seems correct, but in the first case the keys are not properly copied in the authorized_keys file. jFed admins can find additional details at: https://flsmonitor-api.fed4fire.eu:9443/bugreport/87 and https://flsmonitor.fed4fire.eu/bugreport/
Using the nodes¶
- Either via
ssh -F ssh.cfg -i <iminds.pem or id_rsa> <nodeid>using https://raw.githubusercontent.com/WirelessTestbedsAcademy/ExperimentationTools/master/Ansible/TWIST/ssh.cfg
- Using Ansible to automate tasks (https://github.com/WirelessTestbedsAcademy/ExperimentationTools/tree/master/Ansible/TWIST)
- What is the topology?: there is no clear topology, just a map of the nodes (https://www.twist.tu-berlin.de/testbeds/node_map.html)
- What are the available devices?: See (https://www.twist.tu-berlin.de/testbeds/wireless.html). The jFed application will give you the list of available nodes. You can also check the building map.
- How do we install OLSRv2 (and other software)?: You have root access to the nodes, so via ansible you can have some setup steps that download, compile, and install required software.
- How do we use these infamous UPIs to control the radio and the MAC?: You need to install the uniflex framework on the nodes. However, given that we have root access, we might not even need them.