This project implements a distributed RIP (Routing Information Protocol) routing architecture using Ryu SDN Controllers and Mininet for network simulation.
- Distributed Control Plane: 4 Ryu controllers communicating via REST APIs to exchange routing tables.
- Distance Vector Logic: Automatic RIP route advertisement every 5 seconds.
- QoS Implementation: DSCP tagging and proactive/reactive flow rules to manage traffic priority.
- Mininet Topology: 4 switches (OpenFlow 1.3), 4 routers, and 9 hosts.
updated_ryu_controller.py: The core logic for L2 switching, L3 routing, RIP table updates, and QoS flow installation.mininet_final.py: The Mininet network topology definition usingTCLinkfor link characteristics.run_all.sh: Automation script to start the 4 Ryu controllers with distinct environment variables and ports.running_commands_eng.pdf: Reference document containing operational steps.
In the first terminal, run the bash script that automatically brings up all 4 controllers in the background. They listen on ports 6653-6656.
# 1. Navigate to the project folder
cd /path/to/your/project/folder
# 2. Make the script executable (if not already)
chmod +x run_all.sh
# 3. Run the script for the controllers
./run_all.sh
Once the controllers are running successfully, open a second terminal to start the topology.
# 1. Navigate to the project folder
cd /path/to/your/project/folder
# 2. Run the mininet topology script
python mininet_final.py
Once the script finishes the setup and the mininet> prompt appears, you can perform the following tests to verify your implementation:
- Connectivity Test: Run the following command inside the Mininet CLI to ensure all nodes can communicate:
mininet> pingall
- RIP & QoS Verification: Test the RIP routing path and the specific QoS configuration for the VIP node 1.
- Flow Inspection: Check the priority VIP header on switch 2 using the following command:
sudo ovs-ofctl -O OpenFlow13 dump-flows r2
- Ryu Framework: Ensure Ryu is installed.
- Mininet: Installed for network emulation.
- Python 3: Required for script execution.