doc: clarify multi-process roles for pdump
authorReshma Pattan <reshma.pattan@intel.com>
Thu, 26 Nov 2020 13:51:14 +0000 (13:51 +0000)
committerDavid Marchand <david.marchand@redhat.com>
Thu, 26 Nov 2020 15:32:11 +0000 (16:32 +0100)
Update the pdump library programmers guide and Howto doc
with the use of multi process channel replacing socket
based communication.

Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
doc/guides/howto/packet_capture_framework.rst
doc/guides/prog_guide/pdump_lib.rst

index 6bd51f6..c31bac5 100644 (file)
@@ -19,7 +19,7 @@ Introduction
 
 The :ref:`librte_pdump <pdump_library>` library provides the APIs required to
 allow users to initialize the packet capture framework and to enable or
-disable packet capture. The library works on a client/server model and its
+disable packet capture. The library works on a multi process communication model and its
 usage is recommended for debugging purposes.
 
 The :ref:`dpdk-pdump <pdump_tool>` tool is developed based on the
@@ -28,13 +28,13 @@ of enabling or disabling packet capture on DPDK ports. The ``dpdk-pdump`` tool
 provides command-line options with which users can request enabling or
 disabling of the packet capture on DPDK ports.
 
-The application which initializes the packet capture framework will act as a
-server and the application that enables or disables the packet capture will
-act as a client. The server sends the Rx and Tx packets from the DPDK ports
-to the client.
+The application which initializes the packet capture framework will be a primary process
+and the application that enables or disables the packet capture will
+be a secondary process. The primary process sends the Rx and Tx packets from the DPDK ports
+to the secondary process.
 
 In DPDK the ``testpmd`` application can be used to initialize the packet
-capture framework and act as a server, and the ``dpdk-pdump`` tool acts as a
+capture framework and acts as a server, and the ``dpdk-pdump`` tool acts as a
 client. To view Rx or Tx packets of ``testpmd``, the application should be
 launched first, and then the ``dpdk-pdump`` tool. Packets from ``testpmd``
 will be sent to the tool, which then sends them on to the Pcap PMD device and
index 2a0f1f3..62c0b01 100644 (file)
@@ -11,8 +11,12 @@ The library does the complete copy of the Rx and Tx mbufs to a new mempool and
 hence it slows down the performance of the applications, so it is recommended
 to use this library for debugging purposes.
 
+The library uses a generic multi process channel to facilitate communication
+between primary and secondary process for enabling/disabling packet capture on
+ports.
+
 The library provides the following APIs to initialize the packet capture framework, to enable
-or disable the packet capture, and to uninitialize it:
+or disable the packet capture, and to uninitialize it.
 
 * ``rte_pdump_init()``:
   This API initializes the packet capture framework.
@@ -38,42 +42,30 @@ or disable the packet capture, and to uninitialize it:
 Operation
 ---------
 
-The ``librte_pdump`` library works on a client/server model. The server is responsible for enabling or
-disabling the packet capture and the clients are responsible for requesting the enabling or disabling of
-the packet capture.
-
-The packet capture framework, as part of its initialization, creates the pthread and the server socket in
-the pthread. The application that calls the framework initialization will have the server socket created,
-either under the path that the application has passed or under the default path i.e. either ``/var/run/.dpdk`` for
-root user or ``~/.dpdk`` for non root user.
-
-Applications that request enabling or disabling of the packet capture will have the client socket created either under
-the path that the application has passed or under the default path i.e. either ``/var/run/.dpdk`` for root user or
-``~/.dpdk`` for not root user to send the requests to the server. The server socket will listen for client requests for
-enabling or disabling the packet capture.
-
+The primary process using ``librte_pdump`` is responsible for initializing the packet
+capture framework. The packet capture framework, as part of its initialization, creates the
+multi process channel to facilitate communication with secondary process, so the
+secondary process ``app/pdump`` tool is responsible for enabling and disabling the packet capture on ports.
 
 Implementation Details
 ----------------------
 
-The library API ``rte_pdump_init()``, initializes the packet capture framework by creating the pdump server by calling
-``rte_mp_action_register()`` function. The server will listen to the client requests to enable or disable the
-packet capture.
+The library API ``rte_pdump_init()``, initializes the packet capture framework by creating the multi process
+channel using ``rte_mp_action_register()`` API. The primary process will listen to secondary process requests
+to enable or disable the packet capture over the multi process channel.
 
 The library APIs ``rte_pdump_enable()`` and ``rte_pdump_enable_by_deviceid()`` enables the packet capture.
-On each call to these APIs, the library creates a separate client socket, creates the "pdump enable" request and sends
-the request to the server. The server that is listening on the socket will take the request and enable the packet capture
-by registering the Ethernet RX and TX callbacks for the given port or device_id and queue combinations.
-Then the server will mirror the packets to the new mempool and enqueue them to the rte_ring that clients have passed
-to these APIs. The server also sends the response back to the client about the status of the request that was processed.
-After the response is received from the server, the client socket is closed.
+For the calls to these APIs from secondary process, the library creates the "pdump enable" request and sends
+the request to the primary process over the multi process channel. The primary process takes this request
+and enables the packet capture by registering the Ethernet RX and TX callbacks for the given port or device_id
+and queue combinations. Then the primary process will mirror the packets to the new mempool and enqueue them to
+the rte_ring that secondary process have passed to these APIs.
 
 The library APIs ``rte_pdump_disable()`` and ``rte_pdump_disable_by_deviceid()`` disables the packet capture.
-On each call to these APIs, the library creates a separate client socket, creates the "pdump disable" request and sends
-the request to the server. The server that is listening on the socket will take the request and disable the packet
-capture by removing the Ethernet RX and TX callbacks for the given port or device_id and queue combinations. The server
-also sends the response back to the client about the status of the request that was processed. After the response is
-received from the server, the client socket is closed.
+For the calls to these APIs from secondary process, the library creates the "pdump disable" request and sends
+the request to the primary process over the multi process channel. The primary process takes this request and
+disables the packet capture by removing the Ethernet RX and TX callbacks for the given port or device_id and
+queue combinations.
 
 The library API ``rte_pdump_uninit()``, uninitializes the packet capture framework by calling ``rte_mp_action_unregister()``
 function.