A highly Dynamic Framework for Real-Time Simulated 5G Evaluation

We kindly ask that should you mention DI5GUISE in your publication, or use our code, that you would reference the following paper:

J.J. Quinlan, K.K. Ramakrishnan and C.J. Sreenan, "DI5GUISE: A highly dynamic framework for real-time simulated 5G evaluation". In Proceedings of the 25th IEEE International Symposium on Local and Metropolitan Area Networks (LANMAN 2019), Paris, France. July 1-3, 2019.

DI5GUISE at its core is a fully modifiable and extendable NS-3 based tool which provides a real-time hybrid physical and simulated infrastructural framework to evaluate both high throughput applications and large scale low-rate devices in a 5G network. This is achieved by linking physical hardware (or virtualised hosts) at both the 5G client interface(s) and at the simulated 5G packet gateway (PG) of the evolved packet core(EPC).

DI5GUISE builds upon our previously released award-winning simulated LTE demonstration D-LiTE.  Lanman Demo 2016

The following outlines the steps required to install and use real-time streaming over LTE (4G) and MMWAVE (5G) in NS3 using our scripts.

  1. if you wish to use the current build of NS3 mmwave, then begin by downloading the NS3 mmwave code - make sure you download the "master" branch, available 'here'.
  2. Follow these 'getting started' instructions 'Getting Started'. It is advisable to spend some time understanding NS-3, as this will help understand our code and LTE/MMWAVE in general.
  3. Make sure to build NS3 with 'CXXFLAGS=”-Wall -O2” ./waf configure –d optimized --enable-sudo --enable-static', otherwise the mmwave module will be very very slow, and any warnings will cause the install to stop.
  4. We offer three versions of NS3-mmwave which you can download, which have the network build files and modified NS3 files already installed. These are ns3.26-mmwave-1.1', ns3.27-mmwave-1.2', and ns3.29-mmwave-2.0'. The NS-3.29 mmwave code tends to run a lot slower than the NS-3.26 code.
  5. If you want to add our code to a different version of NS-3, please download our NS3-mmwave modified files and scripts from 'here'.  Then follow the instructions in the "README" file and place the relavent files in the correct folder locaitons.
  6. Place 'bridge_network_build.sh' and 'bridge_network_teardown.sh' in a folder of your choice, these will be used to create the link from the real network interfaces to the nodes within NS3.
  7. All files are now in place.
  8. We also offer the fading traces, available 'here', should you require these.
  9. First clarification, we use an NS-3 machine with 3 Network cards. Our 2 clients have static IP addresses, in the range to Each client will have a different gateway node, so has a gateway of, and has a gateway of The gateway address of the clients are the UE nodes in the respective cellular network (both 4G and 5G). Our NAS is in the 11 subnet, with our master controller. The linkages and routing in the code is relatively clear for someone with network experience. Depending on your setup, you may need to change some of these values in our scripts.
    Finally, as the 11 subnet has no reference to the 18 subnet, we need to route all traffic for the 18 subnet through a specific node in the LTE network. This is accomplished by adding a static route in the "NAS/master controller". This is achieved with "route add -net netmask gw dev"
  10. Let us begin.
  11. Use 'bridge_network_build.sh' to build the links between the real interfaces and the LTE nodes. Run this every time you restart your machine. Note: the ethX interfaces will not be accessible after this script is run. Use 'bridge_network_teardown.sh' to remove the linkages and gain access to the ethX interfaces.
  12. Next to run LTE use: './waf --run "lena-simple-epc-tap-nas.cc"'. If you run the script as is it will use default values for the various metrics, i.e. fading model, distances between nodes, etc. You can always choose to pass in parameters using './waf --run "lena-simple-epc-tap-nas.cc --simTime=0.1 --distance=2000 --mobileFading=true"', whereby you set the simulation time to 100ms, the distance between each client to be 2000 and mandate that the mobile fading model be used.
  13. To run 5G use: './waf --run "mmwave-simple-epc-tap-nas- v2.2.2"'. Again, this will use default values for the various metrics.

Within the two NS3 scripts, we offer two options for streaming content over LTE and mmwave: internal TCP/UDP traffic from PGW to UE's and the option for your generated traffic from external hardware.

There are three parameters used for traffic generation:

"--pcapGenerate=false --tcp=true --trafficGeneration=true"


true or false to generate wireshark pcap files


true for tcp trafic and false for udp traffic


true will generate traffic based on the tcp parameter, false will enable the tap bridges and permit external traffic to access LTE/mmwave


If required, steps for installing the media player and Ubuntu on the Raspberry Pis is available on the D-LiTE webpage.

Our 4K Ultra-HD DASH video content is available at AVC and HEVC UHD 4K DASH Datasets, while our full HD DASH video content is available at iVID-Datasets for AVC (H.264) and HEVC (H.265).

A VirtualBox VM of Ubuntu 18.04, containing all the open-source programs needed to run DI5GUISE is available here.  Please start by reading the "README" file on the Desktop of the VM.

Enjoy, Jason (j.quinlan@cs.ucc.ie)

This work has emanated from research conducted with the financial support of Science Foundation Ireland (SFI) under Grant Number 13/IA/1892.


Mobile and Internet Systems Laboratory

Department of Computer Science, Western Gateway Building, University College Cork, Western Road, Cork, Ireland.