linux/samples
Jesper Dangaard Brouer 1bca4e6b18 samples/bpf: xdp_redirect_cpu load balance like Suricata
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/796ec08dd7a63
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
2018-08-10 16:07:49 +02:00
..
auxdisplay auxdisplay: Replace licenses with SPDX identifiers 2018-04-12 19:02:45 +02:00
bpf samples/bpf: xdp_redirect_cpu load balance like Suricata 2018-08-10 16:07:49 +02:00
configfs configfs: make config_item_type const 2017-10-19 16:15:15 +02:00
connector A relatively calm cycle for the docs tree again. 2017-11-13 08:25:06 -08:00
hidraw kbuild: remove all dummy assignments to obj- 2017-11-18 11:46:06 +09:00
hw_breakpoint perf: Add context field to perf_event 2011-07-01 11:06:38 +02:00
kdb
kfifo kfifo: clean up example to not use page_link 2017-07-12 16:26:01 -07:00
kobject kobject: Remove redundant license text 2017-12-07 18:36:43 +01:00
kprobes arch: remove tile port 2018-03-16 10:56:03 +01:00
livepatch livepatch: Allow to call a custom callback when freeing shadow variables 2018-04-17 13:42:48 +02:00
mei License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
mic/mpssd Merge branch 'linus' into locking/core, to resolve conflicts 2017-11-07 10:32:44 +01:00
pktgen Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2017-11-04 09:26:51 +09:00
qmi samples: Introduce Qualcomm QMI sample client 2018-02-12 16:57:22 -08:00
rpmsg rpmsg: Allow callback to return errors 2016-09-08 22:15:25 -07:00
seccomp samples/seccomp: do not compile when cross compiled 2018-02-22 09:31:43 -08:00
statx kbuild: remove all dummy assignments to obj- 2017-11-18 11:46:06 +09:00
timers License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
trace_events Merge branch 'for-linus' of ssh://gitolite.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2017-11-15 10:14:11 -08:00
trace_printk tracing: Add trace_printk sample code 2016-06-20 09:54:21 -04:00
uhid kbuild: remove all dummy assignments to obj- 2017-11-18 11:46:06 +09:00
v4l [media] media: v4l2-pci-skeleton: Fix error handling path in 'skeleton_probe()' 2017-10-04 16:55:02 -03:00
vfio-mdev sample: vfio-mdev: avoid deadlock in mdev_access() 2018-07-11 13:22:41 -06:00
watchdog License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
Kconfig samples: mbochs: add DMA_SHARED_BUFFER dependency 2018-06-09 09:23:52 -06:00
Makefile remoteproc updates for v4.17 2018-04-10 12:09:27 -07:00