xref: /dpdk/doc/guides/sample_app_ug/pipeline.rst (revision 443b949e17953a1094f80532d600a1ee540f2ba4)
1..  SPDX-License-Identifier: BSD-3-Clause
2    Copyright(c) 2020 Intel Corporation.
3
4Pipeline Application
5====================
6
7Application overview
8--------------------
9
10This application showcases the features of the Software Switch (SWX) pipeline that is aligned with the P4 language.
11
12Each pipeline is created using a specification file that can either be manually developed or generated using a P4 compiler.
13
14Each pipeline is built through the CLI, either by invoking commands one by one, or through a CLI script.
15The CLI can also be used to update the pipeline tables or poll the pipeline statistics.
16
17Each pipeline is mapped to a specific application thread. Multiple pipelines can be mapped to the same thread.
18
19Running the application
20-----------------------
21
22The application startup command line is::
23
24   dpdk-pipeline [EAL_ARGS] -- [-s SCRIPT_FILE] [-h HOST] [-p PORT]
25
26The application startup arguments are:
27
28``-s SCRIPT_FILE``
29
30 * Optional: Yes
31
32 * Default: Not present
33
34 * Argument: Path to the CLI script file to be run at application startup.
35   No CLI script file will run at startup if this argument is not present.
36
37``-h HOST``
38
39 * Optional: Yes
40
41 * Default: ``0.0.0.0``
42
43 * Argument: IP Address of the host running the application to be used by
44   remote TCP based client (telnet, netcat, etc.) for connection.
45
46``-p PORT``
47
48 * Optional: Yes
49
50 * Default: ``8086``
51
52 * Argument: TCP port number at which the application is running.
53   This port number should be used by remote TCP client (such as telnet, netcat, etc.) to connect to host application.
54
55Refer to *DPDK Getting Started Guide* for general information on running applications and the Environment Abstraction Layer (EAL) options.
56
57The following is an example command to run the application configured for the VXLAN encapsulation example:
58
59.. code-block:: console
60
61    $ ./<build_dir>/examples/dpdk-pipeline -c 0x3 -- -s examples/pipeline/examples/vxlan.cli
62
63The application should start successfully and display as follows:
64
65.. code-block:: console
66
67    EAL: Detected 40 lcore(s)
68    EAL: Detected 2 NUMA nodes
69    EAL: Multi-process socket /var/run/.rte_unix
70    EAL: Probing VFIO support...
71    EAL: PCI device 0000:02:00.0 on NUMA socket 0
72    EAL:   probe driver: 8086:10fb net_ixgbe
73    ...
74
75To run remote client (e.g. telnet) to communicate with the application:
76
77.. code-block:: console
78
79    $ telnet 0.0.0.0 8086
80
81When running a telnet client as above, command prompt is displayed:
82
83.. code-block:: console
84
85    Trying 0.0.0.0...
86    Connected to 0.0.0.0.
87    Escape character is '^]'.
88
89    Welcome!
90
91    pipeline>
92
93Once application and telnet client start running, messages can be sent from client to application.
94
95
96Application stages
97------------------
98
99Initialization
100~~~~~~~~~~~~~~
101
102During this stage, EAL layer is initialised and application specific arguments are parsed. Furthermore, the data structures
103for application objects are initialized. In case of any initialization error, an error message is displayed and the application
104is terminated.
105
106Run-time
107~~~~~~~~
108
109The main thread is creating and managing all the application objects based on CLI input.
110
111Each data plane thread runs one or several pipelines previously assigned to it in round-robin order. Each data plane thread
112executes two tasks in time-sharing mode:
113
114#. *Packet processing task*: Process bursts of input packets read from the pipeline input ports.
115
116#. *Message handling task*: Periodically, the data plane thread pauses the packet processing task and polls for request
117   messages send by the main thread. Examples: add/remove pipeline to/from current data plane thread, add/delete rules
118   to/from given table of a specific pipeline owned by the current data plane thread, read statistics, etc.
119