doc: remove Intel references from sample apps guide

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 commit is contained in:
Siobhan Butler 2014-12-18 10:51:19 +00:00 committed by Thomas Monjalon
parent bd89cca3ca
commit e0c7c47319
26 changed files with 176 additions and 176 deletions

View File

@ -32,15 +32,15 @@ Command Line Sample Application
=============================== ===============================
This chapter describes the Command Line sample application that 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 Overview
-------- --------
The Command Line sample application is a simple application that 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 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:: .. note::
@ -81,7 +81,7 @@ Compiling the Application
export RTE_TARGET=x86_64-native-linuxapp-gcc 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 the application:
@ -98,7 +98,7 @@ To run the application in linuxapp environment, issue the following command:
$ ./build/cmdline -c f -n 4 $ ./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. and the Environment Abstraction Layer (EAL) options.
Explanation Explanation

View File

@ -31,10 +31,10 @@
Exception Path Sample Application 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. to set up an exception path for packets to go through the Linux* kernel.
This is done by using virtual TAP network interfaces. 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. appear to the kernel as a standard network interface.
Overview Overview
@ -74,7 +74,7 @@ Compiling the Application
export RTE_TARGET=x86_64-native-linuxapp-gcc export RTE_TARGET=x86_64-native-linuxapp-gcc
This application is intended as a linuxapp only. 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: #. Build the application:
@ -99,7 +99,7 @@ where:
* -o OUT_CORES: A hex bitmask of cores which write to NIC * -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. and the Environment Abstraction Layer (EAL) options.
The number of bits set in each bitmask must be the same. The number of bits set in each bitmask must be the same.

View File

@ -31,7 +31,7 @@
Hello World Sample Application 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. The application simply prints an "helloworld" message on every enabled lcore.
Compiling the Application Compiling the Application
@ -50,7 +50,7 @@ Compiling the Application
export RTE_TARGET=x86_64-native-linuxapp-gcc 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 the application:
@ -67,7 +67,7 @@ To run the example in a linuxapp environment:
$ ./build/helloworld -c f -n 4 $ ./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. and the Environment Abstraction Layer (EAL) options.
Explanation Explanation
@ -135,4 +135,4 @@ The following code is equivalent and simpler:
rte_eal_mp_remote_launch(lcore_hello, NULL, CALL_MASTER); 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.

View File

@ -32,8 +32,8 @@ Intel® QuickAssist Technology Sample Application
================================================ ================================================
This sample application demonstrates the use of the cryptographic operations provided This sample application demonstrates the use of the cryptographic operations provided
by the Intel® QuickAssist Technology from within the Intel® DPDK environment. by the Intel® QuickAssist Technology from within the DPDK environment.
Therefore, building and running this application requires having both the Intel® DPDK and Therefore, building and running this application requires having both the DPDK and
the QuickAssist Technology Software Library installed, as well as at least one the QuickAssist Technology Software Library installed, as well as at least one
Intel® QuickAssist Technology hardware device present in the system. Intel® QuickAssist Technology hardware device present in the system.
@ -102,14 +102,14 @@ For the cryptographic path, it is the payload of the IPv4 packet that is encrypt
Setup 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, the QuickAssist Technology Software Library installed,
as well as at least one Intel® QuickAssist Technology hardware device present in the system. 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: 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) * Intel® Communications Chipset 8900 to 8920 Series Software for Linux* Getting Started Guide (440005)
@ -127,7 +127,7 @@ Steps to build the application:
.. code-block:: console .. 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> export ICP_ROOT=<Absolute path to the Intel QAT installation folder>
#. Set the target (a default target is used if not specified). For example: #. Set the target (a default target is used if not specified). For example:
@ -136,7 +136,7 @@ Steps to build the application:
export RTE_TARGET=x86_64-native-linuxapp-gcc 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 the application:
@ -152,7 +152,7 @@ Intel® QuickAssist Technology Configuration Files
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The Intel® QuickAssist Technology configuration files used by the application are located in the config_files folder in the application folder. 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 * Stargo CRB (single CPU socket): located in the stargo folder
@ -218,7 +218,7 @@ performing AES-CBC-128 encryption with AES-XCBC-MAC-96 hash, the following setti
./build/dpdk_qat -c 0xff -n 2 -- -p 0x3 --config '(0,0,1),(1,0,2)' ./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. 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 .. |quickassist_block_diagram| image:: img/quickassist_block_diagram.png

View File

@ -31,8 +31,8 @@
Internet Protocol (IP) Pipeline Sample Application Internet Protocol (IP) Pipeline Sample Application
================================================== ==================================================
The Internet Protocol (IP) Pipeline application illustrates the use of the Intel® DPDK Packet Framework tool suite. The Internet Protocol (IP) Pipeline application illustrates the use of the DPDK Packet Framework tool suite.
The Intel® DPDK pipeline methodology is used to implement functional blocks such as The DPDK pipeline methodology is used to implement functional blocks such as
packet RX, packet TX, flow classification, firewall, packet RX, packet TX, flow classification, firewall,
routing, IP fragmentation, IP reassembly, etc routing, IP fragmentation, IP reassembly, etc
which are then assigned to different CPU cores and connected together to create complex multi-core applications. which are then assigned to different CPU cores and connected together to create complex multi-core applications.

View File

@ -31,21 +31,21 @@
Introduction 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 Each chapter describes a sample application that showcases specific functionality and
provides instructions on how to compile, run and use the sample application. provides instructions on how to compile, run and use the sample application.
Documentation Roadmap 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, * **Release Notes** : Provides release-specific information, including supported features,
limitations, fixed issues, known issues and so on. limitations, fixed issues, known issues and so on.
Also, provides the answers to frequently asked questions in FAQ format. Also, provides the answers to frequently asked questions in FAQ format.
* **Getting Started Guides** : Describes how to install and * **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. designed to get users up and running quickly with the software.
* **Programmer's Guide:** Describes: * **Programmer's Guide:** Describes:
@ -53,15 +53,15 @@ The following is a list of Intel® DPDK documents in suggested reading order:
* The software architecture and how to use it (through examples), * The software architecture and how to use it (through examples),
specifically in a Linux* application (linuxapp) environment. specifically in a Linux* application (linuxapp) environment.
* The content of the Intel® DPDK, the build system * The content of the 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) (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. and guidelines for porting an application.
* Optimizations used in the software and those that should be considered for new development * Optimizations used in the software and those that should be considered for new development
A glossary of terms is also provided. 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. data structures and other programming constructs.
* **Sample Applications User Guide** : Describes a set of sample applications. * **Sample Applications User Guide** : Describes a set of sample applications.

View File

@ -32,7 +32,7 @@ IP Fragmentation Sample Application
=================================== ===================================
The IPv4 Fragmentation application is a simple example of packet processing 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. The application does L3 forwarding with IPv4 and IPv6 packet fragmentation.
Overview Overview
@ -78,7 +78,7 @@ To build the application:
export RTE_TARGET=x86_64-native-linuxapp-gcc 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 the application:
@ -183,5 +183,5 @@ IP Fragmentation sample application provides basic NUMA support
in that all the memory structures are allocated on all sockets that have active lcores on them. 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. and the Environment Abstraction Layer (EAL) options.

View File

@ -31,13 +31,13 @@
IP Reassembly Sample Application 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. The application performs L3 forwarding with reassembly for fragmented IPv4 and IPv6 packets.
Overview 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. with reassembly for IPv4 and IPv6 fragmented packets.
The initialization and run- time paths are very similar to those of the L2 forwarding application 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). (see Chapter 9 "L2 Forwarding Sample Application" for more information).
@ -69,7 +69,7 @@ To compile the application:
export RTE_TARGET=x86_64-native-linuxapp-gcc 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 the application:

View File

@ -32,7 +32,7 @@ IPv4 Multicast Sample Application
================================= =================================
The IPv4 Multicast application is a simple example of packet processing 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. The application performs L3 multicasting.
Overview Overview
@ -76,7 +76,7 @@ To compile the application:
export RTE_TARGET=x86_64-native-linuxapp-gcc 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 the application:
@ -126,7 +126,7 @@ In this command:
* The -q option assigns 1 queue to each lcore * 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. and the Environment Abstraction Layer (EAL) options.
Explanation Explanation

