Soft Patch Panel
 help / color / mirror / Atom feed
* [spp] [PATCH 0/7] Remove spp_vm from documentation
@ 2019-01-17  2:46 ogawa.yasufumi
  2019-01-17  2:46 ` [spp] [PATCH 1/7] docs: remove spp_vm from howto use section ogawa.yasufumi
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: ogawa.yasufumi @ 2019-01-17  2:46 UTC (permalink / raw)
  To: ferruh.yigit, spp, ogawa.yasufumi

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

Source codes of spp_vm is removed in previous update [1], but
documentation is still remained. This series of patches is to remove
spp_vm from docs.

[1] http://git.dpdk.org/apps/spp/commit/?id=249fb151bd889dd09d482761f9a645955d6380ba

Yasufumi Ogawa (7):
  docs: remove spp_vm from howto use section
  docs: remove spp_vm from spp-ctl API
  docs: remove spp_vm from SPP container
  docs: remove spp_vm from usecases
  docs: remove spp_vm from secondary commands
  docs: remove spp_vf from image of usecase
  docs: update hugepages setup

 docs/guides/api_ref/spp-ctl.rst                    |  30 +-
 docs/guides/commands/secondary/spp_vf.rst          |   2 +-
 .../images/setup/use_cases/spp_nfv_l2fwd_vhost.svg | 779 +++++++++++++++++++++
 .../setup/use_cases/spp_unidir_l2fwd_vhost.svg     | 759 --------------------
 docs/guides/setup/getting_started.rst              |  11 +-
 docs/guides/setup/howto_use.rst                    |  67 +-
 docs/guides/tools/sppc/app_launcher.rst            |  32 +-
 docs/guides/tools/sppc/getting_started.rst         |   8 +-
 docs/guides/tools/sppc/usecases.rst                |   3 +-
 docs/guides/use_cases/spp_nfv.rst                  |  42 +-
 10 files changed, 838 insertions(+), 895 deletions(-)
 create mode 100644 docs/guides/images/setup/use_cases/spp_nfv_l2fwd_vhost.svg
 delete mode 100644 docs/guides/images/setup/use_cases/spp_unidir_l2fwd_vhost.svg

-- 
2.7.4

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

* [spp] [PATCH 1/7] docs: remove spp_vm from howto use section
  2019-01-17  2:46 [spp] [PATCH 0/7] Remove spp_vm from documentation ogawa.yasufumi
@ 2019-01-17  2:46 ` ogawa.yasufumi
  2019-01-17  2:46 ` [spp] [PATCH 2/7] docs: remove spp_vm from spp-ctl API ogawa.yasufumi
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: ogawa.yasufumi @ 2019-01-17  2:46 UTC (permalink / raw)
  To: ferruh.yigit, spp, ogawa.yasufumi

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

Remove spp_vm from How to Use section in Setup Guide.

Signed-off-by: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>
---
 docs/guides/setup/howto_use.rst | 67 +++++------------------------------------
 1 file changed, 8 insertions(+), 59 deletions(-)

diff --git a/docs/guides/setup/howto_use.rst b/docs/guides/setup/howto_use.rst
index 51ad8da..f8a33bc 100644
--- a/docs/guides/setup/howto_use.rst
+++ b/docs/guides/setup/howto_use.rst
@@ -262,12 +262,12 @@ SPP Secondary
 -------------
 
 Secondary process behaves as a client of primary process and a worker
-for doing tasks for packet processing.
+for doing tasks for packet processing. There are several kinds of secondary
+process, for example, simply forwarding between ports or classsifying
+by referring packet header.
 
-This section describes about ``spp_nfv`` and ``spp_vm``,
-which just simply forward packets similar to ``l2fwd``.
-The difference between them is running on host or VM.
-``spp_vm`` runs inside a VM as described in name.
+This section describes about the simplest ``spp_nfv`` which simply forward
+packets similar to ``l2fwd``.
 
 
 Launch spp_nfv on Host
@@ -301,8 +301,8 @@ unique among all of secondaries.
 If you attempt to launch a secondary process with the same ID, it
 is failed.
 
-Launch spp_vf on VM
-~~~~~~~~~~~~~~~~~~~
+Launch SPP on VM
+~~~~~~~~~~~~~~~~
 
 To communicate DPDK application running on a VM,
 it is required to create a virtual device for the VM.
@@ -317,7 +317,7 @@ Run ``add`` command with resource UID ``vhost:0`` to create socket file.
 
     spp > nfv 1; add vhost:0
 
-In this example, create socket file with index 0 from ``spp_nfv`` of ID 1.
+In this example, it creates socket file with index 0 from ``spp_nfv`` of ID 1.
 Socket file is created as ``/tmp/sock0``.
 It is used as a qemu option to add vhost interface.
 
@@ -370,54 +370,3 @@ For other options, please refer to
     to the VMs. It is just one time for installing for template.
 
 After booted, you install DPDK and SPP in the VM as in the host.
-
-Run ``spp_vm`` with options.
-
-.. code-block:: console
-
-    $ cd /path/to/spp
-    $ sudo ./src/vm/x86_64-native-linuxapp-gcc/spp_vm \
-        -l 0-1 -n 4 \
-        --proc-type=primary \
-        -- \
-        -p 0x01 \
-        -n 1 \
-        -s 192.168.1.100:6666
-
-- EAL options:
-
-  - -l: core list (two cores required)
-  - --proc-type: process type
-
-- Application options:
-
-  - -p: port mask
-  - -n: secondary ID
-  - -s: IP address of controller and port prepared for secondary
-
-``spp_vm`` is also managed from SPP controller as same as on host.
-Secondary ID is used to identify for sending messages and must be
-unique among all of secondaries.
-If you attempt to launch a secondary process with the same ID,
-it is failed.
-
-In this case, port mask option is ``-p 0x01`` (using one port) because
-the VM is launched with just one vhost interface.
-You can use two or more ports if you launch VM with several
-``vhost-user`` and ``virtio-net-pci`` interfaces.
-
-Notice that ``spp_vm`` takes options similar to ``spp_primary``, not
-``spp_nfv``.
-It means that ``spp_vm`` has responsibilities for initializing EAL
-and forwarding packets in the VM.
-
-.. note::
-
-    ``spp_vm`` is actually running as primary process on a VM,
-    but managed as secondary process from SPP controller.
-    SPP does not support running resource manager as primary inside
-    a VM. Client behaves as secondary, but actually a primary, running
-    on the VM to communicate with other SPP procesess on host.
-
-    ``spp_vm`` must be launched with ``--proc-type=primary`` and
-    ``-p [PORTMASK]`` options similar to primary to initialize EAL.
-- 
2.7.4

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

* [spp] [PATCH 2/7] docs: remove spp_vm from spp-ctl API
  2019-01-17  2:46 [spp] [PATCH 0/7] Remove spp_vm from documentation ogawa.yasufumi
  2019-01-17  2:46 ` [spp] [PATCH 1/7] docs: remove spp_vm from howto use section ogawa.yasufumi
@ 2019-01-17  2:46 ` ogawa.yasufumi
  2019-01-17  2:46 ` [spp] [PATCH 3/7] docs: remove spp_vm from SPP container ogawa.yasufumi
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: ogawa.yasufumi @ 2019-01-17  2:46 UTC (permalink / raw)
  To: ferruh.yigit, spp, ogawa.yasufumi

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

Remove spp_vm from spp-ctl REST API reference.

Signed-off-by: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>
---
 docs/guides/api_ref/spp-ctl.rst | 30 +++++++++++++++---------------
 1 file changed, 15 insertions(+), 15 deletions(-)

diff --git a/docs/guides/api_ref/spp-ctl.rst b/docs/guides/api_ref/spp-ctl.rst
index 237f91e..7502360 100644
--- a/docs/guides/api_ref/spp-ctl.rst
+++ b/docs/guides/api_ref/spp-ctl.rst
@@ -285,13 +285,13 @@ Response
 There is no body content for the response of a successful ``DELETE`` request.
 
 
-API for spp_nfv/spp_vm
-----------------------
+API for spp_nfv
+---------------
 
 GET /v1/nfvs/{client_id}
 ~~~~~~~~~~~~~~~~~~~~~~~~
 
-Get the information of the ``spp_nfv`` or ``spp_vm`` process.
+Get the information of ``spp_nfv``.
 
 * Normal response codes: 200
 * Error response codes: 400, 404
@@ -301,7 +301,7 @@ Request(path)
 
 .. _table_spp_ctl_nfvs_get:
 
-.. table:: Request parameter for getting spp_nfv or spp_vm info.
+.. table:: Request parameter for getting info of ``spp_nfv``.
 
     +-----------+---------+-------------------------------------+
     | Name      | Type    | Description                         |
@@ -323,7 +323,7 @@ Response
 
 .. _table_spp_ctl_spp_nfv_res:
 
-.. table:: Response params of getting spp_nfv or spp_vm info.
+.. table:: Response params of getting info of ``spp_nfv``.
 
     +-----------+---------+---------------------------------------------+
     | Name      | Type    | Description                                 |
@@ -342,7 +342,7 @@ patch objest
 
 .. _table_spp_ctl_patch_spp_nfv:
 
-.. table:: Attributes of patch of spp_nfv or spp_vm.
+.. table:: Attributes of patch command of ``spp_nfv``.
 
     +------+--------+----------------------------------------------+
     | Name | Type   | Description                                  |
@@ -395,7 +395,7 @@ Request(path)
 
 .. _table_spp_ctl_spp_nfv_forward_get:
 
-.. table:: Request params of forward of spp_nfv or spp_vm.
+.. table:: Request params of forward command of ``spp_nfv``.
 
     +-----------+---------+---------------------------------+
     | Name      | Type    | Description                     |
@@ -418,7 +418,7 @@ Request(body)
 
 .. _table_spp_ctl_spp_nfv_forward_get_body:
 
-.. table:: Request body params of forward of spp_nfv or spp_vm.
+.. table:: Request body params of forward of ``spp_nfv``.
 
     +--------+--------+-------------------------------------+
     | Name   | Type   | Description                         |
@@ -461,7 +461,7 @@ Request(path)
 
 .. _table_spp_ctl_spp_nfv_ports_get:
 
-.. table:: Request params of ports of spp_nfv or spp_vm.
+.. table:: Request params of ports of ``spp_nfv``.
 
     +-----------+---------+--------------------------------+
     | Name      | Type    | Description                    |
@@ -475,7 +475,7 @@ Request(body)
 
 .. _table_spp_ctl_spp_nfv_ports_get_body:
 
-.. table:: Request body params of ports of spp_nfv or spp_vm.
+.. table:: Request body params of ports of ``spp_nfv``.
 
     +--------+--------+---------------------------------------------------------------+
     | Name   | Type   | Description                                                   |
@@ -521,7 +521,7 @@ Request(path)
 
 .. _table_spp_ctl_spp_nfv_patches_get:
 
-.. table:: Request params of patches of spp_nfv or spp_vm.
+.. table:: Request params of patches of ``spp_nfv``.
 
     +-----------+---------+---------------------------------+
     | Name      | Type    | Description                     |
@@ -535,7 +535,7 @@ Request(body)
 
 .. _table_spp_ctl_spp_nfv_ports_patches_body:
 
-.. table:: Request body params of patches of spp_nfv or spp_vm.
+.. table:: Request body params of patches of ``spp_nfv``.
 
     +------+--------+------------------------------------+
     | Name | Type   | Description                        |
@@ -581,7 +581,7 @@ Request(path)
 
 .. _table_spp_ctl_spp_nfv_del_patches:
 
-.. table:: Request params of deleting patches of spp_nfv or spp_vm.
+.. table:: Request params of deleting patches of ``spp_nfv``.
 
     +-----------+---------+---------------------------------------+
     | Name      | Type    | Description                           |
@@ -614,7 +614,7 @@ Equivalent CLI command
 DELETE /v1/nfvs/{client_id}
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-Terminate ``spp_nfv`` or ``spp_vm`` process.
+Terminate ``spp_nfv``.
 
 * Normal response codes: 204
 * Error response codes: 400, 404
@@ -624,7 +624,7 @@ Request(path)
 
 .. _table_spp_ctl_nfvs_delete:
 
-.. table:: Request parameter for terminating spp_nfv or spp_vm.
+.. table:: Request parameter for terminating ``spp_nfv``.
 
     +-----------+---------+-------------------------------------+
     | Name      | Type    | Description                         |
-- 
2.7.4

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

* [spp] [PATCH 3/7] docs: remove spp_vm from SPP container
  2019-01-17  2:46 [spp] [PATCH 0/7] Remove spp_vm from documentation ogawa.yasufumi
  2019-01-17  2:46 ` [spp] [PATCH 1/7] docs: remove spp_vm from howto use section ogawa.yasufumi
  2019-01-17  2:46 ` [spp] [PATCH 2/7] docs: remove spp_vm from spp-ctl API ogawa.yasufumi
