net: openvswitch: add support for l4 symmetric hashing
authorAaron Conole <aconole@redhat.com>
Fri, 9 Jun 2023 13:59:55 +0000 (09:59 -0400)
committerDavid S. Miller <davem@davemloft.net>
Mon, 12 Jun 2023 08:46:30 +0000 (09:46 +0100)
commite069ba07e6c7af69e119316bc87ff44869095f49
tree74f782414a9baa425b99d8c78bfef0c8b9f97da3
parent65137877338149185d71d2bc1481693b78377e04
net: openvswitch: add support for l4 symmetric hashing

Since its introduction, the ovs module execute_hash action allowed
hash algorithms other than the skb->l4_hash to be used.  However,
additional hash algorithms were not implemented.  This means flows
requiring different hash distributions weren't able to use the
kernel datapath.

Now, introduce support for symmetric hashing algorithm as an
alternative hash supported by the ovs module using the flow
dissector.

Output of flow using l4_sym hash:

    recirc_id(0),in_port(3),eth(),eth_type(0x0800),
    ipv4(dst=64.0.0.0/192.0.0.0,proto=6,frag=no), packets:30473425,
    bytes:45902883702, used:0.000s, flags:SP.,
    actions:hash(sym_l4(0)),recirc(0xd)

Some performance testing with no GRO/GSO, two veths, single flow:

    hash(l4(0)):      4.35 GBits/s
    hash(l4_sym(0)):  4.24 GBits/s

Signed-off-by: Aaron Conole <aconole@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/uapi/linux/openvswitch.h
net/openvswitch/actions.c
net/openvswitch/flow_netlink.c