From: John Fastabend <john.fastabend@gmail.com>
To: Tom Herbert <tom@herbertland.com>,
Hannes Frederic Sowa <hannes@stressinduktion.org>
Cc: "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, 02 Dec 2015 15:35:53 -0800 [thread overview]
Message-ID: <565F8059.3010101@gmail.com> (raw)
In-Reply-To: <CALx6S34Zqn1t4RPkAoa3QT-vWLvawnBN19qEZ12P-YiCEckxHw@mail.gmail.com>
[...]
>>
>> I wonder why we need protocol generic offloads? I know there are
>> currently a lot of overlay encapsulation protocols. Are there many more
>> coming?
>>
> Yes, and assume that there are more coming with an unbounded limit
> (for instance I just noticed today that there is a netdev1.1 talk on
> supporting GTP in the kernel). Besides, this problem space not just
> limited to offload of encapsulation protocols, but how to generalize
> offload of any transport, IPv[46], application protocols, protocol
> implemented in user space, security protocols, etc.
>
>> Besides, this offload is about TSO and RSS and they do need to parse the
>> packet to get the information where the inner header starts. It is not
>> only about checksum offloading.
>>
> RSS does not require the device to parse the inner header. All the UDP
> encapsulations protocols being defined set the source port to entropy
> flow value and most devices already support RSS+UDP (just needs to be
> enabled) so this works just fine with dumb NICs. In fact, this is one
> of the main motivations of encapsulating UDP in the first place, to
> leverage existing RSS and ECMP mechanisms. The more general solution
> is to use IPv6 flow label (RFC6438). We need HW support to include the
> flow label into the hash for ECMP and RSS, but once we have that much
> of the motivation for using UDP goes away and we can get back to just
> doing GRE/IP, IPIP, MPLS/IP, etc. (hence eliminate overhead and
> complexity of UDP encap).
>
>> Please provide a sketch up for a protocol generic api that can tell
>> hardware where a inner protocol header starts that supports vxlan,
>> vxlan-gpe, geneve and ipv6 extension headers and knows which protocol is
>> starting at that point.
>>
> BPF. Implementing protocol generic offloads are not just a HW concern
> either, adding kernel GRO code for every possible protocol that comes
> along doesn't scale well. This becomes especially obvious when we
> consider how to provide offloads for applications protocols. If the
> kernel provides a programmable framework for the offloads then
> application protocols, such as QUIC, could use use that without
> needing to hack the kernel to support the specific protocol (which no
> one wants!). Application protocol parsing in KCM and some other use
> cases of BPF have already foreshadowed this, and we are working on a
> prototype for a BPF programmable engine in the kernel. Presumably,
> this same model could eventually be applied as the HW API to
> programmable offload.
Just keying off the last statement there...
I think BPF programs are going to be hard to translate into hardware
for most devices. The problem is the BPF programs in general lack
structure. A parse graph would be much more friendly for hardware or
at minimum the BPF program would need to be a some sort of
well-structured program so a driver could turn that into a parse graph.
.John
next prev parent reply other threads:[~2015-12-02 23:42 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 [this message]
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
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=565F8059.3010101@gmail.com \
--to=john.fastabend@gmail.com \
--cc=anjali.singhai@intel.com \
--cc=davem@davemloft.net \
--cc=hannes@stressinduktion.org \
--cc=jesse@kernel.org \
--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).