From: ogawa.yasufumi@lab.ntt.co.jp
To: spp@dpdk.org, ferruh.yigit@intel.com, ogawa.yasufumi@lab.ntt.co.jp
Subject: [spp] [PATCH 6/6] docs: update usecase of spp_pcap
Date: Fri, 15 Feb 2019 02:27:00 +0900 [thread overview]
Message-ID: <20190214172700.5816-7-ogawa.yasufumi@lab.ntt.co.jp> (raw)
In-Reply-To: <20190214172700.5816-1-ogawa.yasufumi@lab.ntt.co.jp>
From: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>
This patch is to revise usecase of spp_pcap.
Signed-off-by: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>
---
docs/guides/spp_vf/use_cases/pcap_simple.rst | 253 ++++++++++++-------
1 file changed, 162 insertions(+), 91 deletions(-)
diff --git a/docs/guides/spp_vf/use_cases/pcap_simple.rst b/docs/guides/spp_vf/use_cases/pcap_simple.rst
index c31324e..34efce3 100644
--- a/docs/guides/spp_vf/use_cases/pcap_simple.rst
+++ b/docs/guides/spp_vf/use_cases/pcap_simple.rst
@@ -1,164 +1,235 @@
.. SPDX-License-Identifier: BSD-3-Clause
Copyright(c) 2019 Nippon Telegraph and Telephone Corporation
-.. _spp_pcap_use_case:
-
-Packet Capture
-==============
+.. _spp_pcap_use_case:
-This section describes a usecase for Packet Capture through ``spp_pcap``.
+Packet Capture with spp_pcap
+============================
-Incoming packets received by ``phy:0`` is captured by ``spp_pcap``.
+This section describes a usecase for capturing packets with ``spp_pcap``
+and seeing inside of the captured file with ``tcpdump`` command.
+:numref:`figure_simple_capture` shows the overview of scenario in which
+incoming packets via ``phy:0`` are dumped as compressed pcap files by using
+``spp_pcap``.
.. _figure_simple_capture:
.. figure:: ../../images/spp_vf/spp_pcap_overview.*
:width: 50%
- Simple Packet Capture
+ Packet capture with spp_pcap
+
+
+.. _spp_pcap_use_case_launch_pcap:
Launch spp_pcap
~~~~~~~~~~~~~~~
-Change directory to spp and confirm that it is already compiled.
+Change directory if you are not in SPP's directory,
+and compile if not done yet.
.. code-block:: console
$ cd /path/to/spp
-As spp, launch spp-ctl and spp.py first.
+Launch spp-ctl and SPP CLI in different terminals.
.. code-block:: console
- # Launch spp-ctl and spp.py
- $ python3 ./src/spp-ctl/spp-ctl -b 127.0.0.1
- $ python ./src/spp.py -b 127.0.0.1
+ # terminal 1
+ $ python3 ./src/spp-ctl/spp-ctl -b 192.168.1.100
+
+.. code-block:: console
+
+ # terminal 2
+ $ python3 ./src/spp.py -b 192.168.1.100
-Then, run ``spp_primary``.
+Then, run ``spp_primary`` with one physical port.
.. code-block:: console
+ # terminal 3
$ sudo ./src/primary/x86_64-native-linuxapp-gcc/spp_primary \
- -c 0x02 -n 4 \
+ -l 0 -n 4 \
--socket-mem 512,512 \
- --huge-dir=/run/hugepages/kvm \
- --proc-type=primary \
+ --huge-dir /run/hugepages/kvm \
+ --proc-type primary \
-- \
- -p 0x03 -n 8 -s 127.0.0.1:5555
+ -p 0x01 \
+ -n 8 -s 192.168.1.100:5555
-After ``spp_primary`` is launched, run secondary process ``spp_pcap``.
-If not ``--output`` directory is not created, please create it first.
+After ``spp_primary`` is launched successfully, run ``spp_pcap`` in other
+terminal. In this usecase, you use default values for optional arguments.
+Output directory of captured file is ``/tmp`` and the size of file is
+``1GiB``.
+You notice that six lcores are assigned with ``-l 1-6``.
+It means that you use one locre for master, one for receiver, and four for
+writer threads.
.. code-block:: console
- $ sudo mkdir /mnt/pcap
+ # terminal 4
$ sudo ./src/pcap/x86_64-native-linuxapp-gcc/spp_pcap \
- -l 0-4 -n 4 --proc-type=secondary \
+ -l 1-6 -n 4 --proc-type=secondary \
-- \
- --client-id 1 -s 127.0.0.1:6666 \
- -i phy:0 --output /mnt/pcap --limit_file_size 1073741824
+ --client-id 1 -s 192.168.1.100:6666 \
+ -c phy:0
-Start capturing
-~~~~~~~~~~~~~~~
-When you want to start capture, then type the following command.
+You can confirm lcores and worker threads running on from ``status`` command.
-.. code-block:: console
+.. code-block:: none
- spp > pcap SEC_ID; start
+ # terminal 2
+ spp > pcap 1; status
+ - client-id: 1
+ - status: idle
+ - core:2 receive
+ - rx: phy:0
+ - core:3 write
+ - filename:
+ - core:4 write
+ - filename:
+ - core:5 write
+ - filename:
+ - core:6 write
+ - filename:
-In this usecase, spp_pcap is launched with ID=1. Let's start capturing.
-.. code-block:: console
+.. _spp_pcap_use_case_start_capture:
- # Start packet capture
- spp > pcap 1;start
+Start Capture
+~~~~~~~~~~~~~
-Stop capturing
-~~~~~~~~~~~~~~
+If you already started to send packets to ``phy:0`` from outside,
+you are ready to start capturing packets.
-When you want to stop capture, then type the following command.
+.. code-block:: none
-.. code-block:: console
+ # terminal 2
+ spp > pcap 1; start
+ Start packet capture.
- spp > pcap SEC_ID; stop
+As you run ``start`` command, PCAP files are generated for each of
+``writer`` threads for capturing.
-In this usecase, spp_pcap is launched with ID=1. Let's stop capturing.
+.. code-block:: none
-.. code-block:: console
+ # terminal 2
+ spp > pcap 1; status
+ - client-id: 1
+ - status: running
+ - core:2 receive
+ - rx: phy:0
+ - core:3 write
+ - filename: /tmp/spp_pcap.20190214161550.phy0.1.1.pcap.lz4
+ - core:4 write
+ - filename: /tmp/spp_pcap.20190214161550.phy0.2.1.pcap.lz4
+ - core:5 write
+ - filename: /tmp/spp_pcap.20190214161550.phy0.3.1.pcap.lz4
+ - core:6 write
+ - filename: /tmp/spp_pcap.20190214161550.phy0.4.1.pcap.lz4
- # Stop packet capture
- spp > pcap 1;stop
+.. _spp_pcap_use_case_stop_capture:
-Now, you can see capture file written in specified directory.
+Stop Capture
+~~~~~~~~~~~~
-.. code-block:: console
+Stop capturing and confirm that compressed PCAP files are generated.
- # show the content of directry
- $ cd /mnt/pcap
- $ ls
- spp_pcap.20181108110600.phy0.1.1.pcap.lz4
- spp_pcap.20181108110600.phy0.2.1.pcap.lz4
- spp_pcap.20181108110600.phy0.3.1.pcap.lz4
+.. code-block:: none
-Each files are compressed using LZ4, so that to uncompress it,
-use lz4 utils.
+ # terminal 2
+ spp > pcap 1; stop
+ spp > ls /tmp
+ ....
+ spp_pcap.20190214175446.phy0.1.1.pcap.lz4
+ spp_pcap.20190214175446.phy0.1.2.pcap.lz4
+ spp_pcap.20190214175446.phy0.1.3.pcap.lz4
+ spp_pcap.20190214175446.phy0.2.1.pcap.lz4
+ spp_pcap.20190214175446.phy0.2.2.pcap.lz4
+ spp_pcap.20190214175446.phy0.2.3.pcap.lz4
+ ....
-.. code-block:: console
-
- # uncompress lz4 files
- $ sudo lz4 -d -m spp_pcap.20181108110600.phy0.*
- $ ls
- spp_pcap.20181108110600.phy0.1.1.pcap
- spp_pcap.20181108110600.phy0.2.1.pcap
- spp_pcap.20181108110600.phy0.3.1.pcap
- spp_pcap.20181108110600.phy0.1.1.pcap.lz4
- spp_pcap.20181108110600.phy0.2.1.pcap.lz4
- spp_pcap.20181108110600.phy0.3.1.pcap.lz4
-
-To combine those divided pcap files using mergecap utility.
-
-.. code-block:: console
+Index in the filename, such as ``1.1`` or ``1.2``, is a combination of
+``writer`` thread ID and sequenceal number.
+In this case, it means each of four threads generate three files.
- # merge pcap files
- $ sudo mergecap spp_pcap.20181108110600.phy0.1.1.pcap \
- spp_pcap.20181108110600.phy0.2.1.pcap \
- spp_pcap.20181108110600.phy0.3.1.pcap \
- -w test.pcap
- $ ls
- spp_pcap.20181108110600.phy0.1.1.pcap
- spp_pcap.20181108110600.phy0.2.1.pcap
- spp_pcap.20181108110600.phy0.3.1.pcap
- spp_pcap.20181108110600.phy0.1.1.pcap.lz4
- spp_pcap.20181108110600.phy0.2.1.pcap.lz4
- spp_pcap.20181108110600.phy0.3.1.pcap.lz4
- test.pcap
.. _spp_pcap_use_case_shutdown:
Shutdown spp_pcap
~~~~~~~~~~~~~~~~~
-Basically, you can shutdown all of SPP processes with ``bye all``
-command.
+Run ``exit`` or ``bye sec`` command to terminate ``spp_pcap``.
-This section describes graceful shutting down for ``spp_pcap``.
+.. code-block:: none
-First, stop capturing using the following command if it is not
-already stopped.
+ # terminal 2
+ spp > pcap 1; exit
+
+
+.. _spp_pcap_use_case_inspect_file:
+
+Inspect PCAP Files
+~~~~~~~~~~~~~~~~~~
+
+You can inspect captured PCAP files by using utilities.
+
+Merge PCAP Files
+^^^^^^^^^^^^^^^^
+
+Extract and merge compressed PCAP files.
+
+For extract several LZ4 files at once, use ``-d`` and ``-m`` options.
+``-d`` is for decompression and ``-m`` is for multiple files.
+
+You had better not to merge divided files into single file, but still
+several files because the size of merged file might be huge.
+Each of extracted PCAP file is 1GiB in default, so total size of extracted
+files is 12GiB in this case. To avoid the situation, merge files for each of
+threads and generate four PCAP files of 3GiB.
+
+First, extract LZ4 files of writer thread ID 1.
.. code-block:: console
- # Stop packet capture
- spp > pcap 1;stop
+ # terminal 4
+ $ lz4 -d -m /tmp/spp_pcap.20190214175446.phy0.1.*
+
+And confirm that the files are extracted.
+
+.. code-block:: console
+
+ # terminal 4
+ $ ls /tmp | grep pcap$
+ spp_pcap.20190214175446.phy0.1.1.pcap
+ spp_pcap.20190214175446.phy0.1.2.pcap
+ spp_pcap.20190214175446.phy0.1.3.pcap
+
+Run ``mergecap`` command to merge extracted files to current directory
+as ``spp_pcap1.pcap``.
+
+.. code-block:: console
+
+ # terminal 4
+ $ mergecap /tmp/spp_pcap.20190214175446.phy0.1.*.pcap -w spp_pcap1.pcap
+
+Inspect PCAP file
+^^^^^^^^^^^^^^^^^
-If you want to start capture again then use ``start`` command again.
-Else if you want to quit ``spp_pcap`` itself, type the following command
-and quit application.
+You can use any of applications, for instance ``wireshark`` or ``tcpdump``,
+for inspecting PCAP file.
+To inspect the merged PCAP file, read packet data from ``tcpdump`` command
+in this usecase. ``-r`` option is to dump packet data in human readable format.
.. code-block:: console
- # Exit packet capture
- spp > pcap 1;exit
+ # terminal 4
+ $ tcpdump -r spp_pcap1.pcap | less
+ 17:54:52.559783 IP 192.168.0.100.1234 > 192.168.1.1.5678: Flags [.], ...
+ 17:54:52.559784 IP 192.168.0.100.1234 > 192.168.1.1.5678: Flags [.], ...
+ 17:54:52.559785 IP 192.168.0.100.1234 > 192.168.1.1.5678: Flags [.], ...
+ 17:54:52.559785 IP 192.168.0.100.1234 > 192.168.1.1.5678: Flags [.], ...
--
2.17.1
prev parent reply other threads:[~2019-02-14 17:27 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-02-14 17:26 [spp] [PATCH 0/6] Update docs " ogawa.yasufumi
2019-02-14 17:26 ` [spp] [PATCH 1/6] docs: update design and howto use " ogawa.yasufumi
2019-02-14 17:26 ` [spp] [PATCH 2/6] docs: update spp_pcap commands ogawa.yasufumi
2019-02-14 17:26 ` [spp] [PATCH 3/6] docs: move images of spp_pcap ogawa.yasufumi
2019-02-14 17:26 ` [spp] [PATCH 4/6] docs: update overview image " ogawa.yasufumi
2019-02-14 17:26 ` [spp] [PATCH 5/6] docs: rename files of usecases in spp_vf ogawa.yasufumi
2019-02-14 17:27 ` ogawa.yasufumi [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190214172700.5816-7-ogawa.yasufumi@lab.ntt.co.jp \
--to=ogawa.yasufumi@lab.ntt.co.jp \
--cc=ferruh.yigit@intel.com \
--cc=spp@dpdk.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).