NetworkCalculus.org DNC

Deterministic Network Calculus is a methodology for worst-case modeling and analysis of communication networks. It enables to derive deterministic bounds on a server’s backlog as well as a flow’s end-to-end delay. Given a directed graph of servers (server graph) and the flows crossing these servers, the Deterministic Network Calculator (DNC) automates the derivation of bounds.

Academic Attribution

The NetworkCalculus.org DNC was derived from the the Disco Deterministic Network Calculator (DiscoDNC). If you use it for research, please include the following reference in any resulting publication:

@inproceedings{DiscoDNCv2,
  author    = {Steffen Bondorf and Jens B. Schmitt},
  title     = {The {DiscoDNC} v2 -- A Comprehensive Tool for Deterministic Network Calculus},
  booktitle = {Proc. of the International Conference on Performance Evaluation Methodologies and Tools},
  series    = {ValueTools '14},
  pages     = {44--49},
  month     = {December},
  year      = 2014,
  url       = {https://dl.acm.org/citation.cfm?id=2747659}
}

Submodule Structure

The DNC consists of 4 parts, that are located in 4 different repositories:

In order to get all submodules, use the command git submodule update --init --recursive.

Development with Eclipse

This small guide assumes you have installed Eclipse 2020-03 (4.15.0), a Java 13 JDK (preferably OpenJDK) and a git command line client.

Setting up the Project in Eclipse

Add and Use Profiles

Get the rtc.jar to run the MPA RTC Curve Backend and the Tests

First, make sure you are connected to the Internet and that you have a lib folder in your DNC project. You can then get the dependency in different ways:

Maven Lifecycle Mapping Error caused by pom.xml

In your DNC project, dougle-click on pom.xml. This opens the pom editor view. Select its Overview tab. In the title, you will get (an abbreviation of) this error:

Plugin execution not covered by lifecycle configuration: com.googlecode.maven-download-plugin:download-maven-plugin:1.4.1:wget (execution: get-mpa-rtc, phase: validate)

As we just used the wget plugin in the validate phase to get the rtc.jar dependency, it is safe to ignore. Clicking on it, there are two alternatives to ignore the error:

Choose the second one (globally ignore error cause) to prevent changes to the pom.xml file.

Functional Tests

You can run the functional tests to check if you installation succeeded. We use the Eclipse Maven plugin to run the JUnit tests.

Right-click on the project DNC and select Run As > Maven test. The Eclipse console will show outputs like this:

[INFO] Running org.networkcalculus.dnc.func_tests.S_1SC_2F_2AC_Test
[INFO] Tests run: 6272, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 4.498 s - in org.networkcalculus.dnc.func_tests.S_1SC_2F_2AC_Test

Compile jars with Maven

Use the following maven profiles for compiling jars the different parts of the DNC: