https://github.com/akshayxml/sdn-based-load-balancing
This project is created using Ryu controller which performs DIJKSTRA algorithm to find best paths, based on traffic flowing through links.
https://github.com/akshayxml/sdn-based-load-balancing
dijkstra-algorithm dynamic-routing ryu-controller ryu-sdn-controller sdn-controller
Last synced: 11 months ago
JSON representation
This project is created using Ryu controller which performs DIJKSTRA algorithm to find best paths, based on traffic flowing through links.
- Host: GitHub
- URL: https://github.com/akshayxml/sdn-based-load-balancing
- Owner: akshayxml
- Created: 2021-11-02T04:52:32.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2021-11-06T05:41:39.000Z (over 4 years ago)
- Last Synced: 2025-03-25T14:12:30.188Z (12 months ago)
- Topics: dijkstra-algorithm, dynamic-routing, ryu-controller, ryu-sdn-controller, sdn-controller
- Language: Python
- Homepage:
- Size: 419 KB
- Stars: 14
- Watchers: 1
- Forks: 5
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# SDN Ryu-Controller -- Load-Balancing with Dynamic-Routing
## Project Details:
## OpenFlow version used:
OpenFlow 1.3
## Description:
This project is created using Ryu controller which performs DIJKSTRA algorithm to find best paths, based on traffic flowing through links. Optimal path is being choosen from possible paths. The costs are being calculated in the background (action performed by thread and the path cost is calculated via network bandwidth calculation.) and optimal path is being updated every second based on the gathered stats. Discover of topology is done automatically so we don't have to have specially prepared topology.
## DIJKSTRA ALOGRITHM USED:
We have used Dijkstra algorithm to find the shortest available path from H1 to H2. The algorithm uses min heap functionality to calculate the smallest path cost. Following is the screenshot of the code.

## TOPOLOGY USED:
We have created 2 controllers, one controller is for backup. We have created 9 switches for the connection part. All the links are connected as shown in the screenshot. There are 2 hosts in the network topology.

## Protocols Configured:
Our Code is configured to use 4 types of protocol. The type of protocol can be found using the header values. The protocols are ``TCP`` , ``UDP`` , ``ICMP`` , ``ARP``. Tcp is used for normal connection. UDP will be used for service packets for buffering. ICMP will be used when the link gets terminated to send a ping regarding link destruction. ARP is used when the host IP is known but MAC is not known.

## Screenshot of Running Code:
As you can see in the screenshot the possible paths are calculated and the path will minimum cost is the final cost of the packet transmission.


## Commands AND Requirements
- ryu-manager --observe-links multipath.py (for initializing the RYU controller)
- sudo mn -c
- sudo python topology.py (For initializing the topology of the network)
- Virtual Machine
- Mininet 2.3.0
- RYU controller