> From: Ferruh Yigit [mailto:ferruh.yi...@intel.com] > Sent: Wednesday, 24 November 2021 18.16 > > Add more information on alternatives of KNI and the cons of KNI against > these alternatives. > > Signed-off-by: Ferruh Yigit <ferruh.yi...@intel.com> > --- > Cc: Olivier Matz Olivier Matz <olivier.m...@6wind.com> > Cc: David Marchand David Marchand <david.march...@redhat.com> > Cc: Stephen Hemminger Stephen Hemminger <step...@networkplumber.org> > Cc: Elad Nachman <ela...@gmail.com> > Cc: Igor Ryzhov <iryz...@nfware.com> > Cc: Dan Gora <d...@adax.com> > > v3: > * reference tap document directly instead of adding label to it. > --- > .../prog_guide/kernel_nic_interface.rst | 34 +++++++++++++++++-- > 1 file changed, 31 insertions(+), 3 deletions(-) > > diff --git a/doc/guides/prog_guide/kernel_nic_interface.rst > b/doc/guides/prog_guide/kernel_nic_interface.rst > index 1ce03ec1a374..f5a8b7c0782c 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` > + > +#. :doc:`../nics/tap` 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:
Consider if "disadvantages" is more appropriate than "cons". (I'm not a native English speaker.) > + > +* 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. If it is still relevant, add something along the lines of: * Requires dedicated kernel cores. > > The components of an application using the DPDK Kernel NIC Interface > are shown in :numref:`figure_kernel_nic_intf`. > > -- > 2.31.1 > Could you perhaps also promote the virtio-user documentation by moving it from the HowTo Guides to the Programmer's Guide? -Morten