Simulation of the protocol Measurement-Device-Independent Quantum Key Distribution using NetSquid
Alert: ATM the updates are not finished and results could be wrong
Completed the first working simulation network, two nodes (alice and bob) and a central mdi node. It could be better but it is kinda usable
Next steps:
Change the Client-Mdi connection from Quantum to Combined channel- Improve and tune delay and loss models
Modify the protocols in order to be more flexible and more general purpouseSimulation network with more than two client
Snapshot of the first working simulation network as pre-release v0.0.1 to save it for the future
Added switch component to change the network topology among all clients nodes from fully connected network to a star topology with the switch as a center node. The network is yet work in progress and many fixes are needed
Quite big update. Modified the mdi and clients protocols in order to be able to perform the simulation
- with more than two nodes i.e. simulation network can be built with any number of nodes
- with more than one qkd run for node i.e. each node can perform an arbitrary number of run with other nodes, simply putting the queue in the
other_nodes
list - with more than one initializer i.e. multiple nodes can start the mdiqkd protocol if
init
is setTrue
(This could be done also before but only twice between Alice and Bob)
Next steps:
- Refactor
- Improve and tune delay and loss models
Create a generate network and simulate file instead of currentsim_run.py
- Add parameter to post analyze the simulation for time and performance (for personal purposes)
The simulation should work quite fine but it is not obvious that everything works perfectly. There may be some bullshits emm, flaws and bugs in the design. Hope to fix them soon. So, once again, be careful with this code
The current network consists of four client nodes: Alice, Bob, Charlie and Dave. It is described in the json file client_nodes_db.json
You can work with the json file, where you can modify the network, and the sim_run.py
file, where you can modify some parameter if desired. You can run it simply with
python sim_run.py
[!] Attention: Netsquid library required and tested only with Python 3.9