From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from tama50.ecl.ntt.co.jp (tama50.ecl.ntt.co.jp [129.60.39.147]) by dpdk.org (Postfix) with ESMTP id 43BA65F2E for ; Mon, 18 Feb 2019 12:50:49 +0100 (CET) Received: from vc1.ecl.ntt.co.jp (vc1.ecl.ntt.co.jp [129.60.86.153]) by tama50.ecl.ntt.co.jp (8.13.8/8.13.8) with ESMTP id x1IBoncs029212; Mon, 18 Feb 2019 20:50:49 +0900 Received: from vc1.ecl.ntt.co.jp (localhost [127.0.0.1]) by vc1.ecl.ntt.co.jp (Postfix) with ESMTP id 13545EA817A; Mon, 18 Feb 2019 20:50:49 +0900 (JST) Received: from localhost.localdomain (lobster.nslab.ecl.ntt.co.jp [129.60.13.95]) by vc1.ecl.ntt.co.jp (Postfix) with ESMTP id C7B49EA8188; Mon, 18 Feb 2019 20:50:48 +0900 (JST) From: ogawa.yasufumi@lab.ntt.co.jp To: spp@dpdk.org, ferruh.yigit@intel.com, ogawa.yasufumi@lab.ntt.co.jp Date: Mon, 18 Feb 2019 20:48:19 +0900 Message-Id: <1550490511-31683-9-git-send-email-ogawa.yasufumi@lab.ntt.co.jp> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1550490511-31683-1-git-send-email-ogawa.yasufumi@lab.ntt.co.jp> References: <1550490511-31683-1-git-send-email-ogawa.yasufumi@lab.ntt.co.jp> X-TM-AS-MML: disable Subject: [spp] [PATCH 08/20] docs: update usecase of ssh with spp_vf X-BeenThere: spp@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Soft Patch Panel List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 18 Feb 2019 11:50:53 -0000 From: Yasufumi Ogawa This patch is to update usecase of spp_vf for ssh login. Signed-off-by: Yasufumi Ogawa --- docs/guides/images/spp_vf/usecase1_nwconfig.svg | 1916 ----------------------- docs/guides/images/spp_vf/usecase1_overview.svg | 411 ----- docs/guides/images/usecases/vf_ssh_nwconfig.svg | 1916 +++++++++++++++++++++++ docs/guides/images/usecases/vf_ssh_overview.svg | 411 +++++ docs/guides/use_cases/spp_vf.rst | 432 +++-- 5 files changed, 2527 insertions(+), 2559 deletions(-) delete mode 100644 docs/guides/images/spp_vf/usecase1_nwconfig.svg delete mode 100644 docs/guides/images/spp_vf/usecase1_overview.svg create mode 100644 docs/guides/images/usecases/vf_ssh_nwconfig.svg create mode 100644 docs/guides/images/usecases/vf_ssh_overview.svg diff --git a/docs/guides/images/spp_vf/usecase1_nwconfig.svg b/docs/guides/images/spp_vf/usecase1_nwconfig.svg deleted file mode 100644 index 65ac3b8..0000000 --- a/docs/guides/images/spp_vf/usecase1_nwconfig.svg +++ /dev/null @@ -1,1916 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - host1 - host2 - NIC2 - NIC3 - NIC0 - NIC1 - ring0 - ring1 - ring2 - ring3 - ring4 - ring5 - ring6 - ring7 - vhost0 - vhost1 - vhost2 - vhost3 - - - VM1 - VM2 - vNIC0 - vNIC1 - vNIC2 - vNIC3 - - - classifier1 - merger1 - classifier2 - merger2 - forwarder1 - SSHclient - SSHserver1 - SSHServer2 - forwarder2 - forwarder3 - forwarder4 - forwarder5 - forwarder6 - forwarder7 - forwarder8 - - diff --git a/docs/guides/images/spp_vf/usecase1_overview.svg b/docs/guides/images/spp_vf/usecase1_overview.svg deleted file mode 100644 index 8a2638f..0000000 --- a/docs/guides/images/spp_vf/usecase1_overview.svg +++ /dev/null @@ -1,411 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SSHclient - SSHserver1 - SSHserver2 - Merger - Classifier - - - host2 - host1 - VM1 - VM2 - - diff --git a/docs/guides/images/usecases/vf_ssh_nwconfig.svg b/docs/guides/images/usecases/vf_ssh_nwconfig.svg new file mode 100644 index 0000000..65ac3b8 --- /dev/null +++ b/docs/guides/images/usecases/vf_ssh_nwconfig.svg @@ -0,0 +1,1916 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + host1 + host2 + NIC2 + NIC3 + NIC0 + NIC1 + ring0 + ring1 + ring2 + ring3 + ring4 + ring5 + ring6 + ring7 + vhost0 + vhost1 + vhost2 + vhost3 + + + VM1 + VM2 + vNIC0 + vNIC1 + vNIC2 + vNIC3 + + + classifier1 + merger1 + classifier2 + merger2 + forwarder1 + SSHclient + SSHserver1 + SSHServer2 + forwarder2 + forwarder3 + forwarder4 + forwarder5 + forwarder6 + forwarder7 + forwarder8 + + diff --git a/docs/guides/images/usecases/vf_ssh_overview.svg b/docs/guides/images/usecases/vf_ssh_overview.svg new file mode 100644 index 0000000..8a2638f --- /dev/null +++ b/docs/guides/images/usecases/vf_ssh_overview.svg @@ -0,0 +1,411 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SSHclient + SSHserver1 + SSHserver2 + Merger + Classifier + + + host2 + host1 + VM1 + VM2 + + diff --git a/docs/guides/use_cases/spp_vf.rst b/docs/guides/use_cases/spp_vf.rst index 90412f9..ec07602 100644 --- a/docs/guides/use_cases/spp_vf.rst +++ b/docs/guides/use_cases/spp_vf.rst @@ -22,7 +22,7 @@ Incoming packets through ``NIC0`` are classified based on destination address. .. _figure_spp_vf_use_cases_nw_config: .. figure:: ../images/spp_vf/basic_usecase_vf_nwconfig.* - :width: 90% + :width: 80% Network Configuration @@ -42,7 +42,7 @@ Launch ``spp-ctl`` and SPP CLI before primary and secondary processes. # terminal 2 $ python ./src/spp.py -b 192.168.1.100 -``spp_primary`` on the second lcore with ``-l 1`` and two ports ``-p 0x03``. +``spp_primary`` on the second lcore with ``-l 0`` and two ports ``-p 0x03``. .. code-block:: console @@ -54,7 +54,7 @@ Launch ``spp-ctl`` and SPP CLI before primary and secondary processes. --proc-type=primary \ -- \ -p 0x03 \ - -n 10 -s 127.0.0.1:5555 + -n 10 -s 192.168.1.100:5555 After ``spp_primary`` is launched, run secondary process ``spp_vf``. In this case, lcore options is ``-l 2-6`` for one master thread and four @@ -68,7 +68,7 @@ worker threads. -n 4 --proc-type=secondary \ -- \ --client-id 1 \ - -s 127.0.0.1:6666 \ + -s 192.168.1.100:6666 \ Network Configuration @@ -80,7 +80,7 @@ step by step. First of all, setup worker threads from ``component`` command with lcore ID and other options on local host ``host2``. -.. code-block:: console +.. code-block:: none # terminal 2 spp > vf 1; component start cls 3 classifier_mac @@ -91,7 +91,7 @@ and other options on local host ``host2``. Add ports for each of components as following. The number of rx and tx ports are different for each of component's role. -.. code-block:: console +.. code-block:: none # terminal 2 @@ -115,7 +115,7 @@ You also need to configure MAC address table for classifier. In this case, you need to register two MAC addresses. Although any MAC can be used, you use ``52:54:00:12:34:56`` and ``52:54:00:12:34:58``. -.. code-block:: console +.. code-block:: none # terminal 2 spp > vf 1; classifier_table add mac 52:54:00:12:34:56 ring:0 @@ -172,16 +172,19 @@ You can see ICMP Echo requests are received from ping on terminal 2. Shutdown spp_vf Components ~~~~~~~~~~~~~~~~~~~~~~~~~~ +Basically, you can shutdown all of SPP processes with ``bye all`` +command. +This section describes graceful shutting down. First, delete entries of ``classifier_table`` and ports of components. -.. code-block:: console +.. code-block:: none # terminal 2 # Delete MAC address from Classifier spp > vf 1; classifier_table del mac 52:54:00:12:34:56 ring:0 spp > vf 1; classifier_table del mac 52:54:00:12:34:58 ring:1 -.. code-block:: console +.. code-block:: none # terminal 2 # classifier @@ -202,7 +205,7 @@ First, delete entries of ``classifier_table`` and ports of components. Then, stop components. -.. code-block:: console +.. code-block:: none # terminal 2 spp > vf 1; component stop cls @@ -233,259 +236,224 @@ Finally, terminate ``spp_vf`` by using ``exit`` or ``bye sec``. spp > vf 0; exit -.. _spp_vf_use_cases_usecase1: +.. _spp_usecases_vf_ssh: -Simple SSH Login +SSH Login to VMs ---------------- -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. +This usecase is to classify packets for ssh connections as another example. +Incoming packets are classified based on destination addresses and reterned +packets are aggregated before going out. -.. _figure_simple_ssh_login: +.. _figure_spp_usecase_vf_ssh_overview: -.. figure:: ../images/spp_vf/usecase1_overview.* - :width: 55% +.. figure:: ../images/usecases/vf_ssh_overview.* + :width: 58% Simple SSH Login -Launch SPP Processes -~~~~~~~~~~~~~~~~~~~~ +Setup +~~~~~ -Change directory to spp and confirm that it is already compiled. +Launch ``spp-ctl`` and SPP CLI before primary and secondary processes. .. 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_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. + # terminal 1 + $ python3 ./src/spp-ctl/spp-ctl -b 192.168.1.100 .. 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 2 + $ python3 ./src/spp.py -b 192.168.1.100 -Then, run ``spp_primary`` on the second core with ``-c 0x02``. +``spp_primary`` on the second lcore with ``-l 1`` and two ports ``-p 0x03``. .. code-block:: console + # terminal 3 $ sudo ./src/primary/x86_64-native-linuxapp-gcc/spp_primary \ - -c 0x02 -n 4 \ + -l 1 -n 4 \ --socket-mem 512,512 \ --huge-dir=/run/hugepages/kvm \ --proc-type=primary \ -- \ - -p 0x03 -n 8 -s 127.0.0.1:5555 + -p 0x03 -n 10 -s 192.168.1.100:5555 -After ``spp_primary`` is launched, run secondary process ``spp_vf``. -Core mask ``-c 0x3ffd`` indicates to use twelve cores except the second -core, and it equals to ``-l 0,2-12``. +Then, run secondary process ``spp_vf`` with ``-l 0,2-13`` which indicates +to use twelve lcores. .. code-block:: console + # terminal 4 $ sudo ./src/vf/x86_64-native-linuxapp-gcc/spp_vf \ - -c 0x3ffd -n 4 --proc-type=secondary \ + -l 0,2-13 \ + -n 4 --proc-type=secondary \ -- \ --client-id 1 \ - -s 127.0.0.1:6666 \ - --vhost-client + -s 192.168.1.100:6666 --vhost-client Network Configuration ~~~~~~~~~~~~~~~~~~~~~ -Detailed configuration of :numref:`figure_simple_ssh_login` is -described below. -In this usecase, there are two NICs on host1 and host2 to duplicate -login path. Each of combination of classifier and merger responds -to each of pathes. +Detailed netowrk configuration of :numref:`figure_spp_usecase_vf_ssh_overview` +is described below. +In this usecase, use two NICs on each of host1 and host2 for redundancy. -Incoming packets from NIC0 are classified based on destionation address. -For example, classifier1 sends packets to forwarder1 for vNIC0 and -to forwarder2 for vNIC2. -Outgoing packets from SSH server1 and 2 are aggregated to merger1 and -sent to SSH clinet via NIC0. +Incoming packets through NIC0 or NIC1 are classified based on destionation +address. .. _figure_network_config: -.. figure:: ../images/spp_vf/usecase1_nwconfig.* +.. figure:: ../images/usecases/vf_ssh_nwconfig.* :width: 100% - Network Configuration + Network Configuration SSH with spp_vhost You need to input a little bit large amount of commands for the configuration, or use ``playback`` command to load from config files. -You can find a series of config files for this use case in -``recipes/spp_vf/usecase1/``. - -First, lanch threads of SPP VF called ``component`` with its core ID -and a directive for behaviour. -It is launched from ``component`` subcommand with options. +You can load network configuration from recipes in ``recipes/usecases/`` +as following. -.. code-block:: console +.. code-block:: none - spp > sec SEC_ID; component start NAME CORE_ID BEHAVIOUR + # terminal 2 + # Load config from recipe + spp > playback recipes/usecases/spp_vf/ssh/1-start_components.rcp + spp > playback recipes/usecases/spp_vf/ssh/2-add_port_path1.rcp + .... -In this usecase, spp_vf is launched with ID=1. Let's start components -for the first login path. -Directive for classifier ``classifier_mac`` means to classify with MAC -address. -Core ID from 2 to 7 are assigned to each of components. +First of all, start components with names such as ``cls1``, ``fwd1`` or so. -.. code-block:: console +.. code-block:: none - # Start component to spp_vf - spp > vf 1; component start classifier1 2 classifier_mac - spp > vf 1; component start forwarder1 3 forward - spp > vf 1; component start forwarder2 4 forward - spp > vf 1; component start forwarder3 5 forward - spp > vf 1; component start forwarder4 6 forward - spp > vf 1; component start merger1 7 merge + # terminal 2 + spp > vf 1; component start cls1 2 classifier_mac + spp > vf 1; component start fwd1 3 forward + spp > vf 1; component start fwd2 4 forward + spp > vf 1; component start fwd3 5 forward + spp > vf 1; component start fwd4 6 forward + spp > vf 1; component start mgr1 7 merge Each of components must have rx and tx ports for forwarding. Add ports for each of components as following. -You might notice that classifier has two tx ports and -merger has two rx ports. +You notice that classifier has two tx ports and merger has two rx ports. .. code-block:: console - # classifier1 - spp > vf 1; port add phy:0 rx classifier1 - spp > vf 1; port add ring:0 tx classifier1 - spp > vf 1; port add ring:1 tx classifier1 - - # forwarder1 - spp > vf 1; port add ring:0 rx forwarder1 - spp > vf 1; port add vhost:0 tx forwarder1 - - # forwarder2 - spp > vf 1; port add ring:1 rx forwarder2 - spp > vf 1; port add vhost:2 tx forwarder2 - - # forwarder3 - spp > vf 1; port add vhost:0 rx forwarder3 - spp > vf 1; port add ring:2 tx forwarder3 - - # forwarder4 - spp > vf 1; port add vhost:2 rx forwarder4 - spp > vf 1; port add ring:3 tx forwarder4 - - # merger1 - spp > vf 1; port add ring:2 rx merger1 - spp > vf 1; port add ring:3 rx merger1 - spp > vf 1; port add phy:0 tx merger1 - -As given ``classifier_mac``, classifier component decides -the destination with MAC address by referring ``classifier_table``. -MAC address and corresponging port is registered to the table with -``classifier_table add mac`` command. + # terminal 2 + # classifier + spp > vf 1; port add phy:0 rx cls1 + spp > vf 1; port add ring:0 tx cls1 + spp > vf 1; port add ring:1 tx cls1 -.. code-block:: console + # forwarders + spp > vf 1; port add ring:0 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:0 rx fwd3 + spp > vf 1; port add ring:2 tx fwd3 + spp > vf 1; port add vhost:2 rx fwd4 + spp > vf 1; port add ring:3 tx fwd4 - spp > vf SEC_ID; classifier_table add mac MAC_ADDR PORT + # merger + 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 -In this usecase, you need to register two MAC addresses of targetting VM -for merger1. +Classifier component decides the destination with MAC address by referring +``classifier_table``. MAC address and corresponging port is registered to the +table. In this usecase, you need to register two MAC addresses of targetting +VM for mgr1, and also mgr2 later. -.. code-block:: console +.. code-block:: none - # Register MAC address to classifier + # terminal 2 + # Register MAC addresses for mgr1 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 +Configuration for the second login path is almost the same as the first path. -Configuration for the second login path is almost similar to the first -path. - -Start components with core ID 8-13 and directives. - -.. code-block:: console +.. code-block:: none - spp > vf 1; component start classifier2 8 classifier_mac - spp > vf 1; component start forwarder5 9 forward - spp > vf 1; component start forwarder6 10 forward - spp > vf 1; component start forwarder7 11 forward - spp > vf 1; component start forwarder8 12 forward - spp > vf 1; component start merger2 13 merge + # terminal 2 + spp > vf 1; component start cls2 8 classifier_mac + spp > vf 1; component start fwd5 9 forward + spp > vf 1; component start fwd6 10 forward + spp > vf 1; component start fwd7 11 forward + spp > vf 1; component start fwd8 12 forward + spp > vf 1; component start mgr2 13 merge Add ports to each of components. -.. code-block:: console - - # classifier2 - spp > vf 1; port add phy:1 rx classifier2 - spp > vf 1; port add ring:4 tx classifier2 - spp > vf 1; port add ring:5 tx classifier2 - - # forwarder5 - spp > vf 1; port add ring:4 rx forwarder5 - spp > vf 1; port add vhost:1 tx forwarder5 - - # forwarder6 - spp > vf 1; port add ring:5 rx forwarder6 - spp > vf 1; port add vhost:3 tx forwarder6 +.. code-block:: none - # forwarder7 - spp > vf 1; port add vhost:1 rx forwarder7 - spp > vf 1; port add ring:6 tx forwarder7 + # terminal 2 + # classifier + spp > vf 1; port add phy:1 rx cls2 + spp > vf 1; port add ring:4 tx cls2 + spp > vf 1; port add ring:5 tx cls2 - # forwarder8 - spp > vf 1; port add vhost:3 rx forwarder8 - spp > vf 1; port add ring:7 tx forwarder8 + # forwarders + spp > vf 1; port add ring:4 rx fwd5 + spp > vf 1; port add vhost:1 tx fwd5 + spp > vf 1; port add ring:5 rx fwd6 + spp > vf 1; port add vhost:3 tx fwd6 + spp > vf 1; port add vhost:1 rx fwd7 + spp > vf 1; port add ring:6 tx fwd7 + spp > vf 1; port add vhost:3 rx fwd8 + spp > vf 1; port add ring:7 tx fwd8 - # merger2 - spp > vf 1; port add ring:6 rx merger2 - spp > vf 1; port add ring:7 rx merger2 - spp > vf 1; port add phy:1 tx merger2 + # merger + spp > vf 1; port add ring:6 rx mgr2 + spp > vf 1; port add ring:7 rx mgr2 + spp > vf 1; port add phy:1 tx mgr2 -Register entries to classifier_table for classifier2 with MAC address -of targetting VM.. +Register MAC address entries to ``classifier_table`` for ``cls2``. .. code-block:: console + # terminal 2 # Register MAC address to classifier spp > vf 1; classifier_table add mac 52:54:00:12:34:57 ring:4 spp > vf 1; classifier_table add mac 52:54:00:12:34:59 ring:5 -.. _spp_vf_use_cases_usecase1_setup_vm: +.. _spp_usecases_vf_ssh_setup_vms: -Setup for VMs -~~~~~~~~~~~~~ +Setup VMs +~~~~~~~~~ -Launch VM1 and VM2 with virsh command. +Launch two VMs with virsh command. Setup for virsh is described in :ref:`spp_gsg_howto_virsh`. +In this case, VMs are named as ``spp-vm1`` and ``spp-vm2``. .. code-block:: console + # terminal 5 $ virsh start spp-vm1 # VM1 $ virsh start spp-vm2 # VM2 -After launched, login to ``spp-vm1`` for configuration inside the VM. +After VMs are launched, login to ``spp-vm1`` first to configure. .. note:: - To avoid asked for unknown keys while login VMs, - use ``-oStrictHostKeyChecking=no`` option for ssh. + To avoid asked for unknown keys while login VMs, use + ``-oStrictHostKeyChecking=no`` option for ssh. .. code-block:: console $ ssh -oStrictHostKeyChecking=no sppuser at 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. +Up interfaces and disable TCP offload to avoid ssh login is failed. .. code-block:: console + # terminal 5 # 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 @@ -494,10 +462,11 @@ after configuration is done. $ sudo ethtool -K ens4 tx off $ sudo ethtool -K ens5 tx off -Configurations also for ``spp-vm2`` as ``spp-vm1``. +Configuration of ``spp-vm2`` is almost similar to ``spp-vm1``. .. code-block:: console + # terminal 5 # 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 @@ -514,6 +483,7 @@ Now, you can login to VMs from the remote host1. .. code-block:: console + # terminal 5 # spp-vm1 via NIC0 $ ssh sppuser@192.168.140.21 @@ -527,117 +497,115 @@ Now, you can login to VMs from the remote host1. $ ssh sppuser@192.168.150.32 -.. _spp_vf_use_cases_usecase1_shutdown_spp_vf_components: +.. _spp_usecases_vf_ssh_shutdown: Shutdown spp_vf Components ~~~~~~~~~~~~~~~~~~~~~~~~~~ Basically, you can shutdown all of SPP processes with ``bye all`` command. -This section describes graceful shutting down for SPP VF components. +This section describes graceful shutting down. First, delete entries of ``classifier_table`` and ports of components for the first SSH login path. -.. code-block:: console +.. code-block:: none - # Delete MAC address from Classifier + # terminal 2 + # Delete MAC address from table spp > vf 1; classifier_table del mac 52:54:00:12:34:56 ring:0 spp > vf 1; classifier_table del mac 52:54:00:12:34:58 ring:1 -.. code-block:: console +Delete ports. + +.. code-block:: none + + # terminal 2 + # classifier + spp > vf 1; port del phy:0 rx cls1 + spp > vf 1; port del ring:0 tx cls1 + spp > vf 1; port del ring:1 tx cls1 + + # forwarders + spp > vf 1; port del ring:0 rx fwd1 + spp > vf 1; port del vhost:0 tx fwd1 + spp > vf 1; port del ring:1 rx fwd2 + spp > vf 1; port del vhost:2 tx fwd2 + spp > vf 1; port del vhost:0 rx fwd3 + spp > vf 1; port del ring:2 tx fwd3 + spp > vf 1; port del vhost:2 rx fwd4 + spp > vf 1; port del ring:3 tx fwd4 - # classifier1 - spp > vf 1; port del phy:0 rx classifier1 - spp > vf 1; port del ring:0 tx classifier1 - spp > vf 1; port del ring:1 tx classifier1 - # forwarder1 - spp > vf 1; port del ring:0 rx forwarder1 - spp > vf 1; port del vhost:0 tx forwarder1 - # forwarder2 - spp > vf 1; port del ring:1 rx forwarder2 - spp > vf 1; port del vhost:2 tx forwarder2 - - # forwarder3 - spp > vf 1; port del vhost:0 rx forwarder3 - spp > vf 1; port del ring:2 tx forwarder3 - - # forwarder4 - spp > vf 1; port del vhost:2 rx forwarder4 - spp > vf 1; port del ring:3 tx forwarder4 - - # merger1 - spp > vf 1; port del ring:2 rx merger1 - spp > vf 1; port del ring:3 rx merger1 - spp > vf 1; port del phy:0 tx merger1 + # merger + spp > vf 1; port del ring:2 rx mgr1 + spp > vf 1; port del ring:3 rx mgr1 + spp > vf 1; port del phy:0 tx mgr1 Then, stop components. -.. code-block:: console +.. code-block:: none + # terminal 2 # Stop component to spp_vf - spp > vf 1; component stop classifier1 - spp > vf 1; component stop forwarder1 - spp > vf 1; component stop forwarder2 - spp > vf 1; component stop forwarder3 - spp > vf 1; component stop forwarder4 - spp > vf 1; component stop merger1 + spp > vf 1; component stop cls1 + spp > vf 1; component stop fwd1 + spp > vf 1; component stop fwd2 + spp > vf 1; component stop fwd3 + spp > vf 1; component stop fwd4 + spp > vf 1; component stop mgr1 Second, do termination for the second path. -Delete entries from ``classifier_table`` and ports from each of -components. +Delete entries from the table and ports from each of components. -.. code-block:: console +.. code-block:: none + # terminal 2 # Delete MAC address from Classifier spp > vf 1; classifier_table del mac 52:54:00:12:34:57 ring:4 spp > vf 1; classifier_table del mac 52:54:00:12:34:59 ring:5 -.. code-block:: console +.. code-block:: none + # terminal 2 # classifier2 - spp > vf 1; port del phy:1 rx classifier2 - spp > vf 1; port del ring:4 tx classifier2 - spp > vf 1; port del ring:5 tx classifier2 - - # forwarder5 - spp > vf 1; port del ring:4 rx forwarder5 - spp > vf 1; port del vhost:1 tx forwarder5 - - # forwarder6 - spp > vf 1; port del ring:5 rx forwarder6 - spp > vf 1; port del vhost:3 tx forwarder6 + spp > vf 1; port del phy:1 rx cls2 + spp > vf 1; port del ring:4 tx cls2 + spp > vf 1; port del ring:5 tx cls2 + + # forwarder + spp > vf 1; port del ring:4 rx fwd5 + spp > vf 1; port del vhost:1 tx fwd5 + spp > vf 1; port del ring:5 rx fwd6 + spp > vf 1; port del vhost:3 tx fwd6 + spp > vf 1; port del vhost:1 rx fwd7 + spp > vf 1; port del ring:6 tx fwd7 + spp > vf 1; port del vhost:3 tx fwd8 + spp > vf 1; port del ring:7 rx fwd8 - # forwarder7 - spp > vf 1; port del vhost:1 rx forwarder7 - spp > vf 1; port del ring:6 tx forwarder7 - - # forwarder8 - spp > vf 1; port del vhost:3 tx forwarder8 - spp > vf 1; port del ring:7 rx forwarder8 - - # merger2 - spp > vf 1; port del ring:6 rx merger2 - spp > vf 1; port del ring:7 rx merger2 - spp > vf 1; port del phy:1 tx merger2 + # merger + spp > vf 1; port del ring:6 rx mgr2 + spp > vf 1; port del ring:7 rx mgr2 + spp > vf 1; port del phy:1 tx mgr2 Then, stop components. -.. code-block:: console +.. code-block:: none + # terminal 2 # Stop component to spp_vf - spp > vf 1; component stop classifier2 - spp > vf 1; component stop forwarder5 - spp > vf 1; component stop forwarder6 - spp > vf 1; component stop forwarder7 - spp > vf 1; component stop forwarder8 - spp > vf 1; component stop merger2 + spp > vf 1; component stop cls2 + spp > vf 1; component stop fwd5 + spp > vf 1; component stop fwd6 + spp > vf 1; component stop fwd7 + spp > vf 1; component stop fwd8 + spp > vf 1; component stop mgr2 Exit spp_vf ~~~~~~~~~~~ Terminate spp_vf. -.. code-block:: console +.. code-block:: none + # terminal 2 spp > vf 1; exit -- 2.7.4