@ 2019-01-17  2:46 ` ogawa.yasufumi
  2019-01-17  2:46 ` [spp] [PATCH 4/7] docs: remove spp_vm from usecases ogawa.yasufumi
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: ogawa.yasufumi @ 2019-01-17  2:46 UTC (permalink / raw)
  To: ferruh.yigit, spp, ogawa.yasufumi

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

Remove descriptions for spp_vm from SPP Container chapter.

Signed-off-by: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>
---
 docs/guides/tools/sppc/app_launcher.rst    | 32 ++----------------------------
 docs/guides/tools/sppc/getting_started.rst |  8 ++------
 docs/guides/tools/sppc/usecases.rst        |  3 +--
 3 files changed, 5 insertions(+), 38 deletions(-)

diff --git a/docs/guides/tools/sppc/app_launcher.rst b/docs/guides/tools/sppc/app_launcher.rst
index bf126bc..2525740 100644
--- a/docs/guides/tools/sppc/app_launcher.rst
+++ b/docs/guides/tools/sppc/app_launcher.rst
@@ -24,7 +24,6 @@ inside a container.
     |--- pktgen.py
     |--- spp-nfv.py
     |--- spp-primary.py
-    |--- spp-vm.py
     ---- testpmd.py
 
 
@@ -190,19 +189,8 @@ SPP Secondary Container
 -----------------------
 
 In SPP, there are three types of secondary process, ``spp_nfv``,
-``spp_vm`` and  ``spp_vf``.
-However, SPP container does not support ``spp_vf`` currently.
-
-``spp_nfv`` is usually used for forwarding packets on host and
-``spp_vm`` is used for insidea a virtual machine.
-However, in a context of container, the usage is just a bit different.
-Both of secondary processes are launched as app containers,
-but ``spp_vm`` container has virtio interfaces while ``spp_nfv``
-container does not have it.
-It means that ``spp_nfv`` behaves as a path between NICs or containers,
-but ``spp_vm`` is a client of ``spp_nfv`` and simply forwarding from rx
-to tx ports. You do not need to use ``spp_vm`` without some cases for
-using virtual machines.
+``spp_vf`` or so.
+However, SPP container does only support ``spp_nfv`` currently.
 
 ``spp-nfv.py`` launches ``spp_nfv`` as an app container and requires
 options for secondary ID and core list (or core mask).
@@ -238,22 +226,6 @@ It shows only application specific options for simplicity.
       ...
 
 
-For launching ``spp_vm`` for vhost interface, it is required to assign
-a vhost device ID from ``app/spp-nfv.py`` and launch ``app/spp-vm.py``
-with same ID..
-
-.. code-block:: console
-
-    # Add vhost 1 from spp-nfv.py of sec 1
-    spp > sec 1;add vhost 1
-
-Launch a secondary container with device ID 1.
-
-.. code-block:: console
-
-    $ python app/spp-vm.py -i 2 -l 4-5 -d 1
-
-
 .. _sppc_appl_l2fwd:
 
 L2fwd Container
diff --git a/docs/guides/tools/sppc/getting_started.rst b/docs/guides/tools/sppc/getting_started.rst
index c0970a3..6a40b12 100644
--- a/docs/guides/tools/sppc/getting_started.rst
+++ b/docs/guides/tools/sppc/getting_started.rst
@@ -196,13 +196,9 @@ and two ports.
 SPP Secondary Container
 ~~~~~~~~~~~~~~~~~~~~~~~
 
-For secondary process, there are two launcher scripts,
-``spp-nfv.py`` and ``spp-vm.py``.
-There behave as similar to ``spp_nfv`` running on host and
-``spp_vm`` on guest VM.
-The difference is that both of them are running on containers.
+For secondary process, ``spp_nfv`` is only supported for running on container
+currently.
 
-You use only ``spp_nfv.py`` in this guide.
 Launch ``spp_nfv`` in terminal 3
 with options for secondary ID is ``1`` and
 core list is ``1-2`` for using 2nd and 3rd cores.
diff --git a/docs/guides/tools/sppc/usecases.rst b/docs/guides/tools/sppc/usecases.rst
index 216c2bc..80f0fac 100644
--- a/docs/guides/tools/sppc/usecases.rst
+++ b/docs/guides/tools/sppc/usecases.rst
@@ -130,8 +130,7 @@ Performance Test of Ring
 Ring PMD is a very fast path to communicate between DPDK processes.
 It is a kind of zero-copy data passing via shared memory and better
 performance than vhost PMD.
-Currently, only ``spp_nfv`` and ``spp_vm`` provide ring PMD in SPP
-container.
+Currently, only ``spp_nfv`` provides ring PMD in SPP container.
 It is also possible other DPDK applications to have ring PMD interface
 for SPP technically,
 but not implemented yet.
-- 
2.7.4

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

* [spp] [PATCH 4/7] docs: remove spp_vm from usecases
  2019-01-17  2:46 [spp] [PATCH 0/7] Remove spp_vm from documentation ogawa.yasufumi
                   ` (2 preceding siblings ...)
  2019-01-17  2:46 ` [spp] [PATCH 3/7] docs: remove spp_vm from SPP container ogawa.yasufumi
@ 2019-01-17  2:46 ` ogawa.yasufumi
  2019-01-17  2:46 ` [spp] [PATCH 5/7] docs: remove spp_vm from secondary commands ogawa.yasufumi
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: ogawa.yasufumi @ 2019-01-17  2:46 UTC (permalink / raw)
  To: ferruh.yigit, spp, ogawa.yasufumi

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

Remove descriptions of spp_vm from Use Cases.

Signed-off-by: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>
---
 .../images/setup/use_cases/spp_nfv_l2fwd_vhost.svg | 759 +++++++++++++++++++++
 .../setup/use_cases/spp_unidir_l2fwd_vhost.svg     | 759 ---------------------
 docs/guides/use_cases/spp_nfv.rst                  |  42 +-
 3 files changed, 779 insertions(+), 781 deletions(-)
 create mode 100644 docs/guides/images/setup/use_cases/spp_nfv_l2fwd_vhost.svg
 delete mode 100644 docs/guides/images/setup/use_cases/spp_unidir_l2fwd_vhost.svg

diff --git a/docs/guides/images/setup/use_cases/spp_nfv_l2fwd_vhost.svg b/docs/guides/images/setup/use_cases/spp_nfv_l2fwd_vhost.svg
new file mode 100644
index 0000000..7e862f5
--- /dev/null
+++ b/docs/guides/images/setup/use_cases/spp_nfv_l2fwd_vhost.svg
@@ -0,0 +1,759 @@
+<?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="180mm"
+   height="135mm"
+   viewBox="0 0 637.79528 478.34647"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="spp_unidir_l2fwd_vhost.svg">
+  <defs
+     id="defs4">
+    <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:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;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="marker4460"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend"
+       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:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path4463"
+         inkscape:connector-curvature="0" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker5907"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend"
+       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:#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 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:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker5312-9"
+       style="overflow:visible"
+       inkscape:isstock="true"
+       inkscape:collect="always">
+      <path
+         inkscape:connector-curvature="0"
+         id="path5314-3"
+         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)" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker5907-5"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend"
+       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:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path5909-6"
+         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="marker5907-5-7"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend"
+       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:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path5909-6-0"
+         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="marker5907-5-7-6"
+       refX="0"
+       refY="0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend"
+       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:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+         id="path5909-6-0-2"
+         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="298.8972"
+     inkscape:cy="210.56742"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="false"
+     inkscape:window-width="1500"
+     inkscape:window-height="936"
+     inkscape:window-x="119"
+     inkscape:window-y="106"
+     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,-574.01552)"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.66778219;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4136"
+       width="607.27197"
+       height="419.63162"
+       x="13.191025"
+       y="587.25366" />
+    <rect
+       style="opacity:1;fill:#ffff6e;fill-opacity:1;stroke:#000000;stroke-width:1.07469606;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4142"
+       width="73.925301"
+       height="33.925304"
+       x="278.03732"
+       y="973.25671" />
+    <rect
+       style="opacity:1;fill:#ffff6e;fill-opacity:1;stroke:#000000;stroke-width:0.81819206;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4144"
+       width="74.181808"
+       height="34.181808"
+       x="435.62335"
+       y="972.55701" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.96287978px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker4460)"
+       d="m 314.96454,973.57006 c 1.10978,-39.69455 14.69105,-50.28897 32.85715,-50.18545"
+       id="path4752"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.02444935px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker5312-9)"
+       d="m 442.58687,922.05111 c 23.54141,0.76705 32.43981,13.05586 33.36223,48.75679"
+       id="path4756-5-6"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="VM"
+     transform="translate(0,187.79526)">
+    <rect
+       style="fill:#f8f8f8;fill-opacity:1;stroke:#000000;stroke-width:0.790241;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4591"
+       width="224.50711"
+       height="175.41063"
+       x="279.90866"
+       y="-161.47366" />
+    <rect
+       style="display:inline;opacity:1;fill:#ffff6e;fill-opacity:1;stroke:#000000;stroke-width:0.95749038;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4144-3"
+       width="74.042519"
+       height="46.899658"
+       x="357.44586"
+       y="-34.169937" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="App"
+     transform="translate(0,-574.01552)"
+     style="display:inline">
+    <rect
+       style="opacity:1;fill:#ffffd3;fill-opacity:1;stroke:#000000;stroke-width:0.72706509;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4216"
+       width="134.27293"
+       height="39.272934"
+       x="55.00639"
+       y="860.70007"
+       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="48.548523"
+       y="931.95642"
+       ry="19.522905" />
+    <rect
+       style="opacity:1;fill:#ffffd3;fill-opacity:1;stroke:#000000;stroke-width:1.1631304;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4231"
+       width="93.887634"
+       height="55.050079"
+       x="348.08154"
+       y="892.08771"
+       ry="27.52504" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5091)"
+       d="m 315.71426,1044.3622 0,-35.7143"
+       id="path4427"
+       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(#marker5907)"
+       d="m 475.14283,1008.6479 0,32.8572"
+       id="path4429"
+       inkscape:connector-curvature="0" />
+    <rect
+       style="display:inline;opacity:1;fill:#ffffd3;fill-opacity:1;stroke:#000000;stroke-width:1.1631304;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4231-3"
+       width="93.887642"
+       height="55.050087"
+       x="348.20352"
+       y="641.62866"
+       ry="27.525043" />
+    <ellipse
+       style="display:inline;opacity:1;fill:#cbffce;fill-opacity:1;stroke:#000000;stroke-width:0.87417513;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path4301"
+       cx="395.07123"
+       cy="832.85687"
+       rx="41.838116"
+       ry="22.169876" />
+    <path
+       style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5091-2)"
+       d="m 374.28574,890.7693 0,-35.71432"
+       id="path4427-1"
+       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;marker-end:url(#marker5907-5)"
+       d="m 415.71433,852.76927 0,37.14293"
+       id="path4429-2"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5091-2-9)"
+       d="m 373.7143,813.9547 0,-35.71432"
+       id="path4427-1-6"
+       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;marker-end:url(#marker5907-5-7)"
+       d="m 415.14289,775.95467 0,37.14293"
+       id="path4429-2-0"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5091-2-9-6)"
+       d="m 375.14287,726.66899 0,-27.14289"
+       id="path4427-1-6-8"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker5907-5-7-6)"
+       d="m 416.57147,695.95467 0,28.5715"
+       id="path4429-2-0-7"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="Label"
+     style="display:inline"
+     transform="translate(0,-574.01552)">
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:17.50000191px;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="120.57143"
+       y="885.83649"
+       id="text4201"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4203"
+         x="120.57143"
+         y="885.83649">spp_primary</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:17.50000191px;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="393.42859"
+       y="910.93365"
+       id="text4205"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4207"
+         x="393.42859"
+         y="910.93365">spp_nfv</tspan><tspan
+         sodipodi:role="line"
+         x="393.42859"
+         y="932.80865"
+         id="tspan4269">(sec 1)</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:17.50000191px;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="121.42858"
+       y="956.40796"
+       id="text4225"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4227"
+         x="121.42858"
+         y="956.40796">spp controller</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:17.50000191px;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="315.14285"
+       y="994.07648"
+       id="text4319"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4321"
+         x="315.14285"
+         y="994.07648">phy:0</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:17.50000191px;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="472.57147"
+       y="994.36218"
+       id="text4323"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4325"
+         x="472.57147"
+         y="994.36218">phy:1</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:17.50000191px;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="121.71429"
+       y="615.99158"
+       id="text4327"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4329"
+         x="121.71429"
+         y="615.99158">host (192.168.122.1)</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:17.50000191px;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="393.55054"
+       y="660.47461"
+       id="text4205-6"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4207-7"
+         x="393.55054"
+         y="660.47461">spp_vm</tspan><tspan
+         sodipodi:role="line"
+         x="393.55054"
+         y="682.34961"
+         id="tspan4269-5">(sec 2)</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;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="366.08136"
+       y="837.53528"
+       id="text4359"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4361"
+         x="366.08136"
+         y="837.53528">vhost:0</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:17.50000191px;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="395.3548"
+       y="746.27411"
+       id="text4323-6"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         x="395.3548"
+         y="746.27411"
+         id="tspan4621">phy:0</tspan><tspan
+         sodipodi:role="line"
+         x="395.3548"
+         y="768.14911"
+         id="tspan3434">(virtio)</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:17.50000191px;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="391.00516"
+       y="624.06604"
+       id="text4327-5"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4329-3"
+         x="391.00516"
+         y="624.06604">guest (192.168.122.51)</tspan></text>
+  </g>
+</svg>
diff --git a/docs/guides/images/setup/use_cases/spp_unidir_l2fwd_vhost.svg b/docs/guides/images/setup/use_cases/spp_unidir_l2fwd_vhost.svg
deleted file mode 100644
index 7e862f5..0000000
--- a/docs/guides/images/setup/use_cases/spp_unidir_l2fwd_vhost.svg
+++ /dev/null
@@ -1,759 +0,0 @@
-<?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="180mm"
-   height="135mm"
-   viewBox="0 0 637.79528 478.34647"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="spp_unidir_l2fwd_vhost.svg">
-  <defs
-     id="defs4">
-    <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:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;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="marker4460"
-       refX="0"
-       refY="0"
-       orient="auto"
-       inkscape:stockid="Arrow2Lend"
-       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:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         id="path4463"
-         inkscape:connector-curvature="0" />
-    </marker>
-    <marker
-       inkscape:isstock="true"
-       style="overflow:visible"
-       id="marker5907"
-       refX="0"
-       refY="0"
-       orient="auto"
-       inkscape:stockid="Arrow2Lend"
-       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:#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 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:stockid="Arrow2Lend"
-       orient="auto"
-       refY="0"
-       refX="0"
-       id="marker5312-9"
-       style="overflow:visible"
-       inkscape:isstock="true"
-       inkscape:collect="always">
-      <path
-         inkscape:connector-curvature="0"
-         id="path5314-3"
-         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)" />
-    </marker>
-    <marker
-       inkscape:isstock="true"
-       style="overflow:visible"
-       id="marker5907-5"
-       refX="0"
-       refY="0"
-       orient="auto"
-       inkscape:stockid="Arrow2Lend"
-       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:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         id="path5909-6"
-         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="marker5907-5-7"
-       refX="0"
-       refY="0"
-       orient="auto"
-       inkscape:stockid="Arrow2Lend"
-       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:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         id="path5909-6-0"
-         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="marker5907-5-7-6"
-       refX="0"
-       refY="0"
-       orient="auto"
-       inkscape:stockid="Arrow2Lend"
-       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:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
-         id="path5909-6-0-2"
-         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="298.8972"
-     inkscape:cy="210.56742"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer4"
-     showgrid="false"
-     inkscape:window-width="1500"
-     inkscape:window-height="936"
-     inkscape:window-x="119"
-     inkscape:window-y="106"
-     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,-574.01552)"
-     style="display:inline">
-    <rect
-       style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.66778219;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect4136"
-       width="607.27197"
-       height="419.63162"
-       x="13.191025"
-       y="587.25366" />
-    <rect
-       style="opacity:1;fill:#ffff6e;fill-opacity:1;stroke:#000000;stroke-width:1.07469606;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect4142"
-       width="73.925301"
-       height="33.925304"
-       x="278.03732"
-       y="973.25671" />
-    <rect
-       style="opacity:1;fill:#ffff6e;fill-opacity:1;stroke:#000000;stroke-width:0.81819206;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect4144"
-       width="74.181808"
-       height="34.181808"
-       x="435.62335"
-       y="972.55701" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.96287978px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker4460)"
-       d="m 314.96454,973.57006 c 1.10978,-39.69455 14.69105,-50.28897 32.85715,-50.18545"
-       id="path4752"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-    <path
-       style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.02444935px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker5312-9)"
-       d="m 442.58687,922.05111 c 23.54141,0.76705 32.43981,13.05586 33.36223,48.75679"
-       id="path4756-5-6"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-  </g>
-  <g
-     inkscape:groupmode="layer"
-     id="layer2"
-     inkscape:label="VM"
-     transform="translate(0,187.79526)">
-    <rect
-       style="fill:#f8f8f8;fill-opacity:1;stroke:#000000;stroke-width:0.790241;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="rect4591"
-       width="224.50711"
-       height="175.41063"
-       x="279.90866"
-       y="-161.47366" />
-    <rect
-       style="display:inline;opacity:1;fill:#ffff6e;fill-opacity:1;stroke:#000000;stroke-width:0.95749038;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect4144-3"
-       width="74.042519"
-       height="46.899658"
-       x="357.44586"
-       y="-34.169937" />
-  </g>
-  <g
-     inkscape:groupmode="layer"
-     id="layer5"
-     inkscape:label="App"
-     transform="translate(0,-574.01552)"
-     style="display:inline">
-    <rect
-       style="opacity:1;fill:#ffffd3;fill-opacity:1;stroke:#000000;stroke-width:0.72706509;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect4216"
-       width="134.27293"
-       height="39.272934"
-       x="55.00639"
-       y="860.70007"
-       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="48.548523"
-       y="931.95642"
-       ry="19.522905" />
-    <rect
-       style="opacity:1;fill:#ffffd3;fill-opacity:1;stroke:#000000;stroke-width:1.1631304;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect4231"
-       width="93.887634"
-       height="55.050079"
-       x="348.08154"
-       y="892.08771"
-       ry="27.52504" />
-    <path
-       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5091)"
-       d="m 315.71426,1044.3622 0,-35.7143"
-       id="path4427"
-       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(#marker5907)"
-       d="m 475.14283,1008.6479 0,32.8572"
-       id="path4429"
-       inkscape:connector-curvature="0" />
-    <rect
-       style="display:inline;opacity:1;fill:#ffffd3;fill-opacity:1;stroke:#000000;stroke-width:1.1631304;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="rect4231-3"
-       width="93.887642"
-       height="55.050087"
-       x="348.20352"
-       y="641.62866"
-       ry="27.525043" />
-    <ellipse
-       style="display:inline;opacity:1;fill:#cbffce;fill-opacity:1;stroke:#000000;stroke-width:0.87417513;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
-       id="path4301"
-       cx="395.07123"
-       cy="832.85687"
-       rx="41.838116"
-       ry="22.169876" />
-    <path
-       style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5091-2)"
-       d="m 374.28574,890.7693 0,-35.71432"
-       id="path4427-1"
-       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;marker-end:url(#marker5907-5)"
-       d="m 415.71433,852.76927 0,37.14293"
-       id="path4429-2"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-    <path
-       style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5091-2-9)"
-       d="m 373.7143,813.9547 0,-35.71432"
-       id="path4427-1-6"
-       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;marker-end:url(#marker5907-5-7)"
-       d="m 415.14289,775.95467 0,37.14293"
-       id="path4429-2-0"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-    <path
-       style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5091-2-9-6)"
-       d="m 375.14287,726.66899 0,-27.14289"
-       id="path4427-1-6-8"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-    <path
-       style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker5907-5-7-6)"
-       d="m 416.57147,695.95467 0,28.5715"
-       id="path4429-2-0-7"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="cc" />
-  </g>
-  <g
-     inkscape:groupmode="layer"
-     id="layer4"
-     inkscape:label="Label"
-     style="display:inline"
-     transform="translate(0,-574.01552)">
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:17.50000191px;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="120.57143"
-       y="885.83649"
-       id="text4201"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         id="tspan4203"
-         x="120.57143"
-         y="885.83649">spp_primary</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:17.50000191px;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="393.42859"
-       y="910.93365"
-       id="text4205"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         id="tspan4207"
-         x="393.42859"
-         y="910.93365">spp_nfv</tspan><tspan
-         sodipodi:role="line"
-         x="393.42859"
-         y="932.80865"
-         id="tspan4269">(sec 1)</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:17.50000191px;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="121.42858"
-       y="956.40796"
-       id="text4225"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         id="tspan4227"
-         x="121.42858"
-         y="956.40796">spp controller</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:17.50000191px;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="315.14285"
-       y="994.07648"
-       id="text4319"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         id="tspan4321"
-         x="315.14285"
-         y="994.07648">phy:0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:17.50000191px;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="472.57147"
-       y="994.36218"
-       id="text4323"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         id="tspan4325"
-         x="472.57147"
-         y="994.36218">phy:1</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:17.50000191px;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="121.71429"
-       y="615.99158"
-       id="text4327"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         id="tspan4329"
-         x="121.71429"
-         y="615.99158">host (192.168.122.1)</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:17.50000191px;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="393.55054"
-       y="660.47461"
-       id="text4205-6"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         id="tspan4207-7"
-         x="393.55054"
-         y="660.47461">spp_vm</tspan><tspan
-         sodipodi:role="line"
-         x="393.55054"
-         y="682.34961"
-         id="tspan4269-5">(sec 2)</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;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       x="366.08136"
-       y="837.53528"
-       id="text4359"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         id="tspan4361"
-         x="366.08136"
-         y="837.53528">vhost:0</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:17.50000191px;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="395.3548"
-       y="746.27411"
-       id="text4323-6"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         x="395.3548"
-         y="746.27411"
-         id="tspan4621">phy:0</tspan><tspan
-         sodipodi:role="line"
-         x="395.3548"
-         y="768.14911"
-         id="tspan3434">(virtio)</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:17.50000191px;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="391.00516"
-       y="624.06604"
-       id="text4327-5"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         id="tspan4329-3"
-         x="391.00516"
-         y="624.06604">guest (192.168.122.51)</tspan></text>
-  </g>
-</svg>
diff --git a/docs/guides/use_cases/spp_nfv.rst b/docs/guides/use_cases/spp_nfv.rst
index 3e31508..8a8e509 100644
--- a/docs/guides/use_cases/spp_nfv.rst
+++ b/docs/guides/use_cases/spp_nfv.rst
@@ -324,10 +324,9 @@ creation.
 
 .. code-block:: console
 
