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 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev