* [spp] [PATCH 0/3] add document of pipe PMD
@ 2020-04-12 23:00 Itsuro Oda
2020-04-12 23:00 ` [spp] [PATCH 1/3] docs: add CLI for " Itsuro Oda
` (4 more replies)
0 siblings, 5 replies; 6+ messages in thread
From: Itsuro Oda @ 2020-04-12 23:00 UTC (permalink / raw)
To: spp, ferruh.yigit, yasufum.o
This series of patches add document about pipe PMD.
Itsuro Oda (3):
docs: add CLI for pipe PMD
docs: add REST API for pipe PMD
docs: add document of pipe PMD usecase
docs/guides/api_ref/spp_primary.rst | 56 +-
docs/guides/commands/primary.rst | 16 +
.../images/usecases/pipe_usecase_pipe.svg | 611 ++++++++++++
.../images/usecases/pipe_usecase_sfc_nfv.svg | 722 ++++++++++++++
.../images/usecases/pipe_usecase_sfc_vf.svg | 933 ++++++++++++++++++
docs/guides/usecases/index.rst | 1 +
docs/guides/usecases/pipe_pmd.rst | 133 +++
7 files changed, 2464 insertions(+), 8 deletions(-)
create mode 100644 docs/guides/images/usecases/pipe_usecase_pipe.svg
create mode 100644 docs/guides/images/usecases/pipe_usecase_sfc_nfv.svg
create mode 100644 docs/guides/images/usecases/pipe_usecase_sfc_vf.svg
create mode 100644 docs/guides/usecases/pipe_pmd.rst
--
2.17.0
^ permalink raw reply [flat|nested] 6+ messages in thread
* [spp] [PATCH 1/3] docs: add CLI for pipe PMD
2020-04-12 23:00 [spp] [PATCH 0/3] add document of pipe PMD Itsuro Oda
@ 2020-04-12 23:00 ` Itsuro Oda
2020-04-12 23:00 ` [spp] [PATCH 2/3] docs: add REST API " Itsuro Oda
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Itsuro Oda @ 2020-04-12 23:00 UTC (permalink / raw)
To: spp, ferruh.yigit, yasufum.o
This patch adds description about CLI for pipe PMD.
Signed-off-by: Itsuro Oda <oda@valinux.co.jp>
---
docs/guides/commands/primary.rst | 16 ++++++++++++++++
1 file changed, 16 insertions(+)
diff --git a/docs/guides/commands/primary.rst b/docs/guides/commands/primary.rst
index cb510a6..7c55166 100644
--- a/docs/guides/commands/primary.rst
+++ b/docs/guides/commands/primary.rst
@@ -51,6 +51,8 @@ Show status fo ``spp_primary`` and forwarding statistics of each of ports.
spp > pri; status
- lcore_ids:
- master: 0
+ - pipes:
+ - pipe:0 ring:0 ring:1
- stats
- physical ports:
ID rx tx tx_drop rxq txq mac_addr
@@ -78,6 +80,7 @@ also displayed.
- ports:
- phy:0
- phy:1
+ - pipes:
- stats
- physical ports:
ID rx tx tx_drop mac_addr
@@ -110,6 +113,7 @@ add
Add a port with resource ID.
+If the type of a port is other than pipe, specify port only.
For example, adding ``ring:0`` by
.. code-block:: console
@@ -124,6 +128,18 @@ Or adding ``vhost:0`` by
spp > pri; add vhost:0
Add vhost:0.
+If the type of a port is pipe, specify a ring for rx and a ring
+for tx following a port. For example,
+
+.. code-block:: console
+
+ spp > pri; add pipe:0 ring:0 ring:1
+ Add pipe:0.
+
+.. note::
+
+ pipe is independent of the forwarder and can be added even if the
+ forwarder does not exist.
.. _commands_primary_patch:
--
2.17.0
^ permalink raw reply [flat|nested] 6+ messages in thread
* [spp] [PATCH 2/3] docs: add REST API for pipe PMD
2020-04-12 23:00 [spp] [PATCH 0/3] add document of pipe PMD Itsuro Oda
2020-04-12 23:00 ` [spp] [PATCH 1/3] docs: add CLI for " Itsuro Oda
@ 2020-04-12 23:00 ` Itsuro Oda
2020-04-12 23:00 ` [spp] [PATCH 3/3] docs: add document of pipe PMD usecase Itsuro Oda
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: Itsuro Oda @ 2020-04-12 23:00 UTC (permalink / raw)
To: spp, ferruh.yigit, yasufum.o
This patch adds description about REST API for pipe PMD.
Signed-off-by: Itsuro Oda <oda@valinux.co.jp>
---
docs/guides/api_ref/spp_primary.rst | 54 ++++++++++++++++++++++++-----
1 file changed, 46 insertions(+), 8 deletions(-)
diff --git a/docs/guides/api_ref/spp_primary.rst b/docs/guides/api_ref/spp_primary.rst
index fbf8874..28596cb 100644
--- a/docs/guides/api_ref/spp_primary.rst
+++ b/docs/guides/api_ref/spp_primary.rst
@@ -41,6 +41,8 @@ Response
+------------+-------+----------------------------------------+
| ring_ports | array | Array of statistics of ring ports. |
+------------+-------+----------------------------------------+
+ | pipes | array | Array of pipe ports. |
+ +------------+-------+----------------------------------------+
Physical port object.
@@ -84,6 +86,23 @@ Ring port object.
| tx_drop | integer | The total number of dropped packets of transferred. |
+---------+---------+-----------------------------------------------------+
+Pipe port object.
+
+.. _table_spp_ctl_primary_status_pipe:
+
+.. table:: Attributes of pipe port of primary status.
+
+ +---------+---------+-----------------------------------------------------+
+ | Name | Type | Description |
+ | | | |
+ +=========+=========+=====================================================+
+ | id | integer | Port ID of the pipe port. |
+ +---------+---------+-----------------------------------------------------+
+ | rx | integer | Port ID of the ring port for rx. |
+ +---------+---------+-----------------------------------------------------+
+ | tx | integer | Port ID of the ring port for tx. |
+ +---------+---------+-----------------------------------------------------+
+
Response example
~~~~~~~~~~~~~~~~
@@ -132,6 +151,13 @@ Response example
"tx": 0,
"tx_drop": 0
}
+ ],
+ "pipes": [
+ {
+ "id": 0,
+ "rx": 0,
+ "tx": 1
+ }
]
}
@@ -192,14 +218,18 @@ Request (body)
.. table:: Request body params of ports of ``spp_primary``.
- +--------+--------+--------------------------------------------------+
- | Name | Type | Description |
- | | | |
- +========+========+==================================================+
- | action | string | ``add`` or ``del``. |
- +--------+--------+--------------------------------------------------+
- | port | string | Resource UID of {port_type}:{port_id}. |
- +--------+--------+--------------------------------------------------+
+ +--------+--------+---------------------------------------------------------+
+ | Name | Type | Description |
+ | | | |
+ +========+========+=========================================================+
+ | action | string | ``add`` or ``del``. |
+ +--------+--------+---------------------------------------------------------+
+ | port | string | Resource UID of {port_type}:{port_id}. |
+ +--------+--------+---------------------------------------------------------+
+ | rx | string | Rx ring for pipe. It is necessary for adding pipe only. |
+ +--------+--------+---------------------------------------------------------+
+ | tx | string | Tx ring for pipe. It is necessary for adding pipe only. |
+ +--------+--------+---------------------------------------------------------+
Request example
@@ -211,6 +241,14 @@ Request example
-d '{"action": "add", "port": "ring:0"}' \
http://127.0.0.1:7777/v1/primary/ports
+For adding pipe.
+
+.. code-block:: console
+
+ $ curl -X PUT -H 'application/json' \
+ -d '{"action": "add", "port": "pipe:0", \
+ "rx": "ring:0", "tx": "ring:1"}' \
+ http://127.0.0.1:7777/v1/primary/ports
Response
~~~~~~~~
--
2.17.0
^ permalink raw reply [flat|nested] 6+ messages in thread
* [spp] [PATCH 3/3] docs: add document of pipe PMD usecase
2020-04-12 23:00 [spp] [PATCH 0/3] add document of pipe PMD Itsuro Oda
2020-04-12 23:00 ` [spp] [PATCH 1/3] docs: add CLI for " Itsuro Oda
2020-04-12 23:00 ` [spp] [PATCH 2/3] docs: add REST API " Itsuro Oda
@ 2020-04-12 23:00 ` Itsuro Oda
2020-04-30 2:38 ` [spp] (x-fn-spp-ml 671) [PATCH 0/3] add document of pipe PMD Hideyuki Yamashita
2020-05-25 3:07 ` [spp] " Yasufumi Ogawa
4 siblings, 0 replies; 6+ messages in thread
From: Itsuro Oda @ 2020-04-12 23:00 UTC (permalink / raw)
To: spp, ferruh.yigit, yasufum.o
This patch adds a document of usecase of pipe PMD.
Signed-off-by: Itsuro Oda <oda@valinux.co.jp>
---
docs/guides/api_ref/spp_primary.rst | 2 +
.../images/usecases/pipe_usecase_pipe.svg | 611 ++++++++++++
.../images/usecases/pipe_usecase_sfc_nfv.svg | 722 ++++++++++++++
.../images/usecases/pipe_usecase_sfc_vf.svg | 933 ++++++++++++++++++
docs/guides/usecases/index.rst | 1 +
docs/guides/usecases/pipe_pmd.rst | 133 +++
6 files changed, 2402 insertions(+)
create mode 100644 docs/guides/images/usecases/pipe_usecase_pipe.svg
create mode 100644 docs/guides/images/usecases/pipe_usecase_sfc_nfv.svg
create mode 100644 docs/guides/images/usecases/pipe_usecase_sfc_vf.svg
create mode 100644 docs/guides/usecases/pipe_pmd.rst
diff --git a/docs/guides/api_ref/spp_primary.rst b/docs/guides/api_ref/spp_primary.rst
index 28596cb..f22a1cc 100644
--- a/docs/guides/api_ref/spp_primary.rst
+++ b/docs/guides/api_ref/spp_primary.rst
@@ -202,6 +202,8 @@ Action is ``stop``.
spp > pri; stop
+.. _api_spp_ctl_spp_primary_put_ports:
+
PUT /v1/primary/ports
---------------------
diff --git a/docs/guides/images/usecases/pipe_usecase_pipe.svg b/docs/guides/images/usecases/pipe_usecase_pipe.svg
new file mode 100644
index 0000000..35e89c5
--- /dev/null
+++ b/docs/guides/images/usecases/pipe_usecase_pipe.svg
@@ -0,0 +1,611 @@
+<?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="152.58044mm"
+ height="117.89329mm"
+ viewBox="0 0 540.63939 417.73222"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
+ sodipodi:docname="pipe_usecase_pipe.svg">
+ <defs
+ id="defs4">
+ <marker
+ inkscape:stockid="Arrow1Lstart"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lstart"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path6666"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(0.8,0,0,0.8,10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker6505"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path6503"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker4627"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend"
+ inkscape:collect="always">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path4629" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker4479"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path4481"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker1450"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path1448"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path4411"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5907"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path5909"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5813"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path5815"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5725"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path5727"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5643"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path5645"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5567"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path5569"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5421"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path5423"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5137"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path5139"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5091"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path5093"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5051"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path5053"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5017"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path5019"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker4989"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path4991"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path4462"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;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="marker5567-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="path5569-6"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend-7"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path4411-5"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker4627-1"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path4629-2" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5091-0"
+ 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-6"
+ 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="0.7"
+ inkscape:cx="421.5718"
+ inkscape:cy="86.005928"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer5"
+ showgrid="false"
+ inkscape:window-width="1643"
+ inkscape:window-height="854"
+ inkscape:window-x="167"
+ inkscape:window-y="74"
+ inkscape:window-maximized="0"
+ units="mm"
+ width="230mm"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ inkscape:snap-global="true"
+ inkscape:snap-bbox="true"
+ inkscape:snap-nodes="true"
+ inkscape:snap-others="false"
+ inkscape:bbox-paths="true"
+ inkscape:snap-intersection-paths="false"
+ inkscape:object-nodes="false"
+ inkscape:object-paths="true"
+ inkscape:lockguides="true" />
+ <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></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Host"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(-10.358874,-474.54075)"
+ style="display:inline">
+ <rect
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.48551643;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4136"
+ width="539.15393"
+ height="380.94302"
+ x="11.101632"
+ y="475.28351" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer7"
+ inkscape:label="Host-Resource"
+ style="display:inline"
+ transform="translate(-10.358874,-474.54075)">
+ <ellipse
+ style="opacity:1;fill:#cbffce;fill-opacity:1;stroke:#000000;stroke-width:0.78720933;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path4297"
+ cx="273.89044"
+ cy="724.98724"
+ rx="39.606403"
+ ry="19.606396" />
+ <ellipse
+ style="opacity:1;fill:#cbffce;fill-opacity:1;stroke:#000000;stroke-width:0.74310595;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path4301"
+ cx="273.89044"
+ cy="666.16315"
+ rx="39.628456"
+ ry="18.699877" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer3"
+ inkscape:label="Container"
+ style="display:inline"
+ transform="translate(-10.358874,-474.54075)">
+ <rect
+ style="opacity:1;fill:#ffff6e;fill-opacity:1;stroke:#000000;stroke-width:0.88022333;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4391"
+ width="89.119804"
+ height="29.11978"
+ x="119.70796"
+ y="599.95844" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1.03222072px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 311.77952,662.6264 44.12544,-0.80843"
+ id="path7074"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer5"
+ inkscape:label="App"
+ transform="translate(-10.358874,-474.54075)"
+ style="display:inline">
+ <rect
+ style="opacity:1;fill:#ffffd3;fill-opacity:1;stroke:#000000;stroke-width:0.9541887;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4223"
+ width="163.33151"
+ height="39.045811"
+ x="87.209244"
+ y="562.58478"
+ ry="19.522905" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1.10747123px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker4627)"
+ d="M 140.0893,722.99672 V 633.28751"
+ id="path162"
+ inkscape:connector-curvature="0" />
+ <rect
+ style="display:inline;opacity:1;fill:#ffff6e;fill-opacity:1;stroke:#000000;stroke-width:0.88022333;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4391-6"
+ width="89.119804"
+ height="29.11978"
+ x="337.61874"
+ y="599.95844" />
+ <rect
+ style="display:inline;opacity:1;fill:#ffffd3;fill-opacity:1;stroke:#000000;stroke-width:0.9541887;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4223-6"
+ width="163.3315"
+ height="39.045807"
+ x="301.37003"
+ y="562.58484"
+ ry="19.522903" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:0%;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:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="384.5358"
+ y="588.19415"
+ id="text4225-6"><tspan
+ sodipodi:role="line"
+ id="tspan4227-0"
+ x="384.5358"
+ y="588.19415"
+ style="font-size:22.50000381px;line-height:1.25;stroke-width:0.99999994px">app 2</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:0%;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:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="381.96436"
+ y="620.48944"
+ id="text4407-8"><tspan
+ sodipodi:role="line"
+ x="381.96436"
+ y="620.48944"
+ id="tspan4411-7"
+ style="font-size:22.50000381px;line-height:1.25;stroke-width:0.99999994px">pipe:1</tspan></text>
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot6464"
+ style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"><flowRegion
+ id="flowRegion6466"><rect
+ id="rect6468"
+ width="187.14285"
+ height="97.14286"
+ x="722.85712"
+ y="131.09111" /></flowRegion><flowPara
+ id="flowPara6470" /></flowRoot> <path
+ style="fill:none;stroke:#000000;stroke-width:0.93750012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 193.82777,631.047 0.36869,31.583"
+ id="path6472"
+ inkscape:connector-curvature="0" />
+ <path
+ style="display:inline;fill:none;stroke:#000000;stroke-width:0.93750012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow1Lstart)"
+ d="m 355.53003,630.23137 0.36869,31.583"
+ id="path6472-0"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.93750012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 194.19646,662.63 41.20492,0.09"
+ id="path1432"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.80901474px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 140.2696,723.5229 c 93.75001,0 93.75001,0 93.75001,0"
+ id="path8467"
+ inkscape:connector-curvature="0" />
+ <path
+ style="display:inline;fill:none;stroke:#000000;stroke-width:0.80901468px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 313.03748,722.98723 c 93.75001,0 93.75001,0 93.75001,0"
+ id="path8467-2"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.93750012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 406.78749,722.98723 V 629.07821"
+ id="path8486"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer4"
+ inkscape:label="Label"
+ style="display:inline"
+ transform="translate(-10.358874,-474.54075)">
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;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="170.37502"
+ y="588.05133"
+ id="text4225"><tspan
+ sodipodi:role="line"
+ id="tspan4227"
+ x="170.37502"
+ y="588.05133"
+ style="font-size:22.50000572px;line-height:1.25">app 1</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;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="45.571438"
+ y="506.36221"
+ id="text4327"><tspan
+ sodipodi:role="line"
+ id="tspan4329"
+ x="45.571438"
+ y="506.36221"
+ style="font-size:22.50000572px;line-height:1.25">host</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;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="273.62674"
+ y="730.41583"
+ id="text4351"><tspan
+ sodipodi:role="line"
+ id="tspan4353"
+ x="273.62674"
+ y="730.41583"
+ style="font-size:22.50000572px;line-height:1.25">ring:0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;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="274.08267"
+ y="671.30603"
+ id="text4359"><tspan
+ sodipodi:role="line"
+ id="tspan4361"
+ x="274.08267"
+ y="671.30603"
+ style="font-size:22.50000572px;line-height:1.25">ring:1</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;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="167.80359"
+ y="620.5993"
+ id="text4407"><tspan
+ sodipodi:role="line"
+ x="167.80359"
+ y="620.5993"
+ id="tspan4411"
+ style="font-size:22.50000572px;line-height:1.25">pipe:0</tspan></text>
+ </g>
+</svg>
diff --git a/docs/guides/images/usecases/pipe_usecase_sfc_nfv.svg b/docs/guides/images/usecases/pipe_usecase_sfc_nfv.svg
new file mode 100644
index 0000000..7b59c40
--- /dev/null
+++ b/docs/guides/images/usecases/pipe_usecase_sfc_nfv.svg
@@ -0,0 +1,722 @@
+<?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="152.58044mm"
+ height="117.89329mm"
+ viewBox="0 0 540.63939 417.73222"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
+ sodipodi:docname="pipe_usecase_nfv.svg">
+ <defs
+ id="defs4">
+ <marker
+ inkscape:stockid="Arrow1Lstart"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lstart"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path6666"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(0.8,0,0,0.8,10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker6505"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path6503"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker4479"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path4481"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker1450"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path1448"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path4411"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5907"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path5909"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5813"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path5815"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5725"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path5727"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5643"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path5645"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5567"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path5569"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5421"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path5423"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5137"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path5139"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5091"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path5093"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5051"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path5053"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5017"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path5019"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker4989"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path4991"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path4462"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;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="marker5567-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="path5569-6"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend-7"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path4411-5"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker4627-1"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path4629-2" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5091-0"
+ 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-6"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker6505-7"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path6503-8"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.7"
+ inkscape:cx="183.00037"
+ inkscape:cy="86.005928"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer5"
+ showgrid="false"
+ inkscape:window-width="1643"
+ inkscape:window-height="854"
+ inkscape:window-x="167"
+ inkscape:window-y="74"
+ inkscape:window-maximized="0"
+ units="mm"
+ width="230mm"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ inkscape:snap-global="true"
+ inkscape:snap-bbox="true"
+ inkscape:snap-nodes="true"
+ inkscape:snap-others="false"
+ inkscape:bbox-paths="true"
+ inkscape:snap-intersection-paths="false"
+ inkscape:object-nodes="false"
+ inkscape:object-paths="true"
+ inkscape:lockguides="true" />
+ <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(-10.358874,-474.54075)"
+ style="display:inline">
+ <rect
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.48551643;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4136"
+ width="539.15393"
+ height="380.94302"
+ x="11.101632"
+ y="475.28351" />
+ <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="103.25159"
+ y="821.16742" />
+ <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="366.81973"
+ y="820.46771" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer7"
+ inkscape:label="Host-Resource"
+ style="display:inline"
+ transform="translate(-10.358874,-474.54075)">
+ <ellipse
+ style="opacity:1;fill:#cbffce;fill-opacity:1;stroke:#000000;stroke-width:0.78720933;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path4297"
+ cx="140.83926"
+ cy="687.11334"
+ rx="39.606403"
+ ry="19.606396" />
+ <ellipse
+ style="opacity:1;fill:#cbffce;fill-opacity:1;stroke:#000000;stroke-width:0.74310595;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path4301"
+ cx="274.35229"
+ cy="666.16315"
+ rx="39.628456"
+ ry="18.699877" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer3"
+ inkscape:label="Container"
+ style="display:inline"
+ transform="translate(-10.358874,-474.54075)">
+ <rect
+ style="opacity:1;fill:#ffff6e;fill-opacity:1;stroke:#000000;stroke-width:0.88022333;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4391"
+ width="89.119804"
+ height="29.11978"
+ x="119.70796"
+ y="599.95844" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1.03222072px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 311.77952,665.01753 44.12544,-0.80843"
+ id="path7074"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer5"
+ inkscape:label="App"
+ transform="translate(-10.358874,-474.54075)"
+ style="display:inline">
+ <rect
+ style="opacity:1;fill:#ffffd3;fill-opacity:1;stroke:#000000;stroke-width:0.9541887;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4223"
+ width="163.33151"
+ height="39.045811"
+ x="87.209244"
+ y="562.58478"
+ ry="19.522905" />
+ <rect
+ style="opacity:1;fill:#ffffd3;fill-opacity:1;stroke:#000000;stroke-width:0.89193338;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4231"
+ width="99.108093"
+ height="34.108074"
+ x="94.78524"
+ y="739.22333"
+ ry="17.054037" />
+ <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 138.92853,892.27291 v -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 404.3392,856.55861 v 32.8572"
+ id="path4429"
+ inkscape:connector-curvature="0" />
+ <ellipse
+ style="display:inline;opacity:1;fill:#cbffce;fill-opacity:1;stroke:#000000;stroke-width:0.78720933;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path4297-2"
+ cx="407.23218"
+ cy="687.11334"
+ rx="39.6064"
+ ry="19.606394" />
+ <rect
+ style="display:inline;opacity:1;fill:#ffff6e;fill-opacity:1;stroke:#000000;stroke-width:0.88022333;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4391-6"
+ width="89.119804"
+ height="29.11978"
+ x="337.61874"
+ y="599.95844" />
+ <rect
+ style="display:inline;opacity:1;fill:#ffffd3;fill-opacity:1;stroke:#000000;stroke-width:0.9541887;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4223-6"
+ width="163.3315"
+ height="39.045807"
+ x="301.37003"
+ y="562.58484"
+ ry="19.522903" />
+ <rect
+ style="display:inline;opacity:1;fill:#ffffd3;fill-opacity:1;stroke:#000000;stroke-width:0.89193332;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4231-8"
+ width="99.108093"
+ height="34.10807"
+ x="361.17816"
+ y="739.22333"
+ ry="17.054035" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:0%;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:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="410.6608"
+ y="762.61646"
+ id="text4205-4"><tspan
+ sodipodi:role="line"
+ id="tspan4207-3"
+ x="410.6608"
+ y="762.61646"
+ style="font-size:22.50000381px;line-height:1.25;stroke-width:0.99999994px">spp_nfv</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:0%;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:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="384.5358"
+ y="588.19415"
+ id="text4225-6"><tspan
+ sodipodi:role="line"
+ id="tspan4227-0"
+ x="384.5358"
+ y="588.19415"
+ style="font-size:22.50000381px;line-height:1.25;stroke-width:0.99999994px">app 2</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:0%;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:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="404.01791"
+ y="693.13934"
+ id="text4351-3"><tspan
+ sodipodi:role="line"
+ id="tspan4353-6"
+ x="404.01791"
+ y="693.13934"
+ style="font-size:22.50000381px;line-height:1.25;stroke-width:0.99999994px">ring:2</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:0%;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:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="381.96436"
+ y="620.48944"
+ id="text4407-8"><tspan
+ sodipodi:role="line"
+ x="381.96436"
+ y="620.48944"
+ id="tspan4411-7"
+ style="font-size:22.50000381px;line-height:1.25;stroke-width:0.99999994px">pipe:1</tspan></text>
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot6464"
+ style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"><flowRegion
+ id="flowRegion6466"><rect
+ id="rect6468"
+ width="187.14285"
+ height="97.14286"
+ x="722.85712"
+ y="131.09111" /></flowRegion><flowPara
+ id="flowPara6470" /></flowRoot> <path
+ style="fill:none;stroke:#000000;stroke-width:0.93750012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 193.82777,631.047 0.36869,31.583"
+ id="path6472"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:1.04158545px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 194.19646,664.61331 h 42.32143"
+ id="path6474"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.93750012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 405.2119,820.46771 V 773.37155"
+ id="path1192"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.93750012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 138.89137,821.16742 V 773.3314"
+ id="path9486"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.93750012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker6505)"
+ d="M 138.89137,667.52815 V 629.07821"
+ id="path9490"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.93750012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 137.59104,739.22333 V 706.65369"
+ id="path9492"
+ inkscape:connector-curvature="0" />
+ <path
+ style="display:inline;fill:none;stroke:#000000;stroke-width:0.88882339px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker6505-7)"
+ d="M 355.91115,664.51361 V 629.9528"
+ id="path9490-5"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.93750012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 405.2119,739.22333 V 706.69984"
+ id="path10027"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.93750012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 405.2119,667.52547 V 629.07821"
+ id="path10029"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer4"
+ inkscape:label="Label"
+ style="display:inline"
+ transform="translate(-10.358874,-474.54075)">
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;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="144.26787"
+ y="762.61646"
+ id="text4205"><tspan
+ sodipodi:role="line"
+ id="tspan4207"
+ x="144.26787"
+ y="762.61646"
+ style="font-size:22.50000572px;line-height:1.25">spp_nfv</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;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="170.37502"
+ y="588.05133"
+ id="text4225"><tspan
+ sodipodi:role="line"
+ id="tspan4227"
+ x="170.37502"
+ y="588.05133"
+ style="font-size:22.50000572px;line-height:1.25">app 1</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;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="140.35712"
+ y="841.98718"
+ id="text4319"><tspan
+ sodipodi:role="line"
+ id="tspan4321"
+ x="140.35712"
+ y="841.98718"
+ style="font-size:22.50000572px;line-height:1.25">phy:0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;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="403.76785"
+ y="842.27289"
+ id="text4323"><tspan
+ sodipodi:role="line"
+ id="tspan4325"
+ x="403.76785"
+ y="842.27289"
+ style="font-size:22.50000572px;line-height:1.25">phy:1</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;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="45.571438"
+ y="506.36221"
+ id="text4327"><tspan
+ sodipodi:role="line"
+ id="tspan4329"
+ x="45.571438"
+ y="506.36221"
+ style="font-size:22.50000572px;line-height:1.25">host</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;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="137.625"
+ y="693.13385"
+ id="text4351"><tspan
+ sodipodi:role="line"
+ id="tspan4353"
+ x="137.625"
+ y="693.13385"
+ style="font-size:22.50000572px;line-height:1.25">ring:0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;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="274.56659"
+ y="671.30603"
+ id="text4359"><tspan
+ sodipodi:role="line"
+ id="tspan4361"
+ x="274.56659"
+ y="671.30603"
+ style="font-size:22.50000572px;line-height:1.25">ring:1</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;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="167.80359"
+ y="620.5993"
+ id="text4407"><tspan
+ sodipodi:role="line"
+ x="167.80359"
+ y="620.5993"
+ id="tspan4411"
+ style="font-size:22.50000572px;line-height:1.25">pipe:0</tspan></text>
+ </g>
+</svg>
diff --git a/docs/guides/images/usecases/pipe_usecase_sfc_vf.svg b/docs/guides/images/usecases/pipe_usecase_sfc_vf.svg
new file mode 100644
index 0000000..dc92bad
--- /dev/null
+++ b/docs/guides/images/usecases/pipe_usecase_sfc_vf.svg
@@ -0,0 +1,933 @@
+<?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="205.11914mm"
+ height="117.89329mm"
+ viewBox="0 0 726.80013 417.73222"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.92.4 (5da689c313, 2019-01-14)"
+ sodipodi:docname="pipe_usecase_sfc_vf.svg">
+ <defs
+ id="defs4">
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker11702"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path11700" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker11536"
+ style="overflow:visible"
+ inkscape:isstock="true"
+ inkscape:collect="always">
+ <path
+ id="path11534"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker4047"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend"
+ inkscape:collect="always">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path4045" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker3977"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path3975" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lstart"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker2797"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path2534"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;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="Arrow1Lstart"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path6666"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+ transform="matrix(0.8,0,0,0.8,10,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker4479"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path4481"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker1450"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path1448"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path4411"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5907"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path5909"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5813"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path5815"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5725"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path5727"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5643"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path5645"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5567"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path5569"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5421"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path5423"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5137"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path5139"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5091"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path5093"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5051"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path5053"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5017"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path5019"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker4989"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path4991"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path4462"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;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="marker5567-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="path5569-6"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend-7"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path4411-5"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker4627-1"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
+ <path
+ inkscape:connector-curvature="0"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path4629-2" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5091-0"
+ 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-6"
+ 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="0.7"
+ inkscape:cx="326.22118"
+ inkscape:cy="86.005913"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer5"
+ showgrid="false"
+ inkscape:window-width="1643"
+ inkscape:window-height="854"
+ inkscape:window-x="167"
+ inkscape:window-y="74"
+ inkscape:window-maximized="0"
+ units="mm"
+ width="230mm"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ inkscape:snap-global="true"
+ inkscape:snap-bbox="true"
+ inkscape:snap-nodes="true"
+ inkscape:snap-others="false"
+ inkscape:bbox-paths="true"
+ inkscape:snap-intersection-paths="false"
+ inkscape:object-nodes="false"
+ inkscape:object-paths="true"
+ inkscape:lockguides="true" />
+ <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(-10.358874,-474.54074)"
+ style="display:inline">
+ <rect
+ style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.72217977;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4136"
+ width="725.078"
+ height="380.70636"
+ x="11.219964"
+ y="475.40182" />
+ <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="92.537308"
+ y="821.16742" />
+ <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="613.81146"
+ y="820.46771" />
+ <rect
+ style="display:inline;opacity:1;fill:#ffff6e;fill-opacity:1;stroke:#000000;stroke-width:0.88022333;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4391-6-6"
+ width="89.119804"
+ height="29.11978"
+ x="568.15619"
+ y="581.09241" />
+ <rect
+ style="display:inline;opacity:1;fill:#ffffd3;fill-opacity:1;stroke:#000000;stroke-width:0.9541887;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4223-6-7"
+ width="163.33148"
+ height="39.045803"
+ x="531.90747"
+ y="543.71875"
+ ry="19.522902" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:0%;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:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="615.07324"
+ y="569.32806"
+ id="text4225-6-5"><tspan
+ sodipodi:role="line"
+ id="tspan4227-0-0"
+ x="615.07324"
+ y="569.32806"
+ style="font-size:22.50000191px;line-height:1.25;stroke-width:0.99999994px">app 3</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:0%;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:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="612.50177"
+ y="601.73871"
+ id="text4407-8-2"><tspan
+ sodipodi:role="line"
+ x="612.50177"
+ y="601.73871"
+ id="tspan4411-7-9"
+ style="font-size:22.50000191px;line-height:1.25;stroke-width:0.99999994px">pipe:2</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.93750012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 425.5375,610.21219 V 643.4811"
+ id="path11484"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer7"
+ inkscape:label="Host-Resource"
+ style="display:inline"
+ transform="translate(-10.358874,-474.54074)">
+ <ellipse
+ style="opacity:1;fill:#cbffce;fill-opacity:1;stroke:#000000;stroke-width:0.78720933;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path4297"
+ cx="129.49995"
+ cy="661.97827"
+ rx="39.606403"
+ ry="19.606396" />
+ <ellipse
+ style="opacity:1;fill:#cbffce;fill-opacity:1;stroke:#000000;stroke-width:0.74310595;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path4301"
+ cx="212.74515"
+ cy="661.97827"
+ rx="39.628456"
+ ry="18.699877" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer3"
+ inkscape:label="Container"
+ style="display:inline"
+ transform="translate(-10.358874,-474.54074)">
+ <rect
+ style="opacity:1;fill:#ffff6e;fill-opacity:1;stroke:#000000;stroke-width:0.88022333;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4391"
+ width="89.119804"
+ height="29.11978"
+ x="126.40439"
+ y="581.09241" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer5"
+ inkscape:label="App"
+ transform="translate(-10.358874,-474.54074)"
+ style="display:inline">
+ <rect
+ style="opacity:1;fill:#ffffd3;fill-opacity:1;stroke:#000000;stroke-width:0.9541887;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4223"
+ width="163.33151"
+ height="39.045811"
+ x="93.90567"
+ y="543.71875"
+ ry="19.522905" />
+ <rect
+ style="opacity:1;fill:#ffffd3;fill-opacity:1;stroke:#000000;stroke-width:1.65822613;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4231"
+ width="652.50153"
+ height="78.572845"
+ x="65.186798"
+ y="714.94183"
+ ry="39.286423" />
+ <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 129.51757,892.27291 v -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 653.88523,856.55861 v 32.8572"
+ id="path4429"
+ inkscape:connector-curvature="0" />
+ <rect
+ style="display:inline;opacity:1;fill:#ffff6e;fill-opacity:1;stroke:#000000;stroke-width:0.88022333;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4391-6"
+ width="89.119804"
+ height="29.11978"
+ x="344.31519"
+ y="581.09241" />
+ <rect
+ style="display:inline;opacity:1;fill:#ffffd3;fill-opacity:1;stroke:#000000;stroke-width:0.9541887;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="rect4223-6"
+ width="163.3315"
+ height="39.045807"
+ x="308.06647"
+ y="543.71875"
+ ry="19.522903" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:0%;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:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="391.23224"
+ y="569.32806"
+ id="text4225-6"><tspan
+ sodipodi:role="line"
+ id="tspan4227-0"
+ x="391.23224"
+ y="569.32806"
+ style="font-size:22.50000381px;line-height:1.25;stroke-width:0.99999994px">app 2</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:0%;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:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="388.6608"
+ y="601.62335"
+ id="text4407-8"><tspan
+ sodipodi:role="line"
+ x="388.6608"
+ y="601.62335"
+ id="tspan4411-7"
+ style="font-size:22.50000381px;line-height:1.25;stroke-width:0.99999994px">pipe:1</tspan></text>
+ <flowRoot
+ xml:space="preserve"
+ id="flowRoot6464"
+ style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"><flowRegion
+ id="flowRegion6466"><rect
+ id="rect6468"
+ width="187.14285"
+ height="97.14286"
+ x="722.85712"
+ y="131.09111" /></flowRegion><flowPara
+ id="flowPara6470" /></flowRoot> <ellipse
+ style="display:inline;opacity:1;fill:#cbffce;fill-opacity:1;stroke:#000000;stroke-width:0.78720933;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path4297-6"
+ cx="347.39706"
+ cy="661.97827"
+ rx="39.6064"
+ ry="19.606394" />
+ <ellipse
+ style="display:inline;opacity:1;fill:#cbffce;fill-opacity:1;stroke:#000000;stroke-width:0.74310595;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path4301-3"
+ cx="431.35654"
+ cy="661.97827"
+ rx="39.628456"
+ ry="18.699875" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:0%;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:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="344.1828"
+ y="668.00427"
+ id="text4351-7"><tspan
+ sodipodi:role="line"
+ id="tspan4353-4"
+ x="344.1828"
+ y="668.00427"
+ style="font-size:22.50000381px;line-height:1.25;stroke-width:0.99999994px">ring:2</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:0%;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:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="431.57083"
+ y="668.00427"
+ id="text4359-3"><tspan
+ sodipodi:role="line"
+ id="tspan4361-0"
+ x="431.57083"
+ y="668.00427"
+ style="font-size:22.50000381px;line-height:1.25;stroke-width:0.99999994px">ring:3</tspan></text>
+ <ellipse
+ style="display:inline;opacity:1;fill:#cbffce;fill-opacity:1;stroke:#000000;stroke-width:0.78720933;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path4297-8"
+ cx="567.03992"
+ cy="661.97827"
+ rx="39.6064"
+ ry="19.606394" />
+ <ellipse
+ style="display:inline;opacity:1;fill:#cbffce;fill-opacity:1;stroke:#000000;stroke-width:0.74310595;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path4301-6"
+ cx="650.90234"
+ cy="661.97827"
+ rx="39.628456"
+ ry="18.699875" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:0%;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:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="563.82562"
+ y="667.88892"
+ id="text4351-8"><tspan
+ sodipodi:role="line"
+ id="tspan4353-0"
+ x="563.82562"
+ y="667.88892"
+ style="font-size:22.50000381px;line-height:1.25;stroke-width:0.99999994px">ring:4</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:0%;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:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="650.6936"
+ y="667.88892"
+ id="text4359-5"><tspan
+ sodipodi:role="line"
+ id="tspan4361-6"
+ x="650.6936"
+ y="667.88892"
+ style="font-size:22.50000381px;line-height:1.25;stroke-width:0.99999994px">ring:5</tspan></text>
+ <ellipse
+ style="display:inline;opacity:1;fill:#ffe6d5;fill-opacity:1;stroke:#000000;stroke-width:0.78720933;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path4297-3"
+ cx="129.49995"
+ cy="749.63892"
+ rx="39.6064"
+ ry="19.606394" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:0%;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:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="130.33492"
+ y="758.07092"
+ id="text4351-0"><tspan
+ sodipodi:role="line"
+ id="tspan4353-6"
+ x="130.33492"
+ y="758.07092"
+ style="font-size:22.50000381px;line-height:1.25;stroke-width:0.99999994px">fwd1</tspan></text>
+ <ellipse
+ style="display:inline;opacity:1;fill:#ffe6d5;fill-opacity:1;stroke:#000000;stroke-width:0.78720933;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path4297-3-4"
+ cx="500.53751"
+ cy="749.63892"
+ rx="39.606396"
+ ry="19.606392" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:0%;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:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="500.0018"
+ y="758.07092"
+ id="text4351-0-9"><tspan
+ sodipodi:role="line"
+ id="tspan4353-6-7"
+ x="500.0018"
+ y="758.07092"
+ style="font-size:22.50000191px;line-height:1.25;stroke-width:0.99999994px">fwd3</tspan></text>
+ <ellipse
+ style="display:inline;opacity:1;fill:#ffe6d5;fill-opacity:1;stroke:#000000;stroke-width:0.78720933;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path4297-3-9"
+ cx="283.57318"
+ cy="749.63892"
+ rx="39.606396"
+ ry="19.606392" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:0%;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:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="280.35892"
+ y="758.07092"
+ id="text4351-0-2"><tspan
+ sodipodi:role="line"
+ id="tspan4353-6-6"
+ x="280.35892"
+ y="758.07092"
+ style="font-size:22.50000191px;line-height:1.25;stroke-width:0.99999994px">fwd2</tspan></text>
+ <ellipse
+ style="display:inline;opacity:1;fill:#ffe6d5;fill-opacity:1;stroke:#000000;stroke-width:0.78720933;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+ id="path4297-3-8"
+ cx="650.90234"
+ cy="749.63892"
+ rx="39.606396"
+ ry="19.606392" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:12px;line-height:0%;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:0.99999994px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="651.08362"
+ y="758.07092"
+ id="text4351-0-8"><tspan
+ sodipodi:role="line"
+ id="tspan4353-6-63"
+ x="651.08362"
+ y="758.07092"
+ style="font-size:22.50000191px;line-height:1.25;stroke-width:0.99999994px">fwd4</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.93750012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 129.55532,821.16742 V 769.24529"
+ id="path11466"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.93750012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 129.55364,730.03254 V 681.58465"
+ id="path11468"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.93750012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker4047)"
+ d="m 129.55405,642.37189 v -32.1597"
+ id="path11470"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.93750012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 208.57319,610.21219 v 33.17012"
+ id="path11472"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.93750012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 208.64328,680.57771 v 69.73091 h 35.34662"
+ id="path11476"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.93750012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 323.15905,750.27005 h 30.05702 V 681.3719"
+ id="path11480"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.93750012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker11536)"
+ d="M 352.80112,642.55524 V 610.21219"
+ id="path11482"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.93750012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 426.88254,680.55859 v 67.07146 h 34.25701"
+ id="path11490"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.93750012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 540.12337,750.27005 h 34.07487 v -69.00827"
+ id="path11492"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.93750012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker11702)"
+ d="M 573.89219,642.66753 V 610.21219"
+ id="path11496"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.93750012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 653.90285,610.21219 v 33.067"
+ id="path11498"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.93750012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 653.90285,680.67735 v 49.35601"
+ id="path11500"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.93750012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 653.90285,769.18906 v 51.27866"
+ id="path11502"
+ inkscape:connector-curvature="0" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer4"
+ inkscape:label="Label"
+ style="display:inline"
+ transform="translate(-10.358874,-474.54074)">
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;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="381.32147"
+ y="814.52301"
+ id="text4205"><tspan
+ sodipodi:role="line"
+ id="tspan4207"
+ x="381.32147"
+ y="814.52301"
+ style="font-size:22.50000572px;line-height:1.25">spp_vf</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;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="177.07144"
+ y="569.18524"
+ id="text4225"><tspan
+ sodipodi:role="line"
+ id="tspan4227"
+ x="177.07144"
+ y="569.18524"
+ style="font-size:22.50000572px;line-height:1.25">app 1</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;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="129.23628"
+ y="841.98718"
+ id="text4319"><tspan
+ sodipodi:role="line"
+ id="tspan4321"
+ x="129.23628"
+ y="841.98718"
+ style="font-size:22.50000572px;line-height:1.25">phy:0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;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="651.0946"
+ y="842.27289"
+ id="text4323"><tspan
+ sodipodi:role="line"
+ id="tspan4325"
+ x="651.0946"
+ y="842.27289"
+ style="font-size:22.50000572px;line-height:1.25">phy:1</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;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="45.571438"
+ y="506.36221"
+ id="text4327"><tspan
+ sodipodi:role="line"
+ id="tspan4329"
+ x="45.571438"
+ y="506.36221"
+ style="font-size:22.50000572px;line-height:1.25">host</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;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="129.23628"
+ y="667.99878"
+ id="text4351"><tspan
+ sodipodi:role="line"
+ id="tspan4353"
+ x="129.23628"
+ y="667.99878"
+ style="font-size:22.50000572px;line-height:1.25">ring:0</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;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="212.95944"
+ y="667.88892"
+ id="text4359"><tspan
+ sodipodi:role="line"
+ id="tspan4361"
+ x="212.95944"
+ y="667.88892"
+ style="font-size:22.50000572px;line-height:1.25">ring:1</tspan></text>
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:0%;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="174.50002"
+ y="601.73322"
+ id="text4407"><tspan
+ sodipodi:role="line"
+ x="174.50002"
+ y="601.73322"
+ id="tspan4411"
+ style="font-size:22.50000572px;line-height:1.25">pipe:0</tspan></text>
+ </g>
+</svg>
diff --git a/docs/guides/usecases/index.rst b/docs/guides/usecases/index.rst
index 6508610..2e8293e 100644
--- a/docs/guides/usecases/index.rst
+++ b/docs/guides/usecases/index.rst
@@ -32,3 +32,4 @@ or via REST API from :ref:`API Reference<spp_api_ref_index>`.
spp_pcap
multi_nodes
hardware-offload
+ pipe_pmd
diff --git a/docs/guides/usecases/pipe_pmd.rst b/docs/guides/usecases/pipe_pmd.rst
new file mode 100644
index 0000000..b196880
--- /dev/null
+++ b/docs/guides/usecases/pipe_pmd.rst
@@ -0,0 +1,133 @@
+.. SPDX-License-Identifier: BSD-3-Clause
+ Copyright(c) 2020 Nippon Telegraph and Telephone Corporation
+
+
+.. _usecase_pipe_pmd:
+
+Pipe PMD
+========
+
+Pipe PMD constitutes a virtual Ethernet device (named spp_pipe) using
+rings which the spp_primary allocated.
+
+It is necessary for the DPDK application using spp_pipe to implement
+it as the secondary process under the spp_primary as the primary
+process.
+
+Using spp_pipe enables high-speed packet transfer through rings
+among DPDK applications using spp_pipe and SPP secondary processes
+such as spp_nfv and spp_vf.
+
+Using pipe PMD
+--------------
+
+Create a pipe port by requesting to the spp_primary to use spp_pipe
+beforehand.
+There are :ref:`CLI<commands_primary_add>` and
+:ref:`REST API<api_spp_ctl_spp_primary_put_ports>` to create a pipe
+port.
+A ring used for rx transfer and a ring used for tx transfer are
+specified at a pipe port creation.
+
+For example creating ``pipe:0`` with ``ring:0`` for rx and
+``ring:1`` for tx by CLI as follows.
+
+.. code-block:: none
+
+ spp > pri; add pipe:0 ring:0 ring:1
+
+The name as the Ethernet device of ``pipe:N`` is ``spp_pipeN``.
+DPDK application which is the secondary process of the spp_primary
+can get the port id of the device using ``rte_eth_dev_get_port_by_name``.
+
+Requirement of DPDK application using spp_pipe
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+It is necessary to use the common mbuf mempool of the SPP processes.
+
+.. code-block:: C
+
+ #define PKTMBUF_POOL_NAME "Mproc_pktmbuf_pool"
+
+ struct rte_mempool *mbuf_pool;
+
+ mbuf_pool = rte_mempool_lookup(PKTBBUF_POOL_NAME);
+
+Use cases
+---------
+
+Here are some examples using spp_pipe.
+
+.. note::
+
+ A ring allocated by the spp_primary assumes it is single
+ producer and single consumer. It is user responsibility
+ that each ring in the model has single producer and single
+ consumer.
+
+Direct communication between applications
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+.. _figure_pipe_usecase_pipe:
+
+.. figure:: ../images/usecases/pipe_usecase_pipe.*
+ :width: 50%
+
+To create pipe ports by CLI before running applications as follows.
+
+.. code-block:: none
+
+ spp > pri; add pipe:0 ring:0 ring:1
+ spp > pri; add pipe:1 ring:1 ring:0
+
+Fixed application chain using spp_nfv
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+.. _figure_pipe_usecase_sfc_nfv:
+
+.. figure:: ../images/usecases/pipe_usecase_sfc_nfv.*
+ :width: 50%
+
+To construct the model by CLI before running applications as follows.
+
+.. code-block:: none
+
+ spp > pri; add pipe:0 ring:0 ring:1
+ spp > pri; add pipe:1 ring:1 ring:2
+ spp > nfv 1; add ring:0
+ spp > nfv 1; patch phy:0 ring:0
+ spp > nfv 1; forward
+ spp > nfv 2; add ring:2
+ spp > nfv 2; patch ring:2 phy:1
+ spp > nfv 2; forward
+
+Service function chaining using spp_vf
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+.. _figure_pipe_usecase_sfc_vf:
+
+.. figure:: ../images/usecases/pipe_usecase_sfc_vf.*
+ :width: 80%
+
+To construct the model by CLI before running applications as follows.
+
+.. code-block:: none
+
+ spp > pri; add pipe:0 ring:0 ring:1
+ spp > pri; add pipe:1 ring:2 ring:3
+ spp > pri; add pipe:2 ring:4 ring:5
+ spp > vf 1; component start fwd1 2 forward
+ spp > vf 1; component start fwd2 3 forward
+ spp > vf 1; component start fwd3 4 forward
+ spp > vf 1; component start fwd4 5 forward
+ spp > vf 1; port add phy:0 rx fwd1
+ spp > vf 1; port add ring:0 tx fwd1
+ spp > vf 1; port add ring:1 rx fwd2
+ spp > vf 1; port add ring:2 tx fwd2
+ spp > vf 1; port add ring:3 rx fwd3
+ spp > vf 1; port add ring:4 tx fwd3
+ spp > vf 1; port add ring:5 rx fwd4
+ spp > vf 1; port add phy:1 tx fwd4
+
+Since applications are connected not directly but through spp_vf,
+service chaining can be modified without restarting applications.
--
2.17.0
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [spp] (x-fn-spp-ml 671) [PATCH 0/3] add document of pipe PMD
2020-04-12 23:00 [spp] [PATCH 0/3] add document of pipe PMD Itsuro Oda
` (2 preceding siblings ...)
2020-04-12 23:00 ` [spp] [PATCH 3/3] docs: add document of pipe PMD usecase Itsuro Oda
@ 2020-04-30 2:38 ` Hideyuki Yamashita
2020-05-25 3:07 ` [spp] " Yasufumi Ogawa
4 siblings, 0 replies; 6+ messages in thread
From: Hideyuki Yamashita @ 2020-04-30 2:38 UTC (permalink / raw)
To: Itsuro Oda; +Cc: spp, ferruh.yigit, yasufum.o
Reviewed-by: Hideyuki Yamashita <yamashita.hideyuki@ntt-tx.co.jp>
> This series of patches add document about pipe PMD.
>
> Itsuro Oda (3):
> docs: add CLI for pipe PMD
> docs: add REST API for pipe PMD
> docs: add document of pipe PMD usecase
>
> docs/guides/api_ref/spp_primary.rst | 56 +-
> docs/guides/commands/primary.rst | 16 +
> .../images/usecases/pipe_usecase_pipe.svg | 611 ++++++++++++
> .../images/usecases/pipe_usecase_sfc_nfv.svg | 722 ++++++++++++++
> .../images/usecases/pipe_usecase_sfc_vf.svg | 933 ++++++++++++++++++
> docs/guides/usecases/index.rst | 1 +
> docs/guides/usecases/pipe_pmd.rst | 133 +++
> 7 files changed, 2464 insertions(+), 8 deletions(-)
> create mode 100644 docs/guides/images/usecases/pipe_usecase_pipe.svg
> create mode 100644 docs/guides/images/usecases/pipe_usecase_sfc_nfv.svg
> create mode 100644 docs/guides/images/usecases/pipe_usecase_sfc_vf.svg
> create mode 100644 docs/guides/usecases/pipe_pmd.rst
>
> --
> 2.17.0
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [spp] [PATCH 0/3] add document of pipe PMD
2020-04-12 23:00 [spp] [PATCH 0/3] add document of pipe PMD Itsuro Oda
` (3 preceding siblings ...)
2020-04-30 2:38 ` [spp] (x-fn-spp-ml 671) [PATCH 0/3] add document of pipe PMD Hideyuki Yamashita
@ 2020-05-25 3:07 ` Yasufumi Ogawa
4 siblings, 0 replies; 6+ messages in thread
From: Yasufumi Ogawa @ 2020-05-25 3:07 UTC (permalink / raw)
To: Itsuro Oda, spp
> This series of patches add document about pipe PMD.
Acked-by: Yasufumi Ogawa <yasufum.o@gmail.com>
>
> Itsuro Oda (3):
> docs: add CLI for pipe PMD
> docs: add REST API for pipe PMD
> docs: add document of pipe PMD usecase
>
> docs/guides/api_ref/spp_primary.rst | 56 +-
> docs/guides/commands/primary.rst | 16 +
> .../images/usecases/pipe_usecase_pipe.svg | 611 ++++++++++++
> .../images/usecases/pipe_usecase_sfc_nfv.svg | 722 ++++++++++++++
> .../images/usecases/pipe_usecase_sfc_vf.svg | 933 ++++++++++++++++++
> docs/guides/usecases/index.rst | 1 +
> docs/guides/usecases/pipe_pmd.rst | 133 +++
> 7 files changed, 2464 insertions(+), 8 deletions(-)
> create mode 100644 docs/guides/images/usecases/pipe_usecase_pipe.svg
> create mode 100644 docs/guides/images/usecases/pipe_usecase_sfc_nfv.svg
> create mode 100644 docs/guides/images/usecases/pipe_usecase_sfc_vf.svg
> create mode 100644 docs/guides/usecases/pipe_pmd.rst
>
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2020-05-25 3:07 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-12 23:00 [spp] [PATCH 0/3] add document of pipe PMD Itsuro Oda
2020-04-12 23:00 ` [spp] [PATCH 1/3] docs: add CLI for " Itsuro Oda
2020-04-12 23:00 ` [spp] [PATCH 2/3] docs: add REST API " Itsuro Oda
2020-04-12 23:00 ` [spp] [PATCH 3/3] docs: add document of pipe PMD usecase Itsuro Oda
2020-04-30 2:38 ` [spp] (x-fn-spp-ml 671) [PATCH 0/3] add document of pipe PMD Hideyuki Yamashita
2020-05-25 3:07 ` [spp] " Yasufumi Ogawa
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).