netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Thomas Graf <tgraf@suug.ch>
To: Alexei Starovoitov <alexei.starovoitov@gmail.com>
Cc: Jamal Hadi Salim <jhs@mojatatu.com>,
	John Fastabend <john.fastabend@gmail.com>,
	Tom Herbert <tom@herbertland.com>,
	Hannes Frederic Sowa <hannes@stressinduktion.org>,
	"John W. Linville" <linville@tuxdriver.com>,
	Jesse Gross <jesse@kernel.org>,
	David Miller <davem@davemloft.net>,
	Anjali Singhai Jain <anjali.singhai@intel.com>,
	Linux Kernel Network Developers <netdev@vger.kernel.org>,
	Kiran Patil <kiran.patil@intel.com>
Subject: Re: [PATCH v1 1/6] net: Generalize udp based tunnel offload
Date: Wed, 9 Dec 2015 13:58:57 +0100	[thread overview]
Message-ID: <20151209125857.GA9900@pox.localdomain> (raw)
In-Reply-To: <20151209054543.GA7902@ast-mbp.thefacebook.com>

On 12/08/15 at 09:45pm, Alexei Starovoitov wrote:
> definetely not 1, not 2 and hardly 3.
> bpf verifier in 2k lines does full code analysis with all branches,
> memory accesses and so on, so it's not hard to understand _intent_
> of the program by any HW backend.
> I agree with John that it's not trivial to convert bpf program into
> parse graph that intel asic understands, but it's not hard either.
> fpga based nic/switch can convert a program into parallel gates.
> netronom nic can JIT it into their instruction set.
> Programmable switch asics can equally understand intent of the
> program and convert it into their firmware.
> The easiest would be arm-based nics.
> In all cases HW will not be able to convert all possible programs,
> but it's not a limitation of instruction set. That's why 1 and 2
> above doesn't really apply.
> Different explanation of the above:
> think of bpf as intermediate representation. When C or some other
> language is used to describe what dataplane suppose to do
> the compiler generates bpf==IR which is later compiled by hw specific
> backend into target. That target can be fpga, asic, npu, etc.
> Some backends will be simple and small enough to stay completely
> within kernel. Some backends (like fpga) would need to
> call_usermodehelper() or similar, since netlist compilation is
> tedious and slow process.

Trying to summarize that, the definition of a BPF program in the
context of this discussion is: a BPF program of which the driver
or firmware/NIC can understand the original intent. Unless the NIC
can JIT, this implies reverse engineering the control flow into
a declarative model.

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.

  reply	other threads:[~2015-12-09 12:59 UTC|newest]

