Skip to content

tumi8/moonem-artifacts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Artifacts for the Paper "MoonEm — High-Precision Path Property Emulation Using DPDK"

DOI License: CC BY 4.0

This repository contains the artifacts for the paper MoonEm — High-Precision Path Property Emulation Using DPDK by Stefan Lachnit, Sebastian Gallenmüller, Eric Hauser, Florian Wiedner, Kilian Holzinger, Henning Stubbe, Thomas Senftl, and Georg Carle. MoonEm is available as part of the MoonGen repository on GitHub.

To reproduce the results of the paper, follow the steps in the section Reproducing the Results.

Reproducing the Results

Steps

All the following steps should be executed as the root user on a Debian- or Ubuntu-based system. The scripts were tested on Debian Bookworm and Ubuntu 24.04.

  1. Clone this repository to your evaluation machine (Requirements)
  2. Install Docker (Additional instructions for Debian and Ubuntu)
  3. Execute the build_figures.sh script (for more details, see below)
  4. The resulting PDF figures and build files are stored in the figures folder, organized by subfolder for each reproduced figure.

Hardware Requirements

To run the processing scripts, the following hardware requirements should be met:

  • Required disk space: ~256GB
  • Required RAM: ~256GB
  • >10 CPU cores recommended for best performance

Other requirements:

  • Downloaded files: ~50GB
  • Processing time: ~1.5 hours (on AMD EPYC 7542 32-Core CPU)

Repository content

This repository contains the necessary scripts to reproduce the main results of the paper from the raw measurement data.

  • containers: Dockerfiles for building containers to run the processing scripts
  • data: The scripts will download the raw measurement data into this folder
  • figures: Postprocessing scripts and TeX source code to build the figures from the paper as PDFs
  • processing: Code of the processing tool used to process the packet captures
  • scripts: Processing steps executed on the processing host
  • steps: Processing scripts executed in the Docker containers
  • build_figures.sh: Runs all the processing steps in sequence
  • measurements: Supplemental scripts that were used to perform the measurements on our testbed

Measurement Data

The measurement dataset is uploaded to Zenodo. The scripts in this repository automatically download the raw measurement data from a copy at https://syncandshare.lrz.de/ for faster downloads. The results for each measurement run were stored as a separate tar.zst archive, containing the packet captures, script metadata, and script outputs for the respective experiment. Packet captures use a custom binary format (64-bit packet ID followed by a 64-bit little-endian timestamp in nanoseconds).

Processing scripts

Processing of the result data is divided into multiple steps performed by the scripts in the steps folder. These steps are automatically called by the build_figures.sh script. The scripts start Docker containers that perform processing using matching scripts in the scripts folder.

  • 01_build_container.sh: Build Docker containers used for the following steps from Dockerfiles
  • 02_download_artifacts.sh: Download compressed raw measurement data into the data folder
  • 03_unzip.sh: Decompress the downloaded measurement data
  • 04_remove_preprocessed_data.sh: The downloaded data contains preprocessed data. These preprocessed files are deleted in this step
  • 05_preprocess_captures.sh: Run preprocessing scripts to analyze raw packet captures for latency measurements
  • 06_postprocess_results.sh: Run postprocessing scripts to convert results from preprocessing and measurements to CSVs that can be plotted
  • 07_build_figures.sh: Run latexmk for all figures to generate PDFs

Processing tool

Raw packet capture data is processed using a C++ program stored in the processing folder. This program reads all packet IDs and timestamps into a hashmap, calculates statistics (such as latency, IPG, etc.), and saves the results as CSV files. The code is built and executed inside a Docker container using the processing scripts.

Figures

The figures folder contains subfolders for each figure in the paper (sometimes also grouped for similar measurements). Each folder contains two types of files:

  • A process.py file for transforming the results from the preprocessing step and other measurement logs into CSVs that can be plotted
  • One or more .tex files for generating the PDF plots

About

Artifacts for the Paper "MoonEm — High-Precision Path Property Emulation Using DPDK"

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published