Skip to content
Switch branches/tags

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time
  DNC (NCorg 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 DNC (NCorg 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:

  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       = {}

Submodule Structure

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

  • The core code in src/main is contained in this repository, the other parts ones can be included as git submodules.
  • The MPA RTC wrapper extension in src/mpa_ext is located in DNCext_MPARTC,
  • the test files in src/functional_tests are in DNC_func_tests and
  • the experiment in src/experiments are in DNC_experiments.

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 2021-03 (4.19.0), a Java 16 JDK (preferably OpenJDK) and a git command line client.

Setting up the Project in Eclipse

  • Navigate to you Eclipse workspace directory, clone the NCorg DNC repository to it and pull the submodules.

  • In Eclipse, navigate to File > New > Java Project, use the name DNC and click Finish (you do not need to create a module-info in the next dialog). This creates a DNC project in your workbench.

  • Right-click on DNC and select Configure > Convert to Maven Project. Your workspace will be rebuilt accordingly.

Add and Use Profiles

  • Right-click on the project DNCand select Properties. In the new window, navigate to Maven and add eclipse,tests,exp,mpa to your Active Maven Profiles (comma separated). Click Apply and Close and confirm that your DNC project will be updated.

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:

  • Using Maven (in gerneral): Run a build with goal 'validate'.

  • Using Eclipse's Maven integration:

    • Right-click on the project DNC and select Run As > Maven build.... In the new window, add validate to the (empty) Goals-field and then click Run.
    • Right-click on the project DNC and select Maven > Update Project.... In the new window, check that DNC is selected and click OK.
  • Manual install: Download the file from and unpack it in the DNC project's /lib folder.

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 NCorg DNC:

  • mvn package - builds the base code in src/main
  • mvn package -P mpa - builds the base code and the MPA RTC wrappers in src/mpa_ext
  • mvn package -P exp - builds the base code and the experiment classes in src/experiments
  • mvn package -P tests,mpa - builds an additional jar for the test classes, note that you also need the mpa profile, since the classes are needed for running the tests
  • The profiles can also be combined as needed


The Deterministic Network Calculator




No packages published