View File

@ -31,32 +31,32 @@
Kernel NIC Interface Sample Application 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. 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. 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 which is re-mapped into the kernel address space by the KNI kernel loadable module
that saves the information to a virtual device context. 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. to the kernel module for each device allocated.
The KNI kernel loadable module is a standard net driver, The KNI kernel loadable module is a standard net driver,
which upon receiving the IOCTL call access the Intel® DPDK's FIFO queue to which upon receiving the IOCTL call access the DPDK's FIFO queue to
receive/transmit packets from/to the Intel® DPDK userspace application. receive/transmit packets from/to the DPDK userspace application.
The FIFO queues contain pointers to data packets in the Intel® DPDK. This: 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 * 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. * 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 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. 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 Intel® DPDK ports. 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 Intel® DPDK ports and The application allows the use of standard Linux tools (ethtool, ifconfig, tcpdump) with the DPDK ports and
also the exchange of packets between the Intel® DPDK application and the Linux* kernel. also the exchange of packets between the DPDK application and the Linux* kernel.
Overview Overview
-------- --------
@ -110,7 +110,7 @@ Compile the application as follows:
Loading the Kernel Module 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. 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: This way, only one kernel thread is created for all KNI devices for packet receiving in kernel side:
@ -132,7 +132,7 @@ For optimum performance,
the lcore in the mask must be selected to be on the same socket as the lcores used in the KNI application. 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, 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: can be loaded with parameter of kthread_mode as follows:
* #insmod rte_kni.ko kthread_mode=single * #insmod rte_kni.ko kthread_mode=single
@ -149,7 +149,7 @@ can be loaded with parameter of kthread_mode as follows:
Multiple kernel thread mode can provide scalable higher performance. Multiple kernel thread mode can provide scalable higher performance.
To measure the throughput in a loopback mode, the kernel module of the KNI, 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: can be loaded with parameters as follows:
* #insmod rte_kni.ko lo_mode=lo_mode_fifo * #insmod rte_kni.ko lo_mode=lo_mode_fifo
@ -179,7 +179,7 @@ Where:
* --config="(port,lcore_rx, lcore_tx[,lcore_kthread, ...]) [, port,lcore_rx, lcore_tx[,lcore_kthread, ...]]": * --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. 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, 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. but does not need to include lcores indicated by lcore_kthread as they are used to pin the kernel thread on.
@ -228,7 +228,7 @@ Dumping the network traffic:
#tcpdump -i vEth0_0 #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 Explanation
----------- -----------

View File

@ -32,13 +32,13 @@ L2 Forwarding Sample Application (in Real and Virtualized Environments)
======================================================================= =======================================================================
The L2 Forwarding sample application is a simple example of packet processing using 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. also takes advantage of Single Root I/O Virtualization (SR-IOV) features in a virtualized environment.
.. note:: .. note::
Please note that previously a separate L2 Forwarding in Virtualized Environments sample application was used, 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 Overview
-------- --------
@ -58,7 +58,7 @@ This application can be used to benchmark performance using a traffic-generator,
The application can also be used in a virtualized environment as shown in Figure 4. 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: .. _figure_3:
@ -111,7 +111,7 @@ Compiling the Application
export RTE_TARGET=x86_64-native-linuxapp-gcc 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 the application:
@ -140,7 +140,7 @@ To run the application in linuxapp environment with 4 lcores, 16 ports and 8 RX
$ ./build/l2fwd -c f -n 4 -- -q 8 -p ffff $ ./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. and the Environment Abstraction Layer (EAL) options.
Explanation Explanation
@ -222,7 +222,7 @@ Driver Initialization
The main part of the code in the main() function relates to the initialization of the driver. 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 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 .. code-block:: c

View File

@ -31,13 +31,13 @@
L3 Forwarding Sample Application 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. The application performs L3 forwarding.
Overview 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 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). (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 The main difference from the L2 Forwarding sample application is that the forwarding decision
@ -77,7 +77,7 @@ To compile the application:
export RTE_TARGET=x86_64-native-linuxapp-gcc 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 the application:
@ -153,7 +153,7 @@ In this command:
| | | | | | | | | |
+----------+-----------+-----------+-------------------------------------+ +----------+-----------+-----------+-------------------------------------+
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. the Environment Abstraction Layer (EAL) options.
Explanation Explanation

View File

@ -31,7 +31,7 @@
L3 Forwarding with Access Control Sample Application 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. 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. Packets that are in the Access Control List (ACL), which is loaded during initialization, are dropped.
Others are forwarded to the correct port. Others are forwarded to the correct port.
@ -39,7 +39,7 @@ Others are forwarded to the correct port.
Overview 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. and packet L3 forwarding.
The application loads two types of rules at initialization: The application loads two types of rules at initialization:
@ -267,7 +267,7 @@ To compile the application:
export RTE_TARGET=x86_64-native-linuxapp-gcc 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: #. Build the application:

View File

@ -34,7 +34,7 @@ L3 Forwarding with Power Management Sample Application
Introduction 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, The application is based on existing L3 Forwarding sample application,
with the power management algorithms to control the P-states and with the power management algorithms to control the P-states and
C-states of the Intel processor via a power management library. C-states of the Intel processor via a power management library.
@ -42,17 +42,17 @@ C-states of the Intel processor via a power management library.
Overview 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 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). (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 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. 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, 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. 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 * Retrieve input packets through the PMD to poll Rx queue
@ -72,12 +72,12 @@ to switch between different supported operating frequencies and voltages.
If configured correctly, according to system workload, this feature provides power savings. 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 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. 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. 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. 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. 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. 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 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. or the thread's sleeping time exceeds a threshold.
@ -119,7 +119,7 @@ To compile the application:
export RTE_TARGET=x86_64-native-linuxapp-gcc 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 the application:
@ -226,7 +226,7 @@ responsible for checking if it needs to scale down frequency at run time by chec
Monitoring Loads of Rx Queues 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. if the network load is actually heavy or light.
In this sample, sampling network load work is done by monitoring received and In this sample, sampling network load work is done by monitoring received and
available descriptors on NIC Rx queues in recent polls. available descriptors on NIC Rx queues in recent polls.

View File

@ -31,14 +31,14 @@
L3 Forwarding in a Virtualization Environment Sample Application 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 The application performs L3 forwarding that takes advantage of Single Root I/O Virtualization (SR-IOV) features
in a virtualized environment. in a virtualized environment.
Overview 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 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). (see Chapter 10 "L3 Forwarding Sample Application" for more information).
The forwarding decision is taken based on information read from the input packet. The forwarding decision is taken based on information read from the input packet.
@ -80,7 +80,7 @@ To compile the application:
export RTE_TARGET=x86_64-native-linuxapp-gcc 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 the application:
@ -148,7 +148,7 @@ In this command:
| | | | | | | | | |
+----------+-----------+-----------+------------------------------------+ +----------+-----------+-----------+------------------------------------+
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. and the Environment Abstraction Layer (EAL) options.
Explanation Explanation

View File

@ -32,9 +32,9 @@ Link Status Interrupt Sample Application
======================================== ========================================
The Link Status Interrupt sample application is a simple example of packet processing using 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 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 Overview
-------- --------
@ -68,7 +68,7 @@ Compiling the Application
export RTE_TARGET=x86_64-native-linuxapp-gcc 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 the application:
@ -106,7 +106,7 @@ issue the command:
$ ./build/link_status_interrupt -c f -n 4-- -q 8 -p ffff $ ./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. and the Environment Abstraction Layer (EAL) options.
Explanation Explanation
@ -134,7 +134,7 @@ Driver Initialization
The main part of the code in the main() function relates to the initialization of the driver. 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 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:: c

View File

@ -93,7 +93,7 @@ The sequence of steps used to build the application is:
.. code-block:: console .. 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 export RTE_TARGET=x86_64-native-linuxapp-gcc
#. Build the application executable file: #. Build the application executable file:
@ -102,8 +102,8 @@ The sequence of steps used to build the application is:
cd ${RTE_SDK}/examples/load_balancer make cd ${RTE_SDK}/examples/load_balancer make
For more details on how to build the Intel® DPDK libraries and sample applications, For more details on how to build the DPDK libraries and sample applications,
please refer to the *Intel® DPDK Getting Started Guide.* please refer to the *DPDK Getting Started Guide.*
Running the Application Running the Application
----------------------- -----------------------
@ -111,9 +111,9 @@ Running the Application
To successfully run 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. 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 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 Intel® DPDK package, For more details on how to set up and run the sample applications provided with DPDK package,
please refer to the *Intel® DPDK Getting Started Guide*. please refer to the *DPDK Getting Started Guide*.
Explanation Explanation
----------- -----------

