A Python-based interactive simulator for the Intermediate System to Intermediate System (IS-IS) routing protocol. This tool allows network engineers and students to understand and experiment with IS-IS routing concepts through a user-friendly interface.
The IS-IS Routing Protocol Simulator is an educational tool designed to demonstrate the fundamental concepts of IS-IS routing. It provides a simplified implementation of IS-IS routing mechanisms, allowing users to create network topologies, establish router relationships, and visualize routing decisions in real-time.
- 🌐 Interactive network topology creation
- 🔄 Support for Level 1 and Level 2 routers
- 📊 Dynamic routing table calculation using Dijkstra's algorithm
- 🔗 Custom link cost configuration
- 📈 Real-time network visualization
- 💻 User-friendly command-line interface
- 🗺️ Routing table display and management
- Python 3.x
- NetworkX (for graph operations and visualization)
- Matplotlib (for network topology visualization)
- Type hints (for better code documentation)
- Clone the repository.
- Create a virtual environment (optional but recommended).
- Install required dependencies, i.e matplotlib.
- Start the simulator.
- Use the interactive menu to:
- Add routers to the network
- Create links between routers
- Calculate routes
- View routing tables
- Visualize the network topology
- Add routers using option 1
- Create links between routers using option 2
- Calculate routes using option 3
- View the routing tables using option 4
- Visualize the network using option 5
network = ISISNetwork()
network.add_router("R1", level=2) network.add_router("R2", level=2) network.add_router("R3", level=2)
network.add_link("R1", "R2", cost=1) network.add_link("R2", "R3", cost=1)
network.calculate_shortest_paths()
network.visualize_network()
isis-routing-simulator/ ├── isis_simulator.py # Core simulator implementation ├── isis_simulator_cli.py # Command-line interface └── README.md # Project documentation
isis_simulator.py: Contains the core classes (ISISRouterandISISNetwork)isis_simulator_cli.py: Provides the interactive command-line interface
Contributions are welcome! Please follow these steps:
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
For major changes, please open an issue first to discuss what you would like to change.
- Area support and level-specific routing
- LSP generation and flooding
- Dynamic neighbor discovery
- Authentication mechanisms
- Multiple metrics support
- Route summarization
- GUI interface
This project is licensed under the MIT License - see the LICENSE file for details.
Mweetwa Nketani - @mnketani
Project Link: https://github.com/N3gus/IS_IS
⭐️ If you find this project useful, please consider giving it a star!