diff mbox

[dpdk-dev] Doc: Adding Distributor Sample Application to Sample App UG

Message ID 1417528966-4974-1-git-send-email-siobhan.a.butler@intel.com (mailing list archive)
State Accepted, archived
Headers show

Commit Message

Siobhan Butler Dec. 2, 2014, 2:02 p.m. UTC
New distributor sample app user guide section for sample app ug.

Signed-off-by: Siobhan Butler <siobhan.a.butler@intel.com>
---
 doc/guides/sample_app_ug/dist_app.rst      | 173 +++++++++++
 doc/guides/sample_app_ug/img/dist_app.svg  | 442 +++++++++++++++++++++++++++
 doc/guides/sample_app_ug/img/dist_perf.svg | 459 +++++++++++++++++++++++++++++
 doc/guides/sample_app_ug/index.rst         |   5 +
 4 files changed, 1079 insertions(+)
 create mode 100644 doc/guides/sample_app_ug/dist_app.rst
 create mode 100644 doc/guides/sample_app_ug/img/dist_app.svg
 create mode 100644 doc/guides/sample_app_ug/img/dist_perf.svg

Comments

Iremonger, Bernard Dec. 2, 2014, 4:08 p.m. UTC | #1
> -----Original Message-----

> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Siobhan Butler

> Sent: Tuesday, December 2, 2014 2:03 PM

> To: dev@dpdk.org

> Subject: [dpdk-dev] [PATCH] Doc: Adding Distributor Sample Application to Sample App UG

> 

> New distributor sample app user guide section for sample app ug.

> 

> Signed-off-by: Siobhan Butler <siobhan.a.butler@intel.com>


Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>


 I have applied the patch to my tree next/dpdk-doc.
diff mbox

Patch

