This project focuses on developing an application that visualizes the topology of local computer networks. The application is designed to help network administrators better understand and manage their networks by displaying the connections between devices within the network. Utilizing various libraries and technologies, the application collects information about network devices and their connections, and then graphically presents this data.
- Device Information Collection: The application uses the SSH protocol to connect to network devices and gather data.
- Network Topology Discovery: Utilizes Cisco Discovery Protocol (CDP) to identify neighboring devices.
- Network Visualization: Displays the network topology using graphical libraries such as NetworkX and Matplotlib.
- Python: The primary programming language used for developing the application.
- Paramiko: A library for implementing the SSH protocol.
- Netmiko: A library for automating network devices.
- NetworkX: A library for analyzing and manipulating graphs and networks.
- Matplotlib: A library for data visualization.
-
Clone the repository:
bashCopy code git clone https://github.com/vukasin500/network-topology-visualization.git
-
Navigate to the project directory:
bashCopy code cd network-topology-visualization
-
Install the required libraries:
bashCopy code pip install -r requirements.txt
-
Run the application:
bashCopy code python main.py
-
Enter the username, password, and privileged mode password.
-
The application will automatically identify the gateway device and start scanning the network.
-
After the scan is complete, the application will display a graphical representation of the network topology.
main.py
: Main script to run the application.network_scanner.py
: Contains functions for network scanning and collecting device information.visualization.py
: Contains functions for visualizing the network topology.requirements.txt
: List of required libraries.
plaintextCopy code
Device: R1
Neighbor: SW1, Interface: Gig0/1
Neighbor: SW2, Interface: Gig0/2
Device: SW1
Neighbor: R1, Interface: Gig0/1
Neighbor: PC1, Interface: Gig0/3
...
The application has been tested on network devices in the Cisco lab at the Faculty of Electronic Engineering, University of Niš.
The author thanks Prof. Dr. Vladimir Ćirić and Prof. Dr. Emilija Živanović for their mentorship and support, and the Cisco Academy for providing access to the laboratory.