[spp] [PATCH 02/28] doc: add how_to_use.md

ogawa.yasufumi at lab.ntt.co.jp ogawa.yasufumi at lab.ntt.co.jp
Tue Jan 23 01:28:47 CET 2018


From: Hiroyuki Nakamura <nakamura.hioryuki at po.ntt-tx.co.jp>

how_to_use.md is a guide for running spp_vf.

Signed-off-by: Naoki Takada <takada.naoki at lab.ntt.co.jp>
---
 docs/spp_vf/how_to_use.md       | 105 ++++++
 docs/spp_vf/setup.md            |   3 +
 docs/spp_vf/spp_vf_overview.svg | 793 ++++++++++++++++++++++++++++++++++++++++
 3 files changed, 901 insertions(+)
 create mode 100644 docs/spp_vf/how_to_use.md
 create mode 100644 docs/spp_vf/spp_vf_overview.svg

diff --git a/docs/spp_vf/how_to_use.md b/docs/spp_vf/how_to_use.md
new file mode 100644
index 0000000..ca9cf15
--- /dev/null
+++ b/docs/spp_vf/how_to_use.md
@@ -0,0 +1,105 @@
+# How to Use SPP_VF
+
+## SPP_VF
+
+SPP_VF is a SR-IOV like network functionality for NFV.
+
+![spp_vf_overview](spp_vf_overview.svg)
+
+## Environment
+
+* Ubuntu 16.04
+* qemu-kvm
+* DPDK v17.05
+
+## Launch SPP
+
+Before launching spp, you need to setup described as [setup guide](setup.md).
+
+### SPP Controller
+
+First, run SPP Controller with port numbers for spp primary and secondary.
+
+```sh
+$ python ./src/spp.py -p 5555 -s 6666
+```
+
+### SPP Primary
+
+SPP primary reserves and manages resources for secondary processes.
+You have to run it before secondaries.
+
+Options of spp primary are
+  * -p : port mask
+  * -n : number of rings
+  * -s : ip addr and port of spp primary
+
+```sh
+$ sudo ./src/primary/x86_64-native-linuxapp-gcc/spp_primary \
+-c 0x02 -n 4 --socket-mem 512,512 \
+--huge-dir=/run/hugepages/kvm \
+--proc-type=primary \
+-- -p 0x03 -n 9 -s 127.0.0.1:5555
+```
+
+### SPP Secondary
+
+In `spp_vf`, spp secondary processes are launched by single command.
+Core assingment and network configuration are defined
+in JSON formatted config file.
+If you run `spp_vf` without giving config file, it refers default
+config file (test/spp_config/spp_config/vf.json).
+
+```sh
+$ sudo ./src/vf/x86_64-native-linuxapp-gcc/spp_vf \
+-c 0x3ffd -n 4 --proc-type=secondary
+```
+
+You can also indicate which of config you use explicitly with
+`--config` option as following example.
+Please refer to sample config files in test/spp_config/spp_config.
+
+[NOTE] Core mask should be changed to correspond with core assingment
+defined in each of config files.
+
+```sh
+$ sudo ./src/vf/x86_64-native-linuxapp-gcc/spp_vf \
+-c 0x3ffd -n 4 --proc-type=secondary \
+-- --config /path/to/config/spp_vf1.json
+```
+
+### SPP VM
+
+Launch VMs with `virsh` command.
+
+```sh
+$ virsh start [VM]
+```
+
+### Additional Network Configurations
+
+To enable processes running on the VM to communicate through spp,
+it is required additional network configurations on host and guest VMss.
+
+#### Host1
+
+```sh
+# Interface for vhost
+$ sudo ifconfig [IF_NAME] inet [IP_ADDR] netmask [NETMASK] up
+
+# Register host2 to arp table
+$ sudo arp -s [IP_ADDR] [MAC_ADDR] -i [IF_NAME]
+
+# Disable offload for vhost interface
+$ sudo ethtool -K [IF_NAME] tx off
+```
+
+#### Host2
+
+```sh
+# Register VM to arp table
+$ sudo arp -s [IP_ADDR] [MAC_ADDR] -i [IF_NAME]
+
+# Disable offload for VM interface
+$ ethtool -K [IF_NAME] tx off
+```
diff --git a/docs/spp_vf/setup.md b/docs/spp_vf/setup.md
index 572777b..450e68a 100644
--- a/docs/spp_vf/setup.md
+++ b/docs/spp_vf/setup.md
@@ -168,6 +168,9 @@ Edit VM configuration with virsh.
 
 ```sh
 $ virsh edit [VM_NAME]
+```
+
+```xml
 <domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
 	  <name>spp-vm1</name>
 	  <uuid>d90f5420-861a-4479-8559-62d7a1545cb9</uuid>
diff --git a/docs/spp_vf/spp_vf_overview.svg b/docs/spp_vf/spp_vf_overview.svg
new file mode 100644
index 0000000..d0a6769
--- /dev/null
+++ b/docs/spp_vf/spp_vf_overview.svg
@@ -0,0 +1,793 @@
+<?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:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="210mm"
+   height="297mm"
+   viewBox="0 0 744.09448819 1052.3622047"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.91 r13725"
+   sodipodi:docname="spp_vf_overview.svg">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible"
+       id="marker5641"
+       refX="0.0"
+       refY="0.0"
+       orient="auto"
+       inkscape:stockid="Arrow1Lstart">
+      <path
+         transform="scale(0.8) translate(12.5,0)"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         id="path5643" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker5547"
+       style="overflow:visible"
+       inkscape:isstock="true"
+       inkscape:collect="always">
+      <path
+         id="path5549"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker5465"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path5467"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible;"
+       id="marker5365"
+       refX="0.0"
+       refY="0.0"
+       orient="auto"
+       inkscape:stockid="Arrow2Lend">
+      <path
+         transform="scale(1.1) rotate(180) translate(1,0)"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         id="path5367" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true"
+       inkscape:collect="always">
+      <path
+         id="path4630"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lstart"
+       style="overflow:visible"
+       inkscape:isstock="true">
+      <path
+         id="path4609"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker5147"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path5149"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker5113"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path5115"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible;"
+       id="marker5009"
+       refX="0.0"
+       refY="0.0"
+       orient="auto"
+       inkscape:stockid="Arrow1Lend"
+       inkscape:collect="always">
+      <path
+         transform="scale(0.8) rotate(180) translate(12.5,0)"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         id="path5011" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="marker4963"
+       style="overflow:visible;"
+       inkscape:isstock="true"
+       inkscape:collect="always">
+      <path
+         id="path4965"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:isstock="true"
+       style="overflow:visible;"
+       id="marker4923"
+       refX="0.0"
+       refY="0.0"
+       orient="auto"
+       inkscape:stockid="Arrow1Lend"
+       inkscape:collect="always">
+      <path
+         transform="scale(0.8) rotate(180) translate(12.5,0)"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         id="path4925" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;"
+       inkscape:isstock="true"
+       inkscape:collect="always">
+      <path
+         id="path4612"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Mend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Mend"
+       style="overflow:visible;"
+       inkscape:isstock="true">
+      <path
+         id="path4636"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(0.6) rotate(180) translate(0,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.49497475"
+     inkscape:cx="123.1929"
+     inkscape:cy="463.15501"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer2"
+     showgrid="false"
+     inkscape:window-width="1331"
+     inkscape:window-height="840"
+     inkscape:window-x="255"
+     inkscape:window-y="0"
+     inkscape:window-maximized="0" />
+  <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:groupmode="layer"
+     id="layer2"
+     inkscape:label="host"
+     style="display:inline">
+    <rect
+       id="rect3397"
+       width="515.59247"
+       height="371.01962"
+       x="199.04526"
+       y="-494.46774"
+       rx="0"
+       ry="0"
+       style="fill:#f9f9f9;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       transform="scale(1,-1)" />
+    <image
+       y="188.82965"
+       x="199.5847"
+       id="image4253"
+       xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAAABHNCSVQICAgIfAhkiAAAAJdJREFU WIXtzrEJwkAYBeB33pFOd7CQ4AwSwSLgMIcoOIe9jQtIIDiArQppHOEC4gjpPHubV/4W75vgc9NF lV05h7WhT4ir5TZ8ZiXS4Wj9gb80eN2vk5F15JdCjEKMQoxCjEKMQoxCjEKMQoxCjEKMQoxCjEKM QszfhcLQJ6A9Wz+A7gHvfQ77db15P29j648rXI5xd/oCgL0bFKgMdsQAAAAASUVORK5CYII= "
+       style="fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-opacity:1;image-rendering:optimizeSpeed"
+       preserveAspectRatio="none"
+       height="29.383257"
+       width="32.579395" />
+    <image
+       y="397.5441"
+       x="198.29185"
+       id="image4273"
+       xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAIAAABuYg/PAAAAA3NCSVQICAjb4U/gAAAAbUlEQVRI iWNUtLZlVNdkoDH4/ujhxrZmln+q6g/7ZtLaMuZNa9+8ecNEa2uQwahlo5aNWjZq2ahlo5aNWjZq 2ahlo5aNWjZq2ahlOAHL90cPGTasprk9Z04y+bgynj179t27d7S2i5GR0cHBAQDdpBlSwJ9IHwAA AABJRU5ErkJggg== "
+       style="fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-opacity:1;image-rendering:optimizeSpeed"
+       preserveAspectRatio="none"
+       height="29.383257"
+       width="32.579395" />
+    <image
+       y="670.39264"
+       x="208.19046"
+       id="image4254"
+       xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgUAAAF0CAYAAACzCkr0AAAABHNCSVQICAgIfAhkiAAABixJREFU
+eJzt1jGRmgEABtElc9j4W3xQIBIfEYEBZKS4juKGNJ8HMpP3FGy5p/P5/D6OIwDg//T9/d3tdvv9
+dRxHz+fz0z0AwIfc7/cej8fp16dDAIB/gykAACpTAACMKQAAKlMAAIwpAAAqUwAAjCkAACpTAACM
+KQAAKlMAAIwpAAAqUwAAjCkAACpTAACMKQAAKlMAAIwpAAAqUwAAjCkAACpTAACMKQAAKlMAAIwp
+AAAqUwAAjCkAACpTAACMKQAAKlMAAIwpAAAqUwAAjCkAACpTAACMKQAAKlMAAIwpAAAqUwAAjCkA
+ACpTAACMKQAAKlMAAIwpAAAqUwAAjCkAACpTAACMKQAAKlMAAIwpAAAqUwAAjCkAACpTAACMKQAA
+KlMAAIwpAAAqUwAAjCkAACpTAACMKQAAKlMAAIwpAAAqUwAAjCkAACpTAACMKQAAKlMAAIwpAAAq
+UwAAjCkAACpTAACMKQAAKlMAAIwpAAAqUwAAjCkAACpTAACMKQAAKlMAAIwpAAAqUwAAjCkAACpT
+AACMKQAAKlMAAIwpAAAqUwAAjCkAACpTAACMKQAAKlMAAIwpAAAqUwAAjCkAACpTAACMKQAAKlMA
+AIwpAAAqUwAAjCkAACpTAACMKQAAKlMAAIwpAAAqUwAAjCkAACpTAACMKQAAKlMAAIwpAAAqUwAA
+jCkAACpTAACMKQAAKlMAAIwpAAAqUwAAjCkAACpTAACMKQAAKlMAAIwpAAAqUwAAjCkAACpTAACM
+KQAAKlMAAIwpAAAqUwAAjCkAACpTAACMKQAAKlMAAIwpAAAqUwAAjCkAACpTAACMKQAAKlMAAIwp
+AAAqUwAAjCkAACpTAACMKQAAKlMAAIwpAAAqUwAAjCkAACpTAACMKQAAKlMAAIwpAAAqUwAAjCkA
+ACpTAACMKQAAKlMAAIwpAAAqUwAAjCkAACpTAACMKQAAKlMAAIwpAAAqUwAAjCkAACpTAACMKQAA
+KlMAAIwpAAAqUwAAjCkAACpTAACMKQAAKlMAAIwpAAAqUwAAjCkAACpTAACMKQAAKlMAAIwpAAAq
+UwAAjCkAACpTAACMKQAAKlMAAIwpAAAqUwAAjCkAACpTAACMKQAAKlMAAIwpAAAqUwAAjCkAACpT
+AACMKQAAKlMAAIwpAAAqUwAAjCkAACpTAACMKQAAKlMAAIwpAAAqUwAAjCkAACpTAACMKQAAKlMA
+AIwpAAAqUwAAjCkAACpTAACMKQAAKlMAAIwpAAAqUwAAjCkAACpTAACMKQAAKlMAAIwpAAAqUwAA
+jCkAACpTAACMKQAAKlMAAIwpAAAqUwAAjCkAACpTAACMKQAAKlMAAIwpAAAqUwAAjCkAACpTAACM
+KQAAKlMAAIwpAAAqUwAAjCkAACpTAACMKQAAKlMAAIwpAAAqUwAAjCkAACpTAACMKQAAKlMAAIwp
+AAAqUwAAjCkAACpTAACMKQAAKlMAAIwpAAAqUwAAjCkAACpTAACMKQAAKlMAAIwpAAAqUwAAjCkA
+ACpTAACMKQAAKlMAAIwpAAAqUwAAjCkAACpTAACMKQAAKlMAAIwpAAAqUwAAjCkAACpTAACMKQAA
+KlMAAIwpAAAqUwAAjCkAACpTAACMKQAAKlMAAIwpAAAqUwAAjCkAACpTAACMKQAAKlMAAIwpAAAq
+UwAAjCkAACpTAACMKQAAKlMAAIwpAAAqUwAAjCkAACpTAACMKQAAKlMAAIwpAAAqUwAAjCkAACpT
+AACMKQAAKlMAAIwpAAAqUwAAjCkAACpTAACMKQAAKlMAAIwpAAAqUwAAjCkAACpTAACMKQAAKlMA
+AIwpAAAqUwAAjCkAACpTAACMKQAAKlMAAIwpAAAqUwAAjCkAACpTAACMKQAAKlMAAIwpAAAqUwAA
+jCkAACpTAACMKQAAKlMAAIwpAAAqUwAAjCkAACpTAACMKQAAKlMAAIwpAAAqUwAAjCkAACpTAACM
+KQAAKlMAAIwpAAAqUwAAjCkAACpTAACMKQAAKlMAAIwpAAAqUwAAjCkAACpTAACMKQAAKlMAAIwp
+AAAqUwAAjCkAACpTAADM1+v1+rlcLqdPhwAAn/F+v7ter3/+At56GMaw9bmuAAAAAElFTkSuQmCC
+
+"
+       style="stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;image-rendering:optimizeSpeed"
+       preserveAspectRatio="none"
+       height="232.59895"
+       width="498.81723" />
+    <image
+       y="728.25555"
+       x="207.75386"
+       id="image4294"
+       xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACEAAAAeCAYAAACiyHcXAAAABHNCSVQICAgIfAhkiAAAAIRJREFU
+SIljVLS2/c+orskwEOD7o4cMC8uKj7D8U1VneNg3c0AcwbxpLcOLFy9YmQbEdjQw6ggYGHUEDIw6
+AgZGHQEDo46AgVFHwMCoI2Bg1BEwMOoIGBh1BAyMOgIGRh0BA4PCESzfHz1kYNiwemBsP3OSgcnC
+kIHx////SQPjAji4BgCwERjrIQkp5wAAAABJRU5ErkJggg==
+"
+       style="image-rendering:optimizeSpeed"
+       preserveAspectRatio="none"
+       height="30"
+       width="33" />
+    <image
+       y="829.27075"
+       x="207.75388"
+       id="image4314"
+       xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACEAAAAeCAYAAACiyHcXAAAABHNCSVQICAgIfAhkiAAAAH5JREFU
+SIntzqENhEAYROFZoBEEIVfDBYm7KmiFBImnhgvJQRckaPyi1+NY1CCugR8xXwPvufxdRVe+YOHY
+PaauRXYWJXw/mEyk84gQAhKT+h9NkCZIE6QJ0gRpgjRBmiBNkCZIE6QJesREduwe+H1t6uuC5FPD
+xRgbm4PbdgF0sBiGQ2sxrAAAAABJRU5ErkJggg==
+"
+       style="image-rendering:optimizeSpeed"
+       preserveAspectRatio="none"
+       height="30"
+       width="33" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 208.09142,741.23523 C 175.04704,701.33452 142.10284,661.21343 135.36044,563.44837 135.73123,495.86243 158.93068,440.2096 197.9899,411.92549"
+       id="path4317"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 195.96959,211.91529 C 90.766866,304.85183 82.207898,365.56976 74.751289,533.14379 80.131674,656.66835 90.106723,745.84772 207.75388,849.16922"
+       id="path4339"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccc" />
+    <path
+       style="fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 200.36855,202.93062 0,-13.13199 15.15229,0 15.15229,0 0,13.13199 0,13.13198 -15.15229,0 -15.15229,0 0,-13.13198 z"
+       id="path4365"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 198.34825,412.03219 0,-14.14213 15.15228,0 15.15229,0 0,14.14213 0,14.14214 -15.15229,0 -15.15228,0 0,-14.14214 z"
+       id="path4367"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 208.44977,742.35208 0,-13.13199 15.15229,0 15.15229,0 0,13.13199 0,13.13198 -15.15229,0 -15.15229,0 0,-13.13198 z"
+       id="path4371"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 208.44977,843.36733 0,-13.13198 15.15229,0 15.15229,0 0,13.13198 0,13.13198 -15.15229,0 -15.15229,0 0,-13.13198 z"
+       id="path4373"
+       inkscape:connector-curvature="0" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:17.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="214.07114"
+       y="698.42303"
+       id="text4427"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4429"
+         x="214.07114"
+         y="698.42303">host2</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:17.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="203.96959"
+       y="144.92035"
+       id="text4431"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4433"
+         x="203.96959"
+         y="144.92035">host1</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:17.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="209.5847"
+       y="208.82965"
+       id="text4435"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4437"
+         x="209.5847"
+         y="208.82965">rx</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:17.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="204.05083"
+       y="420.00671"
+       id="text4439"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4441"
+         x="204.05083"
+         y="420.00671">tx</tspan></text>
+    <rect
+       style="fill:#ffeeaa;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4445"
+       width="139.40105"
+       height="121.21831"
+       x="28.284271"
+       y="494.758" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:22.39949417px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="48.699158"
+       y="555.4043"
+       id="text4455"
+       sodipodi:linespacing="125%"
+       transform="scale(0.985853,1.01435)"><tspan
+         sodipodi:role="line"
+         id="tspan4457"
+         x="48.699158"
+         y="555.4043">network</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:17.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="212.13203"
+       y="743.25549"
+       id="text4459"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4461"
+         x="212.13203"
+         y="743.25549">rx</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:17.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="214.15234"
+       y="848.3114"
+       id="text4463"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4465"
+         x="214.15234"
+         y="848.3114">tx</tspan></text>
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="guests"
+     style="display:inline"
+     sodipodi:insensitive="true">
+    <rect
+       style="fill:#ececec;fill-opacity:1;stroke:#000000;stroke-width:0.74355245;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4385"
+       width="155.18895"
+       height="272.38342"
+       x="544.70715"
+       y="193.82353" />
+    <rect
+       style="fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-width:0.85944676;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4387"
+       width="31.027994"
+       height="27.984053"
+       x="546.06403"
+       y="243.84534" />
+    <rect
+       style="fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-width:0.85944676;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4389"
+       width="32.320827"
+       height="27.984053"
+       x="546.06403"
+       y="281.98343" />
+    <rect
+       style="fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-width:0.85944676;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4391"
+       width="32.320827"
+       height="29.150057"
+       x="546.06403"
+       y="356.95554" />
+    <rect
+       style="fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-width:0.85944676;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4393"
+       width="34.906494"
+       height="26.818052"
+       x="544.77112"
+       y="397.75766" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:19.04654694px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="558.37213"
+       y="210.79575"
+       id="text4395"
+       sodipodi:linespacing="125%"
+       transform="scale(0.98137951,1.0189738)"><tspan
+         sodipodi:role="line"
+         id="tspan4397"
+         x="558.37213"
+         y="210.79575">guest</tspan></text>
+    <rect
+       style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4375"
+       width="48.773148"
+       height="81.09803"
+       x="539.2785"
+       y="236.01605" />
+    <rect
+       style="fill:#cccccc;fill-opacity:0;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4397"
+       width="46.589622"
+       height="82.955116"
+       x="539.38049"
+       y="349.23471" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:17.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="551.50269"
+       y="258.30109"
+       id="text4399"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4401"
+         x="551.50269"
+         y="258.30109">rx</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:17.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="551.54327"
+       y="298.78842"
+       id="text4403"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4405"
+         x="551.54327"
+         y="298.78842">tx</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:17.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="549.52295"
+       y="375.56"
+       id="text4407"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4409"
+         x="549.52295"
+         y="375.56">rx</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:17.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="551.54327"
+       y="415.96606"
+       id="text4411"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4413"
+         x="551.54327"
+         y="415.96606">tx</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:17.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="594.03064"
+       y="266.46353"
+       id="text4415"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4417"
+         x="594.03064"
+         y="266.46353">vNIC</tspan><tspan
+         sodipodi:role="line"
+         x="594.03064"
+         y="288.33853"
+         id="tspan4425">(vhost)</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:17.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="596.07123"
+       y="381.62091"
+       id="text4419"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4421"
+         x="596.07123"
+         y="381.62091">vNIC</tspan><tspan
+         sodipodi:role="line"
+         x="596.07123"
+         y="403.49591"
+         id="tspan4423">(vhost)</tspan></text>
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer3"
+     inkscape:label="spp_vf_process"
+     style="display:inline"
+     sodipodi:insensitive="true">
+    <rect
+       style="fill:#f4e3d7;fill-opacity:1;stroke:#000000;stroke-width:0.87971044;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect4399"
+       width="223.64525"
+       height="265.71939"
+       x="277.04822"
+       y="179.91371"
+       ry="13.91201"
+       rx="10.217305" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:17.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="292.96454"
+       y="203.81377"
+       id="text5769"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan5771"
+         x="292.96454"
+         y="203.81377">spp_vf</tspan></text>
+  </g>
+  <g
+     inkscape:label="spp_vf_threads"
+     inkscape:groupmode="layer"
+     id="layer1"
+     style="display:inline"
+     sodipodi:insensitive="true">
+    <rect
+       style="fill:#ffeeaa;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.056795;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect3338"
+       width="88.294899"
+       height="41.616783"
+       x="291.37378"
+       y="228.27687"
+       rx="14.345392"
+       ry="8.049448" />
+    <path
+       style="fill:#ffeeaa;fill-opacity:1;stroke:#000000;stroke-width:1.00371253;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 300.46715,378.46629 c -4.32888,-2.69254 -5.14237,-5.33087 -5.14237,-16.678 0,-18.70818 -0.47456,-18.50573 43.37958,-18.50573 24.02629,0 36.284,0.61286 38.38411,1.91912 1.97847,1.23059 3.08541,7.52178 3.08541,17.53559 0,13.80279 -0.5776,15.80876 -4.97333,17.27202 -2.73534,0.91054 -19.51231,1.65552 -37.28218,1.65552 -28.8806,0 -32.8545,-0.33939 -37.45122,-3.19852 z"
+       id="path4551"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#ffeeaa;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 423.06161,258.14039 c -3.47945,-3.47946 -3.22798,-24.79967 0.32732,-27.75031 1.88343,-1.5631 11.35671,-2.1431 28.78935,-1.7626 l 25.98222,0.5671 0,15.15229 0,15.15229 -26.30954,0.56052 c -18.74837,0.39942 -27.02222,-0.15217 -28.78935,-1.91929 z"
+       id="path4553"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#ffeeaa;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 423.00617,302.53166 c -3.14772,-3.14772 -3.14772,-24.32844 0,-27.47615 2.54806,-2.54806 46.84009,-3.54987 52.96879,-1.19806 4.63563,1.77886 4.63563,28.09341 0,29.87227 -6.1287,2.3518 -50.42073,1.34999 -52.96879,-1.19806 z"
+       id="path4555"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#ffeeaa;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 423.08192,351.07442 c -3.1916,-3.19159 -3.23421,-24.35282 -0.0554,-27.53158 2.80195,-2.80196 49.46626,-3.40751 53.73879,-0.69736 1.84322,1.1692 2.44496,5.8234 2.02031,15.62643 l -0.60478,13.96129 -26.30954,0.56051 c -18.74837,0.39943 -27.02222,-0.15217 -28.78934,-1.91929 z"
+       id="path4557"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:#ffeeaa;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="m 425.04678,399.5063 c -3.43282,-3.43282 -3.13788,-24.77299 0.38276,-27.69486 1.88343,-1.56311 11.35671,-2.1431 28.78935,-1.7626 l 25.98222,0.5671 0.60477,13.96129 c 0.42465,9.80303 -0.17708,14.45723 -2.0203,15.62642 -4.27253,2.71016 -50.93684,2.10461 -53.7388,-0.69735 z"
+       id="path4559"
+       inkscape:connector-curvature="0" />
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:17.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="296.98483"
+       y="252.3214"
+       id="text4561"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4563"
+         x="296.98483"
+         y="252.3214">classifier</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:17.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="304.98483"
+       y="365.4585"
+       id="text4565"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4567"
+         x="304.98483"
+         y="365.4585">merger</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:17.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="436.42651"
+       y="246.17924"
+       id="text4569"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4571"
+         x="436.42651"
+         y="246.17924">fwd</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:17.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="436.42651"
+       y="290.64627"
+       id="text4573"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4575"
+         x="436.42651"
+         y="290.64627">fwd</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:17.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="436.40619"
+       y="343.19452"
+       id="text4577"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4579"
+         x="436.40619"
+         y="343.19452">fwd</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-style:normal;font-weight:normal;font-size:17.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       x="436.42651"
+       y="393.6412"
+       id="text4581"
+       sodipodi:linespacing="125%"><tspan
+         sodipodi:role="line"
+         id="tspan4583"
+         x="436.42651"
+         y="393.6412">fwd</tspan></text>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker5365)"
+       d="m 232.1641,200.95148 60.78014,49.34961"
+       id="path4585"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker5641)"
+       d="m 230.87125,409.66593 64.09329,-48.24807"
+       id="path4587"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
+       d="M 545.48238,294.7478 476.792,288.68688"
+       id="path4589"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker5009)"
+       d="m 474.7717,339.19451 66.67007,30.30458"
+       id="path4591"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow1Lstart)"
+       d="m 480.83262,383.64122 64.64975,28.28427"
+       id="path4593"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker4963)"
+       d="m 478.81231,244.24016 66.67007,10.10154"
+       id="path4595"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)"
+       d="m 377.79705,248.28078 42.42641,-6.06091"
+       id="path4597"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.9164362px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker4923)"
+       d="m 377.75479,246.23771 42.51093,90.95926"
+       id="path4599"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker5465)"
+       d="m 379.79706,363.43817 40.40609,-74.75129"
+       id="path4601"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.15162241px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker5547)"
+       d="m 377.82552,361.46823 48.43039,24.14292"
+       id="path4603"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc" />
+  </g>
+</svg>
-- 
2.13.1



More information about the spp mailing list