CSE561 Problem Set #2

out: Tuesday October 29th, 2013
due: Monday November 18th, 2013 by 5:00pm.

[ 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:

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
Feel free to build your own topologies using the template provided above

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:

Here are some specific issues that you might want to consider in designing your controller code:
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