From: Edward Cree <ecree@solarflare.com>
To: David Miller <davem@davemloft.net>
Cc: <herbert@gondor.apana.org.au>, <alexander.duyck@gmail.com>,
<aduyck@mirantis.com>, <tom@herbertland.com>, <jesse@kernel.org>,
<edumazet@google.com>, <netdev@vger.kernel.org>
Subject: Re: [net PATCH v2 2/2] ipv4/GRO: Make GRO conform to RFC 6864
Date: Wed, 6 Apr 2016 12:21:58 +0100 [thread overview]
Message-ID: <5704F156.8030804@solarflare.com> (raw)
In-Reply-To: <20160405.194517.431351466693438399.davem@davemloft.net>
On 06/04/16 00:45, David Miller wrote:
> From: Edward Cree <ecree@solarflare.com>
> Date: Tue, 5 Apr 2016 16:07:49 +0100
>
>> On the gripping hand, I feel like GRO+TSO is the wrong model for
>> speeding up forwarding/routing workloads. Instead we should be
>> looking into having lists of SKBs traverse the stack together,
>> splitting the list whenever e.g. the destination changes.
> "Destination" is a very complicated beast. It's not just a
> destination IP address.
>
> It's not even just a full saddr/daddr/TOS triplet.
>
> Packets can be forwarded around based upon any key whatsoever in the
> headers. Netfilter can mangle them based upon arbitrary bits in the
> packet, as can the packet scheduler classifier actions.
>
> It's therefore not profitable to try this at all, it's completely
> pointless unless all the keys match up exactly.
Possibly I wasn't completely clear (or maybe I was and I'm just
wrong...), but I meant that _each layer_ in the stack would split the
list whenever it wants to treat two packets differently. Whether
that's a protocol receive handler, or a netfilter or tc operation.
Obviously if you want to decide at the _beginning_ whether "all the
keys match", then you do essentially need GRO's flow-matching logic.
But even then, I find myself wondering if having GRO coalesce the
segments into a superpacket is really better than having it just make
lists of segments, and have that list traverse the stack as a single
entity. That way lossless resegmentation remains easy. But I suppose
that could make life difficult for things like BPF, if they want to
act upon the superframe (because we haven't built it). If instead
they act on each of the segments, we might get different actions for
each segment and that might also be awkward; so you'd still need this
concept of 'any layer in the stack can decide to split lists up'.
-Ed
next prev parent reply other threads:[~2016-04-06 11:24 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-04 16:27 [net PATCH v2 0/2] Fixes for GRO and GRE tunnels Alexander Duyck
2016-04-04 16:28 ` [net PATCH v2 1/2] GRE: Disable segmentation offloads w/ CSUM and we are encapsulated via FOU Alexander Duyck
2016-04-04 16:31 ` [net PATCH v2 2/2] ipv4/GRO: Make GRO conform to RFC 6864 Alexander Duyck
2016-04-05 0:38 ` subashab
2016-04-05 3:44 ` Herbert Xu
2016-04-05 4:26 ` Alexander Duyck
2016-04-05 4:32 ` Herbert Xu
2016-04-05 15:07 ` Edward Cree
2016-04-05 15:36 ` Tom Herbert
2016-04-05 17:06 ` Edward Cree
2016-04-05 17:38 ` Tom Herbert
2016-04-06 0:04 ` Marcelo Ricardo Leitner
2016-04-05 23:45 ` David Miller
2016-04-06 11:21 ` Edward Cree [this message]
2016-04-06 13:53 ` Tom Herbert
2016-04-06 14:26 ` Edward Cree
2016-04-06 15:39 ` Eric Dumazet
2016-04-06 15:55 ` Edward Cree
2016-04-06 16:03 ` Eric Dumazet
2016-04-06 15:43 ` David Miller
2016-04-06 17:42 ` Tom Herbert
2016-04-06 19:30 ` David Miller
2016-04-05 15:52 ` Alexander Duyck
2016-04-05 16:30 ` Eric Dumazet
2016-04-05 16:45 ` Alexander Duyck
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=5704F156.8030804@solarflare.com \
--to=ecree@solarflare.com \
--cc=aduyck@mirantis.com \
--cc=alexander.duyck@gmail.com \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=herbert@gondor.apana.org.au \
--cc=jesse@kernel.org \
--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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.