[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20151209.172128.2004885848439372720.davem@davemloft.net>
Date: Wed, 09 Dec 2015 17:21:28 -0500 (EST)
From: David Miller <davem@...emloft.net>
To: tgraf@...g.ch
Cc: alexei.starovoitov@...il.com, jhs@...atatu.com,
john.fastabend@...il.com, tom@...bertland.com,
hannes@...essinduktion.org, linville@...driver.com,
jesse@...nel.org, anjali.singhai@...el.com, netdev@...r.kernel.org,
kiran.patil@...el.com
Subject: Re: [PATCH v1 1/6] net: Generalize udp based tunnel offload
From: Thomas Graf <tgraf@...g.ch>
Date: Wed, 9 Dec 2015 23:03:39 +0100
> On 12/09/15 at 09:38am, Alexei Starovoitov wrote:
>> On Wed, Dec 09, 2015 at 01:58:57PM +0100, Thomas Graf wrote:
>> >
>> > So if the goal is to make the intent available to the hardware in
>> > a format which both the kernel and the hardware can draw the same
>> > conclusions from, wouldn't something like P4 + BPF derived from P4
>> > be a possibly better fit? There is discussion on stateful P4
>> > processing now.
>>
>> p4 is a high level language and absolutely not suitable for such purpose.
>> bpf as intermediate representation can be generated from p4 or C or other
>> language. There is room to innovate in the language definition on top
>> and in HW design at the bottom. That's the most flexible model.
>
> If you don't want to discuss it, no problem. But stating that P4
> is a high level language (not sure what this means exactly since
> we exactly _want_ an abstraction away from hardware) and that it's
> not suitable for this purpose is just wrong. P4 has been created
> exactly for the purpose of expressing how a packet should be
> processed by a forwarding element independent of specific hardware.
Just because it was supposeduly designed for this purpose, doesn't
mean it's the most appropriate intermediate language between what
the kernel wants hardware to do and what actually has to happen for
the hardware to do that.
BPF is so much more universal and can cover everything we'd want
hardware to perform, and then some.
Plus it's everywhere in the kernel already, has a full validation and
test suite, full LLVM backend, plus JITs for several prominent
architectures with more on the way.
It is clearly the most appropriate middle layer representation.
The fact that BPF could be generated from any P4 program, yet the
reverse is not true, tells me everything I need to know.
I'm sorry if you have either a mental or a time invenstment in P4, but
I really don't see it as really suitable for this.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists