Goal: Seting up RYU app which has the following features.
- Host Discovery (IP layer Discovery)
- The controller needs to know where are the host are connected
- Switch and Link Discovery (Layer 2 Discovery)
- The controller should know the physical links presented in the network
- Link Failure Detection
- In case of failure, need to know which link failed.
- Shortest Path Calculation / Link Protection
- Should calculate the path between two hosts
- ARP handling
- A small REST interface
Requirements: A basic knowlege of SDN, OpenFlow, ARP, REST api, and linux CLI is required.
Environment: I have used the VM from sdn hub, I recommond you do the same. Link for installation is provided below: http://sdnhub.org/tutorials/sdn-tutorial-vm/
Notations:
>
means the linuc command linemininet>
means the mininet command line
Road Map: This document has two sections for setup:
- setting up the controller
- setting up the topo
Run the Ryu controller using the following command.
> sudo ryu-manager --observe-links ~/code/RyuApp/ControllerAdvanced-ARPandRest.py
You could either use the custom 3 switch topology or used the prefined topo created by mininet.
> sudo -E python Pkt_Topo_with_loop.py
> sudo mn --topo torus,3,3 --controller remote,ip=127.0.0.1
This is the topology created by this command:
Do a pingall on mininet console. You would see that most of the pings would fail.
When the pingall is done, try it again. Interestingly, all of them pass.
The first ping was used to learn topology pf the hosts and switches. Flows are installed into the switches after the first ping.