View File

@ -31,7 +31,7 @@
Multi-process Sample Application 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 Example Applications
-------------------- --------------------
@ -40,7 +40,7 @@ Building the Sample Applications
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The multi-process example applications are built in the same way as other sample 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: To build all the example applications:
#. Set RTE_SDK and go to the example directory: #. Set RTE_SDK and go to the example directory:
@ -56,7 +56,7 @@ To build all the example applications:
export RTE_TARGET=x86_64-native-linuxapp-gcc 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: #. Build the applications:
@ -73,8 +73,8 @@ To build all the example applications:
Basic Multi-process Example Basic Multi-process Example
~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
The examples/simple_mp folder in the Intel® DPDK release contains a basic example application to demonstrate how The examples/simple_mp folder in the 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. two DPDK processes can work together using queues and memory pools to share information.
Running the Application Running the Application
^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^
@ -86,8 +86,8 @@ passing at least two cores in the coremask, as follows:
./build/simple_mp -c 3 -n 4 --proc-type=primary ./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, For the first 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, since all DPDK processes will default to being a primary instance,
meaning they have control over the hugepage shared memory regions. meaning they have control over the hugepage shared memory regions.
The process should start successfully and display a command prompt as follows: The process should start successfully and display a command prompt as follows:
@ -182,7 +182,7 @@ then enqueued on the appropriate rte_ring.
Symmetric Multi-process Example 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. with each process performing the same set of packet- processing operations.
(Since each process is identical in functionality to the others, (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 - we refer to this as symmetric multi-processing, to differentiate it from asymmetric multi- processing -
@ -287,7 +287,7 @@ and writes to the corresponding transmit queue on the output port.
Client-Server Multi-process Example 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. 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 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, distributes these packets using round-robin ordering among a set of client processes,
@ -370,7 +370,7 @@ until either the buffer is full or until we receive no further packets from the
Master-slave Multi-process Example 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. provide the capability of application recovery if a slave process crashes or meets unexpected conditions.
In addition, it also demonstrates the floating process, 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, which can run among different cores in contrast to the traditional way of binding a process/thread to a specific CPU core,
@ -443,7 +443,7 @@ Slave Process Recovery Mechanism
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. 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. 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. 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. If the new instance runs and the allocated resource is not returned, either resource allocation failed or the hardware resource is lost forever.
@ -486,18 +486,18 @@ The following diagram describes slave process recovery.
Floating Process Support Floating Process Support
^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^
When the Intel® DPDK application runs, there is always a -c option passed in to indicate the cores that are enabled. When the 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. 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. 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. 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. 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 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. 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. 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 For example, the DPDK mempool library provides a local cache mechanism
(refer to *Intel® DPDK Programmer's Guide* , Section 6.4, "Local Cache") (refer to *DPDK Programmer's Guide* , Section 6.4, "Local Cache")
for fast element allocation and freeing. for fast element allocation and freeing.
If using a non-unique ID or a fake one, 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. a race condition occurs if two or more threads/ processes with the same core ID try to use the local cache.
@ -511,7 +511,7 @@ and make sure the process recovery mechanism can work with it.
To avoid producing redundant code, the Master-Slave process model is still used to spawn floating processes, To avoid producing redundant code, the Master-Slave process model is still used to spawn floating processes,
then cancel the affinity to specific cores. 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. Thereafter, get a new core ID from the unused core ID allocation array.
Run the Application Run the Application

View File

@ -36,12 +36,12 @@ Introduction
------------ ------------
The Netmap compatibility library provides a minimal set of APIs to give the ability to programs written against the Netmap APIs 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 Since Netmap applications use regular system calls, like open(), ioctl() and
mmap() to communicate with the Netmap kernel module performing the packet I/O, 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, 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, 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. but is enough to run simple applications, such as the bridge example detailed below.
@ -67,7 +67,7 @@ They use the same signature as their libc counterparts, and can be used as drop-
Caveats 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. 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. Additional caveats are presented in the $RTE_SDK/examples/netmap_compat/README.md file.
These can change as the library is updated: These can change as the library is updated:
@ -76,15 +76,15 @@ These can change as the library is updated:
Note that: 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. The address, length, flags, offset, and so on arguments are therefore ignored completely.
* rte_netmap_poll() only supports infinite (negative) or zero time outs. * 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. changing the semantics of the usual POSIX defined poll.
* Not all of Netmap's features are supported: "host rings", * 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". * 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. It is not the case with this compatibility layer.
@ -99,15 +99,15 @@ Porting Netmap applications typically involves two major steps:
* Changing the system calls to use their compat_netmap library counterparts * 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. 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() 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 Intel® DPDK sample applications. 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 *Intel® DPDK Programmer's Guide* - Rel 1.4 EAR and example source code for details about initialization. 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, the ported application needs to call initialization functions for the compat_netmap library,
namely rte_netmap_init() and rte_netmap_init_port(). namely rte_netmap_init() and rte_netmap_init_port().
@ -117,7 +117,7 @@ Those structures' fields are Netmap related and are self-explanatory for develop
They are definedin $RTE_SDK/examples/netmap_compat/ lib/compat_netmap.h. 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. 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. Please refer to $RTE_SDK/examples/netmap_compat/bridge/bridge.c for an example of ported application.
Compiling the "bridge" Sample Application Compiling the "bridge" Sample Application
@ -136,7 +136,7 @@ Compiling the "bridge" Sample Application
export RTE_TARGET=x86_64-native-linuxapp-gcc 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 the application:
@ -155,7 +155,7 @@ The application requires a single command line option:
where, 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 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, If two -p parameters are given, the two interfaces form a bridge,
@ -167,7 +167,7 @@ To run the application in a linuxapp environment using port 0 and 2, issue the f
./build/packet_ordering [EAL options] -- -p 0 -p 2 ./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. 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. Note that unlike a traditional bridge or the l2fwd sample application, no MAC address changes are done on the frames.

View File

@ -31,7 +31,7 @@
QoS Metering Sample Application 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. as defined by RFC2697 for Single Rate Three Color Marker (srTCM) and RFC 2698 for Two Rate Three Color Marker (trTCM) algorithm.
Overview Overview
@ -100,7 +100,7 @@ The application execution command line is as below:
The application is constrained to use a single core in the EAL core mask and 2 ports only in the application port mask 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). (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. the Environment Abstraction Layer (EAL) options.
Explanation Explanation

View File

@ -31,7 +31,7 @@
QoS Scheduler Sample Application 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 Overview
-------- --------
@ -159,7 +159,7 @@ Optional application parameters include:
* --cfg FILE: Profile configuration to load * --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 Environment Abstraction Layer (EAL) options.
The profile configuration file defines all the port/subport/pipe/traffic class/queue parameters The profile configuration file defines all the port/subport/pipe/traffic class/queue parameters
@ -346,6 +346,6 @@ This application classifies based on the QinQ double VLAN tags and the IP destin
| | | | | | | | | |
+----------------+-------------------------+--------------------------------------------------+----------------------------------+ +----------------+-------------------------+--------------------------------------------------+----------------------------------+
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 .. |qos_sched_app_arch| image:: img/qos_sched_app_arch.png

View File

@ -31,7 +31,7 @@
Quota and Watermark Sample Application 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 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. to signal low and high ring usage respectively.
@ -105,7 +105,7 @@ Compiling the Application
export RTE_TARGET=x86_64-native-linuxapp-gcc 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 the application:
@ -140,7 +140,7 @@ issue the following command:
./qw/build/qw -c f -n 4 -- -p 5 ./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. the Environment Abstraction Layer (EAL) options.
Running the Control Application Running the Control Application
@ -161,7 +161,7 @@ To run the application in a linuxapp environment on logical core 0, issue the fo
./qwctl/build/qwctl -c 1 -n 4 --proc-type=secondary ./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. the Environment Abstraction Layer (EAL) options.
qwctl is an interactive command line that let the user change variables in a running instance of qw. qwctl is an interactive command line that let the user change variables in a running instance of qw.
@ -213,7 +213,7 @@ Then, a call to init_dpdk(), defined in init.c, is made to initialize the poll m
} }
To fully understand this code, it is recommended to study the chapters that relate to the *Poll Mode Driver* 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 Shared Variables Setup
^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^
@ -300,7 +300,7 @@ This ring is the first in the pipeline and will hold the packets directly coming
pair_ports(); 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. 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. 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. It is defined in init.c.

