Removed redundant references to Intel(R) DPDK in Sample App UG.
Signed-off-by: Siobhan Butler <siobhan.a.butler@intel.com>
Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
===============================
This chapter describes the Command Line sample application that
-is part of the Intel® Data Plane Development Kit (Intel® DPDK).
+is part of the Data Plane Development Kit (DPDK).
Overview
--------
The Command Line sample application is a simple application that
-demonstrates the use of the command line interface in the Intel® DPDK.
+demonstrates the use of the command line interface in the DPDK.
This application is a readline-like interface that can be used
-to debug an Intel® DPDK application, in a Linux* application environment.
+to debug a DPDK application, in a Linux* application environment.
.. note::
export RTE_TARGET=x86_64-native-linuxapp-gcc
- Refer to the *Intel® DPDK Getting Started Guide* for possible RTE_TARGET values.
+ Refer to the *DPDK Getting Started Guide* for possible RTE_TARGET values.
#. Build the application:
$ ./build/cmdline -c f -n 4
-Refer to the *Intel® DPDK Getting Started Guide* for general information on running applications
+Refer to the *DPDK Getting Started Guide* for general information on running applications
and the Environment Abstraction Layer (EAL) options.
Explanation
Exception Path Sample Application
=================================
-The Exception Path sample application is a simple example that demonstrates the use of the Intel® DPDK
+The Exception Path sample application is a simple example that demonstrates the use of the DPDK
to set up an exception path for packets to go through the Linux* kernel.
This is done by using virtual TAP network interfaces.
-These can be read from and written to by the Intel® DPDK application and
+These can be read from and written to by the DPDK application and
appear to the kernel as a standard network interface.
Overview
export RTE_TARGET=x86_64-native-linuxapp-gcc
This application is intended as a linuxapp only.
-See the *Intel® DPDK Getting Started Guide* for possible RTE_TARGET values.
+See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
#. Build the application:
* -o OUT_CORES: A hex bitmask of cores which write to NIC
-Refer to the *Intel® DPDK Getting Started Guide* for general information on running applications
+Refer to the *DPDK Getting Started Guide* for general information on running applications
and the Environment Abstraction Layer (EAL) options.
The number of bits set in each bitmask must be the same.
Hello World Sample Application
==============================
-The Hello World sample application is an example of the simplest Intel® DPDK application that can be written.
+The Hello World sample application is an example of the simplest DPDK application that can be written.
The application simply prints an "helloworld" message on every enabled lcore.
Compiling the Application
export RTE_TARGET=x86_64-native-linuxapp-gcc
- See the *Intel® DPDK Getting Started* Guide for possible RTE_TARGET values.
+ See the *DPDK Getting Started* Guide for possible RTE_TARGET values.
#. Build the application:
$ ./build/helloworld -c f -n 4
-Refer to *Intel® DPDK Getting Started Guide* for general information on running applications
+Refer to *DPDK Getting Started Guide* for general information on running applications
and the Environment Abstraction Layer (EAL) options.
Explanation
rte_eal_mp_remote_launch(lcore_hello, NULL, CALL_MASTER);
-Refer to the *Intel® DPDK API Reference* for detailed information on the rte_eal_mp_remote_launch() function.
+Refer to the *DPDK API Reference* for detailed information on the rte_eal_mp_remote_launch() function.
================================================
This sample application demonstrates the use of the cryptographic operations provided
-by the Intel® QuickAssist Technology from within the Intel® DPDK environment.
-Therefore, building and running this application requires having both the Intel® DPDK and
+by the Intel® QuickAssist Technology from within the DPDK environment.
+Therefore, building and running this application requires having both the DPDK and
the QuickAssist Technology Software Library installed, as well as at least one
Intel® QuickAssist Technology hardware device present in the system.
Setup
~~~~~
-Building and running this application requires having both the Intel® DPDK package and
+Building and running this application requires having both the DPDK package and
the QuickAssist Technology Software Library installed,
as well as at least one Intel® QuickAssist Technology hardware device present in the system.
-For more details on how to build and run Intel® DPDK and Intel® QuickAssist Technology applications,
+For more details on how to build and run DPDK and Intel® QuickAssist Technology applications,
please refer to the following documents:
-* *Intel® DPDK Getting Started Guide*
+* *DPDK Getting Started Guide*
* Intel® Communications Chipset 8900 to 8920 Series Software for Linux* Getting Started Guide (440005)
.. code-block:: console
- export RTE_SDK=<Absolute path to the Intel DPDK installation folder>
+ export RTE_SDK=<Absolute path to the DPDK installation folder>
export ICP_ROOT=<Absolute path to the Intel QAT installation folder>
#. Set the target (a default target is used if not specified). For example:
export RTE_TARGET=x86_64-native-linuxapp-gcc
- Refer to the *Intel® DPDK Getting Started Guide* for possible RTE_TARGET values.
+ Refer to the *DPDK Getting Started Guide* for possible RTE_TARGET values.
#. Build the application:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The Intel® QuickAssist Technology configuration files used by the application are located in the config_files folder in the application folder.
-There following sets of configuration files are included in the Intel® DPDK package:
+There following sets of configuration files are included in the DPDK package:
* Stargo CRB (single CPU socket): located in the stargo folder
./build/dpdk_qat -c 0xff -n 2 -- -p 0x3 --config '(0,0,1),(1,0,2)'
-Refer to the *Intel® DPDK Test Report* for more examples of traffic generator setup and the application startup command lines.
+Refer to the *DPDK Test Report* for more examples of traffic generator setup and the application startup command lines.
If no errors are generated in response to the startup commands, the application is running correctly.
.. |quickassist_block_diagram| image:: img/quickassist_block_diagram.png
Internet Protocol (IP) Pipeline Sample Application
==================================================
-The Internet Protocol (IP) Pipeline application illustrates the use of the Intel® DPDK Packet Framework tool suite.
-The Intel® DPDK pipeline methodology is used to implement functional blocks such as
+The Internet Protocol (IP) Pipeline application illustrates the use of the DPDK Packet Framework tool suite.
+The DPDK pipeline methodology is used to implement functional blocks such as
packet RX, packet TX, flow classification, firewall,
routing, IP fragmentation, IP reassembly, etc
which are then assigned to different CPU cores and connected together to create complex multi-core applications.
Introduction
============
-This document describes the sample applications that are included in the Intel® Data Plane Development Kit (Intel® DPDK).
+This document describes the sample applications that are included in the Data Plane Development Kit (DPDK).
Each chapter describes a sample application that showcases specific functionality and
provides instructions on how to compile, run and use the sample application.
Documentation Roadmap
---------------------
-The following is a list of Intel® DPDK documents in suggested reading order:
+The following is a list of DPDK documents in suggested reading order:
* **Release Notes** : Provides release-specific information, including supported features,
limitations, fixed issues, known issues and so on.
Also, provides the answers to frequently asked questions in FAQ format.
* **Getting Started Guides** : Describes how to install and
- configure the Intel® DPDK software for your operating system;
+ configure the DPDK software for your operating system;
designed to get users up and running quickly with the software.
* **Programmer's Guide:** Describes:
* The software architecture and how to use it (through examples),
specifically in a Linux* application (linuxapp) environment.
- * The content of the Intel® DPDK, the build system
- (including the commands that can be used in the root Intel® DPDK Makefile to build the development kit and an application)
+ * The content of the DPDK, the build system
+ (including the commands that can be used in the root DPDK Makefile to build the development kit and an application)
and guidelines for porting an application.
* Optimizations used in the software and those that should be considered for new development
A glossary of terms is also provided.
-* **API Reference** : Provides detailed information about Intel® DPDK functions,
+* **API Reference** : Provides detailed information about DPDK functions,
data structures and other programming constructs.
* **Sample Applications User Guide** : Describes a set of sample applications.
===================================
The IPv4 Fragmentation application is a simple example of packet processing
-using the Intel® Data Plane Development Kit (Intel® DPDK).
+using the Data Plane Development Kit (DPDK).
The application does L3 forwarding with IPv4 and IPv6 packet fragmentation.
Overview
export RTE_TARGET=x86_64-native-linuxapp-gcc
-See the *Intel® DPDK Getting Started Guide* for possible RTE_TARGET values.
+See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
#. Build the application:
in that all the memory structures are allocated on all sockets that have active lcores on them.
-Refer to the *Intel® DPDK Getting Started Guide* for general information on running applications
+Refer to the *DPDK Getting Started Guide* for general information on running applications
and the Environment Abstraction Layer (EAL) options.
IP Reassembly Sample Application
================================
-The L3 Forwarding application is a simple example of packet processing using the Intel® DPDK.
+The L3 Forwarding application is a simple example of packet processing using the DPDK.
The application performs L3 forwarding with reassembly for fragmented IPv4 and IPv6 packets.
Overview
--------
-The application demonstrates the use of the Intel® DPDK libraries to implement packet forwarding
+The application demonstrates the use of the DPDK libraries to implement packet forwarding
with reassembly for IPv4 and IPv6 fragmented packets.
The initialization and run- time paths are very similar to those of the L2 forwarding application
(see Chapter 9 "L2 Forwarding Sample Application" for more information).
export RTE_TARGET=x86_64-native-linuxapp-gcc
-See the *Intel® DPDK Getting Started Guide* for possible RTE_TARGET values.
+See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
#. Build the application:
=================================
The IPv4 Multicast application is a simple example of packet processing
-using the Intel® Data Plane Development Kit (Intel® DPDK).
+using the Data Plane Development Kit (DPDK).
The application performs L3 multicasting.
Overview
export RTE_TARGET=x86_64-native-linuxapp-gcc
-See the *Intel® DPDK Getting Started Guide* for possible RTE_TARGET values.
+See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
#. Build the application:
* The -q option assigns 1 queue to each lcore
-Refer to the *Intel® DPDK Getting Started Guide* for general information on running applications
+Refer to the *DPDK Getting Started Guide* for general information on running applications
and the Environment Abstraction Layer (EAL) options.
Explanation
Kernel NIC Interface Sample Application
=======================================
-The Kernel NIC Interface (KNI) is an Intel® DPDK control plane solution that
+The Kernel NIC Interface (KNI) is a DPDK control plane solution that
allows userspace applications to exchange packets with the kernel networking stack.
-To accomplish this, Intel® DPDK userspace applications use an IOCTL call
+To accomplish this, DPDK userspace applications use an IOCTL call
to request the creation of a KNI virtual device in the Linux* kernel.
-The IOCTL call provides interface information and the Intel® DPDK's physical address space,
+The IOCTL call provides interface information and the DPDK's physical address space,
which is re-mapped into the kernel address space by the KNI kernel loadable module
that saves the information to a virtual device context.
-The Intel® DPDK creates FIFO queues for packet ingress and egress
+The DPDK creates FIFO queues for packet ingress and egress
to the kernel module for each device allocated.
The KNI kernel loadable module is a standard net driver,
-which upon receiving the IOCTL call access the Intel® DPDK's FIFO queue to
-receive/transmit packets from/to the Intel® DPDK userspace application.
-The FIFO queues contain pointers to data packets in the Intel® DPDK. This:
+which upon receiving the IOCTL call access the DPDK's FIFO queue to
+receive/transmit packets from/to the DPDK userspace application.
+The FIFO queues contain pointers to data packets in the DPDK. This:
* Provides a faster mechanism to interface with the kernel net stack and eliminates system calls
-* Facilitates the Intel® DPDK using standard Linux* userspace net tools (tcpdump, ftp, and so on)
+* Facilitates the DPDK using standard Linux* userspace net tools (tcpdump, ftp, and so on)
* Eliminate the copy_to_user and copy_from_user operations on packets.
The Kernel NIC Interface sample application is a simple example that demonstrates the use
-of the Intel® DPDK to create a path for packets to go through the Linux* kernel.
-This is done by creating one or more kernel net devices for each of the Intel® DPDK ports.
-The application allows the use of standard Linux tools (ethtool, ifconfig, tcpdump) with the Intel® DPDK ports and
-also the exchange of packets between the Intel® DPDK application and the Linux* kernel.
+of the DPDK to create a path for packets to go through the Linux* kernel.
+This is done by creating one or more kernel net devices for each of the DPDK ports.
+The application allows the use of standard Linux tools (ethtool, ifconfig, tcpdump) with the DPDK ports and
+also the exchange of packets between the DPDK application and the Linux* kernel.
Overview
--------
Loading the Kernel Module
-------------------------
-Loading the KNI kernel module without any parameter is the typical way an Intel® DPDK application
+Loading the KNI kernel module without any parameter is the typical way a DPDK application
gets packets into and out of the kernel net stack.
This way, only one kernel thread is created for all KNI devices for packet receiving in kernel side:
the lcore in the mask must be selected to be on the same socket as the lcores used in the KNI application.
To provide flexibility of performance, the kernel module of the KNI,
-located in the kmod sub-directory of the Intel® DPDK target directory,
+located in the kmod sub-directory of the DPDK target directory,
can be loaded with parameter of kthread_mode as follows:
* #insmod rte_kni.ko kthread_mode=single
Multiple kernel thread mode can provide scalable higher performance.
To measure the throughput in a loopback mode, the kernel module of the KNI,
-located in the kmod sub-directory of the Intel® DPDK target directory,
+located in the kmod sub-directory of the DPDK target directory,
can be loaded with parameters as follows:
* #insmod rte_kni.ko lo_mode=lo_mode_fifo
* --config="(port,lcore_rx, lcore_tx[,lcore_kthread, ...]) [, port,lcore_rx, lcore_tx[,lcore_kthread, ...]]":
Determines which lcores of RX, TX, kernel thread are mapped to which ports.
-Refer to *Intel® DPDK Getting Started Guide* for general information on running applications and the Environment Abstraction Layer (EAL) options.
+Refer to *DPDK Getting Started Guide* for general information on running applications and the Environment Abstraction Layer (EAL) options.
The -c coremask parameter of the EAL options should include the lcores indicated by the lcore_rx and lcore_tx,
but does not need to include lcores indicated by lcore_kthread as they are used to pin the kernel thread on.
#tcpdump -i vEth0_0
-When the Intel® DPDK userspace application is closed, all the KNI devices are deleted from Linux*.
+When the DPDK userspace application is closed, all the KNI devices are deleted from Linux*.
Explanation
-----------
=======================================================================
The L2 Forwarding sample application is a simple example of packet processing using
-the Intel® Data Plane Development Kit (Intel® DPDK) which
+the Data Plane Development Kit (DPDK) which
also takes advantage of Single Root I/O Virtualization (SR-IOV) features in a virtualized environment.
.. note::
Please note that previously a separate L2 Forwarding in Virtualized Environments sample application was used,
- however, in later Intel® DPDK versions these sample applications have been merged.
+ however, in later DPDK versions these sample applications have been merged.
Overview
--------
The application can also be used in a virtualized environment as shown in Figure 4.
-The L2 Forwarding application can also be used as a starting point for developing a new application based on the Intel® DPDK.
+The L2 Forwarding application can also be used as a starting point for developing a new application based on the DPDK.
.. _figure_3:
export RTE_TARGET=x86_64-native-linuxapp-gcc
- *See the Intel® DPDK Getting Started Guide* for possible RTE_TARGET values.
+ *See the DPDK Getting Started Guide* for possible RTE_TARGET values.
#. Build the application:
$ ./build/l2fwd -c f -n 4 -- -q 8 -p ffff
-Refer to the *Intel® *DPDK Getting Started Guide* for general information on running applications
+Refer to the *DPDK Getting Started Guide* for general information on running applications
and the Environment Abstraction Layer (EAL) options.
Explanation
The main part of the code in the main() function relates to the initialization of the driver.
To fully understand this code, it is recommended to study the chapters that related to the Poll Mode Driver
-in the *Intel® DPDK Programmer's Guide* - Rel 1.4 EAR and the *Intel® DPDK API Reference*.
+in the *DPDK Programmer's Guide* - Rel 1.4 EAR and the *DPDK API Reference*.
.. code-block:: c
L3 Forwarding Sample Application
================================
-The L3 Forwarding application is a simple example of packet processing using the Intel® DPDK.
+The L3 Forwarding application is a simple example of packet processing using the DPDK.
The application performs L3 forwarding.
Overview
--------
-The application demonstrates the use of the hash and LPM libraries in the Intel® DPDK to implement packet forwarding.
+The application demonstrates the use of the hash and LPM libraries in the DPDK to implement packet forwarding.
The initialization and run-time paths are very similar to those of the L2 forwarding application
(see Chapter 9 "L2 Forwarding Sample Application (in Real and Virtualized Environments)" for more information).
The main difference from the L2 Forwarding sample application is that the forwarding decision
export RTE_TARGET=x86_64-native-linuxapp-gcc
- See the *Intel® DPDK Getting Started Guide* for possible RTE_TARGET values.
+ See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
#. Build the application:
| | | | |
+----------+-----------+-----------+-------------------------------------+
-Refer to the *Intel® DPDK Getting Started Guide* for general information on running applications and
+Refer to the *DPDK Getting Started Guide* for general information on running applications and
the Environment Abstraction Layer (EAL) options.
Explanation
L3 Forwarding with Access Control Sample Application
====================================================
-The L3 Forwarding with Access Control application is a simple example of packet processing using the Intel® DPDK.
+The L3 Forwarding with Access Control application is a simple example of packet processing using the DPDK.
The application performs a security check on received packets.
Packets that are in the Access Control List (ACL), which is loaded during initialization, are dropped.
Others are forwarded to the correct port.
Overview
--------
-The application demonstrates the use of the ACL library in the Intel® DPDK to implement access control
+The application demonstrates the use of the ACL library in the DPDK to implement access control
and packet L3 forwarding.
The application loads two types of rules at initialization:
export RTE_TARGET=x86_64-native-linuxapp-gcc
- See the *Intel® DPDK IPL Getting Started Guide* for possible RTE_TARGET values.
+ See the *DPDK IPL Getting Started Guide* for possible RTE_TARGET values.
#. Build the application:
Introduction
------------
-The L3 Forwarding with Power Management application is an example of power-aware packet processing using the Intel® DPDK.
+The L3 Forwarding with Power Management application is an example of power-aware packet processing using the DPDK.
The application is based on existing L3 Forwarding sample application,
with the power management algorithms to control the P-states and
C-states of the Intel processor via a power management library.
Overview
--------
-The application demonstrates the use of the Power libraries in the Intel® DPDK to implement packet forwarding.
+The application demonstrates the use of the Power libraries in the DPDK to implement packet forwarding.
The initialization and run-time paths are very similar to those of the L3 forwarding sample application
(see Chapter 10 "L3 Forwarding Sample Application" for more information).
The main difference from the L3 Forwarding sample application is that this application introduces power-aware optimization algorithms
by leveraging the Power library to control P-state and C-state of processor based on packet load.
-The Intel® DPDK includes poll-mode drivers to configure Intel NIC devices and their receive (Rx) and transmit (Tx) queues.
+The DPDK includes poll-mode drivers to configure Intel NIC devices and their receive (Rx) and transmit (Tx) queues.
The design principle of this PMD is to access the Rx and Tx descriptors directly without any interrupts to quickly receive,
process and deliver packets in the user space.
-In general, the Intel® DPDK executes an endless packet processing loop on dedicated IA cores that include the following steps:
+In general, the DPDK executes an endless packet processing loop on dedicated IA cores that include the following steps:
* Retrieve input packets through the PMD to poll Rx queue
If configured correctly, according to system workload, this feature provides power savings.
CPUFreq is the infrastructure provided by the Linux* kernel to control the processor performance state capability.
CPUFreq supports a user space governor that enables setting frequency via manipulating the virtual file device from a user space application.
-The Power library in the Intel® DPDK provides a set of APIs for manipulating a virtual file device to allow user space application
+The Power library in the DPDK provides a set of APIs for manipulating a virtual file device to allow user space application
to set the CPUFreq governor and set the frequency of specific cores.
This application includes a P-state power management algorithm to generate a frequency hint to be sent to CPUFreq.
The algorithm uses the number of received and available Rx packets on recent polls to make a heuristic decision to scale frequency up/down.
-Specifically, some thresholds are checked to see whether a specific core running an Intel® DPDK polling thread needs to increase frequency
+Specifically, some thresholds are checked to see whether a specific core running an DPDK polling thread needs to increase frequency
a step up based on the near to full trend of polled Rx queues.
Also, it decreases frequency a step if packet processed per loop is far less than the expected threshold
or the thread's sleeping time exceeds a threshold.
export RTE_TARGET=x86_64-native-linuxapp-gcc
- See the *Intel® DPDK Getting Started Guide* for possible RTE_TARGET values.
+ See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
#. Build the application:
Monitoring Loads of Rx Queues
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-In general, the polling nature of the Intel® DPDK prevents the OS power management subsystem from knowing
+In general, the polling nature of the DPDK prevents the OS power management subsystem from knowing
if the network load is actually heavy or light.
In this sample, sampling network load work is done by monitoring received and
available descriptors on NIC Rx queues in recent polls.
L3 Forwarding in a Virtualization Environment Sample Application
================================================================
-The L3 Forwarding in a Virtualization Environment sample application is a simple example of packet processing using the Intel® DPDK.
+The L3 Forwarding in a Virtualization Environment sample application is a simple example of packet processing using the DPDK.
The application performs L3 forwarding that takes advantage of Single Root I/O Virtualization (SR-IOV) features
in a virtualized environment.
Overview
--------
-The application demonstrates the use of the hash and LPM libraries in the Intel® DPDK to implement packet forwarding.
+The application demonstrates the use of the hash and LPM libraries in the DPDK to implement packet forwarding.
The initialization and run-time paths are very similar to those of the L3 forwarding application
(see Chapter 10 "L3 Forwarding Sample Application" for more information).
The forwarding decision is taken based on information read from the input packet.
export RTE_TARGET=x86_64-native-linuxapp-gcc
- See the *Intel® DPDK Getting Started Guide* for possible RTE_TARGET values.
+ See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
#. Build the application:
| | | | |
+----------+-----------+-----------+------------------------------------+
-Refer to the *Intel® DPDK Getting Started Guide* for general information on running applications
+Refer to the *DPDK Getting Started Guide* for general information on running applications
and the Environment Abstraction Layer (EAL) options.
Explanation
========================================
The Link Status Interrupt sample application is a simple example of packet processing using
-the Intel® Data Plane Development Kit (Intel® DPDK) that
+the Data Plane Development Kit (DPDK) that
demonstrates how network link status changes for a network port can be captured and
-used by an Intel® DPDK application.
+used by a DPDK application.
Overview
--------
export RTE_TARGET=x86_64-native-linuxapp-gcc
- See the *Intel® DPDK Getting Started Guide* for possible RTE_TARGET values.
+ See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
#. Build the application:
$ ./build/link_status_interrupt -c f -n 4-- -q 8 -p ffff
-Refer to the *Intel® DPDK Getting Started Guide* for general information on running applications
+Refer to the *DPDK Getting Started Guide* for general information on running applications
and the Environment Abstraction Layer (EAL) options.
Explanation
The main part of the code in the main() function relates to the initialization of the driver.
To fully understand this code, it is recommended to study the chapters that related to the Poll Mode Driver in the
-*Intel® DPDK Programmer's Guide and the Intel® DPDK API Reference*.
+*DPDK Programmer's Guide and the DPDK API Reference*.
.. code-block:: c
.. code-block:: console
- export RTE_SDK=<Path to the Intel DPDK installation folder>
+ export RTE_SDK=<Path to the DPDK installation folder>
export RTE_TARGET=x86_64-native-linuxapp-gcc
#. Build the application executable file:
cd ${RTE_SDK}/examples/load_balancer make
- For more details on how to build the Intel® DPDK libraries and sample applications,
- please refer to the *Intel® DPDK Getting Started Guide.*
+ For more details on how to build the DPDK libraries and sample applications,
+ please refer to the *DPDK Getting Started Guide.*
Running the Application
-----------------------
To successfully run the application,
the command line used to start the application has to be in sync with the traffic flows configured on the traffic generator side.
-For examples of application command lines and traffic generator flows, please refer to the Intel® DPDK Test Report.
-For more details on how to set up and run the sample applications provided with Intel® DPDK package,
-please refer to the *Intel® DPDK Getting Started Guide*.
+For examples of application command lines and traffic generator flows, please refer to the DPDK Test Report.
+For more details on how to set up and run the sample applications provided with DPDK package,
+please refer to the *DPDK Getting Started Guide*.
Explanation
-----------
Multi-process Sample Application
================================
-This chapter describes the example applications for multi-processing that are included in the Intel® DPDK.
+This chapter describes the example applications for multi-processing that are included in the DPDK.
Example Applications
--------------------
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The multi-process example applications are built in the same way as other sample applications,
-and as documented in the *Intel® DPDK Getting Started Guide*.
+and as documented in the *DPDK Getting Started Guide*.
To build all the example applications:
#. Set RTE_SDK and go to the example directory:
export RTE_TARGET=x86_64-native-linuxapp-gcc
- See the *Intel® DPDK Getting Started Guide* for possible RTE_TARGET values.
+ See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
#. Build the applications:
Basic Multi-process Example
~~~~~~~~~~~~~~~~~~~~~~~~~~~
-The examples/simple_mp folder in the Intel® DPDK release contains a basic example application to demonstrate how
-two Intel® DPDK processes can work together using queues and memory pools to share information.
+The examples/simple_mp folder in the DPDK release contains a basic example application to demonstrate how
+two DPDK processes can work together using queues and memory pools to share information.
Running the Application
^^^^^^^^^^^^^^^^^^^^^^^
./build/simple_mp -c 3 -n 4 --proc-type=primary
-For the first Intel® DPDK process run, the proc-type flag can be omitted or set to auto,
-since all Intel® DPDK processes will default to being a primary instance,
+For the first DPDK process run, the proc-type flag can be omitted or set to auto,
+since all DPDK processes will default to being a primary instance,
meaning they have control over the hugepage shared memory regions.
The process should start successfully and display a command prompt as follows:
Symmetric Multi-process Example
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-The second example of Intel® DPDK multi-process support demonstrates how a set of processes can run in parallel,
+The second example of DPDK multi-process support demonstrates how a set of processes can run in parallel,
with each process performing the same set of packet- processing operations.
(Since each process is identical in functionality to the others,
we refer to this as symmetric multi-processing, to differentiate it from asymmetric multi- processing -
Client-Server Multi-process Example
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-The third example multi-process application included with the Intel® DPDK shows how one can
+The third example multi-process application included with the DPDK shows how one can
use a client-server type multi-process design to do packet processing.
In this example, a single server process performs the packet reception from the ports being used and
distributes these packets using round-robin ordering among a set of client processes,
Master-slave Multi-process Example
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-The fourth example of Intel® DPDK multi-process support demonstrates a master-slave model that
+The fourth example of DPDK multi-process support demonstrates a master-slave model that
provide the capability of application recovery if a slave process crashes or meets unexpected conditions.
In addition, it also demonstrates the floating process,
which can run among different cores in contrast to the traditional way of binding a process/thread to a specific CPU core,
Before talking about the recovery mechanism, it is necessary to know what is needed before a new slave instance can run if a previous one exited.
When a slave process exits, the system returns all the resources allocated for this process automatically.
-However, this does not include the resources that were allocated by the Intel® DPDK. All the hardware resources are shared among the processes,
+However, this does not include the resources that were allocated by the DPDK. All the hardware resources are shared among the processes,
which include memzone, mempool, ring, a heap buffer allocated by the rte_malloc library, and so on.
If the new instance runs and the allocated resource is not returned, either resource allocation failed or the hardware resource is lost forever.
Floating Process Support
^^^^^^^^^^^^^^^^^^^^^^^^
-When the Intel® DPDK application runs, there is always a -c option passed in to indicate the cores that are enabled.
-Then, the Intel® DPDK creates a thread for each enabled core.
+When the DPDK application runs, there is always a -c option passed in to indicate the cores that are enabled.
+Then, the DPDK creates a thread for each enabled core.
By doing so, it creates a 1:1 mapping between the enabled core and each thread.
-The enabled core always has an ID, therefore, each thread has a unique core ID in the Intel® DPDK execution environment.
+The enabled core always has an ID, therefore, each thread has a unique core ID in the DPDK execution environment.
With the ID, each thread can easily access the structures or resources exclusively belonging to it without using function parameter passing.
It can easily use the rte_lcore_id() function to get the value in every function that is called.
For threads/processes not created in that way, either pinned to a core or not, they will not own a unique ID and the
rte_lcore_id() function will not work in the correct way.
However, sometimes these threads/processes still need the unique ID mechanism to do easy access on structures or resources.
-For example, the Intel® DPDK mempool library provides a local cache mechanism
-(refer to *Intel® DPDK Programmer's Guide* , Section 6.4, "Local Cache")
+For example, the DPDK mempool library provides a local cache mechanism
+(refer to *DPDK Programmer's Guide* , Section 6.4, "Local Cache")
for fast element allocation and freeing.
If using a non-unique ID or a fake one,
a race condition occurs if two or more threads/ processes with the same core ID try to use the local cache.
To avoid producing redundant code, the Master-Slave process model is still used to spawn floating processes,
then cancel the affinity to specific cores.
-Besides that, clear the core ID assigned to the Intel® DPDK spawning a thread that has a 1:1 mapping with the core mask.
+Besides that, clear the core ID assigned to the DPDK spawning a thread that has a 1:1 mapping with the core mask.
Thereafter, get a new core ID from the unused core ID allocation array.
Run the Application
------------
The Netmap compatibility library provides a minimal set of APIs to give the ability to programs written against the Netmap APIs
-to be run with minimal changes to their source code, using the Intel® DPDK to perform the actual packet I/O.
+to be run with minimal changes to their source code, using the DPDK to perform the actual packet I/O.
Since Netmap applications use regular system calls, like open(), ioctl() and
mmap() to communicate with the Netmap kernel module performing the packet I/O,
the compat_netmap library provides a set of similar APIs to use in place of those system calls,
-effectively turning a Netmap application into a Intel® DPDK one.
+effectively turning a Netmap application into a DPDK one.
The provided library is currently minimal and doesn't support all the features that Netmap supports,
but is enough to run simple applications, such as the bridge example detailed below.
Caveats
-------
-Given the difference between the way Netmap and the Intel® DPDK approach packet I/O,
+Given the difference between the way Netmap and the DPDK approach packet I/O,
there are caveats and limitations to be aware of when trying to use the compat_netmap library, the most important of which are listed below.
Additional caveats are presented in the $RTE_SDK/examples/netmap_compat/README.md file.
These can change as the library is updated:
Note that:
-* rte_netmap_mmap() merely returns the address of a Intel® DPDK memzone.
+* rte_netmap_mmap() merely returns the address of a DPDK memzone.
The address, length, flags, offset, and so on arguments are therefore ignored completely.
* rte_netmap_poll() only supports infinite (negative) or zero time outs.
- It effectively turns calls to the poll() system call made in a Netmap application into polling of the Intel® DPDK ports,
+ It effectively turns calls to the poll() system call made in a Netmap application into polling of the DPDK ports,
changing the semantics of the usual POSIX defined poll.
* Not all of Netmap's features are supported: "host rings",
- slot flags and so on are not supported or are simply not relevant in the Intel® DPDK model.
+ slot flags and so on are not supported or are simply not relevant in the DPDK model.
* The Netmap manual page states that "a device obtained through /dev/netmap also supports the ioctl supported by network devices".
It is not the case with this compatibility layer.
* Changing the system calls to use their compat_netmap library counterparts
-* Adding further Intel® DPDK initialization code
+* Adding further DPDK initialization code
Since the compat_netmap functions have the same signature as the usual libc calls, the change is in most cases trivial.
-The usual Intel® DPDK initialization code involving rte_eal_init() and rte_eal_pci_probe()
-has to be added to the Netmap application in the same way it is used in all other Intel® DPDK sample applications.
-Please refer to the *Intel® DPDK Programmer's Guide* - Rel 1.4 EAR and example source code for details about initialization.
+The usual DPDK initialization code involving rte_eal_init() and rte_eal_pci_probe()
+has to be added to the Netmap application in the same way it is used in all other DPDK sample applications.
+Please refer to the *DPDK Programmer's Guide* - Rel 1.4 EAR and example source code for details about initialization.
-In addition of the regular Intel® DPDK initialization code,
+In addition of the regular DPDK initialization code,
the ported application needs to call initialization functions for the compat_netmap library,
namely rte_netmap_init() and rte_netmap_init_port().
They are definedin $RTE_SDK/examples/netmap_compat/ lib/compat_netmap.h.
The bridge application is an example largely based on the bridge example shipped with the Netmap distribution.
-It shows how a minimal Netmap application with minimal and straightforward source code changes can be run on top of the Intel® DPDK.
+It shows how a minimal Netmap application with minimal and straightforward source code changes can be run on top of the DPDK.
Please refer to $RTE_SDK/examples/netmap_compat/bridge/bridge.c for an example of ported application.
Compiling the "bridge" Sample Application
export RTE_TARGET=x86_64-native-linuxapp-gcc
- See the *Intel® DPDK Getting Started Guide* for possible RTE_TARGET values.
+ See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
#. Build the application:
where,
-* -p INTERFACE is the number of a valid Intel® DPDK port to use.
+* -p INTERFACE is the number of a valid DPDK port to use.
If a single -p parameter is given, the interface will send back all the traffic it receives.
If two -p parameters are given, the two interfaces form a bridge,
./build/packet_ordering [EAL options] -- -p 0 -p 2
-Refer to the *Intel® DPDK Getting Started Guide* for general information on running applications and
+Refer to the *DPDK Getting Started Guide* for general information on running applications and
the Environment Abstraction Layer (EAL) options.
Note that unlike a traditional bridge or the l2fwd sample application, no MAC address changes are done on the frames.
QoS Metering Sample Application
===============================
-The QoS meter sample application is an example that demonstrates the use of Intel® DPDK to provide QoS marking and metering,
+The QoS meter sample application is an example that demonstrates the use of DPDK to provide QoS marking and metering,
as defined by RFC2697 for Single Rate Three Color Marker (srTCM) and RFC 2698 for Two Rate Three Color Marker (trTCM) algorithm.
Overview
The application is constrained to use a single core in the EAL core mask and 2 ports only in the application port mask
(first port from the port mask is used for RX and the other port in the core mask is used for TX).
-Refer to *Intel® DPDK Getting Started Guide* for general information on running applications and
+Refer to *DPDK Getting Started Guide* for general information on running applications and
the Environment Abstraction Layer (EAL) options.
Explanation
QoS Scheduler Sample Application
================================
-The QoS sample application demonstrates the use of the Intel® DPDK to provide QoS scheduling.
+The QoS sample application demonstrates the use of the DPDK to provide QoS scheduling.
Overview
--------
* --cfg FILE: Profile configuration to load
-Refer to *Intel®DPDK Getting Started Guide* for general information on running applications and
+Refer to *DPDK Getting Started Guide* for general information on running applications and
the Environment Abstraction Layer (EAL) options.
The profile configuration file defines all the port/subport/pipe/traffic class/queue parameters
| | | | |
+----------------+-------------------------+--------------------------------------------------+----------------------------------+
-Please refer to the "QoS Scheduler" chapter in the *Intel® DPDK Programmer's Guide* for more information about these parameters.
+Please refer to the "QoS Scheduler" chapter in the *DPDK Programmer's Guide* for more information about these parameters.
.. |qos_sched_app_arch| image:: img/qos_sched_app_arch.png
Quota and Watermark Sample Application
======================================
-The Quota and Watermark sample application is a simple example of packet processing using Intel® Data Plane Development Kit (Intel® DPDK) that
+The Quota and Watermark sample application is a simple example of packet processing using Data Plane Development Kit (DPDK) that
showcases the use of a quota as the maximum number of packets enqueue/dequeue at a time and low and high watermarks
to signal low and high ring usage respectively.
export RTE_TARGET=x86_64-native-linuxapp-gcc
- See the *Intel® DPDK Getting Started Guide* for possible RTE_TARGET values.
+ See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
#. Build the application:
./qw/build/qw -c f -n 4 -- -p 5
-Refer to the *Intel® DPDK Getting Started Guide* for general information on running applications and
+Refer to the *DPDK Getting Started Guide* for general information on running applications and
the Environment Abstraction Layer (EAL) options.
Running the Control Application
./qwctl/build/qwctl -c 1 -n 4 --proc-type=secondary
-Refer to the *Intel® DPDK Getting Started* Guide for general information on running applications and
+Refer to the *DPDK Getting Started* Guide for general information on running applications and
the Environment Abstraction Layer (EAL) options.
qwctl is an interactive command line that let the user change variables in a running instance of qw.
}
To fully understand this code, it is recommended to study the chapters that relate to the *Poll Mode Driver*
-in the *Intel® DPDK Getting Started Guide* and the *Intel® DPDK API Reference*.
+in the *DPDK Getting Started Guide* and the *DPDK API Reference*.
Shared Variables Setup
^^^^^^^^^^^^^^^^^^^^^^
pair_ports();
The configure_eth_port() and init_ring() functions are used to configure a port and a ring respectively and are defined in init.c.
-They make use of the Intel® DPDK APIs defined in rte_eth.h and rte_ring.h.
+They make use of the DPDK APIs defined in rte_eth.h and rte_ring.h.
pair_ports() builds the port_pairs[] array so that its key-value pairs are a mapping between reception and transmission ports.
It is defined in init.c.
Test Pipeline Application
=========================
-The Test Pipeline application illustrates the use of the Intel® DPDK Packet Framework tool suite.
-Its purpose is to demonstrate the performance of single-table Intel® DPDK pipelines.
+The Test Pipeline application illustrates the use of the DPDK Packet Framework tool suite.
+Its purpose is to demonstrate the performance of single-table DPDK pipelines.
Overview
--------
* Core A ("RX core") receives traffic from the NIC ports and feeds core B with traffic through SW queues.
-* Core B ("Pipeline core") implements a single-table Intel® DPDK pipeline
+* Core B ("Pipeline core") implements a single-table DPDK pipeline
whose type is selectable through specific command line parameter.
Core B receives traffic from core A through software queues,
processes it according to the actions configured in the table entries that
| **#** | **TABLE_TYPE** | **Description of Core B Table** | **Pre-added Table Entries** |
| | | | |
+=======+========================+==========================================================+=======================================================+
-| 1 | none | Core B is not implementing an Intel® DPDK pipeline. | N/A |
+| 1 | none | Core B is not implementing a DPDK pipeline. | N/A |
| | | Core B is implementing a pass-through from its input set | |
| | | of software queues to its output set of software queues. | |
| | | | |
+-------+------------------------+----------------------------------------------------------+-------------------------------------------------------+
| 2 | stub | Stub table. Core B is implementing the same pass-through | N/A |
| | | functionality as described for the "none" option by | |
-| | | using the Intel® DPDK Packet Framework by using one | |
+| | | using the DPDK Packet Framework by using one | |
| | | stub table for each input NIC port. | |
| | | | |
+-------+------------------------+----------------------------------------------------------+-------------------------------------------------------+
Timer Sample Application
========================
-The Timer sample application is a simple application that demonstrates the use of a timer in an Intel® DPDK application.
+The Timer sample application is a simple application that demonstrates the use of a timer in a DPDK application.
This application prints some messages from different lcores regularly, demonstrating the use of timers.
Compiling the Application
export RTE_TARGET=x86_64-native-linuxapp-gcc
- See the *Intel® DPDK Getting Started Guide* for possible *RTE_TARGET* values.
+ See the *DPDK Getting Started Guide* for possible *RTE_TARGET* values.
#. Build the application:
$ ./build/timer -c f -n 4
-Refer to the *Intel® DPDK Getting Started Guide* for general information on running applications and
+Refer to the *DPDK Getting Started Guide* for general information on running applications and
the Environment Abstraction Layer (EAL) options.
Explanation
Vhost Sample Application
========================
-The vhost sample application demonstrates integration of the Intel® Data Plane Development Kit (Intel® DPDK)
+The vhost sample application demonstrates integration of the Data Plane Development Kit (DPDK)
with the Linux* KVM hypervisor by implementing the vhost-net offload API.
The sample application performs simple packet switching between virtual machines based on Media Access Control
(MAC) address or Virtual Local Area Network (VLAN) tag.
Sample Code Overview
--------------------
-The Intel® DPDK vhost-net sample code demonstrates KVM (QEMU) offloading the servicing of a Virtual Machine's (VM's)
-virtio-net devices to an Intel® DPDK-based application in place of the kernel's vhost-net module.
+The DPDK vhost-net sample code demonstrates KVM (QEMU) offloading the servicing of a Virtual Machine's (VM's)
+virtio-net devices to a DPDK-based application in place of the kernel's vhost-net module.
-The Intel® DPDK vhost-net sample code is a simple packet switching application with the following features:
+The DPDK vhost-net sample code is a simple packet switching application with the following features:
* Management of virtio-net device creation/destruction events.
-* Mapping of the VM's physical memory into the Intel® DPDK vhost-net sample code's address space.
+* Mapping of the VM's physical memory into the DPDK vhost-net sample code's address space.
* Triggering/receiving notifications to/from VMs via eventfds.
**Vhost Sample Code**
-In this section, we create a second hugetlbs mount point to allocate hugepages for the Intel® DPDK vhost sample code.
+In this section, we create a second hugetlbs mount point to allocate hugepages for the DPDK vhost sample code.
-#. Allocate sufficient 2 MB pages for the Intel® DPDK vhost sample code:
+#. Allocate sufficient 2 MB pages for the DPDK vhost sample code:
.. code-block:: console
Setting up the Guest Execution Environment
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-It is recommended for testing purposes that the Intel® DPDK testpmd sample application is used in the guest to forward packets,
+It is recommended for testing purposes that the DPDK testpmd sample application is used in the guest to forward packets,
the reasons for this are discussed in Section 22.7, "Running the Virtual Machine (QEMU)".
The testpmd application forwards packets between pairs of Ethernet devices,
export RTE_TARGET=x86_64-native-linuxapp-gcc
- See the Intel® DPDK Getting Started Guide for possible RTE_TARGET values.
+ See the DPDK Getting Started Guide for possible RTE_TARGET values.
#. Build the application:
.. note::
- Please note the huge-dir parameter instructs the Intel® DPDK to allocate its memory from the 2 MB page hugetlbfs.
+ Please note the huge-dir parameter instructs the DPDK to allocate its memory from the 2 MB page hugetlbfs.
Parameters
~~~~~~~~~~
**Basename and Index.**
-The Intel® DPDK vhost-net sample code uses a Linux* character device to communicate with QEMU.
+The DPDK vhost-net sample code uses a Linux* character device to communicate with QEMU.
The basename and the index are used to generate the character devices name.
/dev/<basename>-<index>
user@target:~$ qemu-system-x86_64 ... -device virtio-net-pci, netdev=hostnet1,id=net1,csum=off,gso=off,guest_tso4=off,guest_ tso6=off,guest_ecn=off
-* Redirect QEMU to communicate with the Intel® DPDK vhost-net sample code in place of the vhost-net kernel module.
+* Redirect QEMU to communicate with the DPDK vhost-net sample code in place of the vhost-net kernel module.
.. code-block:: console
Mapping the Virtual Machine's Memory
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-For the Intel® DPDK vhost-net sample code to be run correctly, QEMU must allocate the VM's memory on hugetlbfs.
+For the DPDK vhost-net sample code to be run correctly, QEMU must allocate the VM's memory on hugetlbfs.
This is done by specifying mem-prealloc and mem-path when executing QEMU.
The vhost-net sample code accesses the virtio-net device's virtual rings and packet buffers
by finding and mapping the VM's physical memory on hugetlbfs.
<driver name="vhost"/>
<interface/>
- * Enable libvirt to access the Intel® DPDK Vhost sample code's character device file by adding it
+ * Enable libvirt to access the DPDK Vhost sample code's character device file by adding it
to controllers cgroup for libvirtd using the following steps:
.. code-block:: xml
emul_path = "/usr/local/bin/qemu-system-x86_64"
- * Configure the "us_vhost_path" variable to point to the Intel® DPDK vhost- net sample code's character devices name.
- Intel® DPDK vhost-net sample code's character device will be in the format "/dev/<basename>-<index>".
+ * Configure the "us_vhost_path" variable to point to the DPDK vhost- net sample code's character devices name.
+ DPDK vhost-net sample code's character device will be in the format "/dev/<basename>-<index>".
.. code-block:: xml
The command above indicates how many hugepages are free to support QEMU's allocation request.
-Running Intel® DPDK in the Virtual Machine
-------------------------------------------
+Running DPDK in the Virtual Machine
+-----------------------------------
-For the Intel® DPDK vhost-net sample code to switch packets into the VM,
+For the DPDK vhost-net sample code to switch packets into the VM,
the sample code must first learn the MAC address of the VM's virtio-net device.
The sample code detects the address from packets being transmitted from the VM, similar to a learning switch.
This behavior requires no special action or configuration with the Linux* virtio-net driver in the VM
as the Linux* Kernel will automatically transmit packets during device initialization.
-However, Intel® DPDK-based applications must be modified to automatically transmit packets during initialization
-to facilitate the Intel® DPDK vhost- net sample code's MAC learning.
+However, DPDK-based applications must be modified to automatically transmit packets during initialization
+to facilitate the DPDK vhost- net sample code's MAC learning.
-The Intel® DPDK testpmd application can be configured to automatically transmit packets during initialization
+The DPDK testpmd application can be configured to automatically transmit packets during initialization
and to act as an L2 forwarding switch.
Testpmd MAC Forwarding
To resolve this issue, a "wait and retry" mode is implemented in the testpmd and vhost sample code.
In the "wait and retry" mode if the virtqueue is found to be full, then testpmd waits for a period of time before retrying to enqueue packets.
-The "wait and retry" algorithm is implemented in Intel® DPDK testpmd as a forwarding method call "mac_retry".
+The "wait and retry" algorithm is implemented in DPDK testpmd as a forwarding method call "mac_retry".
The following sequence diagram describes the algorithm in detail.
.. _figure_20:
Running Testpmd
~~~~~~~~~~~~~~~
-The testpmd application is automatically built when Intel® DPDK is installed.
+The testpmd application is automatically built when DPDK is installed.
Run the testpmd application as follows:
.. code-block:: console
testpmd> set fwd mac_retry
The testpmd can then be configured to start processing packets,
-transmitting packets first so the Intel® DPDK vhost sample code on the host can learn the MAC address:
+transmitting packets first so the DPDK vhost sample code on the host can learn the MAC address:
.. code-block:: console
For a virtio-net device to receive traffic,
the traffic's Layer 2 header must include both the virtio-net device's MAC address and VLAN tag.
-The Intel® DPDK sample code behaves in a similar manner to a learning switch in that
+The DPDK sample code behaves in a similar manner to a learning switch in that
it learns the MAC address of the virtio-net devices from the first transmitted packet.
On learning the MAC address,
-the Intel® DPDK vhost sample code prints a message with the MAC address and VLAN tag virtio-net device.
+the DPDK vhost sample code prints a message with the MAC address and VLAN tag virtio-net device.
For example:
.. code-block:: console
The above message indicates that device 0 has been registered with MAC address cc:bb:bb:bb:bb:bb and VLAN tag 1000.
Any packets received on the NIC with these values is placed on the devices receive queue.
-When a virtio-net device transmits packets, the VLAN tag is added to the packet by the Intel® DPDK vhost sample code.
+When a virtio-net device transmits packets, the VLAN tag is added to the packet by the DPDK vhost sample code.
.. |vhost_net_arch| image:: img/vhost_net_arch.png
VMDQ and DCB Forwarding Sample Application
==========================================
-The VMDQ and DCB Forwarding sample application is a simple example of packet processing using the Intel® DPDK.
+The VMDQ and DCB Forwarding sample application is a simple example of packet processing using the DPDK.
The application performs L2 forwarding using VMDQ and DCB to divide the incoming traffic into 128 queues.
The traffic splitting is performed in hardware by the VMDQ and DCB features of the Intel® 82599 10 Gigabit Ethernet Controller.
Overview
--------
-This sample application can be used as a starting point for developing a new application that is based on the Intel® DPDK and
+This sample application can be used as a starting point for developing a new application that is based on the DPDK and
uses VMDQ and DCB for traffic partitioning.
The VMDQ and DCB filters work on VLAN traffic to divide the traffic into 128 input queues on the basis of the VLAN ID field and
Then, DCB places each packet into one of either 4 or 8 queues within that group, based upon the VLAN user priority field.
In either case, 16 groups of 8 queues, or 32 groups of 4 queues, the traffic can be split into 128 hardware queues on the NIC,
-each of which can be polled individually by an Intel® DPDK application.
+each of which can be polled individually by a DPDK application.
All traffic is read from a single incoming port (port 0) and output on port 1, without any processing being performed.
The traffic is split into 128 queues on input, where each thread of the application reads from multiple queues.
export RTE_TARGET=x86_64-native-linuxapp-gcc
- See the *Intel® DPDK Getting Started Guide* for possible RTE_TARGET values.
+ See the *DPDK Getting Started Guide* for possible RTE_TARGET values.
#. Build the application:
user@target:~$ ./build/vmdq_dcb -c f -n 4 -- -p 0x3 --nb-pools 16
-Refer to the *Intel® DPDK Getting Started Guide* for general information on running applications and
+Refer to the *DPDK Getting Started Guide* for general information on running applications and
the Environment Abstraction Layer (EAL) options.
Explanation