Skip to content

Repository files navigation

SDN key relay for QKDN simulation

GitHub release

1. Overview

This repository contains a small simulation tool for comparing different key relay path algorithms.

Example network

Out of the box the tool provides:

  • Random QKD Network generation, saving and loading of any size.
  • Relay path calculation between any source and destination node.
  • 3 different path calculation algorithms:
    • Dijkstra with a fractional weighting function
    • Dijkstra with a linear weighting function
    • Max/min (bottleneck) algorithm with a linear weighing function
  • Automatic consecutive execution simulating consecutive increased demand

2. Usage

2.1. Install

The tool is written in python. So:

Step 1: Install Python

In Ubuntu do:

sudo apt update
sudo apt install -y python3 python3-venv python3-pip

Step 2: Create virtual environment:

python3 -m venv .venv

Step 3 activate virtual environment (Linux):

source .venv/bin/activate

Step 4 install dependencies:

pip install --upgrade pip
pip install -r requirements.txt

2.2. Usage

Start the config tool with:

python3 main.py

The tool then guides you with commandline inputs through the simulation setup.

2.2.1. Recreating the example results from the paper

--- Graph Selection ---
1. Generate new random graph
2. Load a saved graph
3. Quit
Select an option: 2
--- Graph Selection ---
1. example_graph.graphml
Select graph to load: 1
Loaded graph: example_graph.graphml

--- Path Selection ---
1. Choose source and destination
2. Auto generate N
3. Save graph
4. Regenerate graph
5. Quit
Choose an option: 2
Source node (0–4): 0
Destination node (0–4): 4

--- Algorithm Selection ---
1. Dijkstra (Fractional)
2. Dijkstra (Linear)
3. Max–Min Algorithm
Select first algorithm (1–3): 2
Select second algorithm (1–3): 3
Selected algorithms: Dijkstra (Linear) (li), Max–Min Algorithm (mm)
How many repetitions (N): 10
Enter output directory where PNGs will be stored: ./tmp

2.2.2. Generating a new graph

If you want to generate a new graph from scratch, you can generate a random one.

--- Graph Selection ---
1. Generate new random graph
2. Load a saved graph
3. Quit
Select an option: 1 

Then enter the number of nodes the graph should have. It is a known issue that depending on the system parameter, too big graphs have trouble being displayed properly.

Enter number of nodes: 10

New graph generated successfully.

--- Path Selection ---
1. Choose source and destination
2. Auto generate N
3. Save graph
4. Regenerate graph
5. Quit
Choose an option: 

Thereafter, proceed with the path and algorithm selection as described in the previous example.

3. Related publications

This repository complements research presented in the following publications:

  • S. Laschet, G. Lendvay, T. Lorünser, P. James, L. Torresetti and A. Colombo, "Software Defined Networks Key Relay for Large-Scale Quantum Key Distribution Networks," 2026 International Conference on Quantum Communications, Networking, and Computing (QCNC), Kobe, Japan, 2026, pp. 715-719, doi: 10.1109/QCNC69040.2026.00115.

4. Acknowledgements

Different aspects of this work were enabled by Co-funding:

From the Österreichische Forschungsförderungsgesellschaft mbH (FFG) research program "Breitband Austria 2030: GigaApp 2. Ausschreibung" under Project Number: FO999917949 ("Q-Crit Austria"). From Digital Europe Program under project numbers 101091642 ("QCI-CAT"), 101091588 ("QUARTER"), and 101091564 ("eCausis"). From European Union’s Horizon Europe research and innovation program under Grant Agreement No. 101114043 ("QSNP").

About

SDN path finding simulation for QKDN

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages