numam-dpdk/doc/guides/nics/af_xdp.rst
Xiaolong Ye f1debd77ef net/af_xdp: introduce AF_XDP PMD
Add a new PMD driver for AF_XDP which is a proposed faster version of
AF_PACKET interface in Linux. More info about AF_XDP, please refer to [1]
[2].

This is the vanilla version PMD which just uses a raw buffer registered as
the umem.

[1] https://fosdem.org/2018/schedule/event/af_xdp/
[2] https://lwn.net/Articles/745934/

Signed-off-by: Xiaolong Ye <xiaolong.ye@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Luca Boccassi <bluca@debian.org>
Reviewed-by: Stephen Hemminger <stephen@networkplumber.org>
2019-04-05 17:45:22 +02:00

51 lines
1.7 KiB
ReStructuredText

.. SPDX-License-Identifier: BSD-3-Clause
Copyright(c) 2019 Intel Corporation.
AF_XDP Poll Mode Driver
==========================
AF_XDP is an address family that is optimized for high performance
packet processing. AF_XDP sockets enable the possibility for XDP program to
redirect packets to a memory buffer in userspace.
For the full details behind AF_XDP socket, you can refer to
`AF_XDP documentation in the Kernel
<https://www.kernel.org/doc/Documentation/networking/af_xdp.rst>`_.
This Linux-specific PMD driver creates the AF_XDP socket and binds it to a
specific netdev queue, it allows a DPDK application to send and receive raw
packets through the socket which would bypass the kernel network stack.
Current implementation only supports single queue, multi-queues feature will
be added later.
Note that MTU of AF_XDP PMD is limited due to XDP lacks support for
fragmentation.
Options
-------
The following options can be provided to set up an af_xdp port in DPDK.
* ``iface`` - name of the Kernel interface to attach to (required);
* ``queue`` - netdev queue id (optional, default 0);
Prerequisites
-------------
This is a Linux-specific PMD, thus the following prerequisites apply:
* A Linux Kernel (version > v4.18) with XDP sockets configuration enabled;
* libbpf (within kernel version > v5.1-rc4) with latest af_xdp support installed,
User can install libbpf via `make install_lib` && `make install_headers` in
<kernel src tree>/tools/lib/bpf;
* A Kernel bound interface to attach to;
Set up an af_xdp interface
-----------------------------
The following example will set up an af_xdp interface in DPDK:
.. code-block:: console
--vdev net_af_xdp,iface=ens786f1,queue=0