The Khang Dang1, Nitinder Mohan1, Lorenzo Corneo2, Aleksandr Zavodovski2, Jörg Ott1, Jussi Kangasharju3
1Technical University of Munich, 2Uppsala University, 3University of Helsinki
This repository contains the code to reproduce the results and figures of our publication Cloudy with a Chance of Short RTTs: Analyzing Cloud Connectivity in the Internet accepted for ACM Internet Measurement Conference (IMC) 2021.
To better structure this, all of the code is included in the speedchecker-analysis.ipynb file in form of a Jupyter notebook.
We split all of the figures into different cells with headers which provide information about the number of the
figure in the paper as well as a short description of the content.
Also included are two .json-files which are used to convert country codes in the case of iso3.json
(obtained from here and to look up additional information and enrich
the present data in the case of peeringdb.json (obtained from PeeringDB).
Throughout our measurements we used over 115,000 Speedchecker probes. This is their distribution across different countries.
We targeted virtual machines hosted in 195 datacenters in many different countries throughout the world.

The data necessary for the plots needs to be downloaded before starting and is available at mediaTUM with instructions on how to set it up. We encourage to cite our IMC 2021 paper in your academic publications upon usage.
@inproceedings{cloudyIMC2021,
author= {Dang, The Khang and Mohan, Nitinder and Corneo, Lorenzo and Zavodovski, Aleksandr and Ott, Jörg and Kangasharju, Jussi},
title={{Cloudy with a Chance of Short RTTs: Analyzing Cloud Connectivity in the Internet}},
booktitle = {Proceedings of Internet Measurement Conference},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3487552.3487854},
doi = {10.1145/3487552.3487854},
year={2021},
series = {IMC '21}
}
Additionally, the dataset from an earlier publication is necessary for certain figures as well. This dataset is also available at mediaTUM.
Most likely you have already completed this step. The reproduction is dependent on two databases.
- Speedchecker platform dataset: You can download it from here.
- RIPE Atlas platform dataset: You can download it from here.
In order to run the analysis you need to set up a working Jupyter Lab environment with Pythonv3. In addition, several non-default Python libraries were used.
If you want to use a Python virtualenv, you can create one with:
python3 -m venv MY-VENV-LOCATIONThen you can activate the virtualenv with:
source MY-VENV-LOCATION/bin/activateThe libraries can then be installed with the following command:
pip install -r requirements.txt
Note that some of the libraries/dependencies (GDAL, Fiona, Cartopy, basemap) might need to be installed manually through wheel files which are available here for Windows for example. These need to be downloaded and can then be installed with:
pip install <path/to/wheel/file>
It might also be necessary to update pip in order to install all of the libraries. This can be done with:
pip install --upgrade pip
Before you start Jupyter Lab, make sure that your Python virtualenv (if you are using one), is activated:
source MY-VENV-LOCATION/bin/activateThen simply start the Jupyter Lab server in the current directory:
jupyter-labThis should open a browser if run on a GUI system or display information about the used port and configuration when run on a headless server, which can be used when establishing an SSH tunnel.
You can now run the reproduction step by step in the Jupyter Lab's browser window by running speedchecker-analysis.ipynb.
The resulting figures will then be placed in the Figs/ folder and will be named after the figure identifier used in the paper.
