[PATCH v2 1/2] doc: note KNI alternatives
From: Ferruh Yigit <hidden>
Date: 2021-11-23 12:08:49
Subsystem:
the rest · Maintainer:
Linus Torvalds
Add more information on alternatives of KNI and the cons of KNI against these alternatives. Signed-off-by: Ferruh Yigit <redacted> --- Cc: Olivier Matz <redacted> Cc: David Marchand <redacted> Cc: Stephen Hemminger <stephen@networkplumber.org> Cc: Elad Nachman <redacted> Cc: Igor Ryzhov <redacted> Cc: Dan Gora <redacted> --- doc/guides/nics/tap.rst | 2 ++ .../prog_guide/kernel_nic_interface.rst | 34 +++++++++++++++++-- 2 files changed, 33 insertions(+), 3 deletions(-)
diff --git a/doc/guides/nics/tap.rst b/doc/guides/nics/tap.rst
index 681010d9ed7d..2ba98893d564 100644
--- a/doc/guides/nics/tap.rst
+++ b/doc/guides/nics/tap.rst@@ -1,6 +1,8 @@ .. SPDX-License-Identifier: BSD-3-Clause Copyright(c) 2016 Intel Corporation. +.. _TunTap_PMD: + Tun|Tap Poll Mode Driver ========================
diff --git a/doc/guides/prog_guide/kernel_nic_interface.rst b/doc/guides/prog_guide/kernel_nic_interface.rst
index 1ce03ec1a374..70e92687d711 100644
--- a/doc/guides/prog_guide/kernel_nic_interface.rst
+++ b/doc/guides/prog_guide/kernel_nic_interface.rst@@ -6,16 +6,44 @@ Kernel NIC Interface ==================== +.. Note:: + + :ref:`virtio_user_as_exceptional_path` alternative is the preferred way for + interfacing with the Linux network stack as it is an in-kernel solution and + has similar performance expectations. + The DPDK Kernel NIC Interface (KNI) allows userspace applications access to the Linux* control plane. -The benefits of using the DPDK KNI are: +KNI provides an interface with the kernel network stack and allows management of +DPDK ports using standard Linux net tools such as ``ethtool``, ``ifconfig`` and +``tcpdump``. + +The main use case of KNI is to get/receive exception packets from/to Linux network +stack while main datapath IO is done bypassing the networking stack. + +There are other alternatives to KNI, all are available in the upstream Linux: + +#. :ref:`virtio_user_as_exceptional_path` + +#. :ref:`TunTap_PMD` as wrapper to `Linux tun/tap + <https://www.kernel.org/doc/Documentation/networking/tuntap.txt>`_ + +The benefits of using the KNI against alternatives are: * Faster than existing Linux TUN/TAP interfaces (by eliminating system calls and copy_to_user()/copy_from_user() operations. -* Allows management of DPDK ports using standard Linux net tools such as ethtool, ifconfig and tcpdump. +The cons of the KNI are: + +* It is out-of-tree Linux kernel module and it can't be distributed as binary as + part of operating system vendor DPDK packages. This makes it harder to + consume, although it is always possible to compile it from the source code. + +* As it shares memory between userspace and kernelspace, and kernel part + directly uses input provided by userspace, it is not safe. This makes hard to + upstream the module. -* Allows an interface with the kernel network stack. +* Only a subset of net devices control commands are supported by KNI. The components of an application using the DPDK Kernel NIC Interface are shown in :numref:`figure_kernel_nic_intf`.
--
2.31.1