From: Shmulik Ladkani <shmulik@metanetworks.com>
To: Daniel Borkmann <daniel@iogearbox.net>
Cc: bpf@vger.kernel.org, Alexei Starovoitov <ast@kernel.org>,
Andrii Nakryiko <andrii@kernel.org>,
Shmulik Ladkani <shmulik.ladkani@gmail.com>
Subject: Re: [PATCH bpf-next 1/2] bpf: Support getting tunnel flags
Date: Thu, 1 Sep 2022 09:10:40 +0300 [thread overview]
Message-ID: <20220901091040.2fcd73af@blondie> (raw)
In-Reply-To: <3b4e74bb-5ede-e773-69e6-6c272ffa2459@iogearbox.net>
On Wed, 31 Aug 2022 22:46:15 +0200
Daniel Borkmann <daniel@iogearbox.net> wrote:
> The bpf_skb_set_tunnel_key() helper has a number of flags we pass in, e.g.
> BPF_F_ZERO_CSUM_TX, BPF_F_DONT_FRAGMENT, BPF_F_SEQ_NUMBER, and then based on
> those flags we set:
>
> [...]
> info->key.tun_flags = TUNNEL_KEY | TUNNEL_CSUM | TUNNEL_NOCACHE;
> if (flags & BPF_F_DONT_FRAGMENT)
> info->key.tun_flags |= TUNNEL_DONT_FRAGMENT;
> if (flags & BPF_F_ZERO_CSUM_TX)
> info->key.tun_flags &= ~TUNNEL_CSUM;
> if (flags & BPF_F_SEQ_NUMBER)
> info->key.tun_flags |= TUNNEL_SEQ;
> [...]
>
> Should we similarly only expose those which are interesting/relevant to BPF
> program authors as a __u16 tunnel_flags and not the whole set? Which ones
> do you have a need for? TUNNEL_SEQ, TUNNEL_CSUM, TUNNEL_KEY, and then the
> TUNNEL_OPTIONS_PRESENT?
Indeed, I noticed this and considered various approaches:
1. Convert the "interesting" internal TUNNEL_xxx flags back to BPF_F_yyy
and place into the new 'tunnel_flags' field.
This has 2 drawbacks:
- The BPF_F_yyy flags are from *set_tunnel_key* enumeration space,
e.g. BPF_F_ZERO_CSUM_TX.
I find it awkward that it is "returned" into tunnel_flags from a
*get_tunnel_key* call.
- Not all "interesting" TUNNEL_xxx flags can be mapped to existing
BPF_F_yyy flags, and it doesn't make sense to create new BPF_F_yyy
flags just for purposes of the returned tunnel_flags.
2. Place key.tun_flags into 'tunnel_flags' but mask them, keeping only
"interesting" flags.
That's ok, but the drawback is that what's "intersting" for my
usecase might be limiting for other usecases.
Therefore I decided to expose what's in key.tun_flags *as is*, which seems
most flexible. The bpf user can just choose to ingore bits he's not
interested in. The TUNNEL_xxx are uapi, so no harm exposing them back in
the get_tunnel_key call.
WDYT?
Best,
Shmulik
next prev parent reply other threads:[~2022-09-01 6:10 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-08-31 14:40 [PATCH bpf-next 1/2] bpf: Support getting tunnel flags Shmulik Ladkani
2022-08-31 14:40 ` [PATCH bpf-next 2/2] selftests/bpf: Amend test_tunnel to exercise BPF_F_TUNINFO_FLAGS Shmulik Ladkani
2022-08-31 20:46 ` [PATCH bpf-next 1/2] bpf: Support getting tunnel flags Daniel Borkmann
2022-09-01 6:10 ` Shmulik Ladkani [this message]
2022-09-02 13:26 ` Daniel Borkmann
2022-09-02 13:30 ` patchwork-bot+netdevbpf
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=20220901091040.2fcd73af@blondie \
--to=shmulik@metanetworks.com \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=shmulik.ladkani@gmail.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