From: John Fastabend <john.fastabend@gmail.com>
To: Jiri Pirko <jiri@resnulli.us>, Daniel Borkmann <daniel@iogearbox.net>
Cc: "Alexei Starovoitov" <alexei.starovoitov@gmail.com>,
"Thomas Graf" <tgraf@suug.ch>, "Jakub Kicinski" <kubakici@wp.pl>,
netdev@vger.kernel.org, davem@davemloft.net, jhs@mojatatu.com,
roopa@cumulusnetworks.com, simon.horman@netronome.com,
ast@kernel.org, prem@barefootnetworks.com,
hannes@stressinduktion.org, jbenc@redhat.com,
tom@herbertland.com, mattyk@mellanox.com, idosch@mellanox.com,
eladr@mellanox.com, yotamg@mellanox.com, nogahf@mellanox.com,
ogerlitz@mellanox.com, linville@tuxdriver.com,
andy@greyhouse.net, f.fainelli@gmail.com,
dsa@cumulusnetworks.com, vivien.didelot@savoirfairelinux.com,
andrew@lunn.ch, ivecera@redhat.com,
"Maciej Żenczykowski" <zenczykowski@gmail.com>
Subject: Re: Let's do P4
Date: Wed, 2 Nov 2016 08:22:50 -0700 [thread overview]
Message-ID: <581A04CA.5020808@gmail.com> (raw)
In-Reply-To: <20161102081404.GE1713@nanopsycho.orion>
[...]
>>>>> Exactly. Following drawing shows p4 pipeline setup for SW and Hw:
>>>>>
>>>>> |
>>>>> | +--> ebpf engine
>>>>> | |
>>>>> | |
>>>>> | compilerB
>>>>> | ^
>>>>> | |
>>>>> p4src --> compilerA --> p4ast --TCNL--> cls_p4 --+-> driver -> compilerC -> HW
>>>>> |
>>>>> userspace | kernel
>>>>> |
>>
>> Sorry for jumping into the middle and the delay (plumbers this week). My
>> question would be, if the main target is for p4 *offloading* anyway, who
>> would use this sw fallback path? Mostly for testing purposes?
>
> Development and testing purposes, yes.
>
>
>>
>> I'm not sure about compilerB here and the complexity that needs to be
>> pushed into the kernel along with it. I would assume this would result
>> in slower code than what the existing P4 -> eBPF front ends for LLVM
>> would generate since it could perform all kind of optimizations there,
>
> The complexity would be similar to compilerC. For compilerB,
> optimizations does not really matter, as it it for testing mainly.
>
>
>> that might not be feasible for doing inside the kernel. Thus, if I'd want
>> to do that in sw, I'd just use the existing LLVM facilities instead and
>> go via cls_bpf in that case.
>>
>> What is your compilerA? Is that part of tc in user space? Maybe linked
>
> It is something that transforms original p4 source to some intermediate
> form, easy to be processed by in-kernel compilers.
>
>
>> against LLVM lib, for example? If you really want some sw path, can't tc
>> do this transparently from user space instead when it gets a netlink error
>> that it cannot get offloaded (and thus switch internally to f_bpf's loader)?
>
> In real life, user will most probably use p4 for hw programming, but the
> sw fallback will be done in bpf directly. In that case, he would use
> cls_bfp SKIP_HW
> cls_p4 SKIP_SW
>
> But in order to allow cls_p4 offloading to hw, we need in-kernel
> interpreter. That is purpose of compilerB to take agvantage of bpf, but
> the in-kernel interpreter could be implemented differently.
>
But this is the issue. We openly acknowledge it wont actually be used.
We have multiple user space compilers that generate at least half way
reasonable ebpf code that is being used in real deployments and
works great for testing. This looks like pure overhead to satisfy this
hw/sw parity checkbox and I can't see why anyone would use it or even
maintain it. Looks like a checkbox and I like to avoid useless work that
is likely to bit rot.
next prev parent reply other threads:[~2016-11-02 15:23 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-29 7:53 Let's do P4 Jiri Pirko
2016-10-29 9:39 ` Thomas Graf
2016-10-29 10:10 ` Jiri Pirko
2016-10-29 11:15 ` Thomas Graf
2016-10-29 11:28 ` Jiri Pirko
2016-10-29 12:09 ` Thomas Graf
2016-10-29 13:58 ` Jiri Pirko
2016-10-29 14:54 ` Jakub Kicinski
2016-10-29 14:58 ` Jiri Pirko
2016-10-29 14:49 ` Jakub Kicinski
2016-10-29 14:55 ` Jiri Pirko
2016-10-29 16:46 ` John Fastabend
2016-10-30 7:44 ` Jiri Pirko
2016-10-30 10:26 ` Thomas Graf
2016-10-30 16:38 ` Jiri Pirko
2016-10-30 17:45 ` Jakub Kicinski
2016-10-30 18:01 ` Jiri Pirko
2016-10-30 18:44 ` Jakub Kicinski
2016-10-30 19:56 ` Jiri Pirko
2016-10-30 21:14 ` John Fastabend
2016-10-30 22:39 ` Alexei Starovoitov
2016-10-31 6:03 ` Maciej Żenczykowski
2016-10-31 7:47 ` Jiri Pirko
2016-10-31 9:39 ` Jiri Pirko
2016-10-31 16:53 ` John Fastabend
2016-10-31 17:12 ` Jiri Pirko
2016-10-31 18:32 ` Hannes Frederic Sowa
2016-10-31 19:35 ` John Fastabend
2016-11-01 8:46 ` Jiri Pirko
2016-11-01 15:13 ` John Fastabend
2016-11-02 8:07 ` Jiri Pirko
2016-11-02 15:18 ` John Fastabend
2016-11-02 15:23 ` Jiri Pirko
2016-11-02 2:29 ` Daniel Borkmann
2016-11-02 5:06 ` Maciej Żenczykowski
2016-11-02 8:14 ` Jiri Pirko
2016-11-02 15:22 ` John Fastabend [this message]
2016-11-02 15:27 ` Jiri Pirko
2016-10-30 20:54 ` John Fastabend
2016-11-01 11:57 ` Jamal Hadi Salim
2016-11-01 15:03 ` John Fastabend
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=581A04CA.5020808@gmail.com \
--to=john.fastabend@gmail.com \
--cc=alexei.starovoitov@gmail.com \
--cc=andrew@lunn.ch \
--cc=andy@greyhouse.net \
--cc=ast@kernel.org \
--cc=daniel@iogearbox.net \
--cc=davem@davemloft.net \
--cc=dsa@cumulusnetworks.com \
--cc=eladr@mellanox.com \
--cc=f.fainelli@gmail.com \
--cc=hannes@stressinduktion.org \
--cc=idosch@mellanox.com \
--cc=ivecera@redhat.com \
--cc=jbenc@redhat.com \
--cc=jhs@mojatatu.com \
--cc=jiri@resnulli.us \
--cc=kubakici@wp.pl \
--cc=linville@tuxdriver.com \
--cc=mattyk@mellanox.com \
--cc=netdev@vger.kernel.org \
--cc=nogahf@mellanox.com \
--cc=ogerlitz@mellanox.com \
--cc=prem@barefootnetworks.com \
--cc=roopa@cumulusnetworks.com \
--cc=simon.horman@netronome.com \
--cc=tgraf@suug.ch \
--cc=tom@herbertland.com \
--cc=vivien.didelot@savoirfairelinux.com \
--cc=yotamg@mellanox.com \
--cc=zenczykowski@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).