Thread overview: 94+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-11-23 21:02 [PATCH 0/6] Generalize udp based tunnels and add geneve offload Anjali Singhai Jain
2015-11-23 21:02 ` [PATCH v1 1/6] net: Generalize udp based tunnel offload Anjali Singhai Jain
2015-11-23 20:57   ` kbuild test robot
2015-11-23 20:58   ` kbuild test robot
2015-11-23 21:53   ` Tom Herbert
2015-11-23 22:49     ` Jesse Gross
2015-11-24  0:32       ` Singhai, Anjali
2015-11-24  0:38         ` Tom Herbert
2015-11-24  1:11           ` Jesse Brandeburg
2015-11-24 17:32             ` Tom Herbert
2015-11-24 17:43               ` Hannes Frederic Sowa
2015-11-24 17:52                 ` Tom Herbert
2015-11-24 18:16                   ` Hannes Frederic Sowa
2015-11-24 18:37                 ` David Miller
2015-11-24 18:42                   ` Hannes Frederic Sowa
2015-11-24 18:43                   ` Tom Herbert
2015-11-30  3:22               ` David Miller
2015-11-30 21:42                 ` Singhai, Anjali
2015-11-30 21:48                   ` Tom Herbert
2015-12-01  3:51                     ` David Miller
2015-12-01  3:48                   ` David Miller
2015-12-01  6:33                     ` Alexander Duyck
2015-11-30  3:21     ` David Miller
2015-11-30 21:33       ` Singhai, Anjali
2015-12-01  0:25       ` Jesse Gross
2015-12-01  1:02         ` Tom Herbert
2015-12-01  1:28           ` Jesse Gross
2015-12-01  5:26             ` Tom Herbert
2015-12-01 15:44               ` John W. Linville
2015-12-01 15:49                 ` Hannes Frederic Sowa
2015-12-01 16:08                   ` John W. Linville
2015-12-02  0:40                     ` Singhai, Anjali
2015-12-02  3:50                   ` Tom Herbert
2015-12-02 16:35                     ` Hannes Frederic Sowa
2015-12-02 19:15                       ` Tom Herbert
2015-12-02 23:35                         ` John Fastabend
2015-12-03  0:15                           ` Tom Herbert
2015-12-08  7:33                             ` John Fastabend
2015-12-08 14:23                               ` Jamal Hadi Salim
2015-12-08 15:10                                 ` Jamal Hadi Salim
2015-12-09  1:40                                   ` Thomas Graf
2015-12-09  5:45                                     ` Alexei Starovoitov
2015-12-09 12:58                                       ` Thomas Graf [this message]
2015-12-09 17:38                                         ` Alexei Starovoitov
2015-12-09 20:03                                           ` David Miller
2015-12-09 22:03                                           ` Thomas Graf
2015-12-09 22:21                                             ` David Miller
2015-12-09 22:25                                               ` Thomas Graf
2015-12-03  2:08                           ` Alexei Starovoitov
2015-12-03 15:59                         ` Hannes Frederic Sowa
2015-12-03 16:35                           ` Andreas Schultz
2015-12-03 16:43                             ` Hannes Frederic Sowa
2015-12-04 18:28                           ` Tom Herbert
2015-12-04 19:54                             ` John Fastabend
2015-12-04 19:59                             ` Hannes Frederic Sowa
2015-12-04 20:02                               ` Hannes Frederic Sowa
2015-12-04 20:06                               ` David Miller
2015-12-04 20:13                                 ` Tom Herbert
2015-12-04 21:37                                   ` David Miller
2015-12-04 20:26                                 ` Hannes Frederic Sowa
2015-12-04 20:43                                   ` Tom Herbert
2015-12-04 21:11                                     ` Hannes Frederic Sowa
2015-12-04 20:44                                   ` Jesse Gross
2015-12-04 22:44                                 ` Alexander Duyck
2015-12-05  0:53                                   ` Tom Herbert
2015-12-05  5:45                                     ` Alexander Duyck
2015-12-05  6:49                                       ` David Miller
2015-12-05  8:24                                         ` Alexander Duyck
2015-12-05 17:53                                           ` Tom Herbert
2015-12-05 19:34                                             ` Alexander Duyck
2015-12-05 18:03                                           ` David Miller
2015-12-05 19:34                                             ` Alexander Duyck
2015-12-05 22:27                                               ` David Miller
2015-12-06  2:13                                                 ` Alexander Duyck
2015-12-06 16:31                                                   ` Tom Herbert
2015-12-06 18:44                                                     ` Alexander Duyck
2015-12-06 21:30                                                       ` Tom Herbert
2015-12-07  1:20                                                         ` Alexander Duyck
2015-12-07  3:02                                                           ` David Ahern
2015-12-07 16:20                                                             ` Jesse Gross
2015-12-05  4:50                                   ` David Miller
2015-12-05  6:50                                     ` Alexander Duyck
2015-11-24  5:41   ` Alexander Duyck
2015-11-30 16:35   ` Tom Herbert
2015-11-30 21:53     ` Singhai, Anjali
2015-12-01  3:52       ` David Miller
2015-11-23 21:02 ` [PATCH v1 2/6] net: Add a generic udp_offload_get_port function Anjali Singhai Jain
2015-11-24  6:08   ` Alexander Duyck
2015-11-24  6:37   ` Alexander Duyck
2015-11-24 19:35     ` Singhai, Anjali
2015-11-23 21:02 ` [PATCH v1 3/6] i40e: Generalize the flow for udp based tunnels Anjali Singhai Jain
2015-11-23 21:02 ` [PATCH v1 4/6] i40e: Remove CONFIG_I40E_VXLAN Anjali Singhai Jain
2015-11-23 21:02 ` [PATCH v1 5/6] net: Refactor udp_offload and add Geneve port offload support Anjali Singhai Jain
2015-11-23 21:02 ` [PATCH v1 6/6] i40e:Add geneve tunnel " Anjali Singhai Jain

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=20151209125857.GA9900@pox.localdomain \
    --to=tgraf@suug.ch \
    --cc=alexei.starovoitov@gmail.com \
    --cc=anjali.singhai@intel.com \
    --cc=davem@davemloft.net \
    --cc=hannes@stressinduktion.org \
    --cc=jesse@kernel.org \
    --cc=jhs@mojatatu.com \
    --cc=john.fastabend@gmail.com \
    --cc=kiran.patil@intel.com \
    --cc=linville@tuxdriver.com \
    --cc=netdev@vger.kernel.org \
    --cc=tom@herbertland.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).