On 12/1/2021 4:31 PM, Morten Brørup wrote: >> 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.) >
Both fine for me, OK to use 'disadvantages'. >> + >> +* 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. > ack >> >> 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? > Hi Morten, This is an old patch, I assumed merged v4 by Thomas superseded this patch, but it seems this patch was not involved in that, so I will make a new version. For the virtio-user documentation, no objection to move it to programmer's guide, I hope Maxime and Chenbo can help there.