Signed-off-by: Jianfeng Tan <jianfeng....@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+ccZDjIcZDjIcJDhIMNBhoMMBxkOMhxkOMhwkOEgw0GGgwwHGQ4yHGQ4yHCQ4SDDQYaDDAcZDjIcZDjIcJDhIMNBhoMMBxkOMhxkOMhwkOEgw0GGgwwHGQ4yHGQ4yHCQ4SDDQYaDDAcZDjIcZDjIcJDhIMNBhoMMBxkOMhxkOMhwkOEgw0GGgwwHGQ4yHGQ4yHCQ4SDDQYaDDAcZDjIcZDjIcJDhIMNBhoMMBxkOMhxkOMhwkOEgw0GGgwwHGQ4yHGQ4yHCQ4SDDQYaDDAcZDjIcZDjIcJDhIMNBhoMMBxkOMhxkOMhwkOEgw0GGgwwHGQ4yHGQ4yHCQ4SDDQYaDDAcZDjIcZDjIcJDhIMNBhoMMBxkOMhxkOMhwkOEgw0GGgwwHGQ4yHGQ4yHCQ4SDDQYaDDAcZDjIcZDjIcJDhIMNBhoMMBxkOMhxkOMhwkOEgw0GGgwwHGQ4yHGQ4yHCQ4SDDQYaDDAcZDjIcZDjIcJ 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+5LcGtvcR4iLWDvJV8b6uuPh3qj6Me2ZRB/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/oeysoQy27rasebL2rq7ZRq7fqHXIkCFDfqT8B3SvgewCV1AkAAAAAElFTkSuQmCC" + 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+CALIMDsgwOyDI4IMvggCyDA7IMDsgyOCDL4IAsgwOyDA7IMjggy+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