View File

@ -31,8 +31,8 @@
Test Pipeline Application Test Pipeline Application
========================= =========================
The Test Pipeline application illustrates the use of the Intel® DPDK Packet Framework tool suite. The Test Pipeline application illustrates the use of the DPDK Packet Framework tool suite.
Its purpose is to demonstrate the performance of single-table Intel® DPDK pipelines. Its purpose is to demonstrate the performance of single-table DPDK pipelines.
Overview Overview
-------- --------
@ -41,7 +41,7 @@ The application uses three CPU cores:
* Core A ("RX core") receives traffic from the NIC ports and feeds core B with traffic through SW queues. * 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. whose type is selectable through specific command line parameter.
Core B receives traffic from core A through software queues, Core B receives traffic from core A through software queues,
processes it according to the actions configured in the table entries that processes it according to the actions configured in the table entries that
@ -122,14 +122,14 @@ For hash tables, the following parameters can be selected:
| **#** | **TABLE_TYPE** | **Description of Core B Table** | **Pre-added Table Entries** | | **#** | **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 | | | | | Core B is implementing a pass-through from its input set | |
| | | of software queues to its output set of software queues. | | | | | of software queues to its output set of software queues. | |
| | | | | | | | | |
+-------+------------------------+----------------------------------------------------------+-------------------------------------------------------+ +-------+------------------------+----------------------------------------------------------+-------------------------------------------------------+
| 2 | stub | Stub table. Core B is implementing the same pass-through | N/A | | 2 | stub | Stub table. Core B is implementing the same pass-through | N/A |
| | | functionality as described for the "none" option by | | | | | 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. | | | | | stub table for each input NIC port. | |
| | | | | | | | | |
+-------+------------------------+----------------------------------------------------------+-------------------------------------------------------+ +-------+------------------------+----------------------------------------------------------+-------------------------------------------------------+

