RFC netfilter: Add the capability to offload flowtable in XDP layer
Get series with b4
b4 am [email protected]Versions newest first
- v1 RFC Latest4 patches 0 repliesNew
Patches in v1 No applies recorded yet
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/4 | netfilter: nf_tables: add flowtable map for xdp offloadinclude/ net/ | +161 | 0 replies | |
| 2/4 | netfilter: add bpf_xdp_flow_offload_lookup kfuncinclude/ net/ net/ +1 more | +111 | 0 replies | |
| 3/4 | samples/bpf: Add bpf sample to offload flowtable traffic to xdpsamples/ samples/ samples/ | +726 | 0 replies | |
| 4/4 | selftests/bpf: Add selftest for bpf_xdp_flow_offload_lookup kfunctools/ tools/ tools/ +2 more | +408 | 0 replies |
Reviews trailers per patch
No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.
Cover letter [RFC bpf-next v1 0/4] netfilter: Add the capability to offload flowtable in XDP layer
Introduce bpf_xdp_flow_offload_lookup kfunc in order to perform the lookup of a given flowtable entry based on the fib tuple of incoming traffic.bpf_xdp_flow_offload_lookup can be used as building block to offload in XDP the sw flowtable processing when the hw support is not available.
This series has been tested running the xdp_flowtable_offload eBPF program on an ixgbe 10Gbps NIC (eno2) in order to XDP_REDIRECT the TCP traffic to a veth pair (veth0-veth1) based on the content of the nf_flowtable as soon as the TCP connection is in the established state:
[tcp client] (eno1) == LAN == (eno2) xdp_flowtable_offload [XDP_REDIRECT] --> veth0 == veth1 [tcp server]
table inet filter {
flowtable ft {
hook ingress priority filter
devices = { eno2, veth0 }
}
chain forward {
type filter hook forward priority filter
meta l4proto { tcp, udp } flow add @ft
}
}- sw flowtable [1 TCP stream, T = 300s]: ~ 6.2 Gbps
- xdp flowtable [1 TCP stream, T = 300s]: ~ 7.6 Gbps
Florian Westphal (1):
netfilter: nf_tables: add flowtable map for xdp offload
Lorenzo Bianconi (3):
netfilter: add bpf_xdp_flow_offload_lookup kfunc samples/bpf: Add bpf sample to offload flowtable traffic to xdp selftests/bpf: Add selftest for bpf_xdp_flow_offload_lookup kfunc
include/net/netfilter/nf_flow_table.h | 11 + net/netfilter/Makefile | 5 + net/netfilter/nf_flow_table_bpf.c | 95 +++ net/netfilter/nf_flow_table_inet.c | 2 + net/netfilter/nf_flow_table_offload.c | 161 ++++- samples/bpf/Makefile | 7 +- samples/bpf/xdp_flowtable_offload.bpf.c | 592 ++++++++++++++++++ samples/bpf/xdp_flowtable_offload_user.c | 128 ++++ tools/testing/selftests/bpf/Makefile | 10 +- tools/testing/selftests/bpf/config | 4 + .../selftests/bpf/progs/xdp_flowtable.c | 142 +++++ .../selftests/bpf/test_xdp_flowtable.sh | 112 ++++ tools/testing/selftests/bpf/xdp_flowtable.c | 142 +++++ 13 files changed, 1406 insertions(+), 5 deletions(-) create mode 100644 net/netfilter/nf_flow_table_bpf.c create mode 100644 samples/bpf/xdp_flowtable_offload.bpf.c create mode 100644 samples/bpf/xdp_flowtable_offload_user.c create mode 100644 tools/testing/selftests/bpf/progs/xdp_flowtable.c create mode 100755 tools/testing/selftests/bpf/test_xdp_flowtable.sh create mode 100644 tools/testing/selftests/bpf/xdp_flowtable.c
Signature · 1 line
2.45.0