[ovs-dev] [RFC PATCH 0/8] OpenFlow 1.3 meter implementation.

Jarno Rajahalme jarno.rajahalme at nsn.com
Thu Jun 20 14:26:15 UTC 2013


This series adds basic support for OpenFlow 1.3 meters.  As meters need to
act on possibly every packet seen by a datapath, the meters must be
implemented in the datapath(s).  This series includes a crude
implementation on the userspace datapath, which is yet to be fully tested.
Since a datapath can serve multiple bridges, the meter numbering spaces at
the OpenFlow level and the datapath level need to be separated (this is
similar to port numbering).  In principle each ofproto-provider is
responsible for the mapping between the two ID spaces, but the overhead of
doing this is minimized by having space for the "provider meter ID"
already at the main meter table in ofproto.  I have tried to minimize the
meter-related management overhead on the datapath(s), so there is no query
interface to enumerate the datapath meters, but the upper lever is
responsible of knowing what meters it has installed. 

Unit tests are included for parsers but the actual meter action support in
dpif-netdev.c is yet to be tested.  Also, documentation is yet to be
written.  I'm sending this now to gather feedback on the overall design
before I invest more time in, e.g., kernel datapath meter support.

Jarno Rajahalme (8):
  ofp-util: Remove prototype of non-existing function.
  ofpacts_check: Remove unnecessary flow copying.
  ofp-util: Support for OpenFlow 1.3 meters.
  ofproto: Implement OpenFlow 1.3 meter table.
  dpif: Meter framework.
  dpif-netdev: Simple token-bucket meter implementation.
  datapath: Meter placeholders.
  ovs-ofctl: Add meter support.

 datapath/actions.c                 |   16 +-
 datapath/datapath.c                |    5 +
 datapath/datapath.h                |    2 +
 include/linux/openvswitch.h        |    3 +
 include/openflow/openflow-1.3.h    |    2 +-
 include/openflow/openflow-common.h |    1 +
 lib/dpif-linux.c                   |   40 +++
 lib/dpif-netdev.c                  |  244 ++++++++++++++++++-
 lib/dpif-provider.h                |   28 +++
 lib/dpif.c                         |   87 +++++++
 lib/dpif.h                         |   11 +
 lib/odp-execute.c                  |   20 +-
 lib/odp-execute.h                  |    5 +-
 lib/odp-util.c                     |   14 ++
 lib/ofp-actions.c                  |   95 ++++++--
 lib/ofp-actions.h                  |   33 ++-
 lib/ofp-msgs.h                     |    6 +-
 lib/ofp-parse.c                    |  216 ++++++++++++++++-
 lib/ofp-parse.h                    |    4 +
 lib/ofp-print.c                    |  266 +++++++++++++++++++-
 lib/ofp-util.c                     |  370 ++++++++++++++++++++++++++++
 lib/ofp-util.h                     |   89 ++++++-
 lib/rconn.c                        |   14 +-
 ofproto/ofproto-dpif-xlate.c       |   18 +-
 ofproto/ofproto-dpif.c             |   56 +++++
 ofproto/ofproto-provider.h         |   24 ++
 ofproto/ofproto.c                  |  467 +++++++++++++++++++++++++++++++++---
 ofproto/ofproto.h                  |    4 +
 tests/ofp-print.at                 |   89 +++++++
 utilities/ovs-ofctl.c              |   88 +++++++
 30 files changed, 2231 insertions(+), 86 deletions(-)

-- 
1.7.10.4




More information about the dev mailing list