From: ogawa.yasufumi@lab.ntt.co.jp
To: ferruh.yigit@intel.com, spp@dpdk.org, nakamura.hiroyuki@po.ntt-tx.co.jp
Cc: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>
Subject: [spp] [PATCH 13/28] docs: add usecase section in spp_vf
Date: Mon, 5 Feb 2018 11:39:06 +0900 [thread overview]
Message-ID: <20180205023921.7775-13-ogawa.yasufumi@lab.ntt.co.jp> (raw)
In-Reply-To: <20180205023921.7775-1-ogawa.yasufumi@lab.ntt.co.jp>
From: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>
Signed-off-by: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>
---
docs/guides/spp_vf/use_cases/index.rst | 5 +
docs/guides/spp_vf/use_cases/usecase1.rst | 361 ++++++++++++++++++++++++++++++
2 files changed, 366 insertions(+)
create mode 100644 docs/guides/spp_vf/use_cases/usecase1.rst
diff --git a/docs/guides/spp_vf/use_cases/index.rst b/docs/guides/spp_vf/use_cases/index.rst
index ba8c582..302085f 100644
--- a/docs/guides/spp_vf/use_cases/index.rst
+++ b/docs/guides/spp_vf/use_cases/index.rst
@@ -30,3 +30,8 @@
Use Cases
=========
+
+.. toctree::
+ :maxdepth: 2
+
+ usecase1
diff --git a/docs/guides/spp_vf/use_cases/usecase1.rst b/docs/guides/spp_vf/use_cases/usecase1.rst
new file mode 100644
index 0000000..05dc86c
--- /dev/null
+++ b/docs/guides/spp_vf/use_cases/usecase1.rst
@@ -0,0 +1,361 @@
+.. BSD LICENSE
+ Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ * Neither the name of Intel Corporation nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+
+Simple SSH Login
+================
+
+This section describes a usecase for simple SSH login through SPP VF.
+Incoming packets are classified based on destination addresses defined
+in ``classifier``.
+Reterned packets are aggregated to ``merger`` to send it an outgoing
+port.
+
+.. _figure_simple_ssh_login:
+
+.. figure:: ../images/usecase1_overview.*
+ :height: 400 em
+ :width: 400 em
+
+ Simple SSH Login
+
+
+Launch SPP VF
+~~~~~~~~~~~~~
+
+Change directory to spp and confirm that it is already compiled.
+
+.. code-block:: console
+
+ $ cd /path/to/spp
+
+As spp, launch controller first. You notice that SPP VF has its own
+controller ``spp_vf.py`` and do not use ``spp.py``.
+
+.. code-block:: console
+
+ # Launch spp_vf.py
+ $ python ./src/spp_vf.py -p 5555 -s 6666
+
+Then, run ``spp_primary``.
+
+.. code-block:: console
+
+ $ sudo ./src/primary/x86_64-native-linuxapp-gcc/spp_primary \
+ -c 0x02 -n 4 \
+ --socket-mem 512,512 \
+ --huge-dir=/run/hugepages/kvm \
+ --proc-type=primary \
+ -- \
+ -p 0x03 -n 8 -s 127.0.0.1:5555
+
+After ``spp_primary`` is launched, run secondary process ``spp_vf``.
+
+.. code-block:: console
+
+ $ sudo ./src/vf/x86_64-native-linuxapp-gcc/spp_vf \
+ -c 0x00fe -n 4 --proc-type=secondary \
+ -- \
+ --client-id 1 \
+ -s 127.0.0.1:6666 \
+ --vhost-client
+
+
+Network Configuration
+~~~~~~~~~~~~~~~~~~~~~
+
+Detailed configuration of :numref:`figure_simple_ssh_login` is
+described below.
+
+.. _figure_network_config:
+
+.. figure:: ../images/usecase1_nwconfig.*
+ :height: 720 em
+ :width: 720 em
+
+ Network Configuration
+
+First, start the ``component`` of classifier, forwarders, and merge
+in ``spp_vf``.
+
+.. code-block:: console
+
+ # Start component to spp_vf
+ spp > sec 1;component start classifier1 2 classifier_mac
+ spp > sec 1;component start forward1 3 forward
+ spp > sec 1;component start forward2 4 forward
+ spp > sec 1;component start forward3 5 forward
+ spp > sec 1;component start forward4 6 forward
+ spp > sec 1;component start merge1 7 merge
+
+Second, add ``port`` to each component in ``spp_vf``.
+
+.. code-block:: console
+
+ # Add port to component
+ spp > sec 1;port add phy:0 rx classifier1
+ spp > sec 1;port add ring:0 tx classifier1
+ spp > sec 1;port add ring:1 tx classifier1
+ spp > sec 1;port add ring:0 rx forward1
+ spp > sec 1;port add vhost:0 tx forward1
+ spp > sec 1;port add vhost:0 rx forward2
+ spp > sec 1;port add ring:2 tx forward2
+ spp > sec 1;port add ring:1 rx forward3
+ spp > sec 1;port add vhost:2 rx forward3
+ spp > sec 1;port add vhost:2 tx forward4
+ spp > sec 1;port add ring:3 rx forward4
+ spp > sec 1;port add ring:2 rx merge1
+ spp > sec 1;port add ring:3 rx merge1
+ spp > sec 1;port add phy:0 tx merge1
+
+To communicate remote node and VM via NIC0, each of packets from
+remote node is required to be routed to specific VM according
+to its MAC address.
+This configuration is done by ``classfier_table`` command.
+
+.. code-block:: console
+
+ # Register MAC address to classifier
+ spp > classifier_table add mac 52:54:00:12:34:56 ring:0
+ spp > classifier_table add mac 52:54:00:12:34:58 ring:1
+
+
+For NIC1, also setup ``component``, ``port`` and ``classifier_table``,
+as following steps.
+
+.. code-block:: console
+
+ # Start component to spp_vf
+ spp > sec 1;component start classifier2 8 classifier_mac
+ spp > sec 1;component start forward5 9 forward
+ spp > sec 1;component start forward6 10 forward
+ spp > sec 1;component start forward7 11 forward
+ spp > sec 1;component start forward8 12 forward
+ spp > sec 1;component start merge2 13 merge
+
+.. code-block:: console
+
+ # Add port to component
+ spp > sec 1;port add phy:1 rx classifier2
+ spp > sec 1;port add ring:4 tx classifier2
+ spp > sec 1;port add ring:5 tx classifier2
+ spp > sec 1;port add ring:4 rx forward5
+ spp > sec 1;port add vhost:1 tx forward5
+ spp > sec 1;port add vhost:1 rx forward6
+ spp > sec 1;port add ring:6 tx forward6
+ spp > sec 1;port add ring:5 rx forward7
+ spp > sec 1;port add vhost:3 rx forward7
+ spp > sec 1;port add vhost:3 tx forward8
+ spp > sec 1;port add ring:7 rx forward8
+ spp > sec 1;port add ring:6 rx merge2
+ spp > sec 1;port add ring:7 rx merge2
+ spp > sec 1;port add phy:1 tx merge2
+
+.. code-block:: console
+
+ # Register MAC address to classifier
+ spp > classifier_table add mac 52:54:00:12:34:57 ring:4
+ spp > classifier_table add mac 52:54:00:12:34:59 ring:5
+
+To activate above settings, input the `flush` command.
+
+.. code-block:: console
+
+ spp > sec 1;flush
+
+Setup for VMs
+~~~~~~~~~~~~~
+
+Start two VMs.
+
+.. code-block:: console
+
+ $ virsh start spp-vm1
+ $ virsh start spp-vm2
+
+Login to ``spp-vm1`` for network configuration.
+To not ask for unknown keys while login VMs,
+set ``-oStrictHostKeyChecking=no`` option for ssh.
+
+.. code-block:: console
+
+ $ ssh -oStrictHostKeyChecking=no sppuser@192.168.122.31
+
+Up interfaces for vhost inside ``spp-vm1``.
+In addition, you have to disable TCP offload function, or ssh is failed
+after configuration is done.
+
+.. code-block:: console
+
+ # up interfaces
+ $ sudo ifconfig ens4 inet 192.168.140.21 netmask 255.255.255.0 up
+ $ sudo ifconfig ens5 inet 192.168.150.22 netmask 255.255.255.0 up
+
+ # disable TCP offload
+ $ sudo ethtool -K ens4 tx off
+ $ sudo ethtool -K ens5 tx off
+
+Configurations for ``spp-vm2`` is same as ``spp-vm1``.
+
+.. code-block:: console
+
+ $ ssh -oStrictHostKeyChecking=no sppuser@192.168.122.32
+
+ # up interfaces
+ $ sudo ifconfig ens4 inet 192.168.140.31 netmask 255.255.255.0 up
+ $ sudo ifconfig ens5 inet 192.168.150.32 netmask 255.255.255.0 up
+
+ # disable TCP offload
+ $ sudo ethtool -K ens4 tx off
+ $ sudo ethtool -K ens5 tx off
+
+
+Login to VMs
+~~~~~~~~~~~~
+
+Now, you can login to VMs.
+
+.. code-block:: console
+
+ # spp-vm1 via NIC0
+ $ ssh sppuser@192.168.140.21
+
+ # spp-vm1 via NIC1
+ $ ssh sppuser@192.168.150.22
+
+ # spp-vm2 via NIC0
+ $ ssh sppuser@192.168.140.31
+
+ # spp-vm2 via NIC1
+ $ ssh sppuser@192.168.150.32
+
+Close Applications
+~~~~~~~~~~~~~~~~~~
+
+Describe the procedure to close the applications.
+
+(1) Stop and delete command
+
+By following commands from `spp_vf.py`, you can delete `classifier_table`
+and ports, and stop components.
+The `flush` command is required to reflect this deletion and stopping.
+If you close the applications by `Ctrl+C` or `bye all` command,
+all settings will be deleted, following steps are not mandatory.
+
+First, delete the configuration between NIC-1 and VM and stop related components.
+
+.. code-block:: console
+
+ # Delete MAC address from Classifier
+ spp > classifier_table del mac 51:54:00:12:34:56 ring:0
+ spp > classifier_table del mac 51:54:00:12:34:58 ring:1
+
+.. code-block:: console
+
+ # Delete port to component
+ spp > sec 0;port del phy:0 rx classifier1
+ spp > sec 0;port del ring:0 tx classifier1
+ spp > sec 0;port del ring:1 tx classifier1
+ spp > sec 0;port del ring:0 rx forward1
+ spp > sec 0;port del vhost:0 tx forward1
+ spp > sec 0;port del vhost:0 rx forward2
+ spp > sec 0;port del ring:2 tx forward2
+ spp > sec 0;port del ring:1 rx forward3
+ spp > sec 0;port del vhost:2 rx forward3
+ spp > sec 0;port del vhost:2 tx forward4
+ spp > sec 0;port del ring:3 rx forward4
+ spp > sec 0;port del ring:2 rx merge1
+ spp > sec 0;port del ring:3 rx merge1
+ spp > sec 0;port del phy:0 tx merge1
+
+.. code-block:: console
+
+ # Stop component to spp_vf
+ spp > sec 0;component stop classifier1
+ spp > sec 0;component stop forward1
+ spp > sec 0;component stop forward2
+ spp > sec 0;component stop forward3
+ spp > sec 0;component stop forward4
+ spp > sec 0;component stop merge1
+
+Second, delete the configuration between NIC0 and VM and stop related components.
+
+.. code-block:: console
+
+ # Delete MAC address from Classifier
+ spp > classifier_table del mac 51:54:00:12:34:57 ring:4
+ spp > classifier_table del mac 51:54:00:12:34:59 ring:5
+
+.. code-block:: console
+
+ # Delete port to component
+ spp > sec 0;port del phy:1 rx classifier2
+ spp > sec 0;port del ring:4 tx classifier2
+ spp > sec 0;port del ring:5 tx classifier2
+ spp > sec 0;port del ring:4 rx forward5
+ spp > sec 0;port del vhost:1 tx forward5
+ spp > sec 0;port del vhost:1 rx forward6
+ spp > sec 0;port del ring:6 tx forward6
+ spp > sec 0;port del ring:5 rx forward7
+ spp > sec 0;port del vhost:3 rx forward7
+ spp > sec 0;port del vhost:3 tx forward8
+ spp > sec 0;port del ring:7 rx forward8
+ spp > sec 0;port del ring:6 rx merge2
+ spp > sec 0;port del ring:7 rx merge2
+ spp > sec 0;port del phy:1 tx merge2
+
+.. code-block:: console
+
+ # Stop component to spp_vf
+ spp > sec 0;component stop classifier2 8 classifier_mac
+ spp > sec 0;component stop forward5 9 forward
+ spp > sec 0;component stop forward6 10 forward
+ spp > sec 0;component stop forward7 11 forward
+ spp > sec 0;component stop forward8 12 forward
+ spp > sec 0;component stop merge2 13 merge
+
+To activate above settings, input the ``flush`` command.
+
+.. code-block:: console
+
+ spp > sec 0;flush
+
+
+(2) Close SPP VF
+
+Simply, ``spp_vf`` and primary process can be closed
+by ``Ctrl+C`` or ``bye all`` command from ``spp_vf.py``.
+Also ``spp_vf.py`` can be closed by the ``bye`` command.
+
+.. code-block:: console
+
+ # stop controller
+ spp > bye all
+ spp > bye
--
2.13.1
next prev parent reply other threads:[~2018-02-05 2:39 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-05 2:38 [spp] [PATCH 01/28] docs: change doc structure to add spp_vf ogawa.yasufumi
2018-02-05 2:38 ` [spp] [PATCH 02/28] docs: add indexes for spp_vf ogawa.yasufumi
2018-02-05 2:38 ` [spp] [PATCH 03/28] docs: add spp_vf overview ogawa.yasufumi
2018-02-05 2:38 ` [spp] [PATCH 04/28] docs: add spp_vf design section ogawa.yasufumi
2018-02-05 2:38 ` [spp] [PATCH 05/28] docs: add spp_vf gsg section ogawa.yasufumi
2018-02-05 2:38 ` [spp] [PATCH 06/28] docs: add spp_vf explanation section ogawa.yasufumi
2018-02-05 2:39 ` [spp] [PATCH 07/28] docs: add image for sample usage ogawa.yasufumi
2018-02-05 2:39 ` [spp] [PATCH 08/28] docs: fix bug spp_vf howto_use guide ogawa.yasufumi
2018-02-05 2:39 ` [spp] [PATCH 09/28] docs: fix link warning ogawa.yasufumi
2018-02-05 2:39 ` [spp] [PATCH 10/28] docs: add overview image for spp_vf usercase1 ogawa.yasufumi
2018-02-05 2:39 ` [spp] [PATCH 11/28] docs: add config " ogawa.yasufumi
2018-02-06 15:34 ` Ferruh Yigit
2018-02-07 0:10 ` Yasufumi Ogawa
2018-02-07 15:42 ` Ferruh Yigit
2018-02-07 0:26 ` ogawa.yasufumi
2018-02-05 2:39 ` [spp] [PATCH 12/28] docs: add numref attribute for sphinx ogawa.yasufumi
2018-02-05 2:39 ` ogawa.yasufumi [this message]
2018-02-05 2:39 ` [spp] [PATCH 14/28] docs: add ssh login usecase for spp_vf ogawa.yasufumi
2018-02-05 2:39 ` [spp] [PATCH 15/28] docs: add labels for using sphinx ref directive ogawa.yasufumi
2018-02-05 2:39 ` [spp] [PATCH 16/28] docs: update spp_vf overview image ogawa.yasufumi
2018-02-05 2:39 ` [spp] [PATCH 17/28] docs: update spp_vf command index ogawa.yasufumi
2018-02-05 2:39 ` [spp] [PATCH 18/28] docs: add spp_vf primary command section ogawa.yasufumi
2018-02-05 2:39 ` [spp] [PATCH 19/28] docs: add spp_vf secondary " ogawa.yasufumi
2018-02-05 2:39 ` [spp] [PATCH 20/28] docs: add spp_vf common " ogawa.yasufumi
2018-02-05 2:39 ` [spp] [PATCH 21/28] docs: fix bug spp_vf command index ogawa.yasufumi
2018-02-07 15:44 ` [spp] [PATCH 01/28] docs: change doc structure to add spp_vf Ferruh Yigit
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=20180205023921.7775-13-ogawa.yasufumi@lab.ntt.co.jp \
--to=ogawa.yasufumi@lab.ntt.co.jp \
--cc=ferruh.yigit@intel.com \
--cc=nakamura.hiroyuki@po.ntt-tx.co.jp \
--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).