Deterministic Network Calculus (DNC) can derive upper bounds on message transfer delay as well as the buffer size requirements of servers – two key metrics of safety-critical real-time systems that cannot tolerate violation of predefined deadlines or data being dropped due to buffer overflows.

This project's goal is to improve DNC, in particular its end-to-end analysis capabilities delivering accurate results, and to focus on applicability enhancements for a wide range of systems. Among these are systems with multicast flows, wireless sensor networks, systems best modeled with complex resource descriptions, or the combination thereof. Key aspects are system modeling and understanding the inherent interdependencies between modeling accuracy, analysis complexity, as well as accuracy of performance bounds obtained by DNC. To facilitate this research, we maintain tool support for DNC in the DiscoDNC project.

Related Projects

  • The DISCO Deterministic Network Calculator (DiscoDNC) [www] [GitHub]
  • Sensor Network Calculus (SeNeCa) [www]

Funding Information

This project is funded by the Carl Zeiss Foundation grant of Steffen Bondorf from September 2016 to September 2018 [www].

Members (present and past)

Dr. Steffen Bondorf (project lead)

Alexander Scheffler (undergraduate student; B.Sc. thesis; graduate student M.Sc. and Ph.D.)
Philipp Schon (graduate student (M.Sc.))

Bruno Oliveira Cattelan (undergraduate exchange student from UFRGS, Brasil; B.Sc. thesis)
Deepak Paramashivam (graduate student (M.Sc.))
Markus Fögen (graduate student (M.Sc.))

Malte Schütze (B.Sc. thesis)
Tobias Jeske (undergraduate student)
Anja Hamscher (B.Sc. thesis)


[15] DeepTMA: Predicting Effective Contention Models for Network Calculus using Graph Neural Networks (Fabien Geyer and Steffen Bondorf), In Proceedings of the 38th IEEE International Conference on Computer Communications (INFOCOM 2019), 2019. [bibtex] [pdf]
[14] Deterministic Network Calculus Analysis of Multicast Flows (Steffen Bondorf and Fabien Geyer), In Antonio Puliafito and Kishor S. Trivedi (Eds.), Systems Modeling: Methodologies and Tools, EAI/Springer Innovations in Communication and Computing. Springer International Publishing, 2019. [bibtex] [pdf]
[13] The Deterministic Network Calculus Analysis: Reliability Insights and Performance Improvements (Alexander Scheffler, Markus Fögen and Steffen Bondorf), to appear in the 22nd IEEE International Workshop on Computer Aided Modeling and Design of Communication Links and Networks (CAMAD 2018), 2018. [bibtex] [pdf]
[12] Demo Abstract: Worst-Case Performance Analysis with the Disco Deterministic Network Calculator (Alexander Scheffler, Steffen Bondorf and Jens B. Schmitt), to appear in the 22nd IEEE International Workshop on Computer Aided Modeling and Design of Communication Links and Networks (CAMAD 2018), 2018. [bibtex] [pdf]
[11] Cross-Sender Bit-Mixing Coding (Steffen Bondorf, Binbin Chen, Jonathan Scarlett, Haifeng Yu and Yuda Zhao), In CoRR, volume abs/1807.04449, 2018. [bibtex] [pdf]
[10] Catching Corner Cases in Network Calculus – Flow Segregation Can Improve Accuracy (Steffen Bondorf, Paul Nikolaus and Jens B. Schmitt), In Proceedings of the 19th International GI/ITG Conference on Measurement, Modelling and Evaluation of Computing Systems (MMB 2018), 2018. [bibtex] [pdf]
[9] Verification of the FAIR Control System using Deterministic Network Calculus (Malte Schütze, Steffen Bondorf and Mathias Kreider), In Proceedings of the 16th International Conference on Accelerator and Large Experimental Physics Control Systems (ICALEPCS 2017), 2017. [bibtex] [pdf]
[8] Iterative Design Space Exploration for Networks Requiring Performance Guarantees (Bruno Cattelan and Steffen Bondorf), In Proceedings of the IEEE/AIAA 36th Digital Avionics Systems Conference (DASC 2017), 2017. [bibtex] [pdf]
[7] The Sensor Network Calculus as Key to the Design of Wireless Sensor Networks with Predictable Performance (Jens Schmitt, Steffen Bondorf, Wint Yi Poe), In Journal of Sensor and Actuator Networks, volume 6, 2017. [bibtex] [pdf] [doi]
[6] Towards Unified Tool Support for Real-time Calculus & Deterministic Network Calculus (Philipp Schon and Steffen Bondorf), In Proceedings of the 29th Euromicro Conference on Real-Time Systems (ECRTS 2017), Work-in-Progress Session, 2017. [bibtex] [pdf]
[5] Quality and Cost of Deterministic Network Calculus – Design and Evaluation of an Accurate and Fast Analysis (Steffen Bondorf, Paul Nikolaus and Jens B. Schmitt), In Proceedings of the ACM on Measurement and Analysis of Computing Systems (POMACS), ACM, volume 1, 2017. [bibtex] [pdf]
[4] Quality and Cost of Deterministic Network Calculus – Design and Evaluation of an Accurate and Fast Analysis (Steffen Bondorf, Paul Nikolaus and Jens B. Schmitt), In Proceedings of the ACM SIGMETRICS International Conference on Measurement and Modeling of Computer Systems (SIGMETRICS 2017), 2017. [bibtex] [pdf]
[3] Better Bounds by Worse Assumptions – Improving Network Calculus Accuracy by Adding Pessimism to the Network Model (Steffen Bondorf), In Proceedings of the IEEE International Conference on Communications (ICC 2017), 2017. [bibtex] [pdf]
[2] Generalized Finitary Real-Time Calculus (Kai Lampka, Steffen Bondorf, Jens B. Schmitt, Nan Guan and Wang Yi), In Proceedings of the 36th IEEE International Conference on Computer Communications (INFOCOM 2017), 2017. [bibtex] [pdf]
[1] Generalizing Network Calculus Analysis to Derive Performance Guarantees for Multicast Flows (Steffen Bondorf and Fabien Geyer), In Proceedings of the 10th International Conference on Performance Evaluation Methodologies and Tools (VALUETOOLS 2016), 2016. [bibtex] [pdf]

