Code

We strive to produce code that can be reused by other researchers.

ns-3

  • Trace-based Propagation Loss Model: a ns-3 Propagation Loss Model that allows to reproduce the asymmetric link quality from past real Wi-Fi experiments in ns-3, using real traces of Signal-to-Noise Ratio.
    • Paper_1: H. Fontes, R. Campos, M. Ricardo, "A Trace-based ns-3 Simulation Approach for Perpetuating Real-World Experiments", Workshop on ns-3 2017, Porto, Portugal, June, 2017. (supporting point-to-point links)

    • Paper_2: H. Fontes, R. Campos, M. Ricardo, "Improving the ns-3 TraceBasedPropagationLossModel to Support Multiple Access Wireless Scenarios", Workshop on ns-3 2018, Surathkal, India, June, 2018. (supporting multiple-access links and higher resolution SNR sampling rate)

    • Source code (referenced in paper_1) (referenced in paper_2)

  • Real Routing: a ns-3 model to improve ns-3 emulation performance, moving data plane operations to outside of ns-3. Each ns-3 node is associated to a respective namespace in the Linux simulation host. The routing table is replicated from the ns-3 node to that real namespace, allowing for the traffic to be processed outside of ns-3 by the Linux kernel. In addition, using Linux Socket Filters in the Raw Socket, the data plane does not reach the ns-3.
    • Paper_1: H. Fontes, T. Cardoso, M. Ricardo, "Improving ns-3 Emulation Performance for Fast Prototyping of Network Protocols", Workshop on ns-3 2016, Seattle, WA, USA, June, 2016.

    • Paper_2: H. Fontes, T. Cardoso, R. Campos, M. Ricardo, "Improving ns-3 Emulation Performance for Fast Prototyping of Routing and SDN Protocols: Moving Data Plane Operations to Outside of ns-3", Simulation Modelling Practice and Theory (SIMPAT) journal, 2019.

    • Source code for Real Routing module and respective helpers (referenced in paper_1, for ns-3.21) (referenced in paper_2, ported to ns-3.29))

  • CIDRarchy: a CIDR-based ns-3 routing protocol for large-scale network simulation. CIDRarchy is designed for hierarchical network topologies so that routing table lookups can be performed in constant time no matter the number of nodes.

    • Paper: P. Moreira da Silva, J. Dias, M. Ricardo, "CIDRarchy: CIDR-based ns-3 routing protocol for large-scale network simulation", SIMUTools 2015, 8th EAI International Conference on Simulation Tools and Techniques, August, 2015.

  • Flow Monitor: a NS-3 module that allows one to automatically measure all flows that are simulated in NS-3. This code has already been merged into NS-3, starting with NS version 3.6.

    • Paper: G. Carneiro, P. Fortuna, M. Ricardo, "FlowMonitor -- a network monitoring framework for the Network Simulator 3 (NS-3)", International Workshop on Network Simulation Tools, 2009.

  • NS-3 PyViz is a live simulation visualizer, meaning that it uses no trace files. It can be most useful for debugging purposes, i.e. to figure out if mobility models are what you expect, where packets are being dropped, etc. This code has already been merged into NS-3, starting with NS version 3.10. Instructions for integrating and using NS-3 PyViz with older NS-3 versions can be found here;

  • We have ported to NS-3 the NS-2 OLSR code from Universidad de Murcia. This OLSR code was the first routing protocol to be included in NS-3;

  • We have developed an IEEE 802.1D Learning Bridge algorithm, included in NS-3 as a NetDevice (src/bridge);

  • We developed and maintain the current NS-3 Python bindings;
  • We developed and maintain the current (WAF based) NS-3 build system;

Other

  • PyBindGen is a Python module that can be used to generate Python Bindings for C++ APIs. It has been used as basis for the official NS-3 Python bindings, and is also a successful Open Source project on its own.

  • Spanning Trees Simulator (STS) is a command-line simulator written in C++ that allows the simulation of spanning tree algorithms.