Based on kernel version 6.12.4
. Page generated on 2024-12-12 21:01 EST
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | .. SPDX-License-Identifier: GPL-2.0-only .. Copyright (C) 2022 Red Hat, Inc. ======== Redirect ======== XDP_REDIRECT ############ Supported maps -------------- XDP_REDIRECT works with the following map types: - ``BPF_MAP_TYPE_DEVMAP`` - ``BPF_MAP_TYPE_DEVMAP_HASH`` - ``BPF_MAP_TYPE_CPUMAP`` - ``BPF_MAP_TYPE_XSKMAP`` For more information on these maps, please see the specific map documentation. Process ------- .. kernel-doc:: net/core/filter.c :doc: xdp redirect .. note:: Not all drivers support transmitting frames after a redirect, and for those that do, not all of them support non-linear frames. Non-linear xdp bufs/frames are bufs/frames that contain more than one fragment. Debugging packet drops ---------------------- Silent packet drops for XDP_REDIRECT can be debugged using: - bpf_trace - perf_record bpf_trace ^^^^^^^^^ The following bpftrace command can be used to capture and count all XDP tracepoints: .. code-block:: none sudo bpftrace -e 'tracepoint:xdp:* { @cnt[probe] = count(); }' Attaching 12 probes... ^C @cnt[tracepoint:xdp:mem_connect]: 18 @cnt[tracepoint:xdp:mem_disconnect]: 18 @cnt[tracepoint:xdp:xdp_exception]: 19605 @cnt[tracepoint:xdp:xdp_devmap_xmit]: 1393604 @cnt[tracepoint:xdp:xdp_redirect]: 22292200 .. note:: The various xdp tracepoints can be found in ``source/include/trace/events/xdp.h`` The following bpftrace command can be used to extract the ``ERRNO`` being returned as part of the err parameter: .. code-block:: none sudo bpftrace -e \ 'tracepoint:xdp:xdp_redirect*_err {@redir_errno[-args->err] = count();} tracepoint:xdp:xdp_devmap_xmit {@devmap_errno[-args->err] = count();}' perf record ^^^^^^^^^^^ The perf tool also supports recording tracepoints: .. code-block:: none perf record -a -e xdp:xdp_redirect_err \ -e xdp:xdp_redirect_map_err \ -e xdp:xdp_exception \ -e xdp:xdp_devmap_xmit References =========== - https://github.com/xdp-project/xdp-tutorial/tree/master/tracing02-xdp-monitor |