From: Jesper Dangaard Brouer <brouer@redhat.com>
To: John Fastabend <john.fastabend@gmail.com>
Cc: bpf@vger.kernel.org, netdev@vger.kernel.org,
Daniel Borkmann <borkmann@iogearbox.net>,
Alexei Starovoitov <alexei.starovoitov@gmail.com>,
maze@google.com, lmb@cloudflare.com, shaun@tigera.io,
Lorenzo Bianconi <lorenzo@kernel.org>,
marek@cloudflare.com, Jakub Kicinski <kuba@kernel.org>,
eyal.birger@gmail.com, colrack@gmail.com, brouer@redhat.com
Subject: Re: [PATCH bpf-next V11 5/7] bpf: drop MTU check when doing TC-BPF redirect to ingress
Date: Thu, 14 Jan 2021 17:14:29 +0100 [thread overview]
Message-ID: <20210114171429.1402ca3d@carbon> (raw)
In-Reply-To: <600008e5e2e80_1eeef20852@john-XPS-13-9370.notmuch>
On Thu, 14 Jan 2021 01:03:33 -0800
John Fastabend <john.fastabend@gmail.com> wrote:
> Jesper Dangaard Brouer wrote:
> > The use-case for dropping the MTU check when TC-BPF does redirect to
> > ingress, is described by Eyal Birger in email[0]. The summary is the
> > ability to increase packet size (e.g. with IPv6 headers for NAT64) and
> > ingress redirect packet and let normal netstack fragment packet as needed.
> >
> > [0] https://lore.kernel.org/netdev/CAHsH6Gug-hsLGHQ6N0wtixdOa85LDZ3HNRHVd0opR=19Qo4W4Q@mail.gmail.com/
> >
> > V9:
> > - Make net_device "up" (IFF_UP) check explicit in skb_do_redirect
> >
> > V4:
> > - Keep net_device "up" (IFF_UP) check.
> > - Adjustment to handle bpf_redirect_peer() helper
> >
> > Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
> > ---
> > include/linux/netdevice.h | 31 +++++++++++++++++++++++++++++--
> > net/core/dev.c | 19 ++-----------------
> > net/core/filter.c | 14 +++++++++++---
> > 3 files changed, 42 insertions(+), 22 deletions(-)
> >
>
> [...]
>
> > diff --git a/net/core/filter.c b/net/core/filter.c
> > index 3f2e593244ca..1908800b671c 100644
> > --- a/net/core/filter.c
> > +++ b/net/core/filter.c
> > @@ -2083,13 +2083,21 @@ static const struct bpf_func_proto bpf_csum_level_proto = {
> >
> > static inline int __bpf_rx_skb(struct net_device *dev, struct sk_buff *skb)
> > {
> > - return dev_forward_skb(dev, skb);
>
> > + int ret = ____dev_forward_skb(dev, skb, false);
> > +
> > + if (likely(!ret)) {
> > + skb->protocol = eth_type_trans(skb, dev);
> > + skb_postpull_rcsum(skb, eth_hdr(skb), ETH_HLEN);
> > + ret = netif_rx(skb);
> > + }
> > +
> > + return ret;
>
> How about putting above block into a dev.c routine call it
>
> dev_forward_skb_nomtu(...)
>
> or something like that. Then we keep this code next to its pair
> with mtu check, dev_forward_skb().
>
> dev_forward_skb() also uses netif_rx_internal() looks like maybe we should
> just do the same here?
I love the idea. I'm coding it up and it looks much nicer. And yes we
obviously can use netif_rx_internal() once the code in core/dev.c
--
Best regards,
Jesper Dangaard Brouer
MSc.CS, Principal Kernel Engineer at Red Hat
LinkedIn: http://www.linkedin.com/in/brouer
next prev parent reply other threads:[~2021-01-14 16:16 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-12 17:45 [PATCH bpf-next V11 0/7] bpf: New approach for BPF MTU handling Jesper Dangaard Brouer
2021-01-12 17:45 ` [PATCH bpf-next V11 1/7] bpf: Remove MTU check in __bpf_skb_max_len Jesper Dangaard Brouer
2021-01-14 8:18 ` John Fastabend
2021-01-12 17:45 ` [PATCH bpf-next V11 2/7] bpf: fix bpf_fib_lookup helper MTU check for SKB ctx Jesper Dangaard Brouer
2021-01-12 17:45 ` [PATCH bpf-next V11 3/7] bpf: bpf_fib_lookup return MTU value as output when looked up Jesper Dangaard Brouer
2021-01-12 17:45 ` [PATCH bpf-next V11 4/7] bpf: add BPF-helper for MTU checking Jesper Dangaard Brouer
2021-01-12 19:23 ` Andrii Nakryiko
2021-01-14 14:52 ` Jesper Dangaard Brouer
2021-01-14 15:33 ` Yonghong Song
2021-01-13 23:07 ` Daniel Borkmann
2021-01-14 14:36 ` Jesper Dangaard Brouer
2021-01-14 22:28 ` Daniel Borkmann
2021-01-18 11:04 ` Jesper Dangaard Brouer
2021-01-12 17:45 ` [PATCH bpf-next V11 5/7] bpf: drop MTU check when doing TC-BPF redirect to ingress Jesper Dangaard Brouer
2021-01-14 9:03 ` John Fastabend
2021-01-14 16:14 ` Jesper Dangaard Brouer [this message]
2021-01-12 17:45 ` [PATCH bpf-next V11 6/7] selftests/bpf: use bpf_check_mtu in selftest test_cls_redirect Jesper Dangaard Brouer
2021-01-12 17:45 ` [PATCH bpf-next V11 7/7] bpf/selftests: tests using bpf_check_mtu BPF-helper Jesper Dangaard Brouer
2021-01-12 19:29 ` Andrii Nakryiko
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=20210114171429.1402ca3d@carbon \
--to=brouer@redhat.com \
--cc=alexei.starovoitov@gmail.com \
--cc=borkmann@iogearbox.net \
--cc=bpf@vger.kernel.org \
--cc=colrack@gmail.com \
--cc=eyal.birger@gmail.com \
--cc=john.fastabend@gmail.com \
--cc=kuba@kernel.org \
--cc=lmb@cloudflare.com \
--cc=lorenzo@kernel.org \
--cc=marek@cloudflare.com \
--cc=maze@google.com \
--cc=netdev@vger.kernel.org \
--cc=shaun@tigera.io \
/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.