Kyle,

I believe the infrastructure to support your research (emulator, traffic
generators, data collection tools, etc), is probably similar to what we
use for our experimentation and testing. For the purposes of this
conversation, I'll stick to open source tools and frameworks we use. I'm
moving this conversation to the emane-users mailing list so that it
might benefit others and possibly grow as a thread with recommendations
from community members.

A great place to learn about EMANE is the EMANE Wiki and tutorial:

 https://github.com/adjacentlink/emane/wiki
 https://github.com/adjacentlink/emane-tutorial/wiki

The EMANE framework provides physical layer emulation along with an API
for developing radio model plugins of varying complexity and fidelity.
The open source distribution contains a number of radio models which can
be used for your experimentation and research.

Directing traffic to and from the emulator is largely a function of the
waveform being emulated (radio model being used). For the open source
radio models, one of two transport mechanism (also called boundaries)
are available: virtual and raw. Most use cases will use the virtual
transport. This transport instantiates a vif (default: emane0) for use
as the emulation entry and exit point. All packets routed to this
interface will be processed by the emulator and, when determined
completed at the receiver based on physical layer and radio model
algorithms, injected back into kernel space for application delivery.

EMANE is not a routing protocol, so you will need to configure and run a
routing protocol in order to create an ad-hoc mobile network. For
example, the emane-tutorial uses OLSR configured to use emane0 as its
over-the-air interface.

Some type of traffic generator or application will be required in order
to generate the traffic flows you are interested in studying. I would
start with taking a look at MGEN to see if it meets your needs:

 https://www.nrl.navy.mil/itd/ncs/products/mgen

EMANE requires each node in the emulation to have an isolated network
stack. This can be achieved in a few ways: physical machines, virtual
machines or using linux containers (directly or with something like
docker). We use linux containers with assigned CPU cores and bridge
together multiple servers to increase emulation scale.

In order to orchestrate experiments, you will need some form of test
control (a.k.a test flow, test execution, etc.) system. We use an
in-house test control environment for our experiments. The
emane-tutorial provides an example of a simple test flow based on a few
bash scripts. One popular feature rich tool for doing network
experimentation is CORE. It is much more than a test execution
environment and well worth consideration:

 https://www.nrl.navy.mil/itd/ncs/products/core

We recently open sourced our distributed data collection framework,
OpenTestPoint:

 https://github.com/adjacentlink/opentestpoint/wiki

It is built on top of ZeroMQ and Google Protocol Buffers and provides a
uniform mechanism to collect, record and access measurement information
in realtime. OpenTestPoint provides an API in C++ and Python for writing
measurement collectors called probes. Open source probes exist for all
the EMANE models as well as one for IPv4 and IPv6 routing tables:

 https://github.com/adjacentlink/opentestpoint-probe-emane
 https://github.com/adjacentlink/opentestpoint-probe-iproute

EMANE OpenTestPoint probes for example, turn what is accessible via
emanesh into a pub/sub measurement stream that is collected uniformly
from each node running in the emulation experiment. Measurements use
well-define protocol buffer specifications and build tidy data sets for
analysis. We subscribe to measurements in realtime to monitor the status
of our experiments and to create smart scenarios that trigger actions
based on certain network state criteria. The most recent version of the
emane-tutorial integrates OpenTestPoint into many of the demonstrations.

Along the same lines, we recently developed OpenStatistic, which is a
minimally intrusive self-contained library that provides other
applications with the same statistics, statistic tables and TCP access
capabilities found in emane:

 https://github.com/adjacentlink/openstatistic

OpenStatistic allows us to add internal state insight in the form of
statistics and tables to routing protocols and applications so we can
increase the accuracy of our experiments.

For analysis and monitoring many of our tools are built using SciPy
stack components:

 https://www.scipy.org/stackspec.html

There is a lot you can do with pandas and matplotlib.

-- 
Steven Galgano
Adjacent Link LLC
www.adjacentlink.com


On 12/09/2016 11:43 AM, Kyle Jackson wrote:
> Hi Steven,
> 
> 
> I really appreciate you answering my questions on github regarding EMANE. I 
> am a graduate student doing research on applying machine learning and pattern 
> recognition to an ad-hoc mobile network to understand the user demand model. 
> I was told by a professor to look into EMANE and was wondering if you could 
> briefly explain how EMANE fits within my problem. Given that neither myself 
> or my professors have a background in networks, how does EMANE fit within 
> this: I want to set up some tactical scenario, say, a couple nodes each with 
> different parameters, and want to see how data moves around the nodes. I'd 
> probably create events and analyze what is happening, for example, one node 
> has a really poor signal. I think I understand EMANE as a way to set up a 
> virtual environment as if it there were physical nodes and radios and I can 
> get statistics from this thanks to emanesh. But my question is how do you 
> move data around? Does EMANE have something built in for generating data and 
> se
 eing how it moves around (not talking about the protocol)? Is there a way for 
me to feed data into EMANE and have the data move around? I am currently going 
through the tutorials, so I apologize if this is already answered and I just 
don't understand it.
> 
> 
> Thank you!
> 
> 
> Kyle Jackson
_______________________________________________
emane-users mailing list
[email protected]
http://pf.itd.nrl.navy.mil/mailman/listinfo/emane-users

Reply via email to