[go: up one dir, main page]

Skip to content
unly edited this page Sep 18, 2017 · 6 revisions

Welcome to the EmuFog wiki!

Run EmuFog

Get A Network Topology

EmuFog currently supports two different graph data formats:

  1. The BRITE network generator supporting the following models:
  2. The Macroscopic Internet Topology Data Kit from Caida including measured real world internet topologies

Write The Settings File

To specifiy the hardware capabilities and the software to test, EmuFog uses a settings file containing all necessary information. The EmuFog repository contains an exemplary settings file to get started. The parameters used are explained in the tables below in more detail.

Parameter Description
BaseAddress The base IP address of the network containing all nodes. This is the starting point and first address assigned. Format: XXX.XXX.XXX.XXX
OverWriteOutputFile Indicates whether the output file should be overwritten in case it already exists. true to overwrite file, false to keep it.
MaxFogNodes The maximum number of fog nodes to place in the network.
CostThreshold The cost function’s threshold. Depends on the cost function chosen. The current implementation uses latency as a cost function.
HostDeviceLatency Latency to use between a placed client device at the edge of the network and its associated edge node.
HostDeviceBandwidth Bandwidth to use between a placed client device at the edge of the network and its associated edge node. Measured in MB.
ThreadCount Number of threads to use for processing the graph. Each AS can be processed by an individual thread.
ParalleledFogBuilding Indicates whether the fog network is built in parallel. true to build it up in parallel, false to build it sequentially.

The client device containers use the following parameters:

Parameter Description
Name Name of the Docker image to use.
Version Version of the Docker image.
ScalingFactor Scales the workload of this device higher than 1.
AverageDeviceCount The average number of devices of this type connected to an edge node.
MemoryLimit Memory size of this container in Bytes.
CPUShare Scaling of the CPU power. Container receives share of its value in respect to the total sum.

Fog nodes share some generic parameters with client devices. Still, all parameters are listed below.

Parameter Description
ID Unique identifier of a computing container.
Name Name of the Docker image to use.
Version Version of the Docker image.
MaximumConnections The maximum number of connections from client devices this container can handle.
Costs Deployment costs of this fog node in the network.
MemoryLimit Memory size of this container in Bytes.
CPUShare Scaling of the CPU power. Container receives share of its value in respect to the total sum.

Launch EmuFog

EmuFog requires input by the user to launch. Therefore, the information can be passed via a command line interface as arguments. The following table lists the required arguments, their shortcut and their respective description.

Argument Shortcut Description
-Settings -s Path to the settings file to use.
-Type -t The type of reader to use. Currently supported: BRITE and CAIDA. This argument is case insensitive.
-File -f Path to a topology file to read in. This argument can be used multiple times.
-Output -o Path to the output file to write.

A call of EmuFog could look like this:

java -jar emufog.jar -s settings.json -t brite -f topology.brite -o out.py

Deploy An Experiment

The final outcome of EmuFog is the network graph with the defined devices and fog nodes placed in the topology. In order to run an experiment it requires a network emulation tool executing the defined software. Currently, EmuFog supports an export for the MaxiNet emulator.

Install MaxiNet

To install MaxiNet clone the git repository to your local device.

git clone https://github.com/MaxiNet/MaxiNet.git

Navigate to the new directory of MaxiNet.

cd MaxiNet/

Install MaxiNet with the installer script.

./installer.sh

Confirm the installation with 'y' and wait. This might take a while. In case the experiment requires multiple devices, the installation has to be carried out on each of them.

Set Up MaxiNet

The connection between the distributed emulation servers will be established using the MaxiNet configuration file. First, copy the exemplary configuration file from the repository to your home directory.

cp MaxiNet/share/MaxiNet-cfg-sample ~/.MaxiNet.cfg

Second, modify the configuration file to match the respective IP addresses. The MaxiNet wiki provides a detailed list of all parameters.

Run An Experiment

To run an experiment using MaxiNet, start up the openflow controller pox,

python pox.py

the MaxiNet Frontend Server,

MaxiNetFrontendServer

and finally, the MaxiNet workers on each emulation server.

sudo MaxiNetWorker

MaxiNet should be up and ready to emulate an experiment. Whether there are workers free to emulate can be seen via the MaxiNet status command.

MaxiNetStatus

Navigate to the python file generated by EmuFog and start the experiment.

python out.py