Completed Theses

[4] Deterministic Network Calculus for Multicasting: A Numerical Comparison Between Explicit Intermediate Bounds and Multicast Feed-Forward Analysis (Bruno Oliveira Cattelan), B.Sc. thesis, Universidade Federal do Rio Grande do Sul, Porto Alegre, Brazil, 2018.
[3] Large-Scale Numerical Evaluation of Network Calculus Analyses (Anja Hamscher), B.Sc thesis, TU Kaiserslautern, 2018.
[2] Deterministic Performance Analysis of FIFO-multiplexing Feed-forward Networks (Alexander Scheffler), B.Sc. thesis, TU Kaiserslautern, 2017.
[1] Modelling and Analysis of Timing Constraints of an Industrial Control System (Malte Schütze), B.Sc. thesis, TU Kaiserslautern, 2017. 


Worst-Case Analysis of Distributed Systems lecture (WoCADS, 4 ECTS): winter term 2016/17.

In winter term 2017/18, the lecture was given by Dr.-Ing. Kai Lampka (see also publication [2]).

Related Events

WoNeCa-4 - the 4th Workshop on Network Calculus, 28 February 2018 (collocated with GI/ITG MMB 2018).

NetCal 2018 - the 2018 International Workshop on Network Calculus and Applications, 7 September 2018 (collocated with ITC 30).

v2.0.0 Development

DISCO Lab is proud to present the DISCO Deterministic Network Calculator, a network calculus library. This library contains a number of classes written in Java(tm) which may be useful for analyzing communication networks using the Network Calculus. This calculus allows to determine such characteristics of data flows as the maximum latency or the minimum bandwidth, as long as bounds can be specified for these flows in the form of so-called arrival curves.

For feedback, questions, etc., please contact Steffen Bondorf.

If you use the Disco Deterministic Network Calculator for research, please include one of the following entries in any resulting publication. 

System Requirements

Known Issues

  • none

Known Limitations

  • The double based number representation will round (intermediate) results. No mechanism to ensure rounding into the right direction is implemented. Thus it is not guaranteed that the resulting bounds are valid.
  • Using the rational number representation, analyses may fail due to integer overflows.
  • There is no PMOO analysis for FIFO multiplexing nodes.


