[ summary | topologies | assignment | turn-in | grading | solution ]
Summary |
Congratulations on having worked through all of the details of getting mininet to work, figuring out a controller codebase and its API, and getting a taste of SDN networks! In this assignment, you will move beyond the basics to examine various algorithms that you can implement in this context. Specifically, you will build a load-balancing application inside an SDN controller.
Topologies |
You will need more than a single switch to test your application. Mininet provides two built-in topologies that you might be moderately useful for this purpose:
sudo mn --topo tree,3 --mac --arp --switch ovsk --controller remote
sudo mn --topo linear,4 --mac --arp --switch ovsk --controller remote
You can also create your own custom topologies in mininet. We have provided two custom topologies. You can install these topologies by running the following commands in your VM:
cd ~/mininet/custom/ wget http://courses.cs.washington.edu/courses/csep561/13au/projects/topos.tgz tar xzvf topos.tgz
sudo mn --custom ~/mininet/custom/fattree.py --topo fattree --mac --arp --switch ovsk --controller remoteEach switch has 4 ports by default. If you want to customize the port number, e.g. 2n ports, you can type the command:
sudo mn --custom ~/mininet/custom/fattree.py --topo fattree,n --mac --arp --switch ovsk --controller remote
sudo mn --custom ~/mininet/custom/mesh.py --topo mesh --mac --arp --switch ovsk --controller remote
Assignment |
Online services are often replicated on multiple servers for greater capacity and better reliability. Within a single data center or enterprise, a front-end load balancer typically directs each client request to a particular replica. A dedicated load balancer using consistent hashing is a popular solution today, but it suffers from being an expensive additional piece of hardware and has limited customizability. Your project is to develop a load-balancing solution that uses the OpenFlow API and an SDN controller to perform load balancing using generic OpenFlow enabled switches and thereby reduce costs.
You should view this as a design and implementation project. We suggest that you break it down into the following tasks:
Turn in instructions |
Please turn in a tarball or a zip file at https://catalyst.uw.edu/collectit/dropbox/summary/arvindk/29361.
The archive should have following files:
Grading |
We will be basing your grade on several elements:
Solution |
The solution works on a single-switch topology. It assumes the first two hosts are servers (h1, h2), and the other hosts are clients. The solution contains a round-robin load balancer and an ARP handler for ARP requests to ask the load balancer's Ethernet address. The IP and MAC address of load balancer are 10.0.0.254 and 00:00:00:00:00:FE.
To test the solution, start the mininet with command:
sudo mn --topo single,10 --mac --arp --switch ovsk --controller remote
Source code: FloodLight, Pox