From: Jianfeng Tan <jianfeng.tan@intel.com>
To: dev@dpdk.org
Cc: john.mcnamara@intel.com, yuanhan.liu@linux.intel.com,
stephen@networkplumber.org, Jianfeng Tan <jianfeng.tan@intel.com>
Subject: [PATCH 2/3] doc: add guide to use virtio_user as exceptional path
Date: Tue, 24 Jan 2017 07:34:07 +0000 [thread overview]
Message-ID: <1485243248-27082-3-git-send-email-jianfeng.tan@intel.com> (raw)
In-Reply-To: <1485243248-27082-1-git-send-email-jianfeng.tan@intel.com>
Signed-off-by: Jianfeng Tan <jianfeng.tan@intel.com>
---
.../howto/img/virtio_user_as_exceptional_path.svg | 1260 ++++++++++++++++++++
doc/guides/howto/index.rst | 1 +
.../howto/virtio_user_as_exceptional_path.rst | 142 +++
3 files changed, 1403 insertions(+)
create mode 100644 doc/guides/howto/img/virtio_user_as_exceptional_path.svg
create mode 100644 doc/guides/howto/virtio_user_as_exceptional_path.rst
diff --git a/doc/guides/howto/img/virtio_user_as_exceptional_path.svg b/doc/guides/howto/img/virtio_user_as_exceptional_path.svg
new file mode 100644
index 0000000..09ae9ac
--- /dev/null
+++ b/doc/guides/howto/img/virtio_user_as_exceptional_path.svg
@@ -0,0 +1,1260 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<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"
+ viewBox="0 0 960 720"
+ height="720"
+ width="960"
+ xml:space="preserve"
+ id="svg2"
+ version="1.1"><metadata
+ id="metadata8"><rdf:RDF><cc:Work
+ rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
+ id="defs6"><clipPath
+ id="clipPath18"
+ clipPathUnits="userSpaceOnUse"><path
+ style="clip-rule:evenodd"
+ id="path16"
+ d="M 0,1.2207e-4 H 720 V 540.00012 H 0 Z" /></clipPath><clipPath
+ id="clipPath56"
+ clipPathUnits="userSpaceOnUse"><path
+ style="clip-rule:evenodd"
+ id="path54"
+ d="M 0,6.104e-6 H 720 V 540.00001 H 0 Z" /></clipPath><mask
+ id="mask60"
+ height="1"
+ width="1"
+ y="0"
+ x="0"
+ maskUnits="userSpaceOnUse"><image
+ id="image62"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAATgAAADxCAAAAAB6hPR+AAAAAXNCSVQI5gpbmQAAA8hJREFUeJzt2NGu2joQQNGxHUD9/68tiWfuQwiHtidttR8up9JeSCjAi7U1xoEI6f/UTq71mfq4bK8Xlvu9ej49W7XHQ79Tj0fEEa5F271zWV9e7fZyS0REi9Zb7703t+upiqrMzEe5JSIiWu9jjNG72/VUVeWcc859qy6xb9SxXJbLGG7WU1U5122Niow6tmrr43K9Xi+jW+5M5dzu96h8TlyL1vpYrt9u18WRO5W5raNVZrZqdWzVPpbr7dvtMjxZT1TN9R65jd6z1cvhsFyut9t1MdyJqm20uS3j0ed5O9LHcrleF7/kTlT2lpdl9Eehx8RF672PsRjuTGXk0ns7btj2cNH2dL0b7kTFo87rVo2IaO343fWupX1xR6DHy+XHjwx36qc0/W0L+ccZDjIcZDjIcJDhIMNBhoMMBxkOMhxkOMhwkOEgw0GGgwwHGQ4yHGQ4yHCQ4SDDQYaDDAcZDjIcZDjIcJDhIMNBhoMMBxkOMhxkOMhwkOEgw0GGgwwHGQ4yHGQ4yHCQ4SDDQYaDDAcZDjIcZDjIcJDhIMNBhoMMBxkOMhxkOMhwkOEgw0GGgwwHGQ4yHGQ4yHCQ4SDDQYaDDAcZDjIcZDjIcJDhIMNBhoMMBxkOMhxkOMhwkOEgw0GGgwwHGQ4yHGQ4yHCQ4SDDQYaDDAcZDjIcZDjIcJDhIMNB
hoMMBxkOMhxkOMhwkOEgw0GGgwwHGQ4yHGQ4yHCQ4SDDQYaDDAcZDjIcZDjIcJDhIMNBhoMMBxkOMhxkOMhwkOEgw0GGgwwHGQ4yHGQ4yHCQ4SDDQYaDDAcZDjIcZDjIcJDhIMNBhoMMBxkOMhxkOMhwkOEgw0GGgwwHGQ4yHGQ4yHCQ4SDDQYaDDAcZDjIcZDjIcJ
DhIMNBhoMMBxkOMhxkOMhwkOEgw0GGgwwHGQ4yHGQ4yHCQ4SDDQYaDDAcZDjIcZDjIcJDhIMNBhoMMBxkOMhxkOMhwkOGg5Zd36g2r+Ac9J64O71zNF/ZznuV4O6oyM6O1dy3ta6vMzKo40u3hKiorc87ohvtc5TbnzKzHd9kSEVFRlXNbR1ua4T5XOdftpdxj4irnut5bDifuROVc7/d1y/yYuGqVc1u/t1yH3c5kbvfv923mfkLsW7VybveW6xgtLPep+hi5iIhYIqpF5Vwjt6V3w52oqjm3dZ1ZFfXYqhE5o3LrvRnuREVlzm1uWT8cDrMye7PbuYqszDyO1b1Ti9Z6229FLPepevnx8BEuWrRw3P6goqKOG+AjlbP2Nyqef4K8xLLbn/kXiN7lP02eH7rylorJAAAAAElFTkSuQmCC"
+ preserveAspectRatio="none"
+ style="image-rendering:optimizeSpeed"
+ height="1"
+ width="1" /></mask><clipPath
+ id="clipPath72"
+ clipPathUnits="userSpaceOnUse"><path
+ style="clip-rule:evenodd"
+ id="path70"
+ d="M 0,6.104e-6 H 720 V 540.00001 H 0 Z" /></clipPath><mask
+ id="mask76"
+ height="1"
+ width="1"
+ y="0"
+ x="0"
+ maskUnits="userSpaceOnUse"><image
+ id="image78"
+ xlink:href="data:image/png;base64,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"
+ preserveAspectRatio="none"
+ style="image-rendering:optimizeSpeed"
+ height="1"
+ width="1" /></mask><clipPath
+ id="clipPath150"
+ clipPathUnits="userSpaceOnUse"><path
+ style="clip-rule:evenodd"
+ id="path148"
+ d="M 0,6.104e-6 H 720 V 540.00001 H 0 Z" /></clipPath><mask
+ id="mask154"
+ height="1"
+ width="1"
+ y="0"
+ x="0"
+ maskUnits="userSpaceOnUse"><image
+ id="image156"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAiQAAAA1CAAAAABUja+7AAAAAXNCSVQI5gpbmQAABBlJREFUeJztm1F3nDoMhGck27n//98WW9J9gG2TNLAk0EJz9D3snpxlvRM0yLIwQJIkSZIkSZIkSZIkSZIkSZIkSXIXeLWA5CIIIPYfuvuwnWMmt4cAGMC+mO4xCfHTd2mTbwHBOfKB2BHT5ybhY8xA7BkxuT0ESRKIiD02KU/HWwYkIhzBdMk3gBQRMiI8Ip7OENsmmS0iFJIRTvd0yT8PQYqqCuHu7v7UJlsmWbKIiqgQ4WbAQZfkYup6CIqWUlTgbmbmHo4tm2yYZJ65RFVVlXAbAOCHJSbXQlK11FYUYWMMM3NuVhKrJvllkVJKUYZ3zm47Ot+kTTb4CyeHEC21vdTC8NH76DaMvjHnrJmEc3GjpZRaSxXGECBgPGqSm3nkZnL+iktEa20vrQpsjKmXLjbMfTWyKyZ5FDe11NpqLULvRATF42hNcq+w3EvNkxN0yqKBFC2ttZemcOt1mop2cqzXm6uZhKJaa22ttVoKYYJwUNb9tksgfp6Dy1dJfLy+C8qFwrjlknj3/uUfoWiprbVWGFZ7KT+EQKxXJes1yTxxtZfWalHGoJuDFkcyye8RuZiHoIeqswLxRS1Pz9A5qUS0tFprLYSriBAR7k6u2ORjkxAkpdTW/ntptarQEdU8aH5IJ++TSICHnDdR2X1D4+/IecspN0YI0aKqKiLz7RY3G2ri
+Nx0Q1BE5pVNLUowTFQ1IAcyySObnrFGOge+S++Bc1ZwX1WzbZIg4vDCYe6gc169Pv4gt/LXk47r8u1fyhiHJozXHrneJsu/9er6maVdpSzAWLua58/POG8k6XNH3uHuZvaz7/oxKyYJRkS4mQ0VYdA93N3djheuuIlFZvjqdZlqLpX2pCI5YTYkJSBazCDho0/TNP
Vh/tk+STDC3YYIgQhVxBg2+jLWcW7jkt9ick4gvgbfvb/lrARMijpEBQVhY+o/Fpf42vWxOt2EG7kUNUUlbJqmPg071Cd5VbTewyMfcLV/t7skJ0gjVB0ijAEfY+rT1PvYiuyaSQJhCHcbo7dSBN6naZrOySS3NsmNlZ2jjTANCGNI+Oi99z5suK/vFlqvSRwR4TZG7aUofSxJ6Qyh3z0Of44zMgk9AMKVYWP0MYb5lkfWMwnDCXez0WspImF96mP4WZnkztxd3zEIATj30G3YMDNftqitsF6TMGAMcbGhRQRm2xPXp/jeYbg3QQcQPogw86cW2eqTBABYuLhoVyLMzObtKadIPWmc5LMw4ABcGOHu8Xxn2nZnjCAofLT3zeOUkiS5FpJcuhu79rg+a59y3jUwr4YjDt3eS24CMW9tRwSeW2TfIxXE3Nnf4bnkn2B5TGZvm3/nw1mPtnVa5Jvwfm/EroNPHDJJkiRJkiRJkiRJkiRJkiRJkiRJkj/F/w4AXPMpJ5LPAAAAAElFTkSuQmCC"
+ preserveAspectRatio="none"
+ style="image-rendering:optimizeSpeed"
+ height="1"
+ width="1" /></mask><linearGradient
+ id="linearGradient206"
+ spreadMethod="pad"
+ gradientUnits="userSpaceOnUse"
+ y2="111.91"
+ x2="561.70001"
+ y1="191.32001"
+ x1="561.70001"><stop
+ id="stop192"
+ offset="0"
+ style="stop-opacity:1;stop-color:#8cc640" /><stop
+ id="stop194"
+ offset="0.025"
+ style="stop-opacity:1;stop-color:#8cc640" /><stop
+ id="stop196"
+ offset="0.475"
+ style="stop-opacity:1;stop-color:#d6df27" /><stop
+ id="stop198"
+ offset="0.5"
+ style="stop-opacity:1;stop-color:#d6df27" /><stop
+ id="stop200"
+ offset="0.525"
+ style="stop-opacity:1;stop-color:#d6df27" /><stop
+ id="stop202"
+ offset="0.975"
+ style="stop-opacity:1;stop-color:#8cc640" /><stop
+ id="stop204"
+ offset="1"
+ style="stop-opacity:1;stop-color:#8cc640" /></linearGradient><linearGradient
+ id="linearGradient228"
+ spreadMethod="pad"
+ gradientUnits="userSpaceOnUse"
+ y2="111.97"
+ x2="570.53003"
+ y1="118.12"
+ x1="570.53003"><stop
+ id="stop214"
+ offset="0"
+ style="stop-opacity:1;stop-color:#fdd900" /><stop
+ id="stop216"
+ offset="0.025"
+ style="stop-opacity:1;stop-color:#fdd900" /><stop
+ id="stop218"
+ offset="0.475"
+ style="stop-opacity:1;stop-color:#f27422" /><stop
+ id="stop220"
+ offset="0.5"
+ style="stop-opacity:1;stop-color:#f27422" /><stop
+ id="stop222"
+ offset="0.525"
+ style="stop-opacity:1;stop-color:#f27422" /><stop
+ id="stop224"
+ offset="0.975"
+ style="stop-opacity:1;stop-color:#fdd900" /><stop
+ id="stop226"
+ offset="1"
+ style="stop-opacity:1;stop-color:#fdd900" /></linearGradient><linearGradient
+ id="linearGradient248"
+ spreadMethod="pad"
+ gradientUnits="userSpaceOnUse"
+ y2="111.97"
+ x2="570.53003"
+ y1="118.12"
+ x1="570.53003"><stop
+ id="stop234"
+ offset="0"
+ style="stop-opacity:1;stop-color:#fdd900" /><stop
+ id="stop236"
+ offset="0.025"
+ style="stop-opacity:1;stop-color:#fdd900" /><stop
+ id="stop238"
+ offset="0.475"
+ style="stop-opacity:1;stop-color:#f27422" /><stop
+ id="stop240"
+ offset="0.5"
+ style="stop-opacity:1;stop-color:#f27422" /><stop
+ id="stop242"
+ offset="0.525"
+ style="stop-opacity:1;stop-color:#f27422" /><stop
+ id="stop244"
+ offset="0.975"
+ style="stop-opacity:1;stop-color:#fdd900" /><stop
+ id="stop246"
+ offset="1"
+ style="stop-opacity:1;stop-color:#fdd900" /></linearGradient><linearGradient
+ id="linearGradient268"
+ spreadMethod="pad"
+ gradientUnits="userSpaceOnUse"
+ y2="111.97"
+ x2="572.66998"
+ y1="118.12"
+ x1="572.66998"><stop
+ id="stop254"
+ offset="0"
+ style="stop-opacity:1;stop-color:#fdd900" /><stop
+ id="stop256"
+ offset="0.025"
+ style="stop-opacity:1;stop-color:#fdd900" /><stop
+ id="stop258"
+ offset="0.475"
+ style="stop-opacity:1;stop-color:#f27422" /><stop
+ id="stop260"
+ offset="0.5"
+ style="stop-opacity:1;stop-color:#f27422" /><stop
+ id="stop262"
+ offset="0.525"
+ style="stop-opacity:1;stop-color:#f27422" /><stop
+ id="stop264"
+ offset="0.975"
+ style="stop-opacity:1;stop-color:#fdd900" /><stop
+ id="stop266"
+ offset="1"
+ style="stop-opacity:1;stop-color:#fdd900" /></linearGradient><linearGradient
+ id="linearGradient288"
+ spreadMethod="pad"
+ gradientUnits="userSpaceOnUse"
+ y2="111.97"
+ x2="572.66998"
+ y1="118.12"
+ x1="572.66998"><stop
+ id="stop274"
+ offset="0"
+ style="stop-opacity:1;stop-color:#fdd900" /><stop
+ id="stop276"
+ offset="0.025"
+ style="stop-opacity:1;stop-color:#fdd900" /><stop
+ id="stop278"
+ offset="0.475"
+ style="stop-opacity:1;stop-color:#f27422" /><stop
+ id="stop280"
+ offset="0.5"
+ style="stop-opacity:1;stop-color:#f27422" /><stop
+ id="stop282"
+ offset="0.525"
+ style="stop-opacity:1;stop-color:#f27422" /><stop
+ id="stop284"
+ offset="0.975"
+ style="stop-opacity:1;stop-color:#fdd900" /><stop
+ id="stop286"
+ offset="1"
+ style="stop-opacity:1;stop-color:#fdd900" /></linearGradient><linearGradient
+ id="linearGradient308"
+ spreadMethod="pad"
+ gradientUnits="userSpaceOnUse"
+ y2="111.97"
+ x2="566.17999"
+ y1="118.12"
+ x1="566.17999"><stop
+ id="stop294"
+ offset="0"
+ style="stop-opacity:1;stop-color:#fdd900" /><stop
+ id="stop296"
+ offset="0.025"
+ style="stop-opacity:1;stop-color:#fdd900" /><stop
+ id="stop298"
+ offset="0.475"
+ style="stop-opacity:1;stop-color:#f27422" /><stop
+ id="stop300"
+ offset="0.5"
+ style="stop-opacity:1;stop-color:#f27422" /><stop
+ id="stop302"
+ offset="0.525"
+ style="stop-opacity:1;stop-color:#f27422" /><stop
+ id="stop304"
+ offset="0.975"
+ style="stop-opacity:1;stop-color:#fdd900" /><stop
+ id="stop306"
+ offset="1"
+ style="stop-opacity:1;stop-color:#fdd900" /></linearGradient><linearGradient
+ id="linearGradient328"
+ spreadMethod="pad"
+ gradientUnits="userSpaceOnUse"
+ y2="111.97"
+ x2="566.17999"
+ y1="118.12"
+ x1="566.17999"><stop
+ id="stop314"
+ offset="0"
+ style="stop-opacity:1;stop-color:#fdd900" /><stop
+ id="stop316"
+ offset="0.025"
+ style="stop-opacity:1;stop-color:#fdd900" /><stop
+ id="stop318"
+ offset="0.475"
+ style="stop-opacity:1;stop-color:#f27422" /><stop
+ id="stop320"
+ offset="0.5"
+ style="stop-opacity:1;stop-color:#f27422" /><stop
+ id="stop322"
+ offset="0.525"
+ style="stop-opacity:1;stop-color:#f27422" /><stop
+ id="stop324"
+ offset="0.975"
+ style="stop-opacity:1;stop-color:#fdd900" /><stop
+ id="stop326"
+ offset="1"
+ style="stop-opacity:1;stop-color:#fdd900" /></linearGradient><linearGradient
+ id="linearGradient348"
+ spreadMethod="pad"
+ gradientUnits="userSpaceOnUse"
+ y2="111.97"
+ x2="568.34003"
+ y1="118.12"
+ x1="568.34003"><stop
+ id="stop334"
+ offset="0"
+ style="stop-opacity:1;stop-color:#fdd900" /><stop
+ id="stop336"
+ offset="0.025"
+ style="stop-opacity:1;stop-color:#fdd900" /><stop
+ id="stop338"
+ offset="0.475"
+ style="stop-opacity:1;stop-color:#f27422" /><stop
+ id="stop340"
+ offset="0.5"
+ style="stop-opacity:1;stop-color:#f27422" /><stop
+ id="stop342"
+ offset="0.525"
+ style="stop-opacity:1;stop-color:#f27422" /><stop
+ id="stop344"
+ offset="0.975"
+ style="stop-opacity:1;stop-color:#fdd900" /><stop
+ id="stop346"
+ offset="1"
+ style="stop-opacity:1;stop-color:#fdd900" /></linearGradient><linearGradient
+ id="linearGradient368"
+ spreadMethod="pad"
+ gradientUnits="userSpaceOnUse"
+ y2="111.97"
+ x2="568.34003"
+ y1="118.12"
+ x1="568.34003"><stop
+ id="stop354"
+ offset="0"
+ style="stop-opacity:1;stop-color:#fdd900" /><stop
+ id="stop356"
+ offset="0.025"
+ style="stop-opacity:1;stop-color:#fdd900" /><stop
+ id="stop358"
+ offset="0.475"
+ style="stop-opacity:1;stop-color:#f27422" /><stop
+ id="stop360"
+ offset="0.5"
+ style="stop-opacity:1;stop-color:#f27422" /><stop
+ id="stop362"
+ offset="0.525"
+ style="stop-opacity:1;stop-color:#f27422" /><stop
+ id="stop364"
+ offset="0.975"
+ style="stop-opacity:1;stop-color:#fdd900" /><stop
+ id="stop366"
+ offset="1"
+ style="stop-opacity:1;stop-color:#fdd900" /></linearGradient><linearGradient
+ id="linearGradient388"
+ spreadMethod="pad"
+ gradientUnits="userSpaceOnUse"
+ y2="111.97"
+ x2="574.87"
+ y1="118.12"
+ x1="574.87"><stop
+ id="stop374"
+ offset="0"
+ style="stop-opacity:1;stop-color:#fdd900" /><stop
+ id="stop376"
+ offset="0.025"
+ style="stop-opacity:1;stop-color:#fdd900" /><stop
+ id="stop378"
+ offset="0.475"
+ style="stop-opacity:1;stop-color:#f27422" /><stop
+ id="stop380"
+ offset="0.5"
+ style="stop-opacity:1;stop-color:#f27422" /><stop
+ id="stop382"
+ offset="0.525"
+ style="stop-opacity:1;stop-color:#f27422" /><stop
+ id="stop384"
+ offset="0.975"
+ style="stop-opacity:1;stop-color:#fdd900" /><stop
+ id="stop386"
+ offset="1"
+ style="stop-opacity:1;stop-color:#fdd900" /></linearGradient><linearGradient
+ id="linearGradient408"
+ spreadMethod="pad"
+ gradientUnits="userSpaceOnUse"
+ y2="111.97"
+ x2="574.87"
+ y1="118.12"
+ x1="574.87"><stop
+ id="stop394"
+ offset="0"
+ style="stop-opacity:1;stop-color:#fdd900" /><stop
+ id="stop396"
+ offset="0.025"
+ style="stop-opacity:1;stop-color:#fdd900" /><stop
+ id="stop398"
+ offset="0.475"
+ style="stop-opacity:1;stop-color:#f27422" /><stop
+ id="stop400"
+ offset="0.5"
+ style="stop-opacity:1;stop-color:#f27422" /><stop
+ id="stop402"
+ offset="0.525"
+ style="stop-opacity:1;stop-color:#f27422" /><stop
+ id="stop404"
+ offset="0.975"
+ style="stop-opacity:1;stop-color:#fdd900" /><stop
+ id="stop406"
+ offset="1"
+ style="stop-opacity:1;stop-color:#fdd900" /></linearGradient><linearGradient
+ id="linearGradient428"
+ spreadMethod="pad"
+ gradientUnits="userSpaceOnUse"
+ y2="111.97"
+ x2="577.07001"
+ y1="118.12"
+ x1="577.07001"><stop
+ id="stop414"
+ offset="0"
+ style="stop-opacity:1;stop-color:#fdd900" /><stop
+ id="stop416"
+ offset="0.025"
+ style="stop-opacity:1;stop-color:#fdd900" /><stop
+ id="stop418"
+ offset="0.475"
+ style="stop-opacity:1;stop-color:#f27422" /><stop
+ id="stop420"
+ offset="0.5"
+ style="stop-opacity:1;stop-color:#f27422" /><stop
+ id="stop422"
+ offset="0.525"
+ style="stop-opacity:1;stop-color:#f27422" /><stop
+ id="stop424"
+ offset="0.975"
+ style="stop-opacity:1;stop-color:#fdd900" /><stop
+ id="stop426"
+ offset="1"
+ style="stop-opacity:1;stop-color:#fdd900" /></linearGradient><linearGradient
+ id="linearGradient448"
+ spreadMethod="pad"
+ gradientUnits="userSpaceOnUse"
+ y2="111.97"
+ x2="577.07001"
+ y1="118.12"
+ x1="577.07001"><stop
+ id="stop434"
+ offset="0"
+ style="stop-opacity:1;stop-color:#fdd900" /><stop
+ id="stop436"
+ offset="0.025"
+ style="stop-opacity:1;stop-color:#fdd900" /><stop
+ id="stop438"
+ offset="0.475"
+ style="stop-opacity:1;stop-color:#f27422" /><stop
+ id="stop440"
+ offset="0.5"
+ style="stop-opacity:1;stop-color:#f27422" /><stop
+ id="stop442"
+ offset="0.525"
+ style="stop-opacity:1;stop-color:#f27422" /><stop
+ id="stop444"
+ offset="0.975"
+ style="stop-opacity:1;stop-color:#fdd900" /><stop
+ id="stop446"
+ offset="1"
+ style="stop-opacity:1;stop-color:#fdd900" /></linearGradient><linearGradient
+ id="linearGradient468"
+ spreadMethod="pad"
+ gradientUnits="userSpaceOnUse"
+ y2="111.97"
+ x2="579.21997"
+ y1="118.12"
+ x1="579.21997"><stop
+ id="stop454"
+ offset="0"
+ style="stop-opacity:1;stop-color:#fdd900" /><stop
+ id="stop456"
+ offset="0.025"
+ style="stop-opacity:1;stop-color:#fdd900" /><stop
+ id="stop458"
+ offset="0.475"
+ style="stop-opacity:1;stop-color:#f27422" /><stop
+ id="stop460"
+ offset="0.5"
+ style="stop-opacity:1;stop-color:#f27422" /><stop
+ id="stop462"
+ offset="0.525"
+ style="stop-opacity:1;stop-color:#f27422" /><stop
+ id="stop464"
+ offset="0.975"
+ style="stop-opacity:1;stop-color:#fdd900" /><stop
+ id="stop466"
+ offset="1"
+ style="stop-opacity:1;stop-color:#fdd900" /></linearGradient><linearGradient
+ id="linearGradient488"
+ spreadMethod="pad"
+ gradientUnits="userSpaceOnUse"
+ y2="111.97"
+ x2="579.21997"
+ y1="118.12"
+ x1="579.21997"><stop
+ id="stop474"
+ offset="0"
+ style="stop-opacity:1;stop-color:#fdd900" /><stop
+ id="stop476"
+ offset="0.025"
+ style="stop-opacity:1;stop-color:#fdd900" /><stop
+ id="stop478"
+ offset="0.475"
+ style="stop-opacity:1;stop-color:#f27422" /><stop
+ id="stop480"
+ offset="0.5"
+ style="stop-opacity:1;stop-color:#f27422" /><stop
+ id="stop482"
+ offset="0.525"
+ style="stop-opacity:1;stop-color:#f27422" /><stop
+ id="stop484"
+ offset="0.975"
+ style="stop-opacity:1;stop-color:#fdd900" /><stop
+ id="stop486"
+ offset="1"
+ style="stop-opacity:1;stop-color:#fdd900" /></linearGradient><linearGradient
+ id="linearGradient498"
+ spreadMethod="pad"
+ gradientUnits="userSpaceOnUse"
+ y2="145.06"
+ x2="569.13"
+ y1="149.61"
+ x1="569.13"><stop
+ id="stop494"
+ offset="0"
+ style="stop-opacity:1;stop-color:#fcfbf9" /><stop
+ id="stop496"
+ offset="1"
+ style="stop-opacity:1;stop-color:#fcfbf9" /></linearGradient><linearGradient
+ id="linearGradient508"
+ spreadMethod="pad"
+ gradientUnits="userSpaceOnUse"
+ y2="145.06"
+ x2="571.33002"
+ y1="149.61"
+ x1="571.33002"><stop
+ id="stop504"
+ offset="0"
+ style="stop-opacity:1;stop-color:#fcfbf9" /><stop
+ id="stop506"
+ offset="1"
+ style="stop-opacity:1;stop-color:#fcfbf9" /></linearGradient><linearGradient
+ id="linearGradient518"
+ spreadMethod="pad"
+ gradientUnits="userSpaceOnUse"
+ y2="145.06"
+ x2="573.46997"
+ y1="149.61"
+ x1="573.46997"><stop
+ id="stop514"
+ offset="0"
+ style="stop-opacity:1;stop-color:#fcfbf9" /><stop
+ id="stop516"
+ offset="1"
+ style="stop-opacity:1;stop-color:#fcfbf9" /></linearGradient><linearGradient
+ id="linearGradient528"
+ spreadMethod="pad"
+ gradientUnits="userSpaceOnUse"
+ y2="145.06"
+ x2="575.66998"
+ y1="149.61"
+ x1="575.66998"><stop
+ id="stop524"
+ offset="0"
+ style="stop-opacity:1;stop-color:#fcfbf9" /><stop
+ id="stop526"
+ offset="1"
+ style="stop-opacity:1;stop-color:#fcfbf9" /></linearGradient><linearGradient
+ id="linearGradient538"
+ spreadMethod="pad"
+ gradientUnits="userSpaceOnUse"
+ y2="145.06"
+ x2="577.82001"
+ y1="149.61"
+ x1="577.82001"><stop
+ id="stop534"
+ offset="0"
+ style="stop-opacity:1;stop-color:#fcfbf9" /><stop
+ id="stop536"
+ offset="1"
+ style="stop-opacity:1;stop-color:#fcfbf9" /></linearGradient><linearGradient
+ id="linearGradient548"
+ spreadMethod="pad"
+ gradientUnits="userSpaceOnUse"
+ y2="122.7"
+ x2="569.13"
+ y1="127.31"
+ x1="569.13"><stop
+ id="stop544"
+ offset="0"
+ style="stop-opacity:1;stop-color:#fcfbf9" /><stop
+ id="stop546"
+ offset="1"
+ style="stop-opacity:1;stop-color:#fcfbf9" /></linearGradient><linearGradient
+ id="linearGradient558"
+ spreadMethod="pad"
+ gradientUnits="userSpaceOnUse"
+ y2="122.7"
+ x2="571.33002"
+ y1="127.31"
+ x1="571.33002"><stop
+ id="stop554"
+ offset="0"
+ style="stop-opacity:1;stop-color:#fcfbf9" /><stop
+ id="stop556"
+ offset="1"
+ style="stop-opacity:1;stop-color:#fcfbf9" /></linearGradient><linearGradient
+ id="linearGradient568"
+ spreadMethod="pad"
+ gradientUnits="userSpaceOnUse"
+ y2="122.7"
+ x2="573.46997"
+ y1="127.31"
+ x1="573.46997"><stop
+ id="stop564"
+ offset="0"
+ style="stop-opacity:1;stop-color:#fcfbf9" /><stop
+ id="stop566"
+ offset="1"
+ style="stop-opacity:1;stop-color:#fcfbf9" /></linearGradient><linearGradient
+ id="linearGradient578"
+ spreadMethod="pad"
+ gradientUnits="userSpaceOnUse"
+ y2="122.7"
+ x2="575.66998"
+ y1="127.31"
+ x1="575.66998"><stop
+ id="stop574"
+ offset="0"
+ style="stop-opacity:1;stop-color:#fcfbf9" /><stop
+ id="stop576"
+ offset="1"
+ style="stop-opacity:1;stop-color:#fcfbf9" /></linearGradient><linearGradient
+ id="linearGradient588"
+ spreadMethod="pad"
+ gradientUnits="userSpaceOnUse"
+ y2="122.7"
+ x2="577.82001"
+ y1="127.31"
+ x1="577.82001"><stop
+ id="stop584"
+ offset="0"
+ style="stop-opacity:1;stop-color:#fcfbf9" /><stop
+ id="stop586"
+ offset="1"
+ style="stop-opacity:1;stop-color:#fcfbf9" /></linearGradient><linearGradient
+ id="linearGradient598"
+ spreadMethod="pad"
+ gradientUnits="userSpaceOnUse"
+ y2="127.21"
+ x2="580.46997"
+ y1="130.82001"
+ x1="580.46997"><stop
+ id="stop594"
+ offset="0"
+ style="stop-opacity:1;stop-color:#fcfbf9" /><stop
+ id="stop596"
+ offset="1"
+ style="stop-opacity:1;stop-color:#fcfbf9" /></linearGradient><linearGradient
+ id="linearGradient608"
+ spreadMethod="pad"
+ gradientUnits="userSpaceOnUse"
+ y2="130.69"
+ x2="580.46997"
+ y1="134.3"
+ x1="580.46997"><stop
+ id="stop604"
+ offset="0"
+ style="stop-opacity:1;stop-color:#fcfbf9" /><stop
+ id="stop606"
+ offset="1"
+ style="stop-opacity:1;stop-color:#fcfbf9" /></linearGradient><linearGradient
+ id="linearGradient618"
+ spreadMethod="pad"
+ gradientUnits="userSpaceOnUse"
+ y2="134.10001"
+ x2="580.46997"
+ y1="137.71001"
+ x1="580.46997"><stop
+ id="stop614"
+ offset="0"
+ style="stop-opacity:1;stop-color:#fcfbf9" /><stop
+ id="stop616"
+ offset="1"
+ style="stop-opacity:1;stop-color:#fcfbf9" /></linearGradient><linearGradient
+ id="linearGradient628"
+ spreadMethod="pad"
+ gradientUnits="userSpaceOnUse"
+ y2="137.57001"
+ x2="580.46997"
+ y1="141.17999"
+ x1="580.46997"><stop
+ id="stop624"
+ offset="0"
+ style="stop-opacity:1;stop-color:#fcfbf9" /><stop
+ id="stop626"
+ offset="1"
+ style="stop-opacity:1;stop-color:#fcfbf9" /></linearGradient><linearGradient
+ id="linearGradient638"
+ spreadMethod="pad"
+ gradientUnits="userSpaceOnUse"
+ y2="140.95"
+ x2="580.46997"
+ y1="144.56"
+ x1="580.46997"><stop
+ id="stop634"
+ offset="0"
+ style="stop-opacity:1;stop-color:#fcfbf9" /><stop
+ id="stop636"
+ offset="1"
+ style="stop-opacity:1;stop-color:#fcfbf9" /></linearGradient><linearGradient
+ id="linearGradient648"
+ spreadMethod="pad"
+ gradientUnits="userSpaceOnUse"
+ y2="127.21"
+ x2="566.35999"
+ y1="130.82001"
+ x1="566.35999"><stop
+ id="stop644"
+ offset="0"
+ style="stop-opacity:1;stop-color:#fcfbf9" /><stop
+ id="stop646"
+ offset="1"
+ style="stop-opacity:1;stop-color:#fcfbf9" /></linearGradient><linearGradient
+ id="linearGradient658"
+ spreadMethod="pad"
+ gradientUnits="userSpaceOnUse"
+ y2="130.69"
+ x2="566.35999"
+ y1="134.3"
+ x1="566.35999"><stop
+ id="stop654"
+ offset="0"
+ style="stop-opacity:1;stop-color:#fcfbf9" /><stop
+ id="stop656"
+ offset="1"
+ style="stop-opacity:1;stop-color:#fcfbf9" /></linearGradient><linearGradient
+ id="linearGradient668"
+ spreadMethod="pad"
+ gradientUnits="userSpaceOnUse"
+ y2="134.10001"
+ x2="566.35999"
+ y1="137.71001"
+ x1="566.35999"><stop
+ id="stop664"
+ offset="0"
+ style="stop-opacity:1;stop-color:#fcfbf9" /><stop
+ id="stop666"
+ offset="1"
+ style="stop-opacity:1;stop-color:#fcfbf9" /></linearGradient><linearGradient
+ id="linearGradient678"
+ spreadMethod="pad"
+ gradientUnits="userSpaceOnUse"
+ y2="137.57001"
+ x2="566.35999"
+ y1="141.17999"
+ x1="566.35999"><stop
+ id="stop674"
+ offset="0"
+ style="stop-opacity:1;stop-color:#fcfbf9" /><stop
+ id="stop676"
+ offset="1"
+ style="stop-opacity:1;stop-color:#fcfbf9" /></linearGradient><linearGradient
+ id="linearGradient688"
+ spreadMethod="pad"
+ gradientUnits="userSpaceOnUse"
+ y2="140.95"
+ x2="566.35999"
+ y1="144.56"
+ x1="566.35999"><stop
+ id="stop684"
+ offset="0"
+ style="stop-opacity:1;stop-color:#fcfbf9" /><stop
+ id="stop686"
+ offset="1"
+ style="stop-opacity:1;stop-color:#fcfbf9" /></linearGradient><linearGradient
+ id="linearGradient720"
+ spreadMethod="pad"
+ gradientUnits="userSpaceOnUse"
+ y2="139.67999"
+ x2="539.79999"
+ y1="149.31"
+ x1="539.79999"><stop
+ id="stop716"
+ offset="0"
+ style="stop-opacity:1;stop-color:#4f81bd" /><stop
+ id="stop718"
+ offset="1"
+ style="stop-opacity:1;stop-color:#4f81bd" /></linearGradient><linearGradient
+ id="linearGradient730"
+ spreadMethod="pad"
+ gradientUnits="userSpaceOnUse"
+ y2="132.83"
+ x2="539.79999"
+ y1="142.59"
+ x1="539.79999"><stop
+ id="stop726"
+ offset="0"
+ style="stop-opacity:1;stop-color:#4f81bd" /><stop
+ id="stop728"
+ offset="1"
+ style="stop-opacity:1;stop-color:#4f81bd" /></linearGradient><linearGradient
+ id="linearGradient740"
+ spreadMethod="pad"
+ gradientUnits="userSpaceOnUse"
+ y2="126.34"
+ x2="539.79999"
+ y1="136.17"
+ x1="539.79999"><stop
+ id="stop736"
+ offset="0"
+ style="stop-opacity:1;stop-color:#4f81bd" /><stop
+ id="stop738"
+ offset="1"
+ style="stop-opacity:1;stop-color:#4f81bd" /></linearGradient><clipPath
+ id="clipPath750"
+ clipPathUnits="userSpaceOnUse"><path
+ style="clip-rule:evenodd"
+ id="path748"
+ d="M 0,6.104e-6 H 720 V 540.00001 H 0 Z" /></clipPath><mask
+ id="mask754"
+ height="1"
+ width="1"
+ y="0"
+ x="0"
+ maskUnits="userSpaceOnUse"><image
+ id="image756"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADkAAAGlCAAAAABloAHVAAAAAXNCSVQI5gpbmQAABOVJREFUeJztnGtzrSoMht8EcP3/n6uQ5HxA195VLi5n3LU9ZKbXmadJaIgQIcCQIUOG/FSh5u/tY5Lyh7XYIkkgEACD1dESSSAiIpiZ1dECSSBiZoKpmlZRVyCJ2HnnHXPNUgDwJZXsvHcME0h9lI4kiNj5EBw0AWZyWieI2Idp8hCGmWlF6YHMXobXy0MYqsoVpQU/2Xk/vV6ehExEtaJ0TxIROR+m6eVJoCIiFaUFa53zYZomT2KSUhI1LSn1e46YnZ/CFALYJKWYRMnoiB6tZedDCCF4sEmKIYmWwB1JBGbngw/OOZD3PnifRPvk6qbzzjER2HnvnWMCHT39Epo51p1zzAQA7x9KM+prUK/zi8jMTM0MYM5TrmstAJiJJDJYEjWzIlcgzVRTimSOVGJMomqn4tZMJTJBgyOVOC8xaTZ7L19mNmHNIzAzS2lZlmWOSYpav+aE7FFOPyYpzvOyJDlFAmQwAwymKS5LXFUe0V0eyjoBIoJJjI0h2mcwWq0mJtOUUqpO0MPYkkHJzFRJ1Uy1ljcPidHMsOZoYP2+BB5JvDmz7Q+cJs/JDaSh/nCtk9nNDvooPwd5G2kGEKGSMe/ROcjnkVvGI6rnhWoMXdR5Rgb5DaTlp8PnOcGQwQs6uzLIf042dslNMq+/sD5WKmH0ID8HeQ+5LcGtvcR4iLWDvJV8
b6uuPh3qj6Me2ZRB/nvyvdj8bIVhOLHYfJKfg+yQlysRdgJ9kJ+DPEdSa/vQ26/UY+Fxfg7yDnKr2zaKGA+ydpC3krmyeWHXMVYYv4hsvupv6zxRxHiOn4PskO+9w6drzQwaDGgUMR7j5yDvJNciRmPj+iRrB3kbae9XZqOu+X8nt0rExznhXcT4XGdfBvkd5LsS8f
k6oVPEeJafg7yL7BcxnmTtIO8krVPEeJa1g7yJXC8dbNcX+uepdziAKvgkPwfZJv86T4HLFW6qLk4e4+cgPyE/P6W3FTGu6xzkbyBPFDEeZO0g7yS7RYx69aNXxHiUn4Psk1sl4sLJ3faRnIf5Ochz5Od7h/cNulHN+i1k/U5kh8zbz2oR42l+DvIeMl9dbp2neJK1g7yL3BUxrtWkrrxf6cggv4W09qmcxgrj4n6lL4P8TvLC7eO/Ly9f0lmTQf4ocl1i1JPCo6wd5K1ku4jR1NksYjzNz0G2yV5ni14MXdHZkzvIP4F+svvVRtEKU/509LpIUu5qxrR+YRgOfckKfe1AuTFY8ME7slqhqNQRL4M+TCE4pj/HpahDZtCHaZqm4Jm4MkTFvnbE3k/TNIXAJo6ZCUi2691WGiFi58L0ek3Bs2lyuQmg4usYlcc2W/sKniGOYSqJaDe45f8nciO+4BnKZOIK7dcqJIjYOe8Zarr2cNv9P4vk2jCLmRlg2n7uW2tmmhv35ZZoqpLbi3VGyABTEUki4shURZKI6qm4NVWJKQYRQFKMMYocGn6V4vbd344ZmuI8z3NMstdZiXgiZmYmaJrneV6SHKwt6sSGkskflSdm2dpxgZhhEpeyyprOtRsfTOI8x5j02OSwTG6VHdO0xGWJBZVVnblRnUlKS4xSUFkfIeTwkRSTlFTWIt4ABUwJJiLFjni1uQLbSNVj5K3uVOwFERMAKzfha7w/oeysoQy27rasebL2rq7ZRq7fqHXIkCFDfqT8B3SvgewCV1AkAAAAA
ElFTkSuQmCC"
+ preserveAspectRatio="none"
+ style="image-rendering:optimizeSpeed"
+ height="1"
+ width="1" /></mask></defs><g
+ transform="matrix(1.3333333,0,0,-1.3333333,0,720)"
+ id="g10"><g
+ id="g12"><g
+ clip-path="url(#clipPath18)"
+ id="g14"><path
+ id="path20"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="M 0,6.104e-6 H 720 V 540.00001 H 0 Z" /></g></g><path
+ id="path22"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 367.71,188.53 h 262.2 v 207.72 h -262.2 z" /><path
+ id="path24"
+ style="fill:none;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ d="m 367.71,188.53 h 262.2 v 207.72 h -262.2 z" /><text
+ id="text28"
+ style="font-variant:normal;font-weight:normal;font-size:18px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ transform="matrix(1,0,0,-1,446.62,377.76)"><tspan
+ id="tspan26"
+ y="0"
+ x="0 11.07 20.285999 31.356001 40.716 44.981998 53.604 63.054001">DPDK app</tspan></text>
+<path
+ id="path30"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="M 382.72,289.31 H 488.4 v 33.512 H 382.72 Z" /><path
+ id="path32"
+ style="fill:none;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ d="M 382.72,289.31 H 488.4 v 33.512 H 382.72 Z" /><text
+ id="text36"
+ style="font-variant:normal;font-weight:normal;font-size:14.03999996px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ transform="matrix(1,0,0,-1,405.12,301.34)"><tspan
+ id="tspan34"
+ y="0"
+ x="0">v</tspan></text>
+<text
+ id="text40"
+ style="font-variant:normal;font-weight:normal;font-size:14.03999996px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ transform="matrix(1,0,0,-1,411.48,301.34)"><tspan
+ id="tspan38"
+ y="0"
+ x="0 3.2291999 8.1291599 12.83256 16.06176 23.50296 26.619841 33.822361 45.826561">irtio PMD</tspan></text>
+<path
+ id="path42"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 382.72,329.23 h 226.19 v 35.725 H 382.72 Z" /><path
+ id="path44"
+ style="fill:none;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ d="m 382.72,329.23 h 226.19 v 35.725 H 382.72 Z" /><text
+ id="text48"
+ style="font-variant:normal;font-weight:normal;font-size:14.03999996px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ transform="matrix(1,0,0,-1,472.94,342.38)"><tspan
+ id="tspan46"
+ y="0"
+ x="0 6.8515201 13.689 22.435921 31.07052 37.922039">ETHDEV</tspan></text>
+<g
+ id="g50"><g
+ clip-path="url(#clipPath56)"
+ id="g52"><g
+ transform="matrix(112.44,0,0,86.76,379.32,196.92)"
+ id="g58"><image
+ id="image64"
+ mask="url(#mask60)"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAATgAAADxCAYAAABf76uiAAAABHNCSVQICAgIfAhkiAAAAy5JREFUeJzt1EENACAQwLAD/55BBSFZWgV7bc3MGYCg/TsA4BWDA7IMDsgyOCDL4IAsgwOyDA7IMjggy+CALIMDsgwOyDI4IMvggCyDA7IMDsgyOCDL4IAsgwOyDA7IMjggy+CALIMDsgwOyDI4IMvggCyDA7IMDsgyOCDL4IAsgwOyDA7IMjggy+CALIMDsgwOyDI4IMvggCyDA7IMDsgyOCDL4IAsgwOyDA7IMjggy+CALIMDsgwOyDI4IMvggCyDA7IMDsgyOCDL4IAsgwOyDA7IMjggy+CALIMDsgwOyDI4IMvggCyDA7IMDsgyOCDL4IAsgwOyDA7IMjggy+CALIMDsgwOyDI4IMvggCyDA7IMDsgyOCDL4IAsgwOyDA7IMjggy+CALIMDsgwOyDI4IMvggCyDA7IMDsgyOCDL4IAsgwOyDA7IMjggy+CALIMDsgwOyDI4IMvggCyDA7IMDsgyOCDL4IAsgwOyDA7IMjggy+CALIMDsgwOyDI4IMvggCyDA7IMDsgyOCDL4IAsgwOyDA7IMjggy+CALIMDsgwOyDI4IMvggCyDA7IMDsgyOCDL4IAsgwOyDA7IMjggy+CALIMDsgwOyDI4IMvggCyDA7IMDsgyOCDL4IAsgwOyDA7IMjggy+CALIMDsgwOyDI4IMvggCyDA7IMDsgy
OCDL4IAsgwOyDA7IMjggy+CALIMDsgwOyDI4IMvggCyDA7IMDsgyOCDL4IAsgwOyDA7IMjggy+CALIMDsgwOyDI4IMvggCyDA7IMDsgyOCDL4IAsgwOyDA7IMjggy+CALIMDsgwOyDI4IMvggCyDA7IMDsgyOCDL4IAsgwOyDA7IMjggy+CALIMDsgwOyDI4IMvggC
yDA7IMDsgyOCDL4IAsgwOyDA7IMjggy+CALIMDsgwOyDI4IMvggCyDA7IMDsgyOCDL4IAsgwOyDA7IMjggy+CALIMDsgwOyDI4IMvggCyDA7IMDsgyOCDL4IAsgwOyDA7IMjggy+CALIMDsgwOyDI4IMvggCyDA7IMDsgyOCDL4IAsgwOyDA7IMjggy+CALIMDsgwOyDI4IOsCPooC4e92qzkAAAAASUVORK5CYII="
+ transform="matrix(1,0,0,-1,0,1)"
+ preserveAspectRatio="none"
+ style="image-rendering:optimizeSpeed"
+ height="1"
+ width="1" /></g></g></g><g
+ id="g66"><g
+ clip-path="url(#clipPath72)"
+ id="g68"><g
+ transform="matrix(103.44,0,0,52.44,387.48,212.76)"
+ id="g74"><image
+ id="image80"
+ mask="url(#mask76)"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAR8AAACSCAYAAAB8Ds7/AAAABHNCSVQICAgIfAhkiAAAAeZJREFUeJzt1DEBACAMwLCBf8/ggh4kCnp1zcwZgMd2HQD8yXyAhPkACfMBEuYDJMwHSJgPkDAfIGE+QMJ8gIT5AAnzARLmAyTMB0iYD5AwHyBhPkDCfICE+QAJ8wES5gMkzAdImA+QMB8gYT5AwnyAhPkACfMBEuYDJMwHSJgPkDAfIGE+QMJ8gIT5AAnzARLmAyTMB0iYD5AwHyBhPkDCfICE+QAJ8wES5gMkzAdImA+QMB8gYT5AwnyAhPkACfMBEuYDJMwHSJgPkDAfIGE+QMJ8gIT5AAnzARLmAyTMB0iYD5AwHyBhPkDCfICE+QAJ8wES5gMkzAdImA+QMB8gYT5AwnyAhPkACfMBEuYDJMwHSJgPkDAfIGE+QMJ8gIT5AAnzARLmAyTMB0iYD5AwHyBhPkDCfICE+QAJ8wES5gMkzAdImA+QMB8gYT5AwnyAhPkACfMBEuYDJMwHSJgPkDAfIGE+QMJ8gIT5AAnzARLmAyTMB0iYD5AwHyBhPkDCfICE+QAJ8wES5gMkzAdImA+QMB8gYT5AwnyAhPkACfMBEuYDJMwHSJgPkDAfIGE+QMJ8gIT5AAnzARLmAyTMB0iYD5AwHyBhPkDCfICE+QAJ8wES5gMkzAdImA+QMB8gYT5A4gI6gwIjTtkfJQAAAABJRU5ErkJggg=="
+ transform="matrix(1,0,0,-1,0,1)"
+ preserveAspectRatio="none"
+ style="image-rendering:optimizeSpeed"
+ height="1"
+ width="1" /></g></g></g><path
+ id="path82"
+ style="fill:#9bbb59;fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="M 382.72,201.86 H 488.4 v 79.973 H 382.72 Z" /><text
+ id="text86"
+ style="font-variant:normal;font-weight:normal;font-size:15.98400021px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ transform="matrix(1,0,0,-1,400.56,243.58)"><tspan
+ id="tspan84"
+ y="0"
+ x="0 7.2247682 10.901088 16.479504 21.834145 25.542433 33.966 41.862095 50.253696 56.503441 64.46347">virtio_user</tspan></text>
+<path
+ id="path88"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 388.2,205.78 h 94.2 v 29.411 h -94.2 z" /><text
+ id="text92"
+ style="font-variant:normal;font-weight:normal;font-size:11.03999996px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ transform="matrix(1,0,0,-1,404.38,216.7)"><tspan
+ id="tspan90"
+ y="0"
+ x="0">v</tspan></text>
+<text
+ id="text96"
+ style="font-variant:normal;font-weight:normal;font-size:11.03999996px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ transform="matrix(1,0,0,-1,409.42,216.7)"><tspan
+ id="tspan94"
+ y="0"
+ x="0 5.7628798 11.63616 15.9528">host</tspan></text>
+<text
+ id="text100"
+ style="font-variant:normal;font-weight:normal;font-size:11.03999996px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ transform="matrix(1,0,0,-1,431.26,216.7)"><tspan
+ id="tspan98"
+ y="0"
+ x="0 5.2881598 11.04 16.328159 22.08 25.7784 31.309441">adapter</tspan></text>
+<g
+ id="g102"><path
+ id="path104"
+ style="fill:none;stroke:#000000;stroke-width:2.25;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:9, 6.75;stroke-dashoffset:0;stroke-opacity:1"
+ d="M 303,450 V 115.49" /></g><text
+ id="text108"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-size:18px;font-family:Calibri;-inkscape-font-specification:'Calibri Italic';writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ transform="matrix(1,0,0,-1,322.37,422.09)"><tspan
+ id="tspan106"
+ y="0"
+ x="0 11.556 18.486 27.09 33.264 37.332001 44.334 53.532001 62.784 70.092003">User space</tspan></text>
+<text
+ id="text112"
+ style="font-style:italic;font-variant:normal;font-weight:normal;font-size:18px;font-family:Calibri;-inkscape-font-specification:'Calibri Italic';writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ transform="matrix(1,0,0,-1,192.82,422.09)"><tspan
+ id="tspan110"
+ y="0"
+ x="0 9 17.604 23.778 33.029999 41.633999 45.720001 49.896 56.897999 66.096001 75.348 82.655998">Kernel space</tspan></text>
+<path
+ id="path114"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 108,136.61 h 96.243 v 35.725 H 108 Z" /><path
+ id="path116"
+ style="fill:none;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ d="m 108,136.61 h 96.243 v 35.725 H 108 Z" /><text
+ id="text120"
+ style="font-variant:normal;font-weight:normal;font-size:14.03999996px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ transform="matrix(1,0,0,-1,128.95,149.71)"><tspan
+ id="tspan118"
+ y="0"
+ x="0">v</tspan></text>
+<text
+ id="text124"
+ style="font-variant:normal;font-weight:normal;font-size:14.03999996px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ transform="matrix(1,0,0,-1,135.31,149.71)"><tspan
+ id="tspan122"
+ y="0"
+ x="0 7.3148398 14.71392 20.16144">host</tspan></text>
+<text
+ id="text128"
+ style="font-variant:normal;font-weight:normal;font-size:14.03999996px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ transform="matrix(1,0,0,-1,160.15,149.71)"><tspan
+ id="tspan126"
+ y="0"
+ x="0">-</tspan></text>
+<text
+ id="text132"
+ style="font-variant:normal;font-weight:normal;font-size:14.03999996px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ transform="matrix(1,0,0,-1,164.47,149.71)"><tspan
+ id="tspan130"
+ y="0"
+ x="0 7.3148398 14.15232">net</tspan></text>
+<path
+ id="path134"
+ style="fill:none;stroke:#4a7ebb;stroke-width:2;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ d="m 204.24,154.47 h 231.32 v 47.39" /><text
+ id="text138"
+ style="font-variant:normal;font-weight:normal;font-size:12.02400017px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#31859c;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ transform="matrix(1,0,0,-1,201.72,345.29)"><tspan
+ id="tspan136"
+ y="0"
+ x="0 6.8176079 13.190328 19.526976 24.10812">Vhost</tspan></text>
+<text
+ id="text142"
+ style="font-variant:normal;font-weight:normal;font-size:12.02400017px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#31859c;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ transform="matrix(1,0,0,-1,232.44,345.29)"><tspan
+ id="tspan140"
+ y="0"
+ x="0 5.3987761 9.4628878 15.81156 19.887695 25.875648 31.635143">kthread</tspan></text>
+<g
+ id="g144"><g
+ clip-path="url(#clipPath150)"
+ id="g146"><g
+ transform="matrix(197.28,0,0,19.08,194.88,294.6)"
+ id="g152"><image
+ id="image158"
+ mask="url(#mask154)"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAiQAAAA1CAYAAABx5vBnAAAABHNCSVQICAgIfAhkiAAAAPxJREFUeJzt1jEBACAAw7CBf88go0+ioGfPtjcAgNCtAwAADAkAkDMkAEDOkAAAOUMCAOQMCQCQMyQAQM6QAAA5QwIA5AwJAJAzJABAzpAAADlDAgDkDAkAkDMkAEDOkAAAOUMCAOQMCQCQMyQAQM6QAAA5QwIA5AwJAJAzJABAzpAAADlDAgDkDAkAkDMkAEDOkAAAOUMCAOQMCQCQMyQAQM6QAAA5QwIA5AwJAJAzJABAzpAAADlDAgDkDAkAkDMkAEDOkAAAOUMCAOQMCQCQMyQAQM6QAAA5QwIA5AwJAJAzJABAzpAAADlDAgDkDAkAkDMkAEDOkAAAuQ8gKQFpLMZ6HgAAAABJRU5ErkJggg=="
+ transform="matrix(1,0,0,-1,0,1)"
+ preserveAspectRatio="none"
+ style="image-rendering:optimizeSpeed"
+ height="1"
+ width="1" /></g></g></g><path
+ id="path160"
+ style="fill:#404040;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ d="m 209.24,305.28 168.48,0.28 v 1 l -168.48,-0.28 z m 1,3.5 -6,-3.01 6.01,-2.99 z m 166.49,-5.72 5.99,3.01 -6,2.99 z" /><path
+ id="path162"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 108,287.91 h 96.243 v 35.725 H 108 Z" /><path
+ id="path164"
+ style="fill:none;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ d="m 108,287.91 h 96.243 v 35.725 H 108 Z" /><text
+ id="text168"
+ style="font-variant:normal;font-weight:normal;font-size:14.03999996px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ transform="matrix(1,0,0,-1,146.83,301.03)"><tspan
+ id="tspan166"
+ y="0"
+ x="0 4.5630002 11.28816">tap</tspan></text>
+<text
+ id="text172"
+ style="font-style:italic;font-variant:normal;font-weight:bold;font-size:12px;font-family:Calibri;-inkscape-font-specification:'Calibri, BoldItalic';writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ transform="matrix(1,0,0,-1,333.86,163.13)"><tspan
+ id="tspan170"
+ y="0"
+ x="0">c</tspan></text>
+<text
+ id="text176"
+ style="font-style:italic;font-variant:normal;font-weight:bold;font-size:12px;font-family:Calibri;-inkscape-font-specification:'Calibri, BoldItalic';writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ transform="matrix(1,0,0,-1,338.66,163.13)"><tspan
+ id="tspan174"
+ y="0"
+ x="0 6.348 12.588 16.752001 20.976 27.336 30.323999 33.192001 39.528 45.900002 50.063999">ontrol path</tspan></text>
+<text
+ id="text180"
+ style="font-style:italic;font-variant:normal;font-weight:bold;font-size:12px;font-family:Calibri;-inkscape-font-specification:'Calibri, BoldItalic';writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ transform="matrix(1,0,0,-1,226.66,324.41)"><tspan
+ id="tspan178"
+ y="0"
+ x="0 6.336 12.708 16.788 23.124001 25.788 32.124001 38.495998 42.66">data path</tspan></text>
+<path
+ id="path182"
+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 503.23,289.11 h 105.68 v 33.512 H 503.23 Z" /><path
+ id="path184"
+ style="fill:none;stroke:#000000;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ d="m 503.23,289.11 h 105.68 v 33.512 H 503.23 Z" /><text
+ id="text188"
+ style="font-variant:normal;font-weight:normal;font-size:14.03999996px;font-family:Calibri;-inkscape-font-specification:Calibri;writing-mode:lr-tb;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ transform="matrix(1,0,0,-1,522.17,301.13)"><tspan
+ id="tspan186"
+ y="0"
+ x="0 7.3990798 12.10248 19.47348 26.395201 31.29516 34.468201 41.628601 53.632801 62.267399">other PMDs</tspan></text>
+<g
+ id="g190"><path
+ id="path208"
+ style="fill:url(#linearGradient206);fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 533.57,151.61 v -32.52 h 30.9 v -7.18 h 16.72 v 7.18 h 8.64 v 32.52 z" /></g><path
+ id="path210"
+ style="fill:none;stroke:#4bacc6;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
+ d="m 533.57,151.61 v -32.52 h 30.9 v -7.18 h 16.72 v 7.18 h 8.64 v 32.52 z" /><g
+ id="g212"><path
+ id="path230"
+ style="fill:url(#linearGradient228);fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 569.96,111.97 h 1.1414 v 3.0749 H 569.96 Z" /></g><g
+ id="g232"><path
+ id="path250"
+ style="fill:url(#linearGradient248);fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 571.11,115.05 v -3.08 h -1.15 v 3.08" /></g><g
+ id="g252"><path
+ id="path270"
+ style="fill:url(#linearGradient268);fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 572.1,111.97 h 1.1414 v 3.0749 H 572.1 Z" /></g><g
+ id="g272"><path
+ id="path290"
+ style="fill:url(#linearGradient288);fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 573.24,115.05 v -3.08 h -1.14 v 3.08" /></g><g
+ id="g292"><path
+ id="path310"
+ style="fill:url(#linearGradient308);fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 565.61,111.97 h 1.1414 v 3.0749 H 565.61 Z" /></g><g
+ id="g312"><path
+ id="path330"
+ style="fill:url(#linearGradient328);fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 566.75,115.05 v -3.08 h -1.14 v 3.08" /></g><g
+ id="g332"><path
+ id="path350"
+ style="fill:url(#linearGradient348);fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 567.77,111.97 h 1.1414 v 3.0749 H 567.77 Z" /></g><g
+ id="g352"><path
+ id="path370"
+ style="fill:url(#linearGradient368);fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 568.91,115.05 v -3.08 h -1.14 v 3.08" /></g><g
+ id="g372"><path
+ id="path390"
+ style="fill:url(#linearGradient388);fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 574.3,111.97 h 1.1414 v 3.0749 H 574.3 Z" /></g><g
+ id="g392"><path
+ id="path410"
+ style="fill:url(#linearGradient408);fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 575.44,115.05 v -3.08 h -1.14 v 3.08" /></g><g
+ id="g412"><path
+ id="path430"
+ style="fill:url(#linearGradient428);fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 576.5,111.97 h 1.1414 v 3.0749 H 576.5 Z" /></g><g
+ id="g432"><path
+ id="path450"
+ style="fill:url(#linearGradient448);fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 577.64,115.05 v -3.08 h -1.14 v 3.08" /></g><g
+ id="g452"><path
+ id="path470"
+ style="fill:url(#linearGradient468);fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 578.65,111.97 h 1.1414 v 3.0749 H 578.65 Z" /></g><g
+ id="g472"><path
+ id="path490"
+ style="fill:url(#linearGradient488);fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 579.79,115.05 v -3.08 h -1.14 v 3.08" /></g><g
+ id="g492"><path
+ id="path500"
+ style="fill:url(#linearGradient498);fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 568.55,145.06 h 1.1625 v 2.2728 H 568.55 Z" /></g><g
+ id="g502"><path
+ id="path510"
+ style="fill:url(#linearGradient508);fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 570.75,145.06 h 1.1625 v 2.2728 H 570.75 Z" /></g><g
+ id="g512"><path
+ id="path520"
+ style="fill:url(#linearGradient518);fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 572.9,145.06 h 1.1414 v 2.2728 H 572.9 Z" /></g><g
+ id="g522"><path
+ id="path530"
+ style="fill:url(#linearGradient528);fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 575.1,145.06 h 1.1414 v 2.2728 H 575.1 Z" /></g><g
+ id="g532"><path
+ id="path540"
+ style="fill:url(#linearGradient538);fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 577.24,145.06 h 1.1625 v 2.2728 H 577.24 Z" /></g><g
+ id="g542"><path
+ id="path550"
+ style="fill:url(#linearGradient548);fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 568.55,122.7 h 1.1625 v 2.3062 H 568.55 Z" /></g><g
+ id="g552"><path
+ id="path560"
+ style="fill:url(#linearGradient558);fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 570.75,122.7 h 1.1625 v 2.3062 H 570.75 Z" /></g><g
+ id="g562"><path
+ id="path570"
+ style="fill:url(#linearGradient568);fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 572.9,122.7 h 1.1414 v 2.3062 H 572.9 Z" /></g><g
+ id="g572"><path
+ id="path580"
+ style="fill:url(#linearGradient578);fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 575.1,122.7 h 1.1414 v 2.3062 H 575.1 Z" /></g><g
+ id="g582"><path
+ id="path590"
+ style="fill:url(#linearGradient588);fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 577.24,122.7 h 1.1625 v 2.3062 H 577.24 Z" /></g><g
+ id="g592"><path
+ id="path600"
+ style="fill:url(#linearGradient598);fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 579.75,127.21 h 1.4373 v 1.8048 H 579.75 Z" /></g><g
+ id="g602"><path
+ id="path610"
+ style="fill:url(#linearGradient608);fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 579.75,130.69 h 1.4373 v 1.8048 H 579.75 Z" /></g><g
+ id="g612"><path
+ id="path620"
+ style="fill:url(#linearGradient618);fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 579.75,134.1 h 1.4373 v 1.8048 H 579.75 Z" /></g><g
+ id="g622"><path
+ id="path630"
+ style="fill:url(#linearGradient628);fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 579.75,137.57 h 1.4373 v 1.8048 H 579.75 Z" /></g><g
+ id="g632"><path
+ id="path640"
+ style="fill:url(#linearGradient638);fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 579.75,140.95 h 1.4373 v 1.8048 H 579.75 Z" /></g><g
+ id="g642"><path
+ id="path650"
+ style="fill:url(#linearGradient648);fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 565.61,127.21 h 1.5007 v 1.8048 H 565.61 Z" /></g><g
+ id="g652"><path
+ id="path660"
+ style="fill:url(#linearGradient658);fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 565.61,130.69 h 1.5007 v 1.8048 H 565.61 Z" /></g><g
+ id="g662"><path
+ id="path670"
+ style="fill:url(#linearGradient668);fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 565.61,134.1 h 1.5007 v 1.8048 H 565.61 Z" /></g><g
+ id="g672"><path
+ id="path680"
+ style="fill:url(#linearGradient678);fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 565.61,137.57 h 1.5007 v 1.8048 H 565.61 Z" /></g><g
+ id="g682"><path
+ id="path690"
+ style="fill:url(#linearGradient688);fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 565.61,140.95 h 1.5007 v 1.8048 H 565.61 Z" /></g><path
+ id="path692"
+ style="fill:#1e1f1f;fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 567.07,125.01 h 12.682 v 20.054 H 567.07 Z" /><path
+ id="path694"
+ style="fill:#1e1f1f;fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 553.84,139.68 h 8.0742 v 4.8129 H 553.84 Z" /><path
+ id="path696"
+ style="fill:#1e1f1f;fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 553.84,132.83 h 8.0742 v 4.8798 H 553.84 Z" /><path
+ id="path698"
+ style="fill:#1e1f1f;fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 553.84,126.34 h 8.0742 v 4.9131 H 553.84 Z" /><path
+ id="path700"
+ style="fill:#1e1f1f;fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 585.33,141.89 h 3.2551 v 4.8463 H 585.33 Z" /><path
+ id="path702"
+ style="fill:#1e1f1f;fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 585.33,135.84 h 3.2551 v 4.8129 H 585.33 Z" /><path
+ id="path704"
+ style="fill:#1e1f1f;fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 585.33,129.75 h 3.2551 v 4.8129 H 585.33 Z" /><path
+ id="path706"
+ style="fill:#1e1f1f;fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 585.37,123.67 h 3.2128 v 4.8129 H 585.37 Z" /><path
+ id="path708"
+ style="fill:#1e1f1f;fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 544.83,139.68 h 8.0953 v 4.8129 H 544.83 Z" /><path
+ id="path710"
+ style="fill:#1e1f1f;fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 544.83,132.83 h 8.0953 v 4.8798 H 544.83 Z" /><path
+ id="path712"
+ style="fill:#1e1f1f;fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 544.83,126.34 h 8.0953 v 4.9131 H 544.83 Z" /><g
+ id="g714"><path
+ id="path722"
+ style="fill:url(#linearGradient720);fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 535.76,139.68 h 8.0742 v 4.8129 H 535.76 Z" /></g><g
+ id="g724"><path
+ id="path732"
+ style="fill:url(#linearGradient730);fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 535.76,132.83 h 8.0742 v 4.8798 H 535.76 Z" /></g><g
+ id="g734"><path
+ id="path742"
+ style="fill:url(#linearGradient740);fill-opacity:1;fill-rule:evenodd;stroke:none"
+ d="m 535.76,126.34 h 8.0742 v 4.9131 H 535.76 Z" /></g><g
+ id="g744"><g
+ clip-path="url(#clipPath750)"
+ id="g746"><g
+ transform="matrix(20.52,0,0,151.56,546.72,145.08)"
+ id="g752"><image
+ id="image758"
+ mask="url(#mask754)"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADkAAAGlCAYAAABAy14JAAAABHNCSVQICAgIfAhkiAAAAeFJREFUeJztzwENACEQwLDj/XsGF3xSVgXbmpk9uO/vgBuaVDSpaFLRpKJJRZOKJhVNKppUNKloUtGkoklFk4omFU0qmlQ0qWhS0aSiSUWTiiYVTSqaVDSpaFLRpKJJRZOKJhVNKppUNKloUtGkoklFk4omFU0qmlQ0qWhS0aSiSUWTiiYVTSqaVDSpaFLRpKJJRZOKJhVNKppUNKloUtGkoklFk4omFU0qmlQ0qWhS0aSiSUWTiiYVTSqaVDSpaFLRpKJJRZOKJhVNKppUNKloUtGkoklFk4omFU0qmlQ0qWhS0aSiSUWTiiYVTSqaVDSpaFLRpKJJRZOKJhVNKppUNKloUtGkoklFk4omFU0qmlQ0qWhS0aSiSUWTiiYVTSqaVDSpaFLRpKJJRZOKJhVNKppUNKloUtGkoklFk4omFU0qmlQ0qWhS0aSiSUWTiiYVTSqaVDSpaFLRpKJJRZOKJhVNKppUNKloUtGkoklFk4omFU0qmlQ0qWhS0aSiSUWTiiYVTSqaVDSpaFLRpKJJRZOKJhVNKppUNKloUtGkoklFk4omFU0qmlQ0qWhS0aSiSUWTiiYVTSqaVDSpaFLRpKJJRZOKJhVNKppUNKloUtGkoklFk4omFU0qmlQ8MXkAIv0ESS94HpcAAAAASUVORK5CYII="
+ transform="matrix(1,0,0,-1,0,1)"
+ preserveAspectRatio="none"
+ style="image-rendering:optimizeSpeed"
+ height="1"
+ width="1" /></g></g></g><path
+ id="path760"
+ style="fill:#404040;fill-opacity:1;fill-rule:nonzero;stroke:none"
+ d="m 557.31,161.27 -1.67,122.83 1,0.02 1.67,-122.84 z m 3.48,1.05 -2.92,-6.04 -3.08,5.95 z m -7.64,120.75 2.92,6.04 3.08,-5.96 z" /></g></svg>
\ No newline at end of file
diff --git a/doc/guides/howto/index.rst b/doc/guides/howto/index.rst
index db4016a..737d0f9 100644
--- a/doc/guides/howto/index.rst
+++ b/doc/guides/howto/index.rst
@@ -40,3 +40,4 @@ HowTo Guides
flow_bifurcation
pvp_reference_benchmark
virtio_user_for_container_networking
+ virtio_user_as_exceptional_path
diff --git a/doc/guides/howto/virtio_user_as_exceptional_path.rst b/doc/guides/howto/virtio_user_as_exceptional_path.rst
new file mode 100644
index 0000000..9c1ca89
--- /dev/null
+++ b/doc/guides/howto/virtio_user_as_exceptional_path.rst
@@ -0,0 +1,142 @@
+.. BSD LICENSE
+ Copyright(c) 2016 Intel Corporation. All rights reserved.
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ * Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in
+ the documentation and/or other materials provided with the
+ distribution.
+ * Neither the name of Intel Corporation nor the names of its
+ contributors may be used to endorse or promote products derived
+ from this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+.. _virtio_user_as_excpetional_path:
+
+Virtio_user as Exceptional Path
+===============================
+
+The virtual device, virtio_user, was originally introduced with vhost-user
+backend, as a high performance solution for IPC (Inter-Process Communication)
+and user space container networking.
+
+Virtio_user with vhost-kernel backend is a solution for exceptional path,
+such as KNI which exchanges packets with kernel networking stack. This
+solution is very promising in:
+
+* Maintenance
+
+ All kernel modules needed by this solution, vhost and vhost-net (kernel),
+ are upstreamed and extensively used kernel module.
+
+* Features
+
+ vhost-net is born to be a networking solution, which has lots of networking
+ related featuers, like multi queue, tso, multi-seg mbuf, etc.
+
+* Performance
+
+ similar to KNI, this solution would use one or more kthreads to
+ send/receive packets from user space DPDK applications, which has little
+ impact on user space polling thread (except that it might enter into kernel
+ space to wake up those kthreads if necessary).
+
+The overview of an application using virtio_user as exceptional path is shown
+in :numref:`figure_virtio_user_as_exceptional_path`.
+
+.. _figure_virtio_user_as_exceptional_path:
+
+.. figure:: img/virtio_user_as_exceptional_path.*
+
+ Overview of a DPDK app using virtio_user as excpetional path
+
+
+Sample Usage
+------------
+
+As a prerequisite, the vhost/vhost-net kernel CONFIG should be chosen before
+compiling the kernel and those kernel modules should be inserted.
+
+#. Compile DPDK and bind a physical NIC to igb_uio/uio_pci_generic/vfio-pci.
+
+ This physical NIC is for communicating with outside.
+
+#. Run testpmd.
+
+ .. code-block:: console
+
+ $(testpmd) -c 0xc -n 4 \
+ --vdev=virtio_user0,path=/dev/vhost-net,queue_size=1024 \
+ -- -i --txqflags=0x0 --disable-hw-vlan --enable-lro --crc-strip
+ --enable-rx-cksum --rxd=1024 --txd=1024
+
+ This command runs testpmd with two ports, one physical NIC to communicate
+ with outside, and one virtio_user to communicate with kernel.
+
+* ``--enable-lro``
+
+ This is used to negotiate VIRTIO_NET_F_GUEST_TSO4 and
+ VIRTIO_NET_F_GUEST_TSO6 feature so that large packets from kernel can be
+ transmitted DPDK application and further TSOed by physical NIC.
+
+* ``--enable-rx-cksum``
+
+ This is used to negotiate VIRTIO_NET_F_GUEST_CSUM so that packets from
+ kernel can be deemed as valid Rx checksumed.
+
+* ``queue_size``
+
+ 256 by default. To avoid shortage of descriptors, we can increase it to 1024.
+
+* ``queues``
+
+ Number of multi-queues. Each qeueue will be served by a kthread. For example:
+
+ .. code-block:: console
+
+ $(testpmd) -c 0xc -n 4 \
+ --vdev=virtio_user0,path=/dev/vhost-net,queues=2,queue_size=1024 \
+ -- -i --txqflags=0x0 --disable-hw-vlan --enable-lro \
+ --crc-strip --enable-rx-cksum --txq=2 --rxq=2 --rxd=1024 \
+ --txd=1024
+
+#. Start testpmd:
+
+ .. code-block:: console
+
+ (testpmd) start
+
+#. Configure IP address and start tap:
+
+ .. code-block:: console
+
+ ifconfig tap0 1.1.1.1/24 up
+
+.. note::
+
+ The tap device will be named tap0, tap1, etc, by kernel.
+
+Then, all traffic from physical NIC can be forwarded into kernel stack, and all
+traffic on the tap0 can be sent out from physical NIC.
+
+Limitations
+-----------
+
+This solution is only available on Linux systems.
--
2.7.4
next prev parent reply other threads:[~2017-01-24 7:33 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-01-24 7:34 [PATCH 0/3] doc upates Jianfeng Tan
2017-01-24 7:34 ` [PATCH 1/3] doc: add guide to use virtio_user for container networking Jianfeng Tan
2017-01-24 7:34 ` Jianfeng Tan [this message]
2017-01-24 7:34 ` [PATCH 3/3] doc: remove ABI changes in igb_uio Jianfeng Tan
2017-01-24 13:35 ` Ferruh Yigit
2017-01-30 17:52 ` Thomas Monjalon
2017-02-01 7:24 ` Tan, Jianfeng
2017-02-09 14:45 ` [PATCH 0/3] doc upates Thomas Monjalon
2017-02-09 16:06 ` [PATCH v2 " Jianfeng Tan
2017-02-09 16:06 ` [PATCH v2 1/3] doc: add guide to use virtio_user for container networking Jianfeng Tan
2017-02-09 16:06 ` [PATCH v2 2/3] doc: add guide to use virtio_user as exceptional path Jianfeng Tan
2017-02-09 16:06 ` [PATCH v2 3/3] doc: postpone ABI changes in igb_uio Jianfeng Tan
2017-02-09 17:40 ` Ferruh Yigit
2017-02-10 10:44 ` Thomas Monjalon
2017-02-10 11:20 ` Tan, Jianfeng
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1485243248-27082-3-git-send-email-jianfeng.tan@intel.com \
--to=jianfeng.tan@intel.com \
--cc=dev@dpdk.org \
--cc=john.mcnamara@intel.com \
--cc=stephen@networkplumber.org \
--cc=yuanhan.liu@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.