We offer an archive with the complete source code. For development, you need to get the dependencies listed in the System Requirements section, and set up your environment so that all external libraries are in the classpath.

Although this is a release candidate, unknown issues might occur.

DISCO Deterministic Network Calculator 2.0rc9 (source)


Previous Versions

  • Version 1.1, the previous major release, can still be found here. An archive containing some of the functional tests of version 2.0rc9 backported to v1.1 can now also be found there.
  • Version 1.0.1 is also available as all in one and plain version.
  • The code of the original version 1.0 developed by Frank Zdarsky is available as an all in one archive including all libraries necessary to run the calculator (download) or a plain version without the dependencies (download).


Development towards version 2.0 focusses on eliminating external dependencies, improving precision by using rational numbers, reducing structural complexity by modularization and simplifying the usage of the Network Calculator.

RC 9

Besides the usual code, performance and stability improvements, this release candidate has the following noteworthy changes to offer:

  • Critical bug fixes in Calling getPrecedingServer( Server s ) or getSucceedingServer( Server s ) won't crash the calculator anymore.
  • New feature: Arrival Bound Caching. The calculator can now optionally cache arrival bounds for later reuse. The recursive per-hop arrival bound calculation can cache all intermediate results whereas the other bounding methods only store the final one. Caching can be enabled by setting the use_cache configuration option to true. The included functional tests pass.

RC 8

  • ServiceCurve: Rate latency components for the zero delay burst curve were added.
  • Deconvolution: Improved handling of zero delay burst and null service curves.
  • PmooAnalysis: Added recognition of resulting delay burst and null service curves.
  • Num (double based): Improved +/- infinity representation.
  • Path: Added methods for getting the length in either servers or links.

RC 7

  • The Rational class was renamed to Num.
  • A new Num class wrapping doubles was implemented. It yields faster runtimes by sacrificing the precision of the fraction based one. Thus the tests fail when using it. External libraries are not necessary with this number representation. The BigFraction based wrapper is still around but can be considered obsolete from now on.
  • The bounding methods were moved into separate classes and fixed in order to properly work with zero delay burst service curves.
  • Convolution and deconvolution were split into two separate classes and moved into the new package unikl.disco.minplus.
  • Performance improvements by reducing the amount of created Num instances of common values like zero, NaN, and positive/negative Infinity.
  • JavaDoc improvements.

RC 6

  • Fixed the copying of arrival and service curves.
  • Performance improvement in the network class.

RC 5

  • Performance improvement in the Rational classes.
  • JavaDoc cleanups and some additions.
  • SFA and PMOO: getEnd2EndServiceCurve() was renamed to getLeftOverServiceCurve().
  • A new class called Path was created in order to allow storing servers as well as links of a flow’s path.
  • More modularization:
    • The calculation of cross-traffic arrivals bounding was separated from the analysis classes and moved into according {PerHop,Pmoo}ArrivalBound classes. They can now be used independent of the analysis on the flow of interest’s path. Tests are displaying the results using PerHopArrivalBound as it was the default case for non-PMOO analyses before. Test documentation was updated accordingly.
    • Service and arrival curve classes were split out of the generic curve class.
    • The left over service curve calculation was moved in an own class, too.

RC 4

  • The explicit sink should not be visible to the user anymore.
  • PMOO's recursive output bound calculation now posesses the same improvement as SFA's gained in RC3, i.e., the flow of interest is assigned the lowest priority throughout the whole analysis.

up to RC 3

  • Output bound calculations during an SFA consider the given flow of interest having the lowest priority during analysis, i.e., the flow of interest will not interfere with any other flow and thus not be considered during the calculation of left-over service curves. (according previous know limitation was: "SFA is only aware of the flow of interest on its path, i.e., when calculating the arrival curve of a rejoining cross flow, the flow of interest will be considered cross-traffic to it at the previous server/s these two flows met. See FeedForward_1SC_2Flows_1AC_2Paths in src/unikl/disco/tests/FeedForward.pdf for an example.").
  •'s API was extended to cover parameters of server, link and flow during their creation. Therefore the amount of constructors of the network elements were reduced to the one demanding to set all parameters.
  • It was ensured that getSink() will not return the explicit sink needed for internal calculations.
  • The method setPath( List<Link> path ) was added.
  • makeArrivalCurve( Curve curve ) now modifies the given Curve instead of creating a new one. The old behavior was moved to getAsArrivalCurve( Curve curve ).
  • getExplicitSink() was added.