+    # remove sock0 if already exist
     $ ls /tmp | grep sock
     sock0 ...
-
-    # remove it if exist
     $ sudo rm /tmp/sock0
 
 Create ``/tmp/sock0`` from ``nfv 1``.
@@ -338,41 +337,40 @@ Create ``/tmp/sock0`` from ``nfv 1``.
     Add vhost:0.
 
 
-.. _usecase_unidir_l2fwd_vhost:
+.. _usecase_spp_nfv_l2fwd_vhost_nw:
 
-Uni-Directional L2fwd with Vhost PMD
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Setup Network Configuration in spp_nfv
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-Launch a VM by using the vhost interface created as previous step.
+Launch a VM by using the vhost interface created in the 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.
+:ref:`How to Use<spp_setup_howto_use>`.
 
-Patch ``phy:0`` and ``phy:1`` to ``vhost:0`` with ``nfv 1``
+Patch ``phy:0`` to ``vhost:0`` and ``vhost:1`` to ``phy:1`` from ``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; patch vhost:1 phy:1
+    Patch ports (vhost:1 -> phy:1).
     spp > nfv 1; forward
     Start forwarding.
-    spp > nfv 2; forward
-    Start forwarding.
 
-.. _figure_spp_uni_directional_l2fwd_vhost:
+Finally, start forwarding inside the VM by using two vhost ports
+to confirm that network on host is configured.
+
+.. code-block:: console
+
+    $ sudo $RE_SDK/examples/build/l2fwd -l 0-1 -- -p 0x03
+
+.. _figure_spp_nfv_l2fwd_vhost:
 
