Soft Patch Panel
 help / color / mirror / Atom feed
* [spp] Update docs structure
@ 2019-01-09  1:49 ogawa.yasufumi
  2019-01-09  1:49 ` [spp] [PATCH 01/11] docs: change structure of overview section ogawa.yasufumi
                   ` (10 more replies)
  0 siblings, 11 replies; 12+ messages in thread
From: ogawa.yasufumi @ 2019-01-09  1:49 UTC (permalink / raw)
  To: ferruh.yigit, spp, ogawa.yasufumi

From: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>

Hi,

This series of patches is to update structure of documentation as I
announced in [1].

Here is the contents of updated documentation. Previous `Soft Patch
Panel` section is divided into `Overview` and `Design` because `Design`
has become to have much descriptions for increasing SPP processes. `Use
case` section is also moved from `Setup Guide` to doc root for the same
reason. 

- Overview
- Design
  1. Soft Patch Panel
  2. SPP Controller
  3. SPP Primary
  4. SPP Secondary
- Setup Guide
  1. Getting Started
  2. How to Use
  3. Performance Optimization
- Use Cases
  1. spp_nfv
- SPP Commands
  1. Primary Commands
  2. Secondary Commands
  3. Common Commands
  4. Experimental Commands
- Tools
  1. SPP Container
- SPP VF
  1. Overview
  2. Design
  3. Getting Started
  4. Use Cases
  5. Explanation
- API Reference
  1. spp-ctl REST API

Descriptions for spp-ctl are moved to each of sections, and API
reference is only remained as `API Reference` section because it could
contain APIs of other processes might be released in a future. However,
`SPP VF` section is remained because it is updated to add descriptions
of new feature `spp_pcap` soon. It is moved to each of sections after
this update.

[1] https://mails.dpdk.org/archives/spp/2018-December/001036.html

Thanks,
Yasufumi

Yasufumi Ogawa (11):
  docs: change structure of overview section
  docs: move overview of spp-ctl to SPP overview
  docs: update image of SPP overview
  docs: update overview section
  docs: add overview image for design section
  docs: add image of design of spp-ctl
  docs: add SPP controller in design section
  docs: add spp_primary in design section
  docs: move design section to doc root
  docs: move usecases to doc root
  docs: remove spp-ctl section

 docs/guides/api_ref/index.rst                      |   11 +
 docs/guides/api_ref/spp-ctl.rst                    | 1723 ++++++++++
 docs/guides/design/index.rst                       |   15 +
 docs/guides/design/spp.rst                         |   37 +
 docs/guides/design/spp_controller.rst              |   87 +
 docs/guides/design/spp_primary.rst                 |   26 +
 docs/guides/design/spp_secondary.rst               |   18 +
 .../overview/design/spp_overview_design_all.svg    |  861 +++++
 .../design/spp_overview_design_spp-ctl.svg         |  678 ++++
 docs/guides/images/overview/spp_overview.svg       | 3465 ++++++++++++++++++--
 docs/guides/index.rst                              |    7 +-
 docs/guides/overview.rst                           |   47 +-
 docs/guides/setup/getting_started.rst              |   21 +-
 docs/guides/setup/howto_use.rst                    |   19 +-
 docs/guides/setup/index.rst                        |    1 -
 docs/guides/setup/use_cases.rst                    |  670 ----
 docs/guides/spp-ctl/api-reference.rst              | 1714 ----------
 docs/guides/spp-ctl/index.rst                      |   14 -
 docs/guides/spp-ctl/overview.rst                   |  119 -
 docs/guides/use_cases/index.rst                    |   11 +
 docs/guides/use_cases/spp_nfv.rst                  |  671 ++++
 21 files changed, 7394 insertions(+), 2821 deletions(-)
 create mode 100644 docs/guides/api_ref/index.rst
 create mode 100644 docs/guides/api_ref/spp-ctl.rst
 create mode 100644 docs/guides/design/index.rst
 create mode 100644 docs/guides/design/spp.rst
 create mode 100644 docs/guides/design/spp_controller.rst
 create mode 100644 docs/guides/design/spp_primary.rst
 create mode 100644 docs/guides/design/spp_secondary.rst
 create mode 100644 docs/guides/images/overview/design/spp_overview_design_all.svg
 create mode 100644 docs/guides/images/overview/design/spp_overview_design_spp-ctl.svg
 delete mode 100644 docs/guides/setup/use_cases.rst
 delete mode 100644 docs/guides/spp-ctl/api-reference.rst
 delete mode 100644 docs/guides/spp-ctl/index.rst
 delete mode 100644 docs/guides/spp-ctl/overview.rst
 create mode 100644 docs/guides/use_cases/index.rst
 create mode 100644 docs/guides/use_cases/spp_nfv.rst

-- 
2.7.4

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [spp] [PATCH 01/11] docs: change structure of overview section
  2019-01-09  1:49 [spp] Update docs structure ogawa.yasufumi
@ 2019-01-09  1:49 ` ogawa.yasufumi
  2019-01-09  1:49 ` [spp] [PATCH 02/11] docs: move overview of spp-ctl to SPP overview ogawa.yasufumi
                   ` (9 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: ogawa.yasufumi @ 2019-01-09  1:49 UTC (permalink / raw)
  To: ferruh.yigit, spp, ogawa.yasufumi

From: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>

This patche is to divide `overview.rst` to sub sections for adding more
contents to this section. All of design sections, for instance spp-ctl,
are moved to under this overview section in next patches.

Signed-off-by: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>
---
 docs/guides/index.rst             |  2 +-
 docs/guides/overview.rst          | 63 ---------------------------------------
 docs/guides/overview/design.rst   | 39 ++++++++++++++++++++++++
 docs/guides/overview/index.rst    | 12 ++++++++
 docs/guides/overview/overview.rst | 25 ++++++++++++++++
 docs/guides/setup/howto_use.rst   |  2 +-
 6 files changed, 78 insertions(+), 65 deletions(-)
 delete mode 100644 docs/guides/overview.rst
 create mode 100644 docs/guides/overview/design.rst
 create mode 100644 docs/guides/overview/index.rst
 create mode 100644 docs/guides/overview/overview.rst

diff --git a/docs/guides/index.rst b/docs/guides/index.rst
index a01c959..99897aa 100644
--- a/docs/guides/index.rst
+++ b/docs/guides/index.rst
@@ -7,7 +7,7 @@ SPP documentation
 .. toctree::
    :maxdepth: 1
 
-   overview
+   overview/index
    setup/index
    commands/index
    tools/index
diff --git a/docs/guides/overview.rst b/docs/guides/overview.rst
deleted file mode 100644
index 1140cd6..0000000
--- a/docs/guides/overview.rst
+++ /dev/null
@@ -1,63 +0,0 @@
-..  SPDX-License-Identifier: BSD-3-Clause
-    Copyright(c) 2010-2014 Intel Corporation
-
-.. _spp_overview:
-
-Soft Patch Panel
-==================
-
-Overview
---------
-
-`Soft Patch Panel
-<http://dpdk.org/browse/apps/spp/>`_
-(SPP) is a DPDK application for providing switching
-functionality for Service Function Chaining in
-NFV (Network Function Virtualization).
-
-.. figure:: images/overview/spp_overview.*
-    :width: 50%
-
-    SPP overview
-
-With SPP, user is able to configure network easily and dynamically
-via simple patch panel like interface.
-
-The goal of SPP is to easily interconnect NFV applications via high
-thoughput network interfaces provided by DPDK and change configurations
-of resources dynamically to applications to build pipelines.
-
-
-Design
-------
-
-SPP is composed of several DPDK processes and controller processes [1].
-
-In terms of DPDK processes, SPP is derived from DPDK's multi-process sample
-application and it consists of a primary process and multiple secondary
-processes.
-SPP primary process is responsible for resource management, for example, ports,
-mbufs or shared memory. On the other hand, secondary processes are working for
-tasks.
-
-SPP is controlled from python based management framework. It consists of
-front-end CLI and back-end server process.
-SPP's front-end CLI provides a patch panel like interface for users.
-This CLI process parses user input and sends request to the back-end via REST
-APIs. It means that the back-end server process accepts requests from other
-than CLI. It enables developers to implement control interface such as GUI, or
-plugin for other framework.
-`networking-spp
-<https://github.com/openstack/networking-spp>`_
-is a Neutron ML2 plugin for using SPP with OpenStack.
-By using networking-spp and doing some of extra tunings for optimization, you
-can deploy high-performance NFV services on OpenStack [2].
-
-
-Reference
----------
-
-* [1] `Implementation and Testing of Soft Patch Panel
-  <https://dpdksummit.com/Archive/pdf/2017USA/Implementation%20and%20Testing%20of%20Soft%20Patch%20Panel.pdf>`_
-* [2] `Integrating OpenStack with DPDK for High Performance Applications
-  <https://www.openstack.org/summit/vancouver-2018/summit-schedule/events/20826>`_
diff --git a/docs/guides/overview/design.rst b/docs/guides/overview/design.rst
new file mode 100644
index 0000000..486550d
--- /dev/null
+++ b/docs/guides/overview/design.rst
@@ -0,0 +1,39 @@
+..  SPDX-License-Identifier: BSD-3-Clause
+    Copyright(c) 2010-2014 Intel Corporation
+    Copyright(c) 2018-2019 Nippon Telegraph and Telephone Corporation
+
+.. _spp_overview_design:
+
+Design
+======
+
+SPP is composed of several DPDK processes and controller processes [1].
+
+In terms of DPDK processes, SPP is derived from DPDK's multi-process sample
+application and it consists of a primary process and multiple secondary
+processes.
+SPP primary process is responsible for resource management, for example, ports,
+mbufs or shared memory. On the other hand, secondary processes are working for
+tasks.
+
+SPP is controlled from python based management framework. It consists of
+front-end CLI and back-end server process.
+SPP's front-end CLI provides a patch panel like interface for users.
+This CLI process parses user input and sends request to the back-end via REST
+APIs. It means that the back-end server process accepts requests from other
+than CLI. It enables developers to implement control interface such as GUI, or
+plugin for other framework.
+`networking-spp
+<https://github.com/openstack/networking-spp>`_
+is a Neutron ML2 plugin for using SPP with OpenStack.
+By using networking-spp and doing some of extra tunings for optimization, you
+can deploy high-performance NFV services on OpenStack [2].
+
+
+Reference
+---------
+
+* [1] `Implementation and Testing of Soft Patch Panel
+  <https://dpdksummit.com/Archive/pdf/2017USA/Implementation%20and%20Testing%20of%20Soft%20Patch%20Panel.pdf>`_
+* [2] `Integrating OpenStack with DPDK for High Performance Applications
+  <https://www.openstack.org/summit/vancouver-2018/summit-schedule/events/20826>`_
diff --git a/docs/guides/overview/index.rst b/docs/guides/overview/index.rst
new file mode 100644
index 0000000..a4c6f70
--- /dev/null
+++ b/docs/guides/overview/index.rst
@@ -0,0 +1,12 @@
+..  SPDX-License-Identifier: BSD-3-Clause
+    Copyright(c) 2019 Nippon Telegraph and Telephone Corporation
+
+Soft Patch Panel
+================
+
+.. toctree::
+   :maxdepth: 2
+   :numbered:
+
+   overview
+   design
diff --git a/docs/guides/overview/overview.rst b/docs/guides/overview/overview.rst
new file mode 100644
index 0000000..e66c861
--- /dev/null
+++ b/docs/guides/overview/overview.rst
@@ -0,0 +1,25 @@
+..  SPDX-License-Identifier: BSD-3-Clause
+    Copyright(c) 2010-2014 Intel Corporation
+
+.. _spp_overview_overview:
+
+Overview
+========
+
+`Soft Patch Panel
+<http://dpdk.org/browse/apps/spp/>`_
+(SPP) is a DPDK application for providing switching
+functionality for Service Function Chaining in
+NFV (Network Function Virtualization).
+
+.. figure:: ../images/overview/spp_overview.*
+    :width: 50%
+
+    SPP overview
+
+With SPP, user is able to configure network easily and dynamically
+via simple patch panel like interface.
+
+The goal of SPP is to easily interconnect NFV applications via high
+thoughput network interfaces provided by DPDK and change configurations
+of resources dynamically to applications to build pipelines.
diff --git a/docs/guides/setup/howto_use.rst b/docs/guides/setup/howto_use.rst
index 78700e3..a7fa97a 100644
--- a/docs/guides/setup/howto_use.rst
+++ b/docs/guides/setup/howto_use.rst
@@ -4,7 +4,7 @@
 How to Use
 ==========
 
-As described in :ref:`Overview<spp_overview>`, SPP consists of
+As described in :ref:`Design<spp_overview_design>`, SPP consists of
 primary process for managing resources, secondary processes for
 forwarding packet, and SPP controller to accept user commands and
 send it to SPP processes.
-- 
2.7.4

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [spp] [PATCH 02/11] docs: move overview of spp-ctl to SPP overview
  2019-01-09  1:49 [spp] Update docs structure ogawa.yasufumi
  2019-01-09  1:49 ` [spp] [PATCH 01/11] docs: change structure of overview section ogawa.yasufumi
@ 2019-01-09  1:49 ` ogawa.yasufumi
  2019-01-09  1:49 ` [spp] [PATCH 03/11] docs: update image of " ogawa.yasufumi
                   ` (8 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: ogawa.yasufumi @ 2019-01-09  1:49 UTC (permalink / raw)
  To: ferruh.yigit, spp, ogawa.yasufumi

From: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>

Move overview of spp-ctl to SPP's overvew section.

Signed-off-by: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>
---
 docs/guides/overview/design.rst  | 17 +++++++++++++++++
 docs/guides/spp-ctl/overview.rst | 32 --------------------------------
 2 files changed, 17 insertions(+), 32 deletions(-)

diff --git a/docs/guides/overview/design.rst b/docs/guides/overview/design.rst
index 486550d..9663a09 100644
--- a/docs/guides/overview/design.rst
+++ b/docs/guides/overview/design.rst
@@ -30,6 +30,23 @@ By using networking-spp and doing some of extra tunings for optimization, you
 can deploy high-performance NFV services on OpenStack [2].
 
 
+SPP Controller
+--------------
+
+spp-ctl
+~~~~~~~
+
+``spp-ctl`` is designed for managing SPP from several controllers
+via REST-like APIs for users or other applications.
+
+There are several usecases where SPP is managed from other process without
+user inputs. For example, you need a intermediate process if you think of
+using SPP from a framework, such as OpenStack.
+`networking-spp
+<https://github.com/openstack/networking-spp>`_
+is a Neutron ML2 plugin for SPP and `spp-agent` works as a SPP controller.
+
+
 Reference
 ---------
 
diff --git a/docs/guides/spp-ctl/overview.rst b/docs/guides/spp-ctl/overview.rst
index 4c7181c..6b88f3b 100644
--- a/docs/guides/spp-ctl/overview.rst
+++ b/docs/guides/spp-ctl/overview.rst
@@ -6,38 +6,6 @@
 spp-ctl
 =======
 
-Overview
---------
-
-``spp-ctl`` is an alternative SPP controller which provides a REST-like
-APIs.
-
-It maintains connections between SPP processes for managing them
-via the REST-like APIs for users or other processes.
-
-Background and Motivation
--------------------------
-
-``spp-ctl`` is designed for supporting to manage SPP from several
-controllers.
-
-There are some usecases where SPP is managed from other
-process without user inputs.
-For example, you need a intermediate process if you think of using SPP
-from a framework, such as OpenStack.
-`networking-spp
-<https://github.com/openstack/networking-spp>`_
-is a Neutron ML2 plugin for SPP and `spp-agent` works as a
-SPP controller.
-
-It is a problem to prepare several controllers for each of usages for
-CLI, OpenStack or others because it would be hard to maintain for
-updates.
-
-Spp-ctl is designed to solve the problem of several controllers with
-application-independent REST APIs.
-You can manage SPP by requesting via this APIs.
-
 Architecture
 ------------
 
-- 
2.7.4

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [spp] [PATCH 03/11] docs: update image of SPP overview
  2019-01-09  1:49 [spp] Update docs structure ogawa.yasufumi
  2019-01-09  1:49 ` [spp] [PATCH 01/11] docs: change structure of overview section ogawa.yasufumi
  2019-01-09  1:49 ` [spp] [PATCH 02/11] docs: move overview of spp-ctl to SPP overview ogawa.yasufumi
@ 2019-01-09  1:49 ` ogawa.yasufumi
  2019-01-09  1:49 ` [spp] [PATCH 04/11] docs: update overview section ogawa.yasufumi
                   ` (7 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: ogawa.yasufumi @ 2019-01-09  1:49 UTC (permalink / raw)
  To: ferruh.yigit, spp, ogawa.yasufumi

From: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>

Update overview image of SPP to be more realistic.

Signed-off-by: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>
---
 docs/guides/images/overview/spp_overview.svg | 3465 ++++++++++++++++++++++++--
 1 file changed, 3212 insertions(+), 253 deletions(-)

diff --git a/docs/guides/images/overview/spp_overview.svg b/docs/guides/images/overview/spp_overview.svg
index b36fac1..7dfeb5c 100644
--- a/docs/guides/images/overview/spp_overview.svg
+++ b/docs/guides/images/overview/spp_overview.svg
@@ -2,115 +2,255 @@
 <!-- Created with Inkscape (http://www.inkscape.org/) -->
 
 <svg
+   xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:cc="http://creativecommons.org/ns#"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:svg="http://www.w3.org/2000/svg"
    xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="150mm"
-   height="118mm"
-   viewBox="0 0 531.49589 418.11005"
-   id="svg2"
-   version="1.1"
+   sodipodi:docname="spp_overview.svg"
    inkscape:version="0.91 r13725"
-   sodipodi:docname="spp_overview.svg">
+   version="1.1"
+   id="svg2"
+   viewBox="0 0 992.1257 744.09416"
+   height="210mm"
+   width="280mm">
   <defs
      id="defs4">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="7.7876965e-14 : 854.58107 : 0"
+       inkscape:vp_y="2352.6308 : 0 : 0"
+       inkscape:vp_z="2593.7659 : 4492.5336 : 0"
+       inkscape:persp3d-origin="-2854.9839 : -1728.6308 : 1"
+       id="perspective5809" />
+    <linearGradient
+       id="linearGradient4342"
+       osb:paint="solid">
+      <stop
+         style="stop-color:#3f8eda;stop-opacity:1;"
+         offset="0"
+         id="stop4344" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="3.1021126e-14 : 688.81278 : 0"
+       inkscape:vp_y="937.13535 : 0 : 0"
+       inkscape:vp_z="1559.1496 : 2700.5259 : 0"
+       inkscape:persp3d-origin="-538.4031 : -1401.7863 : 1"
+       id="perspective4216" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="4.3752745e-15 : 68.760609 : 0"
+       inkscape:vp_y="132.17522 : 0 : 0"
+       inkscape:vp_z="240.36429 : 288.3117 : 0"
+       inkscape:persp3d-origin="296.374 : 349.04814 : 1"
+       id="perspective4271" />
     <marker
        inkscape:stockid="Arrow2Lend"
        orient="auto"
-       refY="0.0"
-       refX="0.0"
+       refY="0"
+       refX="0"
        id="marker4891"
-       style="overflow:visible;"
+       style="overflow:visible"
        inkscape:isstock="true">
       <path
          id="path4893"
-         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
-         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
-         transform="scale(1.1) rotate(180) translate(1,0)" />
-    </marker>
-    <marker
-       inkscape:isstock="true"
-       style="overflow:visible;"
-       id="marker4763"
-       refX="0.0"
-       refY="0.0"
-       orient="auto"
-       inkscape:stockid="Arrow2Lend"
-       inkscape:collect="always">
-      <path
-         transform="scale(1.1) rotate(180) translate(1,0)"
-         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
-         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
-         id="path4765" />
-    </marker>
-    <marker
-       inkscape:isstock="true"
-       style="overflow:visible;"
-       id="marker4659"
-       refX="0.0"
-       refY="0.0"
-       orient="auto"
-       inkscape:stockid="Arrow2Lend"
-       inkscape:collect="always">
-      <path
-         transform="scale(1.1) rotate(180) translate(1,0)"
-         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
-         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
-         id="path4661" />
-    </marker>
-    <marker
-       inkscape:stockid="Arrow2Lend"
-       orient="auto"
-       refY="0.0"
-       refX="0.0"
-       id="Arrow2Lend"
-       style="overflow:visible;"
-       inkscape:isstock="true"
-       inkscape:collect="always">
-      <path
-         id="path4372"
-         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
-         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
-         transform="scale(1.1) rotate(180) translate(1,0)" />
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         inkscape:connector-curvature="0" />
     </marker>
     <marker
        inkscape:stockid="Arrow2Lstart"
        orient="auto"
-       refY="0.0"
-       refX="0.0"
+       refY="0"
+       refX="0"
        id="Arrow2Lstart"
        style="overflow:visible"
        inkscape:isstock="true">
       <path
          id="path4369"
-         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
-         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
-         transform="scale(1.1) translate(1,0)" />
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
     </marker>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="3.7665054e-14 : 813.78991 : 0"
+       inkscape:vp_y="1137.8457 : 0 : 0"
+       inkscape:vp_z="1448.0212 : 1935.0132 : 1"
+       inkscape:persp3d-origin="-679.05368 : -1230.4013 : 1"
+       id="perspective4271-2" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="3.7769864e-14 : 854.58074 : 0"
+       inkscape:vp_y="1141.0119 : 0 : 0"
+       inkscape:vp_z="1926.4208 : 3336.6582 : 0"
+       inkscape:persp3d-origin="-520.04295 : -1938.9846 : 1"
+       id="perspective4216-3" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="7.7876946e-14 : 854.58087 : 0"
+       inkscape:vp_y="2352.6302 : 0 : 0"
+       inkscape:vp_z="2593.7653 : 4492.5325 : 0"
+       inkscape:persp3d-origin="-2969.8889 : -1980.0683 : 1"
+       id="perspective5809-7" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="3.1021119e-14 : 688.81262 : 0"
+       inkscape:vp_y="937.13513 : 0 : 0"
+       inkscape:vp_z="1559.1492 : 2700.5253 : 0"
+       inkscape:persp3d-origin="-411.69571 : -1400.0104 : 1"
+       id="perspective4216-2" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="3.1021119e-14 : 688.81262 : 0"
+       inkscape:vp_y="937.13513 : 0 : 0"
+       inkscape:vp_z="1559.1492 : 2700.5253 : 0"
+       inkscape:persp3d-origin="-287.94067 : -1398.7213 : 1"
+       id="perspective4216-28" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="3.1021119e-14 : 688.81262 : 0"
+       inkscape:vp_y="937.13513 : 0 : 0"
+       inkscape:vp_z="1559.1492 : 2700.5253 : 0"
+       inkscape:persp3d-origin="-156.45094 : -1398.8539 : 1"
+       id="perspective4216-1" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="1.2377557e-14 : 199.55204 : 0"
+       inkscape:vp_y="373.92083 : 0 : 0"
+       inkscape:vp_z="622.10701 : 782.35401 : 0"
+       inkscape:persp3d-origin="-21.791516 : -138.69018 : 1"
+       id="perspective4216-9" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="1.2732107e-14 : 208.3272 : 0"
+       inkscape:vp_y="384.63165 : 0 : 0"
+       inkscape:vp_z="639.92701 : 816.7575 : 0"
+       inkscape:persp3d-origin="377.38907 : -164.35022 : 1"
+       id="perspective4216-9-0" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="1.2377554e-14 : 199.55199 : 0"
+       inkscape:vp_y="373.92074 : 0 : 0"
+       inkscape:vp_z="622.10686 : 782.35382 : 0"
+       inkscape:persp3d-origin="106.4554 : -138.60994 : 1"
+       id="perspective4216-9-2" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="1.2377551e-14 : 199.55194 : 0"
+       inkscape:vp_y="373.92065 : 0 : 0"
+       inkscape:vp_z="622.10671 : 782.35363 : 0"
+       inkscape:persp3d-origin="194.58828 : -137.71049 : 1"
+       id="perspective4216-9-2-2" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="1.2377551e-14 : 199.55194 : 0"
+       inkscape:vp_y="373.92065 : 0 : 0"
+       inkscape:vp_z="622.10671 : 782.35363 : 0"
+       inkscape:persp3d-origin="259.31563 : -185.37367 : 1"
+       id="perspective4216-9-2-1" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="1.2377551e-14 : 199.55194 : 0"
+       inkscape:vp_y="373.92065 : 0 : 0"
+       inkscape:vp_z="622.10671 : 782.35363 : 0"
+       inkscape:persp3d-origin="106.51049 : -184.76278 : 1"
+       id="perspective4216-9-2-6" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="1.3169226e-14 : 228.22607 : 0"
+       inkscape:vp_y="397.83681 : 0 : 0"
+       inkscape:vp_z="661.89699 : 894.77204 : 0"
+       inkscape:persp3d-origin="-164.4083 : -500.14556 : 1"
+       id="perspective4216-9-2-5" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="1.3169223e-14 : 228.22602 : 0"
+       inkscape:vp_y="397.83672 : 0 : 0"
+       inkscape:vp_z="661.89683 : 894.77183 : 0"
+       inkscape:persp3d-origin="57.067154 : -500.10833 : 1"
+       id="perspective4216-9-2-5-8" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="5.8672671e-15 : 94.249421 : 0"
+       inkscape:vp_y="177.24769 : 0 : 0"
+       inkscape:vp_z="294.89406 : 369.50973 : 0"
+       inkscape:persp3d-origin="198.4482 : 286.81584 : 1"
+       id="perspective4216-9-08" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="5.8672657e-15 : 94.249399 : 0"
+       inkscape:vp_y="177.24765 : 0 : 0"
+       inkscape:vp_z="294.89399 : 369.50964 : 0"
+       inkscape:persp3d-origin="252.52163 : 287.01489 : 1"
+       id="perspective4216-9-08-3" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="5.8672643e-15 : 94.249377 : 0"
+       inkscape:vp_y="177.24761 : 0 : 0"
+       inkscape:vp_z="294.89392 : 369.50955 : 0"
+       inkscape:persp3d-origin="378.61588 : 288.93962 : 1"
+       id="perspective4216-9-08-3-4" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="5.8672657e-15 : 94.249399 : 0"
+       inkscape:vp_y="177.24765 : 0 : 0"
+       inkscape:vp_z="294.89399 : 369.50964 : 0"
+       inkscape:persp3d-origin="324.54248 : 288.74057 : 1"
+       id="perspective4216-9-08-9" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="5.8672643e-15 : 94.249377 : 0"
+       inkscape:vp_y="177.24761 : 0 : 0"
+       inkscape:vp_z="294.89392 : 369.50955 : 0"
+       inkscape:persp3d-origin="502.49785 : 290.45462 : 1"
+       id="perspective4216-9-08-3-9" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="5.8672657e-15 : 94.249399 : 0"
+       inkscape:vp_y="177.24765 : 0 : 0"
+       inkscape:vp_z="294.89399 : 369.50964 : 0"
+       inkscape:persp3d-origin="448.42445 : 290.25557 : 1"
+       id="perspective4216-9-08-7" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="5.8672643e-15 : 94.249377 : 0"
+       inkscape:vp_y="177.24761 : 0 : 0"
+       inkscape:vp_z="294.89392 : 369.50955 : 0"
+       inkscape:persp3d-origin="579.12089 : 289.69592 : 1"
+       id="perspective4216-9-08-7-2" />
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="5.8672629e-15 : 94.249355 : 0"
+       inkscape:vp_y="177.24757 : 0 : 0"
+       inkscape:vp_z="294.89385 : 369.50946 : 0"
+       inkscape:persp3d-origin="633.19428 : 289.89497 : 1"
+       id="perspective4216-9-08-3-9-0" />
   </defs>
   <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1.097042"
-     inkscape:cx="277.36996"
-     inkscape:cy="235.26889"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer2"
+     inkscape:window-maximized="0"
+     inkscape:window-y="54"
+     inkscape:window-x="220"
+     inkscape:window-height="920"
+     inkscape:window-width="1592"
      showgrid="false"
-     inkscape:window-width="1034"
-     inkscape:window-height="824"
-     inkscape:window-x="182"
-     inkscape:window-y="5"
-     inkscape:window-maximized="0" />
+     inkscape:current-layer="layer11"
+     inkscape:document-units="px"
+     inkscape:cy="390.36316"
+     inkscape:cx="664.38062"
+     inkscape:zoom="1.5514517"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     borderopacity="1.0"
+     bordercolor="#666666"
+     pagecolor="#ffffff"
+     id="base" />
   <metadata
      id="metadata7">
     <rdf:RDF>
@@ -119,209 +259,3028 @@
         <dc:format>image/svg+xml</dc:format>
         <dc:type
            rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
+        <dc:title></dc:title>
       </cc:Work>
     </rdf:RDF>
   </metadata>
   <g
-     inkscape:label="Layer 1"
+     inkscape:label="host"
      inkscape:groupmode="layer"
      id="layer1"
-     transform="translate(0,-634.25241)">
+     transform="translate(0,-308.26824)"
+     style="display:inline">
     <rect
-       style="opacity:1;fill:#f4ffff;fill-opacity:1;stroke:#000000;stroke-width:1.11988664;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect4159"
-       width="483.0025"
-       height="367.29166"
-       x="23.566805"
-       y="651.90833" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-weight:normal;font-size:17.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       x="56.523876"
-       y="693.61035"
-       id="text4161"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         id="tspan4163"
-         x="56.523876"
-         y="693.61035">Host</tspan></text>
+       style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect5792"
+       width="744.71234"
+       height="139.72971"
+       x="55.475956"
+       y="806.1839" />
     <rect
-       style="opacity:1;fill:#f4ff89;fill-opacity:1;stroke:#000000;stroke-width:0.58693719;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect4165"
-       width="66.157944"
-       height="35.21917"
-       x="105.81387"
-       y="982.85632" />
-    <image
-       y="983.11047"
-       x="360.49991"
-       id="image4208"
-       xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAD0AAAAkCAYAAAA6uzK6AAAABHNCSVQICAgIfAhkiAAAAJBJREFU aIHtz6ENg0AARuE7wgoNCR5MFdQSWAjJCE3qugoS16SCGUgFCgyCBkRTeWzBifd/E7xnszx1RZUY gnlaTRzd7mFRJebxLH33nOL9Gk3XOhv4DvFB0xSaptA0haYpNE2haQpNU2iaQtMUmqbQNIWmKTRN oWkKTVNomiL8DN9/U/fOd8gZ9u1no8t1OQCtgRcV/QBKnwAAAABJRU5ErkJggg== "
-       style="image-rendering:optimizeSpeed"
-       preserveAspectRatio="none"
-       height="36"
-       width="68.734688" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-weight:normal;font-size:17.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       x="113.88774"
-       y="1008.8456"
-       id="text4289"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         id="tspan4291"
-         x="113.88774"
-         y="1008.8456">Port 0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-weight:normal;font-size:17.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       x="369.21759"
-       y="1008.8456"
-       id="text4293"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         id="tspan4295"
-         x="369.21759"
-         y="1008.8456">Port 1</tspan></text>
+       style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.50000012;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect5792-7"
+       width="638.83276"
+       height="112.25385"
+       x="305.14093"
+       y="345.75668" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 56.040617,805.75968 305.75081,344.79781"
+       id="path5826"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999982px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 55.716945,947.1203 303.78864,457.78776"
+       id="path5830"
+       inkscape:connector-curvature="0" />
   </g>
   <g
      inkscape:groupmode="layer"
-     id="layer2"
-     inkscape:label="Layer 2"
-     style="display:inline"
-     transform="translate(0,-634.25241)">
+     id="layer4"
+     inkscape:label="VMs"
+     style="display:inline">
+    <g
+       sodipodi:type="inkscape:box3d"
+       id="g4202"
+       style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       inkscape:perspectiveID="#perspective4216"
+       inkscape:corner0="2.9479355 : 1.0612211 : 0 : 1"
+       inkscape:corner7="2.8471178 : 0.96042312 : 0.011755077 : 1">
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4214"
+         style="fill:#e9e9ff;fill-rule:evenodd;stroke:#000000;stroke-width:0.81363577px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="11"
+         d="m 474.43259,83.559878 0,69.444532 -94.46134,0 0,-69.444532 z"
+         points="474.43259,153.00441 379.97125,153.00441 379.97125,83.559878 474.43259,83.559878 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4210"
+         style="fill:#d7d7ff;fill-rule:evenodd;stroke:#000000;stroke-width:0.81363577px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="14"
+         d="m 456.10467,184.74931 -94.46134,0 18.32792,-31.7449 94.46134,0 z"
+         points="361.64333,184.74931 379.97125,153.00441 474.43259,153.00441 456.10467,184.74931 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4212"
+         style="fill:#afafde;fill-rule:evenodd;stroke:#000000;stroke-width:0.81363577px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="13"
+         d="m 361.64333,115.30477 0,69.44454 18.32792,-31.7449 0,-69.444532 z"
+         points="361.64333,184.74931 379.97125,153.00441 379.97125,83.559878 361.64333,115.30477 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4206"
+         style="fill:#4d4d9f;fill-rule:evenodd;stroke:#000000;stroke-width:0.81363577px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="5"
+         d="m 456.10467,115.30477 0,69.44454 18.32792,-31.7449 0,-69.444532 z"
+         points="456.10467,184.74931 474.43259,153.00441 474.43259,83.559878 456.10467,115.30477 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4204"
+         style="fill:#353564;fill-rule:evenodd;stroke:#000000;stroke-width:0.81363577px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="6"
+         d="m 456.10467,115.30477 -94.46134,0 18.32792,-31.744892 94.46134,0 z"
+         points="361.64333,115.30477 379.97125,83.559878 474.43259,83.559878 456.10467,115.30477 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4208"
+         style="fill:#8686bf;fill-rule:evenodd;stroke:#000000;stroke-width:0.81363577px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="3"
+         d="m 456.10467,115.30477 0,69.44454 -94.46134,0 0,-69.44454 z"
+         points="456.10467,184.74931 361.64333,184.74931 361.64333,115.30477 456.10467,115.30477 " />
+    </g>
+    <g
+       sodipodi:type="inkscape:box3d"
+       id="g4202-6"
+       style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       inkscape:perspectiveID="#perspective4216-2"
+       inkscape:corner0="2.9479355 : 1.0612211 : 0 : 1"
+       inkscape:corner7="2.8471178 : 0.96042312 : 0.011755077 : 1">
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4214-7"
+         style="fill:#e9e9ff;fill-rule:evenodd;stroke:#000000;stroke-width:0.81363577px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="11"
+         d="m 601.13973,81.784457 0,69.444513 -94.46132,0 0,-69.444513 z"
+         points="601.13973,151.22897 506.67841,151.22897 506.67841,81.784457 601.13973,81.784457 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4210-5"
+         style="fill:#d7d7ff;fill-rule:evenodd;stroke:#000000;stroke-width:0.81363577px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="14"
+         d="m 582.81182,182.97386 -94.46132,0 18.32791,-31.74489 94.46132,0 z"
+         points="488.3505,182.97386 506.67841,151.22897 601.13973,151.22897 582.81182,182.97386 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4212-6"
+         style="fill:#afafde;fill-rule:evenodd;stroke:#000000;stroke-width:0.81363577px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="13"
+         d="m 488.3505,113.52935 0,69.44451 18.32791,-31.74489 0,-69.444513 z"
+         points="488.3505,182.97386 506.67841,151.22897 506.67841,81.784457 488.3505,113.52935 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4206-9"
+         style="fill:#4d4d9f;fill-rule:evenodd;stroke:#000000;stroke-width:0.81363577px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="5"
+         d="m 582.81182,113.52935 0,69.44451 18.32791,-31.74489 0,-69.444513 z"
+         points="582.81182,182.97386 601.13973,151.22897 601.13973,81.784457 582.81182,113.52935 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4204-8"
+         style="fill:#353564;fill-rule:evenodd;stroke:#000000;stroke-width:0.81363577px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="6"
+         d="m 582.81182,113.52935 -94.46132,0 18.32791,-31.744893 94.46132,0 z"
+         points="488.3505,113.52935 506.67841,81.784457 601.13973,81.784457 582.81182,113.52935 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4208-7"
+         style="fill:#8686bf;fill-rule:evenodd;stroke:#000000;stroke-width:0.81363577px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="3"
+         d="m 582.81182,113.52935 0,69.44451 -94.46132,0 0,-69.44451 z"
+         points="582.81182,182.97386 488.3505,182.97386 488.3505,113.52935 582.81182,113.52935 " />
+    </g>
+    <g
+       sodipodi:type="inkscape:box3d"
+       id="g4202-2"
+       style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       inkscape:perspectiveID="#perspective4216-28"
+       inkscape:corner0="2.9479355 : 1.0612211 : 0 : 1"
+       inkscape:corner7="2.8471178 : 0.96042312 : 0.011755077 : 1">
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4214-9"
+         style="fill:#e9e9ff;fill-rule:evenodd;stroke:#000000;stroke-width:0.81363577px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="11"
+         d="m 724.89477,80.495356 0,69.444514 -94.46133,0 0,-69.444514 z"
+         points="724.89477,149.93987 630.43344,149.93987 630.43344,80.495356 724.89477,80.495356 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4210-9"
+         style="fill:#d7d7ff;fill-rule:evenodd;stroke:#000000;stroke-width:0.81363577px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="14"
+         d="m 706.56685,181.68476 -94.46132,0 18.32791,-31.74489 94.46133,0 z"
+         points="612.10553,181.68476 630.43344,149.93987 724.89477,149.93987 706.56685,181.68476 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4212-60"
+         style="fill:#afafde;fill-rule:evenodd;stroke:#000000;stroke-width:0.81363577px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="13"
+         d="m 612.10553,112.24025 0,69.44451 18.32791,-31.74489 0,-69.444514 z"
+         points="612.10553,181.68476 630.43344,149.93987 630.43344,80.495356 612.10553,112.24025 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4206-2"
+         style="fill:#4d4d9f;fill-rule:evenodd;stroke:#000000;stroke-width:0.81363577px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="5"
+         d="m 706.56685,112.24025 0,69.44451 18.32792,-31.74489 0,-69.444514 z"
+         points="706.56685,181.68476 724.89477,149.93987 724.89477,80.495356 706.56685,112.24025 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4204-7"
+         style="fill:#353564;fill-rule:evenodd;stroke:#000000;stroke-width:0.81363577px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="6"
+         d="m 706.56685,112.24025 -94.46132,0 18.32791,-31.744894 94.46133,0 z"
+         points="612.10553,112.24025 630.43344,80.495356 724.89477,80.495356 706.56685,112.24025 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4208-6"
+         style="fill:#8686bf;fill-rule:evenodd;stroke:#000000;stroke-width:0.81363577px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="3"
+         d="m 706.56685,112.24025 0,69.44451 -94.46132,0 0,-69.44451 z"
+         points="706.56685,181.68476 612.10553,181.68476 612.10553,112.24025 706.56685,112.24025 " />
+    </g>
+    <g
+       sodipodi:type="inkscape:box3d"
+       id="g4202-3"
+       style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       inkscape:perspectiveID="#perspective4216-1"
+       inkscape:corner0="2.9479355 : 1.0612211 : 0 : 1"
+       inkscape:corner7="2.8471178 : 0.96042312 : 0.011755077 : 1">
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4214-2"
+         style="fill:#e9e9ff;fill-rule:evenodd;stroke:#000000;stroke-width:0.81363577px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="11"
+         d="m 856.38448,80.627956 0,69.444514 -94.46132,0 0,-69.444514 z"
+         points="856.38448,150.07247 761.92316,150.07247 761.92316,80.627956 856.38448,80.627956 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4210-1"
+         style="fill:#d7d7ff;fill-rule:evenodd;stroke:#000000;stroke-width:0.81363577px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="14"
+         d="m 838.05657,181.81736 -94.46132,0 18.32791,-31.74489 94.46132,0 z"
+         points="743.59525,181.81736 761.92316,150.07247 856.38448,150.07247 838.05657,181.81736 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4212-5"
+         style="fill:#afafde;fill-rule:evenodd;stroke:#000000;stroke-width:0.81363577px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="13"
+         d="m 743.59525,112.37285 0,69.44451 18.32791,-31.74489 0,-69.444514 z"
+         points="743.59525,181.81736 761.92316,150.07247 761.92316,80.627956 743.59525,112.37285 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4206-99"
+         style="fill:#4d4d9f;fill-rule:evenodd;stroke:#000000;stroke-width:0.81363577px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="5"
+         d="m 838.05657,112.37285 0,69.44451 18.32791,-31.74489 0,-69.444514 z"
+         points="838.05657,181.81736 856.38448,150.07247 856.38448,80.627956 838.05657,112.37285 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4204-1"
+         style="fill:#353564;fill-rule:evenodd;stroke:#000000;stroke-width:0.81363577px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="6"
+         d="m 838.05657,112.37285 -94.46132,0 18.32791,-31.744894 94.46132,0 z"
+         points="743.59525,112.37285 761.92316,80.627956 856.38448,80.627956 838.05657,112.37285 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4208-4"
+         style="fill:#8686bf;fill-rule:evenodd;stroke:#000000;stroke-width:0.81363577px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="3"
+         d="m 838.05657,112.37285 0,69.44451 -94.46132,0 0,-69.44451 z"
+         points="838.05657,181.81736 743.59525,181.81736 743.59525,112.37285 838.05657,112.37285 " />
+    </g>
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer11"
+     inkscape:label="VM cables"
+     style="display:inline">
+    <g
+       sodipodi:type="inkscape:box3d"
+       id="g4202-1-6"
+       style="display:inline;fill:#cbc409;fill-opacity:1;stroke:#000000;stroke-width:0.79999983;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       inkscape:perspectiveID="#perspective4216-9-08"
+       inkscape:corner0="2.9479355 : 1.0612211 : 0 : 1"
+       inkscape:corner7="2.8471178 : 0.96042312 : 0.011755077 : 1">
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4214-0-24"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="11"
+         d="m 390.01366,175.09346 0,9.50202 -17.86621,0 0,-9.50202 z"
+         points="390.01366,184.59548 372.14745,184.59548 372.14745,175.09346 390.01366,175.09346 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4210-7-7"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="14"
+         d="m 386.54716,188.93909 -17.86621,0 3.4665,-4.34361 17.86621,0 z"
+         points="368.68095,188.93909 372.14745,184.59548 390.01366,184.59548 386.54716,188.93909 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4212-58-9"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="13"
+         d="m 368.68095,179.43708 0,9.50201 3.4665,-4.34361 0,-9.50202 z"
+         points="368.68095,188.93909 372.14745,184.59548 372.14745,175.09346 368.68095,179.43708 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4206-7-3"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="5"
+         d="m 386.54716,179.43708 0,9.50201 3.4665,-4.34361 0,-9.50202 z"
+         points="386.54716,188.93909 390.01366,184.59548 390.01366,175.09346 386.54716,179.43708 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4204-0-92"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="6"
+         d="m 386.54716,179.43708 -17.86621,0 3.4665,-4.34362 17.86621,0 z"
+         points="368.68095,179.43708 372.14745,175.09346 390.01366,175.09346 386.54716,179.43708 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4208-48-8"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="3"
+         d="m 386.54716,179.43708 0,9.50201 -17.86621,0 0,-9.50201 z"
+         points="386.54716,188.93909 368.68095,188.93909 368.68095,179.43708 386.54716,179.43708 " />
+    </g>
+    <g
+       sodipodi:type="inkscape:box3d"
+       id="g4202-1-6-0"
+       style="display:inline;fill:#cbc409;fill-opacity:1;stroke:#000000;stroke-width:0.79999983;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       inkscape:perspectiveID="#perspective4216-9-08-3"
+       inkscape:corner0="2.9479355 : 1.0612211 : 0 : 1"
+       inkscape:corner7="2.8471178 : 0.96042312 : 0.011755077 : 1">
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4214-0-24-1"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="11"
+         d="m 444.08704,174.89448 0,9.50201 -17.8662,0 0,-9.50201 z"
+         points="444.08704,184.39649 426.22084,184.39649 426.22084,174.89448 444.08704,174.89448 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4210-7-7-7"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="14"
+         d="m 440.62054,188.7401 -17.8662,0 3.4665,-4.34361 17.8662,0 z"
+         points="422.75434,188.7401 426.22084,184.39649 444.08704,184.39649 440.62054,188.7401 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4212-58-9-8"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="13"
+         d="m 422.75434,179.23809 0,9.50201 3.4665,-4.34361 0,-9.50201 z"
+         points="422.75434,188.7401 426.22084,184.39649 426.22084,174.89448 422.75434,179.23809 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4206-7-3-9"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="5"
+         d="m 440.62054,179.23809 0,9.50201 3.4665,-4.34361 0,-9.50201 z"
+         points="440.62054,188.7401 444.08704,184.39649 444.08704,174.89448 440.62054,179.23809 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4204-0-92-1"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="6"
+         d="m 440.62054,179.23809 -17.8662,0 3.4665,-4.34361 17.8662,0 z"
+         points="422.75434,179.23809 426.22084,174.89448 444.08704,174.89448 440.62054,179.23809 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4208-48-8-5"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="3"
+         d="m 440.62054,179.23809 0,9.50201 -17.8662,0 0,-9.50201 z"
+         points="440.62054,188.7401 422.75434,188.7401 422.75434,179.23809 440.62054,179.23809 " />
+    </g>
+    <g
+       sodipodi:type="inkscape:box3d"
+       id="g4202-1-6-2"
+       style="display:inline;fill:#cbc409;fill-opacity:1;stroke:#000000;stroke-width:0.79999983;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       inkscape:perspectiveID="#perspective4216-9-08-9"
+       inkscape:corner0="2.9479355 : 1.0612211 : 0 : 1"
+       inkscape:corner7="2.8471178 : 0.96042312 : 0.011755077 : 1">
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4214-0-24-5"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="11"
+         d="m 516.10789,173.1688 0,9.50201 -17.86621,0 0,-9.50201 z"
+         points="516.10789,182.67081 498.24168,182.67081 498.24168,173.1688 516.10789,173.1688 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4210-7-7-74"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="14"
+         d="m 512.64139,187.01442 -17.86621,0 3.4665,-4.34361 17.86621,0 z"
+         points="494.77518,187.01442 498.24168,182.67081 516.10789,182.67081 512.64139,187.01442 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4212-58-9-9"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="13"
+         d="m 494.77518,177.51241 0,9.50201 3.4665,-4.34361 0,-9.50201 z"
+         points="494.77518,187.01442 498.24168,182.67081 498.24168,173.1688 494.77518,177.51241 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4206-7-3-94"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="5"
+         d="m 512.64139,177.51241 0,9.50201 3.4665,-4.34361 0,-9.50201 z"
+         points="512.64139,187.01442 516.10789,182.67081 516.10789,173.1688 512.64139,177.51241 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4204-0-92-5"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="6"
+         d="m 512.64139,177.51241 -17.86621,0 3.4665,-4.34361 17.86621,0 z"
+         points="494.77518,177.51241 498.24168,173.1688 516.10789,173.1688 512.64139,177.51241 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4208-48-8-9"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="3"
+         d="m 512.64139,177.51241 0,9.50201 -17.86621,0 0,-9.50201 z"
+         points="512.64139,187.01442 494.77518,187.01442 494.77518,177.51241 512.64139,177.51241 " />
+    </g>
+    <g
+       sodipodi:type="inkscape:box3d"
+       id="g4202-1-6-0-3"
+       style="display:inline;fill:#cbc409;fill-opacity:1;stroke:#000000;stroke-width:0.79999983;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       inkscape:perspectiveID="#perspective4216-9-08-3-4"
+       inkscape:corner0="2.9479355 : 1.0612211 : 0 : 1"
+       inkscape:corner7="2.8471178 : 0.96042312 : 0.011755077 : 1">
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4214-0-24-1-5"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="11"
+         d="m 570.18124,172.96982 0,9.502 -17.8662,0 0,-9.502 z"
+         points="570.18124,182.47182 552.31504,182.47182 552.31504,172.96982 570.18124,172.96982 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4210-7-7-7-7"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="14"
+         d="m 566.71474,186.81544 -17.8662,0 3.4665,-4.34362 17.8662,0 z"
+         points="548.84854,186.81544 552.31504,182.47182 570.18124,182.47182 566.71474,186.81544 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4212-58-9-8-0"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="13"
+         d="m 548.84854,177.31343 0,9.50201 3.4665,-4.34362 0,-9.502 z"
+         points="548.84854,186.81544 552.31504,182.47182 552.31504,172.96982 548.84854,177.31343 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4206-7-3-9-8"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="5"
+         d="m 566.71474,177.31343 0,9.50201 3.4665,-4.34362 0,-9.502 z"
+         points="566.71474,186.81544 570.18124,182.47182 570.18124,172.96982 566.71474,177.31343 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4204-0-92-1-1"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="6"
+         d="m 566.71474,177.31343 -17.8662,0 3.4665,-4.34361 17.8662,0 z"
+         points="548.84854,177.31343 552.31504,172.96982 570.18124,172.96982 566.71474,177.31343 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4208-48-8-5-9"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="3"
+         d="m 566.71474,177.31343 0,9.50201 -17.8662,0 0,-9.50201 z"
+         points="566.71474,186.81544 548.84854,186.81544 548.84854,177.31343 566.71474,177.31343 " />
+    </g>
+    <g
+       sodipodi:type="inkscape:box3d"
+       id="g4202-1-6-8"
+       style="display:inline;fill:#cbc409;fill-opacity:1;stroke:#000000;stroke-width:0.79999983;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       inkscape:perspectiveID="#perspective4216-9-08-7"
+       inkscape:corner0="2.9479355 : 1.0612211 : 0 : 1"
+       inkscape:corner7="2.8471178 : 0.96042312 : 0.011755077 : 1">
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4214-0-24-2"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="11"
+         d="m 639.98985,171.6538 0,9.50201 -17.86621,0 0,-9.50201 z"
+         points="639.98985,181.15581 622.12364,181.15581 622.12364,171.6538 639.98985,171.6538 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4210-7-7-5"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="14"
+         d="m 636.52335,185.49942 -17.86621,0 3.4665,-4.34361 17.86621,0 z"
+         points="618.65714,185.49942 622.12364,181.15581 639.98985,181.15581 636.52335,185.49942 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4212-58-9-3"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="13"
+         d="m 618.65714,175.99741 0,9.50201 3.4665,-4.34361 0,-9.50201 z"
+         points="618.65714,185.49942 622.12364,181.15581 622.12364,171.6538 618.65714,175.99741 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4206-7-3-4"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="5"
+         d="m 636.52335,175.99741 0,9.50201 3.4665,-4.34361 0,-9.50201 z"
+         points="636.52335,185.49942 639.98985,181.15581 639.98985,171.6538 636.52335,175.99741 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4204-0-92-9"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="6"
+         d="m 636.52335,175.99741 -17.86621,0 3.4665,-4.34361 17.86621,0 z"
+         points="618.65714,175.99741 622.12364,171.6538 639.98985,171.6538 636.52335,175.99741 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4208-48-8-0"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="3"
+         d="m 636.52335,175.99741 0,9.50201 -17.86621,0 0,-9.50201 z"
+         points="636.52335,185.49942 618.65714,185.49942 618.65714,175.99741 636.52335,175.99741 " />
+    </g>
+    <g
+       sodipodi:type="inkscape:box3d"
+       id="g4202-1-6-0-2"
+       style="display:inline;fill:#cbc409;fill-opacity:1;stroke:#000000;stroke-width:0.79999983;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       inkscape:perspectiveID="#perspective4216-9-08-3-9"
+       inkscape:corner0="2.9479355 : 1.0612211 : 0 : 1"
+       inkscape:corner7="2.8471178 : 0.96042312 : 0.011755077 : 1">
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4214-0-24-1-0"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="11"
+         d="m 694.0632,171.45481 0,9.50201 -17.8662,0 0,-9.50201 z"
+         points="694.0632,180.95682 676.197,180.95682 676.197,171.45481 694.0632,171.45481 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4210-7-7-7-1"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="14"
+         d="m 690.5967,185.30044 -17.8662,0 3.4665,-4.34362 17.8662,0 z"
+         points="672.7305,185.30044 676.197,180.95682 694.0632,180.95682 690.5967,185.30044 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4212-58-9-8-9"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="13"
+         d="m 672.7305,175.79843 0,9.50201 3.4665,-4.34362 0,-9.50201 z"
+         points="672.7305,185.30044 676.197,180.95682 676.197,171.45481 672.7305,175.79843 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4206-7-3-9-6"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="5"
+         d="m 690.5967,175.79843 0,9.50201 3.4665,-4.34362 0,-9.50201 z"
+         points="690.5967,185.30044 694.0632,180.95682 694.0632,171.45481 690.5967,175.79843 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4204-0-92-1-2"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="6"
+         d="m 690.5967,175.79843 -17.8662,0 3.4665,-4.34362 17.8662,0 z"
+         points="672.7305,175.79843 676.197,171.45481 694.0632,171.45481 690.5967,175.79843 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4208-48-8-5-1"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="3"
+         d="m 690.5967,175.79843 0,9.50201 -17.8662,0 0,-9.50201 z"
+         points="690.5967,185.30044 672.7305,185.30044 672.7305,175.79843 690.5967,175.79843 " />
+    </g>
+    <g
+       sodipodi:type="inkscape:box3d"
+       id="g4202-1-6-8-7"
+       style="display:inline;fill:#cbc409;fill-opacity:1;stroke:#000000;stroke-width:0.79999983;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       inkscape:perspectiveID="#perspective4216-9-08-7-2"
+       inkscape:corner0="2.9479355 : 1.0612211 : 0 : 1"
+       inkscape:corner7="2.8471178 : 0.96042312 : 0.011755077 : 1">
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4214-0-24-2-3"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="11"
+         d="m 770.68623,172.21352 0,9.502 -17.8662,0 0,-9.502 z"
+         points="770.68623,181.71552 752.82003,181.71552 752.82003,172.21352 770.68623,172.21352 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4210-7-7-5-1"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="14"
+         d="m 767.21973,186.05914 -17.8662,0 3.4665,-4.34362 17.8662,0 z"
+         points="749.35353,186.05914 752.82003,181.71552 770.68623,181.71552 767.21973,186.05914 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4212-58-9-3-1"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="13"
+         d="m 749.35353,176.55713 0,9.50201 3.4665,-4.34362 0,-9.502 z"
+         points="749.35353,186.05914 752.82003,181.71552 752.82003,172.21352 749.35353,176.55713 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4206-7-3-4-9"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="5"
+         d="m 767.21973,176.55713 0,9.50201 3.4665,-4.34362 0,-9.502 z"
+         points="767.21973,186.05914 770.68623,181.71552 770.68623,172.21352 767.21973,176.55713 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4204-0-92-9-0"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="6"
+         d="m 767.21973,176.55713 -17.8662,0 3.4665,-4.34361 17.8662,0 z"
+         points="749.35353,176.55713 752.82003,172.21352 770.68623,172.21352 767.21973,176.55713 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4208-48-8-0-5"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="3"
+         d="m 767.21973,176.55713 0,9.50201 -17.8662,0 0,-9.50201 z"
+         points="767.21973,186.05914 749.35353,186.05914 749.35353,176.55713 767.21973,176.55713 " />
+    </g>
+    <g
+       sodipodi:type="inkscape:box3d"
+       id="g4202-1-6-0-2-6"
+       style="display:inline;fill:#cbc409;fill-opacity:1;stroke:#000000;stroke-width:0.79999983;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       inkscape:perspectiveID="#perspective4216-9-08-3-9-0"
+       inkscape:corner0="2.9479355 : 1.0612211 : 0 : 1"
+       inkscape:corner7="2.8471178 : 0.96042312 : 0.011755077 : 1">
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4214-0-24-1-0-7"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="11"
+         d="m 824.75958,172.01453 0,9.50201 -17.8662,0 0,-9.50201 z"
+         points="824.75958,181.51654 806.89338,181.51654 806.89338,172.01453 824.75958,172.01453 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4210-7-7-7-1-7"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="14"
+         d="m 821.29308,185.86015 -17.8662,0 3.4665,-4.34361 17.8662,0 z"
+         points="803.42688,185.86015 806.89338,181.51654 824.75958,181.51654 821.29308,185.86015 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4212-58-9-8-9-4"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="13"
+         d="m 803.42688,176.35814 0,9.50201 3.4665,-4.34361 0,-9.50201 z"
+         points="803.42688,185.86015 806.89338,181.51654 806.89338,172.01453 803.42688,176.35814 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4206-7-3-9-6-0"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="5"
+         d="m 821.29308,176.35814 0,9.50201 3.4665,-4.34361 0,-9.50201 z"
+         points="821.29308,185.86015 824.75958,181.51654 824.75958,172.01453 821.29308,176.35814 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4204-0-92-1-2-6"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="6"
+         d="m 821.29308,176.35814 -17.8662,0 3.4665,-4.34361 17.8662,0 z"
+         points="803.42688,176.35814 806.89338,172.01453 824.75958,172.01453 821.29308,176.35814 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4208-48-8-5-1-4"
+         style="fill:#cbc409;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.79999983;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="3"
+         d="m 821.29308,176.35814 0,9.50201 -17.8662,0 0,-9.50201 z"
+         points="821.29308,185.86015 803.42688,185.86015 803.42688,176.35814 821.29308,176.35814 " />
+    </g>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#a8a8e1;stroke-width:5.49999857;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
+       d="m 377.71076,184.81379 c -6.51957,20.13775 -3.00605,37.44124 -7.55441,49.59494 l -5.33674,23.58693"
+       id="path7888"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccc" />
+    <path
+       style="display:inline;fill:none;fill-rule:evenodd;stroke:#a8a8e1;stroke-width:5.49999857;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
+       d="m 431.60894,184.37228 c 3.16784,36.42008 12.3588,62.43799 54.14283,111.85482"
+       id="path7888-5"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="display:inline;fill:none;fill-rule:evenodd;stroke:#a8a8e1;stroke-width:5.49999857;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
+       d="M 503.06497,185.77545 C 501.07635,239.63558 484.485,319.53856 464.39151,353.70697"
+       id="path7888-5-1"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="display:inline;fill:none;fill-rule:evenodd;stroke:#a8a8e1;stroke-width:5.49999857;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
+       d="m 558.00577,183.77825 c -1.98862,54.40326 21.38259,81.85388 23.20406,116.36684"
+       id="path7888-5-1-0"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="display:inline;fill:none;fill-rule:evenodd;stroke:#a8a8e1;stroke-width:5.49999857;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
+       d="m 627.0918,180.89669 c -1.98862,53.78418 -19.86909,79.6688 -18.04762,113.78903"
+       id="path7888-5-1-0-8"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="display:inline;fill:none;fill-rule:evenodd;stroke:#a8a8e1;stroke-width:5.49999857;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
+       d="m 812.91476,180.94454 c -1.98862,54.40323 -13.42348,81.85383 -11.60208,116.36677"
+       id="path7888-5-1-0-8-7"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="display:inline;fill:none;fill-rule:evenodd;stroke:#a8a8e1;stroke-width:5.49999857;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
+       d="m 758.06106,181.58901 c -1.98862,54.10197 -19.86905,81.40055 -18.04765,115.72239"
+       id="path7888-5-1-0-8-7-6"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="display:inline;fill:none;fill-rule:evenodd;stroke:#a8a8e1;stroke-width:5.49999857;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.99607843"
+       d="m 681.53735,181.522 c -1.98862,53.17502 7.20235,78.76646 9.02375,112.50025"
+       id="path7888-5-1-0-8-7-6-3"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer3"
+     inkscape:label="SPP"
+     style="display:inline">
+    <g
+       sodipodi:type="inkscape:box3d"
+       id="g4328"
+       style="fill:#3f8eda;fill-opacity:1;stroke:#000000;stroke-width:0.99999976;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       inkscape:perspectiveID="#perspective5809"
+       inkscape:corner0="2.5902364 : 1.5765348 : 0 : 1"
+       inkscape:corner7="2.4408972 : 1.3076424 : 0.0015760736 : 1">
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4340"
+         style="fill:#3f8eda;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="11"
+         d="m 858.10833,252.07739 0,127.62248 -632.6045,0 0,-127.62248 z"
+         points="858.10833,379.69987 225.50383,379.69987 225.50383,252.07739 858.10833,252.07739 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4336"
+         style="fill:#3f8eda;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="14"
+         d="m 854.02036,386.78043 -632.60449,0 4.08796,-7.08056 632.6045,0 z"
+         points="221.41587,386.78043 225.50383,379.69987 858.10833,379.69987 854.02036,386.78043 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4338"
+         style="fill:#3f8eda;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="13"
+         d="m 221.41587,259.15796 0,127.62247 4.08796,-7.08056 0,-127.62248 z"
+         points="221.41587,386.78043 225.50383,379.69987 225.50383,252.07739 221.41587,259.15796 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4332"
+         style="fill:#3f8eda;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="5"
+         d="m 854.02036,259.15796 0,127.62247 4.08797,-7.08056 0,-127.62248 z"
+         points="854.02036,386.78043 858.10833,379.69987 858.10833,252.07739 854.02036,259.15796 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4330"
+         style="fill:#3f8eda;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="6"
+         d="m 854.02036,259.15796 -632.60449,0 4.08796,-7.08057 632.6045,0 z"
+         points="221.41587,259.15796 225.50383,252.07739 858.10833,252.07739 854.02036,259.15796 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4334"
+         style="fill:#3f8eda;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="3"
+         d="m 854.02036,259.15796 0,127.62247 -632.60449,0 0,-127.62247 z"
+         points="854.02036,386.78043 221.41587,386.78043 221.41587,259.15796 854.02036,259.15796 " />
+    </g>
     <rect
-       style="opacity:1;fill:#e2ffe0;fill-opacity:1;stroke:#000000;stroke-width:0.90168411;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect4301"
-       width="153.50304"
-       height="131.58806"
-       x="69.573288"
-       y="733.93939" />
+       style="display:inline;fill:#3f8eda;fill-opacity:1;stroke:#000000;stroke-width:1.49999976;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4287-3-0"
+       width="622.9541"
+       height="114.70248"
+       x="226.1964"
+       y="265.83765" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer8"
+     inkscape:label="SPP f"
+     style="display:inline">
+    <g
+       style="display:inline"
+       id="g6089-94"
+       transform="translate(71.517351,-321.94258)">
+      <rect
+         y="603.13654"
+         x="198.74495"
+         height="37.009762"
+         width="55.292641"
+         id="rect5792-2-8"
+         style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99999964;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.06226"
+         x="206.15756"
+         height="21.218092"
+         width="40.467812"
+         id="rect5792-2-2-1"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999976;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="628.52179"
+         x="218.39191"
+         height="7.6823797"
+         width="15.163996"
+         id="rect5792-2-2-8-29"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999988;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="214.5368"
+         height="5.1819987"
+         width="2.614861"
+         id="rect5792-2-2-8-9-39"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="231.64496"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-7-0"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="235.92194"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-3-8"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="227.36789"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-6-8"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="223.09085"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-1-50"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="218.81381"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-2-96"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    </g>
+    <g
+       style="display:inline"
+       id="g6089-9-3"
+       transform="translate(135.94198,-321.94258)">
+      <rect
+         y="603.13654"
+         x="198.74495"
+         height="37.009762"
+         width="55.292641"
+         id="rect5792-2-4-8"
+         style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99999964;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.06226"
+         x="206.15756"
+         height="21.218092"
+         width="40.467812"
+         id="rect5792-2-2-7-5"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999976;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="628.52179"
+         x="218.39191"
+         height="7.6823797"
+         width="15.163996"
+         id="rect5792-2-2-8-8-6"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999988;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="214.5368"
+         height="5.1819987"
+         width="2.614861"
+         id="rect5792-2-2-8-9-4-1"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="231.64496"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-7-5-1"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="235.92194"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-3-0-5"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="227.36789"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-6-3-9"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="223.09085"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-1-6-8"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="218.81381"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-2-1-4"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    </g>
+    <g
+       style="display:inline"
+       id="g6089-0-8"
+       transform="translate(200.36661,-321.94258)">
+      <rect
+         y="603.13654"
+         x="198.74495"
+         height="37.009762"
+         width="55.292641"
+         id="rect5792-2-6-1"
+         style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99999964;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.06226"
+         x="206.15756"
+         height="21.218092"
+         width="40.467812"
+         id="rect5792-2-2-3-0"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999976;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="628.52179"
+         x="218.39191"
+         height="7.6823797"
+         width="15.163996"
+         id="rect5792-2-2-8-2-3"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999988;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="214.5368"
+         height="5.1819987"
+         width="2.614861"
+         id="rect5792-2-2-8-9-0-0"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="231.64496"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-7-6-4"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="235.92194"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-3-1-4"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="227.36789"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-6-5-4"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="223.09085"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-1-5-4"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="218.81381"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-2-4-7"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    </g>
+    <g
+       style="display:inline"
+       id="g6089-7-6"
+       transform="translate(264.79122,-321.94258)">
+      <rect
+         y="603.13654"
+         x="198.74495"
+         height="37.009762"
+         width="55.292641"
+         id="rect5792-2-65-3"
+         style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99999964;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.06226"
+         x="206.15756"
+         height="21.218092"
+         width="40.467812"
+         id="rect5792-2-2-6-1"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999976;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="628.52179"
+         x="218.39191"
+         height="7.6823797"
+         width="15.163996"
+         id="rect5792-2-2-8-93-7"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999988;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="214.5368"
+         height="5.1819987"
+         width="2.614861"
+         id="rect5792-2-2-8-9-74-5"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="231.64496"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-7-52-9"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="235.92194"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-3-5-6"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="227.36789"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-6-4-2"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="223.09085"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-1-7-1"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="218.81381"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-2-44-7"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    </g>
+    <g
+       style="display:inline"
+       id="g6089-3-8"
+       transform="translate(353.21583,-321.94258)">
+      <rect
+         y="603.13654"
+         x="198.74495"
+         height="37.009762"
+         width="55.292641"
+         id="rect5792-2-0-5"
+         style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99999964;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.06226"
+         x="206.15756"
+         height="21.218092"
+         width="40.467812"
+         id="rect5792-2-2-78-7"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999976;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="628.52179"
+         x="218.39191"
+         height="7.6823797"
+         width="15.163996"
+         id="rect5792-2-2-8-6-4"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999988;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="214.5368"
+         height="5.1819987"
+         width="2.614861"
+         id="rect5792-2-2-8-9-8-1"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="231.64496"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-7-8-8"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="235.92194"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-3-4-5"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="227.36789"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-6-31-9"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="223.09085"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-1-4-7"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="218.81381"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-2-9-5"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    </g>
+    <g
+       style="display:inline"
+       id="g6089-2-3"
+       transform="translate(417.6405,-321.94258)">
+      <rect
+         y="603.13654"
+         x="198.74495"
+         height="37.009762"
+         width="55.292641"
+         id="rect5792-2-06-8"
+         style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99999964;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.06226"
+         x="206.15756"
+         height="21.218092"
+         width="40.467812"
+         id="rect5792-2-2-89-8"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999976;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="628.52179"
+         x="218.39191"
+         height="7.6823797"
+         width="15.163996"
+         id="rect5792-2-2-8-26-3"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999988;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="214.5368"
+         height="5.1819987"
+         width="2.614861"
+         id="rect5792-2-2-8-9-64-1"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="231.64496"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-7-9-8"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="235.92194"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-3-50-9"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="227.36789"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-6-48-6"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="223.09085"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-1-71-4"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="218.81381"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-2-7-3"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    </g>
+    <g
+       style="display:inline"
+       id="g6089-27-3"
+       transform="translate(482.06506,-321.94258)">
+      <rect
+         y="603.13654"
+         x="198.74495"
+         height="37.009762"
+         width="55.292641"
+         id="rect5792-2-22-3"
+         style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99999964;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.06226"
+         x="206.15756"
+         height="21.218092"
+         width="40.467812"
+         id="rect5792-2-2-61-8"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999976;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="628.52179"
+         x="218.39191"
+         height="7.6823797"
+         width="15.163996"
+         id="rect5792-2-2-8-0-6"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999988;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="214.5368"
+         height="5.1819987"
+         width="2.614861"
+         id="rect5792-2-2-8-9-61-0"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="231.64496"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-7-59-4"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="235.92194"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-3-49-8"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="227.36789"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-6-0-8"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="223.09085"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-1-9-8"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="218.81381"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-2-17-9"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    </g>
+    <g
+       style="display:inline"
+       id="g6089-71-7"
+       transform="translate(546.48972,-321.94258)">
+      <rect
+         y="603.13654"
+         x="198.74495"
+         height="37.009762"
+         width="55.292641"
+         id="rect5792-2-1-7"
+         style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99999964;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.06226"
+         x="206.15756"
+         height="21.218092"
+         width="40.467812"
+         id="rect5792-2-2-5-6"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999976;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="628.52179"
+         x="218.39191"
+         height="7.6823797"
+         width="15.163996"
+         id="rect5792-2-2-8-97-4"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999988;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="214.5368"
+         height="5.1819987"
+         width="2.614861"
+         id="rect5792-2-2-8-9-76-3"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="231.64496"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-7-7-0"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="235.92194"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-3-3-3"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="227.36789"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-6-6-0"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="223.09085"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-1-56-9"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="218.81381"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-2-3-2"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    </g>
+    <g
+       style="display:inline"
+       id="g6089-94-5"
+       transform="translate(71.525976,-275.58205)">
+      <rect
+         y="603.13654"
+         x="198.74495"
+         height="37.009762"
+         width="55.292641"
+         id="rect5792-2-8-4"
+         style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99999964;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.06226"
+         x="206.15756"
+         height="21.218092"
+         width="40.467812"
+         id="rect5792-2-2-1-0"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999976;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="628.52179"
+         x="218.39191"
+         height="7.6823797"
+         width="15.163996"
+         id="rect5792-2-2-8-29-5"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999988;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="214.5368"
+         height="5.1819987"
+         width="2.614861"
+         id="rect5792-2-2-8-9-39-9"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="231.64496"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-7-0-4"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="235.92194"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-3-8-6"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="227.36789"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-6-8-9"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="223.09085"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-1-50-2"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="218.81381"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-2-96-2"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    </g>
+    <g
+       style="display:inline"
+       id="g6089-9-3-4"
+       transform="translate(135.9506,-275.58205)">
+      <rect
+         y="603.13654"
+         x="198.74495"
+         height="37.009762"
+         width="55.292641"
+         id="rect5792-2-4-8-7"
+         style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99999964;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.06226"
+         x="206.15756"
+         height="21.218092"
+         width="40.467812"
+         id="rect5792-2-2-7-5-7"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999976;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="628.52179"
+         x="218.39191"
+         height="7.6823797"
+         width="15.163996"
+         id="rect5792-2-2-8-8-6-5"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999988;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="214.5368"
+         height="5.1819987"
+         width="2.614861"
+         id="rect5792-2-2-8-9-4-1-4"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="231.64496"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-7-5-1-8"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="235.92194"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-3-0-5-1"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="227.36789"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-6-3-9-2"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="223.09085"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-1-6-8-8"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="218.81381"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-2-1-4-9"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    </g>
+    <g
+       style="display:inline"
+       id="g6089-0-8-3"
+       transform="translate(200.37523,-275.58205)">
+      <rect
+         y="603.13654"
+         x="198.74495"
+         height="37.009762"
+         width="55.292641"
+         id="rect5792-2-6-1-6"
+         style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99999964;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.06226"
+         x="206.15756"
+         height="21.218092"
+         width="40.467812"
+         id="rect5792-2-2-3-0-8"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999976;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="628.52179"
+         x="218.39191"
+         height="7.6823797"
+         width="15.163996"
+         id="rect5792-2-2-8-2-3-0"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999988;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="214.5368"
+         height="5.1819987"
+         width="2.614861"
+         id="rect5792-2-2-8-9-0-0-2"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="231.64496"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-7-6-4-1"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="235.92194"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-3-1-4-0"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="227.36789"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-6-5-4-5"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="223.09085"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-1-5-4-1"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="218.81381"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-2-4-7-1"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    </g>
+    <g
+       style="display:inline"
+       id="g6089-7-6-0"
+       transform="translate(264.79984,-275.58205)">
+      <rect
+         y="603.13654"
+         x="198.74495"
+         height="37.009762"
+         width="55.292641"
+         id="rect5792-2-65-3-8"
+         style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99999964;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.06226"
+         x="206.15756"
+         height="21.218092"
+         width="40.467812"
+         id="rect5792-2-2-6-1-5"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999976;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="628.52179"
+         x="218.39191"
+         height="7.6823797"
+         width="15.163996"
+         id="rect5792-2-2-8-93-7-0"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999988;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="214.5368"
+         height="5.1819987"
+         width="2.614861"
+         id="rect5792-2-2-8-9-74-5-6"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="231.64496"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-7-52-9-4"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="235.92194"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-3-5-6-6"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="227.36789"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-6-4-2-2"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="223.09085"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-1-7-1-5"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="218.81381"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-2-44-7-8"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    </g>
+    <g
+       style="display:inline"
+       id="g6089-3-8-6"
+       transform="translate(353.22445,-275.58205)">
+      <rect
+         y="603.13654"
+         x="198.74495"
+         height="37.009762"
+         width="55.292641"
+         id="rect5792-2-0-5-2"
+         style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99999964;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.06226"
+         x="206.15756"
+         height="21.218092"
+         width="40.467812"
+         id="rect5792-2-2-78-7-8"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999976;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="628.52179"
+         x="218.39191"
+         height="7.6823797"
+         width="15.163996"
+         id="rect5792-2-2-8-6-4-4"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999988;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="214.5368"
+         height="5.1819987"
+         width="2.614861"
+         id="rect5792-2-2-8-9-8-1-7"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="231.64496"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-7-8-8-2"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="235.92194"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-3-4-5-4"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="227.36789"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-6-31-9-0"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="223.09085"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-1-4-7-6"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="218.81381"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-2-9-5-2"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    </g>
+    <g
+       style="display:inline"
+       id="g6089-2-3-9"
+       transform="translate(417.64913,-275.58205)">
+      <rect
+         y="603.13654"
+         x="198.74495"
+         height="37.009762"
+         width="55.292641"
+         id="rect5792-2-06-8-9"
+         style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99999964;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.06226"
+         x="206.15756"
+         height="21.218092"
+         width="40.467812"
+         id="rect5792-2-2-89-8-0"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999976;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="628.52179"
+         x="218.39191"
+         height="7.6823797"
+         width="15.163996"
+         id="rect5792-2-2-8-26-3-8"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999988;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="214.5368"
+         height="5.1819987"
+         width="2.614861"
+         id="rect5792-2-2-8-9-64-1-1"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="231.64496"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-7-9-8-3"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="235.92194"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-3-50-9-1"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="227.36789"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-6-48-6-1"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="223.09085"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-1-71-4-0"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="218.81381"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-2-7-3-3"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    </g>
+    <g
+       style="display:inline"
+       id="g6089-27-3-4"
+       transform="translate(482.07368,-275.58205)">
+      <rect
+         y="603.13654"
+         x="198.74495"
+         height="37.009762"
+         width="55.292641"
+         id="rect5792-2-22-3-0"
+         style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99999964;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.06226"
+         x="206.15756"
+         height="21.218092"
+         width="40.467812"
+         id="rect5792-2-2-61-8-3"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999976;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="628.52179"
+         x="218.39191"
+         height="7.6823797"
+         width="15.163996"
+         id="rect5792-2-2-8-0-6-9"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999988;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="214.5368"
+         height="5.1819987"
+         width="2.614861"
+         id="rect5792-2-2-8-9-61-0-1"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="231.64496"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-7-59-4-9"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="235.92194"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-3-49-8-6"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="227.36789"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-6-0-8-9"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="223.09085"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-1-9-8-3"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="218.81381"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-2-17-9-3"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    </g>
+    <g
+       style="display:inline"
+       id="g6089-71-7-8"
+       transform="translate(546.49835,-275.58205)">
+      <rect
+         y="603.13654"
+         x="198.74495"
+         height="37.009762"
+         width="55.292641"
+         id="rect5792-2-1-7-0"
+         style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.99999964;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.06226"
+         x="206.15756"
+         height="21.218092"
+         width="40.467812"
+         id="rect5792-2-2-5-6-5"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999976;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="628.52179"
+         x="218.39191"
+         height="7.6823797"
+         width="15.163996"
+         id="rect5792-2-2-8-97-4-6"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.99999988;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="214.5368"
+         height="5.1819987"
+         width="2.614861"
+         id="rect5792-2-2-8-9-76-3-6"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="231.64496"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-7-7-0-4"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="235.92194"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-3-3-3-0"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="227.36789"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-6-6-0-0"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="223.09085"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-1-56-9-4"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="218.81381"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-2-3-2-6"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    </g>
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer10"
+     inkscape:label="SPP cables"
+     style="display:inline">
+    <g
+       sodipodi:type="inkscape:box3d"
+       id="g4202-1-4"
+       style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       inkscape:perspectiveID="#perspective4216-9-0"
+       inkscape:corner0="2.9479355 : 1.0612211 : 0 : 1"
+       inkscape:corner7="2.8471178 : 0.96042312 : 0.011755077 : 1">
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4214-0-2"
+         style="fill:#e9e9ff;fill-rule:evenodd;stroke:#000000;stroke-width:0.28666455px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="11"
+         d="m 793.09062,284.70818 0,21.00307 -38.77009,0 0,-21.00307 z"
+         points="793.09062,305.71125 754.32053,305.71125 754.32053,284.70818 793.09062,284.70818 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4210-7-9"
+         style="fill:#d7d7ff;fill-rule:evenodd;stroke:#000000;stroke-width:0.28666455px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="14"
+         d="m 785.56823,315.3123 -38.77009,0 7.52239,-9.60105 38.77009,0 z"
+         points="746.79814,315.3123 754.32053,305.71125 793.09062,305.71125 785.56823,315.3123 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4212-58-6"
+         style="fill:#afafde;fill-rule:evenodd;stroke:#000000;stroke-width:0.28666455px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="13"
+         d="m 746.79814,294.30923 0,21.00307 7.52239,-9.60105 0,-21.00307 z"
+         points="746.79814,315.3123 754.32053,305.71125 754.32053,284.70818 746.79814,294.30923 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4206-7-1"
+         style="fill:#4d4d9f;fill-rule:evenodd;stroke:#000000;stroke-width:0.28666455px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="5"
+         d="m 785.56823,294.30923 0,21.00307 7.52239,-9.60105 0,-21.00307 z"
+         points="785.56823,315.3123 793.09062,305.71125 793.09062,284.70818 785.56823,294.30923 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4204-0-0"
+         style="fill:#353564;fill-rule:evenodd;stroke:#000000;stroke-width:0.28666455px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="6"
+         d="m 785.56823,294.30923 -38.77009,0 7.52239,-9.60105 38.77009,0 z"
+         points="746.79814,294.30923 754.32053,284.70818 793.09062,284.70818 785.56823,294.30923 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4208-48-4"
+         style="fill:#8686bf;fill-rule:evenodd;stroke:#000000;stroke-width:0.28666455px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="3"
+         d="m 785.56823,294.30923 0,21.00307 -38.77009,0 0,-21.00307 z"
+         points="785.56823,315.3123 746.79814,315.3123 746.79814,294.30923 785.56823,294.30923 " />
+    </g>
+    <g
+       sodipodi:type="inkscape:box3d"
+       id="g4202-1-2"
+       style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       inkscape:perspectiveID="#perspective4216-9-2"
+       inkscape:corner0="2.9479355 : 1.0612211 : 0 : 1"
+       inkscape:corner7="2.8471178 : 0.96042312 : 0.011755077 : 1">
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4214-0-20"
+         style="fill:#e9e9ff;fill-rule:evenodd;stroke:#000000;stroke-width:0.27662808px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="11"
+         d="m 510.58085,285.24107 0,20.11838 -37.69045,0 0,-20.11838 z"
+         points="510.58085,305.35945 472.8904,305.35945 472.8904,285.24107 510.58085,285.24107 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4210-7-5"
+         style="fill:#d7d7ff;fill-rule:evenodd;stroke:#000000;stroke-width:0.27662808px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="14"
+         d="m 503.26794,314.55608 -37.69045,0 7.31291,-9.19663 37.69045,0 z"
+         points="465.57749,314.55608 472.8904,305.35945 510.58085,305.35945 503.26794,314.55608 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4212-58-5"
+         style="fill:#afafde;fill-rule:evenodd;stroke:#000000;stroke-width:0.27662808px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="13"
+         d="m 465.57749,294.4377 0,20.11838 7.31291,-9.19663 0,-20.11838 z"
+         points="465.57749,314.55608 472.8904,305.35945 472.8904,285.24107 465.57749,294.4377 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4206-7-2"
+         style="fill:#4d4d9f;fill-rule:evenodd;stroke:#000000;stroke-width:0.27662808px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="5"
+         d="m 503.26794,294.4377 0,20.11838 7.31291,-9.19663 0,-20.11838 z"
+         points="503.26794,314.55608 510.58085,305.35945 510.58085,285.24107 503.26794,294.4377 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4204-0-9"
+         style="fill:#353564;fill-rule:evenodd;stroke:#000000;stroke-width:0.27662808px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="6"
+         d="m 503.26794,294.4377 -37.69045,0 7.31291,-9.19663 37.69045,0 z"
+         points="465.57749,294.4377 472.8904,285.24107 510.58085,285.24107 503.26794,294.4377 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4208-48-0"
+         style="fill:#8686bf;fill-rule:evenodd;stroke:#000000;stroke-width:0.27662808px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="3"
+         d="m 503.26794,294.4377 0,20.11838 -37.69045,0 0,-20.11838 z"
+         points="503.26794,314.55608 465.57749,314.55608 465.57749,294.4377 503.26794,294.4377 " />
+    </g>
+    <g
+       sodipodi:type="inkscape:box3d"
+       id="g4202-1-2-8"
+       style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       inkscape:perspectiveID="#perspective4216-9-2-2"
+       inkscape:corner0="2.9479355 : 1.0612211 : 0 : 1"
+       inkscape:corner7="2.8471178 : 0.96042312 : 0.011755077 : 1">
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4214-0-20-3"
+         style="fill:#e9e9ff;fill-rule:evenodd;stroke:#000000;stroke-width:0.27662808px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="11"
+         d="m 598.71363,284.34177 0,20.11837 -37.69044,0 0,-20.11837 z"
+         points="598.71363,304.46014 561.02319,304.46014 561.02319,284.34177 598.71363,284.34177 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4210-7-5-8"
+         style="fill:#d7d7ff;fill-rule:evenodd;stroke:#000000;stroke-width:0.27662808px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="14"
+         d="m 591.40072,313.65677 -37.69045,0 7.31292,-9.19663 37.69044,0 z"
+         points="553.71027,313.65677 561.02319,304.46014 598.71363,304.46014 591.40072,313.65677 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4212-58-5-0"
+         style="fill:#afafde;fill-rule:evenodd;stroke:#000000;stroke-width:0.27662808px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="13"
+         d="m 553.71027,293.5384 0,20.11837 7.31292,-9.19663 0,-20.11837 z"
+         points="553.71027,313.65677 561.02319,304.46014 561.02319,284.34177 553.71027,293.5384 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4206-7-2-4"
+         style="fill:#4d4d9f;fill-rule:evenodd;stroke:#000000;stroke-width:0.27662808px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="5"
+         d="m 591.40072,293.5384 0,20.11837 7.31291,-9.19663 0,-20.11837 z"
+         points="591.40072,313.65677 598.71363,304.46014 598.71363,284.34177 591.40072,293.5384 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4204-0-9-0"
+         style="fill:#353564;fill-rule:evenodd;stroke:#000000;stroke-width:0.27662808px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="6"
+         d="m 591.40072,293.5384 -37.69045,0 7.31292,-9.19663 37.69044,0 z"
+         points="553.71027,293.5384 561.02319,284.34177 598.71363,284.34177 591.40072,293.5384 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4208-48-0-9"
+         style="fill:#8686bf;fill-rule:evenodd;stroke:#000000;stroke-width:0.27662808px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="3"
+         d="m 591.40072,293.5384 0,20.11837 -37.69045,0 0,-20.11837 z"
+         points="591.40072,313.65677 553.71027,313.65677 553.71027,293.5384 591.40072,293.5384 " />
+    </g>
+    <g
+       sodipodi:type="inkscape:box3d"
+       id="g4202-1-2-9"
+       style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       inkscape:perspectiveID="#perspective4216-9-2-1"
+       inkscape:corner0="2.9479355 : 1.0612211 : 0 : 1"
+       inkscape:corner7="2.8471178 : 0.96042312 : 0.011755077 : 1">
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4214-0-20-6"
+         style="fill:#e9e9ff;fill-rule:evenodd;stroke:#000000;stroke-width:0.27662808px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="11"
+         d="m 663.44097,332.00496 0,20.11837 -37.69044,0 0,-20.11837 z"
+         points="663.44097,352.12333 625.75053,352.12333 625.75053,332.00496 663.44097,332.00496 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4210-7-5-2"
+         style="fill:#d7d7ff;fill-rule:evenodd;stroke:#000000;stroke-width:0.27662808px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="14"
+         d="m 656.12806,361.31996 -37.69044,0 7.31291,-9.19663 37.69044,0 z"
+         points="618.43762,361.31996 625.75053,352.12333 663.44097,352.12333 656.12806,361.31996 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4212-58-5-5"
+         style="fill:#afafde;fill-rule:evenodd;stroke:#000000;stroke-width:0.27662808px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="13"
+         d="m 618.43762,341.20159 0,20.11837 7.31291,-9.19663 0,-20.11837 z"
+         points="618.43762,361.31996 625.75053,352.12333 625.75053,332.00496 618.43762,341.20159 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4206-7-2-44"
+         style="fill:#4d4d9f;fill-rule:evenodd;stroke:#000000;stroke-width:0.27662808px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="5"
+         d="m 656.12806,341.20159 0,20.11837 7.31291,-9.19663 0,-20.11837 z"
+         points="656.12806,361.31996 663.44097,352.12333 663.44097,332.00496 656.12806,341.20159 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4204-0-9-9"
+         style="fill:#353564;fill-rule:evenodd;stroke:#000000;stroke-width:0.27662808px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="6"
+         d="m 656.12806,341.20159 -37.69044,0 7.31291,-9.19663 37.69044,0 z"
+         points="618.43762,341.20159 625.75053,332.00496 663.44097,332.00496 656.12806,341.20159 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4208-48-0-93"
+         style="fill:#8686bf;fill-rule:evenodd;stroke:#000000;stroke-width:0.27662808px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="3"
+         d="m 656.12806,341.20159 0,20.11837 -37.69044,0 0,-20.11837 z"
+         points="656.12806,361.31996 618.43762,361.31996 618.43762,341.20159 656.12806,341.20159 " />
+    </g>
+    <g
+       sodipodi:type="inkscape:box3d"
+       id="g4202-1-2-0"
+       style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       inkscape:perspectiveID="#perspective4216-9-2-6"
+       inkscape:corner0="2.9479355 : 1.0612211 : 0 : 1"
+       inkscape:corner7="2.8471178 : 0.96042312 : 0.011755077 : 1">
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4214-0-20-5"
+         style="fill:#e9e9ff;fill-rule:evenodd;stroke:#000000;stroke-width:0.27662808px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="11"
+         d="m 510.63585,331.39407 0,20.11837 -37.69045,0 0,-20.11837 z"
+         points="510.63585,351.51244 472.9454,351.51244 472.9454,331.39407 510.63585,331.39407 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4210-7-5-0"
+         style="fill:#d7d7ff;fill-rule:evenodd;stroke:#000000;stroke-width:0.27662808px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="14"
+         d="m 503.32293,360.70907 -37.69044,0 7.31291,-9.19663 37.69045,0 z"
+         points="465.63249,360.70907 472.9454,351.51244 510.63585,351.51244 503.32293,360.70907 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4212-58-5-2"
+         style="fill:#afafde;fill-rule:evenodd;stroke:#000000;stroke-width:0.27662808px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="13"
+         d="m 465.63249,340.5907 0,20.11837 7.31291,-9.19663 0,-20.11837 z"
+         points="465.63249,360.70907 472.9454,351.51244 472.9454,331.39407 465.63249,340.5907 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4206-7-2-9"
+         style="fill:#4d4d9f;fill-rule:evenodd;stroke:#000000;stroke-width:0.27662808px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="5"
+         d="m 503.32293,340.5907 0,20.11837 7.31292,-9.19663 0,-20.11837 z"
+         points="503.32293,360.70907 510.63585,351.51244 510.63585,331.39407 503.32293,340.5907 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4204-0-9-4"
+         style="fill:#353564;fill-rule:evenodd;stroke:#000000;stroke-width:0.27662808px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="6"
+         d="m 503.32293,340.5907 -37.69044,0 7.31291,-9.19663 37.69045,0 z"
+         points="465.63249,340.5907 472.9454,331.39407 510.63585,331.39407 503.32293,340.5907 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4208-48-0-3"
+         style="fill:#8686bf;fill-rule:evenodd;stroke:#000000;stroke-width:0.27662808px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="3"
+         d="m 503.32293,340.5907 0,20.11837 -37.69044,0 0,-20.11837 z"
+         points="503.32293,360.70907 465.63249,360.70907 465.63249,340.5907 503.32293,340.5907 " />
+    </g>
+    <g
+       sodipodi:type="inkscape:box3d"
+       id="g4202-1"
+       style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       inkscape:perspectiveID="#perspective4216-9"
+       inkscape:corner0="2.9479355 : 1.0612211 : 0 : 1"
+       inkscape:corner7="2.8471178 : 0.96042312 : 0.011755077 : 1">
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4214-0"
+         style="fill:#e9e9ff;fill-rule:evenodd;stroke:#000000;stroke-width:0.27662808px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="11"
+         d="m 382.33404,285.32116 0,20.11838 -37.69046,0 0,-20.11838 z"
+         points="382.33404,305.43954 344.64358,305.43954 344.64358,285.32116 382.33404,285.32116 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4210-7"
+         style="fill:#d7d7ff;fill-rule:evenodd;stroke:#000000;stroke-width:0.27662808px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="14"
+         d="m 375.02113,314.63618 -37.69046,0 7.31291,-9.19664 37.69046,0 z"
+         points="337.33067,314.63618 344.64358,305.43954 382.33404,305.43954 375.02113,314.63618 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4212-58"
+         style="fill:#afafde;fill-rule:evenodd;stroke:#000000;stroke-width:0.27662808px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="13"
+         d="m 337.33067,294.51779 0,20.11839 7.31291,-9.19664 0,-20.11838 z"
+         points="337.33067,314.63618 344.64358,305.43954 344.64358,285.32116 337.33067,294.51779 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4206-7"
+         style="fill:#4d4d9f;fill-rule:evenodd;stroke:#000000;stroke-width:0.27662808px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="5"
+         d="m 375.02113,294.51779 0,20.11839 7.31291,-9.19664 0,-20.11838 z"
+         points="375.02113,314.63618 382.33404,305.43954 382.33404,285.32116 375.02113,294.51779 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4204-0"
+         style="fill:#353564;fill-rule:evenodd;stroke:#000000;stroke-width:0.27662808px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="6"
+         d="m 375.02113,294.51779 -37.69046,0 7.31291,-9.19663 37.69046,0 z"
+         points="337.33067,294.51779 344.64358,285.32116 382.33404,285.32116 375.02113,294.51779 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4208-48"
+         style="fill:#8686bf;fill-rule:evenodd;stroke:#000000;stroke-width:0.27662808px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="3"
+         d="m 375.02113,294.51779 0,20.11839 -37.69046,0 0,-20.11839 z"
+         points="375.02113,314.63618 337.33067,314.63618 337.33067,294.51779 375.02113,294.51779 " />
+    </g>
     <rect
-       style="opacity:1;fill:#ffcba8;fill-opacity:1;stroke:#000000;stroke-width:1.12799239;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect4303"
-       width="82.375381"
-       height="57.882195"
-       x="104.35989"
-       y="772.99127" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-weight:normal;font-size:17.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       x="126.47623"
-       y="806.31165"
-       id="text4305"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         id="tspan4307"
-         x="126.47623"
-         y="806.31165">App</tspan></text>
+       style="display:inline;fill:#5b5d88;fill-opacity:1;stroke:#000100;stroke-width:0.49999988;stroke-linecap:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect7144-0-4"
+       width="28.999994"
+       height="12.499997"
+       x="341.27625"
+       y="298.63345" />
     <rect
-       style="opacity:1;fill:#f4ff89;fill-opacity:1;stroke:#000000;stroke-width:0.88377476;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect4309"
-       width="67.150223"
-       height="33.633224"
-       x="112.10507"
-       y="831.32495" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-weight:normal;font-size:17.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       x="122.34349"
-       y="853.87616"
-       id="text4311"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         id="tspan4313"
-         x="122.34349"
-         y="853.87616">Port 3</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-weight:normal;font-size:17.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       x="90.91153"
-       y="761.86603"
-       id="text4315"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         id="tspan4317"
-         x="90.91153"
-         y="761.86603">VM</tspan></text>
+       style="display:inline;fill:#5b5d88;fill-opacity:1;stroke:#000100;stroke-width:0.49999988;stroke-linecap:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect7144-0-4-8"
+       width="28.999987"
+       height="12.499994"
+       x="469.87231"
+       y="298.27048" />
+    <rect
+       style="display:inline;fill:#5b5d88;fill-opacity:1;stroke:#000100;stroke-width:0.49999988;stroke-linecap:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect7144-0-4-8-7"
+       width="28.999979"
+       height="12.499991"
+       x="469.62225"
+       y="344.27985" />
+    <rect
+       style="display:inline;fill:#5b5d88;fill-opacity:1;stroke:#000100;stroke-width:0.49999988;stroke-linecap:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect7144-0-4-8-7-9"
+       width="28.999971"
+       height="12.499989"
+       x="557.92664"
+       y="297.22714" />
+    <rect
+       style="display:inline;fill:#5b5d88;fill-opacity:1;stroke:#000100;stroke-width:0.49999988;stroke-linecap:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect7144-0-4-8-7-9-0"
+       width="28.999964"
+       height="12.499986"
+       x="622.38239"
+       y="344.92441" />
+    <rect
+       style="display:inline;fill:#5b5d88;fill-opacity:1;stroke:#000100;stroke-width:0.49999988;stroke-linecap:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect7144-0-4-8-7-9-3"
+       width="28.999964"
+       height="12.499986"
+       x="751.29388"
+       y="298.83856" />
+    <path
+       style="display:inline;fill:none;fill-rule:evenodd;stroke:#5868b8;stroke-width:7.49999762;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1"
+       d="m 356.28869,305.77725 c -27.62772,28.00095 -12.72747,87.9616 -18.82317,125.45267 -6.79654,41.80153 -16.61008,67.25844 -68.72927,101.3322"
+       id="path7127-8-8"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csc" />
+    <path
+       style="display:inline;fill:none;fill-rule:evenodd;stroke:#5868b8;stroke-width:7.49999857;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1"
+       d="m 765.1934,305.43809 c -41.08087,18.97715 -41.53007,98.72008 -43.79048,129.76557 -3.40376,46.74887 -24.45013,69.39107 -187.06466,103.46482"
+       id="path7127-8-8-5"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#5b4565;stroke-width:7.49999762;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 485.21756,303.0308 c -34.0839,35.60843 -12.36694,101.29583 -35.81236,105.98963 -49.71059,12.74703 -64.45949,55.84892 12.28128,60.52845 171.63437,20.37459 58.97968,-122.77178 110.46932,-164.93126"
+       id="path8020"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#5868b8;stroke-width:7.49999762;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 481.85521,350.20339 c -29.41246,19.70902 -4.10335,60.61157 -29.0719,71.14303 -35.64994,8.04633 -102.65983,65.55942 0.0504,69.66589 193.24052,11.16722 157.2269,-132.22058 183.25958,-139.2545"
+       id="path8022"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccc" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="Phy ports"
+     style="display:inline">
+    <g
+       sodipodi:type="inkscape:box3d"
+       id="g4328-9"
+       style="display:inline;fill:#919191;fill-opacity:1;stroke:#000000;stroke-width:0.99999976;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       inkscape:perspectiveID="#perspective5809-7"
+       inkscape:corner0="2.5902364 : 1.5757599 : 0 : 1"
+       inkscape:corner7="2.4408972 : 1.3076424 : 0.0016403905 : 1">
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4340-2"
+         style="fill:#919191;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="11"
+         d="m 741.54616,503.22651 0,127.62245 -630.78128,0 0,-127.62245 z"
+         points="741.54616,630.84896 110.76488,630.84896 110.76488,503.22651 741.54616,503.22651 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4336-0"
+         style="fill:#919191;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="14"
+         d="m 737.29137,638.21847 -630.78128,0 4.25479,-7.36951 630.78128,0 z"
+         points="106.51009,638.21847 110.76488,630.84896 741.54616,630.84896 737.29137,638.21847 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4338-2"
+         style="fill:#919191;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="13"
+         d="m 106.51009,510.59602 0,127.62245 4.25479,-7.36951 0,-127.62245 z"
+         points="106.51009,638.21847 110.76488,630.84896 110.76488,503.22651 106.51009,510.59602 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4332-3"
+         style="fill:#919191;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="5"
+         d="m 737.29137,510.59602 0,127.62245 4.25479,-7.36951 0,-127.62245 z"
+         points="737.29137,638.21847 741.54616,630.84896 741.54616,503.22651 737.29137,510.59602 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4330-7"
+         style="fill:#919191;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="6"
+         d="m 737.29137,510.59602 -630.78128,0 4.25479,-7.36951 630.78128,0 z"
+         points="106.51009,510.59602 110.76488,503.22651 741.54616,503.22651 737.29137,510.59602 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4334-5"
+         style="fill:#919191;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+         inkscape:box3dsidetype="3"
+         d="m 737.29137,510.59602 0,127.62245 -630.78128,0 0,-127.62245 z"
+         points="737.29137,638.21847 106.51009,638.21847 106.51009,510.59602 737.29137,510.59602 " />
+    </g>
+    <rect
+       style="display:inline;fill:#aaaaaa;fill-opacity:1;stroke:none;stroke-width:1.49999976;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4287-3-2-9-9"
+       width="585.77856"
+       height="89.662712"
+       x="127.9507"
+       y="530.30072" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer7"
+     inkscape:label="Phy ports f"
+     style="display:inline">
+    <g
+       id="g6089"
+       transform="matrix(1.0270479,0,0,1.0696635,-53.252633,-88.676989)">
+      <rect
+         y="603.13654"
+         x="198.74495"
+         height="37.009762"
+         width="55.292641"
+         id="rect5792-2"
+         style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.95407146;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.06226"
+         x="206.15756"
+         height="21.218092"
+         width="40.467812"
+         id="rect5792-2-2"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.95407158;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="628.52179"
+         x="218.39191"
+         height="7.6823797"
+         width="15.163996"
+         id="rect5792-2-2-8"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.9540717;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="214.5368"
+         height="5.1819987"
+         width="2.614861"
+         id="rect5792-2-2-8-9"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="231.64496"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-7"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="235.92194"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-3"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="227.36789"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-6"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="223.09085"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-1"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="218.81381"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-2"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    </g>
+    <g
+       style="display:inline"
+       id="g6089-9"
+       transform="matrix(1.0270479,0,0,1.0696635,12.914546,-88.676989)">
+      <rect
+         y="603.13654"
+         x="198.74495"
+         height="37.009762"
+         width="55.292641"
+         id="rect5792-2-4"
+         style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.95407146;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.06226"
+         x="206.15756"
+         height="21.218092"
+         width="40.467812"
+         id="rect5792-2-2-7"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.95407158;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="628.52179"
+         x="218.39191"
+         height="7.6823797"
+         width="15.163996"
+         id="rect5792-2-2-8-8"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.9540717;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="214.5368"
+         height="5.1819987"
+         width="2.614861"
+         id="rect5792-2-2-8-9-4"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="231.64496"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-7-5"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="235.92194"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-3-0"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="227.36789"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-6-3"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="223.09085"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-1-6"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="218.81381"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-2-1"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    </g>
+    <g
+       style="display:inline"
+       id="g6089-0"
+       transform="matrix(1.0270479,0,0,1.0696635,79.081728,-88.676989)">
+      <rect
+         y="603.13654"
+         x="198.74495"
+         height="37.009762"
+         width="55.292641"
+         id="rect5792-2-6"
+         style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.95407146;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.06226"
+         x="206.15756"
+         height="21.218092"
+         width="40.467812"
+         id="rect5792-2-2-3"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.95407158;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="628.52179"
+         x="218.39191"
+         height="7.6823797"
+         width="15.163996"
+         id="rect5792-2-2-8-2"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.9540717;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="214.5368"
+         height="5.1819987"
+         width="2.614861"
+         id="rect5792-2-2-8-9-0"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="231.64496"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-7-6"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="235.92194"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-3-1"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="227.36789"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-6-5"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="223.09085"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-1-5"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="218.81381"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-2-4"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    </g>
+    <g
+       style="display:inline"
+       id="g6089-7"
+       transform="matrix(1.0270479,0,0,1.0696635,145.24889,-88.676989)">
+      <rect
+         y="603.13654"
+         x="198.74495"
+         height="37.009762"
+         width="55.292641"
+         id="rect5792-2-65"
+         style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.95407146;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.06226"
+         x="206.15756"
+         height="21.218092"
+         width="40.467812"
+         id="rect5792-2-2-6"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.95407158;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="628.52179"
+         x="218.39191"
+         height="7.6823797"
+         width="15.163996"
+         id="rect5792-2-2-8-93"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.9540717;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="214.5368"
+         height="5.1819987"
+         width="2.614861"
+         id="rect5792-2-2-8-9-74"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="231.64496"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-7-52"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="235.92194"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-3-5"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="227.36789"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-6-4"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="223.09085"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-1-7"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="218.81381"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-2-44"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    </g>
+    <g
+       style="display:inline"
+       id="g6089-3"
+       transform="matrix(1.0270479,0,0,1.0696635,233.90291,-88.676989)">
+      <rect
+         y="603.13654"
+         x="198.74495"
+         height="37.009762"
+         width="55.292641"
+         id="rect5792-2-0"
+         style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.95407146;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.06226"
+         x="206.15756"
+         height="21.218092"
+         width="40.467812"
+         id="rect5792-2-2-78"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.95407158;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="628.52179"
+         x="218.39191"
+         height="7.6823797"
+         width="15.163996"
+         id="rect5792-2-2-8-6"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.9540717;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="214.5368"
+         height="5.1819987"
+         width="2.614861"
+         id="rect5792-2-2-8-9-8"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="231.64496"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-7-8"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="235.92194"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-3-4"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="227.36789"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-6-31"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="223.09085"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-1-4"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="218.81381"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-2-9"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    </g>
+    <g
+       style="display:inline"
+       id="g6089-2"
+       transform="matrix(1.0270479,0,0,1.0696635,300.07012,-88.676989)">
+      <rect
+         y="603.13654"
+         x="198.74495"
+         height="37.009762"
+         width="55.292641"
+         id="rect5792-2-06"
+         style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.95407146;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.06226"
+         x="206.15756"
+         height="21.218092"
+         width="40.467812"
+         id="rect5792-2-2-89"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.95407158;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="628.52179"
+         x="218.39191"
+         height="7.6823797"
+         width="15.163996"
+         id="rect5792-2-2-8-26"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.9540717;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="214.5368"
+         height="5.1819987"
+         width="2.614861"
+         id="rect5792-2-2-8-9-64"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="231.64496"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-7-9"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="235.92194"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-3-50"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="227.36789"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-6-48"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="223.09085"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-1-71"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="218.81381"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-2-7"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    </g>
+    <g
+       style="display:inline"
+       id="g6089-27"
+       transform="matrix(1.0270479,0,0,1.0696635,366.23724,-88.676989)">
+      <rect
+         y="603.13654"
+         x="198.74495"
+         height="37.009762"
+         width="55.292641"
+         id="rect5792-2-22"
+         style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.95407146;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.06226"
+         x="206.15756"
+         height="21.218092"
+         width="40.467812"
+         id="rect5792-2-2-61"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.95407158;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="628.52179"
+         x="218.39191"
+         height="7.6823797"
+         width="15.163996"
+         id="rect5792-2-2-8-0"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.9540717;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="214.5368"
+         height="5.1819987"
+         width="2.614861"
+         id="rect5792-2-2-8-9-61"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="231.64496"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-7-59"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="235.92194"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-3-49"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="227.36789"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-6-0"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="223.09085"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-1-9"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="218.81381"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-2-17"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    </g>
+    <g
+       style="display:inline"
+       id="g6089-71"
+       transform="matrix(1.0270479,0,0,1.0696635,432.40444,-88.676989)">
+      <rect
+         y="603.13654"
+         x="198.74495"
+         height="37.009762"
+         width="55.292641"
+         id="rect5792-2-1"
+         style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:0.95407146;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.06226"
+         x="206.15756"
+         height="21.218092"
+         width="40.467812"
+         id="rect5792-2-2-5"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.95407158;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="628.52179"
+         x="218.39191"
+         height="7.6823797"
+         width="15.163996"
+         id="rect5792-2-2-8-97"
+         style="display:inline;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.9540717;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="214.5368"
+         height="5.1819987"
+         width="2.614861"
+         id="rect5792-2-2-8-9-76"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="231.64496"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-7-7"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="235.92194"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-3-3"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="227.36789"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-6-6"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="223.09085"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-1-56"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+      <rect
+         y="607.0343"
+         x="218.81381"
+         height="5.1819978"
+         width="2.6148603"
+         id="rect5792-2-2-8-9-2-3"
+         style="display:inline;fill:#ffff1f;fill-opacity:1;stroke:none;stroke-width:0.99999958;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
+    </g>
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer9"
+     inkscape:label="Phy cables"
+     style="display:inline">
+    <g
+       sodipodi:type="inkscape:box3d"
+       id="g4202-1-2-1"
+       style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.49529028;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       inkscape:perspectiveID="#perspective4216-9-2-5"
+       inkscape:corner0="2.9479355 : 1.0612211 : 0 : 1"
+       inkscape:corner7="2.8471178 : 0.96042312 : 0.011755077 : 1">
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4214-0-20-7"
+         style="fill:#e9e9ff;fill-rule:evenodd;stroke:#000000;stroke-width:0.3041921px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="11"
+         d="m 265.56515,560.92592 0,23.00923 -40.10115,0 0,-23.00923 z"
+         points="265.56515,583.93515 225.464,583.93515 225.464,560.92592 265.56515,560.92592 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4210-7-5-4"
+         style="fill:#d7d7ff;fill-rule:evenodd;stroke:#000000;stroke-width:0.3041921px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="14"
+         d="m 257.7845,594.45327 -40.10115,0 7.78065,-10.51812 40.10115,0 z"
+         points="217.68335,594.45327 225.464,583.93515 265.56515,583.93515 257.7845,594.45327 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4212-58-5-3"
+         style="fill:#afafde;fill-rule:evenodd;stroke:#000000;stroke-width:0.3041921px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="13"
+         d="m 217.68335,571.44404 0,23.00923 7.78065,-10.51812 0,-23.00923 z"
+         points="217.68335,594.45327 225.464,583.93515 225.464,560.92592 217.68335,571.44404 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4206-7-2-1"
+         style="fill:#4d4d9f;fill-rule:evenodd;stroke:#000000;stroke-width:0.3041921px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="5"
+         d="m 257.7845,571.44404 0,23.00923 7.78065,-10.51812 0,-23.00923 z"
+         points="257.7845,594.45327 265.56515,583.93515 265.56515,560.92592 257.7845,571.44404 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4204-0-9-46"
+         style="fill:#353564;fill-rule:evenodd;stroke:#000000;stroke-width:0.3041921px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="6"
+         d="m 257.7845,571.44404 -40.10115,0 7.78065,-10.51812 40.10115,0 z"
+         points="217.68335,571.44404 225.464,560.92592 265.56515,560.92592 257.7845,571.44404 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4208-48-0-94"
+         style="fill:#8686bf;fill-rule:evenodd;stroke:#000000;stroke-width:0.3041921px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="3"
+         d="m 257.7845,571.44404 0,23.00923 -40.10115,0 0,-23.00923 z"
+         points="257.7845,594.45327 217.68335,594.45327 217.68335,571.44404 257.7845,571.44404 " />
+    </g>
+    <g
+       sodipodi:type="inkscape:box3d"
+       id="g4202-1-2-1-8"
+       style="display:inline;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.49529028;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       inkscape:perspectiveID="#perspective4216-9-2-5-8"
+       inkscape:corner0="2.9479355 : 1.0612211 : 0 : 1"
+       inkscape:corner7="2.8471178 : 0.96042312 : 0.011755077 : 1">
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4214-0-20-7-6"
+         style="fill:#e9e9ff;fill-rule:evenodd;stroke:#000000;stroke-width:0.3041921px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="11"
+         d="m 487.04049,560.88884 0,23.00923 -40.10114,0 0,-23.00923 z"
+         points="487.04049,583.89807 446.93935,583.89807 446.93935,560.88884 487.04049,560.88884 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4210-7-5-4-8"
+         style="fill:#d7d7ff;fill-rule:evenodd;stroke:#000000;stroke-width:0.3041921px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="14"
+         d="m 479.25984,594.41618 -40.10114,0 7.78065,-10.51811 40.10114,0 z"
+         points="439.1587,594.41618 446.93935,583.89807 487.04049,583.89807 479.25984,594.41618 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4212-58-5-3-3"
+         style="fill:#afafde;fill-rule:evenodd;stroke:#000000;stroke-width:0.3041921px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="13"
+         d="m 439.1587,571.40695 0,23.00923 7.78065,-10.51811 0,-23.00923 z"
+         points="439.1587,594.41618 446.93935,583.89807 446.93935,560.88884 439.1587,571.40695 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4206-7-2-1-8"
+         style="fill:#4d4d9f;fill-rule:evenodd;stroke:#000000;stroke-width:0.3041921px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="5"
+         d="m 479.25984,571.40695 0,23.00923 7.78065,-10.51811 0,-23.00923 z"
+         points="479.25984,594.41618 487.04049,583.89807 487.04049,560.88884 479.25984,571.40695 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4204-0-9-46-3"
+         style="fill:#353564;fill-rule:evenodd;stroke:#000000;stroke-width:0.3041921px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="6"
+         d="m 479.25984,571.40695 -40.10114,0 7.78065,-10.51811 40.10114,0 z"
+         points="439.1587,571.40695 446.93935,560.88884 487.04049,560.88884 479.25984,571.40695 " />
+      <path
+         sodipodi:type="inkscape:box3dside"
+         id="path4208-48-0-94-3"
+         style="fill:#8686bf;fill-rule:evenodd;stroke:#000000;stroke-width:0.3041921px;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1"
+         inkscape:box3dsidetype="3"
+         d="m 479.25984,571.40695 0,23.00923 -40.10114,0 0,-23.00923 z"
+         points="479.25984,594.41618 439.1587,594.41618 439.1587,571.40695 479.25984,571.40695 " />
+    </g>
+    <rect
+       style="display:inline;fill:#5b5d88;fill-opacity:1;stroke:#000100;stroke-width:0.49999988;stroke-linecap:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect7144"
+       width="30.080891"
+       height="15.496219"
+       x="222.54327"
+       y="575.24011" />
+    <path
+       style="display:inline;fill:none;fill-rule:evenodd;stroke:#717dd5;stroke-width:9.99999809;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1"
+       d="m 237.08571,582.94276 c -31.91259,23.46195 -31.08094,85.94817 -38.12204,115.97931 -7.85064,33.48389 -44.50001,55.94061 -67.47634,65.68008"
+       id="path7127-8"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csc" />
     <rect
-       style="opacity:1;fill:#ffcba8;fill-opacity:1;stroke:#000000;stroke-width:1.02233946;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect4319"
-       width="325.10693"
-       height="66.082726"
-       x="104.29684"
-       y="917.01666" />
+       style="display:inline;fill:#5b5d88;fill-opacity:1;stroke:#000100;stroke-width:0.49999988;stroke-linecap:round;stroke-miterlimit:0;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect7144-0"
+       width="30.080883"
+       height="15.496215"
+       x="443.5032"
+       y="575.39618" />
+    <path
+       style="display:inline;fill:none;fill-rule:evenodd;stroke:#717dd5;stroke-width:9.99999809;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:0;stroke-dasharray:none;stroke-opacity:1"
+       d="m 458.51831,584.03528 c -30.62346,37.6422 -23.45413,80.84201 -23.94176,108.24459 -1.04634,58.79968 -14.62261,82.43855 -14.62261,82.43855"
+       id="path7127-8-6"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csc" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="label"
+     style="display:inline"
+     transform="translate(0,-308.26824)">
     <text
        xml:space="preserve"
-       style="font-style:normal;font-weight:normal;font-size:17.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       x="239.51016"
-       y="959.5462"
-       id="text4321"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="358.34998"
+       y="380.37253"
+       id="text4267"
        sodipodi:linespacing="125%"><tspan
          sodipodi:role="line"
-         id="tspan4323"
-         x="239.51016"
-         y="959.5462">SPP</tspan></text>
-    <rect
-       style="opacity:1;fill:#ffcba8;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect4325"
-       width="81.214264"
-       height="60.588417"
-       x="248.98969"
-       y="767.37292" />
-    <rect
-       style="opacity:1;fill:#ffcba8;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect4327"
-       width="77.346916"
-       height="59.299301"
-       x="358.25156"
-       y="768.66199" />
+         id="tspan7862"
+         x="358.34998"
+         y="380.37253">Containers and VMs</tspan></text>
     <text
        xml:space="preserve"
-       style="font-style:normal;font-weight:normal;font-size:17.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       x="380.11893"
-       y="803.69592"
-       id="text4329"
-       sodipodi:linespacing="125%"
-       inkscape:transform-center-x="116.02033"
-       inkscape:transform-center-y="-86.370686"><tspan
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="103.94727"
+       y="795.30414"
+       id="text4267-1"
+       sodipodi:linespacing="125%"><tspan
          sodipodi:role="line"
-         id="tspan4331"
-         x="380.11893"
-         y="803.69592">App</tspan></text>
+         id="tspan7840"
+         x="103.94727"
+         y="795.30414">Physical Ports</tspan></text>
     <text
        xml:space="preserve"
-       style="font-style:normal;font-weight:normal;font-size:17.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       x="272.4115"
-       y="802.98505"
-       id="text4333"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="220.02661"
+       y="550.1264"
+       id="text4267-1-3"
        sodipodi:linespacing="125%"><tspan
          sodipodi:role="line"
-         id="tspan4335"
-         x="272.4115"
-         y="802.98505">App</tspan></text>
+         id="tspan7860"
+         x="220.02661"
+         y="550.1264">Soft Patch Panel</tspan></text>
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="host 2"
+     style="display:inline">
     <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
-       d="m 135.98294,1040.1823 0,-172.74142"
-       id="path4341"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999988px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 800.0175,497.68992 943.33277,37.463733"
+       id="path5833"
        inkscape:connector-curvature="0" />
     <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker4659)"
-       d="m 406.16653,828.63477 2.57823,210.12583"
-       id="path4343"
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999923px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 800.56769,637.48935 942.89138,146.72573"
+       id="path5835"
        inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999976;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#marker4763)"
-       d="m 163.16604,865.49646 c 0.52752,36.53651 8.47283,75.20441 56.51561,75.658 49.9114,0.53441 53.19945,-59.7207 52.86945,-110.2966"
-       id="path4867"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="ccc" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker4891)"
-       d="m 308.10124,829.94632 c 0.58023,57.38022 8.58713,105.79537 33.72706,104.82734 29.58113,1.23837 33.28459,-44.71668 33.72706,-104.82734"
-       id="path4883"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="ccc" />
   </g>
 </svg>
-- 
2.7.4

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [spp] [PATCH 04/11] docs: update overview section
  2019-01-09  1:49 [spp] Update docs structure ogawa.yasufumi
                   ` (2 preceding siblings ...)
  2019-01-09  1:49 ` [spp] [PATCH 03/11] docs: update image of " ogawa.yasufumi
@ 2019-01-09  1:49 ` ogawa.yasufumi
  2019-01-09  1:49 ` [spp] [PATCH 05/11] docs: add overview image for design section ogawa.yasufumi
                   ` (6 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: ogawa.yasufumi @ 2019-01-09  1:49 UTC (permalink / raw)
  To: ferruh.yigit, spp, ogawa.yasufumi

From: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>

Change image size in overview section because the image is updated and
needed to be adjusted.

Signed-off-by: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>
---
 docs/guides/overview/overview.rst | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/guides/overview/overview.rst b/docs/guides/overview/overview.rst
index e66c861..e012c38 100644
--- a/docs/guides/overview/overview.rst
+++ b/docs/guides/overview/overview.rst
@@ -13,7 +13,7 @@ functionality for Service Function Chaining in
 NFV (Network Function Virtualization).
 
 .. figure:: ../images/overview/spp_overview.*
-    :width: 50%
+    :width: 95%
 
     SPP overview
 
-- 
2.7.4

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [spp] [PATCH 05/11] docs: add overview image for design section
  2019-01-09  1:49 [spp] Update docs structure ogawa.yasufumi
                   ` (3 preceding siblings ...)
  2019-01-09  1:49 ` [spp] [PATCH 04/11] docs: update overview section ogawa.yasufumi
@ 2019-01-09  1:49 ` ogawa.yasufumi
  2019-01-09  1:49 ` [spp] [PATCH 06/11] docs: add image of design of spp-ctl ogawa.yasufumi
                   ` (5 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: ogawa.yasufumi @ 2019-01-09  1:49 UTC (permalink / raw)
  To: ferruh.yigit, spp, ogawa.yasufumi

From: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>

Add an image for describing big picture of design of SPP.

Signed-off-by: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>
---
 .../overview/design/spp_overview_design_all.svg    | 861 +++++++++++++++++++++
 1 file changed, 861 insertions(+)
 create mode 100644 docs/guides/images/overview/design/spp_overview_design_all.svg

diff --git a/docs/guides/images/overview/design/spp_overview_design_all.svg b/docs/guides/images/overview/design/spp_overview_design_all.svg
new file mode 100644
index 0000000..f01dd9a
--- /dev/null
+++ b/docs/guides/images/overview/design/spp_overview_design_all.svg
@@ -0,0 +1,861 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="250mm"
+   height="150mm"
+   viewBox="0 0 885.82677 531.49604"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="spp_overview_design_all.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker15629"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path15631"
+         style="fill:#0000c8;fill-opacity:1;fill-rule:evenodd;stroke:#0000c8;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker15469"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend"
+       inkscape:collect="always">
+      <path
+         inkscape:connector-curvature="0"
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#0000c8;fill-opacity:1;fill-rule:evenodd;stroke:#0000c8;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path15471" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker5673"
+       style="overflow:visible"
+       inkscape:isstock="true"
+       inkscape:collect="always">
+      <path
+         id="path5675"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker5525"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend"
+       inkscape:collect="always">
+      <path
+         inkscape:connector-curvature="0"
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path5527" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker5383"
+       style="overflow:visible"
+       inkscape:isstock="true"
+       inkscape:collect="always">
+      <path
+         id="path5385"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker5247"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend"
+       inkscape:collect="always">
+      <path
+         inkscape:connector-curvature="0"
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path5249" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker5117"
+       style="overflow:visible"
+       inkscape:isstock="true"
+       inkscape:collect="always">
+      <path
+         id="path5119"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker4993"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend"
+       inkscape:collect="always">
+      <path
+         inkscape:connector-curvature="0"
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path4995" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4875"
+       style="overflow:visible"
+       inkscape:isstock="true"
+       inkscape:collect="always">
+      <path
+         id="path4877"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker1731"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lstart">
+      <path
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path1729"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker1371"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend"
+       inkscape:collect="always">
+      <path
+         inkscape:connector-curvature="0"
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path1369" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path991"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker5907"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend">
+      <path
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path5909"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker5813"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend">
+      <path
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path5815"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker5725"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend">
+      <path
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path5727"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker5643"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend">
+      <path
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path5645"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker5567"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend">
+      <path
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path5569"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker5421"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend">
+      <path
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path5423"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker5137"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend">
+      <path
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path5139"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker5091"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend">
+      <path
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path5093"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker5051"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend">
+      <path
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path5053"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker5017"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend">
+      <path
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path5019"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker4989"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend">
+      <path
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path4991"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lend"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4462"
+         d="M 0,0 5,-5 -12.5,0 5,5 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.4"
+     inkscape:cx="246.05322"
+     inkscape:cy="249.40474"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     inkscape:window-width="1800"
+     inkscape:window-height="971"
+     inkscape:window-x="75"
+     inkscape:window-y="34"
+     inkscape:window-maximized="0"
+     units="mm"
+     width="230mm" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Host"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-520.86622)"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.39066935;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4136"
+       width="870.15839"
+       height="516.22748"
+       x="7.1750183"
+       y="530.09167" />
+    <rect
+       style="opacity:1;fill:#f4ff98;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4165"
+       width="66.157944"
+       height="35.21917"
+       x="372.75867"
+       y="1009.6431" />
+    <rect
+       style="display:inline;opacity:1;fill:#f4ff98;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4165-7"
+       width="66.157944"
+       height="35.21917"
+       x="690.19025"
+       y="1009.6431" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:0%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="701.28723"
+       y="1033.4047"
+       id="text4205-69-2"
+       sodipodi:linespacing="0%"><tspan
+         sodipodi:role="line"
+         id="tspan4818-8"
+         x="701.28723"
+         y="1033.4047">port</tspan></text>
+    <path
+       style="display:inline;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:3, 3;stroke-dashoffset:0;stroke-opacity:1"
+       d="m 277.14258,551.05613 c 0,54.03838 0,108.07675 0,162.11513 193.23828,0 386.47656,0 579.71484,0 0,-54.55514 0,-109.11027 0,-163.66541 -193.23828,0 -386.47656,0 -579.71484,0 l 0,0.77514 0,0.77514 z"
+       id="rect15313"
+       inkscape:connector-curvature="0" />
+    <path
+       style="display:inline;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.99999994;stroke-miterlimit:4;stroke-dasharray:2.99999993, 2.99999993;stroke-dashoffset:0;stroke-opacity:1"
+       d="m 29.942522,831.78229 c 0,58.70777 0,117.41553 0,176.12331 71.333328,0 142.666678,0 213.999998,0 0,-59.26919 0,-118.53836 0,-177.80755 -71.33332,0 -142.66667,0 -213.999998,0 l 0,0.84212 0,0.84212 z"
+       id="rect15313-2"
+       inkscape:connector-curvature="0" />
+    <path
+       style="display:inline;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:3.00000008, 3.00000008;stroke-dashoffset:0;stroke-opacity:1"
+       d="m 33.381966,675.49473 c 0,37.8759 0,75.75178 0,113.62769 71.333334,0 142.666674,0 214.000004,0 0,-38.23811 0,-76.47619 0,-114.71429 -71.33333,0 -142.66667,0 -214.000004,0 l 0,0.5433 0,0.5433 z"
+       id="rect15313-2-9"
+       inkscape:connector-curvature="0" />
+    <path
+       style="display:inline;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.0335933;stroke-miterlimit:4;stroke-dasharray:3.10078001, 3.10078001;stroke-dashoffset:0;stroke-opacity:1"
+       d="m 316.02755,757.89761 c 0,58.77761 0,117.55521 0,176.33284 165.78958,0 331.57913,0 497.36867,0 0,-59.3397 0,-118.6794 0,-178.01907 -165.78954,0 -331.57909,0 -497.36867,0 l 0,0.8431 0,0.84313 z"
+       id="rect15313-2-9-9"
+       inkscape:connector-curvature="0" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer3"
+     inkscape:label="Container"
+     style="display:inline"
+     transform="translate(0,-520.86622)">
+    <rect
+       style="opacity:1;fill:#f5fff7;fill-opacity:1;stroke:#000000;stroke-width:1.43186998;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4164"
+       width="168.56813"
+       height="113.56813"
+       x="446.71777"
+       y="577.39539" />
+    <rect
+       style="display:inline;opacity:1;fill:#f5fff7;fill-opacity:1;stroke:#000000;stroke-width:1.43186998;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4164-6"
+       width="168.56813"
+       height="113.56813"
+       x="655.20856"
+       y="577.98419" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="App"
+     transform="translate(0,-520.86622)"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffd3;fill-opacity:1;stroke:#000000;stroke-width:0.72706515;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4216"
+       width="165.58766"
+       height="39.272934"
+       x="57.148525"
+       y="719.08582"
+       ry="19.636467" />
+    <rect
+       style="opacity:1;fill:#ffffd3;fill-opacity:1;stroke:#000000;stroke-width:0.95418876;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4223"
+       width="149.04581"
+       height="39.045811"
+       x="65.056145"
+       y="886.76538"
+       ry="19.522905" />
+    <rect
+       style="opacity:1;fill:#ffffd3;fill-opacity:1;stroke:#000000;stroke-width:0.98559052;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4231"
+       width="109.1037"
+       height="34.014416"
+       x="342.91794"
+       y="879.85504"
+       ry="17.007208" />
+    <rect
+       style="opacity:1;fill:#ffffd3;fill-opacity:1;stroke:#000000;stroke-width:1.2391907;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4235"
+       width="117.15366"
+       height="38.760811"
+       x="474.13922"
+       y="625.7276"
+       ry="19.380405" />
+    <rect
+       style="display:inline;opacity:1;fill:#ffffd3;fill-opacity:1;stroke:#000000;stroke-width:0.95418876;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4223-3"
+       width="149.04581"
+       height="39.045811"
+       x="66.030434"
+       y="953.34186"
+       ry="19.522905" />
+    <rect
+       style="display:inline;opacity:1;fill:#ffffd3;fill-opacity:1;stroke:#000000;stroke-width:1.2391907;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4235-1"
+       width="117.15366"
+       height="38.760811"
+       x="682.63"
+       y="626.31641"
+       ry="19.380405" />
+    <rect
+       style="display:inline;opacity:1;fill:#ffffd3;fill-opacity:1;stroke:#000000;stroke-width:1.2391907;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4235-1-4"
+       width="117.15366"
+       height="38.760811"
+       x="294.28619"
+       y="627.44873"
+       ry="19.380405" />
+    <rect
+       style="display:inline;opacity:1;fill:#ffffd3;fill-opacity:1;stroke:#000000;stroke-width:0.98559052;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4231-0"
+       width="109.1037"
+       height="34.014416"
+       x="400.49902"
+       y="810.85504"
+       ry="17.007208" />
+    <rect
+       style="display:inline;opacity:1;fill:#ffffd3;fill-opacity:1;stroke:#000000;stroke-width:0.98559052;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4231-4"
+       width="109.1037"
+       height="34.014416"
+       x="588.30621"
+       y="810.85504"
+       ry="17.007208" />
+    <rect
+       style="display:inline;opacity:1;fill:#ffffd3;fill-opacity:1;stroke:#000000;stroke-width:0.98559052;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4231-44"
+       width="109.1037"
+       height="34.014416"
+       x="679.50415"
+       y="879.85504"
+       ry="17.007208" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Label"
+     style="display:inline"
+     transform="translate(0,-520.86622)">
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="74.713554"
+       y="744.22223"
+       id="text4201"
+       sodipodi:linespacing="0%"><tspan
+         sodipodi:role="line"
+         id="tspan4203"
+         x="74.713554"
+         y="744.22223"
+         style="font-size:22.5px;line-height:1.25">spp_primary</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="355.85376"
+       y="904.08856"
+       id="text4205"
+       sodipodi:linespacing="0%"><tspan
+         sodipodi:role="line"
+         id="tspan4207"
+         x="355.85376"
+         y="904.08856"
+         style="font-size:22.5px;line-height:1.25">spp_nfv</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:0%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="99.936211"
+       y="913.21692"
+       id="text4225"
+       sodipodi:linespacing="0%"><tspan
+         sodipodi:role="line"
+         id="tspan4606"
+         x="99.936211"
+         y="913.21692">spp-ctl</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:0%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="512.87683"
+       y="649.75092"
+       id="text4265"
+       sodipodi:linespacing="0%"><tspan
+         sodipodi:role="line"
+         id="tspan4652"
+         x="512.87683"
+         y="649.75092">app</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="33.754902"
+       y="570.36725"
+       id="text4327"
+       sodipodi:linespacing="0%"><tspan
+         sodipodi:role="line"
+         id="tspan4329"
+         x="33.754902"
+         y="570.36725"
+         style="font-size:22.5px;line-height:1.25">host</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:0%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="465.35898"
+       y="603.75092"
+       id="text4335"
+       sodipodi:linespacing="0%"><tspan
+         sodipodi:role="line"
+         id="tspan4684"
+         x="465.35898"
+         y="603.75092">VM</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:0%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="101.65821"
+       y="979.55536"
+       id="text4225-8"
+       sodipodi:linespacing="0%"><tspan
+         sodipodi:role="line"
+         id="tspan4650"
+         x="101.65821"
+         y="979.55536">SPP CLI</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="669.84973"
+       y="602.33972"
+       id="text4335-9"
+       sodipodi:linespacing="0%"><tspan
+         sodipodi:role="line"
+         id="tspan4337-8"
+         x="669.84973"
+         y="602.33972"
+         style="font-size:22.5px;line-height:1.25">container</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:0%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="721.36761"
+       y="650.33972"
+       id="text4265-1"
+       sodipodi:linespacing="0%"><tspan
+         sodipodi:role="line"
+         id="tspan4652-5"
+         x="721.36761"
+         y="650.33972">app</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:0%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="333.70059"
+       y="652.56451"
+       id="text4265-0"
+       sodipodi:linespacing="0%"><tspan
+         sodipodi:role="line"
+         id="tspan4652-3"
+         x="333.70059"
+         y="652.56451">app</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="413.95718"
+       y="835.08856"
+       id="text4205-4"
+       sodipodi:linespacing="0%"><tspan
+         sodipodi:role="line"
+         id="tspan4207-7"
+         x="413.95718"
+         y="835.08856"
+         style="font-size:22.5px;line-height:1.25">spp_nfv</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="601.75922"
+       y="835.08856"
+       id="text4205-6"
+       sodipodi:linespacing="0%"><tspan
+         sodipodi:role="line"
+         id="tspan4207-3"
+         x="601.75922"
+         y="835.08856"
+         style="font-size:22.5px;line-height:1.25">spp_nfv</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:0%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="696.03339"
+       y="904.08856"
+       id="text4205-1"
+       sodipodi:linespacing="0%"><tspan
+         sodipodi:role="line"
+         id="tspan4207-75"
+         x="696.03339"
+         y="904.08856"
+         style="font-size:22.5px;line-height:1.25">spp_nfv</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:0%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="383.85568"
+       y="1032.4149"
+       id="text4205-69"
+       sodipodi:linespacing="0%"><tspan
+         sodipodi:role="line"
+         id="tspan4818"
+         x="383.85568"
+         y="1032.4149">port</tspan></text>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker1371)"
+       d="m 406.66507,1008.74 c 4.06602,-47.09887 -7.47128,-38.12771 -7.03045,-91.81099"
+       id="path4841"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker4875)"
+       d="m 379.61431,880.35985 c 1.00602,-64.51048 -43.5875,-127.25687 -43.25382,-211.87019"
+       id="path4843"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker4993)"
+       d="m 379.61431,667.10066 c 1.70354,42.80956 43.84054,60.39934 46.46702,141.53524"
+       id="path4845"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker5247)"
+       d="m 555.36054,664.27404 c 4.34232,42.7441 49.05444,78.02582 67.5584,145.19195"
+       id="path4847"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker5525)"
+       d="m 770.01796,665.25968 c 1.05775,79.97988 -30.49893,110.86438 -34.85027,212.74985"
+       id="path4849"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker5673)"
+       d="m 736.17785,913.98808 c -0.57426,53.51353 -12.49476,34.02482 -13.01015,93.94942"
+       id="path4851"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker5117)"
+       d="m 470.50773,811.91591 c 2.34151,-60.92306 36.49606,-69.95162 42.42641,-144.8687"
+       id="path4853"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker5383)"
+       d="m 659.46717,810.75653 c 7.20089,-71.63598 47.79576,-60.07028 56.00255,-143.72878"
+       id="path4855"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="42.112877"
+       y="698.9165"
+       id="text4327-6"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan15381"
+         x="42.112877"
+         y="698.9165">resource manager</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="288.53436"
+       y="575.10309"
+       id="text4327-6-9"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan15437"
+         x="288.53436"
+         y="575.10309">client apps</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="47.105797"
+       y="858.81738"
+       id="text4327-6-92"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan15457"
+         x="47.105797"
+         y="858.81738">controller</tspan></text>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#0000c8;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker15469);stroke-miterlimit:4;stroke-dasharray:7.99999952,3.99999976;stroke-dashoffset:0"
+       d="m 186.28571,885.1187 0.28572,-115.64178"
+       id="path15459"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#0000c8;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker15629);stroke-miterlimit:4;stroke-dasharray:8,4;stroke-dashoffset:0"
+       d="m 212.04226,892.62384 111.4771,-68.57137"
+       id="path15461"
+       inkscape:connector-curvature="0" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="337.46463"
+       y="781.7948"
+       id="text4327-6-9-3"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan16191"
+         x="337.46463"
+         y="781.7948">forwarder processes</tspan></text>
+  </g>
+</svg>
-- 
2.7.4

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [spp] [PATCH 06/11] docs: add image of design of spp-ctl
  2019-01-09  1:49 [spp] Update docs structure ogawa.yasufumi
                   ` (4 preceding siblings ...)
  2019-01-09  1:49 ` [spp] [PATCH 05/11] docs: add overview image for design section ogawa.yasufumi
@ 2019-01-09  1:49 ` ogawa.yasufumi
  2019-01-09  1:49 ` [spp] [PATCH 07/11] docs: add SPP controller in design section ogawa.yasufumi
                   ` (4 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: ogawa.yasufumi @ 2019-01-09  1:49 UTC (permalink / raw)
  To: ferruh.yigit, spp, ogawa.yasufumi

From: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>

Add an image of spp-ctl to describe the role of spp-ctl and its
interfaces.

Signed-off-by: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>
---
 .../design/spp_overview_design_spp-ctl.svg         | 678 +++++++++++++++++++++
 1 file changed, 678 insertions(+)
 create mode 100644 docs/guides/images/overview/design/spp_overview_design_spp-ctl.svg

diff --git a/docs/guides/images/overview/design/spp_overview_design_spp-ctl.svg b/docs/guides/images/overview/design/spp_overview_design_spp-ctl.svg
new file mode 100644
index 0000000..99c90bc
--- /dev/null
+++ b/docs/guides/images/overview/design/spp_overview_design_spp-ctl.svg
@@ -0,0 +1,678 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="150mm"
+   height="120mm"
+   viewBox="0 0 531.49606 425.19686"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="spp_overview_design_spp-ctl.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker7637"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path7639"
+         style="fill:#0000c8;fill-opacity:1;fill-rule:evenodd;stroke:#0000c8;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker7555"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path7557"
+         style="fill:#0000c8;fill-opacity:1;fill-rule:evenodd;stroke:#0000c8;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker7473"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lstart"
+       inkscape:collect="always">
+      <path
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#0000c8;fill-opacity:1;fill-rule:evenodd;stroke:#0000c8;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path7475"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true"
+       inkscape:collect="always">
+      <path
+         id="path6134"
+         style="fill:#0000c8;fill-opacity:1;fill-rule:evenodd;stroke:#0000c8;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="matrix(1.1,0,0,1.1,1.1,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker7199"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path7201"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker6697"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path6699"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker7158"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         inkscape:connector-curvature="0"
+         id="path7160"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker4618"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend">
+      <path
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#0000c8;fill-opacity:1;fill-rule:evenodd;stroke:#0000c8;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path4620"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4362"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker4664"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow1Lstart">
+      <path
+         transform="matrix(0.8,0,0,0.8,10,0)"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         id="path4666"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker5813"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend">
+      <path
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path5815"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker5725"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend">
+      <path
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path5727"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker5643"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend">
+      <path
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path5645"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker5567"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend">
+      <path
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path5569"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker5421"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend">
+      <path
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path5423"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker5137"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend">
+      <path
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path5139"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker5091"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend">
+      <path
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path5093"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker5051"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend">
+      <path
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path5053"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker5017"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend">
+      <path
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path5019"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker4989"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend">
+      <path
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path4991"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Lend"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4462"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(-0.8,0,0,-0.8,-10,0)"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker5574-5"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         inkscape:connector-curvature="0"
+         id="path5576-3"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1"
+         transform="matrix(0.8,0,0,0.8,10,0)" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker4618-3"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend">
+      <path
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path4620-6"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker4618-3-5"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend">
+      <path
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path4620-6-3"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker4618-5"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend">
+      <path
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path4620-62"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker5091-2"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend">
+      <path
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path5093-9"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker5091-2-9"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend">
+      <path
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path5093-9-3"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker5091-2-9-6"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend">
+      <path
+         transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path5093-9-3-1"
+         inkscape:connector-curvature="0" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.4"
+     inkscape:cx="159.2313"
+     inkscape:cy="224.20456"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     inkscape:window-width="1855"
+     inkscape:window-height="1056"
+     inkscape:window-x="65"
+     inkscape:window-y="24"
+     inkscape:window-maximized="1"
+     units="mm"
+     width="230mm" />
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Host"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-627.16513)"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.20000005;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4136"
+       width="508.70053"
+       height="402.48877"
+       x="11.191025"
+       y="638.39655" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="app"
+     transform="translate(0,-627.16513)"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffd3;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4216"
+       width="159"
+       height="39.272934"
+       x="56.149246"
+       y="711.55725"
+       ry="19.636467" />
+    <rect
+       style="opacity:1;fill:#ffffd3;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4223"
+       width="149.04581"
+       height="39.045811"
+       x="60.834236"
+       y="851.67072"
+       ry="19.522905" />
+    <rect
+       style="display:inline;opacity:1;fill:#ffffd3;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4223-7"
+       width="129"
+       height="39.045811"
+       x="333.19141"
+       y="689.98199"
+       ry="19.522905" />
+    <rect
+       style="display:inline;opacity:1;fill:#ffffd3;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4223-7-8"
+       width="129"
+       height="39.045811"
+       x="332.76282"
+       y="751.41052"
+       ry="19.522905" />
+    <rect
+       style="display:inline;opacity:1;fill:#ffffd3;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4223-7-86"
+       width="139"
+       height="39.045811"
+       x="331.61993"
+       y="817.12482"
+       ry="19.522905" />
+    <path
+       style="display:inline;fill:none;fill-rule:evenodd;stroke:#0000c8;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:7.99999977, 3.99999989;stroke-dashoffset:0;stroke-opacity:1;marker-start:url(#Arrow2Lstart)"
+       d="m 138.28611,849.83149 0,-98.94414"
+       id="path5742"
+       inkscape:connector-curvature="0" />
+    <path
+       style="display:inline;fill:none;fill-rule:evenodd;stroke:#0000c8;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:7.99999976, 3.99999988;stroke-dashoffset:0;stroke-opacity:1;marker-start:url(#marker7473)"
+       d="M 203.09188,853.40079 C 256.8819,822.81314 237.93559,710.5025 333.23555,710.37011"
+       id="path5744"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="display:inline;fill:none;fill-rule:evenodd;stroke:#0000c8;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:7.99999976, 3.99999988;stroke-dashoffset:0;stroke-opacity:1;marker-start:url(#marker7555)"
+       d="m 211.88544,867.87176 c 47.9724,-24.53377 48.19198,-89.9262 120.66592,-96.65264"
+       id="path5746"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="display:inline;fill:none;fill-rule:evenodd;stroke:#0000c8;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:7.99999976, 3.99999988;stroke-dashoffset:0;stroke-opacity:1;marker-start:url(#marker7637)"
+       d="m 209.53399,881.43227 c 49.82474,1.5035 47.40256,-41.77953 121.58361,-41.89427"
+       id="path5748"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="display:inline;fill:none;fill-rule:evenodd;stroke:#0000c8;stroke-width:0.99999997;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker4618)"
+       d="m 137.42596,972.6477 0,-77.27775"
+       id="path6947"
+       inkscape:connector-curvature="0" />
+    <rect
+       style="display:inline;opacity:1;fill:#ffffd3;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4223-6"
+       width="149.04581"
+       height="39.045811"
+       x="63.477097"
+       y="973.12482"
+       ry="19.522905" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 127,935.36199 20,0"
+       id="path4525"
+       inkscape:connector-curvature="0" />
+    <path
+       style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="m 127,940.50486 20,0"
+       id="path4525-3"
+       inkscape:connector-curvature="0" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="label"
+     style="display:inline"
+     transform="translate(0,-627.16513)">
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="135.71429"
+       y="736.69366"
+       id="text4201"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4203"
+         x="135.71429"
+         y="736.69366">spp_primary</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="398.85715"
+       y="715.79083"
+       id="text4205"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4988"
+         x="398.85715"
+         y="715.79083">spp_nfv</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="133.71429"
+       y="876.12225"
+       id="text4225"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4963"
+         x="133.71429"
+         y="876.12225">spp-ctl</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="53.714287"
+       y="671.13446"
+       id="text4327"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4961"
+         x="53.714287"
+         y="671.13446">host</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="134.35716"
+       y="1001.5764"
+       id="text4225-5"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4986"
+         x="134.35716"
+         y="1001.5764">SPP CLI</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="396.42856"
+       y="777.21936"
+       id="text4205-7"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan5738"
+         x="396.42856"
+         y="777.21936">spp_vf</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="401.28571"
+       y="842.93365"
+       id="text4205-2"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan5740"
+         x="401.28571"
+         y="842.93365">spp_mirror</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:22.5px;line-height:125%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:center;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="204.56065"
+       y="946.16211"
+       id="text4327-6"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4560"
+         x="204.56065"
+         y="946.16211">REST API</tspan></text>
+  </g>
+</svg>
-- 
2.7.4

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [spp] [PATCH 07/11] docs: add SPP controller in design section
  2019-01-09  1:49 [spp] Update docs structure ogawa.yasufumi
                   ` (5 preceding siblings ...)
  2019-01-09  1:49 ` [spp] [PATCH 06/11] docs: add image of design of spp-ctl ogawa.yasufumi
@ 2019-01-09  1:49 ` ogawa.yasufumi
  2019-01-09  1:49 ` [spp] [PATCH 08/11] docs: add spp_primary " ogawa.yasufumi
                   ` (3 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: ogawa.yasufumi @ 2019-01-09  1:49 UTC (permalink / raw)
  To: ferruh.yigit, spp, ogawa.yasufumi

From: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>

Add descriptions for design of SPP controller, which consists of
spp-ctl and SPP CLI exactly.

Signed-off-by: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>
---
 docs/guides/overview/design.rst | 61 +++++++++++++++++++++++++++++++++++------
 docs/guides/setup/howto_use.rst |  4 +++
 2 files changed, 57 insertions(+), 8 deletions(-)

diff --git a/docs/guides/overview/design.rst b/docs/guides/overview/design.rst
index 9663a09..8a7f6b7 100644
--- a/docs/guides/overview/design.rst
+++ b/docs/guides/overview/design.rst
@@ -7,14 +7,32 @@
 Design
 ======
 
-SPP is composed of several DPDK processes and controller processes [1].
+SPP is composed of several DPDK processes and controller processes for
+connecting each of client processes with high-throughput path of DPDK.
+:numref:`figure_spp_overview_design_all` shows SPP processes and client apps
+for describing overview of design of SPP. In this diagram, solid line arrows
+describe a data path for packet forwarding and it can be configured from
+controller via command messaging of blue dashed line arrows.
+
+.. _figure_spp_overview_design_all:
+
+.. figure:: ../images/overview/design/spp_overview_design_all.*
+   :width: 85%
+
+   Overview of design of SPP
 
 In terms of DPDK processes, SPP is derived from DPDK's multi-process sample
 application and it consists of a primary process and multiple secondary
 processes.
-SPP primary process is responsible for resource management, for example, ports,
-mbufs or shared memory. On the other hand, secondary processes are working for
-tasks.
+SPP primary process is responsible for resource management, for example,
+initializing ports, mbufs or shared memory. On the other hand,
+secondary processes of ``spp_nfv`` are working for forwarding [1].
+
+
+.. _spp_overview_spp_controller:
+
+SPP Controller
+--------------
 
 SPP is controlled from python based management framework. It consists of
 front-end CLI and back-end server process.
@@ -29,10 +47,6 @@ is a Neutron ML2 plugin for using SPP with OpenStack.
 By using networking-spp and doing some of extra tunings for optimization, you
 can deploy high-performance NFV services on OpenStack [2].
 
-
-SPP Controller
---------------
-
 spp-ctl
 ~~~~~~~
 
@@ -46,6 +60,37 @@ using SPP from a framework, such as OpenStack.
 <https://github.com/openstack/networking-spp>`_
 is a Neutron ML2 plugin for SPP and `spp-agent` works as a SPP controller.
 
+As shown in :numref:`figure_spp_overview_design_spp_ctl`,
+``spp-ctl`` behaves as a TCP server for SPP primary and secondary processes,
+and REST API server for client applications.
+It should be launched in advance to setup connections with other processes.
+``spp-ctl``  uses three TCP ports for primary, secondaries and clients.
+The default port numbers are ``5555``, ``6666`` and ``7777``.
+
+.. _figure_spp_overview_design_spp_ctl:
+
+.. figure:: ../images/overview/design/spp_overview_design_spp-ctl.*
+   :width: 48%
+
+   Spp-ctl as a REST API server
+
+SPP CLI
+~~~~~~~
+
+SPP CLI is a user interface for managing SPP and implemented as a client of
+``spp-ctl``. It provides several kinds of command for inspecting SPP
+processes, changing path configuration or showing statistics of packets.
+However, you do not need to use SPP CLI if you use ``netowrking-spp`` or
+other client applications of ``spp-ctl``. SPP CLI is one of them.
+
+From SPP CLI, user is able to configure paths as similar as
+patch panel like manner by sending commands to each of SPP secondary processes.
+``patch phy:0 ring:0`` is to connect two ports, ``phy:0`` and ``ring:0``.
+
+As described in :ref:`Getting Started<spp_setup_howto_use_spp_cli>` guide,
+SPP CLI is able to communicate several ``spp-ctl`` to support multiple nodes
+configuration.
+
 
 Reference
 ---------
diff --git a/docs/guides/setup/howto_use.rst b/docs/guides/setup/howto_use.rst
index a7fa97a..8b8fa0b 100644
--- a/docs/guides/setup/howto_use.rst
+++ b/docs/guides/setup/howto_use.rst
@@ -1,6 +1,8 @@
 ..  SPDX-License-Identifier: BSD-3-Clause
     Copyright(c) 2010-2014 Intel Corporation
 
+.. _spp_setup_howto_use:
+
 How to Use
 ==========
 
@@ -75,6 +77,8 @@ All of options can be referred with help option ``-h``.
       -s SEC_PORT           secondary port, default=6666
       -a API_PORT           web api port, default=7777
 
+.. _spp_setup_howto_use_spp_cli:
+
 SPP CLI
 ~~~~~~~
 
-- 
2.7.4

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [spp] [PATCH 08/11] docs: add spp_primary in design section
  2019-01-09  1:49 [spp] Update docs structure ogawa.yasufumi
                   ` (6 preceding siblings ...)
  2019-01-09  1:49 ` [spp] [PATCH 07/11] docs: add SPP controller in design section ogawa.yasufumi
@ 2019-01-09  1:49 ` ogawa.yasufumi
  2019-01-09  1:49 ` [spp] [PATCH 09/11] docs: move design section to doc root ogawa.yasufumi
                   ` (2 subsequent siblings)
  10 siblings, 0 replies; 12+ messages in thread
From: ogawa.yasufumi @ 2019-01-09  1:49 UTC (permalink / raw)
  To: ferruh.yigit, spp, ogawa.yasufumi

From: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>

Add descriptions for design of spp_primary.

Signed-off-by: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>
---
 docs/guides/overview/design.rst | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/docs/guides/overview/design.rst b/docs/guides/overview/design.rst
index 8a7f6b7..7706488 100644
--- a/docs/guides/overview/design.rst
+++ b/docs/guides/overview/design.rst
@@ -92,6 +92,29 @@ SPP CLI is able to communicate several ``spp-ctl`` to support multiple nodes
 configuration.
 
 
+.. _spp_overview_design_spp_primary:
+
+SPP Primary
+-----------
+
+SPP is originally derived from
+`Client-Server Multi-process Example
+<https://doc.dpdk.org/guides/sample_app_ug/multi_process.html#client-server-multi-process-example>`_
+of
+`Multi-process Sample Application
+<https://doc.dpdk.org/guides/sample_app_ug/multi_process.html>`_
+in DPDK's sample applications.
+``spp_primary`` is a server process for other secondary processes and
+basically working as described in
+"How the Application Works" section of the sample application.
+
+However, there are also differences between ``spp_primary`` and
+the server process of the sample application.
+``spp_primary`` has no limitation of the number of secondary processes.
+It does not work for packet forwaring, but just provide rings and memory pools
+for secondary processes.
+
+
 Reference
 ---------
 
-- 
2.7.4

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [spp] [PATCH 09/11] docs: move design section to doc root
  2019-01-09  1:49 [spp] Update docs structure ogawa.yasufumi
                   ` (7 preceding siblings ...)
  2019-01-09  1:49 ` [spp] [PATCH 08/11] docs: add spp_primary " ogawa.yasufumi
@ 2019-01-09  1:49 ` ogawa.yasufumi
  2019-01-09  1:49 ` [spp] [PATCH 10/11] docs: move usecases " ogawa.yasufumi
  2019-01-09  1:49 ` [spp] [PATCH 11/11] docs: remove spp-ctl section ogawa.yasufumi
  10 siblings, 0 replies; 12+ messages in thread
From: ogawa.yasufumi @ 2019-01-09  1:49 UTC (permalink / raw)
  To: ferruh.yigit, spp, ogawa.yasufumi

From: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>

Design section is a subsection of overview section. However, it should
be moved to doc root if the number of SPP processes is increased.
In general, it is not good to have much subsections for getting
information.

This update is to move design section from overview to the doc root.

Signed-off-by: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>
---
 docs/guides/design/index.rst          |  15 ++++
 docs/guides/design/spp.rst            |  37 ++++++++++
 docs/guides/design/spp_controller.rst |  73 ++++++++++++++++++++
 docs/guides/design/spp_primary.rst    |  26 +++++++
 docs/guides/design/spp_secondary.rst  |  18 +++++
 docs/guides/index.rst                 |   5 +-
 docs/guides/overview.rst              |  26 +++++++
 docs/guides/overview/design.rst       | 124 ----------------------------------
 docs/guides/overview/index.rst        |  12 ----
 docs/guides/overview/overview.rst     |  25 -------
 10 files changed, 198 insertions(+), 163 deletions(-)
 create mode 100644 docs/guides/design/index.rst
 create mode 100644 docs/guides/design/spp.rst
 create mode 100644 docs/guides/design/spp_controller.rst
 create mode 100644 docs/guides/design/spp_primary.rst
 create mode 100644 docs/guides/design/spp_secondary.rst
 create mode 100644 docs/guides/overview.rst
 delete mode 100644 docs/guides/overview/design.rst
 delete mode 100644 docs/guides/overview/index.rst
 delete mode 100644 docs/guides/overview/overview.rst

diff --git a/docs/guides/design/index.rst b/docs/guides/design/index.rst
new file mode 100644
index 0000000..68ebaa8
--- /dev/null
+++ b/docs/guides/design/index.rst
@@ -0,0 +1,15 @@
+..  SPDX-License-Identifier: BSD-3-Clause
+    Copyright(c) 2010-2014 Intel Corporation
+    Copyright(c) 2018-2019 Nippon Telegraph and Telephone Corporation
+
+Design
+======
+
+.. toctree::
+   :maxdepth: 2
+   :numbered:
+
+   spp
+   spp_controller
+   spp_primary
+   spp_secondary
diff --git a/docs/guides/design/spp.rst b/docs/guides/design/spp.rst
new file mode 100644
index 0000000..2c3ee46
--- /dev/null
+++ b/docs/guides/design/spp.rst
@@ -0,0 +1,37 @@
+..  SPDX-License-Identifier: BSD-3-Clause
+    Copyright(c) 2018-2019 Nippon Telegraph and Telephone Corporation
+
+.. _spp_overview_design:
+
+Soft Patch Panel
+================
+
+SPP is composed of several DPDK processes and controller processes for
+connecting each of client processes with high-throughput path of DPDK.
+:numref:`figure_spp_overview_design_all` shows SPP processes and client apps
+for describing overview of design of SPP. In this diagram, solid line arrows
+describe a data path for packet forwarding and it can be configured from
+controller via command messaging of blue dashed line arrows.
+
+.. _figure_spp_overview_design_all:
+
+.. figure:: ../images/overview/design/spp_overview_design_all.*
+   :width: 85%
+
+   Overview of design of SPP
+
+In terms of DPDK processes, SPP is derived from DPDK's multi-process sample
+application and it consists of a primary process and multiple secondary
+processes.
+SPP primary process is responsible for resource management, for example,
+initializing ports, mbufs or shared memory. On the other hand,
+secondary processes of ``spp_nfv`` are working for forwarding
+`[1]
+<https://dpdksummit.com/Archive/pdf/2017USA/Implementation%20and%20Testing%20of%20Soft%20Patch%20Panel.pdf>`_.
+
+
+Reference
+---------
+
+* [1] `Implementation and Testing of Soft Patch Panel
+  <https://dpdksummit.com/Archive/pdf/2017USA/Implementation%20and%20Testing%20of%20Soft%20Patch%20Panel.pdf>`_
diff --git a/docs/guides/design/spp_controller.rst b/docs/guides/design/spp_controller.rst
new file mode 100644
index 0000000..95a8c5b
--- /dev/null
+++ b/docs/guides/design/spp_controller.rst
@@ -0,0 +1,73 @@
+..  SPDX-License-Identifier: BSD-3-Clause
+    Copyright(c) 2018-2019 Nippon Telegraph and Telephone Corporation
+
+.. _spp_overview_spp_controller:
+
+SPP Controller
+==============
+
+SPP is controlled from python based management framework. It consists of
+front-end CLI and back-end server process.
+SPP's front-end CLI provides a patch panel like interface for users.
+This CLI process parses user input and sends request to the back-end via REST
+APIs. It means that the back-end server process accepts requests from other
+than CLI. It enables developers to implement control interface such as GUI, or
+plugin for other framework.
+`networking-spp
+<https://github.com/openstack/networking-spp>`_
+is a Neutron ML2 plugin for using SPP with OpenStack.
+By using networking-spp and doing some of extra tunings for optimization, you
+can deploy high-performance NFV services on OpenStack
+`[1]
+<https://www.openstack.org/summit/vancouver-2018/summit-schedule/events/20826>`_.
+
+spp-ctl
+-------
+
+``spp-ctl`` is designed for managing SPP from several controllers
+via REST-like APIs for users or other applications.
+
+There are several usecases where SPP is managed from other process without
+user inputs. For example, you need a intermediate process if you think of
+using SPP from a framework, such as OpenStack.
+`networking-spp
+<https://github.com/openstack/networking-spp>`_
+is a Neutron ML2 plugin for SPP and `spp-agent` works as a SPP controller.
+
+As shown in :numref:`figure_spp_overview_design_spp_ctl`,
+``spp-ctl`` behaves as a TCP server for SPP primary and secondary processes,
+and REST API server for client applications.
+It should be launched in advance to setup connections with other processes.
+``spp-ctl``  uses three TCP ports for primary, secondaries and clients.
+The default port numbers are ``5555``, ``6666`` and ``7777``.
+
+.. _figure_spp_overview_design_spp_ctl:
+
+.. figure:: ../images/overview/design/spp_overview_design_spp-ctl.*
+   :width: 48%
+
+   Spp-ctl as a REST API server
+
+SPP CLI
+-------
+
+SPP CLI is a user interface for managing SPP and implemented as a client of
+``spp-ctl``. It provides several kinds of command for inspecting SPP
+processes, changing path configuration or showing statistics of packets.
+However, you do not need to use SPP CLI if you use ``netowrking-spp`` or
+other client applications of ``spp-ctl``. SPP CLI is one of them.
+
+From SPP CLI, user is able to configure paths as similar as
+patch panel like manner by sending commands to each of SPP secondary processes.
+``patch phy:0 ring:0`` is to connect two ports, ``phy:0`` and ``ring:0``.
+
+As described in :ref:`Getting Started<spp_setup_howto_use_spp_cli>` guide,
+SPP CLI is able to communicate several ``spp-ctl`` to support multiple nodes
+configuration.
+
+
+Reference
+---------
+
+* [1] `Integrating OpenStack with DPDK for High Performance Applications
+  <https://www.openstack.org/summit/vancouver-2018/summit-schedule/events/20826>`_
diff --git a/docs/guides/design/spp_primary.rst b/docs/guides/design/spp_primary.rst
new file mode 100644
index 0000000..79220e7
--- /dev/null
+++ b/docs/guides/design/spp_primary.rst
@@ -0,0 +1,26 @@
+..  SPDX-License-Identifier: BSD-3-Clause
+    Copyright(c) 2010-2014 Intel Corporation
+    Copyright(c) 2018-2019 Nippon Telegraph and Telephone Corporation
+
+
+.. _spp_overview_design_spp_primary:
+
+SPP Primary
+===========
+
+SPP is originally derived from
+`Client-Server Multi-process Example
+<https://doc.dpdk.org/guides/sample_app_ug/multi_process.html#client-server-multi-process-example>`_
+of
+`Multi-process Sample Application
+<https://doc.dpdk.org/guides/sample_app_ug/multi_process.html>`_
+in DPDK's sample applications.
+``spp_primary`` is a server process for other secondary processes and
+basically working as described in
+"How the Application Works" section of the sample application.
+
+However, there are also differences between ``spp_primary`` and
+the server process of the sample application.
+``spp_primary`` has no limitation of the number of secondary processes.
+It does not work for packet forwaring, but just provide rings and memory pools
+for secondary processes.
diff --git a/docs/guides/design/spp_secondary.rst b/docs/guides/design/spp_secondary.rst
new file mode 100644
index 0000000..d83ac6a
--- /dev/null
+++ b/docs/guides/design/spp_secondary.rst
@@ -0,0 +1,18 @@
+..  SPDX-License-Identifier: BSD-3-Clause
+    Copyright(c) 2019 Nippon Telegraph and Telephone Corporation
+
+
+.. _spp_overview_design_spp_secondary:
+
+SPP Secondary
+=============
+
+SPP secondary process is ...
+
+
+.. _spp_overview_design_spp_secondary_nfv:
+
+spp_nfv
+-------
+
+``spp_nfv`` is ...
diff --git a/docs/guides/index.rst b/docs/guides/index.rst
index 99897aa..c2be94c 100644
--- a/docs/guides/index.rst
+++ b/docs/guides/index.rst
@@ -5,9 +5,10 @@ SPP documentation
 =================
 
 .. toctree::
-   :maxdepth: 1
+   :maxdepth: 2
 
-   overview/index
+   overview
+   design/index
    setup/index
    commands/index
    tools/index
diff --git a/docs/guides/overview.rst b/docs/guides/overview.rst
new file mode 100644
index 0000000..d354706
--- /dev/null
+++ b/docs/guides/overview.rst
@@ -0,0 +1,26 @@
+..  SPDX-License-Identifier: BSD-3-Clause
+    Copyright(c) 2010-2014 Intel Corporation
+    Copyright(c) 2019 Nippon Telegraph and Telephone Corporation
+
+.. _spp_overview_overview:
+
+Overview
+========
+
+`Soft Patch Panel
+<http://dpdk.org/browse/apps/spp/>`_
+(SPP) is a DPDK application for providing switching
+functionality for Service Function Chaining in
+NFV (Network Function Virtualization).
+
+.. figure:: ./images/overview/spp_overview.*
+    :width: 95%
+
+    SPP overview
+
+With SPP, user is able to configure network easily and dynamically
+via simple patch panel like interface.
+
+The goal of SPP is to easily interconnect NFV applications via high
+thoughput network interfaces provided by DPDK and change configurations
+of resources dynamically to applications to build pipelines.
diff --git a/docs/guides/overview/design.rst b/docs/guides/overview/design.rst
deleted file mode 100644
index 7706488..0000000
--- a/docs/guides/overview/design.rst
+++ /dev/null
@@ -1,124 +0,0 @@
-..  SPDX-License-Identifier: BSD-3-Clause
-    Copyright(c) 2010-2014 Intel Corporation
-    Copyright(c) 2018-2019 Nippon Telegraph and Telephone Corporation
-
-.. _spp_overview_design:
-
-Design
-======
-
-SPP is composed of several DPDK processes and controller processes for
-connecting each of client processes with high-throughput path of DPDK.
-:numref:`figure_spp_overview_design_all` shows SPP processes and client apps
-for describing overview of design of SPP. In this diagram, solid line arrows
-describe a data path for packet forwarding and it can be configured from
-controller via command messaging of blue dashed line arrows.
-
-.. _figure_spp_overview_design_all:
-
-.. figure:: ../images/overview/design/spp_overview_design_all.*
-   :width: 85%
-
-   Overview of design of SPP
-
-In terms of DPDK processes, SPP is derived from DPDK's multi-process sample
-application and it consists of a primary process and multiple secondary
-processes.
-SPP primary process is responsible for resource management, for example,
-initializing ports, mbufs or shared memory. On the other hand,
-secondary processes of ``spp_nfv`` are working for forwarding [1].
-
-
-.. _spp_overview_spp_controller:
-
-SPP Controller
---------------
-
-SPP is controlled from python based management framework. It consists of
-front-end CLI and back-end server process.
-SPP's front-end CLI provides a patch panel like interface for users.
-This CLI process parses user input and sends request to the back-end via REST
-APIs. It means that the back-end server process accepts requests from other
-than CLI. It enables developers to implement control interface such as GUI, or
-plugin for other framework.
-`networking-spp
-<https://github.com/openstack/networking-spp>`_
-is a Neutron ML2 plugin for using SPP with OpenStack.
-By using networking-spp and doing some of extra tunings for optimization, you
-can deploy high-performance NFV services on OpenStack [2].
-
-spp-ctl
-~~~~~~~
-
-``spp-ctl`` is designed for managing SPP from several controllers
-via REST-like APIs for users or other applications.
-
-There are several usecases where SPP is managed from other process without
-user inputs. For example, you need a intermediate process if you think of
-using SPP from a framework, such as OpenStack.
-`networking-spp
-<https://github.com/openstack/networking-spp>`_
-is a Neutron ML2 plugin for SPP and `spp-agent` works as a SPP controller.
-
-As shown in :numref:`figure_spp_overview_design_spp_ctl`,
-``spp-ctl`` behaves as a TCP server for SPP primary and secondary processes,
-and REST API server for client applications.
-It should be launched in advance to setup connections with other processes.
-``spp-ctl``  uses three TCP ports for primary, secondaries and clients.
-The default port numbers are ``5555``, ``6666`` and ``7777``.
-
-.. _figure_spp_overview_design_spp_ctl:
-
-.. figure:: ../images/overview/design/spp_overview_design_spp-ctl.*
-   :width: 48%
-
-   Spp-ctl as a REST API server
-
-SPP CLI
-~~~~~~~
-
-SPP CLI is a user interface for managing SPP and implemented as a client of
-``spp-ctl``. It provides several kinds of command for inspecting SPP
-processes, changing path configuration or showing statistics of packets.
-However, you do not need to use SPP CLI if you use ``netowrking-spp`` or
-other client applications of ``spp-ctl``. SPP CLI is one of them.
-
-From SPP CLI, user is able to configure paths as similar as
-patch panel like manner by sending commands to each of SPP secondary processes.
-``patch phy:0 ring:0`` is to connect two ports, ``phy:0`` and ``ring:0``.
-
-As described in :ref:`Getting Started<spp_setup_howto_use_spp_cli>` guide,
-SPP CLI is able to communicate several ``spp-ctl`` to support multiple nodes
-configuration.
-
-
-.. _spp_overview_design_spp_primary:
-
-SPP Primary
------------
-
-SPP is originally derived from
-`Client-Server Multi-process Example
-<https://doc.dpdk.org/guides/sample_app_ug/multi_process.html#client-server-multi-process-example>`_
-of
-`Multi-process Sample Application
-<https://doc.dpdk.org/guides/sample_app_ug/multi_process.html>`_
-in DPDK's sample applications.
-``spp_primary`` is a server process for other secondary processes and
-basically working as described in
-"How the Application Works" section of the sample application.
-
-However, there are also differences between ``spp_primary`` and
-the server process of the sample application.
-``spp_primary`` has no limitation of the number of secondary processes.
-It does not work for packet forwaring, but just provide rings and memory pools
-for secondary processes.
-
-
-Reference
----------
-
-* [1] `Implementation and Testing of Soft Patch Panel
-  <https://dpdksummit.com/Archive/pdf/2017USA/Implementation%20and%20Testing%20of%20Soft%20Patch%20Panel.pdf>`_
-* [2] `Integrating OpenStack with DPDK for High Performance Applications
-  <https://www.openstack.org/summit/vancouver-2018/summit-schedule/events/20826>`_
diff --git a/docs/guides/overview/index.rst b/docs/guides/overview/index.rst
deleted file mode 100644
index a4c6f70..0000000
--- a/docs/guides/overview/index.rst
+++ /dev/null
@@ -1,12 +0,0 @@
-..  SPDX-License-Identifier: BSD-3-Clause
-    Copyright(c) 2019 Nippon Telegraph and Telephone Corporation
-
-Soft Patch Panel
-================
-
-.. toctree::
-   :maxdepth: 2
-   :numbered:
-
-   overview
-   design
diff --git a/docs/guides/overview/overview.rst b/docs/guides/overview/overview.rst
deleted file mode 100644
index e012c38..0000000
--- a/docs/guides/overview/overview.rst
+++ /dev/null
@@ -1,25 +0,0 @@
-..  SPDX-License-Identifier: BSD-3-Clause
-    Copyright(c) 2010-2014 Intel Corporation
-
-.. _spp_overview_overview:
-
-Overview
-========
-
-`Soft Patch Panel
-<http://dpdk.org/browse/apps/spp/>`_
-(SPP) is a DPDK application for providing switching
-functionality for Service Function Chaining in
-NFV (Network Function Virtualization).
-
-.. figure:: ../images/overview/spp_overview.*
-    :width: 95%
-
-    SPP overview
-
-With SPP, user is able to configure network easily and dynamically
-via simple patch panel like interface.
-
-The goal of SPP is to easily interconnect NFV applications via high
-thoughput network interfaces provided by DPDK and change configurations
-of resources dynamically to applications to build pipelines.
-- 
2.7.4

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [spp] [PATCH 10/11] docs: move usecases to doc root
  2019-01-09  1:49 [spp] Update docs structure ogawa.yasufumi
                   ` (8 preceding siblings ...)
  2019-01-09  1:49 ` [spp] [PATCH 09/11] docs: move design section to doc root ogawa.yasufumi
@ 2019-01-09  1:49 ` ogawa.yasufumi
  2019-01-09  1:49 ` [spp] [PATCH 11/11] docs: remove spp-ctl section ogawa.yasufumi
  10 siblings, 0 replies; 12+ messages in thread
From: ogawa.yasufumi @ 2019-01-09  1:49 UTC (permalink / raw)
  To: ferruh.yigit, spp, ogawa.yasufumi

From: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>

Use cases is a subsection of Getting Started. However, types of SPP
secondary have increased, so use cases section should be moved to doc
root and have subsections for each of SPP secondary processes. This
update is to add Use cases section.

Signed-off-by: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>
---
 docs/guides/index.rst             |   2 +
 docs/guides/setup/index.rst       |   1 -
 docs/guides/setup/use_cases.rst   | 670 -------------------------------------
 docs/guides/use_cases/index.rst   |  11 +
 docs/guides/use_cases/spp_nfv.rst | 671 ++++++++++++++++++++++++++++++++++++++
 5 files changed, 684 insertions(+), 671 deletions(-)
 delete mode 100644 docs/guides/setup/use_cases.rst
 create mode 100644 docs/guides/use_cases/index.rst
 create mode 100644 docs/guides/use_cases/spp_nfv.rst

diff --git a/docs/guides/index.rst b/docs/guides/index.rst
index c2be94c..8a98755 100644
--- a/docs/guides/index.rst
+++ b/docs/guides/index.rst
@@ -1,5 +1,6 @@
 ..  SPDX-License-Identifier: BSD-3-Clause
     Copyright(c) 2010-2014 Intel Corporation
+    Copyright(c) 2017-2019 Nippon Telegraph and Telephone Corporation
 
 SPP documentation
 =================
@@ -10,6 +11,7 @@ SPP documentation
    overview
    design/index
    setup/index
+   use_cases/index
    commands/index
    tools/index
    spp_vf/index
diff --git a/docs/guides/setup/index.rst b/docs/guides/setup/index.rst
index c184f75..bc8d8a6 100644
--- a/docs/guides/setup/index.rst
+++ b/docs/guides/setup/index.rst
@@ -10,5 +10,4 @@ Setup Guide
 
    getting_started
    howto_use
-   use_cases
    performance_opt
diff --git a/docs/guides/setup/use_cases.rst b/docs/guides/setup/use_cases.rst
deleted file mode 100644
index d768ea8..0000000
--- a/docs/guides/setup/use_cases.rst
+++ /dev/null
@@ -1,670 +0,0 @@
-..  SPDX-License-Identifier: BSD-3-Clause
-    Copyright(c) 2010-2014 Intel Corporation
-
-Use Cases
-=========
-
-.. _single_spp_nfv:
-
-Single spp_nfv
---------------
-
-The most simple usecase mainly for testing performance of packet
-forwarding on host.
-One ``spp_nfv`` and two physical ports.
-
-In this usecase, try to configure two senarios.
-
-- Configure ``spp_nfv`` as L2fwd
-- Configure ``spp_nfv`` for Loopback
-
-
-First of all, Check the status of ``spp_nfv`` from SPP CLI.
-
-.. code-block:: console
-
-    spp > nfv 1; status
-    - status: idling
-    - ports:
-      - phy:0
-      - phy:1
-
-This status message explains that ``nfv 1`` has two physical ports.
-
-
-Configure spp_nfv as L2fwd
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Assing the destination of ports with ``patch`` subcommand and
-start forwarding.
-Patch from ``phy:0`` to ``phy:1`` and ``phy:1`` to ``phy:0``,
-which means it is bi-directional connection.
-
-.. code-block:: console
-
-    spp > nfv 1; patch phy:0 phy:1
-    Patch ports (phy:0 -> phy:1).
-    spp > nfv 1; patch phy:1 phy:0
-    Patch ports (phy:1 -> phy:0).
-    spp > nfv 1; forward
-    Start forwarding.
-
-Confirm that status of ``nfv 1`` is updated to ``running`` and ports are
-patches as you defined.
-
-.. code-block:: console
-
-    spp > nfv 1; status
-    - status: running
-    - ports:
-      - phy:0 -> phy:1
-      - phy:1 -> phy:0
-
-.. _figure_spp_nfv_as_l2fwd:
-
-.. figure:: ../images/setup/use_cases/spp_nfv_l2fwd.*
-   :width: 52%
-
-   spp_nfv as l2fwd
-
-
-Stop forwarding and reset patch to clear configuration.
-``patch reset`` is to clear all of patch configurations.
-
-.. code-block:: console
-
-    spp > nfv 1; stop
-    Stop forwarding.
-    spp > nfv 1; patch reset
-    Clear all of patches.
-
-
-Configure spp_nfv for Loopback
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Patch ``phy:0`` to ``phy:0`` and ``phy:1`` to ``phy:1``
-for loopback.
-
-.. code-block:: console
-
-    spp > nfv 1; patch phy:0 phy:0
-    Patch ports (phy:0 -> phy:0).
-    spp > nfv 1; patch phy:1 phy:1
-    Patch ports (phy:1 -> phy:1).
-    spp > nfv 1; forward
-    Start forwarding.
-
-
-Dual spp_nfv
-------------
-
-Use case for testing performance of packet forwarding
-with two ``spp_nfv`` on host.
-Throughput is expected to be better than
-:ref:`Single spp_nfv<single_spp_nfv>`
-usecase because bi-directional forwarding of single ``spp_nfv`` is shared
-with two of uni-directional forwarding between dual ``spp_nfv``.
-
-In this usecase, configure two senarios almost similar to previous section.
-
-- Configure Two ``spp_nfv`` as L2fwd
-- Configure Two ``spp_nfv`` for Loopback
-
-
-Configure Two spp_nfv as L2fwd
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Assing the destination of ports with ``patch`` subcommand and
-start forwarding.
-Patch from ``phy:0`` to ``phy:1`` for ``nfv 1`` and
-from ``phy:1`` to ``phy:0`` for ``nfv 2``.
-
-.. code-block:: console
-
-    spp > nfv 1; patch phy:0 phy:1
-    Patch ports (phy:0 -> phy:1).
-    spp > nfv 2; patch phy:1 phy:0
-    Patch ports (phy:1 -> phy:0).
-    spp > nfv 1; forward
-    Start forwarding.
-    spp > nfv 2; forward
-    Start forwarding.
-
-.. _figure_spp_two_nfv_as_l2fwd:
-
-.. figure:: ../images/setup/use_cases/spp_two_nfv_l2fwd.*
-   :width: 52%
-
-   Two spp_nfv as l2fwd
-
-
-Configure two spp_nfv for Loopback
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Patch ``phy:0`` to ``phy:0`` for ``nfv 1`` and
-``phy:1`` to ``phy:1`` for ``nfv 2`` for loopback.
-
-.. code-block:: console
-
-    spp > nfv 1; patch phy:0 phy:0
-    Patch ports (phy:0 -> phy:0).
-    spp > nfv 2; patch phy:1 phy:1
-    Patch ports (phy:1 -> phy:1).
-    spp > nfv 1; forward
-    Start forwarding.
-    spp > nfv 2; forward
-    Start forwarding.
-
-.. _figure_spp_two_nfv_loopback:
-
-.. figure:: ../images/setup/use_cases/spp_two_nfv_loopback.*
-   :width: 52%
-
-   Two spp_nfv for loopback
-
-
-Dual spp_nfv with Ring PMD
---------------------------
-
-In this usecase, configure two senarios by using ring PMD.
-
-- Uni-Directional L2fwd
-- Bi-Directional L2fwd
-
-Ring PMD
-~~~~~~~~
-
-Ring PMD is an interface for communicating between secondaries on host.
-The maximum number of ring PMDs is defined as ``-n``  option of
-``spp_primary`` and ring ID is started from 0.
-
-Ring PMD is added by using ``add`` subcommand.
-All of ring PMDs is showed with ``status`` subcommand.
-
-.. code-block:: console
-
-    spp > nfv 1; add ring:0
-    Add ring:0.
-    spp > nfv 1; status
-    - status: idling
-    - ports:
-      - phy:0
-      - phy:1
-      - ring:0
-
-Notice that ``ring:0`` is added to ``nfv 1``.
-You can delete it with ``del`` command if you do not need to
-use it anymore.
-
-.. code-block:: console
-
-    spp > nfv 1; del ring:0
-    Delete ring:0.
-    spp > nfv 1; status
-    - status: idling
-    - ports:
-      - phy:0
-      - phy:1
-
-
-Uni-Directional L2fwd
-~~~~~~~~~~~~~~~~~~~~~
-
-Add a ring PMD and connect two ``spp_nvf`` processes.
-To configure network path, add ``ring:0`` to ``nfv 1`` and ``nfv 2``.
-Then, connect it with ``patch`` subcommand.
-
-.. code-block:: console
-
-    spp > nfv 1; add ring:0
-    Add ring:0.
-    spp > nfv 2; add ring:0
-    Add ring:0.
-    spp > nfv 1; patch phy:0 ring:0
-    Patch ports (phy:0 -> ring:0).
-    spp > nfv 2; patch ring:0 phy:1
-    Patch ports (ring:0 -> phy:1).
-    spp > nfv 1; forward
-    Start forwarding.
-    spp > nfv 2; forward
-    Start forwarding.
-
-.. _figure_spp_uni_directional_l2fwd:
-
-.. figure:: ../images/setup/use_cases/spp_unidir_l2fwd.*
-   :width: 52%
-
-   Uni-Directional l2fwd
-
-
-Bi-Directional L2fwd
-~~~~~~~~~~~~~~~~~~~~
-
-Add two ring PMDs to two ``spp_nvf`` processes.
-For bi-directional forwarding,
-patch ``ring:0`` for a path from ``nfv 1`` to ``nfv 2``
-and ``ring:1`` for another path from ``nfv 2`` to ``nfv 1``.
-
-First, add ``ring:0`` and ``ring:1`` to ``nfv 1``.
-
-.. code-block:: console
-
-    spp > nfv 1; add ring:0
-    Add ring:0.
-    spp > nfv 1; add ring:1
-    Add ring:1.
-    spp > nfv 1; status
-    - status: idling
-    - ports:
-      - phy:0
-      - phy:1
-      - ring:0
-      - ring:1
-
-Then, add ``ring:0`` and ``ring:1`` to ``nfv 2``.
-
-.. code-block:: console
-
-    spp > nfv 2; add ring:0
-    Add ring:0.
-    spp > nfv 2; add ring:1
-    Add ring:1.
-    spp > nfv 2; status
-    - status: idling
-    - ports:
-      - phy:0
-      - phy:1
-      - ring:0
-      - ring:1
-
-.. code-block:: console
-
-    spp > nfv 1; patch phy:0 ring:0
-    Patch ports (phy:0 -> ring:0).
-    spp > nfv 1; patch ring:1 phy:0
-    Patch ports (ring:1 -> phy:0).
-    spp > nfv 2; patch phy:1 ring:1
-    Patch ports (phy:1 -> ring:0).
-    spp > nfv 2; patch ring:0 phy:1
-    Patch ports (ring:0 -> phy:1).
-    spp > nfv 1; forward
-    Start forwarding.
-    spp > nfv 2; forward
-    Start forwarding.
-
-.. _figure_spp_bi_directional_l2fwd:
-
-.. figure:: ../images/setup/use_cases/spp_bidir_l2fwd.*
-   :width: 52%
-
-   Bi-Directional l2fwd
-
-
-Single spp_nfv with Vhost PMD
------------------------------
-
-Vhost PMD
-~~~~~~~~~
-
-Vhost PMD is an interface for communicating between on hsot and guest VM.
-As described in
-:doc:`How to Use<howto_use>`,
-vhost must be created by ``add`` subcommand before the VM is launched.
-
-
-Setup Vhost PMD
-~~~~~~~~~~~~~~~
-
-In this usecase, add ``vhost:0`` to ``nfv 1`` for communicating
-with the VM.
-First, check if ``/tmp/sock0`` is already exist.
-You should remove it already exist to avoid a failure of socket file
-creation.
-
-.. code-block:: console
-
-    $ ls /tmp | grep sock
-    sock0 ...
-
-    # remove it if exist
-    $ sudo rm /tmp/sock0
-
-Create ``/tmp/sock0`` from ``nfv 1``.
-
-.. code-block:: console
-
-    spp > nfv 1; add vhost:0
-    Add vhost:0.
-
-
-.. _usecase_unidir_l2fwd_vhost:
-
-Uni-Directional L2fwd with Vhost PMD
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Launch a VM by using the vhost interface created as previous step.
-Lauunching VM is described in
-:doc:`How to Use<howto_use>`
-and launch ``spp_vm`` with secondary ID 2.
-You find ``nfv 2`` from controller after launched.
-
-Patch ``phy:0`` and ``phy:1`` to ``vhost:0`` with ``nfv 1``
-running on host.
-Inside VM, configure loopback by patching ``phy:0`` and ``phy:0``
-with ``nfv 2``.
-
-.. code-block:: console
-
-    spp > nfv 1; patch phy:0 vhost:0
-    Patch ports (phy:0 -> vhost:0).
-    spp > nfv 1; patch vhost:0 phy:1
-    Patch ports (vhost:0 -> phy:1).
-    spp > nfv 2; patch phy:0 phy:0
-    Patch ports (phy:0 -> phy:0).
-    spp > nfv 1; forward
-    Start forwarding.
-    spp > nfv 2; forward
-    Start forwarding.
-
-.. _figure_spp_uni_directional_l2fwd_vhost:
-
-.. figure:: ../images/setup/use_cases/spp_unidir_l2fwd_vhost.*
-   :width: 52%
-
-   Uni-Directional l2fwd with vhost
-
-Single spp_nfv with PCAP PMD
------------------------------
-
-PCAP PMD
-~~~~~~~~
-
-Pcap PMD is an interface for capturing or restoring traffic.
-For usign pcap PMD, you should set ``CONFIG_RTE_LIBRTE_PMD_PCAP``
-and ``CONFIG_RTE_PORT_PCAP`` to ``y`` and compile DPDK before SPP.
-Refer to
-:ref:`Install DPDK and SPP<install_dpdk_spp>`
-for details of setting up.
-
-Pcap PMD has two different streams for rx and tx.
-Tx device is for capturing packets and rx is for restoring captured
-packets.
-For rx device, you can use any of pcap files other than SPP's pcap PMD.
-
-To start using pcap pmd, just using ``add`` subcommand as ring.
-Here is an example for creating pcap PMD ``pcap:1``.
-
-.. code-block:: console
-
-    spp > nfv 1; add pcap:1
-
-After running it, you can find two of pcap files in ``/tmp``.
-
-.. code-block:: console
-
-    $ ls /tmp | grep pcap$
-    spp-rx1.pcap
-    spp-tx1.pcap
-
-If you already have a dumped file, you can use it by it putting as
-``/tmp/spp-rx1.pcap`` before running the ``add`` subcommand.
-SPP does not overwrite rx pcap file if it already exist,
-and it just overwrites tx pcap file.
-
-Capture Incoming Packets
-~~~~~~~~~~~~~~~~~~~~~~~~
-
-As the first usecase, add a pcap PMD and capture incoming packets from
-``phy:0``.
-
-.. code-block:: console
-
-    spp > nfv 1; add pcap 1
-    Add pcap:1.
-    spp > nfv 1; patch phy:0 pcap:1
-    Patch ports (phy:0 -> pcap:1).
-    spp > nfv 1; forward
-    Start forwarding.
-
-.. _figure_spp_pcap_incoming:
-
-.. figure:: ../images/setup/use_cases/spp_pcap_incoming.*
-   :width: 50%
-
-   Rapture incoming packets
-
-In this example, we use pktgen.
-Once you start forwarding packets from pktgen, you can see
-that the size of ``/tmp/spp-tx1.pcap`` is increased rapidly
-(or gradually, it depends on the rate).
-
-.. code-block:: console
-
-    Pktgen:/> set 0 size 1024
-    Pktgen:/> start 0
-
-To stop capturing, simply stop forwarding of ``spp_nfv``.
-
-.. code-block:: console
-
-    spp > nfv 1; stop
-    Stop forwarding.
-
-You can analyze the dumped pcap file with other tools like as wireshark.
-
-Restore dumped Packets
-~~~~~~~~~~~~~~~~~~~~~~
-
-In this usecase, use dumped file in previsou section.
-Copy ``spp-tx1.pcap`` to ``spp-rx2.pcap`` first.
-
-.. code-block:: console
-
-    $ sudo cp /tmp/spp-tx1.pcap /tmp/spp-rx2.pcap
-
-Then, add pcap PMD ``pcap:2`` to another ``spp_nfv``.
-
-.. code-block:: console
-
-    spp > nfv 2; add pcap:2
-    Add pcap:2.
-
-.. _figure_spp_pcap_restoring:
-
-.. figure:: ../images/setup/use_cases/spp_pcap_restoring.*
-   :width: 52%
-
-   Restore dumped packets
-
-You can find that ``spp-tx2.pcap`` is creaeted and ``spp-rx2.pcap``
-still remained.
-
-.. code-block:: console
-
-    $ ls -al /tmp/spp*.pcap
-    -rw-r--r-- 1 root root         24  ...  /tmp/spp-rx1.pcap
-    -rw-r--r-- 1 root root 2936703640  ...  /tmp/spp-rx2.pcap
-    -rw-r--r-- 1 root root 2936703640  ...  /tmp/spp-tx1.pcap
-    -rw-r--r-- 1 root root          0  ...  /tmp/spp-tx2.pcap
-
-To confirm packets are restored, patch ``pcap:2`` to ``phy:1``
-and watch received packets on pktgen.
-
-.. code-block:: console
-
-    spp > nfv 2; patch pcap:2 phy:1
-    Patch ports (pcap:2 -> phy:1).
-    spp > nfv 2; forward
-    Start forwarding.
-
-After started forwarding, you can see that packet count is increased.
-
-
-Multiple Nodes
---------------
-
-SPP provides multi-node support for configuring network across several nodes
-from SPP CLI. You can configure each of nodes step by step.
-
-In :numref:`figure_spp_multi_nodes_vhost`, there are four nodes on which
-SPP and service VMs are running. Host1 behaves as a patch panel for connecting
-between other nodes. A request is sent from a VM on host2 to a VM on host3 or
-host4. Host4 is a backup server for host3 and replaced with host3 by changing
-network configuration. Blue lines are paths for host3 and red lines are for
-host4, and changed alternatively.
-
-.. _figure_spp_multi_nodes_vhost:
-
-.. figure:: ../images/setup/use_cases/spp_multi_nodes_vhost.*
-   :width: 100%
-
-   Multiple nodes example
-
-Launch SPP on Multiple Nodes
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Before SPP CLI, launch spp-ctl on each of nodes. You should give IP address
-with ``-b`` option to be accessed from outside of the node.
-This is an example for launching spp-ctl on host1.
-
-.. code-block:: console
-
-    # Launch on host1
-    $ python3 src/spp-ctl/spp-ctl -b 192.168.11.101
-
-You also need to launch it on host2, host3 and host4 in each of terminals.
-
-After all of spp-ctls are lauched, launch SPP CLI with four ``-b`` options
-for each of hosts. SPP CLI is able to be launched on any of nodes.
-
-.. code-block:: console
-
-    # Launch SPP CLI
-    $ python src/spp.py -b 192.168.11.101 \
-        -b 192.168.11.102 \
-        -b 192.168.11.103 \
-        -b 192.168.11.104 \
-
-If you succeeded to launch all of processes before, you can find them
-by running ``sever list`` command.
-
-.. code-block:: console
-
-    # Launch SPP CLI
-    spp > server list
-      1: 192.168.1.101:7777 *
-      2: 192.168.1.102:7777
-      3: 192.168.1.103:7777
-      4: 192.168.1.104:7777
-
-You might notice that first entry is marked with ``*``. It means that
-the current node under the management is the first node.
-
-Switch Nodes
-~~~~~~~~~~~~
-
-SPP CLI manages a node marked with ``*``. If you configure other nodes,
-change the managed node with ``server`` command.
-Here is an example to switch to third node.
-
-.. code-block:: console
-
-    # Launch SPP CLI
-    spp > server 3
-    Switch spp-ctl to "3: 192.168.1.103:7777".
-
-And the result after changed to host3.
-
-.. code-block:: console
-
-    spp > server list
-      1: 192.168.1.101:7777
-      2: 192.168.1.102:7777
-      3: 192.168.1.103:7777 *
-      4: 192.168.1.104:7777
-
-You can also confirm this change by checking IP address of spp-ctl from
-``status`` command.
-
-.. code-block:: console
-
-    spp > status
-    - spp-ctl:
-      - address: 192.168.1.103:7777
-    - primary:
-      - status: not running
-    ...
-
-Configure Patch Panel Node
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-First of all of the network configuration, setup blue lines on host1
-described in :numref:`figure_spp_multi_nodes_vhost`.
-You should confirm the managed server is host1.
-
-.. code-block:: console
-
-    spp > server list
-      1: 192.168.1.101:7777 *
-      2: 192.168.1.102:7777
-      ...
-
-Patch two sets of physical ports and start forwarding.
-
-.. code-block:: console
-
-    spp > nfv 1; patch phy:1 phy:2
-    Patch ports (phy:1 -> phy:2).
-    spp > nfv 1; patch phy:3 phy:0
-    Patch ports (phy:3 -> phy:0).
-    spp > nfv 1; forward
-    Start forwarding.
-
-Configure Service VM Nodes
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-It is almost similar as
-:ref:`Uni-Directional L2fwd with Vhost PMD<usecase_unidir_l2fwd_vhost>`.
-to setup for host2, host3, and host4.
-
-For host2, swith server to host2 and run nfv commands.
-
-.. code-block:: console
-
-    # switch to server 2
-    spp > server 2
-    Switch spp-ctl to "2: 192.168.1.102:7777".
-
-    # configure
-    spp > nfv 1; patch phy:0 vhost:0
-    Patch ports (phy:0 -> vhost:0).
-    spp > nfv 1; patch vhost:0 phy:1
-    Patch ports (vhost:0 -> phy:1).
-    spp > nfv 1; forward
-    Start forwarding.
-
-Then, swith to host3 and host4 for doing the same configuration.
-
-Change Path to Backup Node
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Finally, change path from blue lines to red lines.
-
-.. code-block:: console
-
-    # switch to server 1
-    spp > server 2
-    Switch spp-ctl to "2: 192.168.1.102:7777".
-
-    # remove blue path
-    spp > nfv 1; stop
-    Stop forwarding.
-    spp > nfv 1; patch reset
-
-    # configure red path
-    spp > nfv 2; patch phy:1 phy:4
-    Patch ports (phy:1 -> phy:4).
-    spp > nfv 2; patch phy:5 phy:0
-    Patch ports (phy:5 -> phy:0).
-    spp > nfv 2; forward
-    Start forwarding.
diff --git a/docs/guides/use_cases/index.rst b/docs/guides/use_cases/index.rst
new file mode 100644
index 0000000..c41dc2e
--- /dev/null
+++ b/docs/guides/use_cases/index.rst
@@ -0,0 +1,11 @@
+..  SPDX-License-Identifier: BSD-3-Clause
+    Copyright(c) 2019 Nippon Telegraph and Telephone Corporation
+
+Use Cases
+=========
+
+.. toctree::
+   :maxdepth: 1
+   :numbered:
+
+   spp_nfv
diff --git a/docs/guides/use_cases/spp_nfv.rst b/docs/guides/use_cases/spp_nfv.rst
new file mode 100644
index 0000000..d9d922c
--- /dev/null
+++ b/docs/guides/use_cases/spp_nfv.rst
@@ -0,0 +1,671 @@
+..  SPDX-License-Identifier: BSD-3-Clause
+    Copyright(c) 2010-2014 Intel Corporation
+    Copyright(c) 2017-2019 Nippon Telegraph and Telephone Corporation
+
+spp_nfv
+=======
+
+.. _single_spp_nfv:
+
+Single spp_nfv
+--------------
+
+The most simple usecase mainly for testing performance of packet
+forwarding on host.
+One ``spp_nfv`` and two physical ports.
+
+In this usecase, try to configure two senarios.
+
+- Configure ``spp_nfv`` as L2fwd
+- Configure ``spp_nfv`` for Loopback
+
+
+First of all, Check the status of ``spp_nfv`` from SPP CLI.
+
+.. code-block:: console
+
+    spp > nfv 1; status
+    - status: idling
+    - ports:
+      - phy:0
+      - phy:1
+
+This status message explains that ``nfv 1`` has two physical ports.
+
+
+Configure spp_nfv as L2fwd
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Assing the destination of ports with ``patch`` subcommand and
+start forwarding.
+Patch from ``phy:0`` to ``phy:1`` and ``phy:1`` to ``phy:0``,
+which means it is bi-directional connection.
+
+.. code-block:: console
+
+    spp > nfv 1; patch phy:0 phy:1
+    Patch ports (phy:0 -> phy:1).
+    spp > nfv 1; patch phy:1 phy:0
+    Patch ports (phy:1 -> phy:0).
+    spp > nfv 1; forward
+    Start forwarding.
+
+Confirm that status of ``nfv 1`` is updated to ``running`` and ports are
+patches as you defined.
+
+.. code-block:: console
+
+    spp > nfv 1; status
+    - status: running
+    - ports:
+      - phy:0 -> phy:1
+      - phy:1 -> phy:0
+
+.. _figure_spp_nfv_as_l2fwd:
+
+.. figure:: ../images/setup/use_cases/spp_nfv_l2fwd.*
+   :width: 52%
+
+   spp_nfv as l2fwd
+
+
+Stop forwarding and reset patch to clear configuration.
+``patch reset`` is to clear all of patch configurations.
+
+.. code-block:: console
+
+    spp > nfv 1; stop
+    Stop forwarding.
+    spp > nfv 1; patch reset
+    Clear all of patches.
+
+
+Configure spp_nfv for Loopback
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Patch ``phy:0`` to ``phy:0`` and ``phy:1`` to ``phy:1``
+for loopback.
+
+.. code-block:: console
+
+    spp > nfv 1; patch phy:0 phy:0
+    Patch ports (phy:0 -> phy:0).
+    spp > nfv 1; patch phy:1 phy:1
+    Patch ports (phy:1 -> phy:1).
+    spp > nfv 1; forward
+    Start forwarding.
+
+
+Dual spp_nfv
+------------
+
+Use case for testing performance of packet forwarding
+with two ``spp_nfv`` on host.
+Throughput is expected to be better than
+:ref:`Single spp_nfv<single_spp_nfv>`
+usecase because bi-directional forwarding of single ``spp_nfv`` is shared
+with two of uni-directional forwarding between dual ``spp_nfv``.
+
+In this usecase, configure two senarios almost similar to previous section.
+
+- Configure Two ``spp_nfv`` as L2fwd
+- Configure Two ``spp_nfv`` for Loopback
+
+
+Configure Two spp_nfv as L2fwd
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Assing the destination of ports with ``patch`` subcommand and
+start forwarding.
+Patch from ``phy:0`` to ``phy:1`` for ``nfv 1`` and
+from ``phy:1`` to ``phy:0`` for ``nfv 2``.
+
+.. code-block:: console
+
+    spp > nfv 1; patch phy:0 phy:1
+    Patch ports (phy:0 -> phy:1).
+    spp > nfv 2; patch phy:1 phy:0
+    Patch ports (phy:1 -> phy:0).
+    spp > nfv 1; forward
+    Start forwarding.
+    spp > nfv 2; forward
+    Start forwarding.
+
+.. _figure_spp_two_nfv_as_l2fwd:
+
+.. figure:: ../images/setup/use_cases/spp_two_nfv_l2fwd.*
+   :width: 52%
+
+   Two spp_nfv as l2fwd
+
+
+Configure two spp_nfv for Loopback
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Patch ``phy:0`` to ``phy:0`` for ``nfv 1`` and
+``phy:1`` to ``phy:1`` for ``nfv 2`` for loopback.
+
+.. code-block:: console
+
+    spp > nfv 1; patch phy:0 phy:0
+    Patch ports (phy:0 -> phy:0).
+    spp > nfv 2; patch phy:1 phy:1
+    Patch ports (phy:1 -> phy:1).
+    spp > nfv 1; forward
+    Start forwarding.
+    spp > nfv 2; forward
+    Start forwarding.
+
+.. _figure_spp_two_nfv_loopback:
+
+.. figure:: ../images/setup/use_cases/spp_two_nfv_loopback.*
+   :width: 52%
+
+   Two spp_nfv for loopback
+
+
+Dual spp_nfv with Ring PMD
+--------------------------
+
+In this usecase, configure two senarios by using ring PMD.
+
+- Uni-Directional L2fwd
+- Bi-Directional L2fwd
+
+Ring PMD
+~~~~~~~~
+
+Ring PMD is an interface for communicating between secondaries on host.
+The maximum number of ring PMDs is defined as ``-n``  option of
+``spp_primary`` and ring ID is started from 0.
+
+Ring PMD is added by using ``add`` subcommand.
+All of ring PMDs is showed with ``status`` subcommand.
+
+.. code-block:: console
+
+    spp > nfv 1; add ring:0
+    Add ring:0.
+    spp > nfv 1; status
+    - status: idling
+    - ports:
+      - phy:0
+      - phy:1
+      - ring:0
+
+Notice that ``ring:0`` is added to ``nfv 1``.
+You can delete it with ``del`` command if you do not need to
+use it anymore.
+
+.. code-block:: console
+
+    spp > nfv 1; del ring:0
+    Delete ring:0.
+    spp > nfv 1; status
+    - status: idling
+    - ports:
+      - phy:0
+      - phy:1
+
+
+Uni-Directional L2fwd
+~~~~~~~~~~~~~~~~~~~~~
+
+Add a ring PMD and connect two ``spp_nvf`` processes.
+To configure network path, add ``ring:0`` to ``nfv 1`` and ``nfv 2``.
+Then, connect it with ``patch`` subcommand.
+
+.. code-block:: console
+
+    spp > nfv 1; add ring:0
+    Add ring:0.
+    spp > nfv 2; add ring:0
+    Add ring:0.
+    spp > nfv 1; patch phy:0 ring:0
+    Patch ports (phy:0 -> ring:0).
+    spp > nfv 2; patch ring:0 phy:1
+    Patch ports (ring:0 -> phy:1).
+    spp > nfv 1; forward
+    Start forwarding.
+    spp > nfv 2; forward
+    Start forwarding.
+
+.. _figure_spp_uni_directional_l2fwd:
+
+.. figure:: ../images/setup/use_cases/spp_unidir_l2fwd.*
+   :width: 52%
+
+   Uni-Directional l2fwd
+
+
+Bi-Directional L2fwd
+~~~~~~~~~~~~~~~~~~~~
+
+Add two ring PMDs to two ``spp_nvf`` processes.
+For bi-directional forwarding,
+patch ``ring:0`` for a path from ``nfv 1`` to ``nfv 2``
+and ``ring:1`` for another path from ``nfv 2`` to ``nfv 1``.
+
+First, add ``ring:0`` and ``ring:1`` to ``nfv 1``.
+
+.. code-block:: console
+
+    spp > nfv 1; add ring:0
+    Add ring:0.
+    spp > nfv 1; add ring:1
+    Add ring:1.
+    spp > nfv 1; status
+    - status: idling
+    - ports:
+      - phy:0
+      - phy:1
+      - ring:0
+      - ring:1
+
+Then, add ``ring:0`` and ``ring:1`` to ``nfv 2``.
+
+.. code-block:: console
+
+    spp > nfv 2; add ring:0
+    Add ring:0.
+    spp > nfv 2; add ring:1
+    Add ring:1.
+    spp > nfv 2; status
+    - status: idling
+    - ports:
+      - phy:0
+      - phy:1
+      - ring:0
+      - ring:1
+
+.. code-block:: console
+
+    spp > nfv 1; patch phy:0 ring:0
+    Patch ports (phy:0 -> ring:0).
+    spp > nfv 1; patch ring:1 phy:0
+    Patch ports (ring:1 -> phy:0).
+    spp > nfv 2; patch phy:1 ring:1
+    Patch ports (phy:1 -> ring:0).
+    spp > nfv 2; patch ring:0 phy:1
+    Patch ports (ring:0 -> phy:1).
+    spp > nfv 1; forward
+    Start forwarding.
+    spp > nfv 2; forward
+    Start forwarding.
+
+.. _figure_spp_bi_directional_l2fwd:
+
+.. figure:: ../images/setup/use_cases/spp_bidir_l2fwd.*
+   :width: 52%
+
+   Bi-Directional l2fwd
+
+
+Single spp_nfv with Vhost PMD
+-----------------------------
+
+Vhost PMD
+~~~~~~~~~
+
+Vhost PMD is an interface for communicating between on hsot and guest VM.
+As described in
+:ref:`How to Use<spp_setup_howto_use>`,
+vhost must be created by ``add`` subcommand before the VM is launched.
+
+
+Setup Vhost PMD
+~~~~~~~~~~~~~~~
+
+In this usecase, add ``vhost:0`` to ``nfv 1`` for communicating
+with the VM.
+First, check if ``/tmp/sock0`` is already exist.
+You should remove it already exist to avoid a failure of socket file
+creation.
+
+.. code-block:: console
+
+    $ ls /tmp | grep sock
+    sock0 ...
+
+    # remove it if exist
+    $ sudo rm /tmp/sock0
+
+Create ``/tmp/sock0`` from ``nfv 1``.
+
+.. code-block:: console
+
+    spp > nfv 1; add vhost:0
+    Add vhost:0.
+
+
+.. _usecase_unidir_l2fwd_vhost:
+
+Uni-Directional L2fwd with Vhost PMD
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Launch a VM by using the vhost interface created as previous step.
+Lauunching VM is described in
+:ref:`How to Use<spp_setup_howto_use>`
+and launch ``spp_vm`` with secondary ID 2.
+You find ``nfv 2`` from controller after launched.
+
+Patch ``phy:0`` and ``phy:1`` to ``vhost:0`` with ``nfv 1``
+running on host.
+Inside VM, configure loopback by patching ``phy:0`` and ``phy:0``
+with ``nfv 2``.
+
+.. code-block:: console
+
+    spp > nfv 1; patch phy:0 vhost:0
+    Patch ports (phy:0 -> vhost:0).
+    spp > nfv 1; patch vhost:0 phy:1
+    Patch ports (vhost:0 -> phy:1).
+    spp > nfv 2; patch phy:0 phy:0
+    Patch ports (phy:0 -> phy:0).
+    spp > nfv 1; forward
+    Start forwarding.
+    spp > nfv 2; forward
+    Start forwarding.
+
+.. _figure_spp_uni_directional_l2fwd_vhost:
+
+.. figure:: ../images/setup/use_cases/spp_unidir_l2fwd_vhost.*
+   :width: 52%
+
+   Uni-Directional l2fwd with vhost
+
+Single spp_nfv with PCAP PMD
+-----------------------------
+
+PCAP PMD
+~~~~~~~~
+
+Pcap PMD is an interface for capturing or restoring traffic.
+For usign pcap PMD, you should set ``CONFIG_RTE_LIBRTE_PMD_PCAP``
+and ``CONFIG_RTE_PORT_PCAP`` to ``y`` and compile DPDK before SPP.
+Refer to
+:ref:`Install DPDK and SPP<install_dpdk_spp>`
+for details of setting up.
+
+Pcap PMD has two different streams for rx and tx.
+Tx device is for capturing packets and rx is for restoring captured
+packets.
+For rx device, you can use any of pcap files other than SPP's pcap PMD.
+
+To start using pcap pmd, just using ``add`` subcommand as ring.
+Here is an example for creating pcap PMD ``pcap:1``.
+
+.. code-block:: console
+
+    spp > nfv 1; add pcap:1
+
+After running it, you can find two of pcap files in ``/tmp``.
+
+.. code-block:: console
+
+    $ ls /tmp | grep pcap$
+    spp-rx1.pcap
+    spp-tx1.pcap
+
+If you already have a dumped file, you can use it by it putting as
+``/tmp/spp-rx1.pcap`` before running the ``add`` subcommand.
+SPP does not overwrite rx pcap file if it already exist,
+and it just overwrites tx pcap file.
+
+Capture Incoming Packets
+~~~~~~~~~~~~~~~~~~~~~~~~
+
+As the first usecase, add a pcap PMD and capture incoming packets from
+``phy:0``.
+
+.. code-block:: console
+
+    spp > nfv 1; add pcap 1
+    Add pcap:1.
+    spp > nfv 1; patch phy:0 pcap:1
+    Patch ports (phy:0 -> pcap:1).
+    spp > nfv 1; forward
+    Start forwarding.
+
+.. _figure_spp_pcap_incoming:
+
+.. figure:: ../images/setup/use_cases/spp_pcap_incoming.*
+   :width: 50%
+
+   Rapture incoming packets
+
+In this example, we use pktgen.
+Once you start forwarding packets from pktgen, you can see
+that the size of ``/tmp/spp-tx1.pcap`` is increased rapidly
+(or gradually, it depends on the rate).
+
+.. code-block:: console
+
+    Pktgen:/> set 0 size 1024
+    Pktgen:/> start 0
+
+To stop capturing, simply stop forwarding of ``spp_nfv``.
+
+.. code-block:: console
+
+    spp > nfv 1; stop
+    Stop forwarding.
+
+You can analyze the dumped pcap file with other tools like as wireshark.
+
+Restore dumped Packets
+~~~~~~~~~~~~~~~~~~~~~~
+
+In this usecase, use dumped file in previsou section.
+Copy ``spp-tx1.pcap`` to ``spp-rx2.pcap`` first.
+
+.. code-block:: console
+
+    $ sudo cp /tmp/spp-tx1.pcap /tmp/spp-rx2.pcap
+
+Then, add pcap PMD ``pcap:2`` to another ``spp_nfv``.
+
+.. code-block:: console
+
+    spp > nfv 2; add pcap:2
+    Add pcap:2.
+
+.. _figure_spp_pcap_restoring:
+
+.. figure:: ../images/setup/use_cases/spp_pcap_restoring.*
+   :width: 52%
+
+   Restore dumped packets
+
+You can find that ``spp-tx2.pcap`` is creaeted and ``spp-rx2.pcap``
+still remained.
+
+.. code-block:: console
+
+    $ ls -al /tmp/spp*.pcap
+    -rw-r--r-- 1 root root         24  ...  /tmp/spp-rx1.pcap
+    -rw-r--r-- 1 root root 2936703640  ...  /tmp/spp-rx2.pcap
+    -rw-r--r-- 1 root root 2936703640  ...  /tmp/spp-tx1.pcap
+    -rw-r--r-- 1 root root          0  ...  /tmp/spp-tx2.pcap
+
+To confirm packets are restored, patch ``pcap:2`` to ``phy:1``
+and watch received packets on pktgen.
+
+.. code-block:: console
+
+    spp > nfv 2; patch pcap:2 phy:1
+    Patch ports (pcap:2 -> phy:1).
+    spp > nfv 2; forward
+    Start forwarding.
+
+After started forwarding, you can see that packet count is increased.
+
+
+Multiple Nodes
+--------------
+
+SPP provides multi-node support for configuring network across several nodes
+from SPP CLI. You can configure each of nodes step by step.
+
+In :numref:`figure_spp_multi_nodes_vhost`, there are four nodes on which
+SPP and service VMs are running. Host1 behaves as a patch panel for connecting
+between other nodes. A request is sent from a VM on host2 to a VM on host3 or
+host4. Host4 is a backup server for host3 and replaced with host3 by changing
+network configuration. Blue lines are paths for host3 and red lines are for
+host4, and changed alternatively.
+
+.. _figure_spp_multi_nodes_vhost:
+
+.. figure:: ../images/setup/use_cases/spp_multi_nodes_vhost.*
+   :width: 100%
+
+   Multiple nodes example
+
+Launch SPP on Multiple Nodes
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Before SPP CLI, launch spp-ctl on each of nodes. You should give IP address
+with ``-b`` option to be accessed from outside of the node.
+This is an example for launching spp-ctl on host1.
+
+.. code-block:: console
+
+    # Launch on host1
+    $ python3 src/spp-ctl/spp-ctl -b 192.168.11.101
+
+You also need to launch it on host2, host3 and host4 in each of terminals.
+
+After all of spp-ctls are lauched, launch SPP CLI with four ``-b`` options
+for each of hosts. SPP CLI is able to be launched on any of nodes.
+
+.. code-block:: console
+
+    # Launch SPP CLI
+    $ python src/spp.py -b 192.168.11.101 \
+        -b 192.168.11.102 \
+        -b 192.168.11.103 \
+        -b 192.168.11.104 \
+
+If you succeeded to launch all of processes before, you can find them
+by running ``sever list`` command.
+
+.. code-block:: console
+
+    # Launch SPP CLI
+    spp > server list
+      1: 192.168.1.101:7777 *
+      2: 192.168.1.102:7777
+      3: 192.168.1.103:7777
+      4: 192.168.1.104:7777
+
+You might notice that first entry is marked with ``*``. It means that
+the current node under the management is the first node.
+
+Switch Nodes
+~~~~~~~~~~~~
+
+SPP CLI manages a node marked with ``*``. If you configure other nodes,
+change the managed node with ``server`` command.
+Here is an example to switch to third node.
+
+.. code-block:: console
+
+    # Launch SPP CLI
+    spp > server 3
+    Switch spp-ctl to "3: 192.168.1.103:7777".
+
+And the result after changed to host3.
+
+.. code-block:: console
+
+    spp > server list
+      1: 192.168.1.101:7777
+      2: 192.168.1.102:7777
+      3: 192.168.1.103:7777 *
+      4: 192.168.1.104:7777
+
+You can also confirm this change by checking IP address of spp-ctl from
+``status`` command.
+
+.. code-block:: console
+
+    spp > status
+    - spp-ctl:
+      - address: 192.168.1.103:7777
+    - primary:
+      - status: not running
+    ...
+
+Configure Patch Panel Node
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+First of all of the network configuration, setup blue lines on host1
+described in :numref:`figure_spp_multi_nodes_vhost`.
+You should confirm the managed server is host1.
+
+.. code-block:: console
+
+    spp > server list
+      1: 192.168.1.101:7777 *
+      2: 192.168.1.102:7777
+      ...
+
+Patch two sets of physical ports and start forwarding.
+
+.. code-block:: console
+
+    spp > nfv 1; patch phy:1 phy:2
+    Patch ports (phy:1 -> phy:2).
+    spp > nfv 1; patch phy:3 phy:0
+    Patch ports (phy:3 -> phy:0).
+    spp > nfv 1; forward
+    Start forwarding.
+
+Configure Service VM Nodes
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+It is almost similar as
+:ref:`Uni-Directional L2fwd with Vhost PMD<usecase_unidir_l2fwd_vhost>`.
+to setup for host2, host3, and host4.
+
+For host2, swith server to host2 and run nfv commands.
+
+.. code-block:: console
+
+    # switch to server 2
+    spp > server 2
+    Switch spp-ctl to "2: 192.168.1.102:7777".
+
+    # configure
+    spp > nfv 1; patch phy:0 vhost:0
+    Patch ports (phy:0 -> vhost:0).
+    spp > nfv 1; patch vhost:0 phy:1
+    Patch ports (vhost:0 -> phy:1).
+    spp > nfv 1; forward
+    Start forwarding.
+
+Then, swith to host3 and host4 for doing the same configuration.
+
+Change Path to Backup Node
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Finally, change path from blue lines to red lines.
+
+.. code-block:: console
+
+    # switch to server 1
+    spp > server 2
+    Switch spp-ctl to "2: 192.168.1.102:7777".
+
+    # remove blue path
+    spp > nfv 1; stop
+    Stop forwarding.
+    spp > nfv 1; patch reset
+
+    # configure red path
+    spp > nfv 2; patch phy:1 phy:4
+    Patch ports (phy:1 -> phy:4).
+    spp > nfv 2; patch phy:5 phy:0
+    Patch ports (phy:5 -> phy:0).
+    spp > nfv 2; forward
+    Start forwarding.
-- 
2.7.4

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [spp] [PATCH 11/11] docs: remove spp-ctl section
  2019-01-09  1:49 [spp] Update docs structure ogawa.yasufumi
                   ` (9 preceding siblings ...)
  2019-01-09  1:49 ` [spp] [PATCH 10/11] docs: move usecases " ogawa.yasufumi
@ 2019-01-09  1:49 ` ogawa.yasufumi
  10 siblings, 0 replies; 12+ messages in thread
From: ogawa.yasufumi @ 2019-01-09  1:49 UTC (permalink / raw)
  To: ferruh.yigit, spp, ogawa.yasufumi

From: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>

Move overview, design and setup guide of spp-ctl to each of sections of
SPP itself. API reference is only remained to describe not only spp-ctl
but all of APIs of SPP which are added in future releases.

Signed-off-by: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>
---
 docs/guides/api_ref/index.rst         |   11 +
 docs/guides/api_ref/spp-ctl.rst       | 1723 +++++++++++++++++++++++++++++++++
 docs/guides/design/spp_controller.rst |   14 +
 docs/guides/index.rst                 |    2 +-
 docs/guides/setup/getting_started.rst |   21 +-
 docs/guides/setup/howto_use.rst       |   13 +
 docs/guides/spp-ctl/api-reference.rst | 1714 --------------------------------
 docs/guides/spp-ctl/index.rst         |   14 -
 docs/guides/spp-ctl/overview.rst      |   87 --
 9 files changed, 1778 insertions(+), 1821 deletions(-)
 create mode 100644 docs/guides/api_ref/index.rst
 create mode 100644 docs/guides/api_ref/spp-ctl.rst
 delete mode 100644 docs/guides/spp-ctl/api-reference.rst
 delete mode 100644 docs/guides/spp-ctl/index.rst
 delete mode 100644 docs/guides/spp-ctl/overview.rst

diff --git a/docs/guides/api_ref/index.rst b/docs/guides/api_ref/index.rst
new file mode 100644
index 0000000..0c3bad3
--- /dev/null
+++ b/docs/guides/api_ref/index.rst
@@ -0,0 +1,11 @@
+..  SPDX-License-Identifier: BSD-3-Clause
+    Copyright(c) 2018 Nippon Telegraph and Telephone Corporation
+
+API Reference
+=============
+
+.. toctree::
+   :maxdepth: 2
+   :numbered:
+
+   spp-ctl
diff --git a/docs/guides/api_ref/spp-ctl.rst b/docs/guides/api_ref/spp-ctl.rst
new file mode 100644
index 0000000..237f91e
--- /dev/null
+++ b/docs/guides/api_ref/spp-ctl.rst
@@ -0,0 +1,1723 @@
+..  SPDX-License-Identifier: BSD-3-Clause
+    Copyright(c) 2018-2019 Nippon Telegraph and Telephone Corporation
+
+.. _spp_ctl_rest_api_ref:
+
+spp-ctl REST API
+================
+
+Overview
+--------
+
+``spp-ctl`` provides simple REST like API. It supports http only, not https.
+
+Request and Response
+~~~~~~~~~~~~~~~~~~~~
+
+Request body is JSON format.
+It is accepted both ``text/plain`` and ``application/json``
+for the content-type header.
+
+A response of ``GET`` is JSON format and the content-type is
+``application/json`` if the request success.
+
+.. code-block:: console
+
+    $ curl http://127.0.0.1:7777/v1/processes
+    [{"type": "primary"}, ..., {"client-id": 2, "type": "vf"}]
+
+    $ curl -X POST http://localhost:7777/v1/vfs/1/components \
+      -d '{"core": 2, "name": "forward_0_tx", "type": "forward"}'
+
+If a request is failed, the response is a text which shows error reason
+and the content-type is ``text/plain``.
+
+
+Error code
+~~~~~~~~~~
+
+
+``spp-ctl`` does basic syntax and lexical check of a request.
+
+.. _table_spp_ctl_error_codes:
+
+.. table:: Error codes in spp-ctl.
+
+    +-------+----------------------------------------------------------------+
+    | Error | Description                                                    |
+    |       |                                                                |
+    +=======+================================================================+
+    | 400   | Syntax or lexical error, or SPP returns error for the request. |
+    +-------+----------------------------------------------------------------+
+    | 404   | URL is not supported, or no SPP process of client-id in a URL. |
+    +-------+----------------------------------------------------------------+
+    | 500   | System error occured in ``spp-ctl``.                           |
+    +-------+----------------------------------------------------------------+
+
+
+API independent of the process type
+-----------------------------------
+
+GET /v1/processes
+~~~~~~~~~~~~~~~~~
+
+Show the SPP processes connected to the ``spp-ctl``.
+
+* Normarl response codes: 200
+
+Request example
+^^^^^^^^^^^^^^^
+
+.. code-block:: console
+
+    curl -X GET -H 'application/json' \
+    http://127.0.0.1:7777/v1/processes
+
+Response
+^^^^^^^^
+
+An array of process objects.
+
+process object:
+
+.. _table_spp_ctl_processes:
+
+.. table:: Response params of getting processes info.
+
+    +-----------+---------+-----------------------------------------------------------------+
+    | Name      | Type    | Description                                                     |
+    |           |         |                                                                 |
+    +===========+=========+=================================================================+
+    | type      | string  | process type. one of ``primary``, ``nfv`` or ``vf``.            |
+    +-----------+---------+-----------------------------------------------------------------+
+    | client-id | integer | client id. if type is ``primary`` this member does not exist.   |
+    +-----------+---------+-----------------------------------------------------------------+
+
+Response example
+^^^^^^^^^^^^^^^^
+
+.. code-block:: json
+
+    [
+      {
+        "type": "primary"
+      },
+      {
+        "type": "vf",
+        "client-id": 1
+      },
+      {
+        "type": "nfv",
+        "client-id": 2
+      }
+    ]
+
+
+API for spp_primary
+-------------------
+
+GET /v1/primary/status
+~~~~~~~~~~~~~~~~~~~~~~
+
+Show statistical information.
+
+* Normal response codes: 200
+
+Request example
+^^^^^^^^^^^^^^^
+
+.. code-block:: console
+
+    curl -X GET -H 'application/json' \
+    http://127.0.0.1:7777/v1/primary/status
+
+Response
+^^^^^^^^
+
+.. _table_spp_ctl_primary_status:
+
+.. table:: Response params of primary status.
+
+    +------------+-------+-------------------------------------------+
+    | Name       | Type  | Description                               |
+    |            |       |                                           |
+    +============+=======+===========================================+
+    | phy_ports  | array | An array of statistics of physical ports. |
+    +------------+-------+-------------------------------------------+
+    | ring_ports | array | An array of statistics of ring ports.     |
+    +------------+-------+-------------------------------------------+
+
+Physical port object.
+
+.. _table_spp_ctl_primary_status_phy:
+
+.. table:: Attributes of physical port of primary status.
+
+    +---------+---------+-----------------------------------------------------+
+    | Name    | Type    | Description                                         |
+    |         |         |                                                     |
+    +=========+=========+=====================================================+
+    | id      | integer | Port ID of the physical port.                       |
+    +---------+---------+-----------------------------------------------------+
+    | rx      | integer | The total number of received packets.               |
+    +---------+---------+-----------------------------------------------------+
+    | tx      | integer | The total number of transferred packets.            |
+    +---------+---------+-----------------------------------------------------+
+    | tx_drop | integer | The total number of dropped packets of transferred. |
+    +---------+---------+-----------------------------------------------------+
+    | eth     | string  | MAC address of the port.                            |
+    +---------+---------+-----------------------------------------------------+
+
+Ring port object.
+
+.. _table_spp_ctl_primary_status_ring:
+
+.. table:: Attributes of ring port of primary status.
+
+    +---------+---------+-----------------------------------------------------+
+    | Name    | Type    | Description                                         |
+    |         |         |                                                     |
+    +=========+=========+=====================================================+
+    | id      | integer | Port ID of the ring port.                           |
+    +---------+---------+-----------------------------------------------------+
+    | rx      | integer | The total number of received packets.               |
+    +---------+---------+-----------------------------------------------------+
+    | rx_drop | integer | The total number of dropped packets of received.    |
+    +---------+---------+-----------------------------------------------------+
+    | tx      | integer | The total number of transferred packets.            |
+    +---------+---------+-----------------------------------------------------+
+    | tx_drop | integer | The total number of dropped packets of transferred. |
+    +---------+---------+-----------------------------------------------------+
+
+Response example
+^^^^^^^^^^^^^^^^
+
+.. code-block:: json
+
+    {
+      "phy_ports": [
+        {
+          "id": 0,
+          "rx": 0,
+          "tx": 0,
+          "tx_drop": 0,
+          "eth": "56:48:4f:53:54:00"
+        },
+        {
+          "id": 1,
+          "rx": 0,
+          "tx": 0,
+          "tx_drop": 0,
+          "eth": "56:48:4f:53:54:01"
+        }
+      ],
+      "ring_ports": [
+        {
+          "id": 0,
+          "rx": 0,
+          "rx_drop": 0,
+          "tx": 0,
+          "tx_drop": 0
+        },
+        {
+          "id": 1,
+          "rx": 0,
+          "rx_drop": 0,
+          "tx": 0,
+          "tx_drop": 0
+        },
+        {
+          "id": 2,
+          "rx": 0,
+          "rx_drop": 0,
+          "tx": 0,
+          "tx_drop": 0
+        },
+        {
+          "id": 3,
+          "rx": 0,
+          "rx_drop": 0,
+          "tx": 0,
+          "tx_drop": 0
+        }
+      ]
+    }
+
+
+DELETE /v1/primary/status
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Clear statistical information.
+
+* Normal response codes: 204
+
+Request example
+^^^^^^^^^^^^^^^
+
+.. code-block:: console
+
+    curl -X DELETE -H 'application/json' \
+    http://127.0.0.1:7777/v1/primary/status
+
+Response
+^^^^^^^^
+
+There is no body content for the response of a successful ``DELETE`` request.
+
+DELETE /v1/primary
+~~~~~~~~~~~~~~~~~~
+
+Terminate primary process.
+
+* Normal response codes: 204
+
+Request example
+^^^^^^^^^^^^^^^
+
+.. code-block:: console
+
+    curl -X DELETE -H 'application/json' \
+    http://127.0.0.1:7777/v1/primary
+
+Response
+^^^^^^^^
+
+There is no body content for the response of a successful ``DELETE`` request.
+
+
+API for spp_nfv/spp_vm
+----------------------
+
+GET /v1/nfvs/{client_id}
+~~~~~~~~~~~~~~~~~~~~~~~~
+
+Get the information of the ``spp_nfv`` or ``spp_vm`` process.
+
+* Normal response codes: 200
+* Error response codes: 400, 404
+
+Request(path)
+^^^^^^^^^^^^^
+
+.. _table_spp_ctl_nfvs_get:
+
+.. table:: Request parameter for getting spp_nfv or spp_vm info.
+
+    +-----------+---------+-------------------------------------+
+    | Name      | Type    | Description                         |
+    |           |         |                                     |
+    +===========+=========+=====================================+
+    | client_id | integer | client id.                          |
+    +-----------+---------+-------------------------------------+
+
+Request example
+^^^^^^^^^^^^^^^
+
+.. code-block:: console
+
+    curl -X GET -H 'application/json' \
+    http://127.0.0.1:7777/v1/nfvs/1
+
+Response
+^^^^^^^^
+
+.. _table_spp_ctl_spp_nfv_res:
+
+.. table:: Response params of getting spp_nfv or spp_vm info.
+
+    +-----------+---------+---------------------------------------------+
+    | Name      | Type    | Description                                 |
+    |           |         |                                             |
+    +===========+=========+=============================================+
+    | client-id | integer | client id.                                  |
+    +-----------+---------+---------------------------------------------+
+    | status    | string  | ``Running`` or ``Idle``.                    |
+    +-----------+---------+---------------------------------------------+
+    | ports     | array   | an array of port ids used by the process.   |
+    +-----------+---------+---------------------------------------------+
+    | patches   | array   | an array of patches.                        |
+    +-----------+---------+---------------------------------------------+
+
+patch objest
+
+.. _table_spp_ctl_patch_spp_nfv:
+
+.. table:: Attributes of patch of spp_nfv or spp_vm.
+
+    +------+--------+----------------------------------------------+
+    | Name | Type   | Description                                  |
+    |      |        |                                              |
+    +======+========+==============================================+
+    | src  | string | source port id.                              |
+    +------+--------+----------------------------------------------+
+    | dst  | string | destination port id.                         |
+    +------+--------+----------------------------------------------+
+
+Response example
+^^^^^^^^^^^^^^^^
+
+.. code-block:: json
+
+    {
+      "client-id": 1,
+      "status": "Running",
+      "ports": [
+        "phy:0", "phy:1", "vhost:0", "vhost:1", "ring:0", "ring:1", "ring:2", "ring:3"
+      ],
+      "patches": [
+        {
+          "src": "vhost:0", "dst": "ring:0"
+        },
+        {
+          "src": "ring:1", "dst": "vhost:1"
+        }
+      ]
+    }
+
+Equivalent CLI command
+^^^^^^^^^^^^^^^^^^^^^^
+
+.. code-block:: none
+
+    sec {client_id};status
+
+
+PUT /v1/nfvs/{client_id}/forward
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Start or Stop forwarding.
+
+* Normal response codes: 204
+* Error response codes: 400, 404
+
+Request(path)
+^^^^^^^^^^^^^
+
+.. _table_spp_ctl_spp_nfv_forward_get:
+
+.. table:: Request params of forward of spp_nfv or spp_vm.
+
+    +-----------+---------+---------------------------------+
+    | Name      | Type    | Description                     |
+    |           |         |                                 |
+    +===========+=========+=================================+
+    | client_id | integer | client id.                      |
+    +-----------+---------+---------------------------------+
+
+Request example
+^^^^^^^^^^^^^^^
+
+.. code-block:: console
+
+    curl -X PUT -H 'application/json' \
+    -d '{"action": "start"}' \
+    http://127.0.0.1:7777/v1/nfvs/1/forward
+
+Request(body)
+^^^^^^^^^^^^^
+
+.. _table_spp_ctl_spp_nfv_forward_get_body:
+
+.. table:: Request body params of forward of spp_nfv or spp_vm.
+
+    +--------+--------+-------------------------------------+
+    | Name   | Type   | Description                         |
+    |        |        |                                     |
+    +========+========+=====================================+
+    | action | string | ``start`` or ``stop``.              |
+    +--------+--------+-------------------------------------+
+
+Response
+^^^^^^^^
+
+There is no body content for the response of a successful ``PUT`` request.
+
+Equivalent CLI command
+^^^^^^^^^^^^^^^^^^^^^^
+
+action is ``start``
+
+.. code-block:: none
+
+    sec {client_id};forward
+
+action is ``stop``
+
+.. code-block:: none
+
+    sec {client_id};stop
+
+
+PUT /v1/nfvs/{client_id}/ports
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Add or Delete port.
+
+* Normal response codes: 204
+* Error response codes: 400, 404
+
+Request(path)
+^^^^^^^^^^^^^
+
+.. _table_spp_ctl_spp_nfv_ports_get:
+
+.. table:: Request params of ports of spp_nfv or spp_vm.
+
+    +-----------+---------+--------------------------------+
+    | Name      | Type    | Description                    |
+    |           |         |                                |
+    +===========+=========+================================+
+    | client_id | integer | client id.                     |
+    +-----------+---------+--------------------------------+
+
+Request(body)
+^^^^^^^^^^^^^
+
+.. _table_spp_ctl_spp_nfv_ports_get_body:
+
+.. table:: Request body params of ports of spp_nfv or spp_vm.
+
+    +--------+--------+---------------------------------------------------------------+
+    | Name   | Type   | Description                                                   |
+    |        |        |                                                               |
+    +========+========+===============================================================+
+    | action | string | ``add`` or ``del``.                                           |
+    +--------+--------+---------------------------------------------------------------+
+    | port   | string | port id. port id is the form {interface_type}:{interface_id}. |
+    +--------+--------+---------------------------------------------------------------+
+
+Request example
+^^^^^^^^^^^^^^^
+
+.. code-block:: console
+
+    curl -X PUT -H 'application/json' \
+    -d '{"action": "add", "port": "ring:0"}' \
+    http://127.0.0.1:7777/v1/nfvs/1/ports
+
+Response
+^^^^^^^^
+
+There is no body content for the response of a successful ``PUT`` request.
+
+Equivalent CLI command
+^^^^^^^^^^^^^^^^^^^^^^
+
+.. code-block:: none
+
+    sec {client_id};{action} {interface_type} {interface_id}
+
+
+PUT /v1/nfvs/{client_id}/patches
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Add a patch.
+
+* Normal response codes: 204
+* Error response codes: 400, 404
+
+Request(path)
+^^^^^^^^^^^^^
+
+.. _table_spp_ctl_spp_nfv_patches_get:
+
+.. table:: Request params of patches of spp_nfv or spp_vm.
+
+    +-----------+---------+---------------------------------+
+    | Name      | Type    | Description                     |
+    |           |         |                                 |
+    +===========+=========+=================================+
+    | client_id | integer | client id.                      |
+    +-----------+---------+---------------------------------+
+
+Request(body)
+^^^^^^^^^^^^^
+
+.. _table_spp_ctl_spp_nfv_ports_patches_body:
+
+.. table:: Request body params of patches of spp_nfv or spp_vm.
+
+    +------+--------+------------------------------------+
+    | Name | Type   | Description                        |
+    |      |        |                                    |
+    +======+========+====================================+
+    | src  | string | source port id.                    |
+    +------+--------+------------------------------------+
+    | dst  | string | destination port id.               |
+    +------+--------+------------------------------------+
+
+Request example
+^^^^^^^^^^^^^^^
+
+.. code-block:: console
+
+    curl -X PUT -H 'application/json' \
+    -d '{"src": "ring:0", "dst": "ring:1"}' \
+    http://127.0.0.1:7777/v1/nfvs/1/patches
+
+Response
+^^^^^^^^
+
+There is no body content for the response of a successful ``PUT`` request.
+
+Equivalent CLI command
+^^^^^^^^^^^^^^^^^^^^^^
+
+.. code-block:: none
+
+    sec {client_id};patch {src} {dst}
+
+
+DELETE /v1/nfvs/{client_id}/patches
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Reset patches.
+
+* Normal response codes: 204
+* Error response codes: 400, 404
+
+Request(path)
+^^^^^^^^^^^^^
+
+.. _table_spp_ctl_spp_nfv_del_patches:
+
+.. table:: Request params of deleting patches of spp_nfv or spp_vm.
+
+    +-----------+---------+---------------------------------------+
+    | Name      | Type    | Description                           |
+    |           |         |                                       |
+    +===========+=========+=======================================+
+    | client_id | integer | client id.                            |
+    +-----------+---------+---------------------------------------+
+
+Request example
+^^^^^^^^^^^^^^^
+
+.. code-block:: console
+
+    curl -X DELETE -H 'application/json' \
+    http://127.0.0.1:7777/v1/nfvs/1/patches
+
+Response
+^^^^^^^^
+
+There is no body content for the response of a successful ``DELETE`` request.
+
+Equivalent CLI command
+^^^^^^^^^^^^^^^^^^^^^^
+
+.. code-block:: none
+
+    sec {client_id};patch reset
+
+
+DELETE /v1/nfvs/{client_id}
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Terminate ``spp_nfv`` or ``spp_vm`` process.
+
+* Normal response codes: 204
+* Error response codes: 400, 404
+
+Request(path)
+^^^^^^^^^^^^^
+
+.. _table_spp_ctl_nfvs_delete:
+
+.. table:: Request parameter for terminating spp_nfv or spp_vm.
+
+    +-----------+---------+-------------------------------------+
+    | Name      | Type    | Description                         |
+    |           |         |                                     |
+    +===========+=========+=====================================+
+    | client_id | integer | client id.                          |
+    +-----------+---------+-------------------------------------+
+
+Request example
+^^^^^^^^^^^^^^^
+
+.. code-block:: console
+
+    curl -X DELETE -H 'application/json' \
+    http://127.0.0.1:7777/v1/nfvs/1
+
+Response example
+^^^^^^^^^^^^^^^^
+
+There is no body content for the response of a successful ``DELETE`` request.
+
+Equivalent CLI command
+^^^^^^^^^^^^^^^^^^^^^^
+
+.. code-block:: none
+
+    sec {client_id}; exit
+
+
+API for spp_vf
+--------------
+
+GET /v1/vfs/{client_id}
+~~~~~~~~~~~~~~~~~~~~~~~
+
+Get the information of the ``spp_vf`` process.
+
+* Normal response codes: 200
+* Error response codes: 400, 404
+
+Request(path)
+^^^^^^^^^^^^^
+
+.. _table_spp_ctl_vfs_get:
+
+.. table:: Request parameter for getting spp_vf.
+
+    +-----------+---------+--------------------------+
+    | Name      | Type    | Description              |
+    |           |         |                          |
+    +===========+=========+==========================+
+    | client_id | integer | client id.               |
+    +-----------+---------+--------------------------+
+
+Request example
+^^^^^^^^^^^^^^^
+
+.. code-block:: console
+
+    curl -X GET -H 'application/json' \
+    http://127.0.0.1:7777/v1/vfs/1
+
+Response
+^^^^^^^^
+
+.. _table_spp_ctl_spp_vf_res:
+
+.. table:: Response params of getting spp_vf.
+
+    +------------------+---------+-----------------------------------------------+
+    | Name             | Type    | Description                                   |
+    |                  |         |                                               |
+    +==================+=========+===============================================+
+    | client-id        | integer | client id.                                    |
+    +------------------+---------+-----------------------------------------------+
+    | ports            | array   | an array of port ids used by the process.     |
+    +------------------+---------+-----------------------------------------------+
+    | components       | array   | an array of component objects in the process. |
+    +------------------+---------+-----------------------------------------------+
+    | classifier_table | array   | an array of classifier tables in the process. |
+    +------------------+---------+-----------------------------------------------+
+
+component object:
+
+.. _table_spp_ctl_spp_vf_res_comp:
+
+.. table:: Component objects of getting spp_vf.
+
+    +---------+---------+---------------------------------------------------------------------+
+    | Name    | Type    | Description                                                         |
+    |         |         |                                                                     |
+    +=========+=========+=====================================================================+
+    | core    | integer | core id running on the component                                    |
+    +---------+---------+---------------------------------------------------------------------+
+    | name    | string  | an array of port ids used by the process.                           |
+    +---------+---------+---------------------------------------------------------------------+
+    | type    | string  | an array of component objects in the process.                       |
+    +---------+---------+---------------------------------------------------------------------+
+    | rx_port | array   | an array of port objects connected to the rx side of the component. |
+    +---------+---------+---------------------------------------------------------------------+
+    | tx_port | array   | an array of port objects connected to the tx side of the component. |
+    +---------+---------+---------------------------------------------------------------------+
+
+port object:
+
+.. _table_spp_ctl_spp_vf_res_port:
+
+.. table:: Port objects of getting spp_vf.
+
+    +---------+---------+---------------------------------------------------------------+
+    | Name    | Type    | Description                                                   |
+    |         |         |                                                               |
+    +=========+=========+===============================================================+
+    | port    | string  | port id. port id is the form {interface_type}:{interface_id}. |
+    +---------+---------+---------------------------------------------------------------+
+    | vlan    | object  | vlan operation which is applied to the port.                  |
+    +---------+---------+---------------------------------------------------------------+
+
+vlan object:
+
+.. _table_spp_ctl_spp_vf_res_vlan:
+
+.. table:: Vlan objects of getting spp_vf.
+
+    +-----------+---------+-------------------------------+
+    | Name      | Type    | Description                   |
+    |           |         |                               |
+    +===========+=========+===============================+
+    | operation | string  | ``add``, ``del`` or ``none``. |
+    +-----------+---------+-------------------------------+
+    | id        | integer | vlan id.                      |
+    +-----------+---------+-------------------------------+
+    | pcp       | integer | vlan pcp.                     |
+    +-----------+---------+-------------------------------+
+
+classifier table:
+
+.. _table_spp_ctl_spp_vf_res_cls:
+
+.. table:: Vlan objects of getting spp_vf.
+
+    +-----------+--------+------------------------------------------------------------+
+    | Name      | Type   | Description                                                |
+    |           |        |                                                            |
+    +===========+========+============================================================+
+    | type      | string | ``mac`` or ``vlan``.                                       |
+    +-----------+--------+------------------------------------------------------------+
+    | value     | string | mac_address for ``mac``, vlan_id/mac_address for ``vlan``. |
+    +-----------+--------+------------------------------------------------------------+
+    | port      | string | port id applied to classify.                               |
+    +-----------+--------+------------------------------------------------------------+
+
+Response example
+^^^^^^^^^^^^^^^^
+
+.. code-block:: json
+
+    {
+      "client-id": 1,
+      "ports": [
+        "phy:0", "phy:1", "vhost:0", "vhost:1", "ring:0", "ring:1", "ring:2", "ring:3"
+      ],
+      "components": [
+        {
+          "core": 2,
+          "name": "forward_0_tx",
+          "type": "forward",
+          "rx_port": [
+            {
+            "port": "ring:0",
+            "vlan": { "operation": "none", "id": 0, "pcp": 0 }
+            }
+          ],
+          "tx_port": [
+            {
+              "port": "vhost:0",
+              "vlan": { "operation": "none", "id": 0, "pcp": 0 }
+            }
+          ]
+        },
+        {
+          "core": 3,
+          "type": "unuse"
+        },
+        {
+          "core": 4,
+          "type": "unuse"
+        },
+        {
+          "core": 5,
+          "name": "forward_1_rx",
+          "type": "forward",
+          "rx_port": [
+            {
+            "port": "vhost:1",
+            "vlan": { "operation": "none", "id": 0, "pcp": 0 }
+            }
+          ],
+          "tx_port": [
+            {
+              "port": "ring:3",
+              "vlan": { "operation": "none", "id": 0, "pcp": 0 }
+            }
+          ]
+        },
+        {
+          "core": 6,
+          "name": "classifier",
+          "type": "classifier_mac",
+          "rx_port": [
+            {
+              "port": "phy:0",
+              "vlan": { "operation": "none", "id": 0, "pcp": 0 }
+            }
+          ],
+          "tx_port": [
+            {
+              "port": "ring:0",
+              "vlan": { "operation": "none", "id": 0, "pcp": 0 }
+            },
+            {
+              "port": "ring:2",
+              "vlan": { "operation": "none", "id": 0, "pcp": 0 }
+            }
+          ]
+        },
+        {
+          "core": 7,
+          "name": "merger",
+          "type": "merge",
+          "rx_port": [
+            {
+              "port": "ring:1",
+              "vlan": { "operation": "none", "id": 0, "pcp": 0 }
+            },
+            {
+              "port": "ring:3",
+              "vlan": { "operation": "none", "id": 0, "pcp": 0 }
+            }
+          ],
+          "tx_port": [
+            {
+              "port": "phy:0",
+              "vlan": { "operation": "none", "id": 0, "pcp": 0 }
+            }
+          ]
+        },
+      ],
+      "classifier_table": [
+        {
+          "type": "mac",
+          "value": "FA:16:3E:7D:CC:35",
+          "port": "ring:0"
+        }
+      ]
+    }
+
+The component which type is ``unused`` is to indicate unused core.
+
+Equivalent CLI command
+^^^^^^^^^^^^^^^^^^^^^^
+
+.. code-block:: none
+
+    sec {client_id};status
+
+
+POST /v1/vfs/{client_id}/components
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Start the component.
+
+* Normal response codes: 204
+* Error response codes: 400, 404
+
+Request(path)
+^^^^^^^^^^^^^
+
+.. _table_spp_ctl_spp_vf_components:
+
+.. table:: Request params of components of spp_vf.
+
+    +-----------+---------+-------------+
+    | Name      | Type    | Description |
+    +===========+=========+=============+
+    | client_id | integer | client id.  |
+    +-----------+---------+-------------+
+
+
+Request(body)
+^^^^^^^^^^^^^
+
+.. _table_spp_ctl_spp_vf_components_res:
+
+.. table:: Response params of components of spp_vf.
+
+    +-----------+---------+----------------------------------------------------------------------+
+    | Name      | Type    | Description                                                          |
+    |           |         |                                                                      |
+    +===========+=========+======================================================================+
+    | name      | string  | component name. must be unique in the process.                       |
+    +-----------+---------+----------------------------------------------------------------------+
+    | core      | integer | core id.                                                             |
+    +-----------+---------+----------------------------------------------------------------------+
+    | type      | string  | component type. one of ``forward``, ``merge`` or ``classifier_mac``. |
+    +-----------+---------+----------------------------------------------------------------------+
+
+Request example
+^^^^^^^^^^^^^^^
+
+.. code-block:: console
+
+    curl -X POST -H 'application/json' \
+    -d '{"name": "forwarder1", "core": 12, "type": "forward"}' \
+    http://127.0.0.1:7777/v1/vfs/1/components
+
+Response
+^^^^^^^^
+
+There is no body content for the response of a successful ``POST`` request.
+
+Equivalent CLI command
+^^^^^^^^^^^^^^^^^^^^^^
+
+.. code-block:: none
+
+    sec {client_id};component start {name} {core} {type}
+
+
+DELETE /v1/vfs/{sec id}/components/{name}
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Stop the component.
+
+* Normal response codes: 204
+* Error response codes: 400, 404
+
+Request(path)
+^^^^^^^^^^^^^
+
+.. _table_spp_ctl_spp_vf_del:
+
+.. table:: Request params of deleting component of spp_vf.
+
+    +-----------+---------+---------------------------------+
+    | Name      | Type    | Description                     |
+    |           |         |                                 |
+    +===========+=========+=================================+
+    | client_id | integer | client id.                      |
+    +-----------+---------+---------------------------------+
+    | name      | string  | component name.                 |
+    +-----------+---------+---------------------------------+
+
+Request example
+^^^^^^^^^^^^^^^
+
+.. code-block:: console
+
+    curl -X DELETE -H 'application/json' \
+    http://127.0.0.1:7777/v1/vfs/1/components/forwarder1
+
+Response
+^^^^^^^^
+
+There is no body content for the response of a successful ``POST`` request.
+
+Equivalent CLI command
+^^^^^^^^^^^^^^^^^^^^^^
+
+.. code-block:: none
+
+    sec {client_id};component stop {name}
+
+
+PUT /v1/vfs/{client_id}/components/{name}/ports
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Add or Delete port to the component.
+
+* Normal response codes: 204
+* Error response codes: 400, 404
+
+Request(path)
+^^^^^^^^^^^^^
+
+.. _table_spp_ctl_spp_vf_comp_port:
+
+.. table:: Request params for ports of component of spp_vf.
+
+    +-----------+---------+---------------------------+
+    | Name      | Type    | Description               |
+    |           |         |                           |
+    +===========+=========+===========================+
+    | client_id | integer | client id.                |
+    +-----------+---------+---------------------------+
+    | name      | string  | component name.           |
+    +-----------+---------+---------------------------+
+
+Request(body)
+^^^^^^^^^^^^^
+
+.. _table_spp_ctl_spp_vf_comp_port_body:
+
+.. table:: Request body params for ports of component of spp_vf.
+
+    +---------+---------+-----------------------------------------------------------------+
+    | Name    | Type    | Description                                                     |
+    |         |         |                                                                 |
+    +=========+=========+=================================================================+
+    | action  | string  | ``attach`` or ``detach``.                                       |
+    +---------+---------+-----------------------------------------------------------------+
+    | port    | string  | port id. port id is the form {interface_type}:{interface_id}.   |
+    +---------+---------+-----------------------------------------------------------------+
+    | dir     | string  | ``rx`` or ``tx``.                                               |
+    +---------+---------+-----------------------------------------------------------------+
+    | vlan    | object  | vlan operation which is applied to the port. it can be omitted. |
+    +---------+---------+-----------------------------------------------------------------+
+
+vlan object:
+
+.. _table_spp_ctl_spp_vf_comp_port_body_vlan:
+
+.. table:: Request body params for vlan ports of component of spp_vf.
+
+    +-----------+---------+----------------------------------------------------------+
+    | Name      | Type    | Description                                              |
+    |           |         |                                                          |
+    +===========+=========+==========================================================+
+    | operation | string  | ``add``, ``del`` or ``none``.                            |
+    +-----------+---------+----------------------------------------------------------+
+    | id        | integer | vlan id. ignored when operation is ``del`` or ``none``.  |
+    +-----------+---------+----------------------------------------------------------+
+    | pcp       | integer | vlan pcp. ignored when operation is ``del`` or ``none``. |
+    +-----------+---------+----------------------------------------------------------+
+
+Request example
+^^^^^^^^^^^^^^^
+
+.. code-block:: console
+
+    curl -X PUT -H 'application/json' \
+    -d '{"action": "attach", "port": "vhost:1", "dir": "rx", \
+         "vlan": {"operation": "add", "id": 677, "pcp": 0}}' \
+    http://127.0.0.1:7777/v1/vfs/1/components/forwarder1/ports
+
+.. code-block:: console
+
+    curl -X PUT -H 'application/json' \
+    -d '{"action": "detach", "port": "vhost:0", "dir": "tx"} \
+    http://127.0.0.1:7777/v1/vfs/1/components/forwarder1/ports
+
+Response
+^^^^^^^^
+
+There is no body content for the response of a successful ``PUT`` request.
+
+Equivalent CLI command
+^^^^^^^^^^^^^^^^^^^^^^
+
+action is ``attach``
+
+.. code-block:: none
+
+    sec {client_id};port add {port} {dir} {name} [add_vlantag {id} {pcp} | del_vlantag]
+
+action is ``detach``
+
+.. code-block:: none
+
+    sec {client_id};port del {port} {dir} {name}
+
+
+PUT /v1/vfs/{sec id}/classifier_table
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Set or Unset classifier table.
+
+* Normal response codes: 204
+* Error response codes: 400, 404
+
+Request(path)
+^^^^^^^^^^^^^
+
+.. _table_spp_ctl_spp_vf_cls_table:
+
+.. table:: Request params for classifier_table of spp_vf.
+
+    +-----------+---------+---------------------------+
+    | Name      | Type    | Description               |
+    |           |         |                           |
+    +===========+=========+===========================+
+    | client_id | integer | client id.                |
+    +-----------+---------+---------------------------+
+
+Request(body)
+^^^^^^^^^^^^^
+
+.. _table_spp_ctl_spp_vf_cls_table_body:
+
+.. table:: Request body params for classifier_table of spp_vf.
+
+    +-------------+-----------------+----------------------------------------------------+
+    | Name        | Type            | Description                                        |
+    |             |                 |                                                    |
+    +=============+=================+====================================================+
+    | action      | string          | ``add`` or ``del``.                                |
+    +-------------+-----------------+----------------------------------------------------+
+    | type        | string          | ``mac`` or ``vlan``.                               |
+    +-------------+-----------------+----------------------------------------------------+
+    | vlan        | integer or null | vlan id for ``vlan``. null or omitted for ``mac``. |
+    +-------------+-----------------+----------------------------------------------------+
+    | mac_address | string          | mac address.                                       |
+    +-------------+-----------------+----------------------------------------------------+
+    | port        | string          | port id.                                           |
+    +-------------+-----------------+----------------------------------------------------+
+
+Request example
+^^^^^^^^^^^^^^^
+
+.. code-block:: console
+
+    curl -X PUT -H 'application/json' \
+    -d '{"action": "add", "type": "mac", "mac_address": "FA:16:3E:7D:CC:35", \
+       "port": "ring:0"}' \
+    http://127.0.0.1:7777/v1/vfs/1/classifier_table
+
+.. code-block:: console
+
+    curl -X PUT -H 'application/json' \
+    -d '{"action": "del", "type": "vlan", "vlan": 475, \
+       "mac_address": "FA:16:3E:7D:CC:35", "port": "ring:0"}' \
+    http://127.0.0.1:7777/v1/vfs/1/classifier_table
+
+Response
+^^^^^^^^
+
+There is no body content for the response of a successful ``PUT`` request.
+
+Equivalent CLI command
+^^^^^^^^^^^^^^^^^^^^^^
+
+type is ``mac``
+
+.. code-block:: none
+
+    classifier_table {action} mac {mac_address} {port}
+
+type is ``vlan``
+
+.. code-block:: none
+
+    classifier_table {action} vlan {vlan} {mac_address} {port}
+
+
+API for spp_mirror
+------------------
+
+GET /v1/mirrors/{client_id}
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Get the information of the ``spp_mirror`` process.
+
+* Normal response codes: 200
+* Error response codes: 400, 404
+
+Request(path)
+^^^^^^^^^^^^^
+
+.. _table_spp_ctl_mirrors_get:
+
+.. table:: Request parameter for getting spp_mirror.
+
+    +-----------+---------+--------------------------+
+    | Name      | Type    | Description              |
+    |           |         |                          |
+    +===========+=========+==========================+
+    | client_id | integer | client id.               |
+    +-----------+---------+--------------------------+
+
+Request example
+^^^^^^^^^^^^^^^
+
+.. code-block:: console
+
+    curl -X GET -H 'application/json' \
+    http://127.0.0.1:7777/v1/mirrors/1
+
+Response
+^^^^^^^^
+
+.. _table_spp_ctl_spp_mirror_res:
+
+.. table:: Response params of getting spp_mirror.
+
+    +------------------+---------+-----------------------------------------------+
+    | Name             | Type    | Description                                   |
+    |                  |         |                                               |
+    +==================+=========+===============================================+
+    | client-id        | integer | client id.                                    |
+    +------------------+---------+-----------------------------------------------+
+    | ports            | array   | an array of port ids used by the process.     |
+    +------------------+---------+-----------------------------------------------+
+    | components       | array   | an array of component objects in the process. |
+    +------------------+---------+-----------------------------------------------+
+
+component object:
+
+.. _table_spp_ctl_spp_mirror_res_comp:
+
+.. table:: Component objects of getting spp_mirror.
+
+    +---------+---------+---------------------------------------------------------------------+
+    | Name    | Type    | Description                                                         |
+    |         |         |                                                                     |
+    +=========+=========+=====================================================================+
+    | core    | integer | core id running on the component                                    |
+    +---------+---------+---------------------------------------------------------------------+
+    | name    | string  | an array of port ids used by the process.                           |
+    +---------+---------+---------------------------------------------------------------------+
+    | type    | string  | an array of component objects in the process.                       |
+    +---------+---------+---------------------------------------------------------------------+
+    | rx_port | array   | an array of port objects connected to the rx side of the component. |
+    +---------+---------+---------------------------------------------------------------------+
+    | tx_port | array   | an array of port objects connected to the tx side of the component. |
+    +---------+---------+---------------------------------------------------------------------+
+
+port object:
+
+.. _table_spp_ctl_spp_mirror_res_port:
+
+.. table:: Port objects of getting spp_vf.
+
+    +---------+---------+---------------------------------------------------------------+
+    | Name    | Type    | Description                                                   |
+    |         |         |                                                               |
+    +=========+=========+===============================================================+
+    | port    | string  | port id. port id is the form {interface_type}:{interface_id}. |
+    +---------+---------+---------------------------------------------------------------+
+
+Response example
+^^^^^^^^^^^^^^^^
+
+.. code-block:: json
+
+    {
+      "client-id": 1,
+      "ports": [
+        "phy:0", "phy:1", "ring:0", "ring:1", "ring:2"
+      ],
+      "components": [
+        {
+          "core": 2,
+          "name": "mirror_0",
+          "type": "mirror",
+          "rx_port": [
+            {
+            "port": "ring:0"
+            }
+          ],
+          "tx_port": [
+            {
+              "port": "ring:1"
+            },
+            {
+              "port": "ring:2"
+            }
+          ]
+        },
+        {
+          "core": 3,
+          "type": "unuse"
+        }
+      ]
+    }
+
+The component which type is ``unused`` is to indicate unused core.
+
+Equivalent CLI command
+^^^^^^^^^^^^^^^^^^^^^^
+
+.. code-block:: none
+
+    sec {client_id};status
+
+
+POST /v1/mirrors/{client_id}/components
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Start the component.
+
+* Normal response codes: 204
+* Error response codes: 400, 404
+
+Request(path)
+^^^^^^^^^^^^^
+
+.. _table_spp_ctl_spp_mirror_components:
+
+.. table:: Request params of components of spp_mirror.
+
+    +-----------+---------+-------------+
+    | Name      | Type    | Description |
+    +===========+=========+=============+
+    | client_id | integer | client id.  |
+    +-----------+---------+-------------+
+
+
+Request(body)
+^^^^^^^^^^^^^
+
+.. _table_spp_ctl_spp_mirror_components_res:
+
+.. table:: Response params of components of spp_mirror.
+
+    +-----------+---------+----------------------------------------------------------------------+
+    | Name      | Type    | Description                                                          |
+    |           |         |                                                                      |
+    +===========+=========+======================================================================+
+    | name      | string  | component name. must be unique in the process.                       |
+    +-----------+---------+----------------------------------------------------------------------+
+    | core      | integer | core id.                                                             |
+    +-----------+---------+----------------------------------------------------------------------+
+    | type      | string  | component type. only ``mirror`` is available.                        |
+    +-----------+---------+----------------------------------------------------------------------+
+
+Request example
+^^^^^^^^^^^^^^^
+
+.. code-block:: console
+
+    curl -X POST -H 'application/json' \
+    -d '{"name": "mirror_1", "core": 12, "type": "mirror"}' \
+    http://127.0.0.1:7777/v1/mirrors/1/components
+
+Response
+^^^^^^^^
+
+There is no body content for the response of a successful ``POST`` request.
+
+Equivalent CLI command
+^^^^^^^^^^^^^^^^^^^^^^
+
+.. code-block:: none
+
+    sec {client_id};component start {name} {core} {type}
+
+
+DELETE /v1/mirrors/{client_id}/components/{name}
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Stop the component.
+
+* Normal response codes: 204
+* Error response codes: 400, 404
+
+Request(path)
+^^^^^^^^^^^^^
+
+.. _table_spp_ctl_spp_mirror_del:
+
+.. table:: Request params of deleting component of spp_mirror.
+
+    +-----------+---------+---------------------------------+
+    | Name      | Type    | Description                     |
+    |           |         |                                 |
+    +===========+=========+=================================+
+    | client_id | integer | client id.                      |
+    +-----------+---------+---------------------------------+
+    | name      | string  | component name.                 |
+    +-----------+---------+---------------------------------+
+
+Request example
+^^^^^^^^^^^^^^^
+
+.. code-block:: console
+
+    curl -X DELETE -H 'application/json' \
+    http://127.0.0.1:7777/v1/mirrors/1/components/mirror_1
+
+Response
+^^^^^^^^
+
+There is no body content for the response of a successful ``POST`` request.
+
+Equivalent CLI command
+^^^^^^^^^^^^^^^^^^^^^^
+
+.. code-block:: none
+
+    sec {client_id};component stop {name}
+
+
+PUT /v1/mirrors/{client_id}/components/{name}/ports
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Add or Delete port to the component.
+
+* Normal response codes: 204
+* Error response codes: 400, 404
+
+Request(path)
+^^^^^^^^^^^^^
+
+.. _table_spp_ctl_spp_mirror_comp_port:
+
+.. table:: Request params for ports of component of spp_mirror.
+
+    +-----------+---------+---------------------------+
+    | Name      | Type    | Description               |
+    |           |         |                           |
+    +===========+=========+===========================+
+    | client_id | integer | client id.                |
+    +-----------+---------+---------------------------+
+    | name      | string  | component name.           |
+    +-----------+---------+---------------------------+
+
+Request(body)
+^^^^^^^^^^^^^
+
+.. _table_spp_ctl_spp_mirror_comp_port_body:
+
+.. table:: Request body params for ports of component of spp_mirror.
+
+    +---------+---------+-----------------------------------------------------------------+
+    | Name    | Type    | Description                                                     |
+    |         |         |                                                                 |
+    +=========+=========+=================================================================+
+    | action  | string  | ``attach`` or ``detach``.                                       |
+    +---------+---------+-----------------------------------------------------------------+
+    | port    | string  | port id. port id is the form {interface_type}:{interface_id}.   |
+    +---------+---------+-----------------------------------------------------------------+
+    | dir     | string  | ``rx`` or ``tx``.                                               |
+    +---------+---------+-----------------------------------------------------------------+
+
+Request example
+^^^^^^^^^^^^^^^
+
+.. code-block:: console
+
+    curl -X PUT -H 'application/json' \
+    -d '{"action": "attach", "port": "ring:1", "dir": "rx"}' \
+    http://127.0.0.1:7777/v1/mirrors/1/components/mirror_1/ports
+
+.. code-block:: console
+
+    curl -X PUT -H 'application/json' \
+    -d '{"action": "detach", "port": "ring:0", "dir": "tx"} \
+    http://127.0.0.1:7777/v1/mirrors/1/components/mirror_1/ports
+
+Response
+^^^^^^^^
+
+There is no body content for the response of a successful ``PUT`` request.
+
+Equivalent CLI command
+^^^^^^^^^^^^^^^^^^^^^^
+
+action is ``attach``
+
+.. code-block:: none
+
+    sec {client_id};port add {port} {dir} {name}
+
+action is ``detach``
+
+.. code-block:: none
+
+    sec {client_id};port del {port} {dir} {name}
+
+
+API for spp_pcap
+----------------
+
+GET /v1/pcaps/{client_id}
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Get the information of the ``spp_pcap`` process.
+
+* Normal response codes: 200
+* Error response codes: 400, 404
+
+Request(path)
+^^^^^^^^^^^^^
+
+.. _table_spp_ctl_pcap_get:
+
+.. table:: Request parameter for getting spp_pcap info.
+
+    +-----------+---------+-------------------------------------+
+    | Name      | Type    | Description                         |
+    |           |         |                                     |
+    +===========+=========+=====================================+
+    | client_id | integer | client id.                          |
+    +-----------+---------+-------------------------------------+
+
+Request example
+^^^^^^^^^^^^^^^
+
+.. code-block:: console
+
+    curl -X GET -H 'application/json' \
+    http://127.0.0.1:7777/v1/pcaps/1
+
+Response
+^^^^^^^^
+
+.. _table_spp_ctl_spp_pcap_res:
+
+.. table:: Response params of getting spp_pcap.
+
+    +------------------+---------+-----------------------------------------------+
+    | Name             | Type    | Description                                   |
+    |                  |         |                                               |
+    +==================+=========+===============================================+
+    | client-id        | integer | client id.                                    |
+    +------------------+---------+-----------------------------------------------+
+    | status           | string  | status of the process. "running" or "idle".   |
+    +------------------+---------+-----------------------------------------------+
+    | core             | array   | an array of core objects in the process.      |
+    +------------------+---------+-----------------------------------------------+
+
+core object:
+
+.. _table_spp_ctl_spp_pcap_res_core:
+
+.. table:: Core objects of getting spp_pcap.
+
+    +----------+---------+----------------------------------------------------------------------+
+    | Name     | Type    | Description                                                          |
+    |          |         |                                                                      |
+    +==========+=========+======================================================================+
+    | core     | integer | core id                                                              |
+    +----------+---------+----------------------------------------------------------------------+
+    | role     | string  | role of the task running on the core. "receive" or "write".          |
+    +----------+---------+----------------------------------------------------------------------+
+    | rx_port  | array   | an array of port object for caputure. This member exists if role is  |
+    |          |         | "recieve". Note that there is only a port object in the array.       |
+    +----------+---------+----------------------------------------------------------------------+
+    | filename | string  | a path name of output file. This member exists if role is "write".   |
+    +----------+---------+----------------------------------------------------------------------+
+
+Note that there is only a port object in the array
+
+port object:
+
+.. _table_spp_ctl_spp_pcap_res_port:
+
+.. table:: Port objects of getting spp_pcap.
+
+    +---------+---------+---------------------------------------------------------------+
+    | Name    | Type    | Description                                                   |
+    |         |         |                                                               |
+    +=========+=========+===============================================================+
+    | port    | string  | port id. port id is the form {interface_type}:{interface_id}. |
+    +---------+---------+---------------------------------------------------------------+
+
+Response example
+^^^^^^^^^^^^^^^^
+
+.. code-block:: json
+
+    {
+      "client-id": 1,
+      "status": "running",
+      "core": [
+        {
+          "core": 2,
+          "role": "receive",
+          "rx_port": [
+            {
+            "port": "phy:0"
+            }
+          ]
+        },
+        {
+          "core": 3,
+          "role": "write",
+          "filename": "/tmp/spp_pcap.20181108110600.ring0.1.2.pcap"
+        }
+      ]
+    }
+
+Equivalent CLI command
+^^^^^^^^^^^^^^^^^^^^^^
+
+.. code-block:: none
+
+    pcap {client_id}; status
+
+PUT /v1/pcaps/{client_id}/capture
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Start or Stop capturing.
+
+* Normal response codes: 204
+* Error response codes: 400, 404
+
+Request(path)
+^^^^^^^^^^^^^
+
+.. _table_spp_ctl_spp_pcap_capture:
+
+.. table:: Request params of capture of spp_pcap.
+
+    +-----------+---------+---------------------------------+
+    | Name      | Type    | Description                     |
+    |           |         |                                 |
+    +===========+=========+=================================+
+    | client_id | integer | client id.                      |
+    +-----------+---------+---------------------------------+
+
+Request(body)
+^^^^^^^^^^^^^
+
+.. _table_spp_ctl_spp_pcap_capture_body:
+
+.. table:: Request body params of capture of spp_pcap.
+
+    +--------+--------+-------------------------------------+
+    | Name   | Type   | Description                         |
+    |        |        |                                     |
+    +========+========+=====================================+
+    | action | string | ``start`` or ``stop``.              |
+    +--------+--------+-------------------------------------+
+
+Request example
+^^^^^^^^^^^^^^^
+
+.. code-block:: console
+
+    curl -X PUT -H 'application/json' \
+    -d '{"action": "start"}' \
+    http://127.0.0.1:7777/v1/pcaps/1/capture
+
+Response
+^^^^^^^^
+
+There is no body content for the response of a successful ``PUT`` request.
+
+Equivalent CLI command
+^^^^^^^^^^^^^^^^^^^^^^
+
+action is ``start``
+
+.. code-block:: none
+
+    pcap {client_id}; start
+
+action is ``stop``
+
+.. code-block:: none
+
+    pcap {client_id}; stop
+
+
+DELETE /v1/pcaps/{client_id}
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Terminate ``spp_pcap`` process.
+
+* Normal response codes: 204
+* Error response codes: 400, 404
+
+Request(path)
+^^^^^^^^^^^^^
+
+.. _table_spp_ctl_pcap_delete:
+
+.. table:: Request parameter for terminating spp_pcap.
+
+    +-----------+---------+-------------------------------------+
+    | Name      | Type    | Description                         |
+    |           |         |                                     |
+    +===========+=========+=====================================+
+    | client_id | integer | client id.                          |
+    +-----------+---------+-------------------------------------+
+
+Request example
+^^^^^^^^^^^^^^^
+
+.. code-block:: console
+
+    curl -X DELETE -H 'application/json' \
+    http://127.0.0.1:7777/v1/pcaps/1
+
+Response example
+^^^^^^^^^^^^^^^^
+
+There is no body content for the response of a successful ``DELETE`` request.
+
+Equivalent CLI command
+^^^^^^^^^^^^^^^^^^^^^^
+
+.. code-block:: none
+
+    pcap {client_id}; exit
diff --git a/docs/guides/design/spp_controller.rst b/docs/guides/design/spp_controller.rst
index 95a8c5b..208436e 100644
--- a/docs/guides/design/spp_controller.rst
+++ b/docs/guides/design/spp_controller.rst
@@ -21,11 +21,15 @@ can deploy high-performance NFV services on OpenStack
 `[1]
 <https://www.openstack.org/summit/vancouver-2018/summit-schedule/events/20826>`_.
 
+
 spp-ctl
 -------
 
 ``spp-ctl`` is designed for managing SPP from several controllers
 via REST-like APIs for users or other applications.
+It is implemented to be simple and it is stateless.
+Basically, it only converts a request into a command of SPP process and
+forward it to the process without any of syntax or lexical checking.
 
 There are several usecases where SPP is managed from other process without
 user inputs. For example, you need a intermediate process if you think of
@@ -48,6 +52,16 @@ The default port numbers are ``5555``, ``6666`` and ``7777``.
 
    Spp-ctl as a REST API server
 
+``spp-ctl`` accepts multiple requests at the same time and serializes them
+by using
+`bottle
+<https://bottlepy.org/docs/dev/>`_
+which is simple and well known as a web framework and
+`eventlet
+<http://eventlet.net/>`_
+for parallel processing.
+
+
 SPP CLI
 -------
 
diff --git a/docs/guides/index.rst b/docs/guides/index.rst
index 8a98755..d230081 100644
--- a/docs/guides/index.rst
+++ b/docs/guides/index.rst
@@ -15,7 +15,7 @@ SPP documentation
    commands/index
    tools/index
    spp_vf/index
-   spp-ctl/index
+   api_ref/index
 
 This documentation is the latest tagged version, but some of the latest
 developing features might be not included.
diff --git a/docs/guides/setup/getting_started.rst b/docs/guides/setup/getting_started.rst
index 896090d..5aaf0ed 100644
--- a/docs/guides/setup/getting_started.rst
+++ b/docs/guides/setup/getting_started.rst
@@ -1,5 +1,6 @@
 ..  SPDX-License-Identifier: BSD-3-Clause
     Copyright(c) 2010-2014 Intel Corporation
+    Copyright(c) 2017-2019 Nippon Telegraph and Telephone Corporation
 
 .. _getting_started:
 
@@ -201,17 +202,27 @@ Clone repository and compile SPP in any directory.
     $ cd spp
     $ make  # Confirm that $RTE_SDK and $RTE_TARGET are set
 
+It also required to install Python3 and packages for running python scripts
+as following.
+You might need to run ``pip3`` with ``sudo`` if it is failed.
+
+.. code-block:: console
+
+    $ sudo apt update
+    $ sudo apt install python3
+    $ sudo apt install python3-pip
+    $ pip3 install -r requirements.txt
+
 
 Python 2 or 3 ?
 ~~~~~~~~~~~~~~~
 
-You need to install Python for using usertools of DPDK or SPP controller.
-DPDK supports both of Python2 and 3.
+In SPP, Python3 is required only for running ``spp-ctl``. Other python scripts
+are able to be launched both of Python2 and 3.
+
 Howevrer, Python2 will not be maintained after 2020 and SPP is going to update
 only supporting Python3.
-
-In SPP, it supports both of Python2 and 3 without spp-ctl currently, but is
-going to support only Python3 before the end of 2019.
+In SPP, it is planned to support only Python3 before the end of 2019.
 
 
 Binding Network Ports to DPDK
diff --git a/docs/guides/setup/howto_use.rst b/docs/guides/setup/howto_use.rst
index 8b8fa0b..cbc20af 100644
--- a/docs/guides/setup/howto_use.rst
+++ b/docs/guides/setup/howto_use.rst
@@ -60,6 +60,19 @@ to be accessed from other processes running on other than local node.
     # launch with URL http://192.168.1.100:7777
     $ python3 src/spp-ctl/spp-ctl -b 192.168.1.100
 
+``spp-ctl`` is also launched as a daemon process, or managed
+by ``systemd``.
+Here is a simple example of service file for systemd.
+
+.. code-block:: none
+
+    [Unit]
+    Description = SPP Controller
+
+    [Service]
+    ExecStart = /usr/bin/python3 /path/to/spp/src/spp-ctl/spp-ctl
+    User = root
+
 All of options can be referred with help option ``-h``.
 
 .. code-block:: console
diff --git a/docs/guides/spp-ctl/api-reference.rst b/docs/guides/spp-ctl/api-reference.rst
deleted file mode 100644
index cb51100..0000000
--- a/docs/guides/spp-ctl/api-reference.rst
+++ /dev/null
@@ -1,1714 +0,0 @@
-..  SPDX-License-Identifier: BSD-3-Clause
-    Copyright(c) 2018 Nippon Telegraph and Telephone Corporation
-
-.. _spp_ctl_api_ref:
-
-API Reference
-=============
-
-Overview
---------
-
-``spp-ctl`` provides simple REST like API. It supports http only, not https.
-
-Request and Response
-~~~~~~~~~~~~~~~~~~~~
-
-Request body is JSON format.
-It is accepted both ``text/plain`` and ``application/json``
-for the content-type header.
-
-Response of ``GET`` is JSON format and the content-type is
-``application/json`` if the request success.
-
-If a request fails, the response is a text which shows error reason
-and the content-type is ``text/plain``.
-
-Error code
-~~~~~~~~~~
-
-
-``spp-ctl`` does basic syntax and lexical check of a request.
-
-.. _table_spp_ctl_error_codes:
-
-.. table:: Error codes in spp-ctl.
-
-    +-------+----------------------------------------------------------------+
-    | Error | Description                                                    |
-    |       |                                                                |
-    +=======+================================================================+
-    | 400   | Syntax or lexical error, or SPP returns error for the request. |
-    +-------+----------------------------------------------------------------+
-    | 404   | URL is not supported, or no SPP process of client-id in a URL. |
-    +-------+----------------------------------------------------------------+
-    | 500   | System error occured in ``spp-ctl``.                           |
-    +-------+----------------------------------------------------------------+
-
-
-API independent of the process type
------------------------------------
-
-GET /v1/processes
-~~~~~~~~~~~~~~~~~
-
-Show the SPP processes connected to the ``spp-ctl``.
-
-* Normarl response codes: 200
-
-Request example
-^^^^^^^^^^^^^^^
-
-.. code-block:: console
-
-    curl -X GET -H 'application/json' \
-    http://127.0.0.1:7777/v1/processes
-
-Response
-^^^^^^^^
-
-An array of process objects.
-
-process object:
-
-.. _table_spp_ctl_processes:
-
-.. table:: Response params of getting processes info.
-
-    +-----------+---------+-----------------------------------------------------------------+
-    | Name      | Type    | Description                                                     |
-    |           |         |                                                                 |
-    +===========+=========+=================================================================+
-    | type      | string  | process type. one of ``primary``, ``nfv`` or ``vf``.            |
-    +-----------+---------+-----------------------------------------------------------------+
-    | client-id | integer | client id. if type is ``primary`` this member does not exist.   |
-    +-----------+---------+-----------------------------------------------------------------+
-
-Response example
-^^^^^^^^^^^^^^^^
-
-.. code-block:: json
-
-    [
-      {
-        "type": "primary"
-      },
-      {
-        "type": "vf",
-        "client-id": 1
-      },
-      {
-        "type": "nfv",
-        "client-id": 2
-      }
-    ]
-
-
-API for spp_primary
--------------------
-
-GET /v1/primary/status
-~~~~~~~~~~~~~~~~~~~~~~
-
-Show statistical information.
-
-* Normal response codes: 200
-
-Request example
-^^^^^^^^^^^^^^^
-
-.. code-block:: console
-
-    curl -X GET -H 'application/json' \
-    http://127.0.0.1:7777/v1/primary/status
-
-Response
-^^^^^^^^
-
-.. _table_spp_ctl_primary_status:
-
-.. table:: Response params of primary status.
-
-    +------------+-------+-------------------------------------------+
-    | Name       | Type  | Description                               |
-    |            |       |                                           |
-    +============+=======+===========================================+
-    | phy_ports  | array | An array of statistics of physical ports. |
-    +------------+-------+-------------------------------------------+
-    | ring_ports | array | An array of statistics of ring ports.     |
-    +------------+-------+-------------------------------------------+
-
-Physical port object.
-
-.. _table_spp_ctl_primary_status_phy:
-
-.. table:: Attributes of physical port of primary status.
-
-    +---------+---------+-----------------------------------------------------+
-    | Name    | Type    | Description                                         |
-    |         |         |                                                     |
-    +=========+=========+=====================================================+
-    | id      | integer | Port ID of the physical port.                       |
-    +---------+---------+-----------------------------------------------------+
-    | rx      | integer | The total number of received packets.               |
-    +---------+---------+-----------------------------------------------------+
-    | tx      | integer | The total number of transferred packets.            |
-    +---------+---------+-----------------------------------------------------+
-    | tx_drop | integer | The total number of dropped packets of transferred. |
-    +---------+---------+-----------------------------------------------------+
-    | eth     | string  | MAC address of the port.                            |
-    +---------+---------+-----------------------------------------------------+
-
-Ring port object.
-
-.. _table_spp_ctl_primary_status_ring:
-
-.. table:: Attributes of ring port of primary status.
-
-    +---------+---------+-----------------------------------------------------+
-    | Name    | Type    | Description                                         |
-    |         |         |                                                     |
-    +=========+=========+=====================================================+
-    | id      | integer | Port ID of the ring port.                           |
-    +---------+---------+-----------------------------------------------------+
-    | rx      | integer | The total number of received packets.               |
-    +---------+---------+-----------------------------------------------------+
-    | rx_drop | integer | The total number of dropped packets of received.    |
-    +---------+---------+-----------------------------------------------------+
-    | tx      | integer | The total number of transferred packets.            |
-    +---------+---------+-----------------------------------------------------+
-    | tx_drop | integer | The total number of dropped packets of transferred. |
-    +---------+---------+-----------------------------------------------------+
-
-Response example
-^^^^^^^^^^^^^^^^
-
-.. code-block:: json
-
-    {
-      "phy_ports": [
-        {
-          "id": 0,
-          "rx": 0,
-          "tx": 0,
-          "tx_drop": 0,
-          "eth": "56:48:4f:53:54:00"
-        },
-        {
-          "id": 1,
-          "rx": 0,
-          "tx": 0,
-          "tx_drop": 0,
-          "eth": "56:48:4f:53:54:01"
-        }
-      ],
-      "ring_ports": [
-        {
-          "id": 0,
-          "rx": 0,
-          "rx_drop": 0,
-          "tx": 0,
-          "tx_drop": 0
-        },
-        {
-          "id": 1,
-          "rx": 0,
-          "rx_drop": 0,
-          "tx": 0,
-          "tx_drop": 0
-        },
-        {
-          "id": 2,
-          "rx": 0,
-          "rx_drop": 0,
-          "tx": 0,
-          "tx_drop": 0
-        },
-        {
-          "id": 3,
-          "rx": 0,
-          "rx_drop": 0,
-          "tx": 0,
-          "tx_drop": 0
-        }
-      ]
-    }
-
-
-DELETE /v1/primary/status
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Clear statistical information.
-
-* Normal response codes: 204
-
-Request example
-^^^^^^^^^^^^^^^
-
-.. code-block:: console
-
-    curl -X DELETE -H 'application/json' \
-    http://127.0.0.1:7777/v1/primary/status
-
-Response
-^^^^^^^^
-
-There is no body content for the response of a successful ``DELETE`` request.
-
-DELETE /v1/primary
-~~~~~~~~~~~~~~~~~~
-
-Terminate primary process.
-
-* Normal response codes: 204
-
-Request example
-^^^^^^^^^^^^^^^
-
-.. code-block:: console
-
-    curl -X DELETE -H 'application/json' \
-    http://127.0.0.1:7777/v1/primary
-
-Response
-^^^^^^^^
-
-There is no body content for the response of a successful ``DELETE`` request.
-
-
-API for spp_nfv/spp_vm
-----------------------
-
-GET /v1/nfvs/{client_id}
-~~~~~~~~~~~~~~~~~~~~~~~~
-
-Get the information of the ``spp_nfv`` or ``spp_vm`` process.
-
-* Normal response codes: 200
-* Error response codes: 400, 404
-
-Request(path)
-^^^^^^^^^^^^^
-
-.. _table_spp_ctl_nfvs_get:
-
-.. table:: Request parameter for getting spp_nfv or spp_vm info.
-
-    +-----------+---------+-------------------------------------+
-    | Name      | Type    | Description                         |
-    |           |         |                                     |
-    +===========+=========+=====================================+
-    | client_id | integer | client id.                          |
-    +-----------+---------+-------------------------------------+
-
-Request example
-^^^^^^^^^^^^^^^
-
-.. code-block:: console
-
-    curl -X GET -H 'application/json' \
-    http://127.0.0.1:7777/v1/nfvs/1
-
-Response
-^^^^^^^^
-
-.. _table_spp_ctl_spp_nfv_res:
-
-.. table:: Response params of getting spp_nfv or spp_vm info.
-
-    +-----------+---------+---------------------------------------------+
-    | Name      | Type    | Description                                 |
-    |           |         |                                             |
-    +===========+=========+=============================================+
-    | client-id | integer | client id.                                  |
-    +-----------+---------+---------------------------------------------+
-    | status    | string  | ``Running`` or ``Idle``.                    |
-    +-----------+---------+---------------------------------------------+
-    | ports     | array   | an array of port ids used by the process.   |
-    +-----------+---------+---------------------------------------------+
-    | patches   | array   | an array of patches.                        |
-    +-----------+---------+---------------------------------------------+
-
-patch objest
-
-.. _table_spp_ctl_patch_spp_nfv:
-
-.. table:: Attributes of patch of spp_nfv or spp_vm.
-
-    +------+--------+----------------------------------------------+
-    | Name | Type   | Description                                  |
-    |      |        |                                              |
-    +======+========+==============================================+
-    | src  | string | source port id.                              |
-    +------+--------+----------------------------------------------+
-    | dst  | string | destination port id.                         |
-    +------+--------+----------------------------------------------+
-
-Response example
-^^^^^^^^^^^^^^^^
-
-.. code-block:: json
-
-    {
-      "client-id": 1,
-      "status": "Running",
-      "ports": [
-        "phy:0", "phy:1", "vhost:0", "vhost:1", "ring:0", "ring:1", "ring:2", "ring:3"
-      ],
-      "patches": [
-        {
-          "src": "vhost:0", "dst": "ring:0"
-        },
-        {
-          "src": "ring:1", "dst": "vhost:1"
-        }
-      ]
-    }
-
-Equivalent CLI command
-^^^^^^^^^^^^^^^^^^^^^^
-
-.. code-block:: none
-
-    sec {client_id};status
-
-
-PUT /v1/nfvs/{client_id}/forward
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Start or Stop forwarding.
-
-* Normal response codes: 204
-* Error response codes: 400, 404
-
-Request(path)
-^^^^^^^^^^^^^
-
-.. _table_spp_ctl_spp_nfv_forward_get:
-
-.. table:: Request params of forward of spp_nfv or spp_vm.
-
-    +-----------+---------+---------------------------------+
-    | Name      | Type    | Description                     |
-    |           |         |                                 |
-    +===========+=========+=================================+
-    | client_id | integer | client id.                      |
-    +-----------+---------+---------------------------------+
-
-Request example
-^^^^^^^^^^^^^^^
-
-.. code-block:: console
-
-    curl -X PUT -H 'application/json' \
-    -d '{"action": "start"}' \
-    http://127.0.0.1:7777/v1/nfvs/1/forward
-
-Request(body)
-^^^^^^^^^^^^^
-
-.. _table_spp_ctl_spp_nfv_forward_get_body:
-
-.. table:: Request body params of forward of spp_nfv or spp_vm.
-
-    +--------+--------+-------------------------------------+
-    | Name   | Type   | Description                         |
-    |        |        |                                     |
-    +========+========+=====================================+
-    | action | string | ``start`` or ``stop``.              |
-    +--------+--------+-------------------------------------+
-
-Response
-^^^^^^^^
-
-There is no body content for the response of a successful ``PUT`` request.
-
-Equivalent CLI command
-^^^^^^^^^^^^^^^^^^^^^^
-
-action is ``start``
-
-.. code-block:: none
-
-    sec {client_id};forward
-
-action is ``stop``
-
-.. code-block:: none
-
-    sec {client_id};stop
-
-
-PUT /v1/nfvs/{client_id}/ports
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Add or Delete port.
-
-* Normal response codes: 204
-* Error response codes: 400, 404
-
-Request(path)
-^^^^^^^^^^^^^
-
-.. _table_spp_ctl_spp_nfv_ports_get:
-
-.. table:: Request params of ports of spp_nfv or spp_vm.
-
-    +-----------+---------+--------------------------------+
-    | Name      | Type    | Description                    |
-    |           |         |                                |
-    +===========+=========+================================+
-    | client_id | integer | client id.                     |
-    +-----------+---------+--------------------------------+
-
-Request(body)
-^^^^^^^^^^^^^
-
-.. _table_spp_ctl_spp_nfv_ports_get_body:
-
-.. table:: Request body params of ports of spp_nfv or spp_vm.
-
-    +--------+--------+---------------------------------------------------------------+
-    | Name   | Type   | Description                                                   |
-    |        |        |                                                               |
-    +========+========+===============================================================+
-    | action | string | ``add`` or ``del``.                                           |
-    +--------+--------+---------------------------------------------------------------+
-    | port   | string | port id. port id is the form {interface_type}:{interface_id}. |
-    +--------+--------+---------------------------------------------------------------+
-
-Request example
-^^^^^^^^^^^^^^^
-
-.. code-block:: console
-
-    curl -X PUT -H 'application/json' \
-    -d '{"action": "add", "port": "ring:0"}' \
-    http://127.0.0.1:7777/v1/nfvs/1/ports
-
-Response
-^^^^^^^^
-
-There is no body content for the response of a successful ``PUT`` request.
-
-Equivalent CLI command
-^^^^^^^^^^^^^^^^^^^^^^
-
-.. code-block:: none
-
-    sec {client_id};{action} {interface_type} {interface_id}
-
-
-PUT /v1/nfvs/{client_id}/patches
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Add a patch.
-
-* Normal response codes: 204
-* Error response codes: 400, 404
-
-Request(path)
-^^^^^^^^^^^^^
-
-.. _table_spp_ctl_spp_nfv_patches_get:
-
-.. table:: Request params of patches of spp_nfv or spp_vm.
-
-    +-----------+---------+---------------------------------+
-    | Name      | Type    | Description                     |
-    |           |         |                                 |
-    +===========+=========+=================================+
-    | client_id | integer | client id.                      |
-    +-----------+---------+---------------------------------+
-
-Request(body)
-^^^^^^^^^^^^^
-
-.. _table_spp_ctl_spp_nfv_ports_patches_body:
-
-.. table:: Request body params of patches of spp_nfv or spp_vm.
-
-    +------+--------+------------------------------------+
-    | Name | Type   | Description                        |
-    |      |        |                                    |
-    +======+========+====================================+
-    | src  | string | source port id.                    |
-    +------+--------+------------------------------------+
-    | dst  | string | destination port id.               |
-    +------+--------+------------------------------------+
-
-Request example
-^^^^^^^^^^^^^^^
-
-.. code-block:: console
-
-    curl -X PUT -H 'application/json' \
-    -d '{"src": "ring:0", "dst": "ring:1"}' \
-    http://127.0.0.1:7777/v1/nfvs/1/patches
-
-Response
-^^^^^^^^
-
-There is no body content for the response of a successful ``PUT`` request.
-
-Equivalent CLI command
-^^^^^^^^^^^^^^^^^^^^^^
-
-.. code-block:: none
-
-    sec {client_id};patch {src} {dst}
-
-
-DELETE /v1/nfvs/{client_id}/patches
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Reset patches.
-
-* Normal response codes: 204
-* Error response codes: 400, 404
-
-Request(path)
-^^^^^^^^^^^^^
-
-.. _table_spp_ctl_spp_nfv_del_patches:
-
-.. table:: Request params of deleting patches of spp_nfv or spp_vm.
-
-    +-----------+---------+---------------------------------------+
-    | Name      | Type    | Description                           |
-    |           |         |                                       |
-    +===========+=========+=======================================+
-    | client_id | integer | client id.                            |
-    +-----------+---------+---------------------------------------+
-
-Request example
-^^^^^^^^^^^^^^^
-
-.. code-block:: console
-
-    curl -X DELETE -H 'application/json' \
-    http://127.0.0.1:7777/v1/nfvs/1/patches
-
-Response
-^^^^^^^^
-
-There is no body content for the response of a successful ``DELETE`` request.
-
-Equivalent CLI command
-^^^^^^^^^^^^^^^^^^^^^^
-
-.. code-block:: none
-
-    sec {client_id};patch reset
-
-
-DELETE /v1/nfvs/{client_id}
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Terminate ``spp_nfv`` or ``spp_vm`` process.
-
-* Normal response codes: 204
-* Error response codes: 400, 404
-
-Request(path)
-^^^^^^^^^^^^^
-
-.. _table_spp_ctl_nfvs_delete:
-
-.. table:: Request parameter for terminating spp_nfv or spp_vm.
-
-    +-----------+---------+-------------------------------------+
-    | Name      | Type    | Description                         |
-    |           |         |                                     |
-    +===========+=========+=====================================+
-    | client_id | integer | client id.                          |
-    +-----------+---------+-------------------------------------+
-
-Request example
-^^^^^^^^^^^^^^^
-
-.. code-block:: console
-
-    curl -X DELETE -H 'application/json' \
-    http://127.0.0.1:7777/v1/nfvs/1
-
-Response example
-^^^^^^^^^^^^^^^^
-
-There is no body content for the response of a successful ``DELETE`` request.
-
-Equivalent CLI command
-^^^^^^^^^^^^^^^^^^^^^^
-
-.. code-block:: none
-
-    sec {client_id}; exit
-
-
-API for spp_vf
---------------
-
-GET /v1/vfs/{client_id}
-~~~~~~~~~~~~~~~~~~~~~~~
-
-Get the information of the ``spp_vf`` process.
-
-* Normal response codes: 200
-* Error response codes: 400, 404
-
-Request(path)
-^^^^^^^^^^^^^
-
-.. _table_spp_ctl_vfs_get:
-
-.. table:: Request parameter for getting spp_vf.
-
-    +-----------+---------+--------------------------+
-    | Name      | Type    | Description              |
-    |           |         |                          |
-    +===========+=========+==========================+
-    | client_id | integer | client id.               |
-    +-----------+---------+--------------------------+
-
-Request example
-^^^^^^^^^^^^^^^
-
-.. code-block:: console
-
-    curl -X GET -H 'application/json' \
-    http://127.0.0.1:7777/v1/vfs/1
-
-Response
-^^^^^^^^
-
-.. _table_spp_ctl_spp_vf_res:
-
-.. table:: Response params of getting spp_vf.
-
-    +------------------+---------+-----------------------------------------------+
-    | Name             | Type    | Description                                   |
-    |                  |         |                                               |
-    +==================+=========+===============================================+
-    | client-id        | integer | client id.                                    |
-    +------------------+---------+-----------------------------------------------+
-    | ports            | array   | an array of port ids used by the process.     |
-    +------------------+---------+-----------------------------------------------+
-    | components       | array   | an array of component objects in the process. |
-    +------------------+---------+-----------------------------------------------+
-    | classifier_table | array   | an array of classifier tables in the process. |
-    +------------------+---------+-----------------------------------------------+
-
-component object:
-
-.. _table_spp_ctl_spp_vf_res_comp:
-
-.. table:: Component objects of getting spp_vf.
-
-    +---------+---------+---------------------------------------------------------------------+
-    | Name    | Type    | Description                                                         |
-    |         |         |                                                                     |
-    +=========+=========+=====================================================================+
-    | core    | integer | core id running on the component                                    |
-    +---------+---------+---------------------------------------------------------------------+
-    | name    | string  | an array of port ids used by the process.                           |
-    +---------+---------+---------------------------------------------------------------------+
-    | type    | string  | an array of component objects in the process.                       |
-    +---------+---------+---------------------------------------------------------------------+
-    | rx_port | array   | an array of port objects connected to the rx side of the component. |
-    +---------+---------+---------------------------------------------------------------------+
-    | tx_port | array   | an array of port objects connected to the tx side of the component. |
-    +---------+---------+---------------------------------------------------------------------+
-
-port object:
-
-.. _table_spp_ctl_spp_vf_res_port:
-
-.. table:: Port objects of getting spp_vf.
-
-    +---------+---------+---------------------------------------------------------------+
-    | Name    | Type    | Description                                                   |
-    |         |         |                                                               |
-    +=========+=========+===============================================================+
-    | port    | string  | port id. port id is the form {interface_type}:{interface_id}. |
-    +---------+---------+---------------------------------------------------------------+
-    | vlan    | object  | vlan operation which is applied to the port.                  |
-    +---------+---------+---------------------------------------------------------------+
-
-vlan object:
-
-.. _table_spp_ctl_spp_vf_res_vlan:
-
-.. table:: Vlan objects of getting spp_vf.
-
-    +-----------+---------+-------------------------------+
-    | Name      | Type    | Description                   |
-    |           |         |                               |
-    +===========+=========+===============================+
-    | operation | string  | ``add``, ``del`` or ``none``. |
-    +-----------+---------+-------------------------------+
-    | id        | integer | vlan id.                      |
-    +-----------+---------+-------------------------------+
-    | pcp       | integer | vlan pcp.                     |
-    +-----------+---------+-------------------------------+
-
-classifier table:
-
-.. _table_spp_ctl_spp_vf_res_cls:
-
-.. table:: Vlan objects of getting spp_vf.
-
-    +-----------+--------+------------------------------------------------------------+
-    | Name      | Type   | Description                                                |
-    |           |        |                                                            |
-    +===========+========+============================================================+
-    | type      | string | ``mac`` or ``vlan``.                                       |
-    +-----------+--------+------------------------------------------------------------+
-    | value     | string | mac_address for ``mac``, vlan_id/mac_address for ``vlan``. |
-    +-----------+--------+------------------------------------------------------------+
-    | port      | string | port id applied to classify.                               |
-    +-----------+--------+------------------------------------------------------------+
-
-Response example
-^^^^^^^^^^^^^^^^
-
-.. code-block:: json
-
-    {
-      "client-id": 1,
-      "ports": [
-        "phy:0", "phy:1", "vhost:0", "vhost:1", "ring:0", "ring:1", "ring:2", "ring:3"
-      ],
-      "components": [
-        {
-          "core": 2,
-          "name": "forward_0_tx",
-          "type": "forward",
-          "rx_port": [
-            {
-            "port": "ring:0",
-            "vlan": { "operation": "none", "id": 0, "pcp": 0 }
-            }
-          ],
-          "tx_port": [
-            {
-              "port": "vhost:0",
-              "vlan": { "operation": "none", "id": 0, "pcp": 0 }
-            }
-          ]
-        },
-        {
-          "core": 3,
-          "type": "unuse"
-        },
-        {
-          "core": 4,
-          "type": "unuse"
-        },
-        {
-          "core": 5,
-          "name": "forward_1_rx",
-          "type": "forward",
-          "rx_port": [
-            {
-            "port": "vhost:1",
-            "vlan": { "operation": "none", "id": 0, "pcp": 0 }
-            }
-          ],
-          "tx_port": [
-            {
-              "port": "ring:3",
-              "vlan": { "operation": "none", "id": 0, "pcp": 0 }
-            }
-          ]
-        },
-        {
-          "core": 6,
-          "name": "classifier",
-          "type": "classifier_mac",
-          "rx_port": [
-            {
-              "port": "phy:0",
-              "vlan": { "operation": "none", "id": 0, "pcp": 0 }
-            }
-          ],
-          "tx_port": [
-            {
-              "port": "ring:0",
-              "vlan": { "operation": "none", "id": 0, "pcp": 0 }
-            },
-            {
-              "port": "ring:2",
-              "vlan": { "operation": "none", "id": 0, "pcp": 0 }
-            }
-          ]
-        },
-        {
-          "core": 7,
-          "name": "merger",
-          "type": "merge",
-          "rx_port": [
-            {
-              "port": "ring:1",
-              "vlan": { "operation": "none", "id": 0, "pcp": 0 }
-            },
-            {
-              "port": "ring:3",
-              "vlan": { "operation": "none", "id": 0, "pcp": 0 }
-            }
-          ],
-          "tx_port": [
-            {
-              "port": "phy:0",
-              "vlan": { "operation": "none", "id": 0, "pcp": 0 }
-            }
-          ]
-        },
-      ],
-      "classifier_table": [
-        {
-          "type": "mac",
-          "value": "FA:16:3E:7D:CC:35",
-          "port": "ring:0"
-        }
-      ]
-    }
-
-The component which type is ``unused`` is to indicate unused core.
-
-Equivalent CLI command
-^^^^^^^^^^^^^^^^^^^^^^
-
-.. code-block:: none
-
-    sec {client_id};status
-
-
-POST /v1/vfs/{client_id}/components
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Start the component.
-
-* Normal response codes: 204
-* Error response codes: 400, 404
-
-Request(path)
-^^^^^^^^^^^^^
-
-.. _table_spp_ctl_spp_vf_components:
-
-.. table:: Request params of components of spp_vf.
-
-    +-----------+---------+-------------+
-    | Name      | Type    | Description |
-    +===========+=========+=============+
-    | client_id | integer | client id.  |
-    +-----------+---------+-------------+
-
-
-Request(body)
-^^^^^^^^^^^^^
-
-.. _table_spp_ctl_spp_vf_components_res:
-
-.. table:: Response params of components of spp_vf.
-
-    +-----------+---------+----------------------------------------------------------------------+
-    | Name      | Type    | Description                                                          |
-    |           |         |                                                                      |
-    +===========+=========+======================================================================+
-    | name      | string  | component name. must be unique in the process.                       |
-    +-----------+---------+----------------------------------------------------------------------+
-    | core      | integer | core id.                                                             |
-    +-----------+---------+----------------------------------------------------------------------+
-    | type      | string  | component type. one of ``forward``, ``merge`` or ``classifier_mac``. |
-    +-----------+---------+----------------------------------------------------------------------+
-
-Request example
-^^^^^^^^^^^^^^^
-
-.. code-block:: console
-
-    curl -X POST -H 'application/json' \
-    -d '{"name": "forwarder1", "core": 12, "type": "forward"}' \
-    http://127.0.0.1:7777/v1/vfs/1/components
-
-Response
-^^^^^^^^
-
-There is no body content for the response of a successful ``POST`` request.
-
-Equivalent CLI command
-^^^^^^^^^^^^^^^^^^^^^^
-
-.. code-block:: none
-
-    sec {client_id};component start {name} {core} {type}
-
-
-DELETE /v1/vfs/{sec id}/components/{name}
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Stop the component.
-
-* Normal response codes: 204
-* Error response codes: 400, 404
-
-Request(path)
-^^^^^^^^^^^^^
-
-.. _table_spp_ctl_spp_vf_del:
-
-.. table:: Request params of deleting component of spp_vf.
-
-    +-----------+---------+---------------------------------+
-    | Name      | Type    | Description                     |
-    |           |         |                                 |
-    +===========+=========+=================================+
-    | client_id | integer | client id.                      |
-    +-----------+---------+---------------------------------+
-    | name      | string  | component name.                 |
-    +-----------+---------+---------------------------------+
-
-Request example
-^^^^^^^^^^^^^^^
-
-.. code-block:: console
-
-    curl -X DELETE -H 'application/json' \
-    http://127.0.0.1:7777/v1/vfs/1/components/forwarder1
-
-Response
-^^^^^^^^
-
-There is no body content for the response of a successful ``POST`` request.
-
-Equivalent CLI command
-^^^^^^^^^^^^^^^^^^^^^^
-
-.. code-block:: none
-
-    sec {client_id};component stop {name}
-
-
-PUT /v1/vfs/{client_id}/components/{name}/ports
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Add or Delete port to the component.
-
-* Normal response codes: 204
-* Error response codes: 400, 404
-
-Request(path)
-^^^^^^^^^^^^^
-
-.. _table_spp_ctl_spp_vf_comp_port:
-
-.. table:: Request params for ports of component of spp_vf.
-
-    +-----------+---------+---------------------------+
-    | Name      | Type    | Description               |
-    |           |         |                           |
-    +===========+=========+===========================+
-    | client_id | integer | client id.                |
-    +-----------+---------+---------------------------+
-    | name      | string  | component name.           |
-    +-----------+---------+---------------------------+
-
-Request(body)
-^^^^^^^^^^^^^
-
-.. _table_spp_ctl_spp_vf_comp_port_body:
-
-.. table:: Request body params for ports of component of spp_vf.
-
-    +---------+---------+-----------------------------------------------------------------+
-    | Name    | Type    | Description                                                     |
-    |         |         |                                                                 |
-    +=========+=========+=================================================================+
-    | action  | string  | ``attach`` or ``detach``.                                       |
-    +---------+---------+-----------------------------------------------------------------+
-    | port    | string  | port id. port id is the form {interface_type}:{interface_id}.   |
-    +---------+---------+-----------------------------------------------------------------+
-    | dir     | string  | ``rx`` or ``tx``.                                               |
-    +---------+---------+-----------------------------------------------------------------+
-    | vlan    | object  | vlan operation which is applied to the port. it can be omitted. |
-    +---------+---------+-----------------------------------------------------------------+
-
-vlan object:
-
-.. _table_spp_ctl_spp_vf_comp_port_body_vlan:
-
-.. table:: Request body params for vlan ports of component of spp_vf.
-
-    +-----------+---------+----------------------------------------------------------+
-    | Name      | Type    | Description                                              |
-    |           |         |                                                          |
-    +===========+=========+==========================================================+
-    | operation | string  | ``add``, ``del`` or ``none``.                            |
-    +-----------+---------+----------------------------------------------------------+
-    | id        | integer | vlan id. ignored when operation is ``del`` or ``none``.  |
-    +-----------+---------+----------------------------------------------------------+
-    | pcp       | integer | vlan pcp. ignored when operation is ``del`` or ``none``. |
-    +-----------+---------+----------------------------------------------------------+
-
-Request example
-^^^^^^^^^^^^^^^
-
-.. code-block:: console
-
-    curl -X PUT -H 'application/json' \
-    -d '{"action": "attach", "port": "vhost:1", "dir": "rx", \
-         "vlan": {"operation": "add", "id": 677, "pcp": 0}}' \
-    http://127.0.0.1:7777/v1/vfs/1/components/forwarder1/ports
-
-.. code-block:: console
-
-    curl -X PUT -H 'application/json' \
-    -d '{"action": "detach", "port": "vhost:0", "dir": "tx"} \
-    http://127.0.0.1:7777/v1/vfs/1/components/forwarder1/ports
-
-Response
-^^^^^^^^
-
-There is no body content for the response of a successful ``PUT`` request.
-
-Equivalent CLI command
-^^^^^^^^^^^^^^^^^^^^^^
-
-action is ``attach``
-
-.. code-block:: none
-
-    sec {client_id};port add {port} {dir} {name} [add_vlantag {id} {pcp} | del_vlantag]
-
-action is ``detach``
-
-.. code-block:: none
-
-    sec {client_id};port del {port} {dir} {name}
-
-
-PUT /v1/vfs/{sec id}/classifier_table
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Set or Unset classifier table.
-
-* Normal response codes: 204
-* Error response codes: 400, 404
-
-Request(path)
-^^^^^^^^^^^^^
-
-.. _table_spp_ctl_spp_vf_cls_table:
-
-.. table:: Request params for classifier_table of spp_vf.
-
-    +-----------+---------+---------------------------+
-    | Name      | Type    | Description               |
-    |           |         |                           |
-    +===========+=========+===========================+
-    | client_id | integer | client id.                |
-    +-----------+---------+---------------------------+
-
-Request(body)
-^^^^^^^^^^^^^
-
-.. _table_spp_ctl_spp_vf_cls_table_body:
-
-.. table:: Request body params for classifier_table of spp_vf.
-
-    +-------------+-----------------+----------------------------------------------------+
-    | Name        | Type            | Description                                        |
-    |             |                 |                                                    |
-    +=============+=================+====================================================+
-    | action      | string          | ``add`` or ``del``.                                |
-    +-------------+-----------------+----------------------------------------------------+
-    | type        | string          | ``mac`` or ``vlan``.                               |
-    +-------------+-----------------+----------------------------------------------------+
-    | vlan        | integer or null | vlan id for ``vlan``. null or omitted for ``mac``. |
-    +-------------+-----------------+----------------------------------------------------+
-    | mac_address | string          | mac address.                                       |
-    +-------------+-----------------+----------------------------------------------------+
-    | port        | string          | port id.                                           |
-    +-------------+-----------------+----------------------------------------------------+
-
-Request example
-^^^^^^^^^^^^^^^
-
-.. code-block:: console
-
-    curl -X PUT -H 'application/json' \
-    -d '{"action": "add", "type": "mac", "mac_address": "FA:16:3E:7D:CC:35", \
-       "port": "ring:0"}' \
-    http://127.0.0.1:7777/v1/vfs/1/classifier_table
-
-.. code-block:: console
-
-    curl -X PUT -H 'application/json' \
-    -d '{"action": "del", "type": "vlan", "vlan": 475, \
-       "mac_address": "FA:16:3E:7D:CC:35", "port": "ring:0"}' \
-    http://127.0.0.1:7777/v1/vfs/1/classifier_table
-
-Response
-^^^^^^^^
-
-There is no body content for the response of a successful ``PUT`` request.
-
-Equivalent CLI command
-^^^^^^^^^^^^^^^^^^^^^^
-
-type is ``mac``
-
-.. code-block:: none
-
-    classifier_table {action} mac {mac_address} {port}
-
-type is ``vlan``
-
-.. code-block:: none
-
-    classifier_table {action} vlan {vlan} {mac_address} {port}
-
-
-API for spp_mirror
-------------------
-
-GET /v1/mirrors/{client_id}
-~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Get the information of the ``spp_mirror`` process.
-
-* Normal response codes: 200
-* Error response codes: 400, 404
-
-Request(path)
-^^^^^^^^^^^^^
-
-.. _table_spp_ctl_mirrors_get:
-
-.. table:: Request parameter for getting spp_mirror.
-
-    +-----------+---------+--------------------------+
-    | Name      | Type    | Description              |
-    |           |         |                          |
-    +===========+=========+==========================+
-    | client_id | integer | client id.               |
-    +-----------+---------+--------------------------+
-
-Request example
-^^^^^^^^^^^^^^^
-
-.. code-block:: console
-
-    curl -X GET -H 'application/json' \
-    http://127.0.0.1:7777/v1/mirrors/1
-
-Response
-^^^^^^^^
-
-.. _table_spp_ctl_spp_mirror_res:
-
-.. table:: Response params of getting spp_mirror.
-
-    +------------------+---------+-----------------------------------------------+
-    | Name             | Type    | Description                                   |
-    |                  |         |                                               |
-    +==================+=========+===============================================+
-    | client-id        | integer | client id.                                    |
-    +------------------+---------+-----------------------------------------------+
-    | ports            | array   | an array of port ids used by the process.     |
-    +------------------+---------+-----------------------------------------------+
-    | components       | array   | an array of component objects in the process. |
-    +------------------+---------+-----------------------------------------------+
-
-component object:
-
-.. _table_spp_ctl_spp_mirror_res_comp:
-
-.. table:: Component objects of getting spp_mirror.
-
-    +---------+---------+---------------------------------------------------------------------+
-    | Name    | Type    | Description                                                         |
-    |         |         |                                                                     |
-    +=========+=========+=====================================================================+
-    | core    | integer | core id running on the component                                    |
-    +---------+---------+---------------------------------------------------------------------+
-    | name    | string  | an array of port ids used by the process.                           |
-    +---------+---------+---------------------------------------------------------------------+
-    | type    | string  | an array of component objects in the process.                       |
-    +---------+---------+---------------------------------------------------------------------+
-    | rx_port | array   | an array of port objects connected to the rx side of the component. |
-    +---------+---------+---------------------------------------------------------------------+
-    | tx_port | array   | an array of port objects connected to the tx side of the component. |
-    +---------+---------+---------------------------------------------------------------------+
-
-port object:
-
-.. _table_spp_ctl_spp_mirror_res_port:
-
-.. table:: Port objects of getting spp_vf.
-
-    +---------+---------+---------------------------------------------------------------+
-    | Name    | Type    | Description                                                   |
-    |         |         |                                                               |
-    +=========+=========+===============================================================+
-    | port    | string  | port id. port id is the form {interface_type}:{interface_id}. |
-    +---------+---------+---------------------------------------------------------------+
-
-Response example
-^^^^^^^^^^^^^^^^
-
-.. code-block:: json
-
-    {
-      "client-id": 1,
-      "ports": [
-        "phy:0", "phy:1", "ring:0", "ring:1", "ring:2"
-      ],
-      "components": [
-        {
-          "core": 2,
-          "name": "mirror_0",
-          "type": "mirror",
-          "rx_port": [
-            {
-            "port": "ring:0"
-            }
-          ],
-          "tx_port": [
-            {
-              "port": "ring:1"
-            },
-            {
-              "port": "ring:2"
-            }
-          ]
-        },
-        {
-          "core": 3,
-          "type": "unuse"
-        }
-      ]
-    }
-
-The component which type is ``unused`` is to indicate unused core.
-
-Equivalent CLI command
-^^^^^^^^^^^^^^^^^^^^^^
-
-.. code-block:: none
-
-    sec {client_id};status
-
-
-POST /v1/mirrors/{client_id}/components
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Start the component.
-
-* Normal response codes: 204
-* Error response codes: 400, 404
-
-Request(path)
-^^^^^^^^^^^^^
-
-.. _table_spp_ctl_spp_mirror_components:
-
-.. table:: Request params of components of spp_mirror.
-
-    +-----------+---------+-------------+
-    | Name      | Type    | Description |
-    +===========+=========+=============+
-    | client_id | integer | client id.  |
-    +-----------+---------+-------------+
-
-
-Request(body)
-^^^^^^^^^^^^^
-
-.. _table_spp_ctl_spp_mirror_components_res:
-
-.. table:: Response params of components of spp_mirror.
-
-    +-----------+---------+----------------------------------------------------------------------+
-    | Name      | Type    | Description                                                          |
-    |           |         |                                                                      |
-    +===========+=========+======================================================================+
-    | name      | string  | component name. must be unique in the process.                       |
-    +-----------+---------+----------------------------------------------------------------------+
-    | core      | integer | core id.                                                             |
-    +-----------+---------+----------------------------------------------------------------------+
-    | type      | string  | component type. only ``mirror`` is available.                        |
-    +-----------+---------+----------------------------------------------------------------------+
-
-Request example
-^^^^^^^^^^^^^^^
-
-.. code-block:: console
-
-    curl -X POST -H 'application/json' \
-    -d '{"name": "mirror_1", "core": 12, "type": "mirror"}' \
-    http://127.0.0.1:7777/v1/mirrors/1/components
-
-Response
-^^^^^^^^
-
-There is no body content for the response of a successful ``POST`` request.
-
-Equivalent CLI command
-^^^^^^^^^^^^^^^^^^^^^^
-
-.. code-block:: none
-
-    sec {client_id};component start {name} {core} {type}
-
-
-DELETE /v1/mirrors/{client_id}/components/{name}
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Stop the component.
-
-* Normal response codes: 204
-* Error response codes: 400, 404
-
-Request(path)
-^^^^^^^^^^^^^
-
-.. _table_spp_ctl_spp_mirror_del:
-
-.. table:: Request params of deleting component of spp_mirror.
-
-    +-----------+---------+---------------------------------+
-    | Name      | Type    | Description                     |
-    |           |         |                                 |
-    +===========+=========+=================================+
-    | client_id | integer | client id.                      |
-    +-----------+---------+---------------------------------+
-    | name      | string  | component name.                 |
-    +-----------+---------+---------------------------------+
-
-Request example
-^^^^^^^^^^^^^^^
-
-.. code-block:: console
-
-    curl -X DELETE -H 'application/json' \
-    http://127.0.0.1:7777/v1/mirrors/1/components/mirror_1
-
-Response
-^^^^^^^^
-
-There is no body content for the response of a successful ``POST`` request.
-
-Equivalent CLI command
-^^^^^^^^^^^^^^^^^^^^^^
-
-.. code-block:: none
-
-    sec {client_id};component stop {name}
-
-
-PUT /v1/mirrors/{client_id}/components/{name}/ports
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Add or Delete port to the component.
-
-* Normal response codes: 204
-* Error response codes: 400, 404
-
-Request(path)
-^^^^^^^^^^^^^
-
-.. _table_spp_ctl_spp_mirror_comp_port:
-
-.. table:: Request params for ports of component of spp_mirror.
-
-    +-----------+---------+---------------------------+
-    | Name      | Type    | Description               |
-    |           |         |                           |
-    +===========+=========+===========================+
-    | client_id | integer | client id.                |
-    +-----------+---------+---------------------------+
-    | name      | string  | component name.           |
-    +-----------+---------+---------------------------+
-
-Request(body)
-^^^^^^^^^^^^^
-
-.. _table_spp_ctl_spp_mirror_comp_port_body:
-
-.. table:: Request body params for ports of component of spp_mirror.
-
-    +---------+---------+-----------------------------------------------------------------+
-    | Name    | Type    | Description                                                     |
-    |         |         |                                                                 |
-    +=========+=========+=================================================================+
-    | action  | string  | ``attach`` or ``detach``.                                       |
-    +---------+---------+-----------------------------------------------------------------+
-    | port    | string  | port id. port id is the form {interface_type}:{interface_id}.   |
-    +---------+---------+-----------------------------------------------------------------+
-    | dir     | string  | ``rx`` or ``tx``.                                               |
-    +---------+---------+-----------------------------------------------------------------+
-
-Request example
-^^^^^^^^^^^^^^^
-
-.. code-block:: console
-
-    curl -X PUT -H 'application/json' \
-    -d '{"action": "attach", "port": "ring:1", "dir": "rx"}' \
-    http://127.0.0.1:7777/v1/mirrors/1/components/mirror_1/ports
-
-.. code-block:: console
-
-    curl -X PUT -H 'application/json' \
-    -d '{"action": "detach", "port": "ring:0", "dir": "tx"} \
-    http://127.0.0.1:7777/v1/mirrors/1/components/mirror_1/ports
-
-Response
-^^^^^^^^
-
-There is no body content for the response of a successful ``PUT`` request.
-
-Equivalent CLI command
-^^^^^^^^^^^^^^^^^^^^^^
-
-action is ``attach``
-
-.. code-block:: none
-
-    sec {client_id};port add {port} {dir} {name}
-
-action is ``detach``
-
-.. code-block:: none
-
-    sec {client_id};port del {port} {dir} {name}
-
-
-API for spp_pcap
-----------------
-
-GET /v1/pcaps/{client_id}
-~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Get the information of the ``spp_pcap`` process.
-
-* Normal response codes: 200
-* Error response codes: 400, 404
-
-Request(path)
-^^^^^^^^^^^^^
-
-.. _table_spp_ctl_pcap_get:
-
-.. table:: Request parameter for getting spp_pcap info.
-
-    +-----------+---------+-------------------------------------+
-    | Name      | Type    | Description                         |
-    |           |         |                                     |
-    +===========+=========+=====================================+
-    | client_id | integer | client id.                          |
-    +-----------+---------+-------------------------------------+
-
-Request example
-^^^^^^^^^^^^^^^
-
-.. code-block:: console
-
-    curl -X GET -H 'application/json' \
-    http://127.0.0.1:7777/v1/pcaps/1
-
-Response
-^^^^^^^^
-
-.. _table_spp_ctl_spp_pcap_res:
-
-.. table:: Response params of getting spp_pcap.
-
-    +------------------+---------+-----------------------------------------------+
-    | Name             | Type    | Description                                   |
-    |                  |         |                                               |
-    +==================+=========+===============================================+
-    | client-id        | integer | client id.                                    |
-    +------------------+---------+-----------------------------------------------+
-    | status           | string  | status of the process. "running" or "idle".   |
-    +------------------+---------+-----------------------------------------------+
-    | core             | array   | an array of core objects in the process.      |
-    +------------------+---------+-----------------------------------------------+
-
-core object:
-
-.. _table_spp_ctl_spp_pcap_res_core:
-
-.. table:: Core objects of getting spp_pcap.
-
-    +----------+---------+----------------------------------------------------------------------+
-    | Name     | Type    | Description                                                          |
-    |          |         |                                                                      |
-    +==========+=========+======================================================================+
-    | core     | integer | core id                                                              |
-    +----------+---------+----------------------------------------------------------------------+
-    | role     | string  | role of the task running on the core. "receive" or "write".          |
-    +----------+---------+----------------------------------------------------------------------+
-    | rx_port  | array   | an array of port object for caputure. This member exists if role is  |
-    |          |         | "recieve". Note that there is only a port object in the array.       |
-    +----------+---------+----------------------------------------------------------------------+
-    | filename | string  | a path name of output file. This member exists if role is "write".   |
-    +----------+---------+----------------------------------------------------------------------+
-
-Note that there is only a port object in the array
-
-port object:
-
-.. _table_spp_ctl_spp_pcap_res_port:
-
-.. table:: Port objects of getting spp_pcap.
-
-    +---------+---------+---------------------------------------------------------------+
-    | Name    | Type    | Description                                                   |
-    |         |         |                                                               |
-    +=========+=========+===============================================================+
-    | port    | string  | port id. port id is the form {interface_type}:{interface_id}. |
-    +---------+---------+---------------------------------------------------------------+
-
-Response example
-^^^^^^^^^^^^^^^^
-
-.. code-block:: json
-
-    {
-      "client-id": 1,
-      "status": "running",
-      "core": [
-        {
-          "core": 2,
-          "role": "receive",
-          "rx_port": [
-            {
-            "port": "phy:0"
-            }
-          ]
-        },
-        {
-          "core": 3,
-          "role": "write",
-          "filename": "/tmp/spp_pcap.20181108110600.ring0.1.2.pcap"
-        }
-      ]
-    }
-
-Equivalent CLI command
-^^^^^^^^^^^^^^^^^^^^^^
-
-.. code-block:: none
-
-    pcap {client_id}; status
-
-PUT /v1/pcaps/{client_id}/capture
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Start or Stop capturing.
-
-* Normal response codes: 204
-* Error response codes: 400, 404
-
-Request(path)
-^^^^^^^^^^^^^
-
-.. _table_spp_ctl_spp_pcap_capture:
-
-.. table:: Request params of capture of spp_pcap.
-
-    +-----------+---------+---------------------------------+
-    | Name      | Type    | Description                     |
-    |           |         |                                 |
-    +===========+=========+=================================+
-    | client_id | integer | client id.                      |
-    +-----------+---------+---------------------------------+
-
-Request(body)
-^^^^^^^^^^^^^
-
-.. _table_spp_ctl_spp_pcap_capture_body:
-
-.. table:: Request body params of capture of spp_pcap.
-
-    +--------+--------+-------------------------------------+
-    | Name   | Type   | Description                         |
-    |        |        |                                     |
-    +========+========+=====================================+
-    | action | string | ``start`` or ``stop``.              |
-    +--------+--------+-------------------------------------+
-
-Request example
-^^^^^^^^^^^^^^^
-
-.. code-block:: console
-
-    curl -X PUT -H 'application/json' \
-    -d '{"action": "start"}' \
-    http://127.0.0.1:7777/v1/pcaps/1/capture
-
-Response
-^^^^^^^^
-
-There is no body content for the response of a successful ``PUT`` request.
-
-Equivalent CLI command
-^^^^^^^^^^^^^^^^^^^^^^
-
-action is ``start``
-
-.. code-block:: none
-
-    pcap {client_id}; start
-
-action is ``stop``
-
-.. code-block:: none
-
-    pcap {client_id}; stop
-
-
-DELETE /v1/pcaps/{client_id}
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Terminate ``spp_pcap`` process.
-
-* Normal response codes: 204
-* Error response codes: 400, 404
-
-Request(path)
-^^^^^^^^^^^^^
-
-.. _table_spp_ctl_pcap_delete:
-
-.. table:: Request parameter for terminating spp_pcap.
-
-    +-----------+---------+-------------------------------------+
-    | Name      | Type    | Description                         |
-    |           |         |                                     |
-    +===========+=========+=====================================+
-    | client_id | integer | client id.                          |
-    +-----------+---------+-------------------------------------+
-
-Request example
-^^^^^^^^^^^^^^^
-
-.. code-block:: console
-
-    curl -X DELETE -H 'application/json' \
-    http://127.0.0.1:7777/v1/pcaps/1
-
-Response example
-^^^^^^^^^^^^^^^^
-
-There is no body content for the response of a successful ``DELETE`` request.
-
-Equivalent CLI command
-^^^^^^^^^^^^^^^^^^^^^^
-
-.. code-block:: none
-
-    pcap {client_id}; exit
diff --git a/docs/guides/spp-ctl/index.rst b/docs/guides/spp-ctl/index.rst
deleted file mode 100644
index 499bcfe..0000000
--- a/docs/guides/spp-ctl/index.rst
+++ /dev/null
@@ -1,14 +0,0 @@
-..  SPDX-License-Identifier: BSD-3-Clause
-    Copyright(c) 2018 Nippon Telegraph and Telephone Corporation
-
-.. _spp_ctl_index:
-
-spp-ctl
-=======
-
-.. toctree::
-   :maxdepth: 2
-   :numbered:
-
-   overview
-   api-reference
diff --git a/docs/guides/spp-ctl/overview.rst b/docs/guides/spp-ctl/overview.rst
deleted file mode 100644
index 6b88f3b..0000000
--- a/docs/guides/spp-ctl/overview.rst
+++ /dev/null
@@ -1,87 +0,0 @@
-..  SPDX-License-Identifier: BSD-3-Clause
-    Copyright(c) 2018 Nippon Telegraph and Telephone Corporation
-
-.. _spp_ctl_overview:
-
-spp-ctl
-=======
-
-Architecture
-------------
-
-The design goal of spp-ctl is to be as simple as possible.
-It is stateless.
-Basically, spp-ctl only converts API requests into commands of SPP
-processes and throws request, thouth it does syntax and lexical check
-for API requests.
-
-``spp-ctl`` adopts
-`bottle
-<https://bottlepy.org/docs/dev/>`_
-which is simple and well known as a web framework and
-`eventlet
-<http://eventlet.net/>`_
-for parallel processing.
-``spp-ctl`` accepts multiple requests at the same time and serializes them
-internally.
-
-
-Setup
-=====
-
-You are required to install Python3 and packages described in
-``requirements.txt`` via ``pip3`` for launching ``spp-ctl``.
-You might need to run ``pip3`` with ``sudo``.
-
-.. code-block:: console
-
-    $ sudo apt update
-    $ sudo apt install python3
-    $ sudo apt install python3-pip
-    $ pip3 install -r requirements.txt
-
-Usage
------
-
-.. code-block:: console
-
-    usage: spp-ctl [-p PRI_PORT] [-s SEC_PORT] [-a API_PORT]
-
-    optional arguments:
-      -p PRI_PORT  primary port. default is 5555.
-      -s SEC_PORT  secondary port. default is 6666.
-      -a API_PORT  web api port. default is 7777.
-
-Using systemd
--------------
-
-`spp-ctl` is assumed to be launched as a daemon process, or managed
-by `systemd`.
-Here is a simple example of service file for systemd.
-
-::
-
-    [Unit]
-    Description = SPP Controller
-
-    [Service]
-    ExecStart = /usr/bin/python3 /path/to/spp/src/spp-ctl/spp-ctl
-    User = root
-
-
-REST APIs
-=========
-
-You can try to call ``spp-ctl`` APIs with ``curl`` command as following.
-
-.. code-block:: console
-
-    $ curl http://localhost:7777/v1/processes
-    [{"type": "primary"}, ..., {"client-id": 2, "type": "vf"}]
-    $ curl http://localhost:7777/v1/vfs/1
-    ... snip
-    $ curl -X POST http://localhost:7777/v1/vfs/1/components \
-      -d '{"core": 2, "name": "forward_0_tx", "type": "forward"}'
-
-For more details, see
-:ref:`API Reference<spp_ctl_api_ref>`.
-- 
2.7.4

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2019-01-09  1:51 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-01-09  1:49 [spp] Update docs structure ogawa.yasufumi
2019-01-09  1:49 ` [spp] [PATCH 01/11] docs: change structure of overview section ogawa.yasufumi
2019-01-09  1:49 ` [spp] [PATCH 02/11] docs: move overview of spp-ctl to SPP overview ogawa.yasufumi
2019-01-09  1:49 ` [spp] [PATCH 03/11] docs: update image of " ogawa.yasufumi
2019-01-09  1:49 ` [spp] [PATCH 04/11] docs: update overview section ogawa.yasufumi
2019-01-09  1:49 ` [spp] [PATCH 05/11] docs: add overview image for design section ogawa.yasufumi
2019-01-09  1:49 ` [spp] [PATCH 06/11] docs: add image of design of spp-ctl ogawa.yasufumi
2019-01-09  1:49 ` [spp] [PATCH 07/11] docs: add SPP controller in design section ogawa.yasufumi
2019-01-09  1:49 ` [spp] [PATCH 08/11] docs: add spp_primary " ogawa.yasufumi
2019-01-09  1:49 ` [spp] [PATCH 09/11] docs: move design section to doc root ogawa.yasufumi
2019-01-09  1:49 ` [spp] [PATCH 10/11] docs: move usecases " ogawa.yasufumi
2019-01-09  1:49 ` [spp] [PATCH 11/11] docs: remove spp-ctl section ogawa.yasufumi

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).