Currently, if any field in IP header is set with a set action, all the
IP header fields need to be matched exactly in the megaflow.  This
series adds support for masked set actions, requiring only the header
bits actually read or set to be matched exactly by the resulting
megaflow.

As an example, consider how the IP TTL decrement is implemented with
OVS: OVS userspace flow translation code reads the incoming TTL value,
decrements it, and if non-zero, generates a set action that writes the
new value to the IP header.  Prior to this patch it was impossible to
write just the ttl field, and all the field values were written.  The
other than ttl values included in the set action are copied from the
incoming IP header, and thus the action is only valid for only a
packet having those header values.  Thus the megaflow must match all
the IP header fields exactly, lest the action be performed on some
other IP header field values.  After this patch, only the ttl field is
written, and all other IP header fields can be wildcarded by the
megaflow.

As it may be apparent, fields that are set without reading their
values could also be left wildcarded to get even better megaflows.
Work to that end involves bigger changes in the OVS userspace flow
translation code, and is in progress.

Jarno Rajahalme (10):
  lib/ofp-actions: Silently discard set ip ecn/ttl actions on
    OpenFlow10.
  ofproto: Fix wildcard masking with nw_tos.
  Tests: Fix ofproto/trace and expose megaflows when having a set
    action.
  ofproto/xlate: Fix set field unwildcarding.
  lib/odp: Masked set action execution and printing.
  ofproto: Probe for masked set action support.
  lib/odp: Use masked set actions.
  openvswithch.h: Clarify use of key attributes.
  datapath: Allow masks for set actions.
  Clarify tunnel wildcarding.

 datapath/actions.c           |  218 ++++++++++++++-----
 datapath/flow_netlink.c      |   51 ++++-
 include/linux/openvswitch.h  |   16 +-
 lib/odp-execute.c            |  241 +++++++++++++++++----
 lib/odp-util.c               |  486 +++++++++++++++++++++++++++++-------------
 lib/odp-util.h               |    8 +-
 lib/ofp-actions.c            |    4 +-
 ofproto/ofproto-dpif-xlate.c |   39 +++-
 ofproto/ofproto-dpif-xlate.h |    3 +-
 ofproto/ofproto-dpif.c       |   80 ++++++-
 ofproto/tunnel.c             |   44 ++--
 tests/ofproto-dpif.at        |   63 +++---
 tests/tunnel.at              |   20 +-
 13 files changed, 945 insertions(+), 328 deletions(-)

-- 
1.7.10.4

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

Reply via email to