xref: /dpdk/doc/guides/sample_app_ug/test_pipeline.rst (revision 2fe68f322a9829e3a578ea90b0bf98416af82ba3)
1d0dff9baSBernard Iremonger..  BSD LICENSE
2d0dff9baSBernard Iremonger    Copyright(c) 2010-2014 Intel Corporation. All rights reserved.
3d0dff9baSBernard Iremonger    All rights reserved.
4d0dff9baSBernard Iremonger
5d0dff9baSBernard Iremonger    Redistribution and use in source and binary forms, with or without
6d0dff9baSBernard Iremonger    modification, are permitted provided that the following conditions
7d0dff9baSBernard Iremonger    are met:
8d0dff9baSBernard Iremonger
9d0dff9baSBernard Iremonger    * Redistributions of source code must retain the above copyright
10d0dff9baSBernard Iremonger    notice, this list of conditions and the following disclaimer.
11d0dff9baSBernard Iremonger    * Redistributions in binary form must reproduce the above copyright
12d0dff9baSBernard Iremonger    notice, this list of conditions and the following disclaimer in
13d0dff9baSBernard Iremonger    the documentation and/or other materials provided with the
14d0dff9baSBernard Iremonger    distribution.
15d0dff9baSBernard Iremonger    * Neither the name of Intel Corporation nor the names of its
16d0dff9baSBernard Iremonger    contributors may be used to endorse or promote products derived
17d0dff9baSBernard Iremonger    from this software without specific prior written permission.
18d0dff9baSBernard Iremonger
19d0dff9baSBernard Iremonger    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20d0dff9baSBernard Iremonger    "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21d0dff9baSBernard Iremonger    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22d0dff9baSBernard Iremonger    A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23d0dff9baSBernard Iremonger    OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24d0dff9baSBernard Iremonger    SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25d0dff9baSBernard Iremonger    LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26d0dff9baSBernard Iremonger    DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27d0dff9baSBernard Iremonger    THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28d0dff9baSBernard Iremonger    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29d0dff9baSBernard Iremonger    OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30d0dff9baSBernard Iremonger
31d0dff9baSBernard IremongerTest Pipeline Application
32d0dff9baSBernard Iremonger=========================
33d0dff9baSBernard Iremonger
34e0c7c473SSiobhan ButlerThe Test Pipeline application illustrates the use of the DPDK Packet Framework tool suite.
35e0c7c473SSiobhan ButlerIts purpose is to demonstrate the performance of single-table DPDK pipelines.
36d0dff9baSBernard Iremonger
37d0dff9baSBernard IremongerOverview
38d0dff9baSBernard Iremonger--------
39d0dff9baSBernard Iremonger
40d0dff9baSBernard IremongerThe application uses three CPU cores:
41d0dff9baSBernard Iremonger
42d0dff9baSBernard Iremonger*   Core A ("RX core") receives traffic from the NIC ports and feeds core B with traffic through SW queues.
43d0dff9baSBernard Iremonger
44e0c7c473SSiobhan Butler*   Core B ("Pipeline core") implements a single-table DPDK pipeline
45d0dff9baSBernard Iremonger    whose type is selectable through specific command line parameter.
46d0dff9baSBernard Iremonger    Core B receives traffic from core A through software queues,
47d0dff9baSBernard Iremonger    processes it according to the actions configured in the table entries that
48d0dff9baSBernard Iremonger    are hit by the input packets and feeds it to core C through another set of software queues.
49d0dff9baSBernard Iremonger
50d0dff9baSBernard Iremonger*   Core C ("TX core") receives traffic from core B through software queues and sends it to the NIC ports for transmission.
51d0dff9baSBernard Iremonger
524a22e6eeSJohn McNamara.. _figure_test_pipeline_app:
53d0dff9baSBernard Iremonger
544a22e6eeSJohn McNamara.. figure:: img/test_pipeline_app.*
55d0dff9baSBernard Iremonger
564a22e6eeSJohn McNamara   Test Pipeline Application
57d0dff9baSBernard Iremonger
58d0dff9baSBernard Iremonger
59d0dff9baSBernard IremongerCompiling the Application
60d0dff9baSBernard Iremonger-------------------------
61d0dff9baSBernard Iremonger
62d0dff9baSBernard Iremonger#.  Go to the app/test directory:
63d0dff9baSBernard Iremonger
64d0dff9baSBernard Iremonger    .. code-block:: console
65d0dff9baSBernard Iremonger
66d0dff9baSBernard Iremonger        export RTE_SDK=/path/to/rte_sdk
67d0dff9baSBernard Iremonger        cd ${RTE_SDK}/app/test/test-pipeline
68d0dff9baSBernard Iremonger
69d0dff9baSBernard Iremonger#.  Set the target (a default target is used if not specified):
70d0dff9baSBernard Iremonger
71d0dff9baSBernard Iremonger    .. code-block:: console
72d0dff9baSBernard Iremonger
73d0dff9baSBernard Iremonger        export RTE_TARGET=x86_64-native-linuxapp-gcc
74d0dff9baSBernard Iremonger
75d0dff9baSBernard Iremonger#.  Build the application:
76d0dff9baSBernard Iremonger
77d0dff9baSBernard Iremonger    .. code-block:: console
78d0dff9baSBernard Iremonger
79d0dff9baSBernard Iremonger        make
80d0dff9baSBernard Iremonger
81d0dff9baSBernard IremongerRunning the Application
82d0dff9baSBernard Iremonger-----------------------
83d0dff9baSBernard Iremonger
84d0dff9baSBernard IremongerApplication Command Line
85d0dff9baSBernard Iremonger~~~~~~~~~~~~~~~~~~~~~~~~
86d0dff9baSBernard Iremonger
87d0dff9baSBernard IremongerThe application execution command line is:
88d0dff9baSBernard Iremonger
89d0dff9baSBernard Iremonger.. code-block:: console
90d0dff9baSBernard Iremonger
91d0dff9baSBernard Iremonger    ./test-pipeline [EAL options] -- -p PORTMASK --TABLE_TYPE
92d0dff9baSBernard Iremonger
93d0dff9baSBernard IremongerThe -c EAL CPU core mask option has to contain exactly 3 CPU cores.
94d0dff9baSBernard IremongerThe first CPU core in the core mask is assigned for core A, the second for core B and the third for core C.
95d0dff9baSBernard Iremonger
96d0dff9baSBernard IremongerThe PORTMASK parameter must contain 2 or 4 ports.
97d0dff9baSBernard Iremonger
98d0dff9baSBernard IremongerTable Types and Behavior
99d0dff9baSBernard Iremonger~~~~~~~~~~~~~~~~~~~~~~~~
100d0dff9baSBernard Iremonger
1018c9a3374SJohn McNamara:numref:`table_test_pipeline_1` describes the table types used and how they are populated.
102d0dff9baSBernard Iremonger
103d0dff9baSBernard IremongerThe hash tables are pre-populated with 16 million keys.
104d0dff9baSBernard IremongerFor hash tables, the following parameters can be selected:
105d0dff9baSBernard Iremonger
106d0dff9baSBernard Iremonger*   **Configurable key size implementation or fixed (specialized) key size implementation (e.g. hash-8-ext or hash-spec-8-ext).**
107d0dff9baSBernard Iremonger    The key size specialized implementations are expected to provide better performance for 8-byte and 16-byte key sizes,
108d0dff9baSBernard Iremonger    while the key-size-non-specialized implementation is expected to provide better performance for larger key sizes;
109d0dff9baSBernard Iremonger
110d0dff9baSBernard Iremonger*   **Key size (e.g. hash-spec-8-ext or hash-spec-16-ext).**
111d0dff9baSBernard Iremonger    The available options are 8, 16 and 32 bytes;
112d0dff9baSBernard Iremonger
113d0dff9baSBernard Iremonger*   **Table type (e.g. hash-spec-16-ext or hash-spec-16-lru).**
114fea1d908SJohn McNamara    The available options are ext (extendable bucket) or lru (least recently used).
115d0dff9baSBernard Iremonger
1168c9a3374SJohn McNamara.. _table_test_pipeline_1:
117d0dff9baSBernard Iremonger
1188c9a3374SJohn McNamara.. table:: Table Types
119d0dff9baSBernard Iremonger
120d0dff9baSBernard Iremonger   +-------+------------------------+----------------------------------------------------------+-------------------------------------------------------+
121d0dff9baSBernard Iremonger   | **#** | **TABLE_TYPE**         | **Description of Core B Table**                          | **Pre-added Table Entries**                           |
122d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
123d0dff9baSBernard Iremonger   +=======+========================+==========================================================+=======================================================+
124e0c7c473SSiobhan Butler   | 1     | none                   | Core B is not implementing a DPDK pipeline.              | N/A                                                   |
125d0dff9baSBernard Iremonger   |       |                        | Core B is implementing a pass-through from its input set |                                                       |
126d0dff9baSBernard Iremonger   |       |                        | of software queues to its output set of software queues. |                                                       |
127d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
128d0dff9baSBernard Iremonger   +-------+------------------------+----------------------------------------------------------+-------------------------------------------------------+
129d0dff9baSBernard Iremonger   | 2     | stub                   | Stub table. Core B is implementing the same pass-through | N/A                                                   |
130d0dff9baSBernard Iremonger   |       |                        | functionality as described for the "none" option by      |                                                       |
131e0c7c473SSiobhan Butler   |       |                        | using the DPDK Packet Framework by using one             |                                                       |
132d0dff9baSBernard Iremonger   |       |                        | stub table for each input NIC port.                      |                                                       |
133d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
134d0dff9baSBernard Iremonger   +-------+------------------------+----------------------------------------------------------+-------------------------------------------------------+
135d0dff9baSBernard Iremonger   | 3     | hash-[spec]-8-lru      | LRU hash table with 8-byte key size and 16 million       | 16 million entries are successfully added to the      |
136d0dff9baSBernard Iremonger   |       |                        | entries.                                                 | hash table with the following key format:             |
137d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
138d0dff9baSBernard Iremonger   |       |                        |                                                          | [4-byte index, 4 bytes of 0]                          |
1391e7055acSJohn McNamara   |       |                        |                                                          |                                                       |
1401e7055acSJohn McNamara   |       |                        |                                                          | The action configured for all table entries is        |
1411e7055acSJohn McNamara   |       |                        |                                                          | "Sendto output port", with the output port index      |
142d0dff9baSBernard Iremonger   |       |                        |                                                          | uniformly distributed for the range of output ports.  |
143d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
144d0dff9baSBernard Iremonger   |       |                        |                                                          | The default table rule (used in the case of a lookup  |
145d0dff9baSBernard Iremonger   |       |                        |                                                          | miss) is to drop the packet.                          |
146d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
147d0dff9baSBernard Iremonger   |       |                        |                                                          | At run time, core A is creating the following lookup  |
148d0dff9baSBernard Iremonger   |       |                        |                                                          | key and storing it into the packet meta data for      |
149d0dff9baSBernard Iremonger   |       |                        |                                                          | core B to use for table lookup:                       |
150d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
151d0dff9baSBernard Iremonger   |       |                        |                                                          | [destination IPv4 address, 4 bytes of 0]              |
152d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
153d0dff9baSBernard Iremonger   +-------+------------------------+----------------------------------------------------------+-------------------------------------------------------+
154*2fe68f32SJohn McNamara   | 4     | hash-[spec]-8-ext      | Extendable bucket hash table with 8-byte key size        | Same as hash-[spec]-8-lru table entries, above.       |
1551e7055acSJohn McNamara   |       |                        | and 16 million entries.                                  |                                                       |
1561e7055acSJohn McNamara   |       |                        |                                                          |                                                       |
1571e7055acSJohn McNamara   +-------+------------------------+----------------------------------------------------------+-------------------------------------------------------+
158d0dff9baSBernard Iremonger   | 5     | hash-[spec]-16-lru     | LRU hash table with 16-byte key size and 16 million      | 16 million entries are successfully added to the hash |
159d0dff9baSBernard Iremonger   |       |                        | entries.                                                 | table with the following key format:                  |
160d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
161d0dff9baSBernard Iremonger   |       |                        |                                                          | [4-byte index, 12 bytes of 0]                         |
1621e7055acSJohn McNamara   |       |                        |                                                          |                                                       |
1631e7055acSJohn McNamara   |       |                        |                                                          | The action configured for all table entries is        |
1641e7055acSJohn McNamara   |       |                        |                                                          | "Send to output port", with the output port index     |
165d0dff9baSBernard Iremonger   |       |                        |                                                          | uniformly distributed for the range of output ports.  |
166d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
167d0dff9baSBernard Iremonger   |       |                        |                                                          | The default table rule (used in the case of a lookup  |
168d0dff9baSBernard Iremonger   |       |                        |                                                          | miss) is to drop the packet.                          |
169d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
170d0dff9baSBernard Iremonger   |       |                        |                                                          | At run time, core A is creating the following lookup  |
171d0dff9baSBernard Iremonger   |       |                        |                                                          | key and storing it into the packet meta data for core |
172d0dff9baSBernard Iremonger   |       |                        |                                                          | B to use for table lookup:                            |
173d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
174d0dff9baSBernard Iremonger   |       |                        |                                                          | [destination IPv4 address, 12 bytes of 0]             |
175d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
176d0dff9baSBernard Iremonger   +-------+------------------------+----------------------------------------------------------+-------------------------------------------------------+
177*2fe68f32SJohn McNamara   | 6     | hash-[spec]-16-ext     | Extendable bucket hash table with 16-byte key size       | Same as hash-[spec]-16-lru table entries, above.      |
1781e7055acSJohn McNamara   |       |                        | and 16 million entries.                                  |                                                       |
1791e7055acSJohn McNamara   |       |                        |                                                          |                                                       |
1801e7055acSJohn McNamara   +-------+------------------------+----------------------------------------------------------+-------------------------------------------------------+
181d0dff9baSBernard Iremonger   | 7     | hash-[spec]-32-lru     | LRU hash table with 32-byte key size and 16 million      | 16 million entries are successfully added to the hash |
182d0dff9baSBernard Iremonger   |       |                        | entries.                                                 | table with the following key format:                  |
183d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
184d0dff9baSBernard Iremonger   |       |                        |                                                          | [4-byte index, 28 bytes of 0].                        |
1851e7055acSJohn McNamara   |       |                        |                                                          |                                                       |
1861e7055acSJohn McNamara   |       |                        |                                                          | The action configured for all table entries is        |
1871e7055acSJohn McNamara   |       |                        |                                                          | "Send to output port", with the output port index     |
188d0dff9baSBernard Iremonger   |       |                        |                                                          | uniformly distributed for the range of output ports.  |
189d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
190d0dff9baSBernard Iremonger   |       |                        |                                                          | The default table rule (used in the case of a lookup  |
191d0dff9baSBernard Iremonger   |       |                        |                                                          | miss) is to drop the packet.                          |
192d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
193d0dff9baSBernard Iremonger   |       |                        |                                                          | At run time, core A is creating the following lookup  |
194d0dff9baSBernard Iremonger   |       |                        |                                                          | key and storing it into the packet meta data for      |
195d0dff9baSBernard Iremonger   |       |                        |                                                          | Lpmcore B to use for table lookup:                    |
196d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
197d0dff9baSBernard Iremonger   |       |                        |                                                          | [destination IPv4 address, 28 bytes of 0]             |
198d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
199d0dff9baSBernard Iremonger   +-------+------------------------+----------------------------------------------------------+-------------------------------------------------------+
200*2fe68f32SJohn McNamara   | 8     | hash-[spec]-32-ext     | Extendable bucket hash table with 32-byte key size       | Same as hash-[spec]-32-lru table entries, above.      |
2011e7055acSJohn McNamara   |       |                        | and 16 million entries.                                  |                                                       |
2021e7055acSJohn McNamara   |       |                        |                                                          |                                                       |
2031e7055acSJohn McNamara   +-------+------------------------+----------------------------------------------------------+-------------------------------------------------------+
204d0dff9baSBernard Iremonger   | 9     | lpm                    | Longest Prefix Match (LPM) IPv4 table.                   | In the case of two ports, two routes                  |
205d0dff9baSBernard Iremonger   |       |                        |                                                          | are added to the table:                               |
206d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
207d0dff9baSBernard Iremonger   |       |                        |                                                          | [0.0.0.0/9 => send to output port 0]                  |
208d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
209d0dff9baSBernard Iremonger   |       |                        |                                                          | [0.128.0.0/9 => send to output port 1]                |
210d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
211d0dff9baSBernard Iremonger   |       |                        |                                                          | In case of four ports, four entries are added to the  |
212d0dff9baSBernard Iremonger   |       |                        |                                                          | table:                                                |
213d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
214d0dff9baSBernard Iremonger   |       |                        |                                                          | [0.0.0.0/10 => send to output port 0]                 |
215d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
216d0dff9baSBernard Iremonger   |       |                        |                                                          | [0.64.0.0/10 => send to output port 1]                |
217d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
218d0dff9baSBernard Iremonger   |       |                        |                                                          | [0.128.0.0/10 => send to output port 2]               |
219d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
220d0dff9baSBernard Iremonger   |       |                        |                                                          | [0.192.0.0/10 => send to output port 3]               |
221d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
222d0dff9baSBernard Iremonger   |       |                        |                                                          | The default table rule (used in the case of a lookup  |
223d0dff9baSBernard Iremonger   |       |                        |                                                          | miss) is to drop the packet.                          |
224d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
225d0dff9baSBernard Iremonger   |       |                        |                                                          | At run time, core A is storing the IPv4 destination   |
226d0dff9baSBernard Iremonger   |       |                        |                                                          | within the packet meta data to be later used by core  |
227d0dff9baSBernard Iremonger   |       |                        |                                                          | B as the lookup key.                                  |
228d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
229d0dff9baSBernard Iremonger   +-------+------------------------+----------------------------------------------------------+-------------------------------------------------------+
230d0dff9baSBernard Iremonger   | 10    | acl                    | Access Control List (ACL) table                          | In the case of two ports, two ACL rules are added to  |
231d0dff9baSBernard Iremonger   |       |                        |                                                          | the table:                                            |
232d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
233d0dff9baSBernard Iremonger   |       |                        |                                                          | [priority = 0 (highest),                              |
234d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
235d0dff9baSBernard Iremonger   |       |                        |                                                          | IPv4 source = ANY,                                    |
236d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
237d0dff9baSBernard Iremonger   |       |                        |                                                          | IPv4 destination = 0.0.0.0/9,                         |
238d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
239d0dff9baSBernard Iremonger   |       |                        |                                                          | L4 protocol = ANY,                                    |
240d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
241d0dff9baSBernard Iremonger   |       |                        |                                                          | TCP source port = ANY,                                |
242d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
243d0dff9baSBernard Iremonger   |       |                        |                                                          | TCP destination port = ANY                            |
244d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
245d0dff9baSBernard Iremonger   |       |                        |                                                          | => send to output port 0]                             |
246d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
247d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
248d0dff9baSBernard Iremonger   |       |                        |                                                          | [priority = 0 (highest),                              |
249d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
250d0dff9baSBernard Iremonger   |       |                        |                                                          | IPv4 source = ANY,                                    |
251d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
252d0dff9baSBernard Iremonger   |       |                        |                                                          | IPv4 destination = 0.128.0.0/9,                       |
253d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
254d0dff9baSBernard Iremonger   |       |                        |                                                          | L4 protocol = ANY,                                    |
255d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
256d0dff9baSBernard Iremonger   |       |                        |                                                          | TCP source port = ANY,                                |
257d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
258d0dff9baSBernard Iremonger   |       |                        |                                                          | TCP destination port = ANY                            |
259d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
260d0dff9baSBernard Iremonger   |       |                        |                                                          | => send to output port 0].                            |
261d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
262d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
263d0dff9baSBernard Iremonger   |       |                        |                                                          | The default table rule (used in the case of a lookup  |
264d0dff9baSBernard Iremonger   |       |                        |                                                          | miss) is to drop the packet.                          |
265d0dff9baSBernard Iremonger   |       |                        |                                                          |                                                       |
266d0dff9baSBernard Iremonger   +-------+------------------------+----------------------------------------------------------+-------------------------------------------------------+
267d0dff9baSBernard Iremonger
268d0dff9baSBernard IremongerInput Traffic
269d0dff9baSBernard Iremonger~~~~~~~~~~~~~
270d0dff9baSBernard Iremonger
271d0dff9baSBernard IremongerRegardless of the table type used for the core B pipeline,
272d0dff9baSBernard Iremongerthe same input traffic can be used to hit all table entries with uniform distribution,
273d0dff9baSBernard Iremongerwhich results in uniform distribution of packets sent out on the set of output NIC ports.
274d0dff9baSBernard IremongerThe profile for input traffic is TCP/IPv4 packets with:
275d0dff9baSBernard Iremonger
276d0dff9baSBernard Iremonger*   destination IP address as A.B.C.D with A fixed to 0 and B, C,D random
277d0dff9baSBernard Iremonger
278d0dff9baSBernard Iremonger*   source IP address fixed to 0.0.0.0
279d0dff9baSBernard Iremonger
280d0dff9baSBernard Iremonger*   destination TCP port fixed to 0
281d0dff9baSBernard Iremonger
282d0dff9baSBernard Iremonger*   source TCP port fixed to 0
283