Thread (27 messages) 27 messages, 8 authors, 2022-09-07

Re: [PATCH nf-next] netfilter: nf_tables: add ebpf expression

From: Florian Westphal <fw@strlen.de>
Date: 2022-08-31 21:58:50
Also in: bpf, netfilter-devel

Alexei Starovoitov [off-list ref] wrote:
quoted
This helps gradually moving towards move epbf for those that
still heavily rely on the classic forwarding path.
No one is using it.
If it was, we would have seen at least one bug report over
all these years. We've seen none.
Err, it IS used, else I would not have sent this patch.
very reasonable early on and turned out to be useless with
zero users.
BPF_PROG_TYPE_SCHED_ACT and BPF_PROG_TYPE_LWT*
are in this category.
I doubt it had 0 users.  Those users probably moved to something
better?
As a minimum we shouldn't step on the same rakes.
xt_ebpf would be the same dead code as xt_bpf.
Its just 160 LOC or so, I don't see it has a huge technical debt.
quoted
If you are open to BPF_PROG_TYPE_NETFILTER I can go that route
as well, raw bpf program attachment via NF_HOOK and the bpf dispatcher,
but it will take significantly longer to get there.

It involves reviving
https://lore.kernel.org/netfilter-devel/20211014121046.29329-1-fw@strlen.de/ (local)
I missed it earlier. What is the end goal ?
Immediate goal: get rid of all indirect calls from NF_HOOK()
invocations. Its about 2% speedup in my tests (with connection
tracking+defrag enabled).

This series changes prototype of the callbacks to int foo(struct *),
so I think it would be possible to build on this and allow attaching raw
bpf progs/implement what is now a netfilter kernel module as a bpf
program.

I have not spent time on this so far though, so I don't know yet
how the "please attach prog id 12345 at FORWARD with prio 42" should
be done.
Optimize nft run-time with on the fly generation of bpf byte code ?
This could be done too, so far this JITs nf_hook_slow() only.
The big question for nft run-time would be how and where to do the JIT
translation.

I think that "nft run time jit" would be step 3, after allowing
(re)implementation of netfilter modules via bpf programs.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help