* [bpf-next v3 PATCH 0/3] bpf: improvements to xdp_fwd sample @ 2019-08-08 16:17 Jesper Dangaard Brouer 2019-08-08 16:17 ` [bpf-next v3 PATCH 1/3] samples/bpf: xdp_fwd rename devmap name to be xdp_tx_ports Jesper Dangaard Brouer ` (3 more replies) 0 siblings, 4 replies; 9+ messages in thread From: Jesper Dangaard Brouer @ 2019-08-08 16:17 UTC (permalink / raw) To: netdev, Daniel Borkmann, Alexei Starovoitov Cc: a.s.protopopov, dsahern, Toke Høiland-Jørgensen, ys114321, Jesper Dangaard Brouer V3: Hopefully fixed all issues point out by Yonghong Song V2: Addressed issues point out by Yonghong Song - Please ACK patch 2/3 again - Added ACKs and reviewed-by to other patches This patchset is focused on improvements for XDP forwarding sample named xdp_fwd, which leverage the existing FIB routing tables as described in LPC2018[1] talk by David Ahern. The primary motivation is to illustrate how Toke's recent work improves usability of XDP_REDIRECT via lookups in devmap. The other patches are to help users understand the sample. I have more improvements to xdp_fwd, but those might requires changes to libbpf. Thus, sending these patches first as they are isolated. [1] http://vger.kernel.org/lpc-networking2018.html#session-1 --- Jesper Dangaard Brouer (3): samples/bpf: xdp_fwd rename devmap name to be xdp_tx_ports samples/bpf: make xdp_fwd more practically usable via devmap lookup samples/bpf: xdp_fwd explain bpf_fib_lookup return codes samples/bpf/xdp_fwd_kern.c | 39 ++++++++++++++++++++++++++++++--------- samples/bpf/xdp_fwd_user.c | 35 +++++++++++++++++++++++------------ 2 files changed, 53 insertions(+), 21 deletions(-) -- ^ permalink raw reply [flat|nested] 9+ messages in thread
* [bpf-next v3 PATCH 1/3] samples/bpf: xdp_fwd rename devmap name to be xdp_tx_ports 2019-08-08 16:17 [bpf-next v3 PATCH 0/3] bpf: improvements to xdp_fwd sample Jesper Dangaard Brouer @ 2019-08-08 16:17 ` Jesper Dangaard Brouer 2019-08-08 19:16 ` Toke Høiland-Jørgensen 2019-08-08 16:17 ` [bpf-next v3 PATCH 2/3] samples/bpf: make xdp_fwd more practically usable via devmap lookup Jesper Dangaard Brouer ` (2 subsequent siblings) 3 siblings, 1 reply; 9+ messages in thread From: Jesper Dangaard Brouer @ 2019-08-08 16:17 UTC (permalink / raw) To: netdev, Daniel Borkmann, Alexei Starovoitov Cc: a.s.protopopov, dsahern, Toke Høiland-Jørgensen, ys114321, Jesper Dangaard Brouer The devmap name 'tx_port' came from a copy-paste from xdp_redirect_map which only have a single TX port. Change name to xdp_tx_ports to make it more descriptive. Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com> Reviewed-by: David Ahern <dsahern@gmail.com> Acked-by: Yonghong Song <yhs@fb.com> --- samples/bpf/xdp_fwd_kern.c | 5 +++-- samples/bpf/xdp_fwd_user.c | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/samples/bpf/xdp_fwd_kern.c b/samples/bpf/xdp_fwd_kern.c index a7e94e7ff87d..e6ffc4ea06f4 100644 --- a/samples/bpf/xdp_fwd_kern.c +++ b/samples/bpf/xdp_fwd_kern.c @@ -23,7 +23,8 @@ #define IPV6_FLOWINFO_MASK cpu_to_be32(0x0FFFFFFF) -struct bpf_map_def SEC("maps") tx_port = { +/* For TX-traffic redirect requires net_device ifindex to be in this devmap */ +struct bpf_map_def SEC("maps") xdp_tx_ports = { .type = BPF_MAP_TYPE_DEVMAP, .key_size = sizeof(int), .value_size = sizeof(int), @@ -117,7 +118,7 @@ static __always_inline int xdp_fwd_flags(struct xdp_md *ctx, u32 flags) memcpy(eth->h_dest, fib_params.dmac, ETH_ALEN); memcpy(eth->h_source, fib_params.smac, ETH_ALEN); - return bpf_redirect_map(&tx_port, fib_params.ifindex, 0); + return bpf_redirect_map(&xdp_tx_ports, fib_params.ifindex, 0); } return XDP_PASS; diff --git a/samples/bpf/xdp_fwd_user.c b/samples/bpf/xdp_fwd_user.c index 5b46ee12c696..ba012d9f93dd 100644 --- a/samples/bpf/xdp_fwd_user.c +++ b/samples/bpf/xdp_fwd_user.c @@ -113,7 +113,7 @@ int main(int argc, char **argv) return 1; } map_fd = bpf_map__fd(bpf_object__find_map_by_name(obj, - "tx_port")); + "xdp_tx_ports")); if (map_fd < 0) { printf("map not found: %s\n", strerror(map_fd)); return 1; ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [bpf-next v3 PATCH 1/3] samples/bpf: xdp_fwd rename devmap name to be xdp_tx_ports 2019-08-08 16:17 ` [bpf-next v3 PATCH 1/3] samples/bpf: xdp_fwd rename devmap name to be xdp_tx_ports Jesper Dangaard Brouer @ 2019-08-08 19:16 ` Toke Høiland-Jørgensen 0 siblings, 0 replies; 9+ messages in thread From: Toke Høiland-Jørgensen @ 2019-08-08 19:16 UTC (permalink / raw) To: Jesper Dangaard Brouer, netdev, Daniel Borkmann, Alexei Starovoitov Cc: a.s.protopopov, dsahern, ys114321, Jesper Dangaard Brouer Jesper Dangaard Brouer <brouer@redhat.com> writes: > The devmap name 'tx_port' came from a copy-paste from xdp_redirect_map > which only have a single TX port. Change name to xdp_tx_ports > to make it more descriptive. > > Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com> > Reviewed-by: David Ahern <dsahern@gmail.com> > Acked-by: Yonghong Song <yhs@fb.com> Reviewed-by: Toke Høiland-Jørgensen <toke@redhat.com> ^ permalink raw reply [flat|nested] 9+ messages in thread
* [bpf-next v3 PATCH 2/3] samples/bpf: make xdp_fwd more practically usable via devmap lookup 2019-08-08 16:17 [bpf-next v3 PATCH 0/3] bpf: improvements to xdp_fwd sample Jesper Dangaard Brouer 2019-08-08 16:17 ` [bpf-next v3 PATCH 1/3] samples/bpf: xdp_fwd rename devmap name to be xdp_tx_ports Jesper Dangaard Brouer @ 2019-08-08 16:17 ` Jesper Dangaard Brouer 2019-08-08 19:17 ` Toke Høiland-Jørgensen 2019-08-08 19:46 ` Y Song 2019-08-08 16:17 ` [bpf-next v3 PATCH 3/3] samples/bpf: xdp_fwd explain bpf_fib_lookup return codes Jesper Dangaard Brouer 2019-08-09 16:08 ` [bpf-next v3 PATCH 0/3] bpf: improvements to xdp_fwd sample Daniel Borkmann 3 siblings, 2 replies; 9+ messages in thread From: Jesper Dangaard Brouer @ 2019-08-08 16:17 UTC (permalink / raw) To: netdev, Daniel Borkmann, Alexei Starovoitov Cc: a.s.protopopov, dsahern, Toke Høiland-Jørgensen, ys114321, Jesper Dangaard Brouer This address the TODO in samples/bpf/xdp_fwd_kern.c, which points out that the chosen egress index should be checked for existence in the devmap. This can now be done via taking advantage of Toke's work in commit 0cdbb4b09a06 ("devmap: Allow map lookups from eBPF"). This change makes xdp_fwd more practically usable, as this allows for a mixed environment, where IP-forwarding fallback to network stack, if the egress device isn't configured to use XDP. Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com> Reviewed-by: David Ahern <dsahern@gmail.com> --- samples/bpf/xdp_fwd_kern.c | 17 +++++++++++------ samples/bpf/xdp_fwd_user.c | 33 ++++++++++++++++++++++----------- 2 files changed, 33 insertions(+), 17 deletions(-) diff --git a/samples/bpf/xdp_fwd_kern.c b/samples/bpf/xdp_fwd_kern.c index e6ffc4ea06f4..a43d6953c054 100644 --- a/samples/bpf/xdp_fwd_kern.c +++ b/samples/bpf/xdp_fwd_kern.c @@ -104,13 +104,18 @@ static __always_inline int xdp_fwd_flags(struct xdp_md *ctx, u32 flags) rc = bpf_fib_lookup(ctx, &fib_params, sizeof(fib_params), flags); - /* verify egress index has xdp support - * TO-DO bpf_map_lookup_elem(&tx_port, &key) fails with - * cannot pass map_type 14 into func bpf_map_lookup_elem#1: - * NOTE: without verification that egress index supports XDP - * forwarding packets are dropped. - */ if (rc == 0) { + /* Verify egress index has been configured as TX-port. + * (Note: User can still have inserted an egress ifindex that + * doesn't support XDP xmit, which will result in packet drops). + * + * Note: lookup in devmap supported since 0cdbb4b09a0. + * If not supported will fail with: + * cannot pass map_type 14 into func bpf_map_lookup_elem#1: + */ + if (!bpf_map_lookup_elem(&xdp_tx_ports, &fib_params.ifindex)) + return XDP_PASS; + if (h_proto == htons(ETH_P_IP)) ip_decrease_ttl(iph); else if (h_proto == htons(ETH_P_IPV6)) diff --git a/samples/bpf/xdp_fwd_user.c b/samples/bpf/xdp_fwd_user.c index ba012d9f93dd..97ff1dad7669 100644 --- a/samples/bpf/xdp_fwd_user.c +++ b/samples/bpf/xdp_fwd_user.c @@ -27,14 +27,20 @@ #include "libbpf.h" #include <bpf/bpf.h> - -static int do_attach(int idx, int fd, const char *name) +static int do_attach(int idx, int prog_fd, int map_fd, const char *name) { int err; - err = bpf_set_link_xdp_fd(idx, fd, 0); - if (err < 0) + err = bpf_set_link_xdp_fd(idx, prog_fd, 0); + if (err < 0) { printf("ERROR: failed to attach program to %s\n", name); + return err; + } + + /* Adding ifindex as a possible egress TX port */ + err = bpf_map_update_elem(map_fd, &idx, &idx, 0); + if (err) + printf("ERROR: failed using device %s as TX-port\n", name); return err; } @@ -47,6 +53,9 @@ static int do_detach(int idx, const char *name) if (err < 0) printf("ERROR: failed to detach program from %s\n", name); + /* TODO: Remember to cleanup map, when adding use of shared map + * bpf_map_delete_elem((map_fd, &idx); + */ return err; } @@ -67,10 +76,10 @@ int main(int argc, char **argv) }; const char *prog_name = "xdp_fwd"; struct bpf_program *prog; + int prog_fd, map_fd = -1; char filename[PATH_MAX]; struct bpf_object *obj; int opt, i, idx, err; - int prog_fd, map_fd; int attach = 1; int ret = 0; @@ -103,8 +112,14 @@ int main(int argc, char **argv) return 1; } - if (bpf_prog_load_xattr(&prog_load_attr, &obj, &prog_fd)) + err = bpf_prog_load_xattr(&prog_load_attr, &obj, &prog_fd); + if (err) { + printf("Does kernel support devmap lookup?\n"); + /* If not, the error message will be: + * "cannot pass map_type 14 into func bpf_map_lookup_elem#1" + */ return 1; + } prog = bpf_object__find_program_by_title(obj, prog_name); prog_fd = bpf_program__fd(prog); @@ -119,10 +134,6 @@ int main(int argc, char **argv) return 1; } } - if (attach) { - for (i = 1; i < 64; ++i) - bpf_map_update_elem(map_fd, &i, &i, 0); - } for (i = optind; i < argc; ++i) { idx = if_nametoindex(argv[i]); @@ -138,7 +149,7 @@ int main(int argc, char **argv) if (err) ret = err; } else { - err = do_attach(idx, prog_fd, argv[i]); + err = do_attach(idx, prog_fd, map_fd, argv[i]); if (err) ret = err; } ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [bpf-next v3 PATCH 2/3] samples/bpf: make xdp_fwd more practically usable via devmap lookup 2019-08-08 16:17 ` [bpf-next v3 PATCH 2/3] samples/bpf: make xdp_fwd more practically usable via devmap lookup Jesper Dangaard Brouer @ 2019-08-08 19:17 ` Toke Høiland-Jørgensen 2019-08-08 19:46 ` Y Song 1 sibling, 0 replies; 9+ messages in thread From: Toke Høiland-Jørgensen @ 2019-08-08 19:17 UTC (permalink / raw) To: Jesper Dangaard Brouer, netdev, Daniel Borkmann, Alexei Starovoitov Cc: a.s.protopopov, dsahern, ys114321, Jesper Dangaard Brouer Jesper Dangaard Brouer <brouer@redhat.com> writes: > This address the TODO in samples/bpf/xdp_fwd_kern.c, which points out > that the chosen egress index should be checked for existence in the > devmap. This can now be done via taking advantage of Toke's work in > commit 0cdbb4b09a06 ("devmap: Allow map lookups from eBPF"). > > This change makes xdp_fwd more practically usable, as this allows for > a mixed environment, where IP-forwarding fallback to network stack, if > the egress device isn't configured to use XDP. > > Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com> > Reviewed-by: David Ahern <dsahern@gmail.com> Reviewed-by: Toke Høiland-Jørgensen <toke@redhat.com> ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [bpf-next v3 PATCH 2/3] samples/bpf: make xdp_fwd more practically usable via devmap lookup 2019-08-08 16:17 ` [bpf-next v3 PATCH 2/3] samples/bpf: make xdp_fwd more practically usable via devmap lookup Jesper Dangaard Brouer 2019-08-08 19:17 ` Toke Høiland-Jørgensen @ 2019-08-08 19:46 ` Y Song 1 sibling, 0 replies; 9+ messages in thread From: Y Song @ 2019-08-08 19:46 UTC (permalink / raw) To: Jesper Dangaard Brouer Cc: netdev, Daniel Borkmann, Alexei Starovoitov, a.s.protopopov, David Ahern, Toke Høiland-Jørgensen On Thu, Aug 8, 2019 at 9:17 AM Jesper Dangaard Brouer <brouer@redhat.com> wrote: > > This address the TODO in samples/bpf/xdp_fwd_kern.c, which points out > that the chosen egress index should be checked for existence in the > devmap. This can now be done via taking advantage of Toke's work in > commit 0cdbb4b09a06 ("devmap: Allow map lookups from eBPF"). > > This change makes xdp_fwd more practically usable, as this allows for > a mixed environment, where IP-forwarding fallback to network stack, if > the egress device isn't configured to use XDP. > > Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com> > Reviewed-by: David Ahern <dsahern@gmail.com> Acked-by: Yonghong Song <yhs@fb.com> > --- > samples/bpf/xdp_fwd_kern.c | 17 +++++++++++------ > samples/bpf/xdp_fwd_user.c | 33 ++++++++++++++++++++++----------- > 2 files changed, 33 insertions(+), 17 deletions(-) > > diff --git a/samples/bpf/xdp_fwd_kern.c b/samples/bpf/xdp_fwd_kern.c > index e6ffc4ea06f4..a43d6953c054 100644 > --- a/samples/bpf/xdp_fwd_kern.c > +++ b/samples/bpf/xdp_fwd_kern.c > @@ -104,13 +104,18 @@ static __always_inline int xdp_fwd_flags(struct xdp_md *ctx, u32 flags) > > rc = bpf_fib_lookup(ctx, &fib_params, sizeof(fib_params), flags); > > - /* verify egress index has xdp support > - * TO-DO bpf_map_lookup_elem(&tx_port, &key) fails with > - * cannot pass map_type 14 into func bpf_map_lookup_elem#1: > - * NOTE: without verification that egress index supports XDP > - * forwarding packets are dropped. > - */ > if (rc == 0) { > + /* Verify egress index has been configured as TX-port. > + * (Note: User can still have inserted an egress ifindex that > + * doesn't support XDP xmit, which will result in packet drops). > + * > + * Note: lookup in devmap supported since 0cdbb4b09a0. > + * If not supported will fail with: > + * cannot pass map_type 14 into func bpf_map_lookup_elem#1: > + */ > + if (!bpf_map_lookup_elem(&xdp_tx_ports, &fib_params.ifindex)) > + return XDP_PASS; > + > if (h_proto == htons(ETH_P_IP)) > ip_decrease_ttl(iph); > else if (h_proto == htons(ETH_P_IPV6)) > diff --git a/samples/bpf/xdp_fwd_user.c b/samples/bpf/xdp_fwd_user.c > index ba012d9f93dd..97ff1dad7669 100644 > --- a/samples/bpf/xdp_fwd_user.c > +++ b/samples/bpf/xdp_fwd_user.c > @@ -27,14 +27,20 @@ > #include "libbpf.h" > #include <bpf/bpf.h> > > - > -static int do_attach(int idx, int fd, const char *name) > +static int do_attach(int idx, int prog_fd, int map_fd, const char *name) > { > int err; > > - err = bpf_set_link_xdp_fd(idx, fd, 0); > - if (err < 0) > + err = bpf_set_link_xdp_fd(idx, prog_fd, 0); > + if (err < 0) { > printf("ERROR: failed to attach program to %s\n", name); > + return err; > + } > + > + /* Adding ifindex as a possible egress TX port */ > + err = bpf_map_update_elem(map_fd, &idx, &idx, 0); > + if (err) > + printf("ERROR: failed using device %s as TX-port\n", name); > > return err; > } > @@ -47,6 +53,9 @@ static int do_detach(int idx, const char *name) > if (err < 0) > printf("ERROR: failed to detach program from %s\n", name); > > + /* TODO: Remember to cleanup map, when adding use of shared map > + * bpf_map_delete_elem((map_fd, &idx); > + */ > return err; > } > > @@ -67,10 +76,10 @@ int main(int argc, char **argv) > }; > const char *prog_name = "xdp_fwd"; > struct bpf_program *prog; > + int prog_fd, map_fd = -1; > char filename[PATH_MAX]; > struct bpf_object *obj; > int opt, i, idx, err; > - int prog_fd, map_fd; > int attach = 1; > int ret = 0; > > @@ -103,8 +112,14 @@ int main(int argc, char **argv) > return 1; > } > > - if (bpf_prog_load_xattr(&prog_load_attr, &obj, &prog_fd)) > + err = bpf_prog_load_xattr(&prog_load_attr, &obj, &prog_fd); > + if (err) { > + printf("Does kernel support devmap lookup?\n"); > + /* If not, the error message will be: > + * "cannot pass map_type 14 into func bpf_map_lookup_elem#1" > + */ > return 1; > + } > > prog = bpf_object__find_program_by_title(obj, prog_name); > prog_fd = bpf_program__fd(prog); > @@ -119,10 +134,6 @@ int main(int argc, char **argv) > return 1; > } > } > - if (attach) { > - for (i = 1; i < 64; ++i) > - bpf_map_update_elem(map_fd, &i, &i, 0); > - } > > for (i = optind; i < argc; ++i) { > idx = if_nametoindex(argv[i]); > @@ -138,7 +149,7 @@ int main(int argc, char **argv) > if (err) > ret = err; > } else { > - err = do_attach(idx, prog_fd, argv[i]); > + err = do_attach(idx, prog_fd, map_fd, argv[i]); > if (err) > ret = err; > } > ^ permalink raw reply [flat|nested] 9+ messages in thread
* [bpf-next v3 PATCH 3/3] samples/bpf: xdp_fwd explain bpf_fib_lookup return codes 2019-08-08 16:17 [bpf-next v3 PATCH 0/3] bpf: improvements to xdp_fwd sample Jesper Dangaard Brouer 2019-08-08 16:17 ` [bpf-next v3 PATCH 1/3] samples/bpf: xdp_fwd rename devmap name to be xdp_tx_ports Jesper Dangaard Brouer 2019-08-08 16:17 ` [bpf-next v3 PATCH 2/3] samples/bpf: make xdp_fwd more practically usable via devmap lookup Jesper Dangaard Brouer @ 2019-08-08 16:17 ` Jesper Dangaard Brouer 2019-08-08 19:17 ` Toke Høiland-Jørgensen 2019-08-09 16:08 ` [bpf-next v3 PATCH 0/3] bpf: improvements to xdp_fwd sample Daniel Borkmann 3 siblings, 1 reply; 9+ messages in thread From: Jesper Dangaard Brouer @ 2019-08-08 16:17 UTC (permalink / raw) To: netdev, Daniel Borkmann, Alexei Starovoitov Cc: a.s.protopopov, dsahern, Toke Høiland-Jørgensen, ys114321, Jesper Dangaard Brouer Make it clear that this XDP program depend on the network stack to do the ARP resolution. This is connected with the BPF_FIB_LKUP_RET_NO_NEIGH return code from bpf_fib_lookup(). Another common mistake (seen via XDP-tutorial) is that users don't realize that sysctl net.ipv{4,6}.conf.all.forwarding setting is honored by bpf_fib_lookup. Reported-by: Anton Protopopov <a.s.protopopov@gmail.com> Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com> Reviewed-by: David Ahern <dsahern@gmail.com> Acked-by: Yonghong Song <yhs@fb.com> --- samples/bpf/xdp_fwd_kern.c | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/samples/bpf/xdp_fwd_kern.c b/samples/bpf/xdp_fwd_kern.c index a43d6953c054..701a30f258b1 100644 --- a/samples/bpf/xdp_fwd_kern.c +++ b/samples/bpf/xdp_fwd_kern.c @@ -103,8 +103,23 @@ static __always_inline int xdp_fwd_flags(struct xdp_md *ctx, u32 flags) fib_params.ifindex = ctx->ingress_ifindex; rc = bpf_fib_lookup(ctx, &fib_params, sizeof(fib_params), flags); - - if (rc == 0) { + /* + * Some rc (return codes) from bpf_fib_lookup() are important, + * to understand how this XDP-prog interacts with network stack. + * + * BPF_FIB_LKUP_RET_NO_NEIGH: + * Even if route lookup was a success, then the MAC-addresses are also + * needed. This is obtained from arp/neighbour table, but if table is + * (still) empty then BPF_FIB_LKUP_RET_NO_NEIGH is returned. To avoid + * doing ARP lookup directly from XDP, then send packet to normal + * network stack via XDP_PASS and expect it will do ARP resolution. + * + * BPF_FIB_LKUP_RET_FWD_DISABLED: + * The bpf_fib_lookup respect sysctl net.ipv{4,6}.conf.all.forwarding + * setting, and will return BPF_FIB_LKUP_RET_FWD_DISABLED if not + * enabled this on ingress device. + */ + if (rc == BPF_FIB_LKUP_RET_SUCCESS) { /* Verify egress index has been configured as TX-port. * (Note: User can still have inserted an egress ifindex that * doesn't support XDP xmit, which will result in packet drops). ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [bpf-next v3 PATCH 3/3] samples/bpf: xdp_fwd explain bpf_fib_lookup return codes 2019-08-08 16:17 ` [bpf-next v3 PATCH 3/3] samples/bpf: xdp_fwd explain bpf_fib_lookup return codes Jesper Dangaard Brouer @ 2019-08-08 19:17 ` Toke Høiland-Jørgensen 0 siblings, 0 replies; 9+ messages in thread From: Toke Høiland-Jørgensen @ 2019-08-08 19:17 UTC (permalink / raw) To: Jesper Dangaard Brouer, netdev, Daniel Borkmann, Alexei Starovoitov Cc: a.s.protopopov, dsahern, ys114321, Jesper Dangaard Brouer Jesper Dangaard Brouer <brouer@redhat.com> writes: > Make it clear that this XDP program depend on the network > stack to do the ARP resolution. This is connected with the > BPF_FIB_LKUP_RET_NO_NEIGH return code from bpf_fib_lookup(). > > Another common mistake (seen via XDP-tutorial) is that users > don't realize that sysctl net.ipv{4,6}.conf.all.forwarding > setting is honored by bpf_fib_lookup. > > Reported-by: Anton Protopopov <a.s.protopopov@gmail.com> > Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com> > Reviewed-by: David Ahern <dsahern@gmail.com> > Acked-by: Yonghong Song <yhs@fb.com> Reviewed-by: Toke Høiland-Jørgensen <toke@redhat.com> ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [bpf-next v3 PATCH 0/3] bpf: improvements to xdp_fwd sample 2019-08-08 16:17 [bpf-next v3 PATCH 0/3] bpf: improvements to xdp_fwd sample Jesper Dangaard Brouer ` (2 preceding siblings ...) 2019-08-08 16:17 ` [bpf-next v3 PATCH 3/3] samples/bpf: xdp_fwd explain bpf_fib_lookup return codes Jesper Dangaard Brouer @ 2019-08-09 16:08 ` Daniel Borkmann 3 siblings, 0 replies; 9+ messages in thread From: Daniel Borkmann @ 2019-08-09 16:08 UTC (permalink / raw) To: Jesper Dangaard Brouer, netdev, Alexei Starovoitov Cc: a.s.protopopov, dsahern, Toke Høiland-Jørgensen, ys114321 On 8/8/19 6:17 PM, Jesper Dangaard Brouer wrote: > V3: Hopefully fixed all issues point out by Yonghong Song > > V2: Addressed issues point out by Yonghong Song > - Please ACK patch 2/3 again > - Added ACKs and reviewed-by to other patches > > This patchset is focused on improvements for XDP forwarding sample > named xdp_fwd, which leverage the existing FIB routing tables as > described in LPC2018[1] talk by David Ahern. > > The primary motivation is to illustrate how Toke's recent work > improves usability of XDP_REDIRECT via lookups in devmap. The other > patches are to help users understand the sample. > > I have more improvements to xdp_fwd, but those might requires changes > to libbpf. Thus, sending these patches first as they are isolated. > > [1] http://vger.kernel.org/lpc-networking2018.html#session-1 > > --- > > Jesper Dangaard Brouer (3): > samples/bpf: xdp_fwd rename devmap name to be xdp_tx_ports > samples/bpf: make xdp_fwd more practically usable via devmap lookup > samples/bpf: xdp_fwd explain bpf_fib_lookup return codes > > > samples/bpf/xdp_fwd_kern.c | 39 ++++++++++++++++++++++++++++++--------- > samples/bpf/xdp_fwd_user.c | 35 +++++++++++++++++++++++------------ > 2 files changed, 53 insertions(+), 21 deletions(-) > > -- > Applied, thanks! ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2019-08-09 16:08 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2019-08-08 16:17 [bpf-next v3 PATCH 0/3] bpf: improvements to xdp_fwd sample Jesper Dangaard Brouer 2019-08-08 16:17 ` [bpf-next v3 PATCH 1/3] samples/bpf: xdp_fwd rename devmap name to be xdp_tx_ports Jesper Dangaard Brouer 2019-08-08 19:16 ` Toke Høiland-Jørgensen 2019-08-08 16:17 ` [bpf-next v3 PATCH 2/3] samples/bpf: make xdp_fwd more practically usable via devmap lookup Jesper Dangaard Brouer 2019-08-08 19:17 ` Toke Høiland-Jørgensen 2019-08-08 19:46 ` Y Song 2019-08-08 16:17 ` [bpf-next v3 PATCH 3/3] samples/bpf: xdp_fwd explain bpf_fib_lookup return codes Jesper Dangaard Brouer 2019-08-08 19:17 ` Toke Høiland-Jørgensen 2019-08-09 16:08 ` [bpf-next v3 PATCH 0/3] bpf: improvements to xdp_fwd sample Daniel Borkmann
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).