• J
    samples/bpf: xdp_redirect_cpu load balance like Suricata · 1bca4e6b
    Jesper Dangaard Brouer 提交于
    This implement XDP CPU redirection load-balancing across available
    CPUs, based on the hashing IP-pairs + L4-protocol.  This equivalent to
    xdp-cpu-redirect feature in Suricata, which is inspired by the
    Suricata 'ippair' hashing code.
    
    An important property is that the hashing is flow symmetric, meaning
    that if the source and destination gets swapped then the selected CPU
    will remain the same.  This is helps locality by placing both directions
    of a flows on the same CPU, in a forwarding/routing scenario.
    
    The hashing INITVAL (15485863 the 10^6th prime number) was fairly
    arbitrary choosen, but experiments with kernel tree pktgen scripts
    (pktgen_sample04_many_flows.sh +pktgen_sample05_flow_per_thread.sh)
    showed this improved the distribution.
    
    This patch also change the default loaded XDP program to be this
    load-balancer.  As based on different user feedback, this seems to be
    the expected behavior of the sample xdp_redirect_cpu.
    
    Link: https://github.com/OISF/suricata/commit/796ec08dd7a63Signed-off-by: NJesper Dangaard Brouer <brouer@redhat.com>
    Signed-off-by: NDaniel Borkmann <daniel@iogearbox.net>
    1bca4e6b
xdp_redirect_cpu_kern.c 17.0 KB