Re: [PATCH RFC 1/3] xdp: Infrastructure to generalize XDP
From: Thomas Graf <tgraf@suug.ch>
Date: 2016-09-21 11:55:48
On 09/20/16 at 04:59pm, Tom Herbert wrote:
Well, need to measure to ascertain the cost. As for complexity, this actually reduces complexity needed for XDP in the drivers which is a good thing because that's where most of the support and development pain will be.
I'm not objecting to anything that simplifies the process of adding XDP capability to drivers. You have my full support here.
I am looking at using this for ILA router. The problem I am hitting is that not all packets that we need to translate go through the XDP path. Some would go through the kernel path, some through XDP path but
When you say kernel path, what do you mean specifically? One aspect of XDP I love is that XDP can act as an acceleration option for existing BPF programs attached to cls_bpf. Support for direct packet read and write at clsact level have made it straight forward to write programs which are compatible or at minimum share a lot of common code. They can share data structures, lookup functionality, etc.
We can optimize for allowing only one hook, or maybe limit to only allowing one hook to be set. In any case this obviously requires a lot of performance evaluation, I am hoping to feedback on the design first. My question about using a linear list for this was real, do you know a better method off hand to implement a call list?
My main concern is that we overload the XDP hook. Instead of making use
of the programmable glue, we put a linked list in front where everybody
can attach a program to.
A possible alternative:
1. The XDP hook always has single consumer controlled by the user
through Netlink, BPF is one of them. If a user wants to hardcode
the ILA router to that hook, he can do that.
2. BPF for XDP is extended to allow returning a verdict which results
in something else to be invoked. If user wants to invoke the ILA
router for just some packets, he can do that.
That said, I see so much value in a BPF implementation of ILA at XDP
level with all of the parsing logic and exact semantics remain
flexible without the cost of translating some configuration to a set
of actions.