/iotrain-lab

IoTrain-Lab: IoT Training Platform Using the FIT/IoT-LAB Testbed

Primary LanguageCBSD 3-Clause "New" or "Revised" LicenseBSD-3-Clause

IoTrain-Lab: IoT Training Platform Using the FIT/IoT-LAB Testbed

IoTrain-Lab is an open-source platform for IoT training that makes use of the FIT/IoT-LAB testbed for conducting hands-on exercises. The platform is easy to maintain, migrate and expand, and provides support for multiple simultaneous users. The included training content focuses on fundamental IoT training, but IoT security training content is also included.

An overview of the architecture of IoTrain-Lab is provided in the figure below. Apache Guacamole manages a set of CentOS Linux containers on top of Docker that are used by trainees to access the FIT/IoT-LAB testbed.

Setup

The following steps are necessary in order to set up IoTrain-Lab. We assume Ubuntu 18.04 LTS as the host OS, but other operating systems can be used as well with minor modifications of the setup script.

  1. Change default password: For security reasons, you should change the default username and password for the Guacamole PostgreSQL database by editing the file .env located in the directory docker-guacamole.

  2. Run the setup script: The setup script can be used to automatically install the Docker-related packages, as well as to build and start the CentOS, Guacamole and Moodle containers used by IoTrain-Lab:

    $ ./setup.sh
    

Notes

  • The installation script only starts one CentOS container, but you must start more such containers if you want to support multiple trainees simultaneously.
  • All the container directories in the IoTrain-Lab distribution contain README.md files with additional information about those containers. Please refer to them for details. Our README file for the Moodle container is named README_moodle.md and is located in the top IoTrain-Lab directory.
  • The Moodle container also uses a PostgreSQL database, and for security reasons you should also change that username and password by editing the file .env located in the newly-created directory docker-compose-moodle, then rebuilding the container.

FIT/IoT-LAB account

Since IoTrain-Lab uses the FIT/IoT-LAB testbed for the included hands-on exercises, every user of the platform needs to create an account on the testbed and configure SSH access, as explained next:

Quick Start

  1. Start all the containers: Run the command below to start the IoTrain-Lab containers (this is not needed if you have just run the setup.sh script, in which case the containers are already running):

    $ docker start $(docker ps -a -q)
    
  2. Configure the Guacamole service: Follow the steps below to set up the Guacamole service:

    1. Access the Guacamole home page from a web browser by using the address localhost:8080/guacamole/; the default username and password are both guacadmin, but for security reasons the password should be changed after the first login

    2. Click on the button at the top right side of the window, Settings > Connections > New connection

    3. Configure the settings as shown below (click to enlarge the figures)

      In order to get the IP addresses of the CentOS and Guacamole containers, use the command docker exec -ti <CONTAINER_ID> bash to access the container shell, then the commands ifconfig for CentOS and ip addr for Guacamole to check the IP address. You can also refer to the video included on the releases page for a step-by-step example of how to configure Guacamole.

  3. Begin the training: Follow the instructions for each training activity available in the directory database/ (the "Training Content" section below provides direct links in the recommended order for carrying out the activities). Alternatively, each activity README.md file can be uploaded into the Moodle container, which then serves as an interface for accessing the content.

Training Content

An overview of the hands-on exercises currently available in IoTrain-Lab is shown below. If you need more background on IoT technologies, we suggest using the companion system that we also developed, IoTrain-Sim, which includes tutorials and hands-on exercises conducted via simulation.

Exercise overview

Next we introduce each of the exercises in IoTrain-Lab, which are presented here in the recommended order for performing them based on topic and difficulty level. Click on each exercise name to view the corresponding instructions. Before proceeding, we suggest that you first get familiar with the basic aspects of FIT/IoT-LAB by checking the Getting started page of the testbed documentation web site.

  1. Node Control: Control a node and get its sensor data, such as temperature and luminosity
    • Difficulty: Easy
  2. Consumption Monitoring: Monitor the power consumption of an IoT device
    • Difficulty: Easy
  3. Ping Testing: Test the connectivity between two nodes via ping request/reply exchanges
    • Difficulty: Easy
  4. Radio Monitoring: Monitor the radio activity of two nodes communicating with each other
    • Difficulty: Medium
  5. Radio Sniffing: Capture radio frames and analyze radio communication using Wireshark
    • Difficulty: Medium
  6. RPL Routing: Practice with the Routing Protocol for Low-Power and Lossy Networks (RPL)
    • Difficulty: Medium
  7. CoAP Protocol: Practice with the Constrained Application Protocol (CoAP)
    • Difficulty: High
  8. MQTT Protocol: Practice with the Message Queuing Telemetry Transport (MQTT) protocol
    • Difficulty: High
  9. Flooding Attack: Experiment with the flooding attack used to increase energy consumption
    • Difficulty: High

References

For a research background regarding IoTrain-Lab, please refer to the following document:

For a list of contributors to this project, check the file CONTRIBUTORS included with the source code.