Beta 4

Beta 4 breaks compatibility with previous beta versions due to the following changes:

  • createRateLatency( latency, rate ) -> createRateLatency( rate, latency )
  • createTokenBucket( burstiness, rate ) -> createTokenBucket( rate, burstiness )
  • Name change: Edge -> Link
  • Name change: Vertex -> Server
  • Name change in analyses: performAnalysis( flow_of_interest ) -> performEnd2EndAnalysis( flow_of_interest )
  • Name change in analyses: getEndToEndServiceCurve -> getEnd2EndServiceCurve
  • Exception handling: performEnd2EndAnalysis( flow_of_interest ) throws exceptions that need to be caught by the user (see

up to Beta 3

  • Major code modularization and cleanups were done in order to improve extensibility and ease maintenance.
  • Removal of analysis methods unrelated to network calculus (Charny bound, fair queueing).
  • The dependency on the deprecated JUNG 1.7.6 library was removed in favor of a minimalistic internal representation of the necessary network elements.
  • Explicit input and output nodes of flows were removed from the user facing interface. Whereas the former could be removed completely, the latter ones are handled internally by the new network class.
  • Removal of the distinction between network graph and server graph. The turn prohibition algorithm also vanished. From v2.0b1 on it is the users responsibility to prevent cyclic dependencies between flows.
  • To prevent rounding errors, the Network Calculator now uses a rational class derived from Apache Commons Math3's Fraction class instead doubles. In case Integer Overflows occur, there is an alternative rational class implementation based on BigFraction, however, tests will fail due to rounding errors again.
  • Multiplexing behavior can now be set on a per node basis.
  • TFA provides both FIFO and arbitrary multiplexing.
  • TFA per node delay and backlog bounds are stored and made accessible.
  • SFA bounds for arbitrary multiplexing nodes were improved.
  • SFA per node residual service curves are stored and made accessible.
  • Resolved long standing issue with vertical deviation between token bucket arrival curve and rate service curve leading to wrong backlog bounds of 0.
  • Functional tests were added (incl. pdf documents containing the according calculations).
  • There's a central configuration class containing all user modifiable flags.
  • Four simple demos are included.
  • Rudimentary visualization of results was removed.
  • Logger was removed.

DISCO Network Calculator v1.1


This version is no longer maintained or supported.
Please use The Disco Deterministic Network Calculator v2.


The core of this library is the class "Curve" which represents piecewise-linear curves and provides min-plus-algebraic operations on these. Based on these operations, the class "NetworkAnalyser" allows to determine bounds on output, delay, and backlog using various approaches (see also technical report):

  • Charny delay and backlog bounds
  • Total Flow Analysis (TFA)
  • Separated Flow Analysis (SFA)
  • Pay Multiplexing Only Once (PMOO) Analysis

For some of these approaches the library offers the choice between FIFO and blind multiplexing assumptions. Furthermore, it supports the use of maximum service curves.

Finally, the library contains some useful methods for converting network graphs to server model graphs, an implementation of the Turn Prohibition algorithm for creating feed-forward networks from general network topologies, and a simple class for graphically viewing piecewise-linear curves.

Important instruction for use

Flows exiting the actual network at the same server need to share a common explicit sink node. Otherwise the TFA triggers a residual service curve computation for the flow of interest at this last hop before the explicit sink, i.e., the flow of interest is separated from the all other flows (like in the SFA), instead of handling those flows in total (TFA’s actual aggregate handling of flows). This behavious not only differs from the TFA procedure, it can also lead to a loss of tightness.


  • Version 1.1 brings changes in the core calculation algorithms, which are now a bit more efficient and suited for bigger problem sizes.

System Requirements

To run and compile version 1.1, you need at least J2SE 1.5 ("Java 5"). To use the precompiled libraries, earlier versions of the JRE may be sufficient, but the source code uses features introduced with version 1.5.

The sources are given as a Netbeans 6 project.


We offer two packages. One is an archive including the compiled library and all dependencies, the other is an archive with the complete source code. For development, you need to get both packages, and set up your environment so that all external libraries are in the classpath.

GraphML Export Filter for BRITE

The DISCO Network Calculator's preferred file format for reading/storing network topologies is GraphML. One way to generate topologies in this format is to use the Boston University's Representative Internet Topology Generator (BRITE). BRITE can generate different types of flat and hierarchical network topologies and can also read topologies in a number of different file formats.

Below you can find a small patch for BRITE that allows to export graphs to the GraphML file format. If you do not have the "patch" program available, download the drop-in version, which contains the already patched files, and simply unpack it in BRITE's base directory.

  • BRITE2.1b GraphML Export Filter Patch patch.gz
  • BRITE2.1b GraphML Export Filter Drop-In Replacement tar.gz zip

Project Description

Recently, a number of experimental studies showed that concurrent transmissions can boost wireless network performance, despite collisions. While these practical works provide evidence that concurrent transmissions may be received reliably, the underlying mechanisms are not fully understood. This work studies packet collisions starting with their mathematical representations to analyze the effect of factors like power ratio, timing offset, and carrier phase offset. Our results show that the capture effect alone can result in poor reception performance. We extend our model to study the effect of direct sequence spread spectrum (DSSS) with IEEE 802.15.4 as an example. With DSSS, we observe a reception ratio of over 90% in the model, complying with existing studies. We further experimentally validate our model on two widely used receivers (CC2420, AT86RF230), observing a good fit between analysis and experiments. Our model provides insights that help to improve existing and future protocols exploiting concurrent transmissions.

Simulation Code Download

The code for simulations and some figures is available at GitHub:

Visualization Applet

Applet Link

DiscoSec is available with source from our download page.

DiscoSec is the first Open-Source WLAN driver that provides protection against the most common attacks on the IEEE 802.11 MAC layer. With an innovative design focusing on performance as well as an efficient implementation we were able to unite the seemingly contradictory goals performance and security. Our system offers reliable protection of wireless communication right from the beginning without sacrificing throughput.

More Information on DiscoSec is provided in the paper Design, Implementation, and Performance Analysis of DiscoSec – Service Pack for Securing WLANs PDF (and a german abstract PDF).

Updated Version available!

The new major version DiscoSec is now available for download. With a direct integration into the new generic IEEE 802.11 MAC layer mac80211 of the Linux kernel, DiscoSec is now independent from kernel versions and specific chipsets. It provides a hardware-independent protection to IEEE 802.11 networks against common Denial-of-Service attacks. The new version is published under the GPLv2.


  • Recent kernel version (>= 2.6.28) for mac80211 support, but backports should also work
  • OpenSSL >= 0.9.8, with enabled elliptic curve cryptography support (with development headers)
  • libnl >= 1.1


DiscoSec is now easily integrable to existing WLAN networks, as most of the devices supported by the Linux kernel are using mac80211. It can be added simply by patching the network source files in the kernel directory. Installation instructions can be found in the README file included in the download package.

A separate patchset for OpenWRT is included for easy use on access point hardware that offers Linux support.


DiscoSec can now be configured using the provided tool ds_config, which can be used to change all parameters that are offered directly from the user space. Instructions for the usage are located in the README file.

Future Work

A future goal is an adaptive access control mechanism that limits and controls the load of the Access Point, since new authentications can be a heavy burden on the AP if the authentication rate is not controlled.

Previous Versions

This section describes the legacy version of DiscoSec that was integrated into the MadWifi device driver.

DiscoSec components

  • CMAC module - frame authentication using AES-CMAC (DiscoSec implements RFC 4493),
  • DiscoSecDaemon - key exchange in user space based on Elliptic Curve Diffie-Hellman
  • Wireless device driver - implemented in the 802.11 network stack included in MadWifi.


  • Linux kernel version from 2.6.14 to 2.6.18
    • Netlink socket support in the kernel
    • AES, SHA-1 and SHA-256 support of the kernel Crypto API
  • OpenSSL 0.9.8d+ with development header files (for elliptic curve support)
  • Atheros-based chipset

Installation & Usage

  • Read README_DISCOSEC and INSTALL_DISCOSEC included in the sources for in-depth instructions.


Source Code: (updated 2009-10-20)

Old Version:


Go to top