Skip to content

CN-UPB/nfv-dsl-qpn

Repository files navigation

Domain Specific Language for specifying Queueing Petri Nets

Watch the video tutorial on YouTube:

Video Tutorial

Installation

To get eclipse running:

  1. Install eMoflon IBeX: https://github.com/eMoflon/emoflon-ibex-democles and everything you need for the third IBeX handbook (Xtext, Xtend, ...)
  2. Import this PSF file into your workspace: https://github.com/CN-UPB/nfv-dsl-qpn/blob/master/full.psf
  3. Alternatively, clone the repository and import the full.psf file into your workspace
  4. Go into Window -> Preferences -> Emfatic and activate "Automatically greate Ecore (*.ecore) file when saving emfatic (*.emf) file."
  5. Locate the VNF.emf file in the project VNF -> model -> VNF.emf make an arbitrary change like adding a whitespace and save the file.
  6. Locate the QPN.emf file in the project QPN -> model -> QPN.emf make an arbitrary change like adding a whitespace and save the file.
  7. Run GenerateVnf.mwe2 as an MWE workflow (see third handbook)
  8. Choose all projects and hit the black IBeX build hammer in the toolbar

To run the editor and create a petri net:

  1. Select the vnf_to_qpn_xtext project in the Package Explorer and choose "Run As: Eclipse Application"
  2. In the new Eclipse Instance, create a new general Project (File -> New -> Project -> General)
  3. Convert it to an Xtext project by rightclicking on the project -> Configure -> Convert To Xtext Project
  4. Create a new file with the file extension .vnf
  5. When saving the content of the document, the editor generates the XML file (and three .xmi files which can be ignored)

To view the petri net:

  1. Download and install the Petri Net modeling tool TimeNET
  2. Open the qpn.xml file from the runtime workspace the new eclipse instance created automatically (probably called "runtime-EclipseApplication" or something similar)

Troubleshooting

  • If an error occurrs in the vnf_to_qpn_xtext.ui.tests project while cleaning, building and generating the workflow, this can be ignored as the editor should not be affected.
  • If the MWE workflow can not be found as run configuration, it might help to reinstall the Xtext plugin or download the eclipse package linked in the first handbook again.

For developers

The project consists of three different parts:

  1. Xtext editor with the grammar and the corresponding metamodel
  2. VNF metamodel that specifies the main components of a Virtual Network Service
  3. a QPN metamodel inspired by the structure of the XML that is generated by TimeNET

We used Triple Graph Grammars to map between the three metamodels. This is done in the projects "Transform_Xtext_VNF" and "Transform_VNF_QPN". From the QPN metamodel, we used the Xtend template to generate the XML file in accordance the format required by TimeNET. The generator can be found in the VnfGenerator.xtend file. The metamodels for QPNs and VNFs can be found in the projects with the according names. The .ecore files are the models generated from the respective .emf files. In VNF_to_QPN_Rules we defined a few rules restricting what a user can do in a petri net.

About

A simple domain specific language for specifying NFV network services (and VNFs) and mapping them to queuing petri nets (QPNs)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published