From: Reshma Pattan Date: Thu, 26 Nov 2020 13:51:14 +0000 (+0000) Subject: doc: clarify multi-process roles for pdump X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=235161511694cdc0389cbbd9226bc4b464e869db;p=dpdk.git doc: clarify multi-process roles for pdump 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 Acked-by: Bruce Richardson --- diff --git a/doc/guides/howto/packet_capture_framework.rst b/doc/guides/howto/packet_capture_framework.rst index 6bd51f69f2..c31bac5234 100644 --- a/doc/guides/howto/packet_capture_framework.rst +++ b/doc/guides/howto/packet_capture_framework.rst @@ -19,7 +19,7 @@ Introduction The :ref:`librte_pdump ` 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 ` 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 diff --git a/doc/guides/prog_guide/pdump_lib.rst b/doc/guides/prog_guide/pdump_lib.rst index 2a0f1f397a..62c0b015b2 100644 --- a/doc/guides/prog_guide/pdump_lib.rst +++ b/doc/guides/prog_guide/pdump_lib.rst @@ -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.