This series completes the implementation of OpenFlow 1.4 bundles for
flow mods.  Port mods are not yet supported.

OpenFlow 1.4 specifies support for 'bundles' which allow arbitrary
collections of flow table modifications to be executed as a single
transaction.  Supporting this in OVS requres major refactoring of our
'ofproto' code implemenenting flow mods.

Patches 1-3 are minor fixes.

Patches 4-16 add the basic implementation of non-atomic bundles.  This
adds a behavioral change in the ofproto-provider interface, where
rule_insert() may be called for a rule that is a duplicate of a rule
that has already been inserted.  In this case the old rule will be
deleted shortly after the insertion.

Patches 17-19 add the implementation of the atomic bundles, and also
make ALL flow table modifications atomic to the threads performing
classifier lookups.  As different lookups threads may start executing
at different tables versions, we must (briefly) keep both old and new
versions of flow table rules visible (to different) lookup threads at
the same time.  This requires more substantial changes to the
ofproto-provider interface.  It is yet to be determined if we ned to
add some logic to handle cases where specific ofproto-provider
implementations (e.g., switching hardware) can not support atomic
transactions.

Jarno Rajahalme (19):
  ofproto: Eliminate use of unset error code.
  ofp-parse: Remove unused F_OUT_PORT field flag.
  ofp-util: Fix xid in ofputil_encode_bundle_add().
  classifier: Add support for invisible flows.
  classifier: Support duplicate rules.
  bundles: Validate bundled messages.
  bundles: Manage bundles in connmgr.
  ofproto: Factor out ofproto_rule_insert__().
  ofproto: Factor out ofproto_rule_create().
  ofproto: Use enum ofperr for 'error'.
  ofproto: Refactor modify_flows__().
  ofproto: Split add_flow().
  ofproto: Split modify_flows().
  ofproto: Split delete_flow*().
  ofproto: Add support for reverting flow mods, and bundle commit.
  ovs-ofctl: Add 'bundle' command and unit testing.
  classifier: Support table versioning
  ofproto: Infra for table versioning.
  Use classifier versioning.

 NEWS                         |   15 +-
 include/openvswitch/vconn.h  |    6 +-
 lib/classifier-private.h     |   31 +-
 lib/classifier.c             |  327 ++++++++----
 lib/classifier.h             |   13 +-
 lib/ofp-parse.c              |  102 +++-
 lib/ofp-parse.h              |   12 +-
 lib/ofp-print.c              |    4 +-
 lib/ofp-util.c               |   44 +-
 lib/ofp-util.h               |    9 +-
 lib/ovs-router.c             |    2 +-
 lib/tnl-ports.c              |    9 +-
 lib/vconn.c                  |   27 +-
 ofproto/bundles.c            |  176 ++----
 ofproto/bundles.h            |   72 ++-
 ofproto/connmgr.c            |   51 +-
 ofproto/connmgr.h            |    6 +-
 ofproto/ofproto-dpif-xlate.c |   17 +-
 ofproto/ofproto-dpif.c       |  128 +++--
 ofproto/ofproto-dpif.h       |    5 +-
 ofproto/ofproto-provider.h   |   65 +--
 ofproto/ofproto.c            | 1207 ++++++++++++++++++++++++++++++------------
 tests/ofproto.at             |  176 ++++--
 tests/test-classifier.c      |   13 +-
 utilities/ovs-ofctl.8.in     |   32 ++
 utilities/ovs-ofctl.c        |  222 +++++++-
 26 files changed, 2031 insertions(+), 740 deletions(-)

-- 
1.7.10.4

_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to