[ovs-dev] [RFC 00/14] Revalidate flows with unique identifiers.

Jarno Rajahalme jrajahalme at nicira.com
Thu Aug 21 23:59:12 UTC 2014


Joe,

What was the reason to go from 64-bit hash to 128-bit hash?

  Jarno

> On Aug 20, 2014, at 10:41 PM, Joe Stringer <joestringer at nicira.com> wrote:
> 
> One of the current bottlenecks for revalidation performance is the cost of
> assembling flow keys, masks and actions in the (linux) datapath. This series
> seeks to reduce this cost by caching these elements in the udpif, and modifying
> the datapath to skip sending these. To distinguish flows in the datapath, a
> 128-bit "unique flow identifier" will be used instead.
> 
> For the linux datapath, a user feature flag OVS_DP_F_INDEX_BY_UID is sent to
> tell the datapath to expect UID fields in OVS_FLOW_CMD_* requests, to index
> based on the OVS_UID_ATTR_ID field for userspace flow access, and to reply with
> this field in the responses. Each request may include a set of flags specified
> as a bitmask of OVS_UID_F_* which determine what is expected in the response.
> For instance, OVS_UID_F_SKIP_KEY indicates that the key may be omitted from the
> response. If no flags are specified, then the key, mask and actions will be
> included in the response. (In a more general sense, these flags are
> modifications on the behaviour of OVS_FLOW_CMD_* requests, so if there are no
> flags specified, then the behaviour should match the existing behaviour).
> 
> By default, revalidators will tell the datapath to skip serializing the key,
> mask, and actions fields in flow dumps to achieve improved flow dump
> performance. Debug clients such as ovs-dpctl will continue to request all
> details of a flow as they do currently.
> 
> This series proposes most of the changes required, including an initial
> implementation of the new interface for datapath flow commands. The linux
> datapath implementation of these features is yet to come. Previous testing with
> a linux datapath implementation using a 64-bit identifier showed reasonable
> performance improvements over master. I plan to rework that code and send it
> for review next week.
> 
> Joe Stringer (14):
>  tests: Fix race conditions.
>  dpif: Zero flow before dpif_flow_get().
>  revalidator: Use 'cmap' for storing ukeys.
>  revalidator: Protect ukeys with a mutex.
>  udpif: Separate ukey maps from revalidators.
>  upcall: Rename dump_op -> ukey_op.
>  upcall: Create ukeys in handler threads.
>  upcall: Revalidate using cache of mask, actions.
>  hash: Add 128-bit murmurhash.
>  dpif: Add Unique flow identifiers.
>  upcall: Generate unique flow identifiers.
>  dpif-netdev: Support unique flow identifiers.
>  dpif-linux: Support unique flow identifiers.
>  revalidator: Reduce ukey contention.
> 
> datapath/linux/compat/include/linux/openvswitch.h |   26 +
> include/openvswitch/types.h                       |    5 +
> lib/dpctl.c                                       |    6 +-
> lib/dpif-linux.c                                  |   88 ++-
> lib/dpif-netdev.c                                 |  203 +++--
> lib/dpif-provider.h                               |    8 +-
> lib/dpif.c                                        |   37 +-
> lib/dpif.h                                        |   34 +-
> lib/flow.h                                        |    6 +
> lib/hash.c                                        |  194 ++++-
> lib/hash.h                                        |    4 +-
> lib/odp-util.c                                    |   51 ++
> lib/odp-util.h                                    |   25 +
> ofproto/ofproto-dpif-upcall.c                     |  826 ++++++++++++++-------
> ofproto/ofproto-dpif-upcall.h                     |    3 +
> ofproto/ofproto-dpif.c                            |  108 ++-
> ofproto/ofproto-dpif.h                            |    2 +
> tests/dpif-netdev.at                              |    3 +
> tests/ofproto-dpif.at                             |   26 +-
> tests/ofproto-macros.at                           |    1 +
> 20 files changed, 1256 insertions(+), 400 deletions(-)
> 
> -- 
> 1.7.10.4
> 
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev



More information about the dev mailing list