User Manual
User Manual:
Open the PDF directly: View PDF .
Page Count: 67
Download | |
Open PDF In Browser | View PDF |
MONROE Measuring Mobile Broadband Networks in Europe H2020-ICT-11-2014 Project number: 644399 Deliverable User manual MONROE Platform User Manual Editor(s): Contributor(s): Miguel Peón-Quirós, Özgü Alay, Vincenzo Mancuso Miguel Peón-Quirós, Thomas Hirsch, Ali Safari Khatouni Work Package: Revision: Date: Deliverable type: Dissemination level: 5.2 / User Support 1.0 March 14, 2019 R (Report) Public User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 Abstract This document describes the processes that MONROE experimenters need to follow to create, run, monitor and collect results from their experiments. Participant organisation name Short name SIMULA RESEARCH LABORATORY AS (Coordinator) CELERWAY COMMUNICATION AS TELENOR ASA SRL Celerway Telenor NETTET SVERIGE AB NET1 NEXTWORKS NXW FUNDACION IMDEA NETWORKS IMDEA KARLSTADS UNIVERSITET KaU POLITECNICO DI TORINO POLITO 2 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 Contents 1 Introduction 6 1.1 MONROE nodes hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.1.1 System design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Overview of the node configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 7 1.3 Overview of the experimental workflow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 2 Experiment preparation 9 2.1 General experiment notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.2 Container preparation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2.2.1 Package and tool installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.2.2 Band Locking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.2.3 Virtual Machine support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2.2.4 NEAT support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.3 Optional interactive debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.4 Mandatory certification process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 2.5 Deployment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.6 Life cycle of monroe/base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3 Resource allocation, and experiment scheduling and monitoring 16 3.1 User login and certificates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 3.1.1 Installation of user certificates in Chrome . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.2 Resource allocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.2.1 Eduroam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 3.3 Experiment scheduling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.3.1 Recurrence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.3.2 Checking availability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.3.3 First availability scheduling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.4 Experiment monitoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.5 Command Line Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.5.1 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 3.5.2 Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4 Retrieval of metadata and experiment results 32 4.1 User experiment results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 4.2 MONROE metadata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 5 Run-time considerations for experimenters 33 5.1 Node identification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 5.2 Communication during the experiment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 5.3 Interface naming and default route . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 5.4 Interface binding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 5.5 Metadata at run-time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 5.5.1 Example: Correlate experiment results with metadata at run-time . . . . . . . . . . . . . 35 5.5.2 Metadata information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 3 of 67 Project no. 644399 User manual MONROE Platform User manual 5.5.3 Public Rev. 1.0/ March 14, 2019 Metadata format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 5.6 Tstat at run-time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 5.6.1 Tstat Round Robin Database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 5.6.2 Tstat logs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 5.7 Access to user-owned development nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 5.7.1 Accessing user-owned development nodes . . . . . . . . . . . . . . . . . . . . . . . . . . 39 6 Monitoring node status 42 7 MONROE templates, examples and default experiments 42 7.1 Example template . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 7.1.1 Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 7.1.2 Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 7.1.3 Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 7.1.4 Overview of the code structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 7.2 Docker miscellaneous usage notes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 7.3 Experiment: ping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 7.3.1 Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 7.3.2 Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 7.3.3 Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 7.4 Experiment: http_download . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 7.5 Experiment: Tstat & mPlane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 7.5.1 Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 7.5.2 Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 7.6 MONROE example: helloworld . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 7.6.1 Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 7.6.2 Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 7.6.3 Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 7.7 MONROE example: paris-traceroute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 7.7.1 Usage (inside a MONROE container) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 7.7.2 Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 7.7.3 Additional remarks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 7.8 MONROE example: headlessbrowsing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 7.8.1 Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50 7.9 MONROE example: pReplay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 7.9.1 Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 7.10 MONROE example: astream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 7.10.1 Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 7.10.2 Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 7.11 MONROE example: udpbwestimator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 7.11.1 Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 7.11.2 Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 7.12 MONROE example: traceroute_background_experiment . . . . . . . . . . . . . . . . . . . . . . 53 7.12.1 Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 7.13 Other containers in the repositories . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 4 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 7.13.1 Container: metadata-subscriber . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 7.13.2 Container: tunnelbox-server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 7.13.3 Container: monroe_base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 8 List of known bugs and issues 54 A List of packages installed in monroe/base 55 B Description of metadata fields 62 C How to map container folders to Windows paths 64 5 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 Figure 1: System design. Left: Tail node with one LTE Cat6 modem and one WiFi adaptor. Right: Head node with two LTE Cat6 modems. 1 Introduction The purpose of this document is to guide MONROE experimenters through the process of creating, running and monitoring their experiments, and the subsequent collection of results. It first explains how the experiments must be prepared inside Docker containers, the testing process they must undergo before they can be deployed into MONROE’s nodes, and how they must be uploaded to a repository for deployment into the nodes. Then, it explains the basics of the web interface that allows provision of resources and the scheduling of experiment executions. Finally, it shows how the experiment results can be retrieved either directly from the experiment itself or from the repository provided by MONROE. 1.1 MONROE nodes hardware The MONROE platform has gone through a complete process of analysis and redesign to adapt to the new hardware available in the market and overcome some of the issues encountered in the first design. The following paragraphs explain the main characteristics of the current design. 1.1.1 System design The current MONROE design presents a heterogeneous set of nodes grouped in pairs: • “Head,” with two Sierra Wireless LTE Cat6 modems. • “Tail,” with one Sierra Wireless LTE Cat6 modem and one WiFi adaptor. Figure 1 shows the current node design. Both types of nodes are based on a PC Engines APU2D4 motherboard with the following characteristics: • 1 GHz 64-bit quad core AMD Geode APU. • 4 GiB RAM. • 16 GiB SDD. • Three miniPCIe slots, two of which support a 3G/4G modem. 6 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 The current node design does not support a dedicated management MBB interface. Thus, additional measures have been taken to minimize the interference of background traffic with user experiments. In particular, most maintenance operations (except optionally the transfer of user results) are paused during experiment execution. Also, a fix hour is reserved for maintenance in all nodes every day. 1.2 Overview of the node configuration MONROE nodes have been designed to have minimal impact on the experiments that run on them. Therefore, only one experiment can run at a given time in a node. Although the experiments are executed inside a Docker container, they have no quotas on CPU or memory usage, subject only to available node resources. Container image size and temporary storage in the node may be restricted, though. Every MONROE node runs, in addition to user experiments, the following background processes: • The experiment scheduler, which arbitrates the execution of user experiments in the node. The scheduler runs permanently in the background and contacts periodically the scheduling server, sending “heartbeats” and checking for new schedules for the node. When an experiment is not running, the scheduler may start the deployment of the containers for one or several experiments scheduled to be run in the immediate future, so that they are prepared on advance. The scheduler checks the duration of the slot assigned to an experiment; if the experiment does not finish on time, it stops the whole container. • Synchronization (rsync) services to copy data files to the MONROE repository. This service copies user experiment results, the data collected by passive experiments and assorted metadata measurements. It runs continuously, transferring files to the server as they appear in the corresponding folders. This service uses the management interface, which is different from the interfaces available for the experiments. However, the management interface may share in some cases the same subscriber contract with one of the experiment interfaces; operators might restrict the total bandwidth available for all the SIMs linked to the same contract. Additionally, two modems (management plus experiment) using the same operator antenna may somehow affect the bandwidth available for the experiment. Therefore, experimenters should be aware of the small amount of data that can be transferred by this service in parallel to their experiments. • Several systems run continuously in the background gathering information on the status of diverse components. Examples include a service to read the signal strength and network configuration of each of the experiment modems, the GPS data and various node parameters such as CPU load, memory usage or CPU temperature. These services run continuously in the background with a frequency that varies from one second up to several minutes. Although their impact on user experiments should be minimal, their existence must be known by the experimenters. • In addition to the services that gather metadata, MONROE nodes keep several containers active all the time. These containers run experiments that are deemed basic for the MONROE platform and include: – A ping experiment. Container number 1 executes continuously an ICMP ping operation to a fixed external server (currently, Google’s DNS at 8.8.8.8). The RTT values are collected and transferred to the servers. The ping experiment runs continuously with a frequency of one second, for every interface. 7 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 Design experiment Schedule container in testing mode Schedule experiment Configure container for experiment Deployment + test Deployment / execution Store container in repository MONROE certification Retrieval of results (per node / per schedule) Experiment design phase Testing phase Experimentation phase Figure 2: Experimental workflow. – A container that runs Tstat, the passive mPlane monitoring probe that collects, for each interface, detailed flow level statistics. The Tstat container generates no traffic; flow level data is synchronized to the MONROE repository using the standard synchronization process described above. • Finally, some built-in MONROE experiments run as scheduled containers. These experiments will not run at the same time than user experiments: – A bandwidth measurement test, which periodically downloads an object using the HTTP protocol to measure the achievable bandwidth. The test runs on each interface. The periodicity of this experiment and whether it can be run while user experiments are being executed are yet to be decided. – A container that periodically executes a paris-traceroute to several popular websites recording information about all the intermediate hops. This container will in principle be run several times per day, but the interactions with user experiments are yet to be determined. 1.3 Overview of the experimental workflow Experiments conducted in the MONROE platform follow the workflow shown in Figure 2, which consists of three phases: Experiment design, testing and experimentation. During the experiment design phase, the experiment goals and properties are defined and the container required to deploy it in MONROE nodes is configured. During the testing phase, the container is executed on nodes specifically devoted to testing new experiments. If the experiment passes all the safety and behavior tests, a MONROE manager will digitally sign the container image. Signed containers cannot be further modified without running again through the testing phase. Finaly, the experimenter is free to schedule the experiment container on any nodes, subject to the specific quotas assigned to their project. 8 of 67 Project no. 644399 User manual MONROE Platform User manual 2 Public Rev. 1.0/ March 14, 2019 Experiment preparation 2.1 General experiment notes MONROE experiments run under the root user of a Docker container. Therefore, experimenters can design any kind of experiment within the security restrictions of the platform, including the configuration of routing tables, stopping or starting interfaces and executing any kind of applications. We assume the reader is familiar with the Docker technology. Otherwise, we suggest getting used to it by accessing the documentation at https://docs.docker.com/engine/understanding-docker/ . Creating and using containers is a two-step process. At design time, the experimenters create the image for the container in their local machine using a container-creation script. If necessary, they can install new packages (e.g., via apt-get) or copy libraries. The docker tools read the script and create the final image for the experiment, which will then have to be uploaded to a repository. At run-time, the nodes retrieve the container image from the repository and start it as scheduled. During execution, the experiment should not install additional applications or download any data that is not part of the experiment itself (e.g., if the experiment uploads a file to a server to test upstream speed, either include the file to be uploaded in the container at design time or create it locally). ⇒ Experiments will under no circumstances allow direct ssh access to the node or any other form of running interactive commands from outside the container that can pose a security risk for the platform. ⇐ 2.2 Container preparation MONROE experiments are deployed in Docker containers (https://www.docker.com/). Preparing a new container from MONROE’s base image is an easy process: 1. Install Docker in your machine. Do it preferably downloading the installation script from the web page, rather than through a package manager such as apt-get: $ wget https://get.docker.com -O install.sh $ chmod u+x install.sh $ ./install.sh You will have to run docker as root unless you add yourself to the docker group. Mac users: Download and install “Docker for MAC” (https://www.docker.com/products/docker#/mac) or the “Docker Toolbox” (https://docs.docker.com/toolbox/overview/), according to your OS version. 2. Test the Docker installation with the ‘Hello world!’ example: $ sudo docker run hello-world Unable to find image ’hello-world:latest’ locally latest: Pulling from library/hello-world 03f4658f8b78: Pull complete a3ed95caeb02: Pull complete Digest: sha256:xxxxxxxxxxxxxxxxxxxxxxxx Status: Downloaded newer image for hello-world:latest If everything has worked correctly up to here, you will see a welcome message similar to the following: 9 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 Hello from Docker. This message shows that your installation appears to be working correctly. ... You can check which images are locally installed with: $sudo docker images REPOSITORY TAG hello-world latest IMAGE ID 690ed74de00f CREATED 4 months ago SIZE 960 B 3. Now you are ready to download the MONROE base image: git clone https://github.com/MONROE-PROJECT/Experiments.git This will fetch the repository with MONROE’s example containers. 4. Head to Experiments/experiments/template/. Here, you will find the required files to prepare your image based on MONROE’s base. You should care about four things: a) The contents of the files/ folder, b) the build.sh file, c) the push.sh file and d) the template.docker script file that describes how to create your container. In the directory files/ you can put all the files that are part of your experiment. As a simple example, we can use the following script: $vi files/myscript.sh #!/bin/bash ls -lah > /monroe/results/listing.txt Any files that your experiment creates in /monroe/results are delivered to the repository, where you will be able to retrieve them. Writes to any other part of the filesystem will be lost once the experiment is finished. In periodic schedules, no data will survive from one execution to the next (i.e., the container is loaded fresh before each execution). If result persistence is needed, the experimenter will have to supply it by downloading the needed files from the network during the experiment itself. 5. You should not need to modify the build.sh file. The name of the container is the name of the current directory, and it must match the name of the .docker file (e.g., template.docker as we are in a folder named template/). 6. The file template.docker is the script used to build your container. You can modify it to: • Define the entry point of your experiment (“ENTRYPOINT”). • Change the base image of the container, e.g., monroe/base. • Install additional packages or libraries. For example: FROM monroe/base MAINTAINER your-email-address COPY files/* /opt/monroe/ #Default cmd to run. ENTRYPOINT ["dumb-init", "--", "/bin/bash", "/opt/monroe/myscript.sh"] 10 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 This example will copy the files in the files/ directory to the one you specify inside the docker container (e.g., /opt/monroe). TIP: If you need to install additional packages in the container, be sure to clean any temporary files from the image. Also, notice that the Docker creation script analyses the contents of the container filesystem after every line in the .docker script is executed. That means that, even if you delete files at the end, Docker will create intermediate “layers” that will be downloaded and applied sequentially to build the final image of your container. Consider instead using one-liners such as the following: RUN apt-get update && apt-get install -y vim && apt-get clean This will ensure that the files are deleted before Docker analyses the filesystem. 7. Modify the file push.sh to reflect the name of your repository: #!/bin/bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" CONTAINER=${DIR##*/} CONTAINERTAG=myuser/myrepo # --> Modify to your own dockerhub user/repo docker login && docker tag ${CONTAINER} ${CONTAINERTAG} && docker push ${CONTAINERTAG} && \ echo "Finished uploading ${CONTAINERTAG}" During the development phase of your experiment, follow these steps to make your container accessible for the testing nodes: • Create an account at Docker Hub. • Create your own repository (you can create one container as private; no limits for public ones). Containers for deployment on MONROE nodes must be public. • In your development machine, run: docker login. It will ask you for your credentials. • 8. After populating the files/ directory, modifying the .docker file and updating the push.sh file, you are ready to create the image: $sudo ./build.sh Using default tag: latest latest: Pulling from monroe/base Digest: sha256:6df1195a3cc3da2bfe70663157fddc42e174ec88761ead7c9a3af591e80ebbd5 Status: Image is up to date for monroe/base:latest Sending build context to Docker daemon 11.26 kB Step 1 : FROM monroe/base ---> d1b4f4baa60d Step 2 : MAINTAINER mikepeon@imdea.org ---> Using cache ---> 0b05b5c453c7 Step 3 : COPY files/* /opt/monroe/ ---> acc2df443070 Removing intermediate container 66a666516a27 Step 4 : ENTRYPOINT dumb-init -- /bin/bash /opt/monroe/myscript.sh ---> Running in f4b7a1ee804a ---> 096c7a56ff1c Removing intermediate container f4b7a1ee804a Successfully built 096c7a56ff1c Finished building template 11 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 9. Test that your new docker container is available: $sudo docker images REPOSITORY hello-world your_docker_account/your_experiment monroe/base TAG latest latest latest IMAGE ID 690ed74de00f xxxxxxxxxxxx xxxxxxxxxxxx CREATED 4 months ago 32 seconds ago 12 days ago SIZE 960 B 626.6 MB 626.6 MB Exact image ids and sizes will vary. 10. Push the container image to the repository: $ sudo ./push.sh Username (your-Docker-user-name): Password: (type your DockerHub password) WARNING: login credentials saved in /home/your-username/.docker/config.json Login Succeeded The push refers to a repository [docker.io/mikepeon/template] 5f339bfdaae2: Pushed 486ab26686cc: Layer already exists 034f70c0d9cd: Layer already exists 86b5acd8772a: Layer already exists f03317610243: Layer already exists 50f6c1bd7ce6: Layer already exists aec5953bffa2: Layer already exists 507169b05eea: Layer already exists 5d799297d10c: Layer already exists 759d76df9ac7: Layer already exists 5f70bf18a086: Layer already exists 12e469267d21: Layer already exists latest: digest: sha256:c855de65307191b4832b2ec60a4401c1b63424827c29149703c5d7ef07b519f7 size: 3001 Finished uploading your-username/template 11. You can now test that your image runs correctly, even on your own PC (if the experiment logic and resource demands allow for it). $mkdir /run/shm/myresults $sudo docker run -v /run/shm/myresults:/monroe/results your_docker_account/your_experiment --> The output of your experiment will be in /run/shm/myresults/listing.txt The docker command line allows you to specify a mapping between a directory inside the docker image and one in the host system. In this case, we have mapped /monroe/results from the container to /run/shm/myresults. This is useful if you are running the container locally in a normal PC for debug- ging purposes. IMPORTANT: This process shows how to build and run a container locally in your workstation. However, experimenters do not have direct access to the MONROE nodes. Therefore, to execute your experiment in a MONROE node, you will follow the process just up to the sudo ./push.sh step and then use the web interface to upload and schedule the container into the nodes. You may check the contents of experiments/* for more useful examples. The following is a list of useful common Docker commands: • To list installed/built images (and get their ids): 12 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 docker images • To list running containers and get their tags: docker ps • To stop running containers: docker kill container-tag • To delete images: docker rm -f image_id • To retrieve the latest version of an image (e.g., monroe/base): docker pull monroe/base • To attach to a running container and get an interactive shell: docker exec -i -t container-tag bash 2.2.1 Package and tool installation If you have to install extra packages, libraries or tools, do it from the my_experiment.docker file. You should never pull repositories or download libraries from inside your experiment as this will count against your data quota (and execution slot) for every instance of your experiment. Instead, modify the container configuration file as in the following example: FROM monroe/base MAINTAINER your-email-address RUN apt-get update && apt-get install -y \ python \ python-pip \ traceroute \ && apt-get clean RUN pip install pygame RUN mkdir -p /opt/yourname COPY files/* /opt/yourname/ #Default cmd to run ENTRYPOINT ["dumb-init", "--", "/bin/bash", "/opt/yourname/myscript.sh"] You may also download any files using wget, but you may simply put them in the files/ folder as well. Remember, this happens during container creation on your PC, not during experiment execution on the nodes. If you find the need for big libraries that you think should go into the base image, please contact MONROE’s administrators. TIP: The easiest way to find out which packages and versions are available in the MONROE base image is to create a simple container and run an interactive batch session inside it in your workstation. For example, assuming that you have a basic container that simply waits when run, you may follow the following steps: mkdir /run/shm/myresults docker run -v /run/shm/myresults:/monroe/results repository/your_container & 13 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 LockType 4 8 16 DESCRIPTION Lock in MODE_GSM Lock in MODE_UMTS Lock in MODE_LTE Table 1: LockTypes docker ps --> Look for the tag of your running container docker exec -i -t container_tag bash --> Here you are inside the container dpkg -l > /monroe/results/package-listing.txt exit --> You’ll find the output at /run/shm/myresults/package-listing.txt For easier reference, Table 10 in Appendix A gives a detailed listing of packages available in monroe/base at the time of writing this text. 2.2.2 Band Locking This option allows experimenters to lock the monroe node modems in LTE, 3G etc... by sending a PUT request from within a container using different lock types see Table 1 using curl similar to: curl -X POST -d ’{"lockType": 16}’ http://172.17.0.1:80/modems/1/lock HTTP/1.0 200 OK Where "lockType": 16 indicates that it has been locked on 4G LTE and modems/#/lock indicates the modems ip4table to check ip4table first, or that the modem is locked run: curl -s http://172.17.0.1:80/modems/ | jq [ { "ispName": "YOIGO", "apnId": 77, "apn": "internet", "mode": "LTE", "deviceType": 0, "disconnects": 0, "ip4table": 1, "modemState": 7, "deviceKind": 1, "ifname": "wwan0", "deviceMode": 5, "deviceSubMode": 10, "signalStrength": -56, "modemName": "MC7455", "locking": 16, "imei": "359072060710833", "iccid": "8934041514050773954", "usb_vid": 4505 } ] 2.2.3 Virtual Machine support This option allows experimenters to use a different kernel or kernel options than installed on the MONROE node. To develop and deploy the experiments to the nodes we utyilize the docker container system. The 14 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 container will on the node be converted to a virtual machine (kvm) and executed in a environment similar to a regular experiment. A example on how to configure and run a virtual machine experiment can be found here: https:// github.com/MONROE-PROJECT/Experiments/tree/master/experiments/nodetest . There are a couple of things to consider when deploying a experiment as a virtual machine; • Base your docker image on monroe/base:virt – monroe/base:virt is a stripped down version of monroe/base: https://github.com/MONROE-PROJECT/ Experiments/blob/master/monroe_base/10_virt_docker . • Include a kernel • Set the parameter "vm":1 when scheduling the experiment. • Be very conservative on diskspace, eg installed packages etc. • Define as the last line of /opt/monroe/user-experiment.sh how to start your experiment. • Issue poweroff as last command of the experiment script. 2.2.4 NEAT support This option allows experimenters to route all TCP traffic through a NEAT proxy https://github.com/ NEAT-project/neat . To enable this feature set the parameter "neat":1 when scheduling the experiment. The NEAT rest api can be reached from inside a experiment container on url 172.17.0.1:45888, eg 172. 17.0.1:45888/pib and 172.17.0.1:45888/cib. 2.3 Optional interactive debugging To speed up the process of debugging experiments in the nodes, three debugging paths are provided. First, experimenters can order (buy) a number of “development” nodes to be hosted locally in their premises. These nodes, which will not be accessible through the standard scheduler and user interface, can be accessed through local interfaces (eth, serial console) and provide root access. Second, and only for “testing” nodes, the user interface includes an option to provide an SSH public key to the container. Once the container starts, experimenters can connect to monitor experiment progress. The SSH session can extend until the container finishes or is stopped. Finally, a virtual machine containing a “virtual MONROE node” has been designed to ease development and debugging on a local PC. This virtual node replays metadata previously recorded from a real one. CAUTION: Enabling ssh changes the entry point to the container, for this matter it is best not to use ssh when you have designed your container just to make sure that the container starts automatically in the UI. 2.4 Mandatory certification process MONROE experiments have to be certified before they can be executed by deployed nodes. A small number of nodes are available through the user interface so that experimenters can test their experiments before starting the certification process. The certification process consists of the following steps: 1. The experimenter contacts their patron to inform them that a new version of their experiment is ready for certification. 15 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 2. The experimenter has to provide a summary of the experiment, i.e., overall purpose, design and implementation (reasonable length around 0.5 to 1 A4 pages). 3. The container should be submitted as source (i.e., build scripts for Docker, not tools source code) for easy inspection by the patron. Additionally, this will allow the MONROE administrators to update the containers when a new version of monroe/base is available. 4. The patron, or the maintenance team, will then build (or pull) the container, tag it as partnername/ experimentname, and push it to the deployed docker repository. Every experiment submitted to the MONROE testbed must first pass through a testing process to receive manual approval by a MONROE administrator. To submit your experiment for testing, you have to use the web interface specifying “testing” as the required node type. 2.5 Deployment MONROE’s scheduling system will automatically deploy experiments to the nodes before their execution time. The nodes will fetch the container image from the Docker repository, and the size of the download will be accounted in your data quota. Notice that in the case of periodic experiments, each time an experiment is run, the Docker container may have to be re-downloaded and its costs will be accounted in your quota. 2.6 Life cycle of monroe/base The current version of monroe/base deployed on nodes is tagged as “latest.” New versions will be tagged as “staging;” their existence will be announced on the experimenters mail list. Experimenters must check their experiments against the new stagging version to verify that no incompatibilities appear. Any relevant issues can be discussed with the MONROE administrators. After a reasonable period of time, the new version will be retagged as “latest,” and deployed into the nodes. All the containers should have been built against the new version at this time to avoid wasting quota resources when they are deployed in the nodes. 3 Resource allocation, and experiment scheduling and monitoring Once a experiment is configured as a Docker container, it can be scheduled multiple times under different conditions using the user client web located at https://www.monroe-system.eu . 3.1 User login and certificates User identification in MONROE is achieved through client certificates. Every experimenter has their own certificate compatible with the FED4FIRE1 federation. User certificates are issued by iMinds through the following URL: https://authority.ilabt.iminds.be/. New users must create a new account (“sign up”). Be sure to select the option “Join Existing Project” and type the name “Monroe” in the project name field (Figure 3). The authorization process involves a manual verification step by one of the MONROE administrators, so it will probably take one or two days. Please, notice that the current policy for MONROE is to use one user certificate per project, shared between all the experimenters belonging to that project. 1 http://www.fed4fire.eu/ 16 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 Figure 3: iMinds registration page to obtain FED4FIRE-compatible certificates for use with the MONROE platform. Once the identity of the experimenter is approved, they will receive an informative email. They should then log into the iMinds webpage to download the certificate files (PKCS12). These files must be installed in the experimenter browser. After that, the user should be able to access the user web directly. Upon request of the main (index.html) file, the browser will contact MONROE servers to verify that the user credentials are correct. In the case of any problems, the user will be presented with instructions on how to obtain a certificate. If the client certificate is verified successfully, they will be automatically redirected to the listing of their experiments. NOTE: User certificates are manually activated in the scheduling software. To use your certificate, please send its SSL ID (“fingerprint”) to one of the MONROE administrators (e.g., mailto:mikepeon@imdea.org, mailto:mohamed.moulay@imdea.org). You may find it in the screen after pressing the “Try me” button, once the certificate is correctly installed in your browser: { "fingerprint": "c79f1967aea17811a1ebed39b7d718430904338a", "user": { "id": 3, "name": "MONROE Test admin", "quota_data": 50000000000, "quota_storage": 500000000, "quota_time": 500000000, "role": "admin", "ssl_id":"c79f1967aea17811a1ebed39b7d718430904338a", }, "verified": "SUCCESS" } ⇒ We have identified some common issues that are not yet solved. Below are some workarounds: • For the first login, you may be asked for your user certificate and then your browser may show a security warning. This is due to the use of a self-signed server certificate. Please ask your browser to proceed. 17 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 Then, you will probably see an error page from MONROE. Please, click the red button labeled “Try me” and check that you get a successful data output. Finally, please proceed again to the main page of the project. From that point, you should be able to access the system without further problems in future sessions. (Pointers on how to simplify this issue are welcome!) • Firefox on OSX has an issue with CORS headers. Although the web and scheduling servers are running now on the same machine, you may still encounter this problem. ⇒ Reminder: All user certificates will end on the 31st of July 2018. 3.1.1 Installation of user certificates in Chrome This section explains how to install the FED4FIRE-compatible user certificates used by the MONROE platform in Google Chrome for Windows. The procedure for other browsers and platforms should be similar. 1. Go to your browser settings page: 2. Display the advanced configuration settings: 18 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 3. Go to the section labeled “HTTPS/SSL” and click the button “Manage certificates...”: 4. The dialog box for managing your certificates will be displayed. Press the button “Import...” to import 19 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 your certificate: 5. In the new dialog, click “Next”: 6. In the file-selection dialog that appears next, change the file type from “X.509 Certificate (*,cer;*.crt)” to “Personal Information Exchange”: 20 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 7. And select the file containing your certificate: 8. In the next dialog box, enter your certificate password: 21 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 9. If the import is successful, your certificate will be imported to your “Personal Store” and you will be able to access the MONROE user interface by selecting it when prompted by your browser. Notice that you may still get a warning about the validity of the server certificate. 3.2 Resource allocation The “New” tab allows assigning resources and scheduling new experiments. Here, the user will be presented with a page similar to Figure 4. To create a new experiment, at least the following parameters must be specified: Name: A representative experiment description. Script: A Docker hub path for the experiment container. In the previous example, it would be your_docker_ account/my_experiment. Experiments on deployed nodes must be lodged in MONROE’s repository: docker.monroe-system.eu/... (the final URL is communicated when the container is certified). Number of nodes: The number of nodes that must execute the experiment. Duration: Length of the experiment execution, in seconds (excluding the time required to deploy the container). The node will kill the experiment after this time. The minimum slot that can be reserved is 5 min and the maximum, 24 h. However, because of the scheduling of MONROE experiments, the maximum possible duration is in practice slightly less than three hours. If the starting date is fixed, the user can introduce it in the field “Start.” All dates are introduced as UTC times; the interface presents alongside the corresponding local time for the user’s browser. The scheduler will then try to satisfy the requirements. Alternatively, if the starting date is not relevant, the user may leave this field empty and press the button “Check availability” to check the earliest available slot (add at least ten minutes to the proposed time to allow for container deployment into the nodes). If the user just wants to submit the experiment as soon as possible, they can just mark the option “As soon as possible” and leave the other fields empty when pressing the “Submit” button. Additionally, the user may specify the following restrictions (Figure 5): 22 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 Figure 4: Example for the creation of a new experiment. 23 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 Country filter: The user may select nodes located in one or several countries, or they may choose to use nodes from any country indistinctly. Node type: Currently available node types are deployed or testing. The testing nodes are reserved for experiments that must still be verified by a MONROE administrator. Experiments on deployed nodes must be lodged in MONROE’s repository: docker.monroe-system.eu/. Node model: Until complete retirement of the old MONROE nodes, experiments can run on old or new nodes. Eventually, all experiments will be run on new nodes. Number of interfaces: New MONROE nodes come in pairs of co-located nodes, where one node (“head”) has two 4G interfaces, and the other (“tail”) has one 4G interface and one WiFi interface. Specifying the number of required interfaces for the experiment restricts the type of nodes that can be selected by the scheduler: • One interface: The scheduler chooses only nodes with one 4G interface and WiFi (tails). • Two interfaces: The scheduler chooses only nodes with two 4G interfaces (heads). • Three interfaces: The scheduler chooses pairs of co-located nodes. In that case, the number of requested nodes must be even, as each pair is counted as two nodes. The assignment is atomic, i.e., either the complete pairs will be secured or the complete assignment will fail. The numbering of nodes follows the convention that the head in a pair receives number n and the co-located tail receives number n + 1, where n is even. Node IDs: If the experimenter wants to use a set of specific nodes, for example, to repeat one experiment under the very same conditions, it is possible to introduce a comma-separated list of required nodes, instead of accepting any available ones. Active-data quota: The experimenter must specify the active-data quota for each interface, that is, the maximum amount of data that each interface can use. The scheduler checks this value against the quota available for the user. Log files quota: The user may want to place an estimate on the maximum amount of data that may be generated as result files in /monroe/results. This is important because the size of the results is also counted against the user quota. Deployment-storage quota: This is the size allocated for the container file system in the node. Bigger sizes require more time to deploy. The maximum limit is 1 GB. Additional options: The user may provide a set of comma separated key-value pairs. These options will be appended to the JSON-formatted configuration file that can be read at run-time by the container at /monroe/config. This mechanism enables experiment parameterization. 3.2.1 Eduroam In the additional option tab experimenters can use eduroam, which is a roaming service for researchers or students in universities across Europe, to use eduoroam see Figure 6 the key values are similar to: "_eduroam": { "identity": "100368007@****", "hash": "YourpasswdHash" } When the experiments starts the docker container will initialize wpa_supplicant to bring up the Wlan0 interface up, as it will be available in the network namespace alongside op0, op1. The start log and the container network namespace will be similar to: 24 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 Figure 5: Filters for node selection. Figure 6: Eduroam configuration. 25 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 $Start Log$ Starting container... Successfully initialized wpa_supplicant Killed old client process Loading iptables rules ok. Starting accounting. Loading iptables rules Started docker process xx. Startup finished Tue Month x xx:xx:xx UTC 20xx. Started allocator client JSON request: {"address":"xxx.xxx.xx.xx","ifname":"wlan0","addr_family":x,"cmd":0,"version":1} Sent 80 bytes Server: tas_socket Table: xxxxx Lease: xxxxxx Ifname: wlan0 Address: xxx.xxx.xx.xx Family: x Table: xxxxx root@xxxxxxx:/# ifconfig eth0: flags=xxmtu 1500 inet xxx.xx.x.x netmask xxx.xxx.xxx.x broadcast x.x.x.x lo: flags=xx mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 op0: flags=xx mtu 1500 inet xxx.xx.x.x netmask xxx.xxx.xxx.xxx broadcast x.x.x.x wlan0: flags=4xxx mtu 1500 inet xxx.xx.xx.xx netmask xxx.xxx.xxx.xxx broadcast x.x.x.x Noting that the eduroam parameters are hidden parameters, but not encrypted and they are still stored in the scheduler database. 3.3 Experiment scheduling When all the requirements are specified, the user needs to click the “Submit experiment” button to submit to the scheduler. The experiments must respect several restrictions to be successfully scheduled: • The starting time must be at least 10 min in the future, to allow time for container deployment. • No experiment can be scheduled more than one month in advance. • Periodic experiments must have a period greater than 3600 s. The finishing time must also obey the previous rule, that is, the last experiment instance in the recurrence must be scheduled in less than a month from the current time. • No experiment (or instance in a series) can last more than one day. In practice, the longest period that an experiment will be awarded is less than 3 h. • If a list of specific nodes and a starting date are given, the scheduler may be unable to grant the required resources. 3.3.1 Recurrence MONROE’s scheduler allows to specify experiments that need to be repeated periodically. In that case, the user has to specify the repetition period (≥ 3600 s) and the final stopping date. The scheduler will treat each repetition as a different experiment and will try to satisfy the requirements for each of them consecutively. However, the operation is atomic: Either all the repetitions are scheduled, or none are. 3.3.2 Checking availability If the exact starting time is not relevant, the user can press the “Check availability” button. If the requirements can be satisfied, a message explaining when the experiment might be started will be displayed. Additionally, it will also inform of the maximum number of nodes that can be used during this period, and the maximum ending time. With these data, the experimenter may decide to increase 26 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 the number of nodes that run the experiment, or increase its duration until the time that the scheduler is likely being able to grant. Figure 7 shows the answer of the scheduler for an availability query. 3.3.3 First availability scheduling The MONROE scheduler allows users to define experiments with an execution window instead of a fixed starting time. This option is particularly useful with mobile nodes whose active times are difficult to foresee. With first availability scheduling, the user specifies requirements as usual, except the starting date; instead, a temporal window within which the experiment can be scheduled is defined. The scheduler will assign a node or set of nodes to the experiment, without committing a specific time slot. When the node contacts the scheduler (e.g., when a mobile bus becomes online), if it has no pending tasks, the scheduler will assign one of the tasks in the firstavailability queue. Figure 8 shows the definition of an experiment for first availability scheduling. In the time between the experiment definition and the assignment of an execution window to each of its tasks, the status of the experiment tasks shows no start and stop times, as shown in Figure 9. The start and stop times of the experiment show the boundaries of the execution window for all the tasks. First availability scheduling presents some particularities that users should consider: • If several nodes are requested, execution on each node is asynchronous and thus not guaranteed to be simultaneous. • Experiments may not be executed if the end of the scheduling window is reached without a chance to execute them. • Tasks in the first-availability queue are not deployed on advance to the nodes. The user should take this into consideration, increasing the “duration” of the experiment to include long deployment times. • The scheduler checks if the first-availability request has a chance to be fulfilled at all, under the current circumstances. • By default, the execution window ends 24 h after the current time. 3.4 Experiment monitoring Once an experiment is successfully submitted, the user can check its progress under the “Status” tab. Figure 10 shows an example of a list of experiments. All the active (i.e., not completed) experiments for the user are shown. Experiments that have not yet been started can be canceled and deleted. However, the scheduler will try to stop experiments that have already started, but they will not be deleted from the list. Clicking on any experiment displays the details for its individual schedules. There, the number of schedules that are defined but not yet deployed, the ones that are deployed and ready to be started, the ones that are currently running, etc., is summarized. One line is presented for each individual schedule on each MONROE node. Table 2 explains the states in which an individual task may be. Some experiments may be designed to finish after completion. For those ones, the correct finishing state is “Finished.” If they are stopped by the scheduler, they probably exceeded the execution time foreseen by the experimenter. However, other experiments may be designed to run continuously for a period of time. In those cases, the “Stopped” state could actually be the correct ending state as intended by the experimenter. Moreover delayed, and failed states can have different meanings From insufficient disk space to the docker container not being found as explained in Table 3. 27 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 NewExperimentCheckAvailability.png Figure 7: The scheduler may supply hints on the scheduling availability, including the earliest starting date that is possible, the end of the availability period for the required resources and the maximum number of nodes, with the specified requirements, that the experiment could reserve. In this example, the experiment can start on “2017-02-28 16:04:08 UTC” and can last until “2017-02-28 16:45:02 UTC.” The experiment can be scheduled with up to 36 nodes during this period. 28 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 Figure 8: Example of a first availability scheduling. Figure 9: Status of an experiment in the fist availability queue without defined starting and stopped times. 29 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 Figure 10: List of user experiments. 30 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 Table 2: Experiment states STATE DESCRIPTION (Ongoing states) Defined Requested Deployed Delayed Started Restarted The experiment is created in the scheduler. If a task remains in this state past its starting time, the node was probably shut down and the task will not be executed anymore. The node has requested the container and is deploying it. The node has already deployed the container and is waiting for its starting time. The scheduling process failed temporarily. The container is being executed in the designated node. The “download” link for the task results is already available. The node has restarted the experiment after a node failure. (Final states) Finished Stopped Failed Canceled Aborted The task was correctly executed and it finished on its own before consuming the complete time slot. The task was correctly executed, but it was stopped by the scheduler at the end of the execution slot (correct for tasks designed to remain in execution until the end of their time slot). The task stopped abnormally. The task was canceled by the user before being started (but other tasks in the experiment were already started). The task was aborted by the user after being started. Table 3: Experiment problems STATE DESCRIPTION Deployed • • • • Container does not exist, or i/o timeout. Insufficient disk space. Cannot deploy while node is in maintenance mode. Container downloading in background. Failed • • • • • • • • • Storage quota exceeded during deployment. Container exited immediately. Network namespace does not exist. Container image not found. Started into maintenance mode. Docker run command failed. Docker run exit code 127: entry point not found? Deployment time exceeded stop time, skipped start hook. Deployment time exceeded stop time. 31 of 67 Project no. 644399 User manual MONROE Platform User manual 3.5 Public Rev. 1.0/ March 14, 2019 Command Line Interface The MONROE scheduler REST API is normally used through the provided WEB interface. However, experimenters can use it directly to improve task automation. A complete command-line tool is available at https://github.com/ana-cc/monroe-cli.2 The following paragraphs describe how to install and use the tool. Note that due to a certificate issue the tool will only run on Debian based systems. 3.5.1 Installation Installation prerequisites: sudo apt install git python3-dev python3-setuptools build-essential libffi-dev libssl-dev python3-straight.plugin From the directory that contains the tool sources: python3 setup.py develop The user certificate can be imported with: $ monroe setup MyCert.p12 Enter passphrase: Your certificate files were stored in ~/.monroe Alternatively, the cert/key files can be extracted manually and placed under ∼/.monroe/ with the names mnrCrt.pem and mnrKey.pem. 3.5.2 Usage The tool has integrated help: $ monroe -h usage: monroe [-h] Command ... Monroe Cli optional arguments: -h, --help show this help message and exit Experiment: The following commands can be used to create and submit experiments Command Description create Creates an experiment whoami Displays MONROE user details quota Displays MONROE quota details experiments Display recent experiments setup Specifies MONROE user certificate to use for accessing the scheduler delete Deletes an experiment results Downloads the results for an experiment Correct installation of the tool can be tested trying to retrieve the user identification: $ monroe whoami Authentication ID: 2, Name: MONROE Test user, Storage Quota remaining: 49597346816 bytes User quotas can be easily retrieved: 2 The command-line interface tool has been provided by Ana Custura, from the University of Aberdeen Court, in the context of the MONROE-PREC project. 32 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 Figure 11: Folder containing the results of an individual schedule, transferred to MONROE’s servers. $ monroe quota 2017-05-05 : Remaining time is 138888.00 hours. 2017-05-05 : Remaining storage quota is 46.00 GB. 2017-05-05 : Remaining data quota is 46.00 GB. Experiments can be easily submitted, and customized with various options: $ monroe create monroe/base --nodecount 5 --duration 600 Allocated task 1289. The tool allows retrieving the list of recent experiments: $ monroe experiments Experiment ID: 6798 Name: mike test on new nodes Script: steven76/headless Summary: {u’aborted’: 1} Experiment ID: 6799 Name: mike test on new nodes Script: steven76/headless Summary: {u’aborted’: 1} Experiment ID: 6800 Name: mike test on new nodes Script: steven76/headless Summary: {u’aborted’: 1} The results of an experiment can also be automatically retrieved: $ monroe results 6479 This command downloads the experiment results into 6479/sched_id, for all the task IDs associated to that experiment. For experiment creation, the tool supports defining SSH access to the container (in testing nodes), additional options and recurrence. Finally, the tool can be used as a library: from monroe.core import * 4 Retrieval of metadata and experiment results MONROE repositories contain two types of data: MONROE metadata itself and the results of user experiments. 4.1 User experiment results Any files written during the experiment to the /monroe/results directory will be synchronized to the experiment repository. This operation happens continuously during experiment execution and then upon its finalization. Therefore, it is advisable that only final files ready to be transferred are copied (indeed, mv’ed) to that location to avoid the system to sync temporary files and consume your quota or produce invalid results. This recommendation means that files in the results folder should not be updated; experimenters are encouraged to copy intermediate result files as soon as they are ready so they can retrieve partial results if the experiment fails in the middle of its execution. The result files can be accessed through the user interface: For experiments that have already been started, the interface presents a link under the column “Results” that redirects the user to the HTTP folder (Figure 11) that contains the files already synchronized from the node where the experiment runs to the repository. In this way, the experimenter can retrieve result files even for partial experiments that fail or are canceled. In addition, the experiment may use any network functionalities to communicate with outside servers as needed (e.g., scp some files to an external server). In order to improve safety, private keys should be restricted to the experiments and discarded after a reasonable time. Additionally, instead of saving your keys in the container itself, you may want to pass them as additional options during experiment scheduling. The values will be available during container execution as a JSON file at /monroe/config. Notice that this file is created by the node scheduler. The same effect is achievable when the containers are run manually in user development nodes 33 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 adding the -v option to the command line. To map both a locally created config file and the results folder of the container to a node folder, in development nodes without a scheduler, the following command line fragment may be used:3 -v /monroe/results:/monroe/results -v /monroe/config:/monroe/config:ro 4.2 MONROE metadata MONROE metadata can be freely accessed by two means. First, a CSV dump of all database tables is generated daily. The files can be accessed at the following URL (a valid user certificate is needed): https://www.monroe-system.eu/user/dailyDumps/. The dump files should be available every day after 12:00 CET (24-hour format). Each file covers the period [00:00, 00:00) GMT. Our servers run on CET time, but metadata timestamps use GMT. Therefore, to cover “a day” of metadata using, e.g., the local time in Norway, two CSV files need to be combined. During Winter time, the needed metadata is in the period [day0 :01:00, day1 :01:00). During Summer time, the needed metadata is in the period [day0 :02:00, day1 :02:00). Alternatively, metadata can be accessed directly in a replica of MONROE’s Cassandra database, which is updated daily approximately at noon with the data from the previous (GMT) day. Access credentials for this server will be provided as requested. MONROE repositories include several examples on how to access the database. 5 Run-time considerations for experimenters This section discusses several considerations that experimenters must take into account when designing and running their experiments on the MONROE platform. 5.1 Node identification An experiment can identify the node it is running on by reading the contents of the /nodeid file: cat /nodeid 54 5.2 Communication during the experiment During execution, the experiment is free to establish any network communications through the available interfaces. The user can choose to bind explicitly from each command or application to a specific interface, or they may define default routes during the experiment: route add default gw 172.16.0.1 eth0 5.3 Interface naming and default route To offer a consistent view of the platform resources, whereas allowing flexibility for future changes in the platform configuration, the following naming scheme is used for each of the interfaces available for the experiments: op0: op1: op2: eth0: First mobile interface. Second mobile interface. Only for old nodes, third mobile interface. Ethernet (wired) network connection, when available. The platform guarantees that a given opi corresponds to the same operator during experiment execution. However, the assignment may change between nodes in the same country or even between successive executions in the same node. Therefore, experiments must check the metadata stream to select the correct interface associated to the desired operator. Under some circumstances, the mobile devices used in the MONROE nodes may loose connectivity, reset themselves or undergo any other process that makes them temporarily unavailable for the experiments. To identify and tackle with these situations, experimenters are encouraged to build “robust” experiments subscribing to the corresponding metadata streams. If the experimenter writes their own code: 1. Subscribe to the metadata broadcast. 2. Wait for a MODEM.*.UPDATE message for the modem(s)/operators of interest. 3 Thanks to Eneko Atxutegi Narbona and Jonas Karlsson for pointing this out. 34 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 3. Once this information is obtained, use the desired interface and store the results with the corresponding ICCID or operator name. 4. Should the interface disappear (ENODEV error, “no such device”), start over at 2. When using an external tool that does not handle ENODEV (e.g., “fping”), replace step 4 by: • Monitor the metadata for a MODEM.*.CONNECTIVITY message indicating that connectivity was lost, or monitor the interface list to check if the device disappears. Upon either event, start over at 2. Experimenters should take notice that an interface may not only go down, but it may actually disappear from the list of available interfaces (e.g., if the modem has to be restarted). Even if it reappears soon after, any existing network connections on the old interface will fail with ENODEV. It is also possible to skip steps 1 and 2 when reconnecting to an interface after a failure, as the interface name corresponding to the desired operator is already known. It is still necessary to keep retrying to connect to the interface, until it comes up. 5.4 Interface binding Experiments running in MONROE nodes have access to several network interfaces. By default, that is, if the experiment does not take any special configuration actions, the default route will be configured to one of the mobile broadband interfaces, if available. However, experimenters have the possibility of explicitly binding external tools or their programs to specific interfaces. Several options are available to bind an experiment to an interface. 1. Most standard tools can be instructed to use an specific interface: ping -I op0 host_name tcpdump --I op0 target wget --bind-address ... curl --interface ... 2. Explicit binding in the source code. • In C: snprintf(ifr.ifr_name, sizeof(ifr.ifr_name), "op0"); setsockopt(s, SOL_SOCKET, SO_BINDTODEVICE, (void *)&ifr, sizeof(ifr)) localaddr.sin_addr.s_addr = inet_addr("192.168.1.100"); bind(sockfd, (struct sockaddr *)&localaddr, sizeof(localaddr)); • In Python: s = socket.socket() s.bind(’192.168.1.152’, 0)) 3. Library overloading the bind() and connect() functions through LD_PRELOAD: http://www.ryde.net/code/bind.c.txt 4. Changing the default route: route del default gw ...; route add ... 5.5 Metadata at run-time MONROE nodes retrieve constantly some metadata information concerning their own state and the network conditions. This information is continuously uploaded to the MONROE servers and stored in a database. One of the main goals of the MONROE project is to make all that information freely accessible. Therefore, experimenters may perform an off-line correlations of events in their experiment with the information in the MONROE database. MONROE experimenters can also access all the metadata information at run-time from their experiments to achieve easy correlation of events or modify the behavior of the experiment during its execution. For example: • Experiments that depend on external factors (location): – – – – – Round trip time vs. location. Proactive HTTP caching according to location. Round trip time vs. base station. Round trip time vs. signal strength. Route selection according to current conditions. • Experiment validation: 35 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 – Verify that node temperature is/was within limits. – Verify that system load is/was below threshold. The metadata is broadcast locally using ZeroMQ. The following excerpt in Python shows how an application can subscribe to the metadata stream: import zmq context = zmq.Context() socket = context.socket(zmq.SUB) socket.connect ("tcp://172.17.0.1:5556") # An empty string subscribes to everything: topicfilter = ’’ # E.g., use ’MONROE.META.DEVICE.GPS’ for GPS-only metadata socket.setsockopt(zmq.SUBSCRIBE, topicfilter) while True: string = socket.recv() print string 5.5.1 Example: Correlate experiment results with metadata at run-time The following example shows how to create an application that executes a ping to an external machine and saves the results alongside the node location: • Pipe the ping command through a “ping formatter.” • The “ping” formatter subscribes to a zmq socket and topic: – Socket : ’tcp://172.17.0.1:5556’ – Topic : ’MONROE.META.DEVICE.GPS’ • Cache the GPS position received. • Wait for output from the ping command (stdin). • Store experiment information including the GPS position: – Use the “library” monroe_exporter (python only). – Call the monroe_exporter script via the command line. Below is the corresponding source code: socket.connect(’tcp://localhost:5557’) socket.setsockopt(zmq.SUBSCRIBE, ’MONROE.META.DEVICE.GPS’) LAST_GPS_FIX = None monroe_exporter.initalize(’MONROE.EXP.PING’, 1, 5.0) ’’’fork and wait for for gps messages’’’ while True: (topic, msgdata) = socket.recv_multipart() LAST_GPS_FIX = json.loads(msgdata) ’’’main process waits for ping experiment output ’’’ while line: exp_result = r.match(line).groupdict() msg = { ’InterfaceName’: interface, ’Bytes’: int(exp_result[’bytes’]), ’Host’: exp_result[’host’], ’Rtt’: float(exp_result[’rtt’]), ’SequenceNumber’: int(exp_result[’seq’]), ’TimeStamp’: float(exp_result[’ts’]) 36 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 } if LAST_GPS_FIX != None: msg.update( { ’GPSTimeStamp’: LAST_GPS_FIX[’TimeStamp’], ’Latitude’: LAST_GPS_FIX[’Latitude’], ’Longitude’: LAST_GPS_FIX[’Longitude’], ’Altitude’: LAST_GPS_FIX[’Altitude’], ’NumberofSatellites’: LAST_GPS_FIX[’NumberofSatellites’] }) monroe_exporter.save_output(msg) line = sys.stdin.readline() 5.5.2 Metadata information Currently, the collected metadata includes: • • • • Node GPS. Node sensors (CPU temp) and probes (load, memory usage). Modem status and events. Continuous and scheduled internal experiments: – RTT (through ping). – Bandwidth (through HTTP download). The following and some examples of the information received in the metadata stream: • RTT experiment: {"DataId": "MONROE.EXP.PING", "Bytes": 84, "NodeId": "54", "SequenceNumber": 301, "DataVersion": 1, "Timestamp": 1465805479.747943, "Rtt": 71.2, "Host": "8.8.8.8", "Operator": "Orange", "Iccid": "8934014251541036013", "Guid": "sha256:a9f9fb2c04bba3782ef2624e118faa18f16b08c826155cae5e1ea7e1d88832b5.0.54.3791"} • Sensors, where each message may contain information about a different set of measurements: {"DataId": "MONROE.META.NODE.SENSOR", "softirq": "205270", "SequenceNumber": 48581, "DataVersion": 1, "b": "1059270", "b": "4885494", "guest": "0", "NodeId": "54", "idle": "42657942", "user": "10480984", "irq": "0", "steal": "0", "Timestamp": 1465786966.123456, "nice": "3063"} {"DataId": "MONROE.META.NODE.SENSOR", "SequenceNumber": 48567, "DataVersion": 1, "Timestamp": 1465786961.123456, "percent": "65.98", "NodeId": "54", "current": "302234", "start": "1465484726", "total": "5246545.72", "id": "39"} {"DataId": "MONROE.META.NODE.SENSOR", "SequenceNumber": 48460, "DataVersion": 1, "Timestamp": 1465786926.123456, "apps": "3632746496", "NodeId": "54", "free": "483119104", "swap": "0"} • Modem events: {"DataId": "MONROE.META.DEVICE.MODEM", "InterfaceName": "usb2", "CID": 72209509, "DeviceState": 3, "SequenceNumber": 33548, "DataVersion": 1, "Timestamp": 1465803136.123456, "NWMCCMNC": 21404, "Band": 3, "RSSI": -80, "IPAddress": "10.33.101.173", "IMSIMCCMNC": 21404, "DeviceMode": 5, "NodeId": "54", "IMEI": "864154023645179", "RSRQ": -8, "RSRP": -85, "LAC": 28014, "Frequency": 1800, "InternalIPAddress": "192.168.0.153", "Operator": "YOIGO", "ICCID": "8934041514050774002", "IMSI": "214040113950108"} • GPS: {"DataId": "MONROE.META.DEVICE.GPS", "SequenceNumber": 34164, "DataVersion": "Timestamp": 1465805718.123456, "Altitude": -1455.900024, "NodeId": "63", 37 of 67 1, Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 Table 4: Metadata topics. TOPIC DESCRIPTION *.DEVICE.MODEM.iccid.UPDATE *.DEVICE.MODEM.iccid.MODE *.DEVICE.MODEM.iccid.SIGNAL *.DEVICE.MODEM.iccid.LTEBAND *.DEVICE.MODEM.iccid.ISPNAME *.DEVICE.MODEM.iccid.IPADDR *.DEVICE.MODEM.iccid.LOCCHANGE *.DEVICE.MODEM.iccid.NWMCCMNCCHANGE *.DEVICE.GPS *.NODE.SENSOR.sensor_name *.NODE.EVENT Temp sensor, running experiments, quotas, . . . Power up events, etc, . . . "Longitude": -3.777019, "NMEA": "$GPGGA,081518.0,4020.002011,N,00346.621107,W,1,02,500.0,-1455.9,M,53.0,M„*5D\r\n", "SatelliteCount": 2, "Latitude": 40.333366} 5.5.3 Metadata format Metadata and internal experiment results follow a JSON structure, as detailed in https://github.com/MONROE-PROJECT/Experiments/ wiki : • All Metadata messages have a topic according to Table 4. Appendix B gives the complete description of the meaning of all the metadata fields. • All metadata topics are prefixed with “MONROE.META.” • All internal experiments are prefixed with “MONROE.EXP.” • Experiments receive metadata messages only for topics to which they subscribe. • An empty string ("") subscribes to all topics. 5.6 Tstat at run-time The Tstat (http://www.tstat.polito.it/) runs on all nodes in the mPlane container as one of the basic MONROE containers. The Tstat is a passive probe able to provide several insight on the traffic patterns at both the network and the transport levels. The Tstat generates two different types of logs. 5.6.1 Tstat Round Robin Database The RRD (Round Robin Database) logs is an average of samples of each packet in 5 minutes, it imposes at least 5 minutes delay to visualize RRDs. The detail description of the RRD logs is available on Tstat documentation(http://tstat.polito.it/HOWTO.shtml# RRD). RRD are available via the (http://monroe-repository.polito.it:8080/) and the Graphite GUI provides some tool to present RRD logs and save the interested plots. Fig. 12 shows the bit rate of the ICMP packet for the node #38 on interface op0 over the last 24 hours. There is possibility to create a dashboard to monitor the experiments and interfaces’ status. Fig. 13 illustrates an example of saved dashboard to monitor the volume of traffic on one node. 5.6.2 Tstat logs Tstat generates detailed flow level logs for TCP, UDP, and HTTP flows. These are text file with more than 100 metrics, containing information about the client and server addresses, network and application level metrics, and DNS queries. The description of the metrics presents (http://tstat.polito.it/measure.shtml#LOG). In MONROE, the Tstat configure to generate 4 different logs as following: Logs are available in two ways, 38 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 Figure 12: Graphite GUI of the Tstat RRD logs. Table 5: Tstat log types. TYPE DESCRIPTION log_tcp_complete log_tcp_nocomplete log_udp_complete log_http_complete Every TCP connection that has been tracked All the connections for which the three way handshake is not properly seen Every tracked UDP flow pair Information from every HTTP request and response 1. Real time access on the node, logs for the last three generated are shared with MONROE experimenters on the "/monroe/tstat", it helps the MONROE users to use passive traces collected by Tstat during their experiment. The three logs can cover at most the last three hours. 2. On demand, all logs are imported into MONROE database for all node. The schema of the tables are available on github (https: //github.com/MONROE-PROJECT/Database/blob/master/db_schema.cql). Three columns, (NodeId,Iccid,DataId) added to each table bring the possibility to join with metadata and collected data. It is recommended to check the description of the logs on (http://tstat.polito.it/measure.shtml#LOG). Tables 6, 7 and 8 present the table describing of some interesting metrics in tcp and http logs. 5.7 Access to user-owned development nodes This section refers to development nodes owned by external users under the dispositions of their specific MONROE agreement. Two options are possible for the management of those nodes: 1. The nodes join the pool of MONROE nodes. Experiments are scheduled through the MONROE scheduler and users, including the node owners, do not have direct SSH access to them. The metadata produced by these nodes will join the rest of the MONROE databases. 2. The nodes are considered “development nodes” for private use of their owners. In that case, they will not join the MONROE platform and will not be accessible through the MONROE scheduler, neither for their owners nor for other users. The nodes will be marked as “storage” or “development.” Thus, users (again, only their owners) must log locally into the nodes to manually 39 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 Table 6: Core TCP Set. C2S S2C Short description Unit Long description 1 2 3 4 5 6 7 8 9 10 11 12 13 14 29 30 31 32 33 34 35 36 37 38 39 40 41 42 15 16 17 18 19 20 21 22 23 24 25 26 27 28 Client/Server IP addr Client/Server TCP port packets RST sent ACK sent PURE ACK sent unique bytes data pkts data bytes rexmit pkts rexmit bytes out seq pkts SYN count FIN count First time abs Last time abs Completion time C first payload S first payload C last payload S last payload C first ack S first ack C internal S internal C anonymized S anonymized Connection type – – – 0/1 – – B – B – B – – – ms ms ms ms ms ms ms ms ms 0/1 0/1 0/1 0/1 – P2P type HTTP type – – IP addresses of the client/server TCP port addresses for the client/server total number of packets observed from the client/server 0 = no RST segment has been sent by the client/server number of segments with the ACK field set to 1 number of segments with ACK field set to 1 and no data number of bytes sent in the payload number of segments with payload number of bytes transmitted in the payload, including retransmissions number of retransmitted segments number of retransmitted bytes number of segments observed out of sequence number of SYN segments observed (including rtx) number of FIN segments observed (including rtx) Flow first packet absolute time (epoch) Flow last segment absolute time (epoch) Flow duration since first packet to last packet Client first segment with payload since the first flow segment Server first segment with payload since the first flow segment Client last segment with payload since the first flow segment Server last segment with payload since the first flow segment Client first ACK segment (without SYN) since the first flow segment Server first ACK segment (without SYN) since the first flow segment 1 = client has internal IP, 0 = client has external IP 1 = server has internal IP, 0 = server has external IP 1 = client IP is CryptoPAn anonymized 1 = server IP is CryptoPAn anonymized Bitmap stating the connection type as identified by TCPL7 inspection engine (see protocol.h) Type of P2P protocol, as identified by the IPP2P engine (see ipp2p_tstat.h) For HTTP flows, the identified Web2.0 content (see the http_content enum in struct.h) 43 44 Table 7: TCP End to End Set. C2S S2C Short description Unit Long description 45 52 Average rtt ms 46 47 48 49 50 51 53 54 55 56 57 58 rtt min rtt max Stdev rtt rtt count ttl_min ttl_max ms ms ms – – – Average RTT computed measuring the time elapsed between the data segment and the corresponding ACK Minimum RTT observed during connection lifetime Maximum RTT observed during connection lifetime Standard deviation of the RTT Number of valid RTT observation Minimum Time To Live Maximum Time To Live 40 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 Figure 13: An example of dashboard on Tstat RRD GUI. schedule their containers using Docker commands. The nodes will not run the base experiments; no metadata, or any other information produced by them will join the MONROE databases. In essence, “managed” nodes are part of the testbed and work as any other ones, whereas “development” nodes are for private use of their owners. The following paragraphs provide relevant information for the use of development nodes. 5.7.1 Accessing user-owned development nodes Development nodes can be accessed either through the management interface (the black wire connected to eth2) via SSH, or directly via the serial console (DB9 connector, using a null-modem cable). The necessary passwords will be provided on request through a secure channel. Table 9 explains the uses of each available user. Do not distribute passwords or keys to unauthorized personnel. Do not send passwords or keys over insecure channels. Use of the administrator user ’monroeSA’ is allowed only for development on local nodes, unless granted permission to perform a specific task requiring this user. Creation of user accounts on nodes is forbidden. Modifying user accounts on nodes is forbidden. Modifying authorized_keys on nodes is forbidden. Be VERY careful if you change any firewall settings, and only do this on development nodes. Be smart. Local access, which allows password authentication, can be achieved through the serial port and the management interface. The APU’s third ethernet port (eth2), nearest the USB ports, has a default IP address, 172.16.254.1/24 for the Head and 172.16.254.2/24 for the Tail. The nodes can be accessed by setting up a static IP address in the 172.16.254.0/24 network span (e.g., 172.16.254.20) on the developer side of the link and establishing an SSH connection. The DB-9 serial port (console) allows direct terminal access. The boot process and grub menu are visible and interactive through this connection; some kernel messages will be printed as well while connected. Connecting to the console port requires a null modem cable. In the following examples, /dev/ttyS0 has to be substituted with the device path for the developer’s cable. A typical case for USB-to-serial adapters is /dev/ttyUSB0: minicom -D /dev/ttyS0 6 ---or--- screen /dev/ttyS0 115200 Monitoring node status The state of the nodes can be checked under the tab “Resources.” Figure 14 shows an example of the supplied information. Experimenters can use the operator codes and names to manually pick nodes with concrete operators. 41 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 Table 8: Core HTTP Set. C2S S2C Short description Unit Long description 1 2 3 4 5 6 7 8 9 10 11 12 13 1 2 3 4 5 Client IP addr Client TCP port Server IP addr Server TCP port Segment time abs Request method Hostname FQDN URL Path Referer User agent Cookie Do Not Track Response string Response code Content len Content type Server Range Location Set Cookie – – – – s – – – – – – – – – – B – – – – – IP addresses of the client (sending the request/receiving the response) TCP port addresses for the client IP addresses of the server (receiving the request/sending the response) TCP port addresses for the server Absolute time [s] (epoch) of the request/response Request method (GET/POST/HEAD) [*] Value fo the “Host:” HTTP request field DN-Hunter cached DNS name [ˆ] URL request path Value of the “Referer:” HTTP request field Value of the “User-Agent:” HTTP request field Value of the “Cookie:” HTTP request field Value of the “DNT:” HTTP request field Response identifier (always “HTTP”) [*] HTTP response code (2xx/3xx/4xx/5xx) Value of the “Content-Length:” HTTP response field Value of the “Content-Type:” HTTP response field Value of the “Server:” HTTP response field Value of the “Content-Range:” HTTP response field for partial content (Code 206) Value of the “Location:” HTTP response field for redirected content (Code 302) Value of the “Set-Cookie:” HTTP response field 6 7 8 9 10 11 12 13 Table 9: Node users USER PASSWORD SUDO USES monroe monroeSA [redacted] [redacted] reboot yes maintenance, troubleshooting administration, development 42 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 Figure 14: Status of the MONROE nodes. The screen capture shows all types of nodes in Spain. The green approval sign (“thumbs-up”) close to the node IDs indicates that this node is capable of executing experiments. Clicking on the “Location” link for a node opens a Google Maps page showing the location of the node. Finally, the bottom part of the screen shows a “map” of nodes that allows users and MONROE administrators to quickly identify available (and problematic) nodes in the platform. Column “Location” opens a Google Maps window with the last known position of the node, when available. Similarly, column “Graphs” opens the visualization page for the selected node. There, experimenters can see the last known RTT and RSSI measures for the node, its current location and state. 7 MONROE templates, examples and default experiments This section details the template for building MONROE experiments, the experiments that run as part of the default MONROE platform and several additional examples that can be directly used or that can serve as the basis for new ones. The source code for the examples is publicly available at https://github.com/MONROE-PROJECT/Experiments. 7.1 Example template This experiment template provides an extensive example to show the capabilities of the MONROE platform. The experiment will download a url (file) over http using curl from a configurable operator while at the same time recording the GPS positions of the node. If the operator is not available at the time of execution, the experiment will fail. 43 of 67 Project no. 644399 User manual MONROE Platform User manual 7.1.1 Public Rev. 1.0/ March 14, 2019 Usage The configuration values can be supplied as a JSON string in the “Additional options” field of the web user interface. This allows to specify a different set of parameters for each execution of the experiment. The values of the configuration parameters can be read by the experiment from the /monroe/config file. The following text shows a configuration file with per-execution (“additional options” field) options:4 { "stop": 1486653420, "start": 1486653120, "traffic": 1048576, "script": "mikepeon/mike-depurar", "shared": 0, "storage": 134217728, "resultsQuota": 0, "guid": "sha256:3796f833f55c8dbca7e9845ea06120ccebec85c2770c0de2deb57509300efa44.165695.48.1", "option1": "value1", "option2": "value2", "nodeid": "48" } The default configuration values are as follows: { # The following values are specific to the monroe platform "guid": "no.guid.in.config.file", # Created by the scheduler "nodeid": "no.nodeid.in.config.file", # Created by the scheduler "storage": 104857600, # Created by the scheduler "traffic": 104857600, # Created by the scheduler "script": "jonakarl/experiment-template", # Created by the scheduler "zmqport": "tcp://172.17.0.1:5556", "modem_metadata_topic": "MONROE.META.DEVICE.MODEM", "gps_metadata_topic": "MONROE.META.DEVICE.GPS", # "dataversion": 1, # Version of the experiment # "dataid": "MONROE.EXP.JONAKARL.TEMPLATE", # Name of the experiement "meta_grace": 120, # Grace period to wait for interface metadata "exp_grace": 120, # Grace period before killing experiment "meta_interval_check": 5, # Interval to check if interface is up "verbosity": 2, # 0="Mute", 1=error, 2=information, 3=verbose "resultdir": "/monroe/results/", # These values are specic for this experiment "operator": "Telenor SE", "url": "http://193.10.227.25/test/1000M.zip", "size": 3*1024 - 1, # The maximum size in Kbytes to download "time": 3600 # The maximum time in seconds for a download } The download will abort when either size OR time OR actual size of the “url” is downloaded. All debug/error information will be printed on stdout, depending on the “verbosity” variable. 7.1.2 Requirements The following directories and files must exist and have read and write permissions for the user/process running the container: • /monroe/config, supplyed by the scheduler in the nodes. • “resultdir,” according to the values supplied in the configuration string or the default ones (Section 7.1.1). 4 Entries in the /monroe/config file may appear in different order. 44 of 67 Project no. 644399 User manual MONROE Platform User manual 7.1.3 Public Rev. 1.0/ March 14, 2019 Output The experiment will execute a statement similar to running curl with the following command line: curl -o /dev/null --raw --silent --write-out "{ remote: %{remote_ip}:%{remote_port}, size: %{size_download}, speed: %{speed_download}, time: %{time_total}, time_download: %{time_starttransfer} }" --interface eth0 --max-time 100 --range 0-100 http://193.10.227.25/test/1000M.zip The experiment will produce a single-line JSON object similar to this (pretty printed to improve readability): { "Bytes": 30720000, "DataId": "313.123213.123123.123123", "DataVersion": 1, "DownloadTime": 2.716, "GPSPositions": [ { "Altitude": 225.0, "DataId": "MONROE.META.DEVICE.GPS", "DataVersion": 1, "Latitude": 59.404697, "Longitude": 13.581558, "NMEA": "$GPGGA,094832.0,5924.281896,N,01334.893500,E,1,05,1.6,225.0,M,35.0,M,,*5D\r\n", "SatelliteCount": 5, "SequenceNumber": 14, "Timestamp": 1465551728 }, { "DataId": "MONROE.META.DEVICE.GPS", "DataVersion": 1, "Latitude": 59.404697, "Longitude": 13.581558, "NMEA": "$GPRMC,094832.0,A,5924.281896,N,01334.893500,E,0.0,,100616,0.0,E,A*2B\r\n", "SequenceNumber": 15, "Timestamp": 1465551728 } ], "Guid": "sha256:15979bc2e2449b0011826c2bb8668df980da88221af3fc7916cb2eba4f2296c1.0.45.15", "Host": "193.10.227.25", "Iccid": "89460850007006922138", "InterfaceName": "usb0", "NodeId": "45", "Operator": "Telenor SE", "Port": "80", "SequenceNumber": 1, "SetupTime": 0.004, "Speed": 11295189.0, "TimeStamp": 1465551458.099917, "TotalTime": 2.72 } 7.1.4 Overview of the code structure The experiment consists of one main process and two sub processes, where one process listens to modem and gps information, and the other executes the experiment. The main process supervises the execution of its two children. 45 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 Information sharing between processes. Information is shared between processes via two thread-safe data structures (i.e., a Python “Manager” object). Regarding modem information, the latest metadata update (for the specified operator) is stored in a dictionary. The GPS information is continuously appended to a list as it is received. The metadata sub-process. This process listens to GPS and modem messages sent on the ZeroMQ bus and updates the shared data structures. The experiment sub-process. This process reads entries from the shared data structures, runs the experiment and saves its result when finished. 7.2 Docker miscellaneous usage notes • List running containers: docker ps • Debug shell: docker run -i -t --entrypoint bash --net=host template • Normal execution with output to stdout: docker run -i -t --net=host template • Attach to a running container (with shell): docker exec -i -t [container runtime name] bash • Get container logs (stderr and stdout): docker logs [container runtime name] 7.3 Experiment: ping This background experiment runs continuously an RTT estimate on each MBB operator on the node (one independent experiment is run per interface). The experiments measure IP RTT by continuously sending ping packets to a configurable server (by default 8.8.8.8, Google’s public DNS server). The experiment will send one “Echo Request” (ICMP type 8) packet per second over the specified interface until aborted. RTT is measured as the time between the echo request is sent and the echo reply (ICMP type 0) is received from the server. The experiment runs on all interfaces in parallel. 7.3.1 Usage The experiment is designed to run as a Docker container and will not attempt to do any active network configuration. If the specified interface does not exist (i.e., is not up) when the experiment starts, it will immediately exit. The default parameter values are: { "guid": "no.guid.in.config.file", # Created by the scheduler "zmqport": "tcp://172.17.0.1:5556", "nodeid": "fake.nodeid", "modem_metadata_topic": "MONROE.META.DEVICE.MODEM", "server": "8.8.8.8", # ping target "interval": 1000, # time in ms between successive packets "dataversion": 2, "dataid": "MONROE.EXP.PING", "meta_grace": 120, # Grace period to wait for interface metadata "ifup_interval_check": 5, # Interval to check if interface is up "export_interval": 5.0, "verbosity": 2, # 0="Mute", 1=error, 2=Information, 3=verbose "resultdir": "/monroe/results/", "modeminterfacename": "InternalInterface", "interfacename": "eth0", # Interface to run the experiment on "interfaces_without_metadata": ["eth0", "wlan0"] # Manual metadata on these interfaces } 46 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 All debug/error information will be printed on stdout depending on the value of the “verbosity” parameter. 7.3.2 Requirements The following directories and files must exist and have read and write permissions for the user/process running the container: • /monroe/config, supplyed by the scheduler in the nodes. • “resultdir,” according to the values supplied in the configuration string or the default ones (Section 7.1.1). 7.3.3 Output The experiment will execute a statement similar to running fping with the following command line: fping -I eth0 -D -c 1 -p 1000 -l 8.8.8.8 The experiment will produce one of the two following single-line JSON objects, depending on whether it got a reply form the server or not. If a reply was received: { "Guid": "313.123213.123123.123123", # exp_config[’guid’] "Timestamp": 23123.1212, # time.time() "Iccid": 2332323, # meta_info["ICCID"] "Operator": "Telia", # meta_info["Operator"] "NodeId" : "9", # exp_config[’nodeid’] "DataId": "MONROE.EXP.PING", "DataVersion": 2, "SequenceNumber": 70, "Rtt": 6.47, "Bytes": 84, "Host": "8.8.8.8", } If the reply was not received (Bytes and RRR values are not present): { "Guid": "313.123213.123123.123123", # exp_config[’guid’] "Timestamp": 23123.1212, # time.time() "Iccid": 2332323, # meta_info["ICCID"] "Operator": "Telia", # meta_info["Operator"] "NodeId" : "9", # exp_config[’nodeid’] "DataId": "MONROE.EXP.PING", "DataVersion": 2, "SequenceNumber": 71, "Host": "8.8.8.8", } 7.4 Experiment: http_download This is a periodically scheduled experiment that monitors the download speed of each MBB operator on the node. The experiment will, over each MBB operator in sequence, download the specified url (file) with curl (http), presenting one result per interface. The MONROE experiment template described in Section 7.1 corresponds to this experiment, therefore, it is not further detailed here. 7.5 Experiment: Tstat & mPlane The mPlane protocol provides control and data interchange for passive and active network measurement tasks. It is built around a simple workflow that can interact with different frameworks to provide the results of the measurements. This package includes an mPlane proxy and generic configuration files for Tstat. mPlane captures traffic flow on all interfaces with the Tstat (http://tstat.polito.it/) probe. The mPlane container is always running as one of the default experiments on all MONROE nodes. The Tstat passive traces are stored locally on the node and 47 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 are accessible by the experimenters. A detailed description and the source code are available on github (https://github.com/ MONROE-PROJECT/mPlane). Tstat RRD logs and the compressed log are stored in the node at /experiments/monroe/mplane. Tstat logs are transfered to the MONROE server and imported into MONROE’s (Cassandra) database. The structure of the database tables is available on github (https://github.com/MONROE-PROJECT/Database/blob/master/db_schema.cql). During experiment execution, the last three Tstat logs are shared with the experiment at /monroe/tstat. Therefore, MONROE users can access the passive traces collected by Tstat during their experiments. The data collected for a subset of the most relevant metrics for the HTTP experiments are visualized by the MONROE visualization tool. And example of the metrics contained in the Tstat logs can be seen here: http://213.182.68.136:8080/#/experiment/ tstat. 7.5.1 Requirements The script must have access to /nodeid and run get_nodeid. 7.5.2 Usage Create your docker image normally and execute the container with the following command line: docker run -i -t --net=host -d -v /mplane:/monroe/results -v /tstat:/monroe/tstat -v /etc/nodeid:/nodeid:ro monroe/mplane 7.6 MONROE example: helloworld This experiment provides an easy example for using the configuration options from the scheduler, listen to and record the metadata stream (e.g., GPS and operator information), and show the experiment log functionality on a MONROE node. The experiment listens to the metadata stream and records the nr_of_messages first messages. The metadata messages are saved in JSON format with a custom field (“Hello”) in the output directory. Additionally, the experiment prints out some debugging messages to show how these messages are logged and later retrieved via the web user interface. 7.6.1 Usage The experiment is configured with a JSON string introduced via the “Additional options” field in the web user interface. The configurable parameters and their default values are: { "zmqport": "tcp://172.17.0.1:5556", "nodeid": "fake.nodeid", "metadata_topic": "MONROE.META", "verbosity": 2, "resultdir": "/monroe/results/", "nr_of_messages": 3 } 7.6.2 # Needs to be overriden # 0 = "Mute", 1=error, 2=Information, 3=verbose Requirements The following directories and files must exist and have read and write permissions for the user/process running the container: • /monroe/config, supplyed by the scheduler in the nodes. • “resultdir,” according to the values supplied in the configuration string or the default ones (Section 7.6.1). 7.6.3 Output The experiment will produce a single-line JSON object similar to the following ones, depending on the metadata received (“pretty printed” here to improve readability): 48 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 { "DataId": "MONROE.META.NODE.SENSOR", "DataVersion": 1, "SequenceNumber": 58602, "Timestamp": 1465888420, "NodeId": "9", "Hello": "World" } The log file will contain records similar to these ones: [2017-02-07 09:53:27.190338] Hello: Default config { "metadata_topic": "MONROE.META", "nodeid": "fake.nodeid", "nr_of_messages": 3, "resultdir": "/monroe/results/", "verbosity": 2, "zmqport": "tcp://172.17.0.1:5556" } [2017-02-07 09:53:27.20000] Hello: Start recording messages with configuration { "metadata_topic": "MONROE.META", "nodeid": "fake.nodeid", "nr_of_messages": 3, "resultdir": "/monroe/results/", "verbosity": 2, "zmqport": "tcp://172.17.0.1:5556" } [[2017-02-07 09:53:27.30000] Received message 1 with topic : MONROE.META.NODE.SENSOR { "DataId": "MONROE.META.NODE.SENSOR", "DataVersion": 1, "SequenceNumber": 58602, "Timestamp": 1465888420, "NodeId": "9", "Hello": "World" } . # And so on for each metadata message received until the configured value of metadata messages . . [2017-02-07 09:53:27.40000] Hello : Finished the experiment 7.7 MONROE example: paris-traceroute This example showcases how to use the MONROE-modified version of paris-traceroute inside a container. The binary of this tool is included in the base image of MONROE. The original version of paris-traceroute has no option to choose which interface should be used. In this version, flags to set the interface and source IP of the transmitted packets have been added. Setting the interface is obligatory; if it is not set, the program will crash (by design), since if the interface were chosen automatically, it would probably not be what the experimenter intended to use. The source IP flag is optional. Just setting the IP flag to the IP of an interface without setting the interface flag will not work either. This is done on purpose as well, as it might be possible for multiple interfaces to have the same IP within the MONROE network namespace. If the IP flag is not set, the source IP is set to the IP of the chosen interface. 7.7.1 Usage (inside a MONROE container) The parameters of this experiment are provided as “Additional options” in the scheduling web interface. The following JSON string is an example of the additional options that can be passed to this container: 49 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 "interfaces": ["op1", "op2"], "targets": ["8.8.8.8", "www.uc3m.es"], "traceAlgos": ["exh"], "protocol": "udp" Flags: -C -O --nodeIPArgument --nodeInterfaceArgument Source IP Source interface (mandatory) The paris-traceroute binary can be executed (as any normal Linux command) either without specifying a traceroute algorithm to perform a “simple” traceroute (similar to the output of the ordinary traceroute command), or with the flags -n -a exh, to perform an exhaustive traceroute. Exhaustive traceroutes provide more detailed and accurate paths between the host (MONROE node) and the target server that are able to detect, among others, the presence of load balancers, which create multiple paths between host and target. 7.7.2 Output The experiment output is a text file: root@b59e69a56297:/# paris-traceroute -O op2 -C 192.168.1.127 8.8.8.8 traceroute [(192.168.1.127:33456) -> (8.8.8.8:33457)], protocol udp, algo hopbyhop, duration 18 s 1 192.168.1.1 (192.168.1.1) 2.946 ms 0.553 ms 0.559 ms 2 * * * 3 10.133.17.29 (10.133.17.29) 83.259 ms 136.577 ms 82.050 ms 4 10.133.17.14 (10.133.17.14) 78.783 ms 131.510 ms 79.231 ms 5 10.133.17.236 (10.133.17.236) 84.243 ms 133.024 ms 79.785 ms 6 10.133.17.3 (10.133.17.3) 81.543 ms 139.381 ms 100.263 ms 7 83.224.40.186 (83.224.40.186) 89.319 ms 188.926 ms 179.963 ms MPLS Label 24703 TTL=254 8 83.224.40.185 (83.224.40.185) 82.710 ms 172.438 ms 147.020 ms 9 85.205.14.105 (85.205.14.105) 85.179 ms 137.514 ms 125.869 ms 10 72.14.223.169 (72.14.223.169) 85.609 ms 137.363 ms 118.063 ms 11 216.239.47.128 (216.239.47.128) 79.567 ms 146.356 ms 145.285 ms 12 209.85.243.33 (209.85.243.33) 129.615 ms 198.938 ms 269.407 ms MPLS Label 568892 TTL=1 13 64.233.174.143 (64.233.174.143) 108.599 ms 185.810 ms 246.661 ms MPLS Label 692130 TTL=1 14 108.170.234.47 (108.170.234.47) 111.645 ms 825.615 ms 1424.942 ms 15 * * * 16 google-public-dns-a.google.com (8.8.8.8) 103.087 ms !T2 166.279 ms !T2 224.649 ms !T2 7.7.3 Additional remarks Paris-traceroute instances should be run sequentially and preferably when the node is generating little traffic in general because it uses raw packet capture to detect the replies from intermediate nodes and background traffic might interfere with this process. 7.8 MONROE example: headlessbrowsing This experiment evaluates the performance of different HTTP protocols (HTTP1.1, HTTP1.1/TLS, HTTP2) using the headless Firefox browser. It uses the Selenium browser-automation framework, which enables execution of web-browsing automation tests in different browsers such as Firefox and Chrome. The Selenium web-driver is used for Firefox. For a given url, HTTP protocol and source network interface, Selenium launches the native Firefox browser to visit that url. 7.8.1 Output This experiment generates an HTTP ARchive (HAR) file during the download of a target url that helps to find afterwards the impact of different web-page features on its overall Page Load Time (PLT). The experiment generates a single JSON file such as: 50 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 { "DataId":"MONROE.EXP.FIREFOX.HEADLESS.BROWSING", "ping_min":" 55.6", "ping_max":"56.8", "NumObjects":6, "InterfaceName":"usb2", "Web load time":196, "PageSize":35641, "DataVersion":1, "Timestamp":1481536829.0814, "NWMCCMNC":22210, "Objects":[ { "objectSize":1951, "mimeType":"image/png", "startedDateTime":"2016-12-12T10:00:21.293+00:00", "url":"https://www.wikipedia.org/portal/wikipedia.org/assets/img/Wikipedia_wordmark.png", "timings":{"receive":1, "send":0, "connect":1, "dns":0, "blocked":0, "wait":60}, "time":62 }, { "objectSize":13196, "mimeType":"image/png", "startedDateTime":"2016-12-12T10:00:21.294+00:00", "url":"https://www.wikipedia.org/portal/wikipedia.org/assets/img/Wikipedia-logo-v2.png", "timings":{"receive":52, "send":3, "connect":59, "dns":2, "blocked":0, "wait":53 }, "time":169 }, { "objectSize":9425, "mimeType":"application/javascript", "startedDateTime":"2016-12-12T10:00:21.295+00:00", "url":"https://www.wikipedia.org/portal/wikipedia.org/assets/js/index-abc278face.js", "timings":{"receive":3, "send":0, "connect":120, "dns":0, "blocked":0, "wait":65}, "time":188 }, { "objectSize":1164, "mimeType":"application/javascript", "startedDateTime":"2016-12-12T10:00:21.296+00:00", "url":"https://www.wikipedia.org/portal/wikipedia.org/assets/js/gt-ie9-c84bf66d33.js", "timings":{"receive":0, "send":1, "connect":64, "dns":2, "blocked":0, "wait":70 }, "time":137 }, { "objectSize":1590, "mimeType":"image/png", "startedDateTime":"2016-12-12T10:00:21.381+00:00", "url":"https://www.wikipedia.org/portal/wikipedia.org/assets/img/sprite-icons.png? 27378e2bb51199321b32dd1ac3f5cd755adc21a5", "timings":{"receive":1, "send":0, "connect":1, "dns":0, "blocked":0, "wait":49 }, "time":51 }, { "objectSize":8315, "mimeType":"image/png", 51 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 "startedDateTime":"2016-12-12T10:00:21.425+00:00", "url":"https://www.wikipedia.org/portal/wikipedia.org/assets/img/sprite-project-logos.png? dea6426c061216dfcba1d2d57d33f4ee315df1c2", "timings":{"receive":2, "send":0, "connect":8, "dns":0, "blocked":0, "wait":54 }, "time":64 } ], "IPAddress":"2.43.181.254", "IMSIMCCMNC":22210, "tracedRoutes":["192.168.96.1", "193.10.227.25", "xx.xx.xx.xx" ..... "192.168.96.1" ], "InternalInterface":"op0", "NodeId":"41", "ping_exp":1, "Protocol":"HTTP1.1", "SequenceNumber":1, "url":"www.wikipedia.org", "ping_avg":"56.2", "InternalIPAddress":"192.168.96.123", "Operator":"voda IT", "Iccid":"8939104160000392116" } 7.9 MONROE example: pReplay The pReplay experiment replays the dependency graph of a web site. The traversal begins with the first activity: Loading the root HTML. After building the dependency graph, it acts for each task whose dependencies have already been met. For network tasks, it makes a request for the corresponding url; correspondingly, for computation activities, it waits for the amount of time mentioned in the graph. Once a particular activity is finished, pReplay checks if any activities depending on that one have already met all of their dependencies and must thus be triggered. pReplay walks through the dependency graph until all activities in the graph have been visited. 7.9.1 Usage Execute pReplay on a command line inside a container as with any other Linux command: ./pReplay interface_name server testfile [http|https|http2] [max-connections] [cookie-size] Parameters: • • • • interface_name: Source interface for outgoing traffic. server: DNS name or IP address. testfile: Relative path to test file in JSON format. protocol: – http: http 1.1 – https: http 1.1 with SSL – http2: http 2 • max-connections: Maximum amount of concurrent connections. • cookie-size: Size of cookie — works with http1 only. 7.10 MONROE example: astream AStream is a Python based emulated video player to evaluate the performance of the DASH bitrate adaptation algorithms. The supported rate adaptation algorithms are: • Basic adaptation. • Segment Aware Rate Adaptation (SARA) [2]. • Buffer-Based Rate Adaptation (Netflix) [1]. 52 of 67 Project no. 644399 User manual MONROE Platform User manual 7.10.1 Public Rev. 1.0/ March 14, 2019 Usage The experimenter can choose the rate adaptation algorithm passing a JSON string to the scheduler through the user interface (e.g., "playback":"NETFLIX"). The default is the basic adaptation scheme. Additionally, the user can specify the target MPD file to play (e.g., "mpd_file":"http://128.39.37.161:8080/BigBuckBunny_4s.mpd") and the number of segments to retrieve (e.g., "segment_limit":10). 7.10.2 Output The astream container outputs two log files: 1. Buffer logs: Epoch time, current playback time, current buffer size (in segments), current playback state. 2. Playback logs: Epoch time, playback time, segment number, segment size, playback bitrate, segment duration, weighted harmonic mean average download rate. 7.11 MONROE example: udpbwestimator Udpbwestimator is an experiment setup to estimate available bandwidth for a particular network interface. It consists of two applications, a receiver and a traffic generator (server). The receiver initiates connections and requests the server for traffic. Then, every second, the server sends a burst of UDP packets back to back to the receiver, which follows the packet arrival times and estimates the available bandwidth. 7.11.1 Usage The receiver accepts the following command line parameters: -c : Number of back-to-back packets to be sent in each second. -b : Number of bursts to be sent. -l : Payload length in bytes. -s : Source IP to bind to. -o : Source port. -d : Destination IP. -p : Destination port. -w : Optional, filename for writing the packet arrival times. 7.11.2 Output The experiment will produce a single-line JSON object similar to the following: { "CID" : 33346602, "DataId" : "MONROE.EXP.UDPBWESTIMATOR", "DataVersion" : 1, "DeviceMode" : 5, "DeviceState" : 3, "Guid" : "sha256:872af8c8b8f1635be6936a111b5fa838071e6f42cb317e9db1d9bb0c7db31425.93321.204.1", "IMEI" : "864154023639966", "IMSI" : "240016025247086", "IMSIMCCMNC" : 24001, "IPAddress" : "78.79.63.124", "Iccid" : "89460120151010468086", "InterfaceName" : "usb0", "InternalIPAddress" : "192.168.68.118", "InternalInterface" : "op1", "LAC" : 2806, "NWMCCMNC" : 24202, "NodeId" : "204", "Operator" : "NetCom", "RSRP" : -72, 53 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 "RSRQ" : -7, "RSSI" : -49, "SequenceNumber" : 1, "Timestamp" : 1479312368.633218, "bw" : "48.41 38.98 36.44 50.00 30.20 45.21 47.02 37.89 44.37 28.90 25.91 38.57 48.74 39.94 43.37 37.94 43.81 39.60 52.00 47.55 48.20 34.85 41.44 47.60 57.26 46.11 45.66 52.04 37.43 49.67 33.56 50.35 41.11 51.63 45.33 104.01 45.73 49.95 50.37 38.57 29.45 50.95 54.95 45.42 47.13 34.30 46.10 103.68 79.75 45.72 52.03 30.38 50.21 36.96 71.51 54.66 39.26 44.12 45.18 39.93" } 7.12 MONROE example: traceroute_background_experiment Performs traceroute periodically to various targets. This experiment is meant to be run in the background and can be run in parallel with experiments of other users. It uses the default traceroute binary distributed by the Debian repositories. Each traceroute produces a text file that is parsed by outputParser.py to generate the JSON output of this experiment. The JSON file is then imported into the MONROE database. 7.12.1 Usage To reduce experiment duration, the traceroutes can be run in parallel. The number of parallel traceroute instances is dictated by the maxNumberOfTotalTracerouteInstances parameter. It is possible to parallelize on a per-interface basis (i.e., maxNumberOfTotalTracer per interface) or per the whole experiment (i.e., maxNumberOfTotalTracerouteInstances total in the experiment instance spread among all the interfaces). This behavior is controlled by the executionMode parameter. The available options are: serially, serialPerInterface and parallel. Additionally, a flag can be provided to choose the protocol of the probes: default, udp, tcp and icmp. The parameters of this experiment are provided as “Additional options” in the web user interface. An example JSON string that can be used with this container as additional options is: "interfaces": ["op0", "op1", "op2"], "targets": ["www.ntua.gr", "www.uc3m.es", "Google.com", "Facebook.com", "Youtube.com", "Baidu.com", "Yahoo.com", "Amazon.com", "Wikipedia.org", "audio-ec.spotify.com", "mme.whatsapp.net", "sync.liverail.com", "ds.serving-sys.com", "instagramstatic-a.akamaihd.net"], "maxNumberOfTotalTracerouteInstances": 5, "executionMode": "parallel" 7.13 Other containers in the repositories Our public repositories contain the source code for other Docker containers that perform varied tasks in the nodes. Although they are not intended as examples, users can take a look into them to gain a deeper understanding of the platform configuration. 7.13.1 Container: metadata-subscriber The subscriber is designed to listen to ZMQ messages send out by the metadata-multicaster. The subscriber attaches to a configurable ZeroMQ socket and listens to all messages that begin with the topic “MONROE.META,” except the ones whose topic ends with “.UPDATE” (rebroadcasts) and/or begins with “MONROE.META.DEVICE.CONNECTIVITY.” as these are redundant. All messages are updated with NodeId, but are otherwise saved verbatim as a JSON formatted file suitable for later import in the MONROE databases. 7.13.2 Container: tunnelbox-server This container acts as an SSH reverese tunnel endpoint that clients can use to directly connect to their experiment containers (on any MONROE node). The purpose is to provide experimenters an interactive way of accessing an experiment running on a real MONROE node during development or debugging. The client has to supply its own public SSH key to the experiment container using the web user interface. The web user interface provides further instructions (SSH command line) to connect to the experiment container using the provided key. 54 of 67 Project no. 644399 User manual MONROE Platform User manual 7.13.3 Public Rev. 1.0/ March 14, 2019 Container: monroe_base This is the container upon which all user experiments must be built. The container is based on Debian “jessie” with (MONROE) common experiment tools added. For a list of the tools currently installed see the folder monroe_base.docker in our repositories. This base image has been extended to support layer depending on the kind of experiments the experimenter wants to run. The new monroe_base tags are as follow: • monroe/base This is for all experiments except the one defined below. • monroe/base:web This tag was specifically designed for experiments that use headless browsing such as Chrome or Firefox. • monroe/base:virt This tag is needed for experiments that need to run in a virtual machine. Some of the packages moved from monroe_base to monroe_base:web such as: • moved Firefox and support packages (xvfb, xauth, libgtk-3-0, libasound2, dbus, libdbus-glib-1-2, libgtk2.0-0, libgtk2.0-common, pyvirtualdisplay, selenium, python-dateutil, geckodriver) • Added support for Firefox (56.0.1) and support packages Google chrome(64.*) 8 List of known bugs and issues • In general, Firefox does not render the date-time picker correctly. You will have to either enter the dates and times manually or use Chrome. • Container deployment can take several minutes, particularly for nodes without an Ethernet management connection (e.g., mobile nodes in trains or buses). When scheduling an experiment, the user has to take into account the time needed for the deployment. The system will not automatically take care of this at this moment. • Similarly, the button “Check availability” returns the earliest available slot. However, it does not account for the time needed to deploy the container. The user must manually account for that. • Checking the option “ASAP” to schedule an experiment as soon as possible may fail due to lack of time to deploy the container. The system does add some slack in this case, but its length may need some adjustment according to the type of nodes and MBB characteristics. A List of packages installed in monroe/base Table 10: List of packages installed in monroe/base as of 2017-02-27. Name Version Architecture Description acl adduser adwaita-icon-theme apt base-files base-passwd bash bsdutils bzip2 ca-certificates ca-certificates-java coreutils curl d-itg dash dbus dconf-gsettingsbackend:amd64 dconf-service debconf debconf-i18n debian-archive-keyring debianutils default-jre-headless 2.2.52-2 3.113+nmu3 3.14.0-2 1.0.9.8.4 8+deb8u6 3.5.37 4.3-11+b1 1:2.25.2-6 1.0.6-7+b3 20141019+deb8u1 20140324 8.23-4 7.38.0-4+deb8u5 2.8.1-r1023-3 0.5.7-4+b1 1.8.20-0+deb8u1 0.22.0-1 amd64 all all amd64 amd64 amd64 amd64 amd64 amd64 all all amd64 amd64 amd64 amd64 amd64 amd64 Access control list utilities add and remove users and groups default icon theme of GNOME commandline package manager Debian base system miscellaneous files Debian base system master password and group files GNU Bourne Again SHell basic utilities from 4.4BSD-Lite high-quality block-sorting file compressor - utilities Common CA certificates Common CA certificates (JKS keystore) GNU core utilities command line tool for transferring data with URL syntax Distributed Internet Traffic Generator POSIX-compliant shell simple interprocess messaging system (daemon and utilities) simple configuration storage system - GSettings back-end 0.22.0-1 1.5.56 1.5.56 2014.3 4.4+b1 2:1.7-52 amd64 all all all amd64 amd64 simple configuration storage system - D-Bus service Debian configuration management system full internationalization support for debconf GnuPG archive keys of the Debian archive Miscellaneous utilities specific to Debian Standard Java or Java compatible Runtime (headless) 55 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 Table 10: List of packages installed in monroe/base. (Continued) Name Version Architecture Description dh-python 1.20141111-2 all diffutils dmsetup dpkg dumb-init e2fslibs:amd64 e2fsprogs findutils flent fontconfig fontconfig-config fonts-dejavu-core fping gcc-4.8-base:amd64 gcc-4.9-base:amd64 glib-networking:amd64 glib-networking-common glib-networking-services gnupg gpgv gpsd gpslogger-oml2 grep gsettings-desktop-schemas gzip hicolor-icon-theme hostname httperf-oml2 httping inetutils-ping init init-system-helpers initscripts insserv 1:3.3-1+b1 2:1.02.90-2.2+deb8u1 1.17.27 1.2.0 1.42.12-2 1.42.12-2 4.4.2-9+b1 0.15.0-1 2.11.0-6.3+deb8u1 2.11.0-6.3+deb8u1 2.34-1 3.10-2 4.8.4-1 4.9.2-10 2.42.0-2 2.42.0-2 2.42.0-2 1.4.18-7+deb8u3 1.4.18-7+deb8u3 3.11-3 2.11.0-mytestbed2 2.20-4.1 3.14.1-1 1.6-4 0.13-1 3.15 2.11.0-mytestbed2 1.5.8-1 2:1.9.2.39.3a460-3 1.22 1.22 2.88dsf-59 1.14.0-5 amd64 amd64 amd64 amd64 amd64 amd64 amd64 all amd64 all all amd64 amd64 amd64 amd64 all amd64 amd64 amd64 amd64 amd64 amd64 all amd64 all amd64 amd64 amd64 amd64 amd64 all amd64 amd64 iperf iperf-oml2 iperf3 iproute2 iptables java-common jq libacl1:amd64 libapt-pkg4.12:amd64 libasound2:amd64 libasound2-data libasyncns0:amd64 libatk-bridge2.0-0:amd64 libatk1.0-0:amd64 libatk1.0-data libatspi2.0-0:amd64 libattr1:amd64 libaudit-common libaudit1:amd64 libavahi-client3:amd64 libavahi-commondata:amd64 libavahi-common3:amd64 libblas-common libblas3 libblkid1:amd64 libbluetooth3:amd64 2.0.5+dfsg1-2 2.11.0-mytestbed2 3.0.7-1 3.16.0-2 1.4.21-2+b1 0.52 1.4-2.1 2.2.52-2 1.0.9.8.4 1.0.28-1 1.0.28-1 0.8-5 2.14.0-2 2.14.0-1 2.14.0-1 2.14.0-1 1:2.4.47-2 1:2.4-1 1:2.4-1+b1 0.6.31-5 0.6.31-5 amd64 amd64 amd64 amd64 amd64 all amd64 amd64 amd64 amd64 all amd64 amd64 amd64 all amd64 amd64 all amd64 amd64 amd64 Debian helper tools for packaging Python libraries and applications File comparison utilities Linux Kernel Device Mapper userspace library Debian package management system wrapper script which proxies signals to a child ext2/ext3/ext4 file system libraries ext2/ext3/ext4 file system utilities utilities for finding files–find, xargs The FLExible Network Tester generic font configuration library - support binaries generic font configuration library - configuration Vera font family derivate with additional characters sends ICMP ECHO_REQUEST packets to network hosts GCC, the GNU Compiler Collection (base package) GCC, the GNU Compiler Collection (base package) network-related giomodules for GLib network-related giomodules for GLib - data files network-related giomodules for GLib - D-Bus services GNU privacy guard - a free PGP replacement GNU privacy guard - signature verification tool Global Positioning System - daemon Record and store GPS measurements using OML GNU grep, egrep and fgrep GSettings desktop-wide schemas GNU compression utilities default fallback theme for FreeDesktop.org icon themes utility to set/show the host name or domain name HTTP server performance tester, with OML support ping-like program for http-requests ICMP echo tool System-V-like init utilities - metapackage helper tools for all init systems scripts for initializing and shutting down the system boot sequence organizer using LSB init.d script dependency information Internet Protocol bandwidth measuring tool Internet Protocol bandwidth measuring tool, with OML support Internet Protocol bandwidth measuring tool networking and traffic control tools administration tools for packet filtering and NAT Base of all Java packages lightweight and flexible command-line JSON processor Access control list shared library package management runtime library shared library for ALSA applications Configuration files and profiles for ALSA drivers Asynchronous name service query library AT-SPI 2 toolkit bridge - shared library ATK accessibility toolkit Common files for the ATK accessibility toolkit Assistive Technology Service Provider Interface - shared library Extended attribute shared library Dynamic library for security auditing - common files Dynamic library for security auditing Avahi client library Avahi common data files 0.6.31-5 1.2.20110419-10 1.2.20110419-10 2.25.2-6 5.23-2+b1 amd64 amd64 amd64 amd64 amd64 Avahi common library Dependency package for all BLAS implementations Basic Linear Algebra Reference implementations, shared library block device id library Library to use the BlueZ Linux Bluetooth stack 56 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 Table 10: List of packages installed in monroe/base. (Continued) Name Version Architecture Description libbsd0:amd64 libbz2-1.0:amd64 libc-bin libc6:amd64 libcairo-gobject2:amd64 libcairo2:amd64 libcap-ng0:amd64 libcap2:amd64 libcap2-bin libcgi-fast-perl libcgi-pm-perl libcolord2:amd64 libcomerr2:amd64 libconfig-grammar-perl libcroco3:amd64 libcryptsetup4:amd64 libcups2:amd64 libcurl3:amd64 libdatrie1:amd64 libdb5.3:amd64 libdbi1:amd64 libdbus-1-3:amd64 libdbus-glib-1-2:amd64 0.7.0-2 1.0.6-7+b3 2.19-18+deb8u6 2.19-18+deb8u6 1.14.0-2.1+deb8u1 1.14.0-2.1+deb8u1 0.7.4-2 1:2.24-8 1:2.24-8 1:2.04-1 4.09-1 1.2.1-1+b2 1.42.12-2 1.10-2 0.6.8-3+b1 2:1.6.6-5 1.7.5-11+deb8u1 7.38.0-4+deb8u5 0.2.8-1 5.3.28-9 0.9.0-4 1.8.20-0+deb8u1 0.102-1 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 all all amd64 amd64 all amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 libdconf1:amd64 libdebconfclient0:amd64 0.22.0-1 0.192 amd64 amd64 libdevmapper1.02.1:amd64 libdigest-hmac-perl libdrm2:amd64 libedit2:amd64 libencode-locale-perl libexpat1:amd64 libfcgi-perl libffi6:amd64 libfile-listing-perl libflac8:amd64 libfontconfig1:amd64 libfontenc1:amd64 libfreetype6:amd64 libgcc1:amd64 libgcrypt20:amd64 libgdbm3:amd64 libgdk-pixbuf2.0-0:amd64 libgdk-pixbuf2.0-common libgfortran3:amd64 libgl1-mesa-glx:amd64 libglapi-mesa:amd64 libglib2.0-0:amd64 libgmp10:amd64 libgnutls-deb0-28:amd64 libgpg-error0:amd64 2:1.02.90-2.2+deb8u1 1.03+dfsg-1 2.4.58-2 3.1-20140620-2 1.03-1 2.1.0-6+deb8u3 0.77-1+b1 3.1-2+b2 6.04-1 1.3.0-3 2.11.0-6.3+deb8u1 1:1.1.2-1+b2 2.5.2-3+deb8u1 1:4.9.2-10 1.6.3-2+deb8u2 1.8.3-13.1 2.31.1-2+deb8u5 2.31.1-2+deb8u5 4.9.2-10 10.3.2-1+deb8u1 10.3.2-1+deb8u1 2.42.1-1+b1 2:6.0.0+dfsg-6 3.3.8-6+deb8u3 1.17-3 amd64 all amd64 amd64 all amd64 amd64 amd64 all amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 all amd64 amd64 amd64 amd64 amd64 amd64 amd64 libgps21:amd64 libgraphite2-3:amd64 libgssapi-krb5-2:amd64 libgtk-3-0:amd64 libgtk-3-bin libgtk-3-common libgtk2.0-0:amd64 libgtk2.0-common libharfbuzz0b:amd64 libhogweed2:amd64 3.11-3 1.3.6-1 deb8u1 1.12.1+dfsg-19+deb8u2 3.14.5-1+deb8u1 3.14.5-1+deb8u1 3.14.5-1+deb8u1 2.24.25-3+deb8u1 2.24.25-3+deb8u1 0.9.35-2 2.7.1-5+deb8u1 amd64 amd64 amd64 amd64 amd64 all amd64 all amd64 amd64 utility functions from BSD systems - shared library high-quality block-sorting file compressor library - runtime GNU C Library: Binaries GNU C Library: Shared libraries Cairo 2D vector graphics library (GObject library) Cairo 2D vector graphics library An alternate POSIX capabilities library POSIX 1003.1e capabilities (library) POSIX 1003.1e capabilities (utilities) CGI subclass for work with FCGI module for Common Gateway Interface applications system service to manage device colour profiles – runtime common error description library grammar-based user-friendly config parser Cascading Style Sheet (CSS) parsing and manipulation toolkit disk encryption support - shared library Common UNIX Printing System(tm) - Core library easy-to-use client-side URL transfer library (OpenSSL flavour) Double-array trie library Berkeley v5.3 Database Libraries [runtime] DB Independent Abstraction Layer for C – shared library simple interprocess messaging system (library) simple interprocess messaging system (GLib-based shared library) simple configuration storage system - runtime library Debian Configuration Management System (C-implementation library) Linux Kernel Device Mapper userspace library module for creating standard message integrity checks Userspace interface to kernel DRM services – runtime BSD editline and history libraries utility to determine the locale encoding XML parsing C library - runtime library helper module for FastCGI Foreign Function Interface library runtime module to parse directory listings Free Lossless Audio Codec - runtime C library generic font configuration library - runtime X11 font encoding library FreeType 2 font engine, shared library files GCC support library LGPL Crypto library - runtime library GNU dbm database routines (runtime version) GDK Pixbuf library GDK Pixbuf library - data files Runtime library for GNU Fortran applications free implementation of the OpenGL API – GLX runtime free implementation of the GL API – shared library GLib library of C routines Multiprecision arithmetic library GNU TLS library - main runtime library library for common error values and messages in GnuPG components Global Positioning System - library Font rendering engine for Complex Scripts – library MIT Kerberos runtime libraries - krb5 GSS-API Mechanism GTK+ graphical user interface library programs for the GTK+ graphical user interface library common files for the GTK+ graphical user interface library GTK+ graphical user interface library common files for the GTK+ graphical user interface library OpenType text shaping engine (shared library) low level cryptographic library (public-key cryptos) 57 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 Table 10: List of packages installed in monroe/base. (Continued) Name Version Architecture Description libhtml-parser-perl libhtml-tagset-perl libhtml-tree-perl libhttp-cookies-perl libhttp-date-perl libhttp-message-perl libhttp-negotiate-perl libice6:amd64 libicu52:amd64 libidn11:amd64 libio-html-perl libio-socket-ssl-perl 3.71-1+b3 3.20-2 5.03-1 6.01-1 6.02-1 6.06-1 6.00-2 2:1.0.9-1+b1 52.1-8+deb8u4 1.29-1+deb8u2 1.001-1 2.002-2+deb8u1 amd64 all all all all all all amd64 amd64 amd64 all all libiperf0 libjasper1:amd64 libjbig0:amd64 libjpeg62-turbo:amd64 libjs-cropper libjs-prototype libjs-scriptaculous libjson-c2:amd64 libjson-glib-1.0-0:amd64 libjson-glib-1.0-common libk5crypto3:amd64 libkeyutils1:amd64 libkmod2:amd64 libkrb5-3:amd64 libkrb5support0:amd64 liblcms2-2:amd64 libldap-2.4-2:amd64 liblinear1:amd64 liblocale-gettext-perl liblua5.2-0:amd64 liblwp-mediatypes-perl liblwp-protocol-https-perl liblzma5:amd64 libmount1:amd64 libmpdec2:amd64 libncurses5:amd64 libncursesw5:amd64 libnet-http-perl libnet-ssleay-perl libnettle4:amd64 3.0.7-1 1.900.1-debian1-2.4+deb8u1 2.1-3.1 1:1.3.1-12 1.2.2-1 1.7.1-3 1.9.0-2 0.11-4 1.0.2-1 1.0.2-1 1.12.1+dfsg-19+deb8u2 1.5.9-5+b1 18-3 1.12.1+dfsg-19+deb8u2 1.12.1+dfsg-19+deb8u2 2.6-3+b3 2.4.40+dfsg-1+deb8u2 1.8+dfsg-4 1.05-8+b1 5.2.3-1.1 6.02-1 6.06-2 5.1.1alpha+20120614-2+b3 2.25.2-6 2.4.1-1 5.9+20140913-1+b1 5.9+20140913-1+b1 6.07-1 1.65-1+deb8u1 2.7.1-5+deb8u1 amd64 amd64 amd64 amd64 all all all amd64 amd64 all amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 all all amd64 amd64 amd64 amd64 amd64 all amd64 amd64 libnfnetlink0:amd64 libnspr4:amd64 libnss3:amd64 libocomm libocomm-dev libocomm1 libogg0:amd64 liboml2 liboml2-9 liboml2-dev libp11-kit0:amd64 1.0.1-3 2:4.12-1+debu8u1 2:3.26-1+debu8u1 2.11.1 rc-mytestbed1 2.11.1 rc-mytestbed1 2.11.1 rc-mytestbed1 1.3.2-1 2.11.1 rc-mytestbed1 2.11.1 rc-mytestbed1 2.11.1 rc-mytestbed1 0.20.7-1 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 libpam-modules:amd64 libpam-modules-bin libpam-runtime libpam0g:amd64 libpango-1.0-0:amd64 libpangocairo-1.0-0:amd64 libpangoft2-1.0-0:amd64 1.1.8-3.1+deb8u1+b1 1.1.8-3.1+deb8u1+b1 1.1.8-3.1+deb8u1 1.1.8-3.1+deb8u1+b1 1.36.8-3 1.36.8-3 1.36.8-3 amd64 amd64 all amd64 amd64 amd64 amd64 collection of modules that parse HTML text documents Data tables pertaining to HTML Perl module to represent and create HTML syntax trees HTTP cookie jars module of date conversion routines perl interface to HTTP style messages implementation of content negotiation X11 Inter-Client Exchange library International Components for Unicode GNU Libidn library, implementation of IETF IDN specifications open an HTML file with automatic charset detection Perl module implementing object oriented interface to SSL sockets Internet Protocol bandwidth measuring tool (runtime files) JasPer JPEG-2000 runtime library JBIGkit libraries libjpeg-turbo JPEG runtime library JavaScript image cropper UI JavaScript Framework for dynamic web applications JavaScript library for dynamic web applications JSON manipulation library - shared library GLib JSON manipulation library GLib JSON manipulation library (common files) MIT Kerberos runtime libraries - Crypto Library Linux Key Management Utilities (library) libkmod shared library MIT Kerberos runtime libraries MIT Kerberos runtime libraries - Support library Little CMS 2 color management library OpenLDAP libraries Library for Large Linear Classification module using libc functions for internationalization in Perl Shared library for the Lua interpreter version 5.2 module to guess media type for a file or a URL HTTPS driver for LWP::UserAgent XZ-format compression library device mounting library library for decimal floating point arithmetic (runtime library) shared libraries for terminal handling shared libraries for terminal handling (wide character support) module providing low-level HTTP connection client Perl module for Secure Sockets Layer (SSL) low level cryptographic library (symmetric and one-way cryptos) Netfilter netlink library NetScape Portable Runtime Library Network Security Service libraries OComm: O? Communications Library (metapackage) OML measurement library headers OComm: O? Communications Library Ogg bitstream library OML: The O? Measurement Library (metapackage) OML: The O? Measurement Library OML measurement library headers Library for loading and coordinating access to PKCS#11 modules - runtime Pluggable Authentication Modules for PAM Pluggable Authentication Modules for PAM - helper binaries Runtime support for the PAM library Pluggable Authentication Modules library Layout and rendering of internationalized text Layout and rendering of internationalized text Layout and rendering of internationalized text 58 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 Table 10: List of packages installed in monroe/base. (Continued) Name Version Architecture Description libpcap0.8:amd64 libpcre3:amd64 libpcsclite1:amd64 libpgm-5.1-0 libpixman-1-0:amd64 libpng12-0:amd64 libpopt0:amd64 libpq5:amd64 libprocps3:amd64 libproxy1:amd64 libpsl0:amd64 libpulse0:amd64 libpython-stdlib:amd64 1.6.2-2 2:8.35-3.3+deb8u4 1.8.13-1 5.1.118-1 dfsg-1 0.32.6-3 1.2.50-2+deb8u2 1.16-10 9.4.9-0+deb8u1 2:3.3.9-9 0.4.11-4+b2 0.5.1-1 5.0-13 2.7.9-1 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 libpython2.7minimal:amd64 libpython2.7-stdlib:amd64 2.7.9-2+deb8u1 amd64 system interface for user-level packet capture Perl 5 Compatible Regular Expression Library - runtime files Middleware to access a smart card using PC/SC (library) OpenPGM shared library pixel-manipulation library for X and cairo PNG library - runtime lib for parsing cmdline parameters PostgreSQL C client library library for accessing process information from /proc automatic proxy configuration management library (shared) Library for Public Suffix List (shared libraries) PulseAudio client libraries interactive high-level object-oriented language (default python version) Minimal subset of the Python language (version 2.7) 2.7.9-2+deb8u1 amd64 libpython3-stdlib:amd64 3.4.2-2 amd64 libpython3.4minimal:amd64 libpython3.4-stdlib:amd64 3.4.2-1 amd64 3.4.2-1 amd64 libquadmath0:amd64 libreadline6:amd64 librest-0.7-0:amd64 librrd4 librrds-perl 4.9.2-10 6.3-8+b3 0.7.92-3 1.4.8-1.2 1.4.8-1.2 amd64 amd64 amd64 amd64 amd64 librsvg2-2:amd64 librsvg2-common:amd64 librtmp1:amd64 libruby2.1:amd64 libsasl2-2:amd64 libsasl2-modules-db:amd64 libsctp1:amd64 libselinux1:amd64 libsemanage-common libsemanage1:amd64 libsepol1:amd64 libsigar libslang2:amd64 libsm6:amd64 libsmartcols1:amd64 libsndfile1:amd64 libsnmp-session-perl libsodium13:amd64 libsoup-gnome2.4-1:amd64 libsoup2.4-1:amd64 libsqlite3-0:amd64 libss2:amd64 libssh2-1:amd64 libssl1.0.0:amd64 libstdc++6:amd64 libsystemd0:amd64 libtasn1-6:amd64 libtext-charwidth-perl libtext-iconv-perl libtext-wrapi18n-perl libthai-data libthai0:amd64 libtiff5:amd64 2.40.5-1+deb8u2 2.40.5-1+deb8u2 2.4+20150115.gita107cef-1 2.1.5-2+deb8u3 2.1.26.dfsg1-13+deb8u1 2.1.26.dfsg1-13+deb8u1 1.0.16+dfsg-2 2.3-2 2.3-1 2.3-1+b1 2.3-2 1.6.5-1ppa1o 2.3.0-2 2:1.2.2-1+b1 2.25.2-6 1.0.25-9.1+deb8u1 1.13-1.1 1.0.0-1 2.48.0-1 2.48.0-1 3.8.7.1-1+deb8u2 1.42.12-2 1.4.3-4.1+deb8u1 1.0.1t-1+deb8u5 4.9.2-10 215-17+deb8u5 4.2-3+deb8u2 0.04-7+b3 1.7-5+b2 0.06-7 0.1.21-1 0.1.21-1 4.0.3-12.3+deb8u1 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 all amd64 amd64 amd64 amd64 amd64 amd64 amd64 all amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 all all amd64 amd64 59 of 67 Interactive high-level object-oriented language (standard library, version 2.7) interactive high-level object-oriented language (default python3 version) Minimal subset of the Python language (version 3.4) Interactive high-level object-oriented language (standard library, version 3.4) GCC Quad-Precision Math Library GNU readline and history libraries, run-time libraries REST service access library time-series data storage and display system (runtime library) time-series data storage and display system (Perl interface, shared) SAX-based renderer library for SVG files (runtime) SAX-based renderer library for SVG files (extra runtime) toolkit for RTMP streams (shared library) Libraries necessary to run Ruby 2.1 Cyrus SASL - authentication abstraction library Cyrus SASL - pluggable authentication modules (DB) user-space access to Linux Kernel SCTP - shared library SELinux runtime shared libraries Common files for SELinux policy management libraries SELinux policy management library SELinux library for manipulating binary security policies System Information Gatherer And Reporter S-Lang programming library - runtime version X11 Session Management library smart column output alignment library Library for reading/writing audio files Perl support for accessing SNMP-aware devices Network communication, cryptography and signaturing library HTTP library implementation in C – GNOME support library HTTP library implementation in C – Shared library SQLite 3 shared library command-line interface parsing library SSH2 client-side library Secure Sockets Layer toolkit - shared libraries GNU Standard C++ Library v3 systemd utility library Manage ASN.1 structures (runtime) get display widths of characters on the terminal converts between character sets in Perl internationalized substitute of Text::Wrap Data files for Thai language support library Thai language support library Tag Image File Format (TIFF) library Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 Table 10: List of packages installed in monroe/base. (Continued) Name Version Architecture Description libtimedate-perl libtinfo5:amd64 libtrace3 2.3000-2 5.9+20140913-1+b1 3.0.21-1 all amd64 amd64 libudev1:amd64 liburi-perl libusb-0.1-4:amd64 libusb-1.0-0:amd64 libustr-1.0-1:amd64 libuuid1:amd64 libvorbis0a:amd64 libvorbisenc2:amd64 libwandio1 libwayland-client0:amd64 libwayland-cursor0:amd64 libwrap0:amd64 libwww-perl libwww-robotrules-perl libx11-6:amd64 libx11-data libx11-xcb1:amd64 libxau6:amd64 libxaw7:amd64 libxcb-dri2-0:amd64 libxcb-dri3-0:amd64 libxcb-glx0:amd64 libxcb-present0:amd64 libxcb-render0:amd64 libxcb-shm0:amd64 libxcb-sync1:amd64 libxcb1:amd64 libxcomposite1:amd64 libxcursor1:amd64 libxdamage1:amd64 libxdmcp6:amd64 libxext6:amd64 libxfixes3:amd64 libxfont1:amd64 libxi6:amd64 libxinerama1:amd64 libxkbcommon0:amd64 libxkbfile1:amd64 libxml2:amd64 libxmu6:amd64 libxmuu1:amd64 libxpm4:amd64 libxrandr2:amd64 libxrender1:amd64 libxshmfence1:amd64 libxt6:amd64 libxtables10 libxtst6:amd64 libxxf86vm1:amd64 libyaml-0-2:amd64 libzmq3:amd64 login lsb-base mawk mgen mime-support mount multiarch-support nano 215-17+deb8u5 1.64-1 2:0.1.12-25 2:1.0.19-1 1.0.4-3+b2 2.25.2-6 1.3.4-2 1.3.4-2 3.0.21-1 1.6.0-2 1.6.0-2 7.6.q-25 6.08-1 6.01-1 2:1.6.2-3 2:1.6.2-3 2:1.6.2-3 1:1.0.8-1 2:1.0.12-2+b1 1.10-3+b1 1.10-3+b1 1.10-3+b1 1.10-3+b1 1.10-3+b1 1.10-3+b1 1.10-3+b1 1.10-3+b1 1:0.4.4-1 1:1.1.14-1+b1 1:1.1.4-2+b1 1:1.1.1-1+b1 2:1.3.3-1 1:5.0.1-2+b2 1:1.5.1-1 2:1.7.4-1+b2 2:1.1.3-1+b1 0.4.3-2 1:1.0.8-1 2.9.1+dfsg1-5+deb8u3 2:1.1.2-1 2:1.1.2-1 1:3.5.11-1+b1 2:1.4.2-1+b1 1:0.9.8-1+b1 1.1-4 1:1.1.4-1+b1 1.4.21-2+b1 2:1.2.2-1+b1 1:1.1.3-1+b1 0.1.6-3 4.0.5+dfsg-2+deb8u1 1:4.2-3+deb8u1 4.1+Debian13+nmu1 1.3.3-17 5.02+dfsg2-3 3.58 2.25.2-6 2.19-18+deb8u6 2.2.6-3 amd64 all amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 all all amd64 all amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 amd64 all amd64 amd64 all amd64 amd64 amd64 collection of modules to manipulate date/time information shared low-level terminfo library for terminal handling network trace processing library supporting many input formats libudev shared library module to manipulate and access URI strings userspace USB programming library userspace USB programming library Micro string library: shared library Universally Unique ID library decoder library for Vorbis General Audio Compression Codec encoder library for Vorbis General Audio Compression Codec multi-threaded file compression and decompression library wayland compositor infrastructure - client library wayland compositor infrastructure - cursor library Wietse Venema’s TCP wrappers library simple and consistent interface to the world-wide web database of robots.txt-derived permissions X11 client-side library X11 client-side library Xlib/XCB interface library X11 authorisation library X11 Athena Widget library X C Binding, dri2 extension X C Binding, dri3 extension X C Binding, glx extension X C Binding, present extension X C Binding, render extension X C Binding, shm extension X C Binding, sync extension X C Binding X11 Composite extension library X cursor management library X11 damaged region extension library X11 Display Manager Control Protocol library X11 miscellaneous extension library X11 miscellaneous ’fixes’ extension library X11 font rasterisation library X11 Input extension library X11 Xinerama extension library library interface to the XKB compiler - shared library X11 keyboard file manipulation library GNOME XML library X11 miscellaneous utility library X11 miscellaneous micro-utility library X11 pixmap library X11 RandR extension library X Rendering Extension client library X shared memory fences - shared library X11 toolkit intrinsics library netfilter xtables library X11 Testing – Record extension library X11 XFree86 video mode extension library Fast YAML 1.1 parser and emitter library lightweight messaging kernel (shared library) system login tools Linux Standard Base 4.1 init script functionality a pattern scanning and text processing language packet generator for IP network performance tests MIME files ’mime.types’ & ’mailcap’, and support programs Tools for mounting and manipulating filesystems Transitional package to ensure multiarch compatibility small, friendly text editor inspired by Pico 60 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 Table 10: List of packages installed in monroe/base. (Continued) Name Version Architecture Description ncurses-base ncurses-bin net-tools netbase netperf nmap nmetrics-oml2 5.9+20140913-1 5.9+20140913-1+b1 1.60-26+b1 5.3 2.7.0-1 6.47-3+deb8u2 2.11.0-mytestbed2 all amd64 amd64 all amd64 amd64 amd64 oml2 oml2-apps oml2-proxy-server oml2-proxycon oml2-server openjdk-7-jreheadless:amd64 openssh-client openssh-server 2.11.1 rc-mytestbed1 2.11.0-mytestbed2 2.11.1 rc-mytestbed1 2.11.1 rc-mytestbed1 2.11.1 rc-mytestbed1 7u111-2.6.7-2 deb8u1 amd64 amd64 amd64 amd64 amd64 amd64 basic terminal type definitions terminal-related programs and man pages NET-3 networking toolkit Basic TCP/IP networking system Network performance benchmark The Network Mapper Measure and record system information from libsigar using OML OML: The O? Measurement Library Suite (Metapackage) Standalone OML2 applications (metapackage) OML proxy server OML proxy server control script OML measurement server OpenJDK Java runtime, using Hotspot JIT (headless) 1:6.7p1-5+deb8u3 1:6.7p1-5+deb8u3 amd64 amd64 openssh-sftp-server 1:6.7p1-5+deb8u3 amd64 openssl otg2-oml2 passwd perl perl-base perl-modules procps python 1.0.1t-1+deb8u5 2.11.0-mytestbed2 1:4.2-3+deb8u1 5.20.2-3+deb8u6 5.20.2-3+deb8u6 5.20.2-3+deb8u6 2:3.3.9-9 2.7.9-1 amd64 amd64 amd64 amd64 amd64 all amd64 amd64 python-chardet python-colorama python-distlib python-html5lib 2.3.0-1 0.3.2-1 0.1.9-1 0.999-3 all all all all python-meld3 python-minimal python-netifaces python-pip python-pkg-resources python-requests 1.0.0-1 2.7.9-1 0.10.4-0.1 1.5.6-5 5.5.1-1 2.4.3-6 amd64 amd64 amd64 all all all python-rrdtool python-scapy python-setuptools python-six python-urllib3 python-zmq python2.7 python2.7-minimal python3 1.4.8-1.2 2.2.0-1 5.5.1-1 1.8.0-1 1.9.1-3 14.4.0-1 2.7.9-2+deb8u1 2.7.9-2+deb8u1 3.4.2-2 amd64 all all all all amd64 amd64 amd64 amd64 python3-minimal 3.4.2-2 amd64 python3-netifaces python3-six python3-zmq python3.4 python3.4-minimal readline-common ripwavemon-oml2 rsync ruby 0.10.4-0.1 1.8.0-1 14.4.0-1 3.4.2-1 3.4.2-1 6.3-8 2.11.0-mytestbed2 3.1.1-3 1:2.1.5+deb8u2 amd64 all amd64 amd64 amd64 all amd64 amd64 all 61 of 67 secure shell (SSH) client, for secure access to remote machines secure shell (SSH) server, for secure access from remote machines secure shell (SSH) sftp server module, for SFTP access from remote machines Secure Sockets Layer toolkit - cryptographic utility Orbit Traffic Generator change and administer password and group data Larry Wall’s Practical Extraction and Report Language minimal Perl system Core Perl modules /proc file system utilities interactive high-level object-oriented language (default version) universal character encoding detector for Python2 Cross-platform colored terminal text in Python - Python 2.x low-level components of python distutils2/packaging HTML parser/tokenizer based on the WHATWG HTML5 specification (Python 2) HTML/XML templating system for Python minimal subset of the Python language (default version) portable network interface information - Python 2.x alternative Python package installer Package Discovery and Resource Access using pkg_resources elegant and simple HTTP library for Python2, built for human beings time-series data storage and display system (Python interface) Packet generator/sniffer and network scanner/discovery Python Distutils Enhancements Python 2 and 3 compatibility library (Python 2 interface) HTTP library with thread-safe connection pooling for Python Python bindings for 0MQ library Interactive high-level object-oriented language (version 2.7) Minimal subset of the Python language (version 2.7) interactive high-level object-oriented language (default python3 version) minimal subset of the Python language (default python3 version) portable network interface information - Python 3.x Python 2 and 3 compatibility library (Python 3 interface) Python3 bindings for 0MQ library Interactive high-level object-oriented language (version 3.4) Minimal subset of the Python language (version 3.4) GNU readline and history libraries, common files Report statistics from a Navini RipWave modem fast, versatile, remote (and local) file-copying tool Interpreter of object-oriented scripting language Ruby (default version) Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 Table 10: List of packages installed in monroe/base. (Continued) Name Version Architecture Description ruby2.1 rubygems-integration sed sensible-utils shared-mime-info smokeping speedtest-cli 2.1.5-2+deb8u3 1.8 4.2.2-4+b1 0.0.9 1.3-1 2.6.9-1+deb8u1 1.0.0 amd64 all amd64 all amd64 all all startpar supervisor systemd systemd-sysv sysv-rc sysvinit-utils tar tcpdump trace-oml2 traceroute tzdata tzdata-java 0.59-3 3.0r1-1 215-17+deb8u5 215-17+deb8u5 2.88dsf-59 2.88dsf-59 1.27.1-2+deb8u1 4.6.2-5+deb8u1 2.11.0-mytestbed2 1:2.0.20-2+b1 2016j-0+deb8u1 2016j-0+deb8u1 amd64 all amd64 amd64 all amd64 amd64 amd64 amd64 amd64 all all ucf 3.0030 all udev util-linux wget x11-common x11-xkb-utils xauth xkb-data xserver-common xvfb xz-utils zlib1g:amd64 215-17+deb8u5 2.25.2-6 1.16-1+deb8u1 1:7.7+7 7.7+1 1:1.0.9-1 2.12-1 2:1.16.4-1 2:1.16.4-1 5.1.1alpha+20120614-2+b3 1:1.2.8.dfsg-2+b1 amd64 amd64 amd64 all amd64 amd64 all all amd64 amd64 amd64 Interpreter of object-oriented scripting language Ruby integration of Debian Ruby packages with Rubygems The GNU sed stream editor Utilities for sensible alternative selection FreeDesktop.org shared MIME database and spec latency logging and graphing system Command line interface for testing internet bandwidth using speedtest.net run processes in parallel and multiplex their output A system for controlling process state system and service manager system and service manager - SysV links System-V-like runlevel change mechanism System-V-like utilities GNU version of the tar archiving utility command-line network traffic analyzer Measure and record libtrace data using OML Traces the route taken by packets over an IPv4/IPv6 network time zone and daylight-saving time data time zone and daylight-saving time data for use by java runtimes Update Configuration File(s): preserve user changes to config files /dev/ and hotplug management daemon Miscellaneous system utilities retrieves files from the web X Window System (X.Org) infrastructure X11 XKB utilities X authentication utility X Keyboard Extension (XKB) configuration data common files used by various X servers Virtual Framebuffer ’fake’ X server XZ-format compression utilities compression library - runtime B Description of metadata fields The following description of metadata topics and fields is included here for convenience only. The updated version is kept at: https: //github.com/MONROE-PROJECT/Experiments/wiki/Metadata DataVersion was set to 1 until beginning of March, 2017. It was then set to 2 to signal the transition in timestamps that most tables underwent, when their precision was changed from an integer number of seconds (e.g., 1 400 475 869) to the number of seconds and microseconds since the (UNIX) Epoch (e.g., 1 400 475 869.123 456). Table 11: Field description for metadata topic “MONROE.META.DEVICE.MODEM”. Name Description NodeId Timestamp DataId DataVersion SequenceNumber InterfaceName InternalInterface Node numerical ID. Entry timestamp (in seconds since UNIX epoch with microsecond precision). Metadata topic. Last version is 2. Monotonically increasing message counter. Name of the interface in the MONROE node, e.g., “usb0”, “usb1”, “usb2”, “eth0”, . . . Name of the interface inside the containers, e.g., “op0”, “op1”, “op2”, “eth0”, “wlan0”, . . . Experiments in containers have to bind to these interface names. Cell ID. Connection mode of the modem (e.g., 2G, 3G, LTE) indicating the radio access technology the modem uses. Connection submode for 3G connections (e.g., CDMA, WCDMA, UMTS). Cid DeviceMode DeviceSubmode 62 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 Table 11: Field description for metadata topic “MONROE.META.DEVICE.MODEM”. (Continued) Name Description DeviceState State of the device reported to the network: UNKNOWN (0) - Device state is unknwon; REGISTERED (1) Device is registered to the network; UNREGISTERED (2) - Device is unregistered from the network; CONNECTED (3) - Device is connected to the network; DISCONNECTED (4) - Device is disconnected from the network. EC/IO, quality/cleanliness of signal from the tower to the modem (dB). Evolved base station ID. Internationally defined integrated circuit card identifier of the SIM card. Internation Mobile Subscriber Identity. Mobile Country Code (MCC) and Mobile Network Code (MNC). International Mobile Station Equipment Identity. IP address assigned to the modem by the operator. Internal IP address of the modem in the MONROE node. Mobile Country Code (MCC) and Mobile Network Code (MNC). Operator name as reported by the network for the interface in which the experiment was run. Local Area Code for the current cell (hex). Reference Signal Received Power (LTE). Frequency in MHz (e.g., 700, 800, 900, 1800 or 2600 in Europe). Reference Signal Received Quality (valid only for LTE networks). The RSRQ measurement provides additional information when Reference Signal Received Power (RSRP) is not sufficient to make a reliable handover or cell reselection decision. RSRQ considers both the Received Signal Strength Indicator (RSSI) and the number of used Resource Blocks (N) RSRQ = (N ∗ RSRP)/RSSI measured over the same bandwidth. Band corresponding to the frequency used (e.g., 3, 7 or 20 in Europe). Physical Cell ID. Mobile Country Code (MCC) and Mobile Network Code (MNC) from network (read from the network). The tuple uniquely identifies a mobile network operator (carrier) that is using the GSM (including GSM-R), UMTS, and LTE public land mobile networks. Received Signal Code Power (UMTS). Received Signal Strength Indicator. Ecio ENodebId Iccid Imsi ImsiMccMnc Imei IpAddress InternalIpAddress MccMnc Operator Lac Rsrp Frequency Rsrq Band Pci NwMccMnc Rscp Rssi Table 12: Field description for metadata topic “MONROE.META.DEVICE.GPS”. Name Description NodeId Timestamp DataId DataVersion SequenceNumber Longitude Latitude Altitude Speed SatelliteCount Nmea Node numerical ID. Entry timestamp (in seconds since UNIX epoch with microsecond precision). Metadata topic. Last version is 2. Monotonically increasing message counter. Decimal degrees (WGS84). Decimal degrees (WGS84). Meters AMSL. Speed over ground (knots; multiply by 1.852 to get km h−1 ). Number of satellites being tracked. Raw NMEA string from the GPS receiver. Table 13: Field description for metadata topic “MONROE.META.NODE.SENSOR”. Name Description NodeId Timestamp DataId DataVersion SequenceNumber Running Cpu Id Start Current Total Percent Node numerical ID. Entry timestamp (in seconds since UNIX epoch with microsecond precision). Metadata topic. Last version is 2. Monotonically increasing message counter. Comma separated list of experiment GUIDs. CPU temperature (◦C). Session number (boot counter). Start time (Unix timestamp). Uptime (seconds since start of the session). Uptime (cumulative uptime of the node over all sessions). Uptime (percent of uptime vs. total lifetime of the node). 63 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 Table 13: Field description for metadata topic “MONROE.META.NODE.SENSOR”. (Continued) Name Description System Steal Guest IoWait Irq Nice Idle User SoftIrq Apps Free Swap usb0 usb0charging usb1 usb1charging usb2 usb2charging CPU time spent by the kernel in system activities. The time that a virtual CPU had runnable tasks, but the virtual CPU itself was not running. The time spent running a virtual CPU for guest operating systems under the control of the Linux kernel. CPU time spent waiting for I/O operations to finish when there is nothing else to do. CPU time spent handling interrupts. CPU time spent by nice(1)d programs. Idle CPU time. CPU time spent by normal programs and daemons. CPU time spent handling “batched” interrupts. Memory used by user-space applications. Unused memory. Swap space used. Battery level for MiFi at USB0 (0-100, -1 for inactive). 1 if USB0 battery is charging, 0 otherwise. Battery level for MiFi at USB1 (0-100, -1 for inactive). 1 if USB1 battery is charging, 0 otherwise. Battery level for MiFi at USB2 (0-100, -1 for inactive). 1 if USB2 battery is charging, 0 otherwise. Table 14: Field description for metadata topic “MONROE.META.NODE.EVENT”. Name Description NodeId Timestamp DataId DataVersion SequenceNumber EventType Node numerical ID. Entry timestamp (in seconds since UNIX epoch with microsecond precision). Metadata topic. Last version is 2. Monotonically increasing message counter. Watchdog.Failed: The system watchdog detected an error symptom. Watchdog.Repaired: The system watchdog resolved the issue. Watchdog.Status: Periodic status messages from the watchdog. Maintenance.Start: An interactive login on the node is registered. Maintenance.Stop: The interactive login session is closed. System.Halt: System halt is requested. Scheduling.Started: The node starts to query the scheduling server. Scheduling.Task.Deploying: A scheduling task passed checks and is being deployed. Scheduling.Task.Deployed: A scheduling task has been deployed. Scheduling.Task.Started: A scheduling task has started. Scheduling.Task.Stopped: A scheduling task has stopped and is being cleaned up. Extra key for some event types. Extra key for some event types. Extra key for Scheduling.Task.* events. Message User id Table 15: Field description for metadata topic “MONROE.EXP.PING”. Name Description NodeId Guid Timestamp SequenceNumber DataId DataVersion Operator Iccid Bytes Host Rtt Node numerical ID. Unique experiment identifier. Entry timestamp (in seconds since UNIX epoch with microsecond precision). Monotonically increasing message counter. Metadata topic. Last version is 2. Operator name as reported by the network for the interface in which the experiment was run. Internationally defined integrated circuit card identifier of the SIM card. Size of the ping message payload. IP of the destination host of the ping probe. Round-Trip-Time of the ping probe. 64 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 Table 16: Field description for metadata topic “MONROE.EXP.HTTP.DOWNLOAD”. C Name Description NodeId Guid Timestamp SequenceNumber DataId DataVersion Operator Iccid TotalTime Bytes SetupTime DownloadTime Host Speed Port Node numerical ID. Unique experiment identifier. Entry timestamp (in seconds since UNIX epoch with microsecond precision). Monotonically increasing message counter. Metadata topic. Last version is 2. Operator name as reported by the network for the interface in which the experiment was run. Internationally defined integrated circuit card identifier of the SIM card. Total experiment execution time (in fractional seconds). Total number of bytes downloaded. Time required to set up the HTTP connection. Time spent doing the actual download. IP address of the remote host from which data was downloaded. Download speed in bytes/s as measured by the experiment. TCP port of the remote host from which data was downloaded. How to map container folders to Windows paths Before being able to access Windows (host) folders from a container, the drive has to be made available to the containers following these steps:5,6 1. Access the Docker settings dialog from its taskbar icon: 2. From the tab “Shared Drives”, select the drive you want to make available to the containers, e.g., “C”: 3. You will be prompted for login credentials to access the files: 5 https://rominirani.com/docker-on-windows-mounting-host-directories-d96f3f056a2c#.pdeuy0c4o 6 Thanks to Lena for pointing to the solution. 65 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 4. Start the container mounting the desired folder: $ docker run -v c:/Users/Dell/myresults:/data container_name ls /data This command executes ls /data inside an instance of the container “container_name,” after mounting “C:/Users/Dell/myresults/” into that path. 5. The folder can be accessed normally from Windows and will reflect changes to any files automatically. References [1] Te-Yuan Huang, Ramesh Johari, Nick McKeown, Matthew Trunnell, and Mark Watson. A buffer-based approach to rate adaptation: Evidence from a large video streaming service. In Proceedings of the 2014 ACM Conference on SIGCOMM (SIGCOMM’14), pages 187–198, New York, NY, USA, 2014. ACM Press. [2] Juluri P., Tamarapalli V., and D. Medhi. SARA: Segment aware rate adaptation algorithm for dynamic adaptive streaming over HTTP. In ICC QoE-FI Workshop, June 2015. 66 of 67 Project no. 644399 User manual MONROE Platform User manual Public Rev. 1.0/ March 14, 2019 Disclaimer The views expressed in this document are solely those of the author(s). The European Commission is not responsible for any use that may be made of the information it contains. All information in this document is provided “as is”, and no guarantee or warranty is given that the information is fit for any particular purpose. The user thereof uses the information at its sole risk and liability. 67 of 67 Project no. 644399
Source Exif Data:
File Type : PDF File Type Extension : pdf MIME Type : application/pdf PDF Version : 1.5 Linearized : No Page Count : 67 Page Mode : UseOutlines Author : Title : Subject : Creator : LaTeX with hyperref package Producer : pdfTeX-1.40.18 Create Date : 2019:03:14 17:21:38+01:00 Modify Date : 2019:03:14 17:21:38+01:00 Trapped : False PTEX Fullbanner : This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/Debian) kpathsea version 6.2.3EXIF Metadata provided by EXIF.tools