]>
Commit | Line | Data |
---|---|---|
9f95a23c TL |
1 | .. SPDX-License-Identifier: BSD-3-Clause |
2 | Copyright(c) 2010-2017 Intel Corporation. | |
3 | ||
4 | Introduction to the DPDK Sample Applications | |
5 | ============================================ | |
6 | ||
7 | The DPDK Sample Applications are small standalone applications which | |
8 | demonstrate various features of DPDK. They can be considered as a cookbook of | |
9 | DPDK features. Users interested in getting started with DPDK can take the | |
10 | applications, try out the features, and then extend them to fit their needs. | |
11 | ||
12 | ||
13 | Running Sample Applications | |
14 | --------------------------- | |
15 | ||
16 | Some sample applications may have their own command-line parameters described in | |
17 | their respective guides, however all of them also share the same EAL parameters. | |
18 | Please refer to :doc:`../linux_gsg/linux_eal_parameters` or | |
19 | :doc:`../freebsd_gsg/freebsd_eal_parameters` for a list of available EAL | |
20 | command-line options. | |
21 | ||
22 | ||
23 | The DPDK Sample Applications | |
24 | ---------------------------- | |
25 | ||
26 | Table :numref:`table_sample_apps` shows a list of some of the main sample | |
27 | applications that are available in the examples directory of DPDK: | |
28 | ||
29 | .. _table_sample_apps: | |
30 | ||
31 | .. table:: **Some of the DPDK Sample applications** | |
32 | ||
33 | +---------------------------------------+--------------------------------------+ | |
34 | | Bonding | Netmap Compatibility | | |
35 | +---------------------------------------+--------------------------------------+ | |
36 | | Command Line | Packet Ordering | | |
37 | +---------------------------------------+--------------------------------------+ | |
38 | | Distributor | Performance Thread | | |
39 | +---------------------------------------+--------------------------------------+ | |
40 | | Ethtool | Precision Time Protocol (PTP) Client | | |
41 | +---------------------------------------+--------------------------------------+ | |
42 | | Exception Path | Quality of Service (QoS) Metering | | |
43 | +---------------------------------------+--------------------------------------+ | |
44 | | Hello World | QoS Scheduler | | |
45 | +---------------------------------------+--------------------------------------+ | |
46 | | Internet Protocol (IP) Fragmentation | Quota and Watermark | | |
47 | +---------------------------------------+--------------------------------------+ | |
48 | | IP Pipeline | RX/TX Callbacks | | |
49 | +---------------------------------------+--------------------------------------+ | |
50 | | IP Reassembly | Server node EFD | | |
51 | +---------------------------------------+--------------------------------------+ | |
52 | | IPsec Security Gateway | Basic Forwarding/Skeleton App | | |
53 | +---------------------------------------+--------------------------------------+ | |
54 | | IPv4 multicast | Tunnel End Point (TEP) termination | | |
55 | +---------------------------------------+--------------------------------------+ | |
56 | | Kernel NIC Interface | Timer | | |
57 | +---------------------------------------+--------------------------------------+ | |
58 | | Network Layer 2 Forwarding + variants | Vhost | | |
59 | +---------------------------------------+--------------------------------------+ | |
60 | | Network Layer 3 Forwarding + variants | Vhost Xen | | |
61 | +---------------------------------------+--------------------------------------+ | |
62 | | Link Status Interrupt | VMDQ Forwarding | | |
63 | +---------------------------------------+--------------------------------------+ | |
64 | | Load Balancer | VMDQ and DCB Forwarding | | |
65 | +---------------------------------------+--------------------------------------+ | |
66 | | Multi-process | VM Power Management | | |
67 | +---------------------------------------+--------------------------------------+ | |
68 | ||
69 | These examples range from simple to reasonably complex but most are designed | |
70 | to demonstrate one particular feature of DPDK. Some of the more interesting | |
71 | examples are highlighted below. | |
72 | ||
73 | ||
74 | * :doc:`Hello World<hello_world>`: As with most introductions to a | |
75 | programming framework a good place to start is with the Hello World | |
76 | application. The Hello World example sets up the DPDK Environment Abstraction | |
77 | Layer (EAL), and prints a simple "Hello World" message to each of the DPDK | |
78 | enabled cores. This application doesn't do any packet forwarding but it is a | |
79 | good way to test if the DPDK environment is compiled and set up properly. | |
80 | ||
81 | * :doc:`Basic Forwarding/Skeleton Application<skeleton>`: The Basic | |
82 | Forwarding/Skeleton contains the minimum amount of code required to enable | |
83 | basic packet forwarding with DPDK. This allows you to test if your network | |
84 | interfaces are working with DPDK. | |
85 | ||
86 | * :doc:`Network Layer 2 forwarding<l2_forward_real_virtual>`: The Network Layer 2 | |
87 | forwarding, or ``l2fwd`` application does forwarding based on Ethernet MAC | |
88 | addresses like a simple switch. | |
89 | ||
90 | * :doc:`Network Layer 3 forwarding<l3_forward>`: The Network Layer3 | |
91 | forwarding, or ``l3fwd`` application does forwarding based on Internet | |
92 | Protocol, IPv4 or IPv6 like a simple router. | |
93 | ||
94 | * :doc:`Packet Distributor<dist_app>`: The Packet Distributor | |
95 | demonstrates how to distribute packets arriving on an Rx port to different | |
96 | cores for processing and transmission. | |
97 | ||
98 | * :doc:`Multi-Process Application<multi_process>`: The | |
99 | multi-process application shows how two DPDK processes can work together using | |
100 | queues and memory pools to share information. | |
101 | ||
102 | * :doc:`RX/TX callbacks Application<rxtx_callbacks>`: The RX/TX | |
103 | callbacks sample application is a packet forwarding application that | |
104 | demonstrates the use of user defined callbacks on received and transmitted | |
105 | packets. The application calculates the latency of a packet between RX | |
106 | (packet arrival) and TX (packet transmission) by adding callbacks to the RX | |
107 | and TX packet processing functions. | |
108 | ||
109 | * :doc:`IPsec Security Gateway<ipsec_secgw>`: The IPsec Security | |
110 | Gateway application is minimal example of something closer to a real world | |
111 | example. This is also a good example of an application using the DPDK | |
112 | Cryptodev framework. | |
113 | ||
114 | * :doc:`Precision Time Protocol (PTP) client<ptpclient>`: The PTP | |
115 | client is another minimal implementation of a real world application. | |
116 | In this case the application is a PTP client that communicates with a PTP | |
117 | master clock to synchronize time on a Network Interface Card (NIC) using the | |
118 | IEEE1588 protocol. | |
119 | ||
120 | * :doc:`Quality of Service (QoS) Scheduler<qos_scheduler>`: The QoS | |
121 | Scheduler application demonstrates the use of DPDK to provide QoS scheduling. | |
122 | ||
123 | There are many more examples shown in the following chapters. Each of the | |
124 | documented sample applications show how to compile, configure and run the | |
125 | application as well as explaining the main functionality of the code. |