diff --git a/doc/guides/sample_app_ug/dist_app.rst b/doc/guides/sample_app_ug/dist_app.rst
new file mode 100644
index 0000000..3064ff8
--- /dev/null
+++ b/doc/guides/sample_app_ug/dist_app.rst
@@ -0,0 +1,173 @@ 
+..  BSD LICENSE
+    Copyright(c) 2010-2014 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.
+
+Distributor Sample Application
+==============================
+
+The distributor sample application is a simple example of packet distribution
+to cores using the Data Plane Development Kit (DPDK).
+
+Overview
+--------
+
+The distributor application performs the distribution of packets that are received
+on an RX_PORT to different cores. When processed by the cores, the destination
+port of a packet is the port from the enabled port mask adjacent to the one on
+which the packet was received, that is, if the first four ports are enabled
+(port mask 0xf), ports 0 and 1 RX/TX into each other, and ports 2 and 3 RX/TX
+into each other.
+
+This application can be used to benchmark performance using the traffic
+generator as shown in the figure below.
+
+.. _figure_22:
+
+**Figure 22. Performance Benchmarking Setup (Basic Environment)**
+
+|dist_perf|
+
+Compiling the Application
+-------------------------
+
+#.  Go to the sample application directory:
+
+    ..  code-block:: console
+
+        export RTE_SDK=/path/to/rte_sdk
+        cd ${RTE_SDK}/examples/l3fwd-acl
+
+#.  Set the target (a default target is used if not specified). For example:
+
+    ..  code-block:: console
+
+        export RTE_TARGET=x86_64-native-linuxapp-gcc
+
+    See the DPDK Getting Started Guide for possible RTE_TARGET values.
+
+#.  Build the application:
+
+    ..  code-block:: console
+
+        make
+
+Running the Application
+-----------------------
+
+#. The application has a number of command line options:
+
+..  code-block:: console
+
+    ./build/distributor_app [EAL options] -- -p PORTMASK
+
+where,
+
+*   -p PORTMASK: Hexadecimal bitmask of ports to configure
+
+#. To run the application in linuxapp environment with 11 lcores, 4 ports,
+issue the command:
+
+..  code-block:: console
+
+     $ ./build/distributor_app -c 0x4003fe -n 4 -- -p f
+
+#. Refer to the DPDK Getting Started Guide for general information on running
+applications and the Environment Abstraction Layer (EAL) options.
+
+Explanation
+-----------
+
+The distributor application consists of three types of threads: a receive
+thread (lcore_rx()), a set of worker threads(locre_worker())
+and a transmit thread(lcore_tx()).How these threads work together is shown
+in Fig2 below. The main() function launches  threads of these three types.
+Each thread has a while loop which will be doing processing and which is
+terminated only upon SIGINT or ctrl+C. The receive and transmit threads
+communicate using a software ring (rte_ring structure).
+
+The receive thread receives the packets using rte_eth_rx_burst()and gives
+them to  the distributor (using rte_distributor_process() API) which will
+be called in context of the receive thread itself. The distributor distributes
+the packets to workers threads based on the tagging of the packet -
+indicated by the hash field in the mbuf. For IP traffic, this field is
+automatically filled by the NIC with the "usr" hash value for the packet,
+which works as a per-flow tag.
+
+More than one worker thread can exist as part of the application, and these
+worker threads do simple packet processing by requesting packets from
+the distributor, doing a simple XOR operation on the input port mbuf field
+(to indicate the output port which will be used later for packet transmission)
+and then finally returning the packets back to the distributor in the RX thread.
+
+Meanwhile, the receive thread will call the distributor api
+rte_distributor_returned_pkts() to get the packets processed, and will enqueue
+them to a ring for transfer to the TX thread for transmission on the output port.
+The transmit thread will dequeue the packets from the ring and transmit them on
+the output port specified in packet mbuf.
+
+Users who wish to terminate the running of the application have to press ctrl+C
+(or send SIGINT to the app). Upon this signal, a signal handler provided
+in the application will terminate all running threads gracefully and print
+final statistics to the user.
+
+.. _figure_23:
+
+**Figure 23.Distributor Sample Application Layout**
+
+|dist_app|
+
+Debug Logging Support
+---------------------
+
+Debug logging is provided as part of the application; the user needs to uncomment
+the line "#define DEBUG" defined in start of the application in main.c to enable debug logs.
+
+Statistics
+----------
+
+Upon SIGINT (or) ctrl+C, the print_stats() function displays the count of packets
+processed at the different stages in the application.
+
+Application Initialization
+--------------------------
+
+Command line parsing is done in the same way as it is done in the L2 Forwarding Sample
+Application. See Section 9.4.1, "Command Line Arguments".
+Mbuf pool initialization is done in the same way as it is done in the L2 Forwarding
+Sample Application. See Section 9.4.2, "Mbuf Pool Initialization".
+Driver Initialization is done in same way as it is done in the L2 Forwarding Sample
+Application. See Section 9.4.3, "Driver Initialization".
+RX queue initialization is done in the same way as it is done in the L2 Forwarding
+Sample Application. See Section 9.4.4, "RX Queue Initialization".
+TX queue initialization is done in the same way as it is done in the L2 Forwarding
+Sample Application. See Section 9.4.5, "TX Queue Initialization".
+
+.. |dist_perf| image:: img/dist_perf.svg
+
+.. |dist_app| image:: img/dist_app.svg
diff --git a/doc/guides/sample_app_ug/img/dist_app.svg b/doc/guides/sample_app_ug/img/dist_app.svg
new file mode 100644
index 0000000..3bb912b
--- /dev/null
+++ b/doc/guides/sample_app_ug/img/dist_app.svg
@@ -0,0 +1,442 @@ 
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="526.94379"
+   height="379.53668"
+   id="svg4090"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="New document 2">
+  <defs
+     id="defs4092">
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mend"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path10501"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4017"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4019"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4021"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4023"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4025"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4027"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4029"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4031"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4033"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4035"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path10498"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(0.4,0,0,0.4,4,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4039"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4041"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(0.4,0,0,0.4,4,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4043"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4045"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(0.4,0,0,0.4,4,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4047"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4049"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(0.4,0,0,0.4,4,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="339.92174"
+     inkscape:cy="120.32038"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1920"
+     inkscape:window-height="1017"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata4095">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-35.078263,-28.308125)">
+    <rect
+       style="fill:none;stroke:#000000;stroke-width:0.99999988;stroke-opacity:0.98412697"
+       id="rect10443"
+       width="152.9641"
+       height="266.92566"
+       x="122.95611"
+       y="34.642567" />
+    <rect
+       style="fill:none;stroke:#000000;stroke-width:1;stroke-opacity:0.98412697"
+       id="rect10445"
+       width="124.71397"
+       height="46.675529"
+       x="435.7746"
+       y="28.808125" />
+    <rect
+       style="fill:none;stroke:#000000;stroke-width:0.99999988;stroke-opacity:0.98412697"
+       id="rect10445-2"
+       width="124.71397"
+       height="46.675529"
+       x="435.42999"
+       y="103.92654" />
+    <rect
+       style="fill:none;stroke:#000000;stroke-width:0.99999988;stroke-opacity:0.98412697"
+       id="rect10445-0"
+       width="124.71397"
+       height="46.675529"
+       x="436.80811"
+       y="178.31572" />
+    <rect
+       style="fill:none;stroke:#000000;stroke-width:0.99999988;stroke-opacity:0.98412697"
+       id="rect10445-9"
+       width="124.71397"
+       height="46.675529"
+       x="436.80811"
+       y="246.87038" />
+    <rect
+       style="fill:none;stroke:#000000;stroke-width:0.99999988;stroke-opacity:0.98412697"
+       id="rect10445-7"
+       width="124.71397"
+       height="46.675529"
+       x="135.7057"
+       y="360.66928" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.99200004;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Mstart)"
+       d="M 277.293,44.129101 433.02373,43.388655"
+       id="path10486"
+       inkscape:connector-type="polyline"
+       inkscape:connector-curvature="3" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.99200004;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Mstart)"
+       d="m 277.83855,110.78109 155.73073,-0.74044"
+       id="path10486-2"
+       inkscape:connector-type="polyline"
+       inkscape:connector-curvature="3" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.99200004;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Mstart)"
+       d="m 278.48623,189.32721 155.73073,-0.74042"
+       id="path10486-1"
+       inkscape:connector-type="polyline"
+       inkscape:connector-curvature="3" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.99200004;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Mstart)"
+       d="m 278.48623,255.19448 155.73073,-0.74043"
+       id="path10486-4"
+       inkscape:connector-type="polyline"
+       inkscape:connector-curvature="3" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.99200004;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow1Mend)"
+       d="M 277.11852,66.041829 432.84924,65.301384"
+       id="path10486-0"
+       inkscape:connector-type="polyline"
+       inkscape:connector-curvature="3" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.99200004;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow1Mend)"
+       d="M 277.46746,136.71727 433.1982,135.97682"
+       id="path10486-0-4"
+       inkscape:connector-type="polyline"
+       inkscape:connector-curvature="3" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.99200004;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow1Mend)"
+       d="m 276.77843,210.37709 155.73073,-0.74044"
+       id="path10486-0-7"
+       inkscape:connector-type="polyline"
+       inkscape:connector-curvature="3" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.99200004;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow1Mend)"
+       d="M 277.46746,282.5783 433.1982,281.83785"
+       id="path10486-0-77"
+       inkscape:connector-type="polyline"
+       inkscape:connector-curvature="3" />
+    <text
+       xml:space="preserve"
+       style="font-size:9.32312489px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="348.03241"
+       y="34.792767"
+       id="text11995"
+       sodipodi:linespacing="125%"
+       transform="scale(0.93992342,1.0639165)"><tspan
+         sodipodi:role="line"
+         id="tspan11997"
+         x="348.03241"
+         y="34.792767">Request packet</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:9.32312489px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="349.51935"
+       y="74.044792"
+       id="text11995-7"
+       sodipodi:linespacing="125%"
+       transform="scale(0.93992342,1.0639165)"><tspan
+         sodipodi:role="line"
+         id="tspan11997-3"
+         x="349.51935"
+         y="74.044792">Mbuf pointer</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:9.32312489px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="504.26611"
+       y="52.165989"
+       id="text11995-7-3"
+       sodipodi:linespacing="125%"
+       transform="scale(0.93992342,1.0639165)"><tspan
+         sodipodi:role="line"
+         id="tspan11997-3-5"
+         x="504.26611"
+         y="52.165989">WorkerThread1</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:9.32312489px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="501.65793"
+       y="121.54361"
+       id="text11995-7-3-9"
+       sodipodi:linespacing="125%"
+       transform="scale(0.93992342,1.0639165)"><tspan
+         sodipodi:role="line"
+         id="tspan11997-3-5-9"
+         x="501.65793"
+         y="121.54361">WorkerThread2</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:9.32312489px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="499.45868"
+       y="191.46367"
+       id="text11995-7-3-8"
+       sodipodi:linespacing="125%"
+       transform="scale(0.93992342,1.0639165)"><tspan
+         sodipodi:role="line"
+         id="tspan11997-3-5-1"
+         x="499.45868"
+         y="191.46367">WorkerThread3</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:9.32312489px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="500.1918"
+       y="257.9563"
+       id="text11995-7-3-82"
+       sodipodi:linespacing="125%"
+       transform="scale(0.93992342,1.0639165)"><tspan
+         sodipodi:role="line"
+         id="tspan11997-3-5-6"
+         x="500.1918"
+         y="257.9563">WorkerThreadN</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:9.32312489px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="193.79703"
+       y="362.85193"
+       id="text11995-7-3-6"
+       sodipodi:linespacing="125%"
+       transform="scale(0.93992342,1.0639165)"><tspan
+         sodipodi:role="line"
+         id="tspan11997-3-5-0"
+         x="193.79703"
+         y="362.85193">TX thread</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:9.32312489px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="162.2476"
+       y="142.79382"
+       id="text11995-7-3-3"
+       sodipodi:linespacing="125%"
+       transform="scale(0.93992342,1.0639165)"><tspan
+         sodipodi:role="line"
+         id="tspan11997-3-5-8"
+         x="162.2476"
+         y="142.79382">RX thread &amp; Distributor</tspan></text>
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.75945646;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow1Mend)"
+       d="m 35.457991,109.77995 85.546359,-0.79004"
+       id="path10486-0-4-5"
+       inkscape:connector-type="polyline"
+       inkscape:connector-curvature="3" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.75945646;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow1Mend)"
+       d="m 135.70569,384.00706 -85.546361,0.79003"
+       id="path10486-0-4-5-7"
+       inkscape:connector-type="polyline"
+       inkscape:connector-curvature="3" />
+    <text
+       xml:space="preserve"
+       style="font-size:9.32312489px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="58.296661"
+       y="96.037407"
+       id="text11995-7-8"
+       sodipodi:linespacing="125%"
+       transform="scale(0.93992342,1.0639165)"><tspan
+         sodipodi:role="line"
+         id="tspan11997-3-3"
+         x="58.296661"
+         y="96.037407">Mbufs In</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:9.32312489px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="83.4814"
+       y="352.62543"
+       id="text11995-7-8-5"
+       sodipodi:linespacing="125%"
+       transform="scale(0.93992342,1.0639165)"><tspan
+         sodipodi:role="line"
+         id="tspan11997-3-3-1"
+         x="83.4814"
+         y="352.62543">Mbufs Out</tspan></text>
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1.05720723;stroke-miterlimit:3;stroke-opacity:0.98412697;stroke-dasharray:none"
+       d="m 171.68192,303.16236 0.21464,30.4719 -8.6322,0.40574 -11.33877,0.1956 25.75778,14.79103 23.25799,11.11792 18.87014,-7.32926 31.83305,-17.26495 -10.75831,-0.32986 -10.37586,-0.44324 -0.22443,-31.54093 z"
+       id="path12188"
+       inkscape:connector-curvature="0"
+       inkscape:transform-center-y="7.6863474"
+       sodipodi:nodetypes="cccccccccccc" />
+    <text
+       xml:space="preserve"
+       style="font-size:9.32312489px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="193.68871"
+       y="309.26349"
+       id="text11995-7-3-6-2"
+       sodipodi:linespacing="125%"
+       transform="scale(0.93992342,1.0639165)"><tspan
+         sodipodi:role="line"
+         x="193.68871"
+         y="309.26349"
+         id="tspan12214">SW Ring</tspan></text>
+  </g>
+</svg>
diff --git a/doc/guides/sample_app_ug/img/dist_perf.svg b/doc/guides/sample_app_ug/img/dist_perf.svg
new file mode 100644
index 0000000..5a2720b
--- /dev/null
+++ b/doc/guides/sample_app_ug/img/dist_perf.svg
@@ -0,0 +1,459 @@ 
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="524.65625"
+   height="387.59375"
+   id="svg4116"
+   version="1.1"
+   inkscape:version="0.48.5 r10040"
+   sodipodi:docname="New document 2">
+  <defs
+     id="defs4118">
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mstart"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path10498"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(0.4,0,0,0.4,4,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow1Mend"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path10501"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4038"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4040"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(0.4,0,0,0.4,4,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4042"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4044"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(0.4,0,0,0.4,4,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4046"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4048"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4050"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4052"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(0.4,0,0,0.4,4,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4054"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4056"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(0.4,0,0,0.4,4,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4058"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4060"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4062"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4064"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(0.4,0,0,0.4,4,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4066"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4068"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(0.4,0,0,0.4,4,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4070"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4072"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(-0.4,0,0,-0.4,-4,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="marker4074"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4076"
+         d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
+         transform="matrix(0.4,0,0,0.4,4,0)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="354.46875"
+     inkscape:cy="78.904643"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:window-width="1920"
+     inkscape:window-height="1017"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1" />
+  <metadata
+     id="metadata4121">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(-20.53125,-22.84375)">
+    <rect
+       style="fill:none;stroke:#000000;stroke-width:1;stroke-opacity:0.98412697"
+       id="rect10443"
+       width="165.52779"
+       height="376.84436"
+       x="21.023544"
+       y="24.286175" />
+    <rect
+       style="fill:none;stroke:#000000;stroke-width:1;stroke-opacity:0.98412697"
+       id="rect10445"
+       width="156.95697"
+       height="386.59042"
+       x="387.73376"
+       y="23.352676" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.99199992;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Mstart)"
+       d="m 188.27904,66.970932 195.99264,0.833121"
+       id="path10486"
+       inkscape:connector-type="polyline"
+       inkscape:connector-curvature="3" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.99199992;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow1Mend)"
+       d="M 188.05945,91.53983 384.0521,90.566545"
+       id="path10486-0"
+       inkscape:connector-type="polyline"
+       inkscape:connector-curvature="3" />
+    <text
+       xml:space="preserve"
+       style="font-size:11.9913578px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="460.4104"
+       y="292.91855"
+       id="text11995"
+       sodipodi:linespacing="125%"
+       transform="scale(0.91971036,1.0872988)"><tspan
+         sodipodi:role="line"
+         x="460.4104"
+         y="292.91855"
+         id="tspan12218">Port2</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:11.9913578px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="459.06958"
+       y="59.738571"
+       id="text11995-7"
+       sodipodi:linespacing="125%"
+       transform="scale(0.91971036,1.0872988)"><tspan
+         sodipodi:role="line"
+         id="tspan11997-3"
+         x="459.06958"
+         y="59.738571">Port0</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:15.28272438px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="474.06027"
+       y="184.77933"
+       id="text11995-7-3"
+       sodipodi:linespacing="125%"
+       transform="scale(0.8986678,1.1127582)"><tspan
+         sodipodi:role="line"
+         id="tspan11997-3-5"
+         x="474.06027"
+         y="184.77933">DPDK board</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:16.0002594px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="54.009655"
+       y="171.28656"
+       id="text11995-7-3-3"
+       sodipodi:linespacing="125%"
+       transform="scale(0.81894062,1.2210897)"><tspan
+         sodipodi:role="line"
+         id="tspan11997-3-5-8"
+         x="54.009655"
+         y="171.28656">Traffic Generator</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:11.9913578px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="459.46732"
+       y="91.195976"
+       id="text11995-7-8"
+       sodipodi:linespacing="125%"
+       transform="scale(0.91971036,1.0872988)"><tspan
+         sodipodi:role="line"
+         id="tspan11997-3-3"
+         x="459.46732"
+         y="91.195976">Port1</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:11.9913578px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="460.15295"
+       y="326.05963"
+       id="text11995-7-3-6-2"
+       sodipodi:linespacing="125%"
+       transform="scale(0.91971036,1.0872988)"><tspan
+         sodipodi:role="line"
+         x="460.15295"
+         y="326.05963"
+         id="tspan12214">Port3</tspan></text>
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.99199992;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:0.99199999, 1.98399994;stroke-dashoffset:0;marker-start:url(#Arrow1Mstart);display:inline"
+       d="m 389.46894,68.26125 12.5232,0 c 1.5,0 3,1.5 3,3 l 0,21.198419"
+       id="path10486-06"
+       inkscape:connector-type="orthogonal"
+       inkscape:connector-curvature="3"
+       sodipodi:nodetypes="ccc" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:0.99999997, 1.99999998;stroke-dashoffset:0"
+       d="m 398.43415,91.043274 -11.52714,0 0.98804,0"
+       id="path12267"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.99199992;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Mstart)"
+       d="m 190.33387,103.00575 195.99267,0.97328"
+       id="path10486-43"
+       inkscape:connector-type="polyline"
+       inkscape:connector-curvature="3" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.99199992;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow1Mend)"
+       d="M 187.50304,56.857383 383.49569,55.884111"
+       id="path10486-0-9"
+       inkscape:connector-type="polyline"
+       inkscape:connector-curvature="3" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.99199992;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:0.99199997, 1.98399998;stroke-dashoffset:0;marker-start:url(#Arrow1Mstart);display:inline"
+       d="m 388.42391,103.27876 27.61666,0 c 1.5,0 3,-1.5 3,-3 l 0,-41.462569"
+       id="path10486-06-7"
+       inkscape:connector-type="orthogonal"
+       inkscape:connector-curvature="3"
+       sodipodi:nodetypes="ccc" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:0.99999997, 1.99999994;stroke-dashoffset:0"
+       d="m 417.31173,56.402625 -26.65144,0 2.2844,0"
+       id="path12267-7"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.99199992;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Mstart)"
+       d="m 186.54351,319.92933 195.99264,0.83313"
+       id="path10486-07"
+       inkscape:connector-type="polyline"
+       inkscape:connector-curvature="3" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.99199992;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow1Mend)"
+       d="m 185.45351,344.49822 195.99262,-0.97328"
+       id="path10486-0-3"
+       inkscape:connector-type="polyline"
+       inkscape:connector-curvature="3" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.99199992;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:0.99199997, 1.98399993;stroke-dashoffset:0;marker-start:url(#Arrow1Mstart);display:inline"
+       d="m 387.7334,321.21965 12.52321,0 c 1.5,0 3,1.5 3,3 l 0,21.19843"
+       id="path10486-06-4"
+       inkscape:connector-type="orthogonal"
+       inkscape:connector-curvature="3"
+       sodipodi:nodetypes="ccc" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:0.99999997, 1.99999994;stroke-dashoffset:0"
+       d="m 396.69862,344.00166 -11.52714,0 0.98804,0"
+       id="path12267-9"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.99199992;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;marker-start:url(#Arrow1Mstart)"
+       d="m 190.33918,355.96416 195.99266,0.97327"
+       id="path10486-43-6"
+       inkscape:connector-type="polyline"
+       inkscape:connector-curvature="3" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.99199992;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:none;marker-start:none;marker-mid:none;marker-end:url(#Arrow1Mend)"
+       d="m 185.76751,309.8158 195.99266,-0.97331"
+       id="path10486-0-9-5"
+       inkscape:connector-type="polyline"
+       inkscape:connector-curvature="3" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:0.99199992;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:0.99199997, 1.98399994;stroke-dashoffset:0;marker-start:url(#Arrow1Mstart);display:inline"
+       d="m 386.68838,356.23716 27.61666,0 c 1.5,0 3,-1.5 3,-3 l 0,-41.46255"
+       id="path10486-06-7-1"
+       inkscape:connector-type="orthogonal"
+       inkscape:connector-curvature="3"
+       sodipodi:nodetypes="ccc" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:3;stroke-opacity:1;stroke-dasharray:0.99999995, 1.99999991;stroke-dashoffset:0"
+       d="m 415.57618,309.36103 -26.65143,0 2.28441,0"
+       id="path12267-7-0"
+       inkscape:connector-curvature="0" />
+    <text
+       xml:space="preserve"
+       style="font-size:11.9913578px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="168.01332"
+       y="295.95398"
+       id="text11995-9"
+       sodipodi:linespacing="125%"
+       transform="scale(0.91971036,1.0872988)"><tspan
+         sodipodi:role="line"
+         x="168.01332"
+         y="295.95398"
+         id="tspan12218-9">Port2</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:11.9913578px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="166.67253"
+       y="62.774006"
+       id="text11995-7-6"
+       sodipodi:linespacing="125%"
+       transform="scale(0.91971036,1.0872988)"><tspan
+         sodipodi:role="line"
+         id="tspan11997-3-8"
+         x="166.67253"
+         y="62.774006">Port0</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:11.9913578px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="167.07025"
+       y="94.231415"
+       id="text11995-7-8-3"
+       sodipodi:linespacing="125%"
+       transform="scale(0.91971036,1.0872988)"><tspan
+         sodipodi:role="line"
+         id="tspan11997-3-3-4"
+         x="167.07025"
+         y="94.231415">Port1</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:11.9913578px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="167.75591"
+       y="329.09506"
+       id="text11995-7-3-6-2-8"
+       sodipodi:linespacing="125%"
+       transform="scale(0.91971036,1.0872988)"><tspan
+         sodipodi:role="line"
+         x="167.75591"
+         y="329.09506"
+         id="tspan12214-4">Port3</tspan></text>
+  </g>
+</svg>
diff --git a/doc/guides/sample_app_ug/index.rst b/doc/guides/sample_app_ug/index.rst
index ad2ca28..47abe40 100644
--- a/doc/guides/sample_app_ug/index.rst
+++ b/doc/guides/sample_app_ug/index.rst
@@ -100,6 +100,7 @@  Copyright © 2012 - 2014, Intel Corporation. All rights reserved.
     netmap_compatibility
     internet_proto_ip_pipeline
     test_pipeline
+    dist_app
 
 **Figures**
 
@@ -147,6 +148,10 @@  Copyright © 2012 - 2014, Intel Corporation. All rights reserved.
 
 :ref:`Figure 21.Test Pipeline Application <figure_21>`
 
+:ref:`Figure 22.Performance Benchmarking Setup (Basic Environment) <figure_22>`
+
+:ref:`Figure 23.Distributor Sample Application Layout <figure_23>`
+
 **Tables**
 
 :ref:`Table 1.Output Traffic Marking <table_1>`