-
Notifications
You must be signed in to change notification settings - Fork 9
Home
Welcome to the EmuFog wiki!
EmuFog currently supports two different graph data formats:
- The BRITE network generator supporting the following models:
- 'Routing of Multipoint Connections' by Waxman, DOI: 10.1109/infcom.2002.1019309
- 'On Distinguishing between Power-Law Internet Topology Generators' by Bu and Towsley, DOI: 10.1109/infcom.2002.1019309
- 'Emergence of Scaling in Random Networks' by Barabási and Albert, DOI: 10.1126/science.286.5439.509
- 'Topology of Evolving Networks: Local Events and Universality' by Barabási and Albert, DOI: 10.1103/physrevlett.85.5234
- The Macroscopic Internet Topology Data Kit from Caida including measured real world internet topologies
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. |
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
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.
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.
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.
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