Incremental Fast Lightweight (y) virtual network Embedding framework
Find a file
2021-07-10 13:30:34 +02:00
examples Moved metrics to sub-packages + added config to enable memory measurement 2021-07-03 14:25:57 +02:00
gfx Added visualization section 2021-06-22 10:57:21 +02:00
ilp Changed log scaling 2021-07-06 18:06:27 +02:00
network.generators Started VNE PM pipeline implementation 2021-07-09 14:21:36 +02:00
network.metrics Implemented first sketch of the operating cost metric 2021-07-08 14:08:05 +02:00
network.model Fixed rest of the implementation (int -> long) 2021-07-10 12:02:17 +02:00
network.model.rules Fixed rules + added three-stage pipeline to DissScenario args parser + fixed algo 2021-07-10 12:48:28 +02:00
network.model.rules.rack Allowed switch -> server embeddings 2021-07-10 13:30:34 +02:00
network.model.rules.vnet Fixed rest of the implementation (int -> long) 2021-07-10 12:02:17 +02:00
network.visualization Added switch to server embedding to UI 2021-05-28 14:22:25 +02:00
scripts Added custom script for the TAF algorithm as it optimizes another metric 2021-07-09 11:20:51 +02:00
settings Added google code style template and reformatted all source files 2021-05-01 10:18:11 +02:00
test.suite Fixed most of the tests 2021-07-09 18:07:01 +02:00
vne.algorithms Fixed rules + added three-stage pipeline to DissScenario args parser + fixed algo 2021-07-10 12:48:28 +02:00
vne.scenarios Fixed rules + added three-stage pipeline to DissScenario args parser + fixed algo 2021-07-10 12:48:28 +02:00
.gitignore Added argument eval scripts for batch job runner 2021-06-20 17:56:53 +02:00
LICENSE Added license 2021-05-19 10:51:45 +02:00
README.md Added visualization section 2021-06-22 10:57:21 +02:00

iflye

ifyle is an open-source framework for Incremental Fast Lightweight (y) virtual network Embedding.

Installation (development)

  • Install AdoptOpenJDK 13 (HotSpot JVM).
  • Install eMoflon::IBeX as described here.
  • Install Gurobi in version 8.1.1 and activate a license for your computer.
  • Launch a runtime workspace (while using a runtime Eclipse) as stated in the eMoflon::IBeX installation steps.
    • Additionally, the runtime workspace needs some environment variables to access the Gurobi solver (Do not forget to adapt them to your individual setup):
GRB_LICENSE_FILE=/home/maxkratz/gruobi.lic
GUROBI_HOME=/opt/gurobi811/linux64/
GUROBI_JAR_PATH=/opt/gurobi811/linux64/lib/gurobi.jar
LD_LIBRARY_PATH=/opt/gurobi811/linux64/lib/
PATH=/opt/gurobi811/linux64/bin/:$PATH
  • Clone this Git repository to your local machine and import it: File -> Import -> General -> Existing Projects into Workspace. Import all projects.
  • Inside the runtime workspace, build all projects (Project -> Clean... -> Clean all projects) to trigger code generation.
    • Build the projects network.model and model.rules with the black eMoflon hammer symbol.

Usage (running simulations)

After finishing the installation steps, one may run simulations e.g. from the examples project. There are some examples for network generators as well as embedding algorithms. All examples contain a public static void main(final String[] args) method as entry point and can be run as Java appication from within the eclipse workspace.

CLI usage

One may want to run the whole program as one exported file e.g. on the CLI for measurement purposes. To export the whole project as executable JAR file, follow this step:

  • File -> Export... -> Java/Runnable JAR file -> Next -> (Chose your launch configuration) -> (Chose the export destination) -> Library handling: Package required libraries into generated JAR -> Finish

Depending on your launch configuration, you can start the JAR file with additional arguments. Example: $ java -jar iflye.jar

For larger simulations, you may want to increase the java heap space. Example with 32 GiB:: $ java -Xmx32g -jar iflye.jar

In the subfolder vne.scenarios/scripts/ are some basic bash scripts to run parameter sweeps as well as CLI argument parsing into the scenario.

Scenario loader

As this project is the small sibling of the idyve project, one may want to run the same scenarios in both frameworks. For this purpose, iflye has a built in model converter which can read virtual and substrate networks from JSON export files (e.g. from idyve).

The chosen JSON format is loosly coupled with the used metamodel. Therefore, it acts as a kind of abstract model representation.

Feel free to check out some examples in vne.scenarios/resources/*/.

Visualization

For easier debugging purposes, a basic GUI for visualizing networks is implemented in the project network.visualization based on GraphViz. Currently, it can render tree-based networks as tree structures or use the automatic mode of GraphViz from a model file model.xmi in the examples project.

License

This project is licensed under the GNU General Public License v3.0 - see the LICENSE.md file for more details.