.. ProgReSS documentation master file, created by
sphinx-quickstart on Mon Apr 3 12:40:04 2023.
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
ProgReSS
====================================
Welcome to the documentation of **P**\rogrammable quantum **R**\epeaters **S**\oftware **S**\imulator (**ProgReSS**),
a Python package for the simulation of programmable quantum networks, built on top of
`NetSquid `_.
You can download and install the ProgReSS package `here `_.
The package is organized as follows:
.. image:: assets/progress_structure.png
:align: center
:width: 650px
where
- The Quantum Internet Protocol Stack in the picture is the one proposed by
`Dahlberg et al. `_.
- The **hardware** package contains the classes that model the quantum hardware of the devices
(e.g. quantum processors, optical fibers, QNICs etc.) and the Link Layer Protocols (LLPs).
For this reason, it is linked to the **Physical** and **Link** layers of the reference stack.
- The **abstraction** package contains the Quantum Hardware Abstraction Layer (QHAL) class.
Its role is to provide a unified interface to the **Network** layer for what concerns quantum
resources and quantum hardware operations. As such, it can be seen as an adaptation layer
placed between the **Link** and **Network** layers of the reference stack.
- The **pqnet** package (**P**\rogrammable **Q**\uantum **NET**\work) is the core of ProgReSS
It is our implementation of the **Network** layer,
and it contains a framework to realize a completely programmable quantum network.
- The **device** module is built on top of the underlying packages and it contains the QNetworkDevice
class, which models a configurable, programmable quantum network device ready to be installed in
the user's custom topology.
- The **examples** package contains some examples of how to use the ProgReSS package to simulate
and test programmable quantum network topologies.
- Some utility modules (**logging**, **sockets**) are used across the whole package.
Since ProgReSS simulates a programmable quantum network, we propose a network architectural model
where the data plane of the Network layer (i.e. the operations carried out by quantum repeaters
at this level) is programmed by a centralized **Quantum Network Controller (QNC)**.
In the picture below, we show our model:
.. image:: assets/prog_net.png
:align: center
:width: 450px
From top to bottom: Applications (APP) are provided with end-to-end
entanglement without any knowledge about the
underlying infrastructure. This service is obtained
thanks to a set of Virtual Quantum Network Functions (VQNFs),
that are requested to the centralized network controller through the northbound
interface. The controller exploits the southbound
interface to program all the infrastructure devices
at the Network (NET) level to realize the specified
VQNFs.
.. toctree::
:maxdepth: 2
:caption: Contents:
progress/abstraction/abstraction
progress/device
progress/hardware/hardware
progress/logging
progress/messaging/messaging
progress/pqnet/pqnet
progress/sockets
Indices and tables
==================
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`