iflye
Incremental Fast Lightweight (y) virtual network Embedding framework
Science Score: 26.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (13.8%) to scientific vocabulary
Keywords
Repository
Incremental Fast Lightweight (y) virtual network Embedding framework
Basic Info
Statistics
- Stars: 4
- Watchers: 2
- Forks: 3
- Open Issues: 13
- Releases: 6
Topics
Metadata Files
README.md
iflye
ifyle is an open-source framework for Incremental Fast Lightweight (y) virtual network Embedding.
Installation (development)
- Install Temurin JDK21 or newer.
- Install GIPS as described here or use the pre-built Eclipse.
- Install Gurobi in version
12.0.2and activate a license for your computer.- Currently, Gurobi is the default ILP solver used in iflye.
- Install IBM ILOG CPLEX in version
22.1.2.- CPLEX is an alternative ILP solver in iflye. You do not need it explicitely, but if you did not install and configure it properly, at least one test case will fail.
- Please notice: CPLEX does not support SOS1 constraints with equal weights (as usually desired by the PM-/ILP-based algorithms in this projects). Therefore, the adapter implementation ignores all SOS1 constraint creations.
- 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 and the CPLEX solver. Do not forget to adapt them to your individual setup: ``` # Linux GRBLICENSEFILE=/home/mkratz/gurobi.lic GUROBIHOME=/opt/gurobi1202/linux64/ LDLIBRARYPATH=/opt/gurobi1202/linux64/lib/:/opt/ibm/ILOG/CPLEXStudio2212/cplex/bin/x86-64linux/ PATH=/opt/gurobi1202/linux64/bin/:/opt/ibm/ILOG/CPLEXStudio2212/cplex/bin/x86-64_linux/:$PATH
macOS
GRBLICENSEFILE=/Users/mkratz/gurobi.lic GUROBIHOME=/Library/gurobi1202/macosuniversal2/ LDLIBRARYPATH=/Library/gurobi1202/macosuniversal2/lib/:/Applications/CPLEXStudio2212/cplex/bin/arm64osx/ PATH=/Library/gurobi1202/macosuniversal2/bin/:/Applications/CPLEXStudio2212/cplex/bin/arm64osx/:$PATH
Windows
GRBLICENSEFILE=C:\Users\mkratz\gurobi.lic GUROBIHOME=C:\gurobi1202\win64 LDLIBRARYPATH=C:\gurobi1202\win64\lib;C:\Program Files\IBM\ILOG\CPLEXStudio2212\cplex\bin\x64win64\ PATH=C:\gurobi1202\win64\bin;C:\Program Files\IBM\ILOG\CPLEXStudio2212\cplex\bin\x64_win64\ ```
Project setup (manual)
- Clone this Git repository to your local machine and import it into Eclipse: File -> Import -> General -> Existing Projects into Workspace. Import all projects.
- Clone the GIPS examples repo to your local machine and import it into Eclipse: File -> Import -> General -> Existing Projects into Workspace. Import (at least) the following projects:
gips.examples.dependenciesnetwork.modelorg.emoflon.gips.gipsl.examples.mdvneorg.emoflon.gips.gipsl.examples.mdvne.bwignoreorg.emoflon.gips.gipsl.examples.mdvne.migrationorg.emoflon.gips.gipsl.examples.mdvne.seq
- Inside the runtime workspace, build all projects (Project -> Clean... -> Clean all projects) to trigger code generation.
- Build the projects network.model, network.model.rules, network.model.rules.racka, network.model.rules.rackb, and network.model.rules.vnet with the black eMoflon hammer symbol.
- Build the GIPS projects mentioned above with the black eMoflon hammer symbol.
A good start point to verify your installation is to run the included unit tests, refer to the test section.
Project setup (PSF)
- As an alternative to the previous project setup section, you can use this PSF file for the import of all necessary projects.
Code-Style
This project uses the built-in code-style and code-formatter of Eclipse. Before contributing, please set-up your Eclipse code-style settings as follows:
- Window -> Preferences -> Java
- -> Code Style -> Clean Up -> Active profile: -> "Eclipse [built-in]" (default)
- -> Code Style -> Formatter -> Active profile: -> "Eclipse [built-in]" (default)
- -> Code Style -> _Organize Imports: -> "java, javax, org, com" (default)
- -> Editor -> _Save Actions:
- Check "Perform the selected actions on save"
- Check "Format source code"
- Check "Format all lines"
- Check "Organize imports"
- Check "Additional actions"
By using this settings, you should be unable to commit unformatted code.
Usage (running simulations)
After finishing the installation steps, you 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
You may want to run the whole program as one exported file, e.g., on a server via 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 --algorithm taf --objective total-taf-comm --snetfile resources/two-tier-12-pods/snet.json --vnetfile resources/two-tier-12-pods/vnets.json --csvpath metrics.csv
For larger simulations, you may want to increase the Java heap space.
Example with 32 GiB:
$ java -Xmx32g -jar iflye.jar $parameters
In the subfolder 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, you may want to run the same scenarios in both frameworks, e.g., to compare the performance. 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 to transfer models from one metamodel/framework to the other.
Feel free to check out some examples in vne.scenarios/resources/*/.
Tests
Various test cases to test the framework as well as some of the implemented VNE algorithms are implemented in the project test.suite.iflye. To start them, follow this step: - Go to test.suite.iflye/launch -> right click on one of the two launch files -> Run As... -> JUnit Test - test.suite.iflye.launch - launches all JUnit tests without explicitly setting environment variables. This file fits the use case that you are using an Eclipse runtime workspace with properly set up environment variables in your runtime launch config. - test.suite.iflye.envs.launch - launches all JUnit tests with standard environment variable values. This file fits the use case that you did not set up proper environment variables in your Eclipse runtime workspace.
Please notice: The test IlpSolverSetupTest will check your Gurobi/CPLEX installation and configuration. If this test fails, at least one of the two ILP solvers is not configured properly.
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.
Therefore, launch the class Ui with these arguments: ../examples/model.xmi sub 1
* ../examples/model.xmi is the path of the model to read.
* sub is the name of the (substrate) network to visualize.
* 1 configures the automatic layout. You can also chose 0 to use a tree-like layout.

License
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for more details.
Owner
- Name: Real-Time Systems Lab
- Login: Echtzeitsysteme
- Kind: organization
- Website: http://www.es.tu-darmstadt.de
- Repositories: 19
- Profile: https://github.com/Echtzeitsysteme
GitHub Events
Total
- Issues event: 25
- Delete event: 16
- Issue comment event: 14
- Push event: 29
- Pull request review event: 7
- Pull request review comment event: 3
- Pull request event: 40
- Fork event: 1
- Create event: 16
Last Year
- Issues event: 25
- Delete event: 16
- Issue comment event: 14
- Push event: 29
- Pull request review event: 7
- Pull request review comment event: 3
- Pull request event: 40
- Fork event: 1
- Create event: 16
Issues and Pull Requests
Last synced: 6 months ago
All Time
- Total issues: 10
- Total pull requests: 18
- Average time to close issues: 1 day
- Average time to close pull requests: about 19 hours
- Total issue authors: 1
- Total pull request authors: 2
- Average comments per issue: 0.0
- Average comments per pull request: 0.78
- Merged pull requests: 14
- Bot issues: 0
- Bot pull requests: 0
Past Year
- Issues: 10
- Pull requests: 18
- Average time to close issues: 1 day
- Average time to close pull requests: about 19 hours
- Issue authors: 1
- Pull request authors: 2
- Average comments per issue: 0.0
- Average comments per pull request: 0.78
- Merged pull requests: 14
- Bot issues: 0
- Bot pull requests: 0
Top Authors
Issue Authors
- maxkratz (29)
Pull Request Authors
- maxkratz (36)
- j-mastr (5)
- marcovolle (1)