From: ogawa.yasufumi@lab.ntt.co.jp
To: spp@dpdk.org, ferruh.yigit@intel.com, ogawa.yasufumi@lab.ntt.co.jp
Subject: [spp] [PATCH 10/20] docs: update usecase of spp_mirror
Date: Mon, 18 Feb 2019 20:48:21 +0900 [thread overview]
Message-ID: <1550490511-31683-11-git-send-email-ogawa.yasufumi@lab.ntt.co.jp> (raw)
In-Reply-To: <1550490511-31683-1-git-send-email-ogawa.yasufumi@lab.ntt.co.jp>
From: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>
This patch is to update usecase of spp_mirror.
Signed-off-by: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>
---
docs/guides/spp_vf/use_cases/index.rst | 2 -
docs/guides/spp_vf/use_cases/mirror_simple.rst | 170 -----------
docs/guides/spp_vf/use_cases/mirror_vms.rst | 285 ------------------
docs/guides/use_cases/index.rst | 1 +
docs/guides/use_cases/spp_mirror.rst | 391 +++++++++++++++++++++++++
5 files changed, 392 insertions(+), 457 deletions(-)
delete mode 100644 docs/guides/spp_vf/use_cases/mirror_simple.rst
delete mode 100644 docs/guides/spp_vf/use_cases/mirror_vms.rst
create mode 100644 docs/guides/use_cases/spp_mirror.rst
diff --git a/docs/guides/spp_vf/use_cases/index.rst b/docs/guides/spp_vf/use_cases/index.rst
index 8fb2ea4..59125f4 100644
--- a/docs/guides/spp_vf/use_cases/index.rst
+++ b/docs/guides/spp_vf/use_cases/index.rst
@@ -7,6 +7,4 @@ Use Cases
.. toctree::
:maxdepth: 2
- mirror_simple
- mirror_vms
pcap_simple
diff --git a/docs/guides/spp_vf/use_cases/mirror_simple.rst b/docs/guides/spp_vf/use_cases/mirror_simple.rst
deleted file mode 100644
index a371b38..0000000
--- a/docs/guides/spp_vf/use_cases/mirror_simple.rst
+++ /dev/null
@@ -1,170 +0,0 @@
-.. SPDX-License-Identifier: BSD-3-Clause
- Copyright(c) 2019 Nippon Telegraph and Telephone Corporation
-
-.. _spp_mirror_use_cases_basic:
-
-Mirroring Packets from NIC
-==========================
-
-This usecase uses two hosts. ``spp_mirror`` is running on localhost. Remote host
-sends ARP packets to localhost by using ping command. ``spp_mirror`` duplicates
-and sends packets to destination ports.
-
-Network Configuration
----------------------
-
-Detailed configuration is described in
-:numref:`figure_spp_mirror_use_cases_nw_config`.
-In this diagram, incoming packets from ``phy:0`` are mirrored.
-In ``spp_mirror`` process, worker thread ``mir1`` copies incoming packets and
-sends to two destinations ``phy:1`` and ``phy:2``.
-
-.. _figure_spp_mirror_use_cases_nw_config:
-
-.. figure:: ../../images/spp_vf/basic_usecase_mirror_nwconfig.*
- :width: 80%
-
- Network configuration of mirroring
-
-
-Setup SPP
----------
-
-Change directory to spp and confirm that it is already compiled.
-
-.. code-block:: console
-
- $ cd /path/to/spp
-
-Launch ``spp-ctl`` before launching SPP primary and secondary processes.
-You also need to launch ``spp.py`` if you use ``spp_mirror`` from CLI.
-``-b`` option is for binding IP address to communicate other SPP processes,
-but no need to give it explicitly if ``127.0.0.1`` or ``localhost`` .
-
-.. code-block:: console
-
- # terminal#1
- # Launch spp-ctl
- $ python3 ./src/spp-ctl/spp-ctl -b 192.168.1.100
-
-.. code-block:: console
-
- # terminal#2
- # Launch SPP CLI
- $ python ./src/spp.py -b 192.168.1.100
-
-Start ``spp_primary`` with core list option ``-l 1``.
-
-.. code-block:: console
-
- # terminal#3
- $ sudo ./src/primary/x86_64-native-linuxapp-gcc/spp_primary \
- -l 1 -n 4 \
- --socket-mem 512,512 \
- --huge-dir=/run/hugepages/kvm \
- --proc-type=primary \
- -- \
- -p 0x07 -n 10 -s 192.168.1.100:5555
-
-
-Launch spp_mirror
-~~~~~~~~~~~~~~~~~
-
-Run secondary process ``spp_mirror``.
-
-.. code-block:: console
-
- # terminal#4
- $ sudo ./src/mirror/x86_64-native-linuxapp-gcc/app/spp_mirror \
- -l 0,2 -n 4 --proc-type=secondary \
- -- \
- --client-id 1 \
- -s 192.168.1.100:6666 \
-
-Start mirror component with ``CORE_ID`` 2.
-
-.. code-block:: console
-
- # Start component on CORE_ID 2
- spp > mirror 1; component start mir1 2 mirror
-
-Add ``phy:0`` as rx ports and add ``phy:1`` and ``phy:2`` as tx port
-to mirror.
-
-.. code-block:: none
-
- # add ports to mir1
- spp > mirror 1; port add phy:0 rx mir1
- spp > mirror 1; port add phy:1 tx mir1
- spp > mirror 1; port add phy:2 tx mir1
-
-
-Confirm Original Packet is Duplicated
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-To check sent packets are mirrored, you run tcpdump for ``ens1`` and ``ens2``
-first. As you run ping for ``ens0``, you will see the same ARP requests trying
-to resolve ``192.168.140.21`` on terminal 1 and 2.
-
-.. code-block:: console
-
- # terminal#1 at host1
- # capture on ens1
- $ sudo tcpdump -i ens1
- tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
- listening on ens1, link-type EN10MB (Ethernet), capture size 262144 bytes
- 21:18:44.183261 ARP, Request who-has 192.168.140.21 tell R740n15, length 28
- 21:18:45.202182 ARP, Request who-has 192.168.140.21 tell R740n15, length 28
- ...
-
-.. code-block:: console
-
- # terminal#2 at host1
- # capture on ens2
- $ sudo tcpdump -i ens2
- tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
- listening on ens2, link-type EN10MB (Ethernet), capture size 262144 bytes
- 21:18:44.183261 ARP, Request who-has 192.168.140.21 tell R740n15, length 28
- 21:18:45.202182 ARP, Request who-has 192.168.140.21 tell R740n15, length 28
- ...
-
-Start to send ARP request with ping.
-
-.. code-block:: console
-
- # terminal#3 at host1
- # send packet from NIC0
- $ ping 192.168.140.21 -I ens0
-
-
-Stop Mirroring
-~~~~~~~~~~~~~~
-
-Delete ports for components.
-
-.. code-block:: none
-
- # Delete port for mir1
- spp > mirror 1; port del phy:0 rx mir1
- spp > mirror 1; port del phy:1 tx mir1
- spp > mirror 1; port del phy:2 tx mir1
-
-Next, stop components.
-
-.. code-block:: console
-
- # Stop mirror
- spp > mirror 1; component stop mir1 2 mirror
-
- spp > mirror 1; status
- Basic Information:
- - client-id: 1
- - ports: [phy:0, phy:1]
- Components:
- - core:2 '' (type: unuse)
-
-Finally, terminate ``spp_mirror`` to finish this usecase.
-
-.. code-block:: console
-
- spp > mirror 1; exit
diff --git a/docs/guides/spp_vf/use_cases/mirror_vms.rst b/docs/guides/spp_vf/use_cases/mirror_vms.rst
deleted file mode 100644
index 70311f8..0000000
--- a/docs/guides/spp_vf/use_cases/mirror_vms.rst
+++ /dev/null
@@ -1,285 +0,0 @@
-..
- SPDX-License-Identifier: BSD-3-Clause
- Copyright(c) 2018 Nippon Telegraph and Telephone Corporation
-
-
-.. _spp_mirror_use_cases_usecase:
-
-Mirroring packet from a VM
-==========================
-
-This section describes a usage for mirroring from a VM to other VM through
-spp_mirror. Traffic from host2 is forwarded to each VM inside host1 thorough
-``spp_vf``. ``spp_vf`` is required in usecase to forward traffic
-from host NIC to each VM.
-
-.. _figure_mirroring_from_vm:
-
-.. figure:: ../../images/spp_vf/spp_mirror_usecase_overview.*
- :width: 60%
-
- Mirroring from a VM
-
-
-Network Configuration
----------------------
-
-Detailed configuration of :numref:`figure_mirroring_from_vm` is described in
-:numref:`figure_spp_mirror_usecase_nwconfig`.
-In this senario, incoming packets though ``ring1`` are mirrored.
-In ``spp_mirror`` process, worker thread ``mirror1`` copies incoming packets and
-sends to orignal destination ``VM1`` and new one ``VM3``.
-
-.. _figure_spp_mirror_usecase_nwconfig:
-
-.. figure:: ../../images/spp_vf/spp_mirror_usecase_nwconfig.*
- :width: 80%
-
- Network configuration of mirroring
-
-
-Setup SPP and VMs
------------------
-
-Launch ``spp-ctl`` before launching SPP primary and secondary processes.
-You also need to launch ``spp.py`` if you use ``spp_vf`` from CLI.
-``-b`` option is for binding IP address to communicate other SPP processes,
-but no need to give it explicitly if ``127.0.0.1`` or ``localhost`` although
-doing explicitly in this example to be more understandable.
-
-.. code-block:: console
-
- $cd /path/to/spp
-
- # 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
-
-Start spp_primary with core list option ``-l 1``. It should be started
-with ``-n 16`` for giving enough number of rings.
-
-.. code-block:: console
-
- # Type the following in different terminal
- $ sudo ./src/primary/x86_64-native-linuxapp-gcc/spp_primary \
- -l 1 -n 4 \
- --socket-mem 512,512 \
- --huge-dir=/run/hugepages/kvm \
- --proc-type=primary \
- -- \
- -p 0x03 -n 16 -s 127.0.0.1:5555
-
-
-Launch spp_vf
-~~~~~~~~~~~~~
-
-Launch ``VM1``
-and launch ``spp_vf`` with core list ``-l 0,2-14`` in this usecase.
-
-.. code-block:: console
-
- $ sudo ./src/vf/x86_64-native-linuxapp-gcc/spp_vf \
- -l 0,2-14 -n 4 --proc-type=secondary \
- -- \
- --client-id 1 \
- -s 127.0.0.1:6666 \
- --vhost-client
-
-Start CLI.
-
-.. code-block:: console
-
- $ python src/spp.py
-
-Start components in ``spp_vf``.
-
-.. code-block:: console
-
- # start components
- spp > vf 1; component start classifier 2 classifier_mac
- spp > vf 1; component start merger 3 merge
- spp > vf 1; component start forwarder1 4 forward
- spp > vf 1; component start forwarder2 5 forward
- spp > vf 1; component start forwarder3 6 forward
- spp > vf 1; component start forwarder4 7 forward
-
-Add ports for started components.
-
-.. code-block:: console
-
- # add ports
- spp > vf 1; port add phy:0 rx classifier
- spp > vf 1; port add phy:0 tx merger
- spp > vf 1; port add ring:0 tx classifier
- spp > vf 1; port add ring:1 tx classifier
- spp > vf 1; port add ring:0 rx forwarder1
- spp > vf 1; port add ring:1 rx forwarder2
- spp > vf 1; port add ring:2 rx merger
- spp > vf 1; port add ring:3 rx merger
- spp > vf 1; port add ring:2 tx forwarder3
- spp > vf 1; port add ring:3 tx forwarder4
- spp > vf 1; port add vhost:0 tx forwarder1
- spp > vf 1; port add vhost:1 rx forwarder3
- spp > vf 1; port add vhost:2 tx forwarder2
- spp > vf 1; port add vhost:3 rx forwarder4
-
-Add classifier table entries.
-
-.. code-block:: console
-
- # add classifier table entry
- spp > vf 1; classifier_table add mac 52:54:00:12:34:56 ring:0
- spp > vf 1; classifier_table add mac 52:54:00:12:34:58 ring:1
-
-
-To capture incoming packets on VM1, use tcpdump for the interface, ``ens4``
-in this case.
-
-.. code-block:: console
-
- # capture on ens4 of VM1
- $ tcpdump -i ens4
-
-You send packets from the remote host1 and confirm packets are received.
-
-.. code-block:: console
-
- # spp-vm1 via NIC0 from host1
- $ ping 192.168.140.21
-
-
-
-Launch spp_mirror
-~~~~~~~~~~~~~~~~~
-
-Change directory to spp and confirm that it is already compiled.
-
-.. code-block:: console
-
- $ cd /path/to/spp
-
-Run secondary process ``spp_mirror``.
-
-.. code-block:: console
-
- $ sudo ./src/mirror/x86_64-native-linuxapp-gcc/app/spp_mirror \
- -l 0,15 -n 4 --proc-type=secondary \
- -- \
- --client-id 2 \
- -s 127.0.0.1:6666 \
- --vhost-client
-
-
-.. note::
- For SPP secondary processes, client id given with ``--client-id`` option
- should not be overlapped each otherand. It is also the same for core list
- ``-l``.
-
-Start mirror component with core ID 15.
-
-.. code-block:: console
-
- # Start component of spp_mirror on coreID 15
- spp > mirror 2; component start mirror1 15 mirror
-
-Add ``ring:0`` as rx ports and add ``ring:8`` and ``ring:9`` as tx port
-to mirror.
-
-.. code-block:: console
-
- # mirror1
- spp > mirror 2; port add ring:0 rx mirror1
- spp > mirror 2; port add ring:8 tx mirror1
- spp > mirror 2; port add ring:9 tx mirror1
-
-Start ``merger3`` with core ID 14.
-
-.. code-block:: console
-
- # Start component of spp_vf on coreID 14
- spp > vf 1; component start merger3 14 forward
-
-Add ``ring:9`` as rx port of ``merger3`` and ``vhost:4`` as
-tx port of ``merger3``.
-
-.. code-block:: console
-
- # merger3
- spp > vf 1; port add ring:9 rx merger3
- spp > vf 1; port add vhost:4 tx merger3
-
-Delete ``ring:0`` as rx port of ``forwarder1`` and ``ring:8`` as
-rx port of ``forwarder1``.
-
-.. code-block:: console
-
- # forward1
- spp > vf 1; port del ring:0 rx forwarder1
- spp > vf 1; port add ring:8 rx forwarder1
-
-
-Receive packet on VM3
-~~~~~~~~~~~~~~~~~~~~~
-
-You can capture incoming packets on VM3.
-If you capture packet on VM1, the same packet would be captured.
-
-.. code-block:: console
-
- # capture on ens4 fo VM1 and VM3
- $ tcpdump -i ens4
-
-Now, you can send packet from the remote host1.
-
-.. code-block:: console
-
- # spp-vm1 via NIC0 from host1
- $ ping 192.168.140.21
-
-
-Stop Mirroring
-~~~~~~~~~~~~~~
-
-Firstly, delete ports for components.
-
-Delete ports for components.
-
-.. code-block:: console
-
- # Delete port for mirror1
- spp > mirror 2; port del ring:0 rx mirror1
- spp > mirror 2; port del ring:8 tx mirror1
- spp > mirror 2; port del ring:9 tx mirror1
-
- # Delete port for merger3
- spp > vf 1; port del ring:9 rx merger3
- spp > vf 1; port del vhost:4 tx merger3
-
- # Delete port for forwarder1
- spp > vf 1; port del ring:8 rx forwarder1
-
-Next, stop components.
-
-.. code-block:: console
-
- # Stop mirror
- spp > mirror 2; component stop mirror1 15 mirror
-
- # Stop merger
- spp > vf 1; component stop merger3 14 forward
-
-Add port from classifier_mac1 to VM1.
-
-.. code-block:: console
-
- # Add port from classifier_mac1 to VM1.
- spp > vf 1; port add ring:0 rx forwarder1
-
-Exit spp_mirror
-~~~~~~~~~~~~~~~
-
-Terminate spp_mirror.
-
-.. code-block:: console
-
- spp > mirror 1; exit
diff --git a/docs/guides/use_cases/index.rst b/docs/guides/use_cases/index.rst
index cacf563..1422045 100644
--- a/docs/guides/use_cases/index.rst
+++ b/docs/guides/use_cases/index.rst
@@ -10,4 +10,5 @@ Use Cases
spp_nfv
spp_vf
+ spp_mirror
multi_nodes
diff --git a/docs/guides/use_cases/spp_mirror.rst b/docs/guides/use_cases/spp_mirror.rst
new file mode 100644
index 0000000..dac565f
--- /dev/null
+++ b/docs/guides/use_cases/spp_mirror.rst
@@ -0,0 +1,391 @@
+.. SPDX-License-Identifier: BSD-3-Clause
+ Copyright(c) 2019 Nippon Telegraph and Telephone Corporation
+
+
+.. _spp_usecases_mirror:
+
+spp_mirror
+==========
+
+Duplicate Packets
+-----------------
+
+Simply duplicate incoming packets and send to two destinations.
+Remote ``host1`` sends ARP packets by using ping command and
+``spp_mirror`` running on local ``host2`` duplicates packets to
+destination ports.
+
+
+Network Configuration
+~~~~~~~~~~~~~~~~~~~~~
+
+Detailed configuration is described in
+:numref:`figure_spp_mirror_use_cases_nw_config`.
+In this diagram, incoming packets from ``phy:0`` are mirrored.
+In ``spp_mirror`` process, worker thread ``mir1`` copies incoming packets and
+sends to two destinations ``phy:1`` and ``phy:2``.
+
+.. _figure_spp_mirror_use_cases_nw_config:
+
+.. figure:: ../images/spp_vf/basic_usecase_mirror_nwconfig.*
+ :width: 80%
+
+ Network configuration of mirroring
+
+
+Setup SPP
+~~~~~~~~~
+
+Change directory to spp and confirm that it is already compiled.
+
+.. code-block:: console
+
+ $ cd /path/to/spp
+
+Launch ``spp-ctl`` before launching SPP primary and secondary processes.
+You also need to launch ``spp.py`` if you use ``spp_mirror`` from CLI.
+``-b`` option is for binding IP address to communicate other SPP processes,
+but no need to give it explicitly if ``127.0.0.1`` or ``localhost`` .
+
+.. code-block:: console
+
+ # terminal 1
+ # Launch spp-ctl
+ $ python3 ./src/spp-ctl/spp-ctl -b 192.168.1.100
+
+.. code-block:: console
+
+ # terminal 2
+ # Launch SPP CLI
+ $ python3 ./src/spp.py -b 192.168.1.100
+
+Start ``spp_primary`` with core list option ``-l 1`` and
+three ports ``-p 0x07``.
+
+.. code-block:: console
+
+ # terminal 3
+ $ sudo ./src/primary/x86_64-native-linuxapp-gcc/spp_primary \
+ -l 1 -n 4 \
+ --socket-mem 512,512 \
+ --huge-dir=/run/hugepages/kvm \
+ --proc-type=primary \
+ -- \
+ -p 0x07 -n 10 -s 192.168.1.100:5555
+
+
+Launch spp_mirror
+~~~~~~~~~~~~~~~~~
+
+Run secondary process ``spp_mirror``.
+
+.. code-block:: console
+
+ # terminal 4
+ $ sudo ./src/mirror/x86_64-native-linuxapp-gcc/app/spp_mirror \
+ -l 0,2 -n 4 \
+ --proc-type secondary \
+ -- \
+ --client-id 1 \
+ -s 192.168.1.100:6666 \
+
+Start mirror component with core ID 2.
+
+.. code-block:: console
+
+ # terminal 2
+ spp > mirror 1; component start mir1 2 mirror
+
+Add ``phy:0`` as rx port, and ``phy:1`` and ``phy:2`` as tx ports.
+
+.. code-block:: none
+
+ # terminal 2
+ # add ports to mir1
+ spp > mirror 1; port add phy:0 rx mir1
+ spp > mirror 1; port add phy:1 tx mir1
+ spp > mirror 1; port add phy:2 tx mir1
+
+
+Duplicate Packets
+~~~~~~~~~~~~~~~~~
+
+To check packets are mirrored, you run tcpdump for ``ens1`` and ``ens2``.
+As you run ping for ``ens0`` next, you will see the same ARP requests trying
+to resolve ``192.168.140.21`` on terminal 1 and 2.
+
+.. code-block:: console
+
+ # terminal 1 at host1
+ # capture on ens1
+ $ sudo tcpdump -i ens1
+ tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
+ listening on ens1, link-type EN10MB (Ethernet), capture size 262144 bytes
+ 21:18:44.183261 ARP, Request who-has 192.168.140.21 tell R740n15, length 28
+ 21:18:45.202182 ARP, Request who-has 192.168.140.21 tell R740n15, length 28
+ ....
+
+.. code-block:: console
+
+ # terminal 2 at host1
+ # capture on ens2
+ $ sudo tcpdump -i ens2
+ tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
+ listening on ens2, link-type EN10MB (Ethernet), capture size 262144 bytes
+ 21:18:44.183261 ARP, Request who-has 192.168.140.21 tell R740n15, length 28
+ 21:18:45.202182 ARP, Request who-has 192.168.140.21 tell R740n15, length 28
+ ...
+
+Start to send ARP request with ping.
+
+.. code-block:: console
+
+ # terminal 3 at host1
+ # send packet from NIC0
+ $ ping 192.168.140.21 -I ens0
+
+
+Stop Mirroring
+~~~~~~~~~~~~~~
+
+Delete ports for components.
+
+.. code-block:: none
+
+ # Delete port for mir1
+ spp > mirror 1; port del phy:0 rx mir1
+ spp > mirror 1; port del phy:1 tx mir1
+ spp > mirror 1; port del phy:2 tx mir1
+
+Next, stop components.
+
+.. code-block:: console
+
+ # Stop mirror
+ spp > mirror 1; component stop mir1 2 mirror
+
+ spp > mirror 1; status
+ Basic Information:
+ - client-id: 1
+ - ports: [phy:0, phy:1]
+ Components:
+ - core:2 '' (type: unuse)
+
+Finally, terminate ``spp_mirror`` to finish this usecase.
+
+.. code-block:: console
+
+ spp > mirror 1; exit
+
+
+.. _spp_usecases_mirror_monitor:
+
+Monitoring Packets
+------------------
+
+Duplicate classified packets for monitoring before going to a VM.
+In this usecase, we are only interested in packets going to ``VM1``.
+Although you might be able to run packet monitor app on host,
+run minitor on ``VM3`` considering more NFV like senario.
+You use ``spp_mirror`` for copying, and ``spp_vf`` classifying packets.
+
+.. _figure_usecase_monitor_overview:
+
+.. figure:: ../images/spp_vf/spp_mirror_usecase_overview.*
+ :width: 60%
+
+ Monitoring with spp_mirror
+
+
+Network Configuration
+~~~~~~~~~~~~~~~~~~~~~
+
+Detailed configuration of :numref:`figure_usecase_monitor_overview`
+is described in :numref:`figure_usecase_monitor_nwconfig`.
+In this senario, worker thread ``mir1`` copies incoming packets
+from though ``ring:0``.
+Then, sends to orignal destination ``VM1`` and anohter one ``VM3``.
+
+.. _figure_usecase_monitor_nwconfig:
+
+.. figure:: ../images/spp_vf/spp_mirror_usecase_nwconfig.*
+ :width: 80%
+
+ Network configuration of monitoring packets
+
+
+Setup SPP and VMs
+~~~~~~~~~~~~~~~~~
+
+Launch ``spp-ctl`` before launching SPP primary and secondary processes.
+You also need to launch ``spp.py`` if you use ``spp_vf`` from CLI.
+``-b`` option is for binding IP address to communicate other SPP processes,
+but no need to give it explicitly if ``127.0.0.1`` or ``localhost`` although
+doing explicitly in this example to be more understandable.
+
+.. code-block:: console
+
+ # 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
+
+Start spp_primary with core list option ``-l 1``.
+
+.. code-block:: console
+
+ # terminal 3
+ # Type the following in different terminal
+ $ sudo ./src/primary/x86_64-native-linuxapp-gcc/spp_primary \
+ -l 1 -n 4 \
+ --socket-mem 512,512 \
+ --huge-dir=/run/hugepages/kvm \
+ --proc-type=primary \
+ -- \
+ -p 0x03 \
+ -n 10 -s 192.168.1.100:5555
+
+
+Launch spp_vf
+~~~~~~~~~~~~~
+
+Launch ``VM1``, ``VM2`` and ``spp_vf`` with core list ``-l 0,2-8``.
+
+.. code-block:: console
+
+ # terminal 4
+ $ sudo ./src/vf/x86_64-native-linuxapp-gcc/spp_vf \
+ -l 0,2-8 \
+ -n 4 --proc-type secondary \
+ -- \
+ --client-id 1 \
+ -s 192.168.1.100:6666 \
+ --vhost-client
+
+
+Start components in ``spp_vf``.
+
+.. code-block:: none
+
+ # terminal 2
+ spp > vf 1; component start cls 2 classifier_mac
+ spp > vf 1; component start mgr1 3 merge
+ spp > vf 1; component start mgr2 4 merge
+ spp > vf 1; component start fwd1 5 forward
+ spp > vf 1; component start fwd2 6 forward
+ spp > vf 1; component start fwd3 7 forward
+ spp > vf 1; component start fwd4 8 forward
+
+Add ports for components.
+
+.. code-block:: none
+
+ # terminal 2
+ spp > vf 1; port add phy:0 rx cls
+ spp > vf 1; port add ring:0 tx cls
+ spp > vf 1; port add ring:1 tx cls
+
+ spp > vf 1; port add ring:5 rx fwd1
+ spp > vf 1; port add vhost:0 tx fwd1
+
+ spp > vf 1; port add ring:1 rx fwd2
+ spp > vf 1; port add vhost:2 tx fwd2
+
+ spp > vf 1; port add vhost:1 rx fwd3
+ spp > vf 1; port add ring:2 tx fwd3
+
+ spp > vf 1; port add vhost:3 rx fwd4
+ spp > vf 1; port add ring:3 tx fwd4
+
+ spp > vf 1; port add ring:2 rx mgr1
+ spp > vf 1; port add ring:3 rx mgr1
+ spp > vf 1; port add phy:0 tx mgr1
+
+ spp > vf 1; port add ring:4 rx mgr2
+ spp > vf 1; port add vhost:4 tx mgr2
+
+Add classifier table entries.
+
+.. code-block:: none
+
+ # terminal 2
+ spp > vf 1; classifier_table add mac 52:54:00:12:34:56 ring:0
+ spp > vf 1; classifier_table add mac 52:54:00:12:34:58 ring:1
+
+
+To capture incoming packets on ``VM1``, use tcpdump for the interface,
+``ens4`` in this case.
+
+.. code-block:: console
+
+ # terminal 5
+ # capture on ens4 of VM1
+ $ tcpdump -i ens4
+
+You send packets from the remote ``host1`` and confirm packets are received.
+IP address is the same as :ref:`Usecase of spp_vf<spp_usecases_vf>`.
+
+.. code-block:: console
+
+ # Send packets from host1
+ $ ping 192.168.140.21
+
+
+Launch spp_mirror
+~~~~~~~~~~~~~~~~~
+
+Run ``spp_mirror``.
+
+.. code-block:: console
+
+ $ sudo ./src/mirror/x86_64-native-linuxapp-gcc/app/spp_mirror \
+ -l 0,9 \
+ -n 4 --proc-type secondary \
+ -- \
+ --client-id 2 \
+ -s 192.168.1.100:6666 \
+ --vhost-client
+
+Start mirror component with lcore ID 9.
+
+.. code-block:: console
+
+ # Start component on lcore 9
+ spp > mirror 2; component start mir1 9 mirror
+
+Add ``ring:0`` as rx port, ``ring:4`` and ``ring:5`` as tx ports.
+
+.. code-block:: none
+
+ # terminal 2
+ spp > mirror 2; port add ring:0 rx mir1
+ spp > mirror 2; port add ring:4 tx mir1
+ spp > mirror 2; port add ring:5 tx mir1
+
+
+Receive Packet on VM3
+~~~~~~~~~~~~~~~~~~~~~
+
+You can capture incoming packets on VM3.
+If you capture packet on VM1, the same packet would be captured.
+
+.. code-block:: console
+
+ # capture on ens4 fo VM1 and VM3
+ $ tcpdump -i ens4
+
+Now, you can send packet from the remote host1.
+
+.. code-block:: console
+
+ # spp-vm1 via NIC0 from host1
+ $ ping 192.168.140.21
+
+
+Stop Mirroring
+~~~~~~~~~~~~~~
+
+Graceful shutdown of secondary processes is same as previous usecases.
--
2.7.4
next prev parent reply other threads:[~2019-02-18 11:50 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-02-18 11:48 [spp] [PATCH 00/20] Remove SPP VF chapter in docs ogawa.yasufumi
2019-02-18 11:48 ` [spp] [PATCH 01/20] docs: move design of SPP VF ogawa.yasufumi
2019-02-18 11:48 ` [spp] [PATCH 02/20] docs: divide getting started guide ogawa.yasufumi
2019-02-18 11:48 ` [spp] [PATCH 03/20] docs: move libvirt setup to gsg ogawa.yasufumi
2019-02-18 11:48 ` [spp] [PATCH 04/20] docs: move virsh setup section ogawa.yasufumi
2019-02-18 11:48 ` [spp] [PATCH 05/20] docs: move package installation to gsg ogawa.yasufumi
2019-02-18 11:48 ` [spp] [PATCH 06/20] docs: move descs of packet copy mode of spp_mirror ogawa.yasufumi
2019-02-18 11:48 ` [spp] [PATCH 07/20] docs: move usecase of spp_vf ogawa.yasufumi
2019-02-18 11:48 ` [spp] [PATCH 08/20] docs: update usecase of ssh with spp_vf ogawa.yasufumi
2019-02-18 11:48 ` [spp] [PATCH 09/20] docs: update how to use for virsh ogawa.yasufumi
2019-02-18 11:48 ` ogawa.yasufumi [this message]
2019-02-18 11:48 ` [spp] [PATCH 11/20] docs: revise how to use and usecases ogawa.yasufumi
2019-02-18 11:48 ` [spp] [PATCH 12/20] docs: move usecase of spp_pcap ogawa.yasufumi
2019-02-18 11:48 ` [spp] [PATCH 13/20] docs: remove SPP VF ogawa.yasufumi
2019-02-18 11:48 ` [spp] [PATCH 14/20] docs: move image of ICMP usecase of spp_vf ogawa.yasufumi
2019-02-18 11:48 ` [spp] [PATCH 15/20] docs: revise labels of image of spp_vf usecase ogawa.yasufumi
2019-02-18 11:48 ` [spp] [PATCH 16/20] docs: fix image of spp_mirror monitoring usecase ogawa.yasufumi
2019-02-18 11:48 ` [spp] [PATCH 17/20] docs: move image of design of spp_vf ogawa.yasufumi
2019-02-18 11:48 ` [spp] [PATCH 18/20] docs: move images of design of mirror and pcap ogawa.yasufumi
2019-02-18 11:48 ` [spp] [PATCH 19/20] docs: move image of overview of spp_pcap ogawa.yasufumi
2019-02-18 11:48 ` [spp] [PATCH 20/20] docs: fix in image of spp_mirror monitor usecase ogawa.yasufumi
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=1550490511-31683-11-git-send-email-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).