Floodlight v1.0
Floodlight v1.0 Release Notes
Release Date: December 30, 2014
Overview
The 1.0 Floodlight release introduces both OpenFlow 1.0 and OpenFlow 1.3 support, along with experimental support for OpenFlow 1.1, 1.2, and 1.4. The OpenFlow library backing Floodlight has been replaced by OpenFlowJ-Loxigen (see http://github.com/floodlight/loxigen for more details). It also includes redesigned REST APIs, bug fixes, and improvements to applications. Comprehensive documentation is also included to demonstrate the use of the new OpenFlowJ-Loxigen library to do things like create OFFlowMods, handle OFPacketIns, and work with OpenFlow 1.3 features such as groups and meters.
Things Added
OpenFlowJ-Loxigen
- A generated OpenFlow library supporting OpenFlow versions 1.0 through 1.4. (OpenFlow 1.1, 1.2, and 1.4 are considered to have experimental support in Floodlight.)
- All OpenFlow protocols are exposed through a common API, which allows for a protocol-agnotic development approach for many if not all applications. Of course, developers still need to be conscious of the capabilities of each OpenFlow protocol version, and for example not try to add a group or meter to an OpenFlow 1.0 switch.
- All low-level types are defined by classes. These include, but are not limited to switch ports, datapath IDs, MAC addresses, and IP addresses. Furthermore, all types are immutable.
- OpenFlow protocol types and messages (e.g. packet-in, flow-mod) are immutable and are equipped with builders for ease of construction and replication.
- All lengths and wildcards are accounted for behind the scenes. No longer is there a need to set packet lengths or manually wildcard after matches have been specified.
- An overall much more pleasant and future-proof API.
Major Updates and Additions
- New to this version of Floodlight, the IFloodlightProviderService is no longer responsible for providing access to and managing switches. Instead, in a more modular approach, all modules requiring access to switch instances can now obtain a reference to the IOFSwitchService.
- A variety of updates and changes have been made to the controller's core.
- The DebugCounterService and DebugEventService have been updated to allow easier use and tracking of counters as well as logging of events.
- The DeviceManager has been updated, and some bugs have been fixed.
- The Firewall has received an overhaul, and has received numerous bug fixes.
- The Forwarding module has been updated to work with OpenFlowJ-Loxigen, and it is in the process of being converted to support variable matches.
- The Hub module has been extended to support either control-plane or data-plane modes through the use of packet-in and packet-outs or flow-mods, respectively.
- The LearningSwitch module has been updated.
- The LinkDiscoveryManager has been updates, and some bugs have been fixed.
- The LoadBalancer module has been improved with regard to how flow-mods are composed and pushed to the switches.
- The packet package has been updated to be compatible with the underlying OpenFlowJ-Loxigen library.
- The Routing module has been updated.
- The StaticFlowEntryPusher module has been overhauled with an updated structure, syntax, and support for OpenFlow 1.0 - 1.3. (IPv6 support is still in the works.)
- A TestModule has been added to demonstrate the use of some OpenFlowJ-Loxigen features.
- The Topology manager has been updated.
- The Web UI has been updated to support underlying updates.
- The util package has been updated and extended to provide utilities for enhanced use of OpenFlowJ-Loxigen actions, matches, instructions, and messages.
- The VirtualNetwork module has been updated.
- All unit tests have been updated.
Minor Package Updates
- flowcache
- jython
- notification
- packetstreamer
- perfmon
- servicechaining
- storage
- threadpool
- sync
Documentation
- REST API documentation
- How to use the OpenFlowJ-Loxigen library in Floodlight v1.0
- From the perspective of a module developer, the only changes to creating a module from v0.90 are how switches are accessed (now from the IOFSwitchService) and the use of objects instead of primitive types. Some porting of code is required; however, if there is enough demand, an "adaptation layer" of sorts can be written.
Distributions and Releases
- The openflow-1.3 branch has been replaced by the v1.0 branch of the main GitHub repository: http://github.com/floodlight/floodlight/tree/v1.0
- The master branch will contain any updates and patches leading up to the next minor/major release: http://github.com/floodlight/floodlight
- The "bleeding edge" branch is located in my fork's master branch: http://github.com/rizard/floodlight
- Ubuntu 12.10/14.10. Floodlight is now available in the Ubuntu repository and can be installed via: (We are working with Canonical now to have the package updated.)
apt-get install floodlight ### need to have the repository updated, unless it automatically points to the github repo
Things Removed
The FlowReconcileManager has been deprecated but is still included.
The old OpenFlowJ library has been removed and replaced by OpenFlowJ-Loxigen.
Bug Fixes
The release also includes bug fixes to Floodlight modules since the previous releases (v0.90 and v0.91) through December 30, 2014. Details of the fixes can be seen via 'git log --all'.
Known Issues
See the issue tracking system for current issues: