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:
parent
bd89cca3ca
commit
e0c7c47319
@ -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
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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.
|
||||||
|
@ -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:
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
-----------
|
-----------
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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:
|
||||||
|
|
||||||
|
@ -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.
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
-----------
|
-----------
|
||||||
|
@ -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
|
||||||
|
@ -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.
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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.
|
||||||
|
@ -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. | |
|
||||||
| | | | |
|
| | | | |
|
||||||
+-------+------------------------+----------------------------------------------------------+-------------------------------------------------------+
|
+-------+------------------------+----------------------------------------------------------+-------------------------------------------------------+
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user