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
