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.
The NetworkCalculus.org DNC (NCorg DNC) was derived from the the Disco Deterministic Network Calculator (DiscoDNC). If you use it for research, please include one of the following references in any resulting publication.
- Arbitrary multiplexing:
@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}
}
- FIFO multiplexing:
@inproceedings{LUDBFF,
author = {Alexander Scheffler and Steffen Bondorf},
title = {Network Calculus for Bounding Delays in Feedforward Networks of {FIFO} Queueing Systems},
booktitle = {Proc. of the 18th International Conference on Quantitative Evaluation of Systems},
series = {QEST '21},
pages = {149--167},
month = {August},
year = 2021,
url = {https://link.springer.com/chapter/10.1007/978-3-030-85172-9_8}
}
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
.
This guide assumes you have installed IntelliJ IDEA 2022.1.2
-
In IntelliJ, navigate to
File > New > Project from Version Control
or press theGet from VCS
button on the welcome screen. -
Clone the repository by using git
-
Using IntelliJ's Maven integration
-
Go to
View > Tool Windows > Maven
and mark all checkboxes underProfiles (eclipse, exp, model_converter, mpa, tests)
-
Open
DNC - The Deterministic Network Calculator > Lifecycle
and runvalidate
-
-
Manual install: Download the file from http://www.mpa.ethz.ch/downloads/RTCToolbox_bin.zip and unpack it in the
DNC
project's /lib folder.
You can run the functional tests to check if you installation succeeded. We use IntelliJ's Maven integration to run the JUnit tests.
- In Maven, run
DNC - The Deterministic Network Calculator > Lifecycle > test
The IntelliJ console will show outputs like this:
[INFO] Tests run: 2720, Failures: 0, Errors: 0, Skipped: 0
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.
-
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 nameDNC
and clickFinish
(you do not need to create a module-info in the next dialog). This creates aDNC
project in your workbench. -
Right-click on
DNC
and selectConfigure > Convert to Maven Project
. Your workspace will be rebuilt accordingly.
- Right-click on the project
DNC
and selectProperties
. In the new window, navigate toMaven
and addeclipse,tests,exp,mpa
to your Active Maven Profiles (comma separated). ClickApply and Close
and confirm that yourDNC
project will be updated.
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 selectRun As > Maven build...
. In the new window, addvalidate
to the (empty) Goals-field and then clickRun
. - Right-click on the project
DNC
and selectMaven > Update Project...
. In the new window, check thatDNC
is selected and clickOK
.
- Right-click on the project
-
Manual install: Download the file from http://www.mpa.ethz.ch/downloads/RTCToolbox_bin.zip and unpack it in the
DNC
project's /lib folder.
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
Use the following maven profiles for compiling jars the different parts of the NCorg DNC:
mvn package
- builds the base code insrc/main
mvn package -P mpa
- builds the base code and the MPA RTC wrappers insrc/mpa_ext
mvn package -P exp
- builds the base code and the experiment classes insrc/experiments
mvn package -P tests,mpa
- builds an additional jar for the test classes, note that you also need thempa
profile, since the classes are needed for running the tests- The profiles can also be combined as needed