Skip to content

SAWassermann/NETPerfTrace

Repository files navigation

NETPerfTrace

NetPerfTrace — an Internet Path Tracking system — is a tool capable of forecasting path changes and path latency variations.

More precisely, NETPerfTrace aims at predicting 3 metrics:

  • the residual life time of a route (i.e. the remaining life time of the route before it actually changes)
  • the number of route changes in the next time-slot
  • the average RTT of the next traceroute sample

The current implementation of NETPerfTrace relies on a random forest with 10 trees for the prediction tasks.

How to use NETPerfTrace

NETPerfTrace has been implemented using Python 2.7. For the machine-learning part, this tool is based on scikit-learn. To install scikit-learn, please follow the instructions on the official website.

To launch NETPerfTrace, simply run the command:

python prediction.py -o <observationTime> -t <timeslotDuration>

where:

  • -o <observationTime>: Duration in hours of the observation time; i.e. the time spanned by the samples used as observation (training) data
  • -t <timeslotDuration>: Duration in hours of a time slot; i.e. the duration of the time windows in which the observation period will be subdivided.

Structure

NETPerfTrace is structured into 5 folders:

  • docs: contains .rst files explaining how to use NETPerfTrace
  • input: should include the files used as input for NETPerfTrace
    • observationPaths: should include the files used for training your models (i.e. training set)
    • predictionPaths: should include the files for which you want NETPerfTrace to perform predictions
  • logs: includes the log files
  • output: the result files generated by NETPerfTrace are saved into this folder
  • scripts: includes all the Python scripts
Format of input files for NETPerfTrace

The files serving as input for NETPerfTrace should meet the following requirements:

  • Each file should contain the traceroutes for one path (i.e. for one (source, destination) tuple)
  • Each traceroute in these files should be formatted as follows:
SOURCE:<tab><IP>
DESTINATION:<tab><IP>
TIMESTAMP:<tab><timestamp in the format YYYYMMDDThh:mm:ss>
HOP:<tab><IP><tab><minRTT><tab><avgRTT><tab><maxRTT><tab><mdevRTT>
...
HOP:<tab><IP><tab><minRTT><tab><avgRTT><tab><maxRTT><tab><mdevRTT>
END

List of scripts

  • prediction.py: launches the prediction process
  • feature_extraction.py: extracts the features from the data for forecasting Internet path dynamics and performance

Papers related to NETPerfTrace

Several papers about NETPerfTrace have been published:

[1] NETPerfTrace - Predicting Internet Path Dynamics and Performance with Machine Learning
S. Wassermann, P. Casas, T. Cuvelier, B. Donnet
in Proceedings of ACM SIGCOMM 2017 Workshop on Big Data Analytics and Machine Learning for Data Communication (Big-DAMA), Los Angeles (CA), USA, 2017

[2] Machine Learning based Prediction of Internet Path Dynamics
S.Wassermann, P. Casas, B. Donnet
in Proceedings of the ACM CoNEXT Student Workshop, Irvine (CA), USA, 2016

If you use NETPerfTrace in your work, please cite [1]

@inproceedings{Wassermann:2017:NPI:3098593.3098599,
 author = {Wassermann, Sarah and Casas, Pedro and Cuvelier, Thibaut and Donnet, Benoit},
 title = {NETPerfTrace: Predicting Internet Path Dynamics and Performance with Machine Learning},
 booktitle = {Proceedings of the Workshop on Big Data Analytics and Machine Learning for Data Communication Networks},
 series = {Big-DAMA '17},
 year = {2017},
 isbn = {978-1-4503-5054-9},
 location = {Los Angeles, CA, USA},
 pages = {31--36},
 numpages = {6},
 url = {http://doi.acm.org/10.1145/3098593.3098599},
 doi = {10.1145/3098593.3098599},
 acmid = {3098599},
 publisher = {ACM},
 address = {New York, NY, USA},
 keywords = {DTRACK, M-Lab, distributed measurements, machine learning, traceroute},
} 

Acknowledgement

This work has been partially funded by the Vienna Science and Technology Fund (WWTF) through project ICT15-129, “BigDAMA”.

BigDAMA

Authors

About

NETPerfTrace - an Internet Path Tracking system

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages