Code Monkey home page Code Monkey logo

icarus's Introduction

Icarus ICN caching simulator

Icarus is a Python-based discrete-event simulator for evaluating caching performance in Information Centric Networks (ICN).

Icarus is not bound to any specific ICN architecture. Its design allows users to implement and evalute new caching policies or caching and routing strategy with few lines of code.

This document explains how to configure and run the simulator.

Installation

First, ensure that you have Python installed on your machine with version 2.7.9+ or 3.4+.

Then, clone the repository on your local machine:

$ git clone https://github.com/icarus-sim/icarus.git

and run the following:

$ make install

This downloads and installs all required dependencies and installs Icarus in editable mode. This means that you can make changes directly on the source code of the cloned repository to have effect on your installation.

Usage

You can use Icarus in three different ways:

  • Run simulations using models provided by Icarus
  • Process and analyze results from those simulations
  • Use Icarus modeling tools into your own code.

You can a set of simulations by executing:

$ icarus run --results <RESULTS_FILE> <CONF_FILE>

where:

  • RESULTS_FILE is the pickle file in which results will be saved,
  • CONF_FILE is the configuration file describing the experiments to run.

To learn how to set up the configuration file, you may want to look at config.py and possibly modify it according to your requirements. Alternatively, you can look at the examples folder which contains examples of configuration files for various use cases.

Once simulations complete you can print the content of your results file into a human readable format, running:

$ icarus results print <RESULTS_PICKLE_FILE> > <OUTPUT_TEXT_FILE>

Icarus also provides a set of helper functions for plotting results. Look at the examples folder for plot examples.

By executing the steps illustrated above it is possible to run simulations using the topologies, cache policies, strategies and result collectors readily available on Icarus. Icarus makes it easy to implement new models to use in simulations.

To implement new models, please refer to the description of the simulator provided in this paper:

L.Saino, I. Psaras and G. Pavlou, Icarus: a Caching Simulator for Information Centric Networking (ICN), in Proc. of SIMUTOOLS'14, Lisbon, Portugal, March 2014. [PDF], [Slides], [BibTex]

Otherwise, please browse the source code. It is very well documented and easy to understand.

Finally, Icarus provides utilities for modeling the performance of caches and work with traffic traces. The code is included in the icarus.tools package. These tools are described in detail in this paper.

Development setup

Running make install creates a fully functional development environment. You can run all test cases with:

$ make test

and build HTML documentation with:

$ make doc

Citing

If you use Icarus for your paper, please refer to the following publication:

@inproceedings{icarus-simutools14,
   author = {Saino, Lorenzo and Psaras, Ioannis and Pavlou, George},
   title = {Icarus: a Caching Simulator for Information Centric Networking (ICN)},
   booktitle = {Proceedings of the 7th International ICST Conference on Simulation Tools and Techniques},
   series = {SIMUTOOLS '14},
   year = {2014},
   location = {Lisbon, Portugal},
   numpages = {10},
   publisher = {ICST},
   address = {ICST, Brussels, Belgium, Belgium},
}

Documentation

If you desire further information about Icarus, you can find it in the following places:

  • In this paper, which describes the overall architecture of the Icarus simulator, the motivations for its design, the models implemented and shows some snippets of codes on how to use the modelling tools.
  • In the API reference, which documents all packages, modules, classes, methods and functions included in the Icarus simulator.
  • In the source code, which is well organized and throughly documented.

Reproduce results of previous papers

Hash-routing schemes, ACM SIGCOMM ICN '13

The Icarus simulator can be used to reproduce the results and plot the graphs presented in the paper:

L.Saino, I. Psaras and G. Pavlou, Hash-routing Schemes for Information Centric Networking, in Proc. of the 3rd ACM SIGCOMM workshop on Information Centric Networking (ICN'13), Hong Kong, China, August 2013. [PDF], [BibTex]

To do so, refer to the instructions reported in the icarus-sim/hashrouting-icn13-results repository.

License

Icarus is licensed under the terms of the GNU GPLv2 license.

Contacts

Acknowledgments

This work received funding from the UK EPSRC, under grant agreement no. EP/K019589/1 (COMIT project), the EU-Japan initiative, under EU FP7 grant agreement no. 608518 and NICT contract no. 167 (GreenICN project) and from the EU FP7 program, under grant agreements 318488 (Flamingo Network of Excellence project).

icarus's People

Contributors

lorenzosaino avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.