DocumentsDownloadsWikiCommunityBlogAbout

Aggregation

From OpenFlow Wiki

Jump to: navigation, search

Page is still under construction

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.
Aggregation Terminology

Controller

The source code for the controller can be retrieved from the related git branch

git clone git://openflowswitch.org/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://openflowswitch.org/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

People

  1. Yiannis Yiakoumis
  2. Jad Naous
Copyright 2008 by the OpenFlow Consortium. All rights reserved. Powered by MediaWiki and WordPress.