-.. figure:: ../images/setup/use_cases/spp_unidir_l2fwd_vhost.*
+.. figure:: ../images/setup/use_cases/spp_nfv_l2fwd_vhost.*
    :width: 72%
 
-   Uni-Directional l2fwd with vhost
+   Single spp_nfv with vhost PMD
 
 Single spp_nfv with PCAP PMD
 -----------------------------
@@ -625,7 +623,7 @@ Configure Service VM Nodes
 ~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 It is almost similar as
-:ref:`Uni-Directional L2fwd with Vhost PMD<usecase_unidir_l2fwd_vhost>`.
+:ref:`Setup Network Configuration in spp_nfv<usecase_spp_nfv_l2fwd_vhost_nw>`
 to setup for host2, host3, and host4.
 
 For host2, swith server to host2 and run nfv commands.
-- 
2.7.4

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

* [spp] [PATCH 5/7] docs: remove spp_vm from secondary commands
  2019-01-17  2:46 [spp] [PATCH 0/7] Remove spp_vm from documentation ogawa.yasufumi
                   ` (3 preceding siblings ...)
  2019-01-17  2:46 ` [spp] [PATCH 4/7] docs: remove spp_vm from usecases ogawa.yasufumi
@ 2019-01-17  2:46 ` ogawa.yasufumi
  2019-01-17  2:46 ` [spp] [PATCH 6/7] docs: remove spp_vf from image of usecase ogawa.yasufumi
  2019-01-17  2:46 ` [spp] [PATCH 7/7] docs: update hugepages setup ogawa.yasufumi
  6 siblings, 0 replies; 8+ messages in thread
From: ogawa.yasufumi @ 2019-01-17  2:46 UTC (permalink / raw)
  To: ferruh.yigit, spp, ogawa.yasufumi

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

Remove spp_vm from Secondary Commands reference.

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

diff --git a/docs/guides/commands/secondary/spp_vf.rst b/docs/guides/commands/secondary/spp_vf.rst
index cbb4859..3cf1cca 100644
--- a/docs/guides/commands/secondary/spp_vf.rst
+++ b/docs/guides/commands/secondary/spp_vf.rst
@@ -15,7 +15,7 @@ configuration, assigning or releasing resources.
 
 Secondary ID is referred as ``--client-id`` which is given as an argument
 while launching ``spp_vf``. It should be unique among all of secondary
-processes including ``spp_nfv``, ``spp_vm`` and others.
+processes including ``spp_nfv`` and others.
 
 ``vf`` command takes an secondary ID and one of sub commands. Secondary ID
 and sub command should be separated with delimiter ``;``, or failed to a
-- 
2.7.4

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

* [spp] [PATCH 6/7] docs: remove spp_vf from image of usecase
  2019-01-17  2:46 [spp] [PATCH 0/7] Remove spp_vm from documentation ogawa.yasufumi
                   ` (4 preceding siblings ...)
  2019-01-17  2:46 ` [spp] [PATCH 5/7] docs: remove spp_vm from secondary commands ogawa.yasufumi
@ 2019-01-17  2:46 ` ogawa.yasufumi
  2019-01-17  2:46 ` [spp] [PATCH 7/7] docs: update hugepages setup ogawa.yasufumi
  6 siblings, 0 replies; 8+ messages in thread
From: ogawa.yasufumi @ 2019-01-17  2:46 UTC (permalink / raw)
  To: ferruh.yigit, spp, ogawa.yasufumi

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

Remove spp_vm from image of usecase of vhost PMD.

Signed-off-by: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>
---
 .../images/setup/use_cases/spp_nfv_l2fwd_vhost.svg | 110 ++++++++++++---------
 1 file changed, 65 insertions(+), 45 deletions(-)

diff --git a/docs/guides/images/setup/use_cases/spp_nfv_l2fwd_vhost.svg b/docs/guides/images/setup/use_cases/spp_nfv_l2fwd_vhost.svg
index 7e862f5..5e9de18 100644
--- a/docs/guides/images/setup/use_cases/spp_nfv_l2fwd_vhost.svg
+++ b/docs/guides/images/setup/use_cases/spp_nfv_l2fwd_vhost.svg
@@ -15,7 +15,7 @@
    id="svg2"
    version="1.1"
    inkscape:version="0.91 r13725"
-   sodipodi:docname="spp_unidir_l2fwd_vhost.svg">
+   sodipodi:docname="spp_nfv_l2fwd_vhost.svg">
   <defs
      id="defs4">
     <marker
@@ -452,9 +452,9 @@
      borderopacity="1.0"
      inkscape:pageopacity="0.0"
      inkscape:pageshadow="2"
-     inkscape:zoom="1.4"
-     inkscape:cx="298.8972"
-     inkscape:cy="210.56742"
+     inkscape:zoom="0.98994949"
+     inkscape:cx="287.54093"
+     inkscape:cy="189.20417"
      inkscape:document-units="px"
      inkscape:current-layer="layer4"
      showgrid="false"
@@ -534,8 +534,15 @@
        id="rect4144-3"
        width="74.042519"
        height="46.899658"
-       x="357.44586"
+       x="291.44586"
        y="-34.169937" />
+    <rect
+       style="display:inline;opacity:1;fill:#ffff6e;fill-opacity:1;stroke:#000000;stroke-width:0.95749038;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect4144-3-3"
+       width="74.042519"
+       height="46.899658"
+       x="420.77573"
+       y="-34.324032" />
   </g>
   <g
      inkscape:groupmode="layer"
@@ -552,14 +559,6 @@
        y="860.70007"
        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="48.548523"
-       y="931.95642"
-       ry="19.522905" />
-    <rect
        style="opacity:1;fill:#ffffd3;fill-opacity:1;stroke:#000000;stroke-width:1.1631304;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
        id="rect4231"
        width="93.887634"
@@ -588,44 +587,54 @@
     <ellipse
        style="display:inline;opacity:1;fill:#cbffce;fill-opacity:1;stroke:#000000;stroke-width:0.87417513;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
        id="path4301"
-       cx="395.07123"
+       cx="329.07123"
        cy="832.85687"
        rx="41.838116"
        ry="22.169876" />
     <path
        style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5091-2)"
-       d="m 374.28574,890.7693 0,-35.71432"
+       d="M 361.60047,895.77945 C 341.25488,890.14286 334.6717,873.33133 330.28574,857.05498"
        id="path4427-1"
-       inkscape:connector-curvature="0" />
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
     <path
        style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker5907-5)"
-       d="m 415.71433,852.76927 0,37.14293"
+       d="m 459.71433,854.76927 c 3.46737,19.50214 -8.26958,33.40213 -26.26397,42.17339"
        id="path4429-2"
        inkscape:connector-curvature="0"
        sodipodi:nodetypes="cc" />
     <path
        style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5091-2-9)"
-       d="m 373.7143,813.9547 0,-35.71432"
+       d="m 329.7143,809.9547 0,-31.71432"
        id="path4427-1-6"
-       inkscape:connector-curvature="0" />
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
     <path
        style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker5907-5-7)"
-       d="m 415.14289,775.95467 0,37.14293"
+       d="m 459.14289,775.95467 0,33.14293"
        id="path4429-2-0"
        inkscape:connector-curvature="0"
        sodipodi:nodetypes="cc" />
     <path
        style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000012;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker5091-2-9-6)"
-       d="m 375.14287,726.66899 0,-27.14289"
+       d="m 330.69616,726.66899 c -0.61665,-31.84605 5.48824,-27.43936 25.27412,-37.26472"
        id="path4427-1-6-8"
        inkscape:connector-curvature="0"
        sodipodi:nodetypes="cc" />
     <path
        style="display:inline;fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker5907-5-7-6)"
-       d="m 416.57147,695.95467 0,28.5715"
+       d="m 437.76437,683.83284 c 25.49266,9.39895 19.70082,19.42551 20.22335,41.72379"
        id="path4429-2-0-7"
        inkscape:connector-curvature="0"
        sodipodi:nodetypes="cc" />
+    <ellipse
+       transform="translate(0,761.81078)"
+       style="display:inline;opacity:1;fill:#cbffce;fill-opacity:1;stroke:#000000;stroke-width:0.87417513;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="path4301-6"
+       cx="458.40109"
+       cy="70.892014"
+       rx="41.838116"
+       ry="22.169876" />
   </g>
   <g
      inkscape:groupmode="layer"
@@ -662,17 +671,6 @@
     <text
        xml:space="preserve"
        style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:17.50000191px;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="121.42858"
-       y="956.40796"
-       id="text4225"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         id="tspan4227"
-         x="121.42858"
-         y="956.40796">spp controller</tspan></text>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:17.50000191px;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="315.14285"
        y="994.07648"
        id="text4319"
@@ -707,41 +705,37 @@
        xml:space="preserve"
        style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:17.50000191px;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="393.55054"
-       y="660.47461"
+       y="674.47461"
        id="text4205-6"
        sodipodi:linespacing="125%"><tspan
          sodipodi:role="line"
-         id="tspan4207-7"
-         x="393.55054"
-         y="660.47461">spp_vm</tspan><tspan
-         sodipodi:role="line"
          x="393.55054"
-         y="682.34961"
-         id="tspan4269-5">(sec 2)</tspan></text>
+         y="674.47461"
+         id="tspan4269-5">l2fwd</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;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       x="366.08136"
+       x="300.08136"
        y="837.53528"
        id="text4359"
        sodipodi:linespacing="125%"><tspan
          sodipodi:role="line"
          id="tspan4361"
-         x="366.08136"
+         x="300.08136"
          y="837.53528">vhost:0</tspan></text>
     <text
        xml:space="preserve"
        style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:17.50000191px;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="395.3548"
+       x="329.3548"
        y="746.27411"
        id="text4323-6"
        sodipodi:linespacing="125%"><tspan
          sodipodi:role="line"
-         x="395.3548"
+         x="329.3548"
          y="746.27411"
          id="tspan4621">phy:0</tspan><tspan
          sodipodi:role="line"
-         x="395.3548"
+         x="329.3548"
          y="768.14911"
          id="tspan3434">(virtio)</tspan></text>
     <text
@@ -755,5 +749,31 @@
          id="tspan4329-3"
          x="391.00516"
          y="624.06604">guest (192.168.122.51)</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:17.50000191px;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="459.34714"
+       y="745.25781"
+       id="text4323-6-7"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         x="459.34714"
+         y="745.25781"
+         id="tspan4621-5">phy:1</tspan><tspan
+         sodipodi:role="line"
+         x="459.34714"
+         y="767.13281"
+         id="tspan3434-3">(virtio)</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;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="430.52695"
+       y="837.64978"
+       id="text4359-5"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4361-6"
+         x="430.52695"
+         y="837.64978">vhost:1</tspan></text>
   </g>
 </svg>
-- 
2.7.4

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

* [spp] [PATCH 7/7] docs: update hugepages setup
  2019-01-17  2:46 [spp] [PATCH 0/7] Remove spp_vm from documentation ogawa.yasufumi
                   ` (5 preceding siblings ...)
  2019-01-17  2:46 ` [spp] [PATCH 6/7] docs: remove spp_vf from image of usecase ogawa.yasufumi
@ 2019-01-17  2:46 ` ogawa.yasufumi
  6 siblings, 0 replies; 8+ messages in thread
