Views
Aggregation
From OpenFlow Wiki
Contents |
Overview
The Aggregation Demo highlights OpenFlow's flexibility for dynamic definition of flow granularity. Traffic can be aggregated based on any combination of 11 header fields from Layers 1,2,3 &4. We showcase a simple backbone network routing HTTP and VOIP traffic from multiple customers. Using a GUI the user (network operator) can dynamically define and re-route bundles.
You may have seen the Aggregation Demo in SIGComm 2009 best demonstration at the OpenFlow "Room" and/or during the OpenFlow workshop. If not, you can see the demonstration in video here.
(video coming soon...)
The related poster can be found here.
This demo runs on top of the FlowVisor along with other individual experiments.
Recreating the Demo
Topology/Terminology
For this demo, we assume a backbone network. Customers connect to the core network through edge switches. Within the network, we need a redundant topology of core switches to showcase bundle re-routing.
A bundle is defined by the user and represents a set of flows with common characteristics. From a switch perspective, a bundle is a single flow (with wildcarded fields).
The bundle path is the path associated with a bundle. A flow that belongs to a bundle will be routed (based on shortest path) from source to the beginning of bundle path, and from the end of the bundle path to the final destination.
An edge flow is a flow that belongs to a bundle, but is not bundled at the specific part of the network (i.e. going to/leaving the bundle path).
The picture below explains better these terms.Controller
The source code for the controller can be retrieved from the related git branch
git clone git://gitosis.stanford.edu/nox-aggregation.git
To run the controller :
./nox_core --verbose="nox.coreapps.aggregation.pyaggregation:ANY:DBG" -i ptcp:6633 pyaggregationdb
Traffic Generator
To create a meaningful aggregation scenario we need multiple traffic sources. Each customer is represented by a traffic generator, tuned to send traffic from/to specified IP ranges and TCP ports.
The traffic generator is implemented in python and resides within the aggregation nox code (under packetgen). For help using the packet generator type
cd packetgen-directory python packetgen.py
GUI
The graphical visualization is created by extending ENVI. It can be retrieved from the following git repository :
git clone git://gitosis.stanford.edu/envi-aggregation.git
After making sure you have Java 1.6, it can be compiled using
cd envi-aggregation/gui make
and run with
java -jar bin/openflow_gui.jar <fs> <config_file> <controller>
- option fs enable fullscreen (disabled by default)
- option <config_file> loads the defined file for GUI constants. Use it to adjust the GUI for a new screen resolution. config-1440x900 (mac book pro, default) and config-800x600 are currently provided with the code. It would be great if you can send back the configs for other resolutions you may use.
Here are a few shortcuts for the GUI :
| Shortcut | Effect |
| Ctrl-O | Open saved yaml layout |
| Ctrl-S | Save layout to yaml file |
| Ctrl-P | Enable Path Selection |
| Ctrl-D | Path Selection Done |
| Ctrl-R | Clear Path Selection |
| ESC | Quit GUI |

