* [spp] [PATCH 01/28] doc: add setup guide
@ 2018-01-23 0:28 ogawa.yasufumi
2018-01-23 0:28 ` [spp] [PATCH 02/28] doc: add how_to_use.md ogawa.yasufumi
` (8 more replies)
0 siblings, 9 replies; 10+ messages in thread
From: ogawa.yasufumi @ 2018-01-23 0:28 UTC (permalink / raw)
To: spp, ferruh.yigit, x-fn-spp; +Cc: Hiroyuki Nakamura, Naoki Takada
From: Hiroyuki Nakamura <nakamura.hioryuki@po.ntt-tx.co.jp>
Hi all,
> Series applied, thanks.
Ferruh, thank you for accepting our patches.
We will post the document patches for spp_vf on DPDK17.08 in the
following emails.
Translate Japanese setup guide to English.
Signed-off-by: Naoki Takada <takada.naoki@lab.ntt.co.jp>
---
docs/spp_vf/setup.md | 288 +++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 288 insertions(+)
create mode 100644 docs/spp_vf/setup.md
diff --git a/docs/spp_vf/setup.md b/docs/spp_vf/setup.md
new file mode 100644
index 0000000..572777b
--- /dev/null
+++ b/docs/spp_vf/setup.md
@@ -0,0 +1,288 @@
+# Setup Guide
+
+## Environment
+
+* Ubuntu 16.04
+* qemu-kvm
+* DPDK v17.05
+
+## Setting
+
+### Host
+
+#### Edit Config
+
+Uncomment user and group in `/etc/libvirt/qemu.conf`.
+
+```sh
+# /etc/libvirt/qemu.conf
+
+user = "root"
+group = "root"
+```
+
+Change `KVM_HUGEPAGES` from 0 to 1 in `/etc/default/qemu-kvm`.
+
+```sh
+# /etc/default/qemu-kvm
+
+KVM_HUGEPAGES=1
+```
+
+Change grub config for hugepages and isolcpus.
+
+```sh
+# /etc/default/grub
+
+GRUB_CMDLINE_LINUX_DEFAULT="isolcpus=2,4,6,8,10,12-18,20,22,24,26-42,44,46 hugepagesz=1G hugepages=36 default_hugepagesz=1G"
+```
+
+You need to run `update-grub` and reboot to activate grub config.
+
+```sh
+$ sudo upadte-grub
+$ sudo reboot
+```
+
+You can check hugepage settings as following.
+
+```sh
+$ cat /proc/meminfo | grep -i huge
+AnonHugePages: 2048 kB
+HugePages_Total: 36 # /etc/default/grub
+HugePages_Free: 36
+HugePages_Rsvd: 0
+HugePages_Surp: 0
+Hugepagesize: 1048576 kB # /etc/default/grub
+
+$ mount | grep -i huge
+cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb,release_agent=/run/cgmanager/agents/cgm-release-agent.hugetlb,nsroot=/)
+hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime)
+hugetlbfs-kvm on /run/hugepages/kvm type hugetlbfs (rw,relatime,mode=775,gid=117)
+hugetlb on /run/lxcfs/controllers/hugetlb type cgroup (rw,relatime,hugetlb,release_agent=/run/cgmanager/agents/cgm-release-agent.hugetlb,nsroot=/)
+```
+
+Finally, you unmount default hugepage.
+
+```sh
+$ sudo unmount /dev/hugepages
+```
+
+#### Install jasson
+
+Network configuration is defined in JSON and `spp_vf` reads config from
+the file while launching.
+[jasson](http://www.digip.org/jansson/) is a JSON library written in C.
+
+It is required to use `json_path` feature of `jasson` for `spp_vf`.
+It has develped under `json_path` branch and you need to checkout and compile
+it manually.
+
+```sh
+$ git clone https://github.com/rogerz/jansson
+$ cd jansson
+$ sudo git checkout json_path
+Branch json_path set up to track remote branch json_path from origin. Switched to a new branch 'json_path'
+```
+
+This setup guide expects that `jasson` is placed as `/opt/jasson`.
+
+```sh
+$ sudo mkdir -p /opt/jansson
+$ sudo mv jansson /opt/jansson
+```
+
+Compile it as following.
+
+```sh
+$ cd /opt/jansson/jansson
+$ sudo autoreconf -i
+$ sudo ./configure
+$ sudo make
+$ sudo make install
+$ sudo ldconfig
+```
+
+Then, confirm that header files of jasson are generated in `/usr/local/include`.
+
+```sh
+$ ls -al /usr/local/include
+total 24
+drwxr-xr-x 2 root root 4096 Jul 28 16:45 .
+drwxr-xr-x 10 root root 4096 May 27 10:23 ..
+-rw-r--r-- 1 root root 1183 Jul 28 16:45 jansson_config.h
+-rw-r--r-- 1 root root 9499 Jul 28 16:45 jansson.h
+```
+
+#### Install DPDK
+
+Install DPDK v17.05 in any directory. This is a simple instruction and please refer
+[Getting Started Guide for Linux](http://dpdk.org/doc/guides/linux_gsg/index.html)
+for details.
+
+```sh
+$ cd /path/to/any_dir
+$ git clone http://dpdk.org/git/dpdk
+$ cd dpdk
+$ git checkout v17.05
+$ export RTE_SDK=`pwd`
+$ export RTE_TARGET=x86_64-native-linuxapp-gcc
+$ make T=x86_64-native-linuxapp-gcc install
+```
+
+#### Install SPP
+
+Clone SPP in any directory and compile it.
+
+```sh
+$ cd /path/to/spp_home/
+$ git clone https://github.com/ntt-ns/Soft-Patch-Panel.git
+export SPP_HOME=/path/to/spp_home/Soft-Patch-Panel
+$ cd $SPP_HOME
+$ make
+```
+
+#### Setup for DPDK
+
+Load igb_uio module.
+
+```sh
+$ sudo modprobe uio
+$ sudo insmod $RTE_SDK/x86_64-native-linuxapp-gcc/kmod/igb_uio.ko
+$ lsmod | grep uio
+igb_uio 16384 0 # igb_uio is loaded
+uio 20480 1 igb_uio
+```
+
+Then, bind it with PCI_Number.
+```sh
+$ $RTE_SDK/usertools/dpdk-devbind.py --status
+# check your device for PCI_Number
+
+$ sudo $RTE_SDK/usertools/dpdk-devbind.py --bind=igb_uio [PCI_Number]
+```
+
+#### virsh setup
+
+Edit VM configuration with virsh.
+
+```sh
+$ virsh edit [VM_NAME]
+<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
+ <name>spp-vm1</name>
+ <uuid>d90f5420-861a-4479-8559-62d7a1545cb9</uuid>
+ <memory unit='KiB'>4194304</memory>
+ <currentMemory unit='KiB'>4194304</currentMemory>
+ <memoryBacking>
+ <hugepages/>
+ </memoryBacking>
+ <vcpu placement='static'>4</vcpu>
+ <os>
+ <type arch='x86_64' machine='pc-i440fx-2.3'>hvm</type>
+ <boot dev='hd'/>
+ </os>
+ <features>
+ <acpi/>
+ <apic/>
+ <pae/>
+ </features>
+ <clock offset='utc'/>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>restart</on_crash>
+ <devices>
+ <emulator>/usr/local/bin/qemu-system-x86_64</emulator>
+ <disk type='file' device='disk'>
+ <driver name='qemu' type='raw'/>
+ <source file='/var/lib/libvirt/images/spp-vm1.qcow2'/>
+ <target dev='hda' bus='ide'/>
+ <address type='drive' controller='0' bus='0' target='0' unit='0'/>
+ </disk>
+ <disk type='block' device='cdrom'>
+ <driver name='qemu' type='raw'/>
+ <target dev='hdc' bus='ide'/>
+ <readonly/>
+ <address type='drive' controller='0' bus='1' target='0' unit='0'/>
+ </disk>
+ <controller type='usb' index='0'>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
+ </controller>
+ <controller type='pci' index='0' model='pci-root'/>
+ <controller type='ide' index='0'>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
+ </controller>
+ <interface type='network'>
+ <mac address='52:54:00:99:aa:7f'/>
+ <source network='default'/>
+ <model type='rtl8139'/>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
+ </interface>
+ <serial type='pty'>
+ <target type='isa-serial' port='0'/>
+ </serial>
+ <console type='pty'>
+ <target type='serial' port='0'/>
+ </console>
+ <memballoon model='virtio'>
+ <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
+ </memballoon>
+ </devices>
+ <qemu:commandline>
+ <qemu:arg value='-cpu'/>
+ <qemu:arg value='host'/>
+ <qemu:arg value='-object'/>
+ <qemu:arg value='memory-backend-file,id=mem,size=4096M,mem-path=/run/hugepages/kvm,share=on'/>
+ <qemu:arg value='-numa'/>
+ <qemu:arg value='node,memdev=mem'/>
+ <qemu:arg value='-mem-prealloc'/>
+ <qemu:arg value='-chardev'/>
+ <qemu:arg value='socket,id=chr0,path=/tmp/sock0'/>
+ <qemu:arg value='-device'/>
+ <qemu:arg value='virtio-net-pci,netdev=vhost-net0'/>
+ <qemu:arg value='-netdev'/>
+ <qemu:arg value='vhost-user,id=vhost-net0,chardev=chr0,vhostforce'/>
+ <qemu:arg value='-chardev'/>
+ <qemu:arg value='socket,id=chr1,path=/tmp/sock1'/>
+ <qemu:arg value='-device'/>
+ <qemu:arg value='virtio-net-pci,netdev=vhost-net1'/>
+ <qemu:arg value='-netdev'/>
+ <qemu:arg value='vhost-user,id=vhost-net1,chardev=chr1,vhostforce'/>
+ </qemu:commandline>
+ </domain>
+```
+
+### Trouble Shooting
+
+You might encounter a permission error for `tmp/sockN` because of appamor.
+In this case, you should try it.
+
+```sh
+$ sudo ln -s /etc/apparmor.d/usr.lib.libvirt.virt-aa-helper /etc/apparmor.d/disable/usr.lib.libvirt.virt-aa-helper
+$ sudo ln -s /etc/apparmor.d/usr.sbin.libvirtd /etc/apparmor.d/disable/usr.sbin.libvirtd
+$ sudo apparmor_parser -R /etc/apparmor.d/usr.lib.libvirt.virt-aa-helper
+$ sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.libvirtd
+$ sudo service apparmor reload
+$ sudo service apparmor restart
+$ sudo service libvirt-bin restart
+```
+
+Or, you remove appamor.
+
+```sh
+$ sudo apt-get remove apparmor
+```
+
+If you use CentOS, not Ubuntu, confirm that SELinux doesn't prevent for permission.
+SELinux should be disabled in this case.
+
+```sh
+# /etc/selinux/config
+SELINUX=disabled
+```
+
+Check your SELinux configuration.
+
+```sh
+$ getenforce
+Disabled
+```
--
2.13.1
^ permalink raw reply [flat|nested] 10+ messages in thread
* [spp] [PATCH 02/28] doc: add how_to_use.md
2018-01-23 0:28 [spp] [PATCH 01/28] doc: add setup guide ogawa.yasufumi
@ 2018-01-23 0:28 ` ogawa.yasufumi
2018-01-23 0:28 ` [spp] [PATCH 03/28] doc: add config_manual.md ogawa.yasufumi
` (7 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: ogawa.yasufumi @ 2018-01-23 0:28 UTC (permalink / raw)
To: spp, ferruh.yigit, x-fn-spp; +Cc: Hiroyuki Nakamura, Naoki Takada
From: Hiroyuki Nakamura <nakamura.hioryuki@po.ntt-tx.co.jp>
how_to_use.md is a guide for running spp_vf.
Signed-off-by: Naoki Takada <takada.naoki@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
^ permalink raw reply [flat|nested] 10+ messages in thread
* [spp] [PATCH 03/28] doc: add config_manual.md
2018-01-23 0:28 [spp] [PATCH 01/28] doc: add setup guide ogawa.yasufumi
2018-01-23 0:28 ` [spp] [PATCH 02/28] doc: add how_to_use.md ogawa.yasufumi
@ 2018-01-23 0:28 ` ogawa.yasufumi
2018-01-23 0:28 ` [spp] [PATCH 04/28] doc: add spp_vf.md ogawa.yasufumi
` (6 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: ogawa.yasufumi @ 2018-01-23 0:28 UTC (permalink / raw)
To: spp, ferruh.yigit, x-fn-spp; +Cc: Hiroyuki Nakamura, Naoki Takada
From: Hiroyuki Nakamura <nakamura.hioryuki@po.ntt-tx.co.jp>
config_manual.md is a detailed manual for JSON config file.
Signed-off-by: Naoki Takada <takada.naoki@lab.ntt.co.jp>
---
docs/spp_vf/config_manual.md | 214 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 214 insertions(+)
create mode 100644 docs/spp_vf/config_manual.md
diff --git a/docs/spp_vf/config_manual.md b/docs/spp_vf/config_manual.md
new file mode 100644
index 0000000..370dfdb
--- /dev/null
+++ b/docs/spp_vf/config_manual.md
@@ -0,0 +1,214 @@
+# SPP_VF Config Manual
+
+## Forwarder Type
+
+There are three types of forwarder for 1:1, 1:N and N:1.
+
+ * forward: 1:1
+ * classifier_mac: 1:N (Destination is determined by MAC address)
+ * merge: N:1
+
+### Restrictions
+
+ * Different types of forwarder cannot assing on same core.
+ * Only one classifier_mac is allowed (Cannot use two or more).
+
+## Port Type
+
+There are three port types.
+
+ * nic: Physical NIC
+ * vhost: Vhost PMD for VMs
+ * ring: Ring PMD for spp components
+
+Each of ports is identified as resource ID with port type and resource ID.
+For example, resource ID of physical NIC of ID 0 is described as `nic0`.
+
+## Config Format
+
+Config files is described in JSON format.
+It consists of `vfs` and `classifier_table`.
+`vfs` defines each of spp_vf attributes and
+`classifier_table` defines MAC address and correnpond port for
+determining destination.
+
+### Attributes in Config
+
+ * vfs
+ * name: Name of spp_vf component.
+ * num_vhost: Number of vhosts spp_vf use.
+ * num_ring: Number of rings spp_vf use.
+ * functions: List of forwarders and its attributes (function means a forwarder).
+ * core: Core ID forwarder running on.
+ * type: Forwarder type (`forward`, `classifier_mac`, or `merger`).
+ * rx_port: Resource ID(s) of rx port.
+ * tx_port: Resource ID of tx port. If 1:N, which means the dest is `classifier_mac`,
+ directly described as `classifier_mac_table`.
+
+ * classifier_table
+ * name: Table name for classifier_mac, It MUST be "classifier_mac_table" in current implementation
+ * table: Set of MAC address and port for destination
+ * mac: MAC address
+ * port: Resource ID of port
+
+## Sample Config
+
+Here is default config `spp.json` and network diagram of it.
+
+```json
+{
+ "vfs": [
+ {
+ "name": "vf0",
+ "num_vhost": 4, // Number of vhosts
+ "num_ring": 9, // Number of rings
+ "functions":[ // Attributes of forward,merge or classifier_mac
+ {
+ "core": 2, // Core ID
+ "type": "merge", // Forwarder type
+ "rx_port": ["nic0", "nic1"], // Rx port, It MUST be a list for merge type
+ "tx_port": "ring8" // Tx port
+ },
+ {
+ "core": 3,
+ "type": "classifier_mac",
+ "rx_port": "ring8", // Rx port, It is not a list because type is classifier_mac
+ "tx_port_table": "classifier_mac_table" // If type is classifier_mac, tx is classifier_mac_table
+ },
+
+ {
+ "core": 4,
+ "type": "forward",
+ "rx_port": "ring0",
+ "tx_port": "vhost0"
+ },
+ {
+ "core": 5,
+ "type": "forward",
+ "rx_port": "ring1",
+ "tx_port": "vhost2"
+ },
+ {
+ "core": 6,
+ "type": "forward",
+ "rx_port": "vhost0",
+ "tx_port": "ring2"
+ },
+ {
+ "core": 7,
+ "type": "forward",
+ "rx_port": "vhost2",
+ "tx_port": "ring3"
+ },
+ {
+ "core": 8,
+ "type": "merge",
+ "rx_port": ["ring2", "ring3"],
+ "tx_port": "nic0"
+ },
+
+ {
+ "core": 9,
+ "type": "forward",
+ "rx_port": "ring4",
+ "tx_port": "vhost1"
+ },
+ {
+ "core": 10,
+ "type": "forward",
+ "rx_port": "ring5",
+ "tx_port": "vhost3"
+ },
+ {
+ "core": 11,
+ "type": "forward",
+ "rx_port": "vhost1",
+ "tx_port": "ring6"
+ },
+ {
+ "core": 12,
+ "type": "forward",
+ "rx_port": "vhost3",
+ "tx_port": "ring7"
+ },
+ {
+ "core": 13,
+ "type": "merge",
+ "rx_port": ["ring6", "ring7"],
+ "tx_port": "nic1"
+ }
+ ]
+ }
+ ],
+ "classifier_table": {
+ "name":"classifier_mac_table",
+ "table": [
+ {
+ "mac":"52:54:00:12:34:56",
+ "port":"ring0"
+ },
+ {
+ "mac":"52:54:00:12:34:57",
+ "port":"ring4"
+ },
+ {
+ "mac":"52:54:00:12:34:58",
+ "port":"ring1"
+ },
+ {
+ "mac":"52:54:00:12:34:59",
+ "port":"ring5"
+ }
+ ]
+ }
+}
+```
+
+Network diagram
+[TODO] Replace it to more readable SVG img.
+
+```
++---------+ +-----------------------------------------------------------------------------------------------+
+| host2 | | Host1 |
+| | | +------------------------------------------------------+ +-------------------+ |
+| | | | spp_vf | | | |
+| +-----+ | | +--------+ | +---+ +----+ +---+ +----+ +---+ +----------+ | | +----------+ | |
+| | nic <------> nic0 +-----> M +--> r8 +--> C +-----> r0 +--> F +--> +------> | | |
+| +-----+ | | +----+---+ | +-^-+ +----+ +-+-+ +----+ +---+ | | | | | | | |
+| | | ^ | | | | vhost0 | | | | nic | | |
+| | | | | | | +----+ +---+ | | | | | | | |
+| | | | | | +--------------+ r2 <--+ F <--+ <------+ | | |
+| | | | | | | | +----+ +---+ +----------+ | | +----------+ | |
+| | | | | | | | | | spp vm| |
+| | | | | | | | +----+ +---+ +----------+ | | +----------+ | |
+| | | | | | | +-------> r4 +--+ F +--> +------> | | |
+| | | | | | +--v--+ | +----+ +---+ | | | | | | | |
+| | | +----------------+ M | | | vhost1 | | | | nic | | |
+| | | | | +--^--+ | +----+ +---+ | | | | | | | |
+| | | | | | +------------+ r6 +--+ F <--+ <------+ | | |
+| | | | | | | | +----+ +---+ +----------+ | | +----------+ | |
+| | | | | | | | | | | |
+| | | | | | | | | +-------------------+ |
+| | | | | | | | | |
+| | | | | | | | | +-------------------+ |
+| | | | | | | | | | | |
+| +-----+ | | +--------+ | | | | | +----+ +---+ +----------+ | | +----------+ | |
+| | nic <------> nic1 +-------+ | | +-------> r1 +--+ F +--> +------> | | |
+| +-----+ | | +----+---+ | | | | +----+ +---+ | | | | | | | |
+| | | ^ | | | | | vhost2 | | | | nic | | |
+| | | | | | | | +----+ +---+ | | | | | | | |
+| | | | | +--------------+ r3 +--+ F <--+ <------+ | | |
+| | | | | | | +----+ +---+ +----------+ | | +----------+ | |
+| | | | | | | | | spp vm| |
+| | | | | | | +----+ +---+ +----------+ | | +----------+ | |
+| | | | | | +-------> r5 +--+ F +--> +------> | | |
+| | | | | +----v+ +----+ +---+ | | | | | | | |
+| | | +----------------+ M | | vhost3 | | | | nic | | |
+| | | | +--^--+ +----+ +---+ | | | | | | | |
+| | | | +--------------+ r7 +--+ F <--+ <------+ | | |
+| | | | +----+ +---+ +----------+ | | +----------+ | |
+| | | | | | | |
+| | | +------------------------------------------------------+ +-------------------+ |
+| | | |
++---------+ +-----------------------------------------------------------------------------------------------+
+```
--
2.13.1
^ permalink raw reply [flat|nested] 10+ messages in thread
* [spp] [PATCH 04/28] doc: add spp_vf.md
2018-01-23 0:28 [spp] [PATCH 01/28] doc: add setup guide ogawa.yasufumi
2018-01-23 0:28 ` [spp] [PATCH 02/28] doc: add how_to_use.md ogawa.yasufumi
2018-01-23 0:28 ` [spp] [PATCH 03/28] doc: add config_manual.md ogawa.yasufumi
@ 2018-01-23 0:28 ` ogawa.yasufumi
2018-01-23 0:28 ` [spp] [PATCH 05/28] doc: revise spp_vf.md ogawa.yasufumi
` (5 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: ogawa.yasufumi @ 2018-01-23 0:28 UTC (permalink / raw)
To: spp, ferruh.yigit, x-fn-spp; +Cc: Hiroyuki Nakamura, Naoki Takada
From: Hiroyuki Nakamura <nakamura.hioryuki@po.ntt-tx.co.jp>
This is a top level document for spp_vf. setup_guide or other
documents are refererd from it.
Signed-off-by: Naoki Takada <takada.naoki@lab.ntt.co.jp>
---
docs/spp_vf/spp_vf.md | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 48 insertions(+)
create mode 100644 docs/spp_vf/spp_vf.md
diff --git a/docs/spp_vf/spp_vf.md b/docs/spp_vf/spp_vf.md
new file mode 100644
index 0000000..6587249
--- /dev/null
+++ b/docs/spp_vf/spp_vf.md
@@ -0,0 +1,48 @@
+# SPP_VF
+
+SPP_VF is a SR-IOV like network functionality using DPDK for NFV.
+
+![spp_vf_overview](spp_vf_overview.svg)
+
+## Overview
+
+The application distributes incoming packets depends on MAC address
+similar to SR-IOV functionality.
+Network configuration is defined in JSON config file which is imported
+while launching the application.
+The configuration is able to change by sending commnad from spp after
+initialization.
+
+SPP_VF is a multi-thread application.
+It consists of manager thread and forwarder threads.
+There are three types of forwarder for 1:1, 1:N and N:1.
+
+ * forward: 1:1
+ * classifier_mac: 1:N (Destination is determined by MAC address)
+ * merge: N:1
+
+This is an example of network configration, in which one classifier_mac,
+one merger and four forwarders are runnig in spp_vf process for two
+destinations of vhost interface.
+Incoming packets from rx on host1 are sent to each of vhosts on guest
+by looking MAC address in the packet..
+
+![spp_vf_overview](spp_vf_overview.svg)
+
+## Build the Application
+
+See [setup_guide](setup_guide.md).
+
+## Running the Application
+
+See [how_to_use](how_to_use.md).
+
+## Explanation
+
+The following sections provide some explanation of the code.
+
+### Configuration
+
+### Forwarding
+
+### Packet Cloning
--
2.13.1
^ permalink raw reply [flat|nested] 10+ messages in thread
* [spp] [PATCH 05/28] doc: revise spp_vf.md
2018-01-23 0:28 [spp] [PATCH 01/28] doc: add setup guide ogawa.yasufumi
` (2 preceding siblings ...)
2018-01-23 0:28 ` [spp] [PATCH 04/28] doc: add spp_vf.md ogawa.yasufumi
@ 2018-01-23 0:28 ` ogawa.yasufumi
2018-01-23 0:28 ` [spp] [PATCH 06/28] doc: add config section ogawa.yasufumi
` (4 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: ogawa.yasufumi @ 2018-01-23 0:28 UTC (permalink / raw)
To: spp, ferruh.yigit, x-fn-spp; +Cc: Hiroyuki Nakamura, Naoki Takada
From: Hiroyuki Nakamura <nakamura.hioryuki@po.ntt-tx.co.jp>
Remove wrong placed image and Refactor explanation of overview.
Signed-off-by: Naoki Takada <takada.naoki@lab.ntt.co.jp>
---
docs/spp_vf/spp_vf.md | 10 ++++------
1 file changed, 4 insertions(+), 6 deletions(-)
diff --git a/docs/spp_vf/spp_vf.md b/docs/spp_vf/spp_vf.md
index 6587249..b9ce299 100644
--- a/docs/spp_vf/spp_vf.md
+++ b/docs/spp_vf/spp_vf.md
@@ -2,16 +2,14 @@
SPP_VF is a SR-IOV like network functionality using DPDK for NFV.
-![spp_vf_overview](spp_vf_overview.svg)
-
## Overview
The application distributes incoming packets depends on MAC address
similar to SR-IOV functionality.
Network configuration is defined in JSON config file which is imported
while launching the application.
-The configuration is able to change by sending commnad from spp after
-initialization.
+The configuration is able to change after initialization by sending
+commnad from spp controller.
SPP_VF is a multi-thread application.
It consists of manager thread and forwarder threads.
@@ -31,11 +29,11 @@ by looking MAC address in the packet..
## Build the Application
-See [setup_guide](setup_guide.md).
+See [setup guide](setup.md).
## Running the Application
-See [how_to_use](how_to_use.md).
+See [how to use](how_to_use.md).
## Explanation
--
2.13.1
^ permalink raw reply [flat|nested] 10+ messages in thread
* [spp] [PATCH 06/28] doc: add config section
2018-01-23 0:28 [spp] [PATCH 01/28] doc: add setup guide ogawa.yasufumi
` (3 preceding siblings ...)
2018-01-23 0:28 ` [spp] [PATCH 05/28] doc: revise spp_vf.md ogawa.yasufumi
@ 2018-01-23 0:28 ` ogawa.yasufumi
2018-01-23 0:28 ` [spp] [PATCH 07/28] doc: update jp setup manual ogawa.yasufumi
` (3 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: ogawa.yasufumi @ 2018-01-23 0:28 UTC (permalink / raw)
To: spp, ferruh.yigit, x-fn-spp; +Cc: Hiroyuki Nakamura, Naoki Takada
From: Hiroyuki Nakamura <nakamura.hioryuki@po.ntt-tx.co.jp>
Add description for importing json config to explain about
how it load config using jansson library.
Signed-off-by: Naoki Takada <takada.naoki@lab.ntt.co.jp>
---
docs/spp_vf/spp_vf.md | 72 +++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 72 insertions(+)
diff --git a/docs/spp_vf/spp_vf.md b/docs/spp_vf/spp_vf.md
index b9ce299..2d06e2e 100644
--- a/docs/spp_vf/spp_vf.md
+++ b/docs/spp_vf/spp_vf.md
@@ -41,6 +41,78 @@ The following sections provide some explanation of the code.
### Configuration
+The config file is imported after rte_eal_init() and initialization
+of the application.
+spp_config_load_file() is defined in spp_config.c and default file
+path SPP_CONFIG_FILE_PATH is defined in its header file..
+
+ ```c:spp_vf.c
+ /* set default config file path */
+ strcpy(config_file_path, SPP_CONFIG_FILE_PATH);
+
+ unsigned int main_lcore_id = 0xffffffff;
+ while(1) {
+ /* Parse dpdk parameters */
+ int ret_parse = parse_dpdk_args(argc, argv);
+ if (unlikely(ret_parse != 0)) {
+ break;
+ }
+
+ /* DPDK initialize */
+ int ret_dpdk = rte_eal_init(argc, argv);
+ if (unlikely(ret_dpdk < 0)) {
+ break;
+ }
+
+ /* Skip dpdk parameters */
+ argc -= ret_dpdk;
+ argv += ret_dpdk;
+
+ /* Set log level */
+ rte_log_set_global_level(RTE_LOG_LEVEL);
+
+ /* Parse application parameters */
+ ret_parse = parse_app_args(argc, argv);
+ if (unlikely(ret_parse != 0)) {
+ break;
+ }
+
+ RTE_LOG(INFO, APP, "Load config file(%s)\n", config_file_path);
+
+ /* Load config */
+ int ret_config = spp_config_load_file(config_file_path, 0, &g_config);
+ if (unlikely(ret_config != 0)) {
+ break;
+ }
+
+ /* Get core id. */
+ main_lcore_id = rte_lcore_id();
+ ```
+
+spp_config_load_file() uses [jansson]() for parsing JSON.
+json_load_file() is a function of jansson to parse raw JSON
+file and return json_t object as a result.
+In spp_config_load_file(), configuration of classifier table and
+resource assignment of threads are loaded into config of spp.
+
+After importing config, each of threads are launched.
+
+ ```c:spp_vf.c
+ /* Start thread */
+ unsigned int lcore_id = 0;
+ RTE_LCORE_FOREACH_SLAVE(lcore_id) {
+ if (g_core_info[lcore_id].type == SPP_CONFIG_CLASSIFIER_MAC) {
+ rte_eal_remote_launch(spp_classifier_mac_do,
+ (void *)&g_core_info[lcore_id],
+ lcore_id);
+ } else {
+ rte_eal_remote_launch(spp_forward,
+ (void *)&g_core_info[lcore_id],
+ lcore_id);
+ }
+ }
+ ```
+
### Forwarding
### Packet Cloning
--
2.13.1
^ permalink raw reply [flat|nested] 10+ messages in thread
* [spp] [PATCH 07/28] doc: update jp setup manual
2018-01-23 0:28 [spp] [PATCH 01/28] doc: add setup guide ogawa.yasufumi
` (4 preceding siblings ...)
2018-01-23 0:28 ` [spp] [PATCH 06/28] doc: add config section ogawa.yasufumi
@ 2018-01-23 0:28 ` ogawa.yasufumi
2018-01-23 0:28 ` [spp] [PATCH 08/28] doc: modify figure in spp_vf_overview ogawa.yasufumi
` (2 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: ogawa.yasufumi @ 2018-01-23 0:28 UTC (permalink / raw)
To: spp, ferruh.yigit, x-fn-spp; +Cc: Hiroyuki Nakamura, Naoki Takada
From: Hiroyuki Nakamura <nakamura.hioryuki@po.ntt-tx.co.jp>
Remove description for registering ARP in guests and client machines
which is no need for current version.
Signed-off-by: Naoki Takada <takada.naoki@lab.ntt.co.jp>
---
docs/spp_vf/spp_vf.md | 111 ++++++++++++++++++++++++++------------------------
1 file changed, 57 insertions(+), 54 deletions(-)
diff --git a/docs/spp_vf/spp_vf.md b/docs/spp_vf/spp_vf.md
index 2d06e2e..6a617c0 100644
--- a/docs/spp_vf/spp_vf.md
+++ b/docs/spp_vf/spp_vf.md
@@ -46,47 +46,47 @@ of the application.
spp_config_load_file() is defined in spp_config.c and default file
path SPP_CONFIG_FILE_PATH is defined in its header file..
- ```c:spp_vf.c
- /* set default config file path */
- strcpy(config_file_path, SPP_CONFIG_FILE_PATH);
-
- unsigned int main_lcore_id = 0xffffffff;
- while(1) {
- /* Parse dpdk parameters */
- int ret_parse = parse_dpdk_args(argc, argv);
- if (unlikely(ret_parse != 0)) {
- break;
- }
-
- /* DPDK initialize */
- int ret_dpdk = rte_eal_init(argc, argv);
- if (unlikely(ret_dpdk < 0)) {
- break;
- }
-
- /* Skip dpdk parameters */
- argc -= ret_dpdk;
- argv += ret_dpdk;
-
- /* Set log level */
- rte_log_set_global_level(RTE_LOG_LEVEL);
-
- /* Parse application parameters */
- ret_parse = parse_app_args(argc, argv);
- if (unlikely(ret_parse != 0)) {
- break;
- }
-
- RTE_LOG(INFO, APP, "Load config file(%s)\n", config_file_path);
-
- /* Load config */
- int ret_config = spp_config_load_file(config_file_path, 0, &g_config);
- if (unlikely(ret_config != 0)) {
- break;
- }
-
- /* Get core id. */
- main_lcore_id = rte_lcore_id();
+ ```c
+ /* set default config file path */
+ strcpy(config_file_path, SPP_CONFIG_FILE_PATH);
+
+ unsigned int main_lcore_id = 0xffffffff;
+ while(1) {
+ /* Parse dpdk parameters */
+ int ret_parse = parse_dpdk_args(argc, argv);
+ if (unlikely(ret_parse != 0)) {
+ break;
+ }
+
+ /* DPDK initialize */
+ int ret_dpdk = rte_eal_init(argc, argv);
+ if (unlikely(ret_dpdk < 0)) {
+ break;
+ }
+
+ /* Skip dpdk parameters */
+ argc -= ret_dpdk;
+ argv += ret_dpdk;
+
+ /* Set log level */
+ rte_log_set_global_level(RTE_LOG_LEVEL);
+
+ /* Parse application parameters */
+ ret_parse = parse_app_args(argc, argv);
+ if (unlikely(ret_parse != 0)) {
+ break;
+ }
+
+ RTE_LOG(INFO, APP, "Load config file(%s)\n", config_file_path);
+
+ /* Load config */
+ int ret_config = spp_config_load_file(config_file_path, 0, &g_config);
+ if (unlikely(ret_config != 0)) {
+ break;
+ }
+
+ /* Get core id. */
+ main_lcore_id = rte_lcore_id();
```
spp_config_load_file() uses [jansson]() for parsing JSON.
@@ -97,22 +97,25 @@ resource assignment of threads are loaded into config of spp.
After importing config, each of threads are launched.
- ```c:spp_vf.c
- /* Start thread */
- unsigned int lcore_id = 0;
- RTE_LCORE_FOREACH_SLAVE(lcore_id) {
- if (g_core_info[lcore_id].type == SPP_CONFIG_CLASSIFIER_MAC) {
- rte_eal_remote_launch(spp_classifier_mac_do,
- (void *)&g_core_info[lcore_id],
- lcore_id);
- } else {
- rte_eal_remote_launch(spp_forward,
- (void *)&g_core_info[lcore_id],
- lcore_id);
- }
+ ```c
+ /* Start thread */
+ unsigned int lcore_id = 0;
+ RTE_LCORE_FOREACH_SLAVE(lcore_id) {
+ if (g_core_info[lcore_id].type == SPP_CONFIG_CLASSIFIER_MAC) {
+ rte_eal_remote_launch(spp_classifier_mac_do,
+ (void *)&g_core_info[lcore_id],
+ lcore_id);
+ } else {
+ rte_eal_remote_launch(spp_forward,
+ (void *)&g_core_info[lcore_id],
+ lcore_id);
}
+ }
```
### Forwarding
+
### Packet Cloning
+
+
--
2.13.1
^ permalink raw reply [flat|nested] 10+ messages in thread
* [spp] [PATCH 08/28] doc: modify figure in spp_vf_overview
2018-01-23 0:28 [spp] [PATCH 01/28] doc: add setup guide ogawa.yasufumi
` (5 preceding siblings ...)
2018-01-23 0:28 ` [spp] [PATCH 07/28] doc: update jp setup manual ogawa.yasufumi
@ 2018-01-23 0:28 ` ogawa.yasufumi
2018-01-23 0:28 ` [spp] [PATCH 09/28] doc: add sample usage ogawa.yasufumi
2018-02-01 11:57 ` [spp] [PATCH 01/28] doc: add setup guide Ferruh Yigit
8 siblings, 0 replies; 10+ messages in thread
From: ogawa.yasufumi @ 2018-01-23 0:28 UTC (permalink / raw)
To: spp, ferruh.yigit, x-fn-spp
Cc: Yasufumi Ogawa, Tomoyuki Mizuguchi, Naoki Takada
From: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>
Modify fingure spp_vf_overview.svg in spp_vf_overview.
* Add "ring" icons in "SPP-VF" area.
* Divide "guest VM" icon into two corresponding to "vhosts".
* Change "vhost" position.
* Change icons of "rx" and "tx" in "host1" and in "host2" to "NIC".
* Change icon of "network" to that of cloud shape.
* Add "traffic generator" in host2.
* Fix arrow in spp_vf_overview.svg.
* Fix the figure in overview section, which is depicted in spp_vf_overview.svg.
Signed-off-by: Tomoyuki Mizuguchi <mizuguchi.tomoyuki@po.ntt-tx.co.jp>
Signed-off-by: Naoki Takada <takada.naoki@lab.ntt.co.jp>
Signed-off-by: Yasufumi Ogawa <ogawa.yasufumi@lab.ntt.co.jp>
---
docs/spp_vf/spp_vf_overview.svg | 2363 +++++++++++++++++++++++++++++----------
1 file changed, 1751 insertions(+), 612 deletions(-)
diff --git a/docs/spp_vf/spp_vf_overview.svg b/docs/spp_vf/spp_vf_overview.svg
index d0a6769..d9fd183 100644
--- a/docs/spp_vf/spp_vf_overview.svg
+++ b/docs/spp_vf/spp_vf_overview.svg
@@ -10,202 +10,1106 @@
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"
+ width="172.52679mm"
+ height="120.57605mm"
+ viewBox="0 0 172.52679 120.57605"
version="1.1"
+ id="svg4746"
inkscape:version="0.91 r13725"
sodipodi:docname="spp_vf_overview.svg">
<defs
- id="defs4">
+ id="defs4740">
<marker
inkscape:isstock="true"
+ style="overflow:visible;"
+ id="marker6296"
+ 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="path6294" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="marker1654"
+ style="overflow:visible;"
+ inkscape:isstock="true">
+ <path
+ id="path1652"
+ 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="SquareL"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="SquareL"
style="overflow:visible"
- id="marker5641"
+ inkscape:isstock="true">
+ <path
+ id="path1432"
+ d="M -5.0,-5.0 L -5.0,5.0 L 5.0,5.0 L 5.0,-5.0 L -5.0,-5.0 z "
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ transform="scale(0.8)" />
+ </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="path1383"
+ 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="Arrow2Lstart"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="marker9343"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path9341"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="scale(1.1) translate(1,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lstart"
+ orient="auto"
refY="0.0"
+ refX="0.0"
+ id="Arrow2Lstart"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path1359"
+ style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1"
+ d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+ transform="scale(1.1) translate(1,0)" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker4626"
+ 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="path4624" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker3618"
+ 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="path3616" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker1780"
+ 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="path1778" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0.0"
+ refX="0.0"
+ id="marker1604"
+ style="overflow:visible;"
+ inkscape:isstock="true">
+ <path
+ id="path1362"
+ 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="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker6489"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path6487"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker8593"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path8591"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker8169"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path8167"
+ 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="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker7739"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path7737"
+ 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="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lend"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path5589"
+ 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="marker6959"
+ 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="path6957" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker6583"
+ 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="path6581" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker6219"
+ 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="path6217" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lstart"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker5849"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path5586"
+ 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="marker2605"
+ style="overflow:visible"
+ inkscape:isstock="true"
+ inkscape:collect="always">
+ <path
+ id="path2603"
+ 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="marker2218"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path2216"
+ 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="marker1864"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path1862"
+ 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="marker1516"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path1514"
+ 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="marker1632"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path1630"
+ 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="marker1626"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path1624"
+ 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="marker1620"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path1618"
+ 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="marker1614"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path1612"
+ 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="marker1608"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path1606"
+ 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="marker1560"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path1558"
+ 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="marker1552"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path1550"
+ 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="marker4611"
+ 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="path4609"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker26660"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend"
+ inkscape:collect="always">
+ <path
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path26658"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker24654"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lstart">
+ <path
+ transform="matrix(1.1,0,0,1.1,1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path24652"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker23978"
+ 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="path23976"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker23136"
+ 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="path23134"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker22960"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lstart">
+ <path
+ transform="matrix(1.1,0,0,1.1,1.1,0)"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ id="path22958"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker14793"
+ 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="path14791"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker13092"
+ 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="path13090"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker12910"
+ 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="path12908"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker12568"
+ 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="path12566"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5180"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Lend">
+ <path
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path5178"
+ inkscape:connector-curvature="0" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow1Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker4816"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path4814"
+ 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="marker4059"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path4057"
+ 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="Arrow1Lstart"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow1Lstart"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ id="path5293"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ style="fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt"
+ 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="Arrow2Lend-4"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path2284-4"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker4059-8"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path4057-0"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend-2"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path2284-6"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend-2-4"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path2284-6-0"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend-2-2"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path2284-6-6"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend-2-6"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path2284-6-3"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend-2-6-2"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path2284-6-3-4"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend-5"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path2284-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)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker4059-8-1"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path4057-0-9"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="marker4059-8-1-6"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path4057-0-9-1"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend-2-4-1"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path2284-6-0-0"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend-2-4-1-9"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path2284-6-0-0-3"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend-2-4-1-7"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path2284-6-0-0-0"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
+ </marker>
+ <marker
+ inkscape:stockid="Arrow2Lend"
+ orient="auto"
+ refY="0"
+ refX="0"
+ id="Arrow2Lend-2-4-1-7-7"
+ style="overflow:visible"
+ inkscape:isstock="true">
+ <path
+ inkscape:connector-curvature="0"
+ id="path2284-6-0-0-0-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)" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker5180-9"
+ refX="0"
+ refY="0"
orient="auto"
- inkscape:stockid="Arrow1Lstart">
+ inkscape:stockid="Arrow1Lend">
<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" />
+ inkscape:connector-curvature="0"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path5178-1" />
</marker>
<marker
- inkscape:stockid="Arrow1Lstart"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="marker5547"
- style="overflow:visible"
inkscape:isstock="true"
- inkscape:collect="always">
+ style="overflow:visible"
+ id="marker5180-9-9"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow1Lend">
<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)" />
+ inkscape:connector-curvature="0"
+ transform="matrix(-0.8,0,0,-0.8,-10,0)"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.00000003pt;stroke-opacity:1"
+ d="M 0,0 5,-5 -12.5,0 5,5 Z"
+ id="path5178-1-4" />
</marker>
<marker
- inkscape:stockid="Arrow1Lstart"
+ inkscape:stockid="Arrow2Lstart"
orient="auto"
- refY="0.0"
- refX="0.0"
- id="marker5465"
+ refY="0"
+ refX="0"
+ id="Arrow2Lstart-6"
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)" />
+ inkscape:connector-curvature="0"
+ id="path1110-1"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(1.1,0,0,1.1,1.1,0)" />
</marker>
<marker
inkscape:isstock="true"
- style="overflow:visible;"
- id="marker5365"
- refX="0.0"
- refY="0.0"
+ style="overflow:visible"
+ id="marker14793-9"
+ refX="0"
+ refY="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" />
+ 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="path14791-9" />
</marker>
<marker
- inkscape:stockid="Arrow2Lend"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="Arrow2Lend"
- style="overflow:visible;"
inkscape:isstock="true"
- inkscape:collect="always">
+ style="overflow:visible"
+ id="marker14793-5"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
<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)" />
+ 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="path14791-0" />
</marker>
<marker
- inkscape:stockid="Arrow1Lstart"
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker14793-1"
+ refX="0"
+ refY="0"
orient="auto"
- refY="0.0"
- refX="0.0"
- id="Arrow1Lstart"
+ 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="path14791-4" />
+ </marker>
+ <marker
+ inkscape:isstock="true"
style="overflow:visible"
- inkscape:isstock="true">
+ id="marker22960-5"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lstart">
<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)" />
+ 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="path22958-6" />
</marker>
<marker
- inkscape:stockid="Arrow1Lend"
+ inkscape:stockid="Arrow2Lend"
orient="auto"
- refY="0.0"
- refX="0.0"
- id="marker5147"
- style="overflow:visible;"
+ refY="0"
+ refX="0"
+ id="marker1560-3"
+ 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)" />
+ inkscape:connector-curvature="0"
+ id="path1558-3"
+ style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1"
+ d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+ transform="matrix(-1.1,0,0,-1.1,-1.1,0)" />
</marker>
<marker
- inkscape:stockid="Arrow1Lend"
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker22960-7"
+ refX="0"
+ refY="0"
orient="auto"
- refY="0.0"
- refX="0.0"
- id="marker5113"
- style="overflow:visible;"
- inkscape:isstock="true">
+ inkscape:stockid="Arrow2Lstart">
<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)" />
+ 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="path22958-61" />
</marker>
<marker
inkscape:isstock="true"
- style="overflow:visible;"
- id="marker5009"
- refX="0.0"
- refY="0.0"
+ style="overflow:visible"
+ id="marker22960-5-6"
+ refX="0"
+ refY="0"
orient="auto"
- inkscape:stockid="Arrow1Lend"
- inkscape:collect="always">
+ inkscape:stockid="Arrow2Lstart">
<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" />
+ 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="path22958-6-8" />
</marker>
<marker
- inkscape:stockid="Arrow1Lend"
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker14793-1-4"
+ refX="0"
+ refY="0"
orient="auto"
- refY="0.0"
- refX="0.0"
- id="marker4963"
- style="overflow:visible;"
+ 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="path14791-4-5" />
+ </marker>
+ <marker
inkscape:isstock="true"
- inkscape:collect="always">
+ style="overflow:visible"
+ id="marker22960-9"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lstart">
<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)" />
+ 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="path22958-60" />
</marker>
<marker
inkscape:isstock="true"
- style="overflow:visible;"
- id="marker4923"
- refX="0.0"
- refY="0.0"
+ style="overflow:visible"
+ id="marker14793-1-9"
+ refX="0"
+ refY="0"
orient="auto"
- inkscape:stockid="Arrow1Lend"
+ inkscape:stockid="Arrow2Lend"
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" />
+ 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="path14791-4-1" />
</marker>
<marker
- inkscape:stockid="Arrow1Lend"
- orient="auto"
- refY="0.0"
- refX="0.0"
- id="Arrow1Lend"
- style="overflow:visible;"
inkscape:isstock="true"
- inkscape:collect="always">
+ style="overflow:visible"
+ id="marker14793-1-9-6"
+ refX="0"
+ refY="0"
+ orient="auto"
+ inkscape:stockid="Arrow2Lend">
<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)" />
+ 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="path14791-4-1-5" />
</marker>
<marker
- inkscape:stockid="Arrow2Mend"
+ inkscape:isstock="true"
+ style="overflow:visible"
+ id="marker22960-9-7"
+ refX="0"
+ refY="0"
orient="auto"
- refY="0.0"
- refX="0.0"
- id="Arrow2Mend"
- style="overflow:visible;"
- inkscape:isstock="true">
+ inkscape:stockid="Arrow2Lstart">
<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)" />
+ 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="path22958-60-6" />
</marker>
</defs>
<sodipodi:namedview
@@ -215,19 +1119,25 @@
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"
+ inkscape:zoom="0.9899495"
+ inkscape:cx="210.93176"
+ inkscape:cy="223.84187"
+ inkscape:document-units="mm"
+ inkscape:current-layer="layer1"
showgrid="false"
- inkscape:window-width="1331"
- inkscape:window-height="840"
- inkscape:window-x="255"
- inkscape:window-y="0"
- inkscape:window-maximized="0" />
+ inkscape:window-width="1440"
+ inkscape:window-height="851"
+ inkscape:window-x="0"
+ inkscape:window-y="1"
+ inkscape:window-maximized="1"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ viewbox-x="0"
+ scale-x="1" />
<metadata
- id="metadata7">
+ id="metadata4743">
<rdf:RDF>
<cc:Work
rdf:about="">
@@ -239,555 +1149,784 @@
</rdf:RDF>
</metadata>
<g
- inkscape:groupmode="layer"
- id="layer2"
inkscape:label="host"
- style="display:inline">
+ inkscape:groupmode="layer"
+ id="layer1"
+ style="display:inline;opacity:0.98999999"
+ transform="translate(22.342263,-42.641668)">
<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>
+ style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.3065601;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect5291"
+ width="133.51352"
+ height="83.053703"
+ x="16.513613"
+ y="43.498409"
+ ry="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="203.96959"
- y="144.92035"
- id="text4431"
- sodipodi:linespacing="125%"><tspan
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.76249981px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.19843748"
+ x="17.927746"
+ y="48.597805"
+ id="text5577"><tspan
sodipodi:role="line"
- id="tspan4433"
- x="203.96959"
- y="144.92035">host1</tspan></text>
- <text
+ id="tspan5575"
+ x="17.927746"
+ y="48.597805"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.76249981px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.19843748">host1</tspan></text>
+ <flowRoot
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>
+ id="flowRoot5610"
+ 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"
+ transform="scale(0.26458333)"><flowRegion
+ id="flowRegion5612"><rect
+ id="rect5614"
+ width="12.857142"
+ height="94.285713"
+ x="147.14285"
+ y="89.662544" /></flowRegion><flowPara
+ id="flowPara5616" /></flowRoot> <rect
+ style="opacity:1;fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-width:0.11811945;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect1139-1-3"
+ width="9.2134848"
+ height="16.567875"
+ x="16.552696"
+ y="78.300049" />
<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
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416689px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.19843748"
+ x="17.677307"
+ y="87.313164"
+ id="text2024-9-4-2"><tspan
sodipodi:role="line"
- id="tspan4441"
- x="204.05083"
- y="420.00671">tx</tspan></text>
+ id="tspan1471"
+ x="17.677307"
+ y="87.313164"
+ style="stroke-width:0.19843748">NIC</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" />
+ style="display:inline;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.13039371;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect5291-3"
+ width="67.19873"
+ height="29.854179"
+ x="15.828302"
+ y="133.1078"
+ ry="0" />
<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
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.76249981px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.19843748"
+ x="17.12682"
+ y="138.31961"
+ id="text5577-4"><tspan
sodipodi:role="line"
- id="tspan4457"
- x="48.699158"
- y="555.4043">network</tspan></text>
+ id="tspan29058"
+ x="17.12682"
+ y="138.31961"
+ style="stroke-width:0.19843748">host2</tspan></text>
+ <rect
+ style="display:inline;opacity:1;fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-width:0.10644353;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect1139-1-3-3"
+ width="9.2388563"
+ height="13.417394"
+ x="15.90917"
+ y="141.81644" />
<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
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416689px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.19843748"
+ x="16.710455"
+ y="149.19623"
+ id="text2024-9-4-2-1"><tspan
sodipodi:role="line"
- id="tspan4461"
- x="212.13203"
- y="743.25549">rx</tspan></text>
+ id="tspan3496"
+ x="16.710455"
+ y="149.19623"
+ style="stroke-width:0.19843748">NIC</tspan></text>
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.2295;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker6219)"
+ d="m -8.6649471,115.81761 c 0,0 2.429464,-24.597571 25.0354661,-33.266048"
+ id="path29105"
+ inkscape:connector-curvature="0" />
+ <path
+ style="display:inline;fill:none;stroke:#000000;stroke-width:0.1579186;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ d="m -0.09414816,115.70324 c 0,0 1.61663996,-17.511419 16.65936316,-23.682657"
+ id="path29105-6"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.17807341px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker8593)"
+ d="m -0.68301513,127.63222 c 0,0 1.39932195,16.54751 16.45012913,17.35664"
+ id="path3498"
+ inkscape:connector-curvature="0" />
+ <path
+ style="display:inline;opacity:0.98999999;fill:none;stroke:#000000;stroke-width:0.23871794px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m -7.2736641,129.63943 c 0,0 1.97461,21.07376 23.2130541,22.10422"
+ id="path3498-4"
+ inkscape:connector-curvature="0" />
+ <ellipse
+ style="fill:#d1fff4;fill-opacity:1;stroke:#000000;stroke-width:0.22223705;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+ id="path4848"
+ cx="-3.3839455"
+ cy="120.16951"
+ rx="14.997087"
+ ry="9.4378805" />
+ <image
+ y="117.90887"
+ x="-13.271753"
+ id="image4868"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEMAAAAOCAYAAAB0DKHBAAAABHNCSVQICAgIfAhkiAAABRhJREFU
+SIndVl9Ik10cfvy9b2PT2bSstcKaZZBlhcVEDa0RExmDLrzoJqwLCzICL9IRFoxRWAmh0bwQiSDp
+D0GJEUgXpRMFL0ILqdxFBSKCmwUOnRXb812E79fb3KdfIHx8D5yL8zzP+Z3f+fH+znnBVYLP52NP
+T89qhf8jiAhra2tTyXOCVYLf70dPT89qhV8VrFox/kuYn59fkU8URcHp06fx8uVLlJSUICMjA7m5
+ufD7/SCpM0ejUXi9XuzYsQNGoxF2ux1erxcLCws6n6IoAIA7d+5AURTduH//vuaLRCJQVRWZmZn4
+8eOHxt+4cQOqquLLly8aNzk5iVOnTsFms8FkMqGwsBBtbW1JOS6e59mzZ3A4HEhPT0dLS0vKAty7
+dw8GgwFnz541QERYVFREq9XKS5cusb29nU6nkyLCu3fvag0Vi8VYXFzM7OxsNjY2sqOjg3V1dTQY
+DPR4PLrm6+rqoojQ6XSyq6tLG1arlWfOnNF8T548oaqqFBEODQ1pvNvt5r59+7R5JBKh3W5neno6
+GxoaePv2bVZWVlJEWF9fn3QvFBYWct26dWxqamJHRwd7e3uXvDMCgQAVRaHX6yXJOYgI16xZw9HR
+Uc307ds3btmyhSUlJRrX3NxMk8nEt2/f6jZvb2+niPDVq1fLXlbV1dXctWuXNq+vr2dZWRnz8vJ4
+7do1kmQ8HmdWVhbPnTun+RobGykifP78ucYlEgkeO3aMiqLww4cPun1FhMPDw/wdv+bU3NxMEeHV
+q1cX5Z/FcDqdSQurq6uZk5OjzYuKiuh0OhkOh3UjFApRRHj58uVli9HW1kYR4dTUFEny4MGD9Hq9
+rKmpodvtJkm+fv2aIsJHjx5p6woKCrh3796kHAcHBykivHnzpm7f0tLSJO+vOV28eJGKovDWrVu/
+ynMqANjt9qReys7O1vVsKBRCLBaD1Wpdsvemp6dT9uUiysvLAQDBYBBVVVV48+YN/H4/pqamcOHC
+BcTjcQwMDOi8APD582d4PJ6keLt37wYAfPr0Scdv3749ZQ6PHz9GNBrFlStXcP78eZ2mAn9feP+E
+RCKBw4cPo6mpaUl98+bNy8bYv38/LBYL+vv7kZmZCQA4dOgQpqenMTs7i9HRUQSDQeTn58Nmsy0b
+LxVMJlNKrbi4GOPj4+js7MSJEyeQm5uraepKN8jPz8fs7CyOHj36x0mKCMrKyhAMBrF27VqtOBaL
+BTabDf39/RgcHEz6CvLy8jA+Pp4U7/3795q+Umzbtg2BQABHjhyBy+VCX18fNm3a9DO/lQY5fvw4
+RkZG0N3dnaQtLCwgGo3qOLPZrGuzRVRUVODdu3fo7u5GRUWFxpeXl6OzsxPhcFjHA4DH48HY2Bh6
+e3s1jiRaWlqQlpYGt9u90mMAAHbu3IkXL17g69evcLlciEQiP4VUv6i1tbUUEW0ei8VYWlpKVVV5
+8uRJBgIBtra2sq6ujhs2bGBfX59uvcvlotls5vXr1/ngwQM+fPiQJDk0NKTd+E+fPtX8i6+SiPDj
+x4+6WItPa0ZGBhsaGhgIBFhVVZXyaU31y/27NjIywvXr1/PAgQOcmZmZX3ExSHJubo4+n48FBQU0
+Go3Mycmhw+Ggz+fjzMyMzhsKhVhZWUmLxaIdkiS/f/9Os9lMRVEYDoc1/9jYGEWEW7duXfIgExMT
+rKmp4caNG2k0Grlnzx62trYykUj8cTFIcnh4mFlZWXQ4HPE0kpZ/9Y39f8G/AAecg8zYxSDkAAAA
+AElFTkSuQmCC
+"
+ style="image-rendering:optimizeSpeed;opacity:1;fill:#000000;fill-opacity:1"
+ preserveAspectRatio="none"
+ height="3.9511111"
+ width="18.90889" />
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer3"
+ inkscape:label="spp_vf_process"
+ style="display:inline"
+ transform="translate(22.342263,-42.641668)">
+ <rect
+ style="fill:#ffccaa;fill-opacity:1;stroke:#000000;stroke-width:0.20625183;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect1763"
+ width="67.423866"
+ height="63.660942"
+ x="28.270718"
+ y="56.240303"
+ ry="3.3188167" />
<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
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416689px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.19843748"
+ x="31.534889"
+ y="61.07103"
+ id="text1767"><tspan
sodipodi:role="line"
- id="tspan4465"
- x="214.15234"
- y="848.3114">tx</tspan></text>
+ id="tspan1765"
+ x="31.534889"
+ y="61.07103"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416689px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.19843748">spp_vf</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" />
+ transform="translate(22.342263,-42.641668)">
<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" />
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#000000;stroke-width:0.17461418;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect2020"
+ width="28.352047"
+ height="33.515587"
+ x="118.85268"
+ y="48.505085"
+ ry="2.7929652" />
<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
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416689px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.19843748"
+ x="119.69781"
+ y="56.421913"
+ id="text2024"><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" />
+ id="tspan2022"
+ x="119.69781"
+ y="56.421913"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416689px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.19843748">guest vm1</tspan></text>
<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>
+ style="fill:#f9f9f9;fill-opacity:1;stroke:#000000;stroke-width:0.17601651;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect2020-5"
+ width="28.62668"
+ height="33.729359"
+ x="118.56235"
+ y="88.59964"
+ ry="2.8107796" />
<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
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416689px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.19843748"
+ x="119.40305"
+ y="93.332886"
+ id="text2024-5"><tspan
sodipodi:role="line"
- id="tspan4405"
- x="551.54327"
- y="298.78842">tx</tspan></text>
+ id="tspan2202"
+ x="119.40305"
+ y="93.332886"
+ style="stroke-width:0.19843748">guest vm2</tspan></text>
+ <rect
+ style="opacity:1;fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-width:0.11156943;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect1139"
+ width="10.349"
+ height="13.159518"
+ x="118.85532"
+ y="62.9557" />
<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
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416689px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.19843748"
+ x="119.4705"
+ y="70.884201"
+ id="text2024-9"><tspan
sodipodi:role="line"
- id="tspan4409"
- x="549.52295"
- y="375.56">rx</tspan></text>
+ id="tspan1504"
+ x="119.4705"
+ y="70.884201"
+ style="stroke-width:0.19843748">vNIC</tspan></text>
+ <rect
+ style="opacity:1;fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-width:0.11284375;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect1139-1"
+ width="10.353926"
+ height="13.455435"
+ x="118.52364"
+ y="99.103775" />
<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
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416689px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.19843748"
+ x="119.14127"
+ y="106.98555"
+ id="text2024-9-4"><tspan
sodipodi:role="line"
- id="tspan4413"
- x="551.54327"
- y="415.96606">tx</tspan></text>
+ id="tspan1502"
+ x="119.14127"
+ y="106.98555"
+ style="stroke-width:0.19843748">vNIC</tspan></text>
+ </g>
+ <g
+ inkscape:groupmode="layer"
+ id="layer2"
+ inkscape:label="spp_vf_threads"
+ style="display:inline;opacity:0.98999999"
+ transform="translate(22.342263,-42.641668)">
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker6296)"
+ d="M 100.80696,76.449807 C 92.088084,96.087573 92.088084,96.087573 92.088084,96.087573"
+ id="path6286"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#Arrow2Lend)"
+ d="m 89.320737,76.353127 c 9.452951,19.668818 9.452951,19.668818 9.452951,19.668818"
+ id="path6138"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1780)"
+ d="m 25.766181,78.300049 5.164281,-5.567772"
+ id="path4812"
+ 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="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
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416689px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#d7f4e3;fill-opacity:1;stroke:none;stroke-width:0.19843748"
+ x="56.913864"
+ y="66.465256"
+ id="text16968"><tspan
sodipodi:role="line"
- x="594.03064"
- y="288.33853"
- id="tspan4425">(vhost)</tspan></text>
+ id="tspan16966"
+ x="56.913864"
+ y="66.465256"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416689px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#d7f4e3;stroke-width:0.19843748">ring</tspan></text>
+ <rect
+ style="fill:#ffe6d5;fill-opacity:1;stroke:#000000;stroke-width:0.13431512;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect1769"
+ width="21.297846"
+ height="5.9898095"
+ x="30.552704"
+ y="67.062508"
+ ry="1.3525398" />
<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
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416689px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.19843748"
+ x="33.065685"
+ y="71.049599"
+ id="text1773"><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" />
+ id="tspan1461"
+ x="33.065685"
+ y="71.049599"
+ style="stroke-width:0.19843748">classifier</tspan></text>
+ <g
+ id="g1969-0"
+ transform="matrix(0.74487285,0,0,2.6794736,5.5667349,-232.75776)"
+ style="fill:#dedbe3">
+ <rect
+ ry="1.8106976"
+ y="122.52335"
+ x="124.54029"
+ height="8.0187912"
+ width="18.980101"
+ id="rect1769-3-2-7-7"
+ style="fill:#eef4d7;stroke:#000000;stroke-width:0.14670815;stroke-miterlimit:4;stroke-dasharray:none" />
+ </g>
<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
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416689px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.21267372"
+ x="107.68398"
+ y="99.856544"
+ id="text1773-6-6-5-2-7"
+ transform="scale(0.93214046,1.0727997)"><tspan
+ y="99.856544"
+ x="107.68398"
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" />
+ id="tspan1964-1-7"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416689px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.21267372">vhost</tspan></text>
<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"
+ style="fill:none;stroke:#000000;stroke-width:0.24075001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker14793)"
+ d="m 112.38085,66.046195 c 6.21402,0 6.21402,0 6.21402,0"
+ id="path14783"
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"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:0.24075001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker22960)"
+ d="m 112.47118,108.69207 c 6.21402,0 6.21402,0 6.21402,0"
+ id="path14783-8"
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"
+ style="fill:none;stroke:#000000;stroke-width:0.24075001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker26660)"
+ d="M 35.08879,104.73064 25.534813,95.139839"
+ id="path26650"
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"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:0.24075001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker14793-1)"
+ d="m 112.11808,102.39221 c 6.21402,0 6.21402,0 6.21402,0"
+ id="path14783-87"
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"
+ style="display:inline;fill:none;stroke:#000000;stroke-width:0.24075001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker22960-5)"
+ d="m 112.7259,72.352919 c 6.21402,0 6.21402,0 6.21402,0"
+ id="path14783-8-7"
inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.24075001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker1560)"
+ d="m 91.74648,62.375041 c 6.66183,0 6.66183,0 6.66183,0"
+ id="path1556"
+ inkscape:connector-curvature="0" />
+ <path
+ style="display:inline;fill:none;stroke:#000000;stroke-width:0.23020414;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker22960-7)"
+ d="m 92.70317,113.68427 c 5.68154,0 5.68154,0 5.68154,0"
+ id="path14783-8-2"
+ inkscape:connector-curvature="0" />
+ <path
+ style="display:inline;fill:none;stroke:#000000;stroke-width:0.24075001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker2218)"
+ d="m 71.365131,98.43499 c -21.806219,6.92139 -21.806219,6.92139 -21.806219,6.92139"
+ id="path2208"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:none;stroke:#000000;stroke-width:0.24075001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker2605)"
+ d="M 71.648601,114.47803 C 49.558912,106.19594 49.558912,106.19594 49.558912,106.19594"
+ id="path2595"
+ inkscape:connector-curvature="0" />
+ <rect
+ style="fill:#ffe6d5;fill-opacity:1;stroke:#000000;stroke-width:0.12518337;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect1769-3"
+ width="18.472155"
+ height="5.9989409"
+ x="31.086758"
+ y="102.57824"
+ ry="1.3546017" />
<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
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416689px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.19843748"
+ x="33.207432"
+ y="106.17302"
+ id="text1773-6"><tspan
sodipodi:role="line"
- id="tspan4567"
- x="304.98483"
- y="365.4585">merger</tspan></text>
+ id="tspan1463"
+ x="33.207432"
+ y="106.17302"
+ style="stroke-width:0.19843748">merger</tspan></text>
+ <g
+ id="g2295"
+ transform="matrix(0.75,0,0,0.75,-8.8329671,40.613879)">
+ <rect
+ ry="1.8039205"
+ y="25.020494"
+ x="106.67704"
+ height="7.9887786"
+ width="27.643539"
+ id="rect1769-3-2"
+ style="fill:#ffe6d5;fill-opacity:1;stroke:#000000;stroke-width:0.17672074;stroke-miterlimit:4;stroke-dasharray:none" />
+ <text
+ id="text1773-6-6"
+ y="30.337786"
+ x="107.9122"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ xml:space="preserve"><tspan
+ id="tspan3024"
+ sodipodi:role="line"
+ x="107.9122"
+ y="30.337786">forwarder</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.75,0,0,0.75,-8.6426321,76.494617)"
+ style="display:inline"
+ id="g2295-3">
+ <rect
+ ry="1.8039205"
+ y="25.020494"
+ x="106.67704"
+ height="7.9887786"
+ width="27.643539"
+ id="rect1769-3-2-4"
+ style="fill:#ffe6d5;fill-opacity:1;stroke:#000000;stroke-width:0.17672074;stroke-miterlimit:4;stroke-dasharray:none" />
+ <text
+ id="text1773-6-6-0"
+ y="30.337786"
+ x="107.9122"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ xml:space="preserve"><tspan
+ id="tspan3024-5"
+ sodipodi:role="line"
+ x="107.9122"
+ y="30.337786">forwarder</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.75,0,0,0.75,-8.8127251,55.913811)"
+ style="display:inline"
+ id="g2295-5">
+ <rect
+ ry="1.8039205"
+ y="25.020494"
+ x="106.67704"
+ height="7.9887786"
+ width="27.643539"
+ id="rect1769-3-2-2"
+ style="fill:#ffe6d5;fill-opacity:1;stroke:#000000;stroke-width:0.17672074;stroke-miterlimit:4;stroke-dasharray:none" />
+ <text
+ id="text1773-6-6-6"
+ y="30.337786"
+ x="107.9122"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ xml:space="preserve"><tspan
+ id="tspan3024-9"
+ sodipodi:role="line"
+ x="107.9122"
+ y="30.337786">forwarder</tspan></text>
+ </g>
+ <g
+ transform="matrix(0.75,0,0,0.75,-8.3591551,92.140786)"
+ style="display:inline"
+ id="g2295-0">
+ <rect
+ ry="1.8039205"
+ y="25.020494"
+ x="106.67704"
+ height="7.9887786"
+ width="27.643539"
+ id="rect1769-3-2-8"
+ style="fill:#ffe6d5;fill-opacity:1;stroke:#000000;stroke-width:0.17672074;stroke-miterlimit:4;stroke-dasharray:none" />
+ <text
+ id="text1773-6-6-8"
+ y="30.337786"
+ x="107.9122"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ xml:space="preserve"><tspan
+ id="tspan3024-96"
+ sodipodi:role="line"
+ x="107.9122"
+ y="30.337786">forwarder</tspan></text>
+ </g>
+ <g
+ style="display:inline"
+ id="g1263-1"
+ transform="matrix(0.75,0,0,0.75,-8.4326281,-1.356976)">
+ <g
+ id="g2377-5-42-1"
+ style="display:inline;fill:#eef4d7"
+ transform="translate(-6.7279778,-3.9309553)">
+ <ellipse
+ style="display:inline;fill:#eef4d7;fill-opacity:1;stroke:#000000;stroke-width:0.35376999;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path1780-3-7-12-8-5"
+ cx="100.0881"
+ cy="141.425"
+ rx="6.5516987"
+ ry="3.1499126"
+ inkscape:transform-center-x="13.229167"
+ inkscape:transform-center-y="-59.720238" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#eef4d7;fill-opacity:1;stroke:none;stroke-width:0.28356495"
+ x="102.67519"
+ y="132.96213"
+ id="text1773-6-6-5-2-7-4-3-60-6"
+ transform="scale(0.93214046,1.0727997)"><tspan
+ sodipodi:role="line"
+ id="tspan2372-8-0-1"
+ x="102.67519"
+ y="132.96213">ring</tspan></text>
+ </g>
+ <text
+ transform="scale(0.93214046,1.0727997)"
+ id="text1773-6-6-5-2-7-4-4-2-8"
+ y="129.157"
+ x="95.700722"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28356495"
+ xml:space="preserve"><tspan
+ y="129.157"
+ x="95.700722"
+ id="tspan2372-2-3-6"
+ sodipodi:role="line">ring</tspan></text>
+ </g>
+ <g
+ style="display:inline"
+ id="g1263-52"
+ transform="matrix(0.75,0,0,0.75,-8.4326281,7.2608817)">
+ <g
+ id="g2377-5-42-19"
+ style="display:inline;fill:#eef4d7"
+ transform="translate(-6.7279778,-3.9309553)">
+ <ellipse
+ style="display:inline;fill:#eef4d7;fill-opacity:1;stroke:#000000;stroke-width:0.35376999;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path1780-3-7-12-8-0"
+ cx="100.0881"
+ cy="141.425"
+ rx="6.5516987"
+ ry="3.1499126"
+ inkscape:transform-center-x="13.229167"
+ inkscape:transform-center-y="-59.720238" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#eef4d7;fill-opacity:1;stroke:none;stroke-width:0.28356495"
+ x="102.67519"
+ y="132.96213"
+ id="text1773-6-6-5-2-7-4-3-60-0"
+ transform="scale(0.93214046,1.0727997)"><tspan
+ sodipodi:role="line"
+ id="tspan2372-8-0-3"
+ x="102.67519"
+ y="132.96213">ring</tspan></text>
+ </g>
+ <text
+ transform="scale(0.93214046,1.0727997)"
+ id="text1773-6-6-5-2-7-4-4-2-0"
+ y="129.157"
+ x="95.700722"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28356495"
+ xml:space="preserve"><tspan
+ y="129.157"
+ x="95.700722"
+ id="tspan2372-2-3-8"
+ sodipodi:role="line">ring</tspan></text>
+ </g>
+ <rect
+ style="display:inline;fill:#ffccaa;fill-opacity:1;stroke:#000000;stroke-width:0.25501901;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect1769-5"
+ width="39.860424"
+ height="11.537248"
+ x="32.144726"
+ y="141.47868"
+ ry="2.6051891" />
<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"
+ style="font-style:normal;font-weight:normal;font-size:3.88410258px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.09710257px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ x="39.476479"
+ y="139.37953"
+ id="text237"
+ transform="scale(0.93752888,1.0666338)"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
- id="tspan4571"
- x="436.42651"
- y="246.17924">fwd</tspan></text>
+ id="tspan235"
+ x="39.476479"
+ y="139.37953"
+ style="stroke-width:0.09710257px">traffic generator</tspan></text>
+ <path
+ style="display:inline;fill:none;stroke:#000000;stroke-width:0.24075001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker22960-5-6)"
+ d="m 25.530253,151.42019 c 6.21402,0 6.21402,0 6.21402,0"
+ id="path14783-8-7-9"
+ inkscape:connector-curvature="0" />
+ <path
+ style="display:inline;fill:none;stroke:#000000;stroke-width:0.24075001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker14793-1-4)"
+ d="m 25.464472,144.88242 c 6.21402,0 6.21402,0 6.21402,0"
+ id="path14783-87-8"
+ inkscape:connector-curvature="0" />
+ <rect
+ style="display:inline;fill:#ffccaa;fill-opacity:1;stroke:#000000;stroke-width:0.11807317;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect1769-5-6-3"
+ width="10.223983"
+ height="9.6423111"
+ x="135.23622"
+ y="100.41351"
+ ry="2.1772995" />
<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
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416665px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.21267371"
+ x="145.62817"
+ y="99.263878"
+ id="text1773-6-6-5-2-7-8"
+ transform="scale(0.93214045,1.0727997)"><tspan
+ y="99.263878"
+ x="145.62817"
sodipodi:role="line"
- id="tspan4575"
- x="436.42651"
- y="290.64627">fwd</tspan></text>
+ id="tspan1964-1-7-0"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416665px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.21267371">app2</tspan></text>
+ <path
+ style="display:inline;fill:none;stroke:#000000;stroke-width:0.24075001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker22960-9)"
+ d="m 129.07059,107.59371 c 6.21402,0 6.21402,0 6.21402,0"
+ id="path14783-8-5"
+ inkscape:connector-curvature="0" />
+ <path
+ style="display:inline;fill:none;stroke:#000000;stroke-width:0.24075001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker14793-1-9)"
+ d="m 128.71749,103.67511 c 6.21402,0 6.21402,0 6.21402,0"
+ id="path14783-87-5"
+ inkscape:connector-curvature="0" />
+ <rect
+ style="display:inline;fill:#ffccaa;fill-opacity:1;stroke:#000000;stroke-width:0.11807317;stroke-miterlimit:4;stroke-dasharray:none"
+ id="rect1769-5-6-3-4"
+ width="10.223983"
+ height="9.6423111"
+ x="135.76675"
+ y="63.378746"
+ ry="2.1772995" />
<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
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416665px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.21267371"
+ x="146.19733"
+ y="64.742287"
+ id="text1773-6-6-5-2-7-8-7"
+ transform="scale(0.93214045,1.0727997)"><tspan
+ y="64.742287"
+ x="146.19733"
sodipodi:role="line"
- id="tspan4579"
- x="436.40619"
- y="343.19452">fwd</tspan></text>
+ id="tspan1964-1-7-0-4"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416665px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.21267371">app1</tspan></text>
+ <path
+ style="display:inline;fill:none;stroke:#000000;stroke-width:0.24075001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker22960-9-7)"
+ d="m 129.60112,70.558963 c 6.21402,0 6.21402,0 6.21402,0"
+ id="path14783-8-5-3"
+ inkscape:connector-curvature="0" />
+ <path
+ style="display:inline;fill:none;stroke:#000000;stroke-width:0.24075001;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker14793-1-9-6)"
+ d="m 129.24802,66.640363 c 6.21402,0 6.21402,0 6.21402,0"
+ id="path14783-87-5-1"
+ inkscape:connector-curvature="0" />
+ <g
+ id="g1969"
+ transform="matrix(0.74487285,0,0,2.6794736,5.8732829,-268.99875)"
+ style="fill:#eef4d7">
+ <rect
+ ry="1.8106976"
+ y="122.52335"
+ x="124.54029"
+ height="8.0187912"
+ width="18.980101"
+ id="rect1769-3-2-7"
+ style="fill:#eef4d7;stroke:#000000;stroke-width:0.14670815;stroke-miterlimit:4;stroke-dasharray:none" />
+ </g>
<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
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416689px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.21267372"
+ x="108.31697"
+ y="65.916351"
+ id="text1773-6-6-5-2"
+ transform="scale(0.93214046,1.0727997)"><tspan
+ y="65.916351"
+ x="108.31697"
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" />
+ id="tspan1964-1"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:3.70416689px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start;stroke-width:0.21267372">vhost</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(#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" />
+ style="fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker3618)"
+ d="M 51.850549,69.877318 C 71.174813,62.195833 71.174813,62.195833 71.174813,62.195833"
+ id="path3608"
+ inkscape:connector-curvature="0" />
<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" />
+ style="fill:none;stroke:#000000;stroke-width:0.241;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker4626)"
+ d="m 51.850549,69.708341 c 19.344505,7.616675 19.344505,7.616675 19.344505,7.616675"
+ id="path4616"
+ inkscape:connector-curvature="0" />
+ <g
+ id="g1263"
+ transform="matrix(0.75,0,0,0.75,-8.8329671,-36.965737)">
+ <g
+ id="g2377-5-42"
+ style="display:inline;fill:#eef4d7"
+ transform="translate(-6.7279778,-3.9309553)">
+ <ellipse
+ style="display:inline;fill:#eef4d7;fill-opacity:1;stroke:#000000;stroke-width:0.35376999;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path1780-3-7-12-8"
+ cx="100.0881"
+ cy="141.425"
+ rx="6.5516987"
+ ry="3.1499126"
+ inkscape:transform-center-x="13.229167"
+ inkscape:transform-center-y="-59.720238" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#eef4d7;fill-opacity:1;stroke:none;stroke-width:0.28356495"
+ x="102.67519"
+ y="132.96213"
+ id="text1773-6-6-5-2-7-4-3-60"
+ transform="scale(0.93214046,1.0727997)"><tspan
+ sodipodi:role="line"
+ id="tspan2372-8-0"
+ x="102.67519"
+ y="132.96213">ring</tspan></text>
+ </g>
+ <text
+ transform="scale(0.93214046,1.0727997)"
+ id="text1773-6-6-5-2-7-4-4-2"
+ y="129.157"
+ x="95.700722"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28356495"
+ xml:space="preserve"><tspan
+ y="129.157"
+ x="95.700722"
+ id="tspan2372-2-3"
+ sodipodi:role="line">ring</tspan></text>
+ </g>
+ <g
+ style="display:inline"
+ id="g1263-5"
+ transform="matrix(0.75,0,0,0.75,-8.5494851,-29.425109)">
+ <g
+ id="g2377-5-42-7"
+ style="display:inline;fill:#eef4d7"
+ transform="translate(-6.7279778,-3.9309553)">
+ <ellipse
+ style="display:inline;fill:#eef4d7;fill-opacity:1;stroke:#000000;stroke-width:0.35376999;stroke-miterlimit:4;stroke-dasharray:none"
+ id="path1780-3-7-12-8-4"
+ cx="100.0881"
+ cy="141.425"
+ rx="6.5516987"
+ ry="3.1499126"
+ inkscape:transform-center-x="13.229167"
+ inkscape:transform-center-y="-59.720238" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#eef4d7;fill-opacity:1;stroke:none;stroke-width:0.28356495"
+ x="102.67519"
+ y="132.96213"
+ id="text1773-6-6-5-2-7-4-3-60-1"
+ transform="scale(0.93214046,1.0727997)"><tspan
+ sodipodi:role="line"
+ id="tspan2372-8-0-0"
+ x="102.67519"
+ y="132.96213">ring</tspan></text>
+ </g>
+ <text
+ transform="scale(0.93214046,1.0727997)"
+ id="text1773-6-6-5-2-7-4-4-2-6"
+ y="129.157"
+ x="95.700722"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:4.93888903px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;display:inline;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.28356495"
+ xml:space="preserve"><tspan
+ y="129.157"
+ x="95.700722"
+ id="tspan2372-2-3-9"
+ sodipodi:role="line">ring</tspan></text>
+ </g>
</g>
</svg>
--
2.13.1
^ permalink raw reply [flat|nested] 10+ messages in thread
* [spp] [PATCH 09/28] doc: add sample usage
2018-01-23 0:28 [spp] [PATCH 01/28] doc: add setup guide ogawa.yasufumi
` (6 preceding siblings ...)
2018-01-23 0:28 ` [spp] [PATCH 08/28] doc: modify figure in spp_vf_overview ogawa.yasufumi
@ 2018-01-23 0:28 ` ogawa.yasufumi
2018-02-01 11:57 ` [spp] [PATCH 01/28] doc: add setup guide Ferruh Yigit
8 siblings, 0 replies; 10+ messages in thread
From: ogawa.yasufumi @ 2018-01-23 0:28 UTC (permalink / raw)
To: spp, ferruh.yigit, x-fn-spp; +Cc: Hiroyuki Nakamura, Naoki Takada
From: Hiroyuki Nakamura <nakamura.hioryuki@po.ntt-tx.co.jp>
Signed-off-by: Naoki Takada <takada.naoki@lab.ntt.co.jp>
---
docs/spp_vf/how_to_use.md | 2 +-
docs/spp_vf/sample_usage.md | 212 +++++++++++++++++++++++++++++++
docs/spp_vf/{setup.md => setup_guide.md} | 0
docs/spp_vf/spp_vf.md | 6 +-
4 files changed, 218 insertions(+), 2 deletions(-)
create mode 100644 docs/spp_vf/sample_usage.md
rename docs/spp_vf/{setup.md => setup_guide.md} (100%)
diff --git a/docs/spp_vf/how_to_use.md b/docs/spp_vf/how_to_use.md
index ca9cf15..6b5019c 100644
--- a/docs/spp_vf/how_to_use.md
+++ b/docs/spp_vf/how_to_use.md
@@ -14,7 +14,7 @@ SPP_VF is a SR-IOV like network functionality for NFV.
## Launch SPP
-Before launching spp, you need to setup described as [setup guide](setup.md).
+Before launching spp, you need to setup described as [setup guide](setup_guide.md).
### SPP Controller
diff --git a/docs/spp_vf/sample_usage.md b/docs/spp_vf/sample_usage.md
new file mode 100644
index 0000000..2157378
--- /dev/null
+++ b/docs/spp_vf/sample_usage.md
@@ -0,0 +1,212 @@
+# SPP_VF Sample Usage
+
+This sample demonstrates an use-case of MAC address classification of
+spp_vf.
+It enables to access to VMs with ssh from a remote node.
+
+Before trying this sample, install SPP by following
+[setup guide](setup_guide.md).
+
+## Testing Steps
+
+In this section, you configure spp_vf and client applications for
+this use-case.
+
+
+### Setup SPP
+
+First, launch spp controller and primary process.
+
+ ```sh
+ $ pwd
+ /path/to/Soft-Patch-Panel
+
+ # SPP controller
+ $ python ./src/spp.py -p 5555 -s 6666
+
+ # SPP primary
+ $ 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 8 -s 127.0.0.1:5555
+ ```
+
+TODO(yasufum) add description for sec.
+
+ ```sh
+ # start nc for secondary 1
+ $ while true; do nc -l 11111; done
+
+ # start secondary 1
+ $ sudo ./src/vf/x86_64-native-linuxapp-gcc/spp_vf \
+ -c 0x00fd -n 4 --proc-type=secondary \
+ -- \
+ --process-id 1 \
+ --config $SPRINT_REVIEW_HOME/spp_vf1_without_cmtab.json \
+ -s 127.0.0.1:11111
+
+ # start nc for secondary 2
+ $ while true; do nc -l 11112; done
+
+ # start secondary 2
+ $ sudo ./src/vf/x86_64-native-linuxapp-gcc/spp_vf \
+ -c 0x3f01 -n 4 --proc-type=secondary \
+ -- \
+ --process-id 2 \
+ --config $SPRINT_REVIEW_HOME/spp_vf2_without_cmtab.json \
+ -s 127.0.0.1:11112
+ ```
+
+### Setup network configuration for VMs.
+
+Start two VMs.
+
+ ```sh
+ $ virsh start spp-vm1
+ $ virsh start spp-vm2
+ ```
+
+Login to spp-vm1 for network configuration.
+To not ask for unknown keys while login VMs,
+set `-oStrictHostKeyChecking=no` option for ssh.
+
+ ```sh
+ $ ssh -oStrictHostKeyChecking=no ntt@192.168.122.31
+ ```
+
+Up interfaces for vhost and register them to arp table inside spp-vm1.
+In addition, you have to disable TCP offload function, or ssh is faled
+after configuration is done.
+
+ ```sh
+ # up interfaces
+ $ sudo ifconfig ens4 inet 192.168.240.21 netmask 255.255.255.0 up
+ $ sudo ifconfig ens5 inet 192.168.250.22 netmask 255.255.255.0 up
+
+ # register to arp table
+ $ sudo arp -s 192.168.240.11 a0:36:9f:78:86:78 -i ens4
+ $ sudo arp -s 192.168.250.13 a0:36:9f:6c:ed:bc -i ens5
+
+ # diable TCP offload
+ $ sudo ethtool -K ens4 tx off
+ $ sudo ethtool -K ens5 tx off
+ ```
+
+Configurations for spp-vm2 is same as spp-vm1.
+
+ ```sh
+ $ ssh -oStrictHostKeyChecking=no ntt@192.168.122.32
+
+ # up interfaces
+ $ sudo ifconfig ens4 inet 192.168.240.31 netmask 255.255.255.0 up
+ $ sudo ifconfig ens5 inet 192.168.250.32 netmask 255.255.255.0 up
+
+ # register to arp table
+ $ sudo arp -s 192.168.240.11 a0:36:9f:78:86:78 -i ens4
+ $ sudo arp -s 192.168.250.13 a0:36:9f:6c:ed:bc -i ens5
+
+ # diable TCP offload
+ $ sudo ethtool -K ens4 tx off
+ $ sudo ethtool -K ens5 tx off
+ ```
+
+Check the configuration by trying ssh from remote machine that
+connection is accepted but discarded in spp secondary.
+If you do ssh for VM1, you find a messages from spp secondary for
+discarding packets.
+
+## Test Application
+
+TODO(yasufum) json-based steps are deprecated.
+
+### Register MAC address to Classifier
+
+Send a request for getting each of process IDs with nc command.
+TODO(yasufum) for what?
+
+ ```sh
+ {
+ "commands": [
+ {
+ "command": "process"
+ }
+ ]
+ }
+ ```
+
+Register MAC addresses to classifier.
+
+ ```sh
+ {
+ "commands": [
+ {
+ "command": "classifier_table",
+ "type": "mac",
+ "value": "52:54:00:12:34:56",
+ "port": "ring0"
+ },
+ {
+ "command": "classifier_table",
+ "type": "mac",
+ "value": "52:54:00:12:34:58",
+ "port": "ring1"
+ },
+ {
+ "command": "flush"
+ }
+ ]
+ }
+ ```
+
+ ```sh
+ {
+ "commands": [
+ {
+ "command": "classifier_table",
+ "type": "mac",
+ "value": "52:54:00:12:34:57",
+ "port": "ring4"
+ },
+ {
+ "command": "flush"
+ }
+ ]
+ }
+ ```
+
+### Login to VMs
+
+Now, you can login VMs.
+
+ ```sh
+ # spp-vm1 via NIC0
+ $ ssh ntt@192.168.240.21
+
+ # spp-vm1 via NIC1
+ $ ssh ntt@192.168.250.22
+
+ # spp-vm2 via NIC0
+ $ ssh ntt@192.168.240.31
+
+ # spp-vm2 via NIC1
+ $ ssh ntt@192.168.250.32
+ ```
+
+If you unregister the addresses, send request as following.
+
+ ```sh
+ {
+ "commands": [
+ {
+ "command": "classifier_table",
+ "type": "mac",
+ "value": "52:54:00:12:34:58",
+ "port": "unuse"
+ },
+ {
+ "command": "flush"
+ }
+ ]
+ }
+ ```
diff --git a/docs/spp_vf/setup.md b/docs/spp_vf/setup_guide.md
similarity index 100%
rename from docs/spp_vf/setup.md
rename to docs/spp_vf/setup_guide.md
diff --git a/docs/spp_vf/spp_vf.md b/docs/spp_vf/spp_vf.md
index 6a617c0..1ba2a5e 100644
--- a/docs/spp_vf/spp_vf.md
+++ b/docs/spp_vf/spp_vf.md
@@ -29,12 +29,16 @@ by looking MAC address in the packet..
## Build the Application
-See [setup guide](setup.md).
+See [setup guide](setup_guide.md).
## Running the Application
See [how to use](how_to_use.md).
+## Sample Usage
+
+See [sample usage](sample_usage.md).
+
## Explanation
The following sections provide some explanation of the code.
--
2.13.1
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [spp] [PATCH 01/28] doc: add setup guide
2018-01-23 0:28 [spp] [PATCH 01/28] doc: add setup guide ogawa.yasufumi
` (7 preceding siblings ...)
2018-01-23 0:28 ` [spp] [PATCH 09/28] doc: add sample usage ogawa.yasufumi
@ 2018-02-01 11:57 ` Ferruh Yigit
8 siblings, 0 replies; 10+ messages in thread
From: Ferruh Yigit @ 2018-02-01 11:57 UTC (permalink / raw)
To: ogawa.yasufumi, spp, x-fn-spp; +Cc: Hiroyuki Nakamura, Naoki Takada
On 1/23/2018 12:28 AM, ogawa.yasufumi@lab.ntt.co.jp wrote:
> From: Hiroyuki Nakamura <nakamura.hioryuki@po.ntt-tx.co.jp>
<...>
> Translate Japanese setup guide to English.
>
> Signed-off-by: Naoki Takada <takada.naoki@lab.ntt.co.jp>
Series applied, thanks.
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2018-02-01 11:58 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-01-23 0:28 [spp] [PATCH 01/28] doc: add setup guide ogawa.yasufumi
2018-01-23 0:28 ` [spp] [PATCH 02/28] doc: add how_to_use.md ogawa.yasufumi
2018-01-23 0:28 ` [spp] [PATCH 03/28] doc: add config_manual.md ogawa.yasufumi
2018-01-23 0:28 ` [spp] [PATCH 04/28] doc: add spp_vf.md ogawa.yasufumi
2018-01-23 0:28 ` [spp] [PATCH 05/28] doc: revise spp_vf.md ogawa.yasufumi
2018-01-23 0:28 ` [spp] [PATCH 06/28] doc: add config section ogawa.yasufumi
2018-01-23 0:28 ` [spp] [PATCH 07/28] doc: update jp setup manual ogawa.yasufumi
2018-01-23 0:28 ` [spp] [PATCH 08/28] doc: modify figure in spp_vf_overview ogawa.yasufumi
2018-01-23 0:28 ` [spp] [PATCH 09/28] doc: add sample usage ogawa.yasufumi
2018-02-01 11:57 ` [spp] [PATCH 01/28] doc: add setup guide Ferruh Yigit
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).