This repository provides an interactive tool for the computing and visualization of routes in graphs based on edge-disjoint arborescences. It is available on arborescencebasedrouting.streamlit.app.
- The tool consists of a program which receives a graph, representing a topology, and two vertices which represent the origin and the destination of a packet.
- Given the edge-connectivity
$\lambda$ of the graph, the program decomposes the topology into$\lambda$ arborescences rooted in the destination vertex. - The arborescences are used to compute
$\lambda$ independent routes between the origin and the destination. - Finally, the tool displays the routes on top of the topology on the main panel.
The tool has two main components:
- Arborescence generator (
arborescence_generator/): It contains the logic which receives annx.Graphand computes the arborescences rooted in the destination vertex. - Graphical User Interface (
main.py): It manages the input file and the visualization of the results using thePyvisandStreamlitpackages.
The tool requires Python 3.10+. To configure the environment, follow the steps to install the dependencies:
# Clone the repository
$ git clone https://github.com/leonokida/arborescence_based_routing.git
$ cd arborescence_based_routing
# Install the dependencies
$ pip install -r requirements.txtThe main dependencies are the networkx, streamlit and pyvis packages.
The tool is available on Streamlit Share.
Alternatively, to execute the tool locally, install it and execute the following command:
$ streamlit run main.pyThe tool will be available on http://localhost:8501/.
- On the side tab, upload the file containing the topology of the network in the edge list format.
- Select the origin and the destination.
- Click on "Compute Routes".
- The tool will display the computed routes and display them graphically on top of the topology.
The file must be a simple text file in the edge list format, where each line represents an edge of the topology:
s a
s f
f g
a b
a c
a e
c d
b t
e t
d t
g t