xref: /dpdk/doc/guides/sample_app_ug/qos_scheduler.rst (revision cb056611a8ed9ab9024f3b91bf26e97255194514)
15630257fSFerruh Yigit..  SPDX-License-Identifier: BSD-3-Clause
25630257fSFerruh Yigit    Copyright(c) 2010-2014 Intel Corporation.
3d0dff9baSBernard Iremonger
4d0dff9baSBernard IremongerQoS Scheduler Sample Application
5d0dff9baSBernard Iremonger================================
6d0dff9baSBernard Iremonger
7e0c7c473SSiobhan ButlerThe QoS sample application demonstrates the use of the DPDK to provide QoS scheduling.
8d0dff9baSBernard Iremonger
9d0dff9baSBernard IremongerOverview
10d0dff9baSBernard Iremonger--------
11d0dff9baSBernard Iremonger
12d0dff9baSBernard IremongerThe architecture of the QoS scheduler application is shown in the following figure.
13d0dff9baSBernard Iremonger
144a22e6eeSJohn McNamara.. _figure_qos_sched_app_arch:
15d0dff9baSBernard Iremonger
164a22e6eeSJohn McNamara.. figure:: img/qos_sched_app_arch.*
17d0dff9baSBernard Iremonger
184a22e6eeSJohn McNamara   QoS Scheduler Application Architecture
19d0dff9baSBernard Iremonger
20d0dff9baSBernard Iremonger
21d0dff9baSBernard IremongerThere are two flavors of the runtime execution for this application,
22d0dff9baSBernard Iremongerwith two or three threads per each packet flow configuration being used.
23d0dff9baSBernard IremongerThe RX thread reads packets from the RX port,
24d0dff9baSBernard Iremongerclassifies the packets based on the double VLAN (outer and inner) and
25694fd2cbSJasvinder Singhthe lower byte of the IP destination address and puts them into the ring queue.
26d0dff9baSBernard IremongerThe worker thread dequeues the packets from the ring and calls the QoS scheduler enqueue/dequeue functions.
27d0dff9baSBernard IremongerIf a separate TX core is used, these are sent to the TX ring.
28d0dff9baSBernard IremongerOtherwise, they are sent directly to the TX port.
29d0dff9baSBernard IremongerThe TX thread, if present, reads from the TX ring and write the packets to the TX port.
30d0dff9baSBernard Iremonger
31d0dff9baSBernard IremongerCompiling the Application
32d0dff9baSBernard Iremonger-------------------------
33d0dff9baSBernard Iremonger
347cacb056SHerakliusz LipiecTo compile the sample application see :doc:`compiling`.
35d0dff9baSBernard Iremonger
367cacb056SHerakliusz LipiecThe application is located in the ``qos_sched`` sub-directory.
37d0dff9baSBernard Iremonger
38d0dff9baSBernard Iremonger    .. note::
39d0dff9baSBernard Iremonger
40218c4e68SBruce Richardson        This application is intended as a linux only.
41d0dff9baSBernard Iremonger
42d0dff9baSBernard Iremonger.. note::
43d0dff9baSBernard Iremonger
44d0dff9baSBernard Iremonger    To get statistics on the sample app using the command line interface as described in the next section,
45d0dff9baSBernard Iremonger    DPDK must be compiled defining *CONFIG_RTE_SCHED_COLLECT_STATS*,
46d0dff9baSBernard Iremonger    which can be done by changing the configuration file for the specific target to be compiled.
47d0dff9baSBernard Iremonger
48d0dff9baSBernard IremongerRunning the Application
49d0dff9baSBernard Iremonger-----------------------
50d0dff9baSBernard Iremonger
51d0dff9baSBernard Iremonger.. note::
52d0dff9baSBernard Iremonger
53d0dff9baSBernard Iremonger    In order to run the application, a total of at least 4
54d0dff9baSBernard Iremonger    G of huge pages must be set up for each of the used sockets (depending on the cores in use).
55d0dff9baSBernard Iremonger
56d0dff9baSBernard IremongerThe application has a number of command line options:
57d0dff9baSBernard Iremonger
58d0dff9baSBernard Iremonger.. code-block:: console
59d0dff9baSBernard Iremonger
60d0dff9baSBernard Iremonger    ./qos_sched [EAL options] -- <APP PARAMS>
61d0dff9baSBernard Iremonger
62d0dff9baSBernard IremongerMandatory application parameters include:
63d0dff9baSBernard Iremonger
64d0dff9baSBernard Iremonger*   --pfc "RX PORT, TX PORT, RX LCORE, WT LCORE, TX CORE": Packet flow configuration.
65d0dff9baSBernard Iremonger    Multiple pfc entities can be configured in the command line,
66d0dff9baSBernard Iremonger    having 4 or 5 items (if TX core defined or not).
67d0dff9baSBernard Iremonger
68d0dff9baSBernard IremongerOptional application parameters include:
69d0dff9baSBernard Iremonger
70d0dff9baSBernard Iremonger*   -i: It makes the application to start in the interactive mode.
71d0dff9baSBernard Iremonger    In this mode, the application shows a command line that can be used for obtaining statistics while
72d0dff9baSBernard Iremonger    scheduling is taking place (see interactive mode below for more information).
73d0dff9baSBernard Iremonger
74*cb056611SStephen Hemminger*   --mnc n: Main core index (the default value is 1).
75d0dff9baSBernard Iremonger
76d0dff9baSBernard Iremonger*   --rsz "A, B, C": Ring sizes:
77d0dff9baSBernard Iremonger
78d0dff9baSBernard Iremonger*   A = Size (in number of buffer descriptors) of each of the NIC RX rings read
79d0dff9baSBernard Iremonger    by the I/O RX lcores (the default value is 128).
80d0dff9baSBernard Iremonger
81d0dff9baSBernard Iremonger*   B = Size (in number of elements) of each of the software rings used
82d0dff9baSBernard Iremonger    by the I/O RX lcores to send packets to worker lcores (the default value is 8192).
83d0dff9baSBernard Iremonger
84d0dff9baSBernard Iremonger*   C = Size (in number of buffer descriptors) of each of the NIC TX rings written
85d0dff9baSBernard Iremonger    by worker lcores (the default value is 256)
86d0dff9baSBernard Iremonger
87d0dff9baSBernard Iremonger*   --bsz "A, B, C, D": Burst sizes
88d0dff9baSBernard Iremonger
89d0dff9baSBernard Iremonger*   A = I/O RX lcore read burst size from the NIC RX (the default value is 64)
90d0dff9baSBernard Iremonger
91d0dff9baSBernard Iremonger*   B = I/O RX lcore write burst size to the output software rings,
92d0dff9baSBernard Iremonger    worker lcore read burst size from input software rings,QoS enqueue size (the default value is 64)
93d0dff9baSBernard Iremonger
94d0dff9baSBernard Iremonger*   C = QoS dequeue size (the default value is 32)
95d0dff9baSBernard Iremonger
96d0dff9baSBernard Iremonger*   D = Worker lcore write burst size to the NIC TX (the default value is 64)
97d0dff9baSBernard Iremonger
98d0dff9baSBernard Iremonger*   --msz M: Mempool size (in number of mbufs) for each pfc (default 2097152)
99d0dff9baSBernard Iremonger
100d0dff9baSBernard Iremonger*   --rth "A, B, C": The RX queue threshold parameters
101d0dff9baSBernard Iremonger
102d0dff9baSBernard Iremonger*   A = RX prefetch threshold (the default value is 8)
103d0dff9baSBernard Iremonger
104d0dff9baSBernard Iremonger*   B = RX host threshold (the default value is 8)
105d0dff9baSBernard Iremonger
106d0dff9baSBernard Iremonger*   C = RX write-back threshold (the default value is 4)
107d0dff9baSBernard Iremonger
108d0dff9baSBernard Iremonger*   --tth "A, B, C": TX queue threshold parameters
109d0dff9baSBernard Iremonger
110d0dff9baSBernard Iremonger*   A = TX prefetch threshold (the default value is 36)
111d0dff9baSBernard Iremonger
112d0dff9baSBernard Iremonger*   B = TX host threshold (the default value is 0)
113d0dff9baSBernard Iremonger
114d0dff9baSBernard Iremonger*   C = TX write-back threshold (the default value is 0)
115d0dff9baSBernard Iremonger
116d0dff9baSBernard Iremonger*   --cfg FILE: Profile configuration to load
117d0dff9baSBernard Iremonger
118e0c7c473SSiobhan ButlerRefer to *DPDK Getting Started Guide* for general information on running applications and
119d0dff9baSBernard Iremongerthe Environment Abstraction Layer (EAL) options.
120d0dff9baSBernard Iremonger
121d0dff9baSBernard IremongerThe profile configuration file defines all the port/subport/pipe/traffic class/queue parameters
122d0dff9baSBernard Iremongerneeded for the QoS scheduler configuration.
123d0dff9baSBernard Iremonger
124d0dff9baSBernard IremongerThe profile file has the following format:
125d0dff9baSBernard Iremonger
126d0dff9baSBernard Iremonger::
127d0dff9baSBernard Iremonger
128d0dff9baSBernard Iremonger    ; port configuration [port]
129d0dff9baSBernard Iremonger
130d0dff9baSBernard Iremonger    frame overhead = 24
131d0dff9baSBernard Iremonger    number of subports per port = 1
132d0dff9baSBernard Iremonger
133d0dff9baSBernard Iremonger    ; Subport configuration
134d0dff9baSBernard Iremonger
135d0dff9baSBernard Iremonger    [subport 0]
136694fd2cbSJasvinder Singh    number of pipes per subport = 4096
137694fd2cbSJasvinder Singh    queue sizes = 64 64 64 64 64 64 64 64 64 64 64 64 64
138d0dff9baSBernard Iremonger    tb rate = 1250000000; Bytes per second
139d0dff9baSBernard Iremonger    tb size = 1000000; Bytes
140d0dff9baSBernard Iremonger    tc 0 rate = 1250000000;     Bytes per second
141d0dff9baSBernard Iremonger    tc 1 rate = 1250000000;     Bytes per second
142d0dff9baSBernard Iremonger    tc 2 rate = 1250000000;     Bytes per second
143d0dff9baSBernard Iremonger    tc 3 rate = 1250000000;     Bytes per second
144694fd2cbSJasvinder Singh    tc 4 rate = 1250000000;     Bytes per second
145694fd2cbSJasvinder Singh    tc 5 rate = 1250000000;     Bytes per second
146694fd2cbSJasvinder Singh    tc 6 rate = 1250000000;     Bytes per second
147694fd2cbSJasvinder Singh    tc 7 rate = 1250000000;     Bytes per second
148694fd2cbSJasvinder Singh    tc 8 rate = 1250000000;     Bytes per second
149694fd2cbSJasvinder Singh    tc 9 rate = 1250000000;     Bytes per second
150694fd2cbSJasvinder Singh    tc 10 rate = 1250000000;     Bytes per second
151694fd2cbSJasvinder Singh    tc 11 rate = 1250000000;     Bytes per second
152694fd2cbSJasvinder Singh    tc 12 rate = 1250000000;     Bytes per second
153694fd2cbSJasvinder Singh
154d0dff9baSBernard Iremonger    tc period = 10;             Milliseconds
155d0dff9baSBernard Iremonger    tc oversubscription period = 10;     Milliseconds
156d0dff9baSBernard Iremonger
157d0dff9baSBernard Iremonger    pipe 0-4095 = 0;        These pipes are configured with pipe profile 0
158d0dff9baSBernard Iremonger
159d0dff9baSBernard Iremonger    ; Pipe configuration
160d0dff9baSBernard Iremonger
161d0dff9baSBernard Iremonger    [pipe profile 0]
162d0dff9baSBernard Iremonger    tb rate = 305175; Bytes per second
163d0dff9baSBernard Iremonger    tb size = 1000000; Bytes
164d0dff9baSBernard Iremonger
165d0dff9baSBernard Iremonger    tc 0 rate = 305175; Bytes per second
166d0dff9baSBernard Iremonger    tc 1 rate = 305175; Bytes per second
167d0dff9baSBernard Iremonger    tc 2 rate = 305175; Bytes per second
168d0dff9baSBernard Iremonger    tc 3 rate = 305175; Bytes per second
169694fd2cbSJasvinder Singh    tc 4 rate = 305175; Bytes per second
170694fd2cbSJasvinder Singh    tc 5 rate = 305175; Bytes per second
171694fd2cbSJasvinder Singh    tc 6 rate = 305175; Bytes per second
172694fd2cbSJasvinder Singh    tc 7 rate = 305175; Bytes per second
173694fd2cbSJasvinder Singh    tc 8 rate = 305175; Bytes per second
174694fd2cbSJasvinder Singh    tc 9 rate = 305175; Bytes per second
175694fd2cbSJasvinder Singh    tc 10 rate = 305175; Bytes per second
176694fd2cbSJasvinder Singh    tc 11 rate = 305175; Bytes per second
177694fd2cbSJasvinder Singh    tc 12 rate = 305175; Bytes per second
178d0dff9baSBernard Iremonger    tc period = 40; Milliseconds
179d0dff9baSBernard Iremonger
180d0dff9baSBernard Iremonger    tc 0 oversubscription weight = 1
181d0dff9baSBernard Iremonger    tc 1 oversubscription weight = 1
182d0dff9baSBernard Iremonger    tc 2 oversubscription weight = 1
183d0dff9baSBernard Iremonger    tc 3 oversubscription weight = 1
184694fd2cbSJasvinder Singh    tc 4 oversubscription weight = 1
185694fd2cbSJasvinder Singh    tc 5 oversubscription weight = 1
186694fd2cbSJasvinder Singh    tc 6 oversubscription weight = 1
187694fd2cbSJasvinder Singh    tc 7 oversubscription weight = 1
188694fd2cbSJasvinder Singh    tc 8 oversubscription weight = 1
189694fd2cbSJasvinder Singh    tc 9 oversubscription weight = 1
190694fd2cbSJasvinder Singh    tc 10 oversubscription weight = 1
191694fd2cbSJasvinder Singh    tc 11 oversubscription weight = 1
192694fd2cbSJasvinder Singh    tc 12 oversubscription weight = 1
193d0dff9baSBernard Iremonger
194694fd2cbSJasvinder Singh    tc 12 wrr weights = 1 1 1 1
195d0dff9baSBernard Iremonger
196d0dff9baSBernard Iremonger    ; RED params per traffic class and color (Green / Yellow / Red)
197d0dff9baSBernard Iremonger
198d0dff9baSBernard Iremonger    [red]
199d0dff9baSBernard Iremonger    tc 0 wred min = 48 40 32
200d0dff9baSBernard Iremonger    tc 0 wred max = 64 64 64
201d0dff9baSBernard Iremonger    tc 0 wred inv prob = 10 10 10
202d0dff9baSBernard Iremonger    tc 0 wred weight = 9 9 9
203d0dff9baSBernard Iremonger
204d0dff9baSBernard Iremonger    tc 1 wred min = 48 40 32
205d0dff9baSBernard Iremonger    tc 1 wred max = 64 64 64
206d0dff9baSBernard Iremonger    tc 1 wred inv prob = 10 10 10
207d0dff9baSBernard Iremonger    tc 1 wred weight = 9 9 9
208d0dff9baSBernard Iremonger
209d0dff9baSBernard Iremonger    tc 2 wred min = 48 40 32
210d0dff9baSBernard Iremonger    tc 2 wred max = 64 64 64
211d0dff9baSBernard Iremonger    tc 2 wred inv prob = 10 10 10
212d0dff9baSBernard Iremonger    tc 2 wred weight = 9 9 9
213d0dff9baSBernard Iremonger
214d0dff9baSBernard Iremonger    tc 3 wred min = 48 40 32
215d0dff9baSBernard Iremonger    tc 3 wred max = 64 64 64
216d0dff9baSBernard Iremonger    tc 3 wred inv prob = 10 10 10
217d0dff9baSBernard Iremonger    tc 3 wred weight = 9 9 9
218d0dff9baSBernard Iremonger
219694fd2cbSJasvinder Singh    tc 4 wred min = 48 40 32
220694fd2cbSJasvinder Singh    tc 4 wred max = 64 64 64
221694fd2cbSJasvinder Singh    tc 4 wred inv prob = 10 10 10
222694fd2cbSJasvinder Singh    tc 4 wred weight = 9 9 9
223694fd2cbSJasvinder Singh
224694fd2cbSJasvinder Singh    tc 5 wred min = 48 40 32
225694fd2cbSJasvinder Singh    tc 5 wred max = 64 64 64
226694fd2cbSJasvinder Singh    tc 5 wred inv prob = 10 10 10
227694fd2cbSJasvinder Singh    tc 5 wred weight = 9 9 9
228694fd2cbSJasvinder Singh
229694fd2cbSJasvinder Singh    tc 6 wred min = 48 40 32
230694fd2cbSJasvinder Singh    tc 6 wred max = 64 64 64
231694fd2cbSJasvinder Singh    tc 6 wred inv prob = 10 10 10
232694fd2cbSJasvinder Singh    tc 6 wred weight = 9 9 9
233694fd2cbSJasvinder Singh
234694fd2cbSJasvinder Singh    tc 7 wred min = 48 40 32
235694fd2cbSJasvinder Singh    tc 7 wred max = 64 64 64
236694fd2cbSJasvinder Singh    tc 7 wred inv prob = 10 10 10
237694fd2cbSJasvinder Singh    tc 7 wred weight = 9 9 9
238694fd2cbSJasvinder Singh
239694fd2cbSJasvinder Singh    tc 8 wred min = 48 40 32
240694fd2cbSJasvinder Singh    tc 8 wred max = 64 64 64
241694fd2cbSJasvinder Singh    tc 8 wred inv prob = 10 10 10
242694fd2cbSJasvinder Singh    tc 8 wred weight = 9 9 9
243694fd2cbSJasvinder Singh
244694fd2cbSJasvinder Singh    tc 9 wred min = 48 40 32
245694fd2cbSJasvinder Singh    tc 9 wred max = 64 64 64
246694fd2cbSJasvinder Singh    tc 9 wred inv prob = 10 10 10
247694fd2cbSJasvinder Singh    tc 9 wred weight = 9 9 9
248694fd2cbSJasvinder Singh
249694fd2cbSJasvinder Singh    tc 10 wred min = 48 40 32
250694fd2cbSJasvinder Singh    tc 10 wred max = 64 64 64
251694fd2cbSJasvinder Singh    tc 10 wred inv prob = 10 10 10
252694fd2cbSJasvinder Singh    tc 10 wred weight = 9 9 9
253694fd2cbSJasvinder Singh
254694fd2cbSJasvinder Singh    tc 11 wred min = 48 40 32
255694fd2cbSJasvinder Singh    tc 11 wred max = 64 64 64
256694fd2cbSJasvinder Singh    tc 11 wred inv prob = 10 10 10
257694fd2cbSJasvinder Singh    tc 11 wred weight = 9 9 9
258694fd2cbSJasvinder Singh
259694fd2cbSJasvinder Singh    tc 12 wred min = 48 40 32
260694fd2cbSJasvinder Singh    tc 12 wred max = 64 64 64
261694fd2cbSJasvinder Singh    tc 12 wred inv prob = 10 10 10
262694fd2cbSJasvinder Singh    tc 12 wred weight = 9 9 9
263694fd2cbSJasvinder Singh
264d0dff9baSBernard IremongerInteractive mode
265d0dff9baSBernard Iremonger~~~~~~~~~~~~~~~~
266d0dff9baSBernard Iremonger
267d0dff9baSBernard IremongerThese are the commands that are currently working under the command line interface:
268d0dff9baSBernard Iremonger
269d0dff9baSBernard Iremonger*   Control Commands
270d0dff9baSBernard Iremonger
271d0dff9baSBernard Iremonger*   --quit: Quits the application.
272d0dff9baSBernard Iremonger
273d0dff9baSBernard Iremonger*   General Statistics
274d0dff9baSBernard Iremonger
275d0dff9baSBernard Iremonger    *   stats app: Shows a table with in-app calculated statistics.
276d0dff9baSBernard Iremonger
277d0dff9baSBernard Iremonger    *   stats port X subport Y: For a specific subport, it shows the number of packets that
278d0dff9baSBernard Iremonger        went through the scheduler properly and the number of packets that were dropped.
279d0dff9baSBernard Iremonger        The same information is shown in bytes.
280d0dff9baSBernard Iremonger        The information is displayed in a table separating it in different traffic classes.
281d0dff9baSBernard Iremonger
282d0dff9baSBernard Iremonger    *   stats port X subport Y pipe Z: For a specific pipe, it shows the number of packets that
283d0dff9baSBernard Iremonger        went through the scheduler properly and the number of packets that were dropped.
284d0dff9baSBernard Iremonger        The same information is shown in bytes.
285d0dff9baSBernard Iremonger        This information is displayed in a table separating it in individual queues.
286d0dff9baSBernard Iremonger
287d0dff9baSBernard Iremonger*   Average queue size
288d0dff9baSBernard Iremonger
289d0dff9baSBernard IremongerAll of these commands work the same way, averaging the number of packets throughout a specific subset of queues.
290d0dff9baSBernard Iremonger
291d0dff9baSBernard IremongerTwo parameters can be configured for this prior to calling any of these commands:
292d0dff9baSBernard Iremonger
293d0dff9baSBernard Iremonger    *   qavg n X: n is the number of times that the calculation will take place.
294d0dff9baSBernard Iremonger        Bigger numbers provide higher accuracy. The default value is 10.
295d0dff9baSBernard Iremonger
296d0dff9baSBernard Iremonger    *   qavg period X: period is the number of microseconds that will be allowed between each calculation.
297d0dff9baSBernard Iremonger        The default value is 100.
298d0dff9baSBernard Iremonger
299d0dff9baSBernard IremongerThe commands that can be used for measuring average queue size are:
300d0dff9baSBernard Iremonger
301d0dff9baSBernard Iremonger*   qavg port X subport Y: Show average queue size per subport.
302d0dff9baSBernard Iremonger
303d0dff9baSBernard Iremonger*   qavg port X subport Y tc Z: Show average queue size per subport for a specific traffic class.
304d0dff9baSBernard Iremonger
305d0dff9baSBernard Iremonger*   qavg port X subport Y pipe Z: Show average queue size per pipe.
306d0dff9baSBernard Iremonger
307d0dff9baSBernard Iremonger*   qavg port X subport Y pipe Z tc A: Show average queue size per pipe for a specific traffic class.
308d0dff9baSBernard Iremonger
309d0dff9baSBernard Iremonger*   qavg port X subport Y pipe Z tc A q B: Show average queue size of a specific queue.
310d0dff9baSBernard Iremonger
311d0dff9baSBernard IremongerExample
312d0dff9baSBernard Iremonger~~~~~~~
313d0dff9baSBernard Iremonger
314d0dff9baSBernard IremongerThe following is an example command with a single packet flow configuration:
315d0dff9baSBernard Iremonger
316d0dff9baSBernard Iremonger.. code-block:: console
317d0dff9baSBernard Iremonger
31835b09d76SKeith Wiles    ./qos_sched -l 1,5,7 -n 4 -- --pfc "3,2,5,7" --cfg ./profile.cfg
319d0dff9baSBernard Iremonger
320d0dff9baSBernard IremongerThis example uses a single packet flow configuration which creates one RX thread on lcore 5 reading
321d0dff9baSBernard Iremongerfrom port 3 and a worker thread on lcore 7 writing to port 2.
322d0dff9baSBernard Iremonger
323d0dff9baSBernard IremongerAnother example with 2 packet flow configurations using different ports but sharing the same core for QoS scheduler is given below:
324d0dff9baSBernard Iremonger
325d0dff9baSBernard Iremonger.. code-block:: console
326d0dff9baSBernard Iremonger
32735b09d76SKeith Wiles   ./qos_sched -l 1,2,6,7 -n 4 -- --pfc "3,2,2,6,7" --pfc "1,0,2,6,7" --cfg ./profile.cfg
328d0dff9baSBernard Iremonger
329d0dff9baSBernard IremongerNote that independent cores for the packet flow configurations for each of the RX, WT and TX thread are also supported,
330d0dff9baSBernard Iremongerproviding flexibility to balance the work.
331d0dff9baSBernard Iremonger
332*cb056611SStephen HemmingerThe EAL coremask/corelist is constrained to contain the default main core 1 and the RX, WT and TX cores only.
333d0dff9baSBernard Iremonger
334d0dff9baSBernard IremongerExplanation
335d0dff9baSBernard Iremonger-----------
336d0dff9baSBernard Iremonger
337d0dff9baSBernard IremongerThe Port/Subport/Pipe/Traffic Class/Queue are the hierarchical entities in a typical QoS application:
338d0dff9baSBernard Iremonger
339d0dff9baSBernard Iremonger*   A subport represents a predefined group of users.
340d0dff9baSBernard Iremonger
341d0dff9baSBernard Iremonger*   A pipe represents an individual user/subscriber.
342d0dff9baSBernard Iremonger
343d0dff9baSBernard Iremonger*   A traffic class is the representation of a different traffic type with a specific loss rate,
344d0dff9baSBernard Iremonger    delay and jitter requirements; such as data voice, video or data transfers.
345d0dff9baSBernard Iremonger
346d0dff9baSBernard Iremonger*   A queue hosts packets from one or multiple connections of the same type belonging to the same user.
347d0dff9baSBernard Iremonger
348d0dff9baSBernard IremongerThe traffic flows that need to be configured are application dependent.
349d0dff9baSBernard IremongerThis application classifies based on the QinQ double VLAN tags and the IP destination address as indicated in the following table.
350d0dff9baSBernard Iremonger
3518c9a3374SJohn McNamara.. _table_qos_scheduler_1:
352d0dff9baSBernard Iremonger
3538c9a3374SJohn McNamara.. table:: Entity Types
354d0dff9baSBernard Iremonger
355d0dff9baSBernard Iremonger   +----------------+-------------------------+--------------------------------------------------+----------------------------------+
356d0dff9baSBernard Iremonger   | **Level Name** | **Siblings per Parent** | **QoS Functional Description**                   | **Selected By**                  |
357d0dff9baSBernard Iremonger   |                |                         |                                                  |                                  |
358d0dff9baSBernard Iremonger   +================+=========================+==================================================+==================================+
359d0dff9baSBernard Iremonger   | Port           | -                       | Ethernet port                                    | Physical port                    |
360d0dff9baSBernard Iremonger   |                |                         |                                                  |                                  |
361d0dff9baSBernard Iremonger   +----------------+-------------------------+--------------------------------------------------+----------------------------------+
362d0dff9baSBernard Iremonger   | Subport        | Config (8)              | Traffic shaped (token bucket)                    | Outer VLAN tag                   |
363d0dff9baSBernard Iremonger   |                |                         |                                                  |                                  |
364d0dff9baSBernard Iremonger   +----------------+-------------------------+--------------------------------------------------+----------------------------------+
365d0dff9baSBernard Iremonger   | Pipe           | Config (4k)             | Traffic shaped (token bucket)                    | Inner VLAN tag                   |
366d0dff9baSBernard Iremonger   |                |                         |                                                  |                                  |
367d0dff9baSBernard Iremonger   +----------------+-------------------------+--------------------------------------------------+----------------------------------+
368694fd2cbSJasvinder Singh   | Traffic Class  | 13                      | TCs of the same pipe services in strict priority | Destination IP address (0.0.0.X) |
369d0dff9baSBernard Iremonger   |                |                         |                                                  |                                  |
370d0dff9baSBernard Iremonger   +----------------+-------------------------+--------------------------------------------------+----------------------------------+
371694fd2cbSJasvinder Singh   | Queue          | High Priority TC: 1,    | Queue of lowest priority traffic                 | Destination IP address (0.0.0.X) |
372694fd2cbSJasvinder Singh   |                | Lowest Priority TC: 4   | class (Best effort) serviced in WRR              |                                  |
373d0dff9baSBernard Iremonger   +----------------+-------------------------+--------------------------------------------------+----------------------------------+
374d0dff9baSBernard Iremonger
375e0c7c473SSiobhan ButlerPlease refer to the "QoS Scheduler" chapter in the *DPDK Programmer's Guide* for more information about these parameters.
376