View File

@ -31,7 +31,7 @@
Timer Sample Application 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. This application prints some messages from different lcores regularly, demonstrating the use of timers.
Compiling the Application Compiling the Application
@ -49,7 +49,7 @@ Compiling the Application
export RTE_TARGET=x86_64-native-linuxapp-gcc 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 the application:
@ -66,7 +66,7 @@ To run the example in linuxapp environment:
$ ./build/timer -c f -n 4 $ ./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. the Environment Abstraction Layer (EAL) options.
Explanation Explanation

View File

@ -32,7 +32,7 @@
Vhost Sample Application 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. 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 The sample application performs simple packet switching between virtual machines based on Media Access Control
(MAC) address or Virtual Local Area Network (VLAN) tag. (MAC) address or Virtual Local Area Network (VLAN) tag.
@ -86,14 +86,14 @@ The following figure shows the system architecture for virtio-net networking wit
Sample Code Overview Sample Code Overview
-------------------- --------------------
The Intel® DPDK vhost-net sample code demonstrates KVM (QEMU) offloading the servicing of a Virtual Machine's (VM's) The 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. 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. * 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. * Triggering/receiving notifications to/from VMs via eventfds.
@ -196,9 +196,9 @@ VMs with gigabytes of memory can benefit from having QEMU allocate their memory
**Vhost Sample Code** **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 .. code-block:: console
@ -239,7 +239,7 @@ The above steps can be automated by doing the following:
Setting up the Guest Execution Environment 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 reasons for this are discussed in Section 22.7, "Running the Virtual Machine (QEMU)".
The testpmd application forwards packets between pairs of Ethernet devices, The testpmd application forwards packets between pairs of Ethernet devices,
@ -275,7 +275,7 @@ Compiling the Sample Code
export RTE_TARGET=x86_64-native-linuxapp-gcc 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 the application:
@ -358,13 +358,13 @@ Running the Sample Code
.. note:: .. 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 Parameters
~~~~~~~~~~ ~~~~~~~~~~
**Basename and Index.** **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. The basename and the index are used to generate the character devices name.
/dev/<basename>-<index> /dev/<basename>-<index>
@ -485,7 +485,7 @@ QEMU must be executed with specific parameters to:
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 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 .. code-block:: console
@ -521,7 +521,7 @@ an open file descriptor must be passed to QEMU running as a child process.
Mapping the Virtual Machine's Memory 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. 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 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. by finding and mapping the VM's physical memory on hugetlbfs.
@ -593,7 +593,7 @@ To call the QEMU wrapper automatically from libvirt, the following configuration
<driver name="vhost"/> <driver name="vhost"/>
<interface/> <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: to controllers cgroup for libvirtd using the following steps:
.. code-block:: xml .. code-block:: xml
@ -630,8 +630,8 @@ To call the QEMU wrapper automatically from libvirt, the following configuration
emul_path = "/usr/local/bin/qemu-system-x86_64" 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. * Configure the "us_vhost_path" variable to point to the 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>". DPDK vhost-net sample code's character device will be in the format "/dev/<basename>-<index>".
.. code-block:: xml .. code-block:: xml
@ -654,19 +654,19 @@ The number of free hugepages can be checked as follows:
The command above indicates how many hugepages are free to support QEMU's allocation request. 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 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. 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 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. 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 However, DPDK-based applications must be modified to automatically transmit packets during initialization
to facilitate the Intel® DPDK vhost- net sample code's MAC learning. 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. and to act as an L2 forwarding switch.
Testpmd MAC Forwarding Testpmd MAC Forwarding
@ -676,7 +676,7 @@ At high packet rates, a minor packet loss may be observed.
To resolve this issue, a "wait and retry" mode is implemented in the testpmd and vhost sample code. 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. 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. The following sequence diagram describes the algorithm in detail.
.. _figure_20: .. _figure_20:
@ -690,7 +690,7 @@ The following sequence diagram describes the algorithm in detail.
Running Testpmd 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: Run the testpmd application as follows:
.. code-block:: console .. code-block:: console
@ -718,7 +718,7 @@ The testpmd application can then be configured to act as an L2 forwarding applic
testpmd> set fwd mac_retry testpmd> set fwd mac_retry
The testpmd can then be configured to start processing packets, 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 .. code-block:: console
@ -733,10 +733,10 @@ Passing Traffic to the Virtual Machine Device
For a virtio-net device to receive traffic, 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 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. it learns the MAC address of the virtio-net devices from the first transmitted packet.
On learning the MAC address, 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: For example:
.. code-block:: console .. code-block:: console
@ -745,7 +745,7 @@ For example:
The above message indicates that device 0 has been registered with MAC address cc:bb:bb:bb:bb:bb and VLAN tag 1000. 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. 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 .. |vhost_net_arch| image:: img/vhost_net_arch.png

View File

@ -31,14 +31,14 @@
VMDQ and DCB Forwarding Sample Application 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 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. The traffic splitting is performed in hardware by the VMDQ and DCB features of the Intel® 82599 10 Gigabit Ethernet Controller.
Overview 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. 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 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
@ -47,7 +47,7 @@ VMDQ filters split the traffic into 16 or 32 groups based on the VLAN ID.
Then, DCB places each packet into one of either 4 or 8 queues within that group, based upon the VLAN user priority field. 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, 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. 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. The traffic is split into 128 queues on input, where each thread of the application reads from multiple queues.
@ -102,7 +102,7 @@ Compiling the Application
export RTE_TARGET=x86_64-native-linuxapp-gcc 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 the application:
@ -119,7 +119,7 @@ To run the example in a linuxapp environment:
user@target:~$ ./build/vmdq_dcb -c f -n 4 -- -p 0x3 --nb-pools 16 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. the Environment Abstraction Layer (EAL) options.
Explanation Explanation