The current default OpenFlow select group implementation sends every new L4 flow
to the slow path for the balancing decision and installs a 5-tuple "miniflow"
in the datapath to forward subsequent packets of the connection accordingly. 
Clearly this has major scalability issues with many parallel L4 flows and high
connection setup rates.

The dp_hash selection method for the OpenFlow select group was added to OVS
as an alternative. It avoids the scalability issues for the price of an 
additional recirculation in the datapath. The dp_hash method is only available
to OF1.5 SDN controllers speaking the Netronome Group Mod extension to 
configure the selection mechanism. This severely limited the applicability of
the dp_hash select group in the past.

Furthermore, testing revealed that the implemented dp_hash selection often
generated a very uneven distribution of flows over group buckets and didn't 
consider bucket weights at all.

The present patch set in a first step improves the dp_hash selection method to
much more accurately distribute flows over weighted group buckets. In a second
step it makes the improved dp_hash method the default in OVS for select groups
that can be accurately handled by dp_hash. That should be the vast majority of
cases. Otherwise we fall back to the legacy slow-path selection method.

The Netronome extension can still be used to override the default decision and
require the legacy slow-path or the dp_hash selection method.

v1 -> v2:
    - Fixed crashes for corner cases reported by Ychen
    - Fixed group ref leakage with dp_hash reported by Ychen
    - Changed all xlation logging from INFO to DBG
    - Revised, completed and detailed select group unit test cases in 
ofproto-dpif
    - Updated selection_method documentation in ovs-ofctl man page
    - Added NEWS item

Jan Scheurich (3):
  userspace datapath: Add OVS_HASH_L4_SYMMETRIC dp_hash algorithm
  ofproto-dpif: Improve dp_hash selection method for select groups
  ofproto-dpif: Use dp_hash as default selection method

 NEWS                                              |   2 +
 datapath/linux/compat/include/linux/openvswitch.h |   4 +
 include/openvswitch/ofp-group.h                   |   1 +
 lib/flow.c                                        |  42 ++-
 lib/flow.h                                        |   1 +
 lib/odp-execute.c                                 |  23 +-
 lib/ofp-group.c                                   |  15 +-
 ofproto/ofproto-dpif-xlate.c                      |  74 +++--
 ofproto/ofproto-dpif.c                            | 161 +++++++++++
 ofproto/ofproto-dpif.h                            |  14 +
 ofproto/ofproto-provider.h                        |   2 +-
 tests/mpls-xlate.at                               |  26 +-
 tests/ofproto-dpif.at                             | 314 +++++++++++++++++-----
 utilities/ovs-ofctl.8.in                          |  47 ++--
 14 files changed, 599 insertions(+), 127 deletions(-)

-- 
1.9.1

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to