From: Willem de Bruijn <willemdebruijn.kernel@gmail.com>
To: netdev@vger.kernel.org
Cc: ast@kernel.org, daniel@iogearbox.net, sdf@google.com,
posk@google.com, Willem de Bruijn <willemb@google.com>
Subject: [PATCH bpf-next 00/13] bpf tc tunneling
Date: Wed, 20 Mar 2019 10:49:31 -0400 [thread overview]
Message-ID: <20190320144944.147862-1-willemdebruijn.kernel@gmail.com> (raw)
From: Willem de Bruijn <willemb@google.com>
BPF allows for dynamic tunneling, choosing the tunnel destination and
features on-demand. Extend bpf_skb_adjust_room to allow for efficient
tunneling at the TC hooks.
Patch 1
is a performance optimization, avoiding an unnecessary unclone
for the TCP hot path.
Patches 2..6
introduce a regression test. These can be squashed, but the code is
arguably more readable when gradually expanding the feature set.
Patch 7
is a performance optimization, avoid copying network headers
that are going to be overwritten. This also simplifies the bpf
program.
Patch 8
reenables bpf_skb_adjust_room for UDP packets.
Patch 9
add support for gso packets, which require additional metadata set
in the skb. It does this through new flags to bpf_skb_adjust_room.
other alternatives considered:
- individual bpf_{ipip, gre, udp, ..}_encap functions that combine
adjust room and bpf_skb_store_bytes.
- new bpf_encap_fixup function called after bpf_skb_adjust_room and
bpf_skb_store_bytes that parses the tunnel and sets the metadata.
Patches 10..13
expand the regression test to make use of the new features and
enable the GSO testcases.
these could be interleaved with each of the new features, were it
not for the separate sync bpf.h patch.
Willem de Bruijn (13):
bpf: in bpf_skb_adjust_room avoid copy in tx fast path
selftests/bpf: bpf tunnel encap test
selftests/bpf: expand bpf tunnel test with decap
selftests/bpf: expand bpf tunnel test to ipv6
selftests/bpf: extend bpf tunnel test with gre
selftests/bpf: extend bpf tunnel test with tso
bpf: add bpf_skb_adjust_room mode BPF_ADJ_ROOM_MAC
bpf: add bpf_skb_adjust_room flag BPF_F_ADJ_ROOM_FIXED_GSO
bpf: add bpf_skb_adjust_room encap flags
bpf: Sync bpf.h to tools
selftests/bpf: convert bpf tunnel test to BPF_ADJ_ROOM_MAC
selftests/bpf: convert bpf tunnel test to BPF_F_ADJ_ROOM_FIXED_GSO
selftests/bpf: convert bpf tunnel test to encap modes
include/uapi/linux/bpf.h | 22 +-
net/core/filter.c | 124 +++++++--
tools/include/uapi/linux/bpf.h | 22 +-
tools/testing/selftests/bpf/Makefile | 3 +-
tools/testing/selftests/bpf/config | 2 +
.../selftests/bpf/progs/test_tc_tunnel.c | 261 ++++++++++++++++++
tools/testing/selftests/bpf/test_tc_tunnel.sh | 178 ++++++++++++
7 files changed, 580 insertions(+), 32 deletions(-)
create mode 100644 tools/testing/selftests/bpf/progs/test_tc_tunnel.c
create mode 100755 tools/testing/selftests/bpf/test_tc_tunnel.sh
--
2.21.0.225.g810b269d1ac-goog
next reply other threads:[~2019-03-20 14:49 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-03-20 14:49 Willem de Bruijn [this message]
2019-03-20 14:49 ` [PATCH bpf-next 01/13] bpf: in bpf_skb_adjust_room avoid copy in tx fast path Willem de Bruijn
2019-03-20 14:49 ` [PATCH bpf-next 02/13] selftests/bpf: bpf tunnel encap test Willem de Bruijn
2019-03-20 14:49 ` [PATCH bpf-next 03/13] selftests/bpf: expand bpf tunnel test with decap Willem de Bruijn
2019-03-20 14:49 ` [PATCH bpf-next 04/13] selftests/bpf: expand bpf tunnel test to ipv6 Willem de Bruijn
2019-03-20 14:49 ` [PATCH bpf-next 05/13] selftests/bpf: extend bpf tunnel test with gre Willem de Bruijn
2019-03-20 14:49 ` [PATCH bpf-next 06/13] selftests/bpf: extend bpf tunnel test with tso Willem de Bruijn
2019-03-20 14:49 ` [PATCH bpf-next 07/13] bpf: add bpf_skb_adjust_room mode BPF_ADJ_ROOM_MAC Willem de Bruijn
2019-03-20 14:49 ` [PATCH bpf-next 08/13] bpf: add bpf_skb_adjust_room flag BPF_F_ADJ_ROOM_FIXED_GSO Willem de Bruijn
2019-03-21 13:42 ` Alan Maguire
2019-03-21 14:00 ` Willem de Bruijn
2019-03-20 14:49 ` [PATCH bpf-next 09/13] bpf: add bpf_skb_adjust_room encap flags Willem de Bruijn
2019-03-20 15:51 ` Alan Maguire
2019-03-20 18:10 ` Willem de Bruijn
2019-03-21 3:13 ` Alexei Starovoitov
2019-03-21 13:25 ` Willem de Bruijn
2019-03-20 14:49 ` [PATCH bpf-next 10/13] bpf: Sync bpf.h to tools Willem de Bruijn
2019-03-20 14:56 ` Soheil Hassas Yeganeh
2019-03-20 14:49 ` [PATCH bpf-next 11/13] selftests/bpf: convert bpf tunnel test to BPF_ADJ_ROOM_MAC Willem de Bruijn
2019-03-20 14:49 ` [PATCH bpf-next 12/13] selftests/bpf: convert bpf tunnel test to BPF_F_ADJ_ROOM_FIXED_GSO Willem de Bruijn
2019-03-20 14:49 ` [PATCH bpf-next 13/13] selftests/bpf: convert bpf tunnel test to encap modes Willem de Bruijn
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=20190320144944.147862-1-willemdebruijn.kernel@gmail.com \
--to=willemdebruijn.kernel@gmail.com \
--cc=ast@kernel.org \
--cc=daniel@iogearbox.net \
--cc=netdev@vger.kernel.org \
--cc=posk@google.com \
--cc=sdf@google.com \
--cc=willemb@google.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).