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