From: ogawa.yasufumi @ 2019-01-17  2:46 UTC (permalink / raw)
  To: ferruh.yigit, spp, ogawa.yasufumi

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

This patch is to update for `Reserving Hugepages` section in Setup
Guide.

* Add description for `update-grub` to activate hugepages config.

* Fix typo of how to confirm 1GB hugepages is supported.

Signed-off-by: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>
---
 docs/guides/setup/getting_started.rst | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/docs/guides/setup/getting_started.rst b/docs/guides/setup/getting_started.rst
index 5aaf0ed..9847903 100644
--- a/docs/guides/setup/getting_started.rst
+++ b/docs/guides/setup/getting_started.rst
@@ -45,7 +45,16 @@ is for the number of pages.
 
     .. code-block:: console
 
-        $ cat /proc/cpuinfo | pdpe1gb
+        $ cat /proc/cpuinfo | grep pdpe1gb
+        flags           : fpu vme ... pdpe1gb ...
+
+You should run ``update-grub`` after editing to update grub's config file,
+or this configuration is not activated.
+
+.. code-block:: console
+
+   $ sudo update-grub
+   Generating grub configuration file ...
 
 For 2MB page, you can activate hugepages while booting or at anytime
 after system is booted.
-- 
2.7.4

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

end of thread, other threads:[~2019-01-17  2:49 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-01-17  2:46 [spp] [PATCH 0/7] Remove spp_vm from documentation ogawa.yasufumi
2019-01-17  2:46 ` [spp] [PATCH 1/7] docs: remove spp_vm from howto use section ogawa.yasufumi
2019-01-17  2:46 ` [spp] [PATCH 2/7] docs: remove spp_vm from spp-ctl API ogawa.yasufumi
2019-01-17  2:46 ` [spp] [PATCH 3/7] docs: remove spp_vm from SPP container ogawa.yasufumi
2019-01-17  2:46 ` [spp] [PATCH 4/7] docs: remove spp_vm from usecases ogawa.yasufumi
2019-01-17  2:46 ` [spp] [PATCH 5/7] docs: remove spp_vm from secondary commands ogawa.yasufumi
2019-01-17  2:46 ` [spp] [PATCH 6/7] docs: remove spp_vf from image of usecase ogawa.yasufumi
2019-01-17  2:46 ` [spp] [PATCH 7/7] docs: update hugepages setup 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).