1 .. SPDX-License-Identifier: BSD-3-Clause
2 Copyright(c) 2017 Intel Corporation.
4 DPDK pdump Library and pdump Tool
5 =================================
7 This document describes how the Data Plane Development Kit (DPDK) Packet
8 Capture Framework is used for capturing packets on DPDK ports. It is intended
9 for users of DPDK who want to know more about the Packet Capture feature and
10 for those who want to monitor traffic on DPDK-controlled devices.
12 The DPDK packet capture framework was introduced in DPDK v16.07. The DPDK
13 packet capture framework consists of the DPDK pdump library and DPDK pdump
20 The :ref:`librte_pdump <pdump_library>` library provides the APIs required to
21 allow users to initialize the packet capture framework and to enable or
22 disable packet capture. The library works on a client/server model and its
23 usage is recommended for debugging purposes.
25 The :ref:`dpdk-pdump <pdump_tool>` tool is developed based on the
26 ``librte_pdump`` library. It runs as a DPDK secondary process and is capable
27 of enabling or disabling packet capture on DPDK ports. The ``dpdk-pdump`` tool
28 provides command-line options with which users can request enabling or
29 disabling of the packet capture on DPDK ports.
31 The application which initializes the packet capture framework will act as a
32 server and the application that enables or disables the packet capture will
33 act as a client. The server sends the Rx and Tx packets from the DPDK ports
36 In DPDK the ``testpmd`` application can be used to initialize the packet
37 capture framework and act as a server, and the ``dpdk-pdump`` tool acts as a
38 client. To view Rx or Tx packets of ``testpmd``, the application should be
39 launched first, and then the ``dpdk-pdump`` tool. Packets from ``testpmd``
40 will be sent to the tool, which then sends them on to the Pcap PMD device and
41 that device writes them to the Pcap file or to an external interface depending
42 on the command-line option used.
46 * The ``dpdk-pdump`` tool can only be used in conjunction with a primary
47 application which has the packet capture framework initialized already. In
48 dpdk, only ``testpmd`` is modified to initialize packet capture framework,
49 other applications remain untouched. So, if the ``dpdk-pdump`` tool has to
50 be used with any application other than the testpmd, the user needs to
51 explicitly modify that application to call the packet capture framework
52 initialization code. Refer to the ``app/test-pmd/testpmd.c`` code and look
53 for ``pdump`` keyword to see how this is done.
55 * The ``dpdk-pdump`` tool depends on the libpcap based PMD which is disabled
56 by default in the build configuration files, owing to an external dependency
57 on the libpcap development files. Once the libpcap development files are
58 installed, the libpcap based PMD can be enabled by setting
59 ``CONFIG_RTE_LIBRTE_PMD_PCAP=y`` and recompiling the DPDK.
65 The overview of using the Packet Capture Framework and the ``dpdk-pdump`` tool
66 for packet capturing on the DPDK port in
67 :numref:`figure_packet_capture_framework`.
69 .. _figure_packet_capture_framework:
71 .. figure:: img/packet_capture_framework.*
73 Packet capturing on a DPDK port using the dpdk-pdump tool.
79 Modify the DPDK primary application to initialize the packet capture framework
80 as mentioned in the above notes and enable the following config options and
83 CONFIG_RTE_LIBRTE_PMD_PCAP=y
84 CONFIG_RTE_LIBRTE_PDUMP=y
87 Running the Application
88 -----------------------
90 The following steps demonstrate how to run the ``dpdk-pdump`` tool to capture
91 Rx side packets on dpdk_port0 in :numref:`figure_packet_capture_framework` and
92 inspect them using ``tcpdump``.
94 #. Launch testpmd as the primary application::
96 sudo ./app/testpmd -c 0xf0 -n 4 -- -i --port-topology=chained
98 #. Launch the pdump tool as follows::
100 sudo ./build/app/dpdk-pdump -- \
101 --pdump 'port=0,queue=*,rx-dev=/tmp/capture.pcap'
103 #. Send traffic to dpdk_port0 from traffic generator.
104 Inspect packets captured in the file capture.pcap using a tool
105 that can interpret Pcap files, for example tcpdump::
107 $tcpdump -nr /tmp/capture.pcap
108 reading from file /tmp/capture.pcap, link-type EN10MB (Ethernet)
109 11:11:36.891404 IP 4.4.4.4.whois++ > 3.3.3.3.whois++: UDP, length 18
110 11:11:36.891442 IP 4.4.4.4.whois++ > 3.3.3.3.whois++: UDP, length 18
111 11:11:36.891445 IP 4.4.4.4.whois++ > 3.3.3.3.whois++: UDP, length 18