From: John Fastabend <john.fastabend@gmail.com>
To: Jiri Pirko <jiri@resnulli.us>
Cc: Scott Feldman <sfeldma@gmail.com>,
Netdev <netdev@vger.kernel.org>,
"David S. Miller" <davem@davemloft.net>,
Ido Schimmel <idosch@mellanox.com>,
eladr@mellanox.com, Thomas Graf <tgraf@suug.ch>,
Alexei Starovoitov <ast@plumgrid.com>
Subject: Re: [patch net-next 09/14] rocker: add rtnl ops for port mode [gs]etting
Date: Mon, 05 Oct 2015 10:43:23 -0700 [thread overview]
Message-ID: <5612B6BB.4020402@gmail.com> (raw)
In-Reply-To: <20151005172407.GS2278@nanopsycho.orion>
On 15-10-05 10:24 AM, Jiri Pirko wrote:
> Mon, Oct 05, 2015 at 07:07:30PM CEST, john.fastabend@gmail.com wrote:
>
> <snip>
>
>>>
>>> Again, to make this clear, worlds are not just a rehash of tables.
>>>
>>
>> what are they then? Lets model those bits and let users configure them
>> at runtime.
>>
>> So far I've had really good results modelling hardware as a 'parser',
>> a set of tables, and a set of modify blocks. Now this breaks when you
>> start to add black boxes in there for other functions such as encryption
>> but I don't think your getting at that. Do you see something that
>> couldn't be configured/modelled with those blocks?
>
> How about an arbitrary BPF program? I can implement world that bases
> mangling/forwarding packets on intensity of gravitational field.
> Rocker hw is very free in that and cannot be pushed down to "table boxes".
>
> That is making it a wild animal and challenges us to wrap it up in
> kernel, somehow.
>
Just for fun ;)
I would model this as a parser that matches on gravitational field and
and an action that does mangling/forwarding.
So a table,
table { name "gravitational_field_table",
id 10,
size 1024,
matches {(gfield,mask)},
actions {mangle, forward},
}
rules would look like,
match (gfield=0x1000, mask(0xff00)) -> action (mangle), action(forward)
The user can populate these tables using some interface, the ebpf maps
API looks nice and then programs running against hardware and software
use the same API. Or the hardware could populate the table using a
learning algorithm of some sort. Also you could push your bpf program
to user space via an API so that we can create a software equiv of your
hardware.
I think we can tame the wild animal a bit by scoping it to the set of
useful bpf programs. I guess we can argue about what useful is in this
context. I'm going to argue forwarding by gravitational fields is going
to be not so useful in practice.
Thanks,
.John
next prev parent reply other threads:[~2015-10-05 17:43 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-04 21:25 [patch net-next 00/14] rocker: add support for multiple worlds Jiri Pirko
2015-10-04 21:25 ` [patch net-next 01/14] rocker: remove unused rocker_port param from alloc funcs and shorten their names Jiri Pirko
2015-10-04 21:25 ` [patch net-next 02/14] rocker: rename rocker.h to rocker_hw.h Jiri Pirko
2015-10-04 21:25 ` [patch net-next 03/14] rocker: rename rocker.c to rocker_main.c Jiri Pirko
2015-10-04 21:25 ` [patch net-next 04/14] rocker: push tlv processing into separate files Jiri Pirko
2015-10-04 21:25 ` [patch net-next 05/14] rocker: implement set settings mode command Jiri Pirko
2015-10-06 4:51 ` Scott Feldman
2015-10-04 21:25 ` [patch net-next 06/14] rocker: introduce worlds infrastructure Jiri Pirko
2015-10-04 21:25 ` [patch net-next 07/14] rocker: introduce OF-DPA world skeleton Jiri Pirko
2015-10-04 21:25 ` [patch net-next 08/14] rocker: set default world on port probe and clean world on remove Jiri Pirko
2015-10-04 21:25 ` [patch net-next 09/14] rocker: add rtnl ops for port mode [gs]etting Jiri Pirko
2015-10-05 15:41 ` Scott Feldman
2015-10-05 15:52 ` John Fastabend
2015-10-05 16:37 ` Jiri Pirko
2015-10-05 17:07 ` John Fastabend
2015-10-05 17:24 ` Jiri Pirko
2015-10-05 17:43 ` John Fastabend [this message]
2015-10-05 17:50 ` Jiri Pirko
2015-10-05 15:53 ` Jiri Pirko
2015-10-05 16:37 ` Scott Feldman
2015-10-05 16:50 ` Jiri Pirko
2015-10-05 17:00 ` Scott Feldman
2015-10-05 17:12 ` Jiri Pirko
2015-10-04 21:25 ` [patch net-next 10/14] rocker: pass "learning" value as a parameter to rocker_port_set_learning Jiri Pirko
2015-10-05 15:16 ` David Laight
2015-10-05 15:24 ` Jiri Pirko
2015-10-04 21:25 ` [patch net-next 11/14] rocker: pre-allocate wait structures during cmd ring init Jiri Pirko
2015-10-04 21:25 ` [patch net-next 12/14] rocker: remove trans parameter to rocker_cmd_exec function Jiri Pirko
2015-10-04 21:25 ` [patch net-next 13/14] rocker: call rocker_cmd_exec function with "nowait" boolean instead of flags Jiri Pirko
2015-10-04 21:25 ` [patch net-next 14/14] rocker: move OF-DPA stuff into separate file Jiri Pirko
2015-10-05 15:41 ` [patch net-next 00/14] rocker: add support for multiple worlds John Fastabend
2015-10-05 16:30 ` Jiri Pirko
2015-10-05 16:58 ` John Fastabend
2015-10-05 17:39 ` Jiri Pirko
2015-10-05 17:56 ` John Fastabend
2015-10-05 17:49 ` Scott Feldman
2015-10-06 7:34 ` 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=5612B6BB.4020402@gmail.com \
--to=john.fastabend@gmail.com \
--cc=ast@plumgrid.com \
--cc=davem@davemloft.net \
--cc=eladr@mellanox.com \
--cc=idosch@mellanox.com \
--cc=jiri@resnulli.us \
--cc=netdev@vger.kernel.org \
--cc=sfeldma@gmail.com \
--cc=tgraf@suug.ch \
/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).