From: David Ahern <dsahern@gmail.com>
To: netdev@vger.kernel.org, borkmann@iogearbox.net, ast@kernel.org
Cc: davem@davemloft.net, shm@cumulusnetworks.com,
roopa@cumulusnetworks.com, brouer@redhat.com, toke@toke.dk,
john.fastabend@gmail.com, David Ahern <dsahern@gmail.com>
Subject: [bpf-next v1 0/9] bpf: Add helper to do FIB lookups
Date: Wed, 2 May 2018 20:53:10 -0700 [thread overview]
Message-ID: <20180503035319.18290-1-dsahern@gmail.com> (raw)
Provide a helper for doing a FIB and neighbor lookup in the kernel
tables from an XDP program. The helper provides a fastpath for forwarding
packets. If the packet is a local delivery or for any reason is not a
simple lookup and forward, the packet is expected to continue up the stack
for full processing.
The response from a FIB and neighbor lookup is either the egress index
with the bpf_fib_lookup struct filled in with dmac and gateway or
0 meaning the packet should continue up the stack. In time we can
visit this to return the FIB lookup result errno if it is one of the
special RTN_'s such as RTN_BLACKHOLE (-EINVAL) so that the XDP
programs can do an early drop if desired.
Patches 1-6 do some more refactoring to IPv6 with the end goal of
extracting a FIB lookup function that aligns with fib_lookup for IPv4,
basically returning a fib6_info without creating a dst based entry.
Patch 7 adds lookup functions to the ipv6 stub. These are needed since
bpf is built into the kernel and ipv6 may not be built or loaded.
Patch 8 adds the bpf helper and 9 adds a sample program.
v1
- updated commit messages and cover letter
- added comment to sample program noting lack of verification on
egress device supporting XDP
RFC v2
- fixed use of foward helper from cls_act as noted by Daniel
- in patch 1 rename fib6_lookup_1 as well for consistency
David Ahern (9):
net/ipv6: Rename fib6_lookup to fib6_node_lookup
net/ipv6: Rename rt6_multipath_select
net/ipv6: Extract table lookup from ip6_pol_route
net/ipv6: Refactor fib6_rule_action
net/ipv6: Add fib6_lookup
net/ipv6: Update fib6 tracepoint to take fib6_info
net/ipv6: Add fib lookup stubs for use in bpf helper
bpf: Provide helper to do lookups in kernel FIB table
samples/bpf: Add example of ipv4 and ipv6 forwarding in XDP
include/net/addrconf.h | 14 ++
include/net/ip6_fib.h | 21 ++-
include/trace/events/fib6.h | 14 +-
include/uapi/linux/bpf.h | 83 +++++++++-
net/core/filter.c | 263 ++++++++++++++++++++++++++++++
net/ipv6/addrconf_core.c | 33 +++-
net/ipv6/af_inet6.c | 6 +-
net/ipv6/fib6_rules.c | 138 +++++++++++++---
net/ipv6/ip6_fib.c | 21 ++-
net/ipv6/route.c | 76 +++++----
samples/bpf/Makefile | 4 +
samples/bpf/xdp_fwd_kern.c | 113 +++++++++++++
samples/bpf/xdp_fwd_user.c | 136 +++++++++++++++
tools/testing/selftests/bpf/bpf_helpers.h | 3 +
14 files changed, 850 insertions(+), 75 deletions(-)
create mode 100644 samples/bpf/xdp_fwd_kern.c
create mode 100644 samples/bpf/xdp_fwd_user.c
--
2.11.0
next reply other threads:[~2018-05-03 3:53 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-03 3:53 David Ahern [this message]
2018-05-03 3:53 ` [bpf-next v1 1/9] net/ipv6: Rename fib6_lookup to fib6_node_lookup David Ahern
2018-05-03 3:53 ` [bpf-next v1 2/9] net/ipv6: Rename rt6_multipath_select David Ahern
2018-05-03 3:53 ` [bpf-next v1 3/9] net/ipv6: Extract table lookup from ip6_pol_route David Ahern
2018-05-03 3:53 ` [bpf-next v1 4/9] net/ipv6: Refactor fib6_rule_action David Ahern
2018-05-03 3:53 ` [bpf-next v1 5/9] net/ipv6: Add fib6_lookup David Ahern
2018-05-03 3:53 ` [bpf-next v1 6/9] net/ipv6: Update fib6 tracepoint to take fib6_info David Ahern
2018-05-03 3:53 ` [bpf-next v1 7/9] net/ipv6: Add fib lookup stubs for use in bpf helper David Ahern
2018-05-03 3:53 ` [bpf-next v1 8/9] bpf: Provide helper to do lookups in kernel FIB table David Ahern
2018-05-04 0:45 ` Daniel Borkmann
2018-05-04 0:47 ` David Ahern
2018-05-03 3:53 ` [bpf-next v1 9/9] samples/bpf: Add example of ipv4 and ipv6 forwarding in XDP David Ahern
2018-05-08 5:33 ` [lkp-robot] [samples/bpf] a0bad08afa: kernel_selftests.test_tcpbpf_user.fail kernel test robot
2018-05-08 5:33 ` kernel test robot
2018-05-03 15:40 ` [bpf-next v1 0/9] bpf: Add helper to do FIB lookups David Miller
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=20180503035319.18290-1-dsahern@gmail.com \
--to=dsahern@gmail.com \
--cc=ast@kernel.org \
--cc=borkmann@iogearbox.net \
--cc=brouer@redhat.com \
--cc=davem@davemloft.net \
--cc=john.fastabend@gmail.com \
--cc=netdev@vger.kernel.org \
--cc=roopa@cumulusnetworks.com \
--cc=shm@cumulusnetworks.com \
--cc=toke@toke.dk \
/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.