OpenFlow 1.0 release notes

From OpenFlow Wiki

Jump to: navigation, search

Contents

Overview

This document contains the release notes for the 1.0 release of OpenFlow. The release includes updated versions of the OpenFlow Switch Specification, the Reference Implementation and related tools. A a more in-depth discussion of the changes in this release, please see the OpenFlow 1.0 wiki page.

Contributors to this release include (in alphabetical order) David Erickson, Glen Gibb, Brandon Heller, Mikio Hara, Bob Lantz, Justin Pettit, Ben Pfaff, Rob Sherwood, Dan Talayco, Tatsuya Yabe, Yiannis Yiakoumis as well as many other members of the OpenFlow community that provided valuable suggestions, feedback and testing.

Status

  • Current version: 1.0.0
  • Release date: 12/31/09

Known Issues

  • Slicing: Instances of poor isolation between queues have been observed when running on systems with low performance embedded CPUs (eg. 433 MHz AMD Geode). These problems have not been observed on higher-performance CPUs (eg. Intel Core 2, AMD Sempron)
  • This release has not yet been tested on Big Endian architectures. A patch providing better support for Big Endian architecture is expected in the near future.
  • This release has not yet been tested on architectures which do not allow unaligned memory access, such as MIPS and ARM.
  • The kernel module has been dropped from the reference implementation. A separate release of the kernel module is planned for 1H2010.
  • NetFPGA support is not included in the reference implementation. A separate release providing full NetFPGA support is planned for 1H2010.

Testing

The reference software was run in a production network for a period of approximately two weeks. The network was controlled by an OpenFlow 1.0-compatible version of NOX 0.6 running the standard routing module in conjunction with a number of testing modules to test the following features:

  • flow cookies -- each flow was installed with a uniquely generated cookie and that cookie was verified upon flow expiration
  • IP in ARP matching
  • matching on ToS/DSCP bits -- a host was only allowed to send data over the network if the ToS bits were non-zero
  • port stats -- port stats were requested for individual and all ports at periodic intervals
  • slicing -- an updated version of FlowVisor used slicing to provide isolation between two instances of NOX. Multiple instances of iperf associated with different controllers were used to verify correct operation.
  • flow duration resolution -- flow expiry/stats observed to return flows with precision better than one second
  • datapath description -- user-specifiable datapath description successfully returned to controller

The user-space implementation successfully passed the regression tests on the following Linux distributions:

  • Ubuntu 9.10 (32-bit and 64-bit)
  • Debian unstable (32-bit)
  • Fedora Core 12 (32-bit)
  • CentOS 5.4 (32-bit)

The regression tests broadly test the following features:

  • switch configuration
  • packet in/out
  • statistics
  • flow installation and deletion
  • flow expiry
  • flow cookies
  • packet forwarding
  • packet modification
  • ICMP packet processing
  • ARP packet processing
  • basic slicing
  • failover

New Features

Slicing

OpenFlow now supports multiple queues per output port. Queues support the ability to provide minimum bandwidth guarantees; the bandwidth allocated to each queue is configurable. The name slicing is derived from the ability to provide a slice of the available network bandwidth to each queue.

Flow cookies

Flows have been extended to include an opaque identifier, referred to as a cookie. The cookie is specified by the controller when the flow is installed; the cookie will be returned as part of each flow stats and flow expired message.

User-specifiable datapath description

The OFPST_DESC (switch description) reply now includes a datapath description field. This is a user-specifiable field that allows a switch to return a string specified by the switch owner to describe the switch.

Match on IP fields in ARP packets

The reference implementation can now match on IP fields inside ARP packets. The source and destination protocol address are mapped to the nw_src and nw_dst fields respecitively, and the opcode is mapped to the nw_proto field.

Match on IP ToS/DSCP bits

OpenFlow now supports matching on the IP ToS/DSCP bits.

Querying port stats for individual ports

Port stat request messages include a port_no field to allow stats for individual ports to be queried. Port stats for all ports can still be requested by specifying OFPP_NONE as the port number.

Improved flow duration resolution in stats/expiry messages

Flow durations in stats and expiry messages are now expressed with nanosecond resolution. Note that the accuracy of flow durations in the reference implementation is on the order of milliseconds. (The actual accuracy is in part dependent upon kernel parameters.)

Changes to the Specification

  • remove multi_phy_tx spec text and capability bit
  • clarify execution order of actions
  • replace SSL refs with TLS
  • resolve overlap ambiguity
  • clarify flow mod to non-existing port
  • clarify port definition
  • update packet flow diagram
  • update header parsing diagram for ICMP
  • fix English ambiguity for flow-removed messages
  • fix async message English ambiguity
  • note that multiple controller support is undefined
  • clarify that byte equals octet
  • note counter wrap-around
  • removed warning not to build a switch from this specification

OpenFlow 1.0 compatible controllers

A OpenFlow 1.0 compatible version of NOX is available for download at noxrepo.org. To download using git, execute

git clone git://noxrepo.org/nox
cd nox
git checkout -b <branch_name> origin/openflow-1.0

And compile by running

./boot.sh
./configure
make

This branch exposes all features in OpenFlow 1.0, excepting slicing and 64-bit datapath id.