This repository contains the code and examples for the DigSiViz-Project, a Proof-of-Concept for visualizing Network Digital Twins (NDTs) in realtime by leveraging containerlab as network simulation layer and gNMI for realtime data retrieval.
In order to run the project, you need to have the following dependencies installed on your system:
- Docker
- Containerlab
- NodeJS
- Python v3.12.x
Refer to the documentation for the individual dependencies for installation or use your package manager.
Clone the repository to your local computer:
git clone https://github.com/netlab-hfd/digsivizYou need to install the dependencies of the frontend and backend individually.
Starting with the frontend, change into the
frontend folder and run npm:
cd frontend
npm installAfter that, the same must be done for the backend. Change into
the backend folder and use the provided requirements.txt file to
install all required packages. We recommend installing them into
a virtual environment to avoid cluttering your python system packages:
cd backend
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtFinally, you need to have a containerlab deployment
running for the application to work. In the backend folder
is a sample topology that can be deployed:
sudo clab deployThe application is now ready for use.
Follow the Getting Started guideline to achieve the running Containerlab topology and a ready-to-use application.
Start the backend by navigating to the backend folder and run:
python3 main.pyStart the frontend by navigating in to the frontend folder and run:
npm run devOpen the frontend application by clicking on the link deployed by the previous npm command.
DigSiViz will open in your browser.
By clicking on Topologyin the Navbar, you can open the topology visualization.
The frontend is now connected to the backend and displays the previously created containerlab topology.
You can now start inspecting the delivered data by clicking on a node or link. You are also able to filter data.
To monitor an iperf3 test, you have to run following commands:
clab inspect # (In backend folder where the clab.yml is located)This command will show the container names that were instantiated by Containerlab.
Continue choosing two hosts, e.g. clab-ma-fp-stumpf-h1 and clab-ma-fp-stumpf-h2.
Open a terminal and run:
docker exec -it clab-ma-fp-stumpf-h1 bashIn this window, you first retrieve the interface IP of the host using ip a command:
>ip a
[...]
1403: eth1@if1402: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether aa:c1:ab:51:0d:cf brd ff:ff:ff:ff:ff:ff link-netnsid 1
inet 10.0.1.101/24 scope global eth1
valid_lft forever preferred_lft forever
inet6 fe80::a8c1:abff:fe51:dcf/64 scope link
valid_lft forever preferred_lft forever
[...]Run the iperf3 server command on this host:
iperf3 -sOpen another terminal window and run
docker exec -it clab-ma-fp-stumpf-h2 bashStart the iperf3 client using
iperf3 -c 10.0.1.101 -t 60sThe iperf3test is now in progress and you can monitor it in DigSiViz:
You can also stop the live visualization and navigate through the saved timestamps using the Time Machine functionality:
This project was presented at the AnServApp Workshop at CNSM 2025:
Paper: “Using Network Digital Twin Visualization for Application Traffic Engineering”
Authors: Felix Stumpf, Leon-Niklas Lux, Sebastian Rieger
📄 Read the paper
🌐 Conference website



