-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% NEPI, a framework to manage network experiments
% Copyright (C) 2013 INRIA
%
% This program is free software: you can redistribute it and/or modify
-% it under the terms of the GNU General Public License as published by
-% the Free Software Foundation, either version 3 of the License, or
-% (at your option) any later version.
+% it under the terms of the GNU General Public License version 2 as
+% published by the Free Software Foundation;
%
% This program is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Motivation
-During the past decades, a wide variety of platforms to conduct network
+During the past decades a wide variety of platforms to conduct network
experiments, including simulators, emulators and live testbeds,
have been made available to the research community.
Some of these platforms are tailored for very specific use cases (e.g.
another. Indeed, different platforms provide their own mechanisms to
access resources and different tools to conduct experiments.
These tools vary widely, for instance, to run a ns-3 simulation it is
-necessary to write a C++ program, while to conduct and experiment using
+necessary to write a C++ program, while to conduct an experiment using
PlanetLab nodes, one must first provision resources through a special web
service, and then connect to the nodes using SSH to launch any applications
involved in the experiment.
can be a time consuming and difficult task, specially if distributed
resources need to be synchronised to perform the right action at the
right time. Detecting and handling possible errors during experiment
-execution also posses a challenge, even more so when dealing with large size
+execution also posses a challenge, even more when dealing with large size
experiments. Additionally, difficulties related to instrumenting the
experiment and gathering the results must also be considered.
% Challenge
In this context, the challenges that NEPI addresses are manifold.
-Firstly, simplifying the complexity of running network experiments.
-Secondly, simplifying the use of different experimentation platforms,
+Firstly, to simplify the complexity of running network experiments.
+Secondly, to simplify the use of different experimentation platforms,
allowing to easily switch from one to another.
-Thirdly, simplifying the
+Thirdly, to simplify the
use of resources from different platforms at the same time in
a single experiment.
connections. The attributes define the configuration of the resource,
the traces represent the results that can be collected for that resource
during the experiment and the connections represent how a resource relates
-to other resources in th experiment.
+to other resources in the experiment.
\begin{figure}[h]
\centering
\label{fig:intro_resources}
\end{figure}
-Examples of attributes are a linux host host name, an IP address to be
+Examples of attributes are a linux hostname, an IP address to be
assigned to a network interface, a command to run as a remote application.
Examples of traces are the standard output or standard error of a
running application, a tcpdump on a network interface, etc.
an \emph{interactive deployment} mode, where new resources can de
declared and deployed on the fly, according to the experiment needs.
This interactive mode can be useful to run experiments with the
-purpose of exploring a new technology, or to use NEPI as a adaptive
+purpose of exploring a new technology, or to use NEPI as an adaptive
experimentation tool, that could change an experiment according to
-changing external conditions or measurements.
+external conditions or measurements.
\section{Resource Management: The EC \& The RMs}
For each resource that the user registers in the \emph{topology graph}, the EC
will instantiate a RM of a corresponding type. A RM is a resource specific
-controller and different types of resources require a different type of
-RM, specifically adapted to manage them.
+controller and different types of resources require different type of
+RMs, specifically adapted to manage them.
The EC communicates with the RMs through a well defined API that exposes
the necessary methods (actions) to achieve all the state transitions defined by the