From mboxrd@z Thu Jan 1 00:00:00 1970 From: Pablo de Lara Subject: =?utf-8?q?=5BPATCH_1/2=5D_doc=3A_remove_intel_dpdk_fro?= =?utf-8?q?m_prog=5Fguide?= Date: Fri, 19 Dec 2014 14:30:42 +0000 Message-ID: <1418999443-11101-2-git-send-email-pablo.de.lara.guarch@intel.com> References: <1418999443-11101-1-git-send-email-pablo.de.lara.guarch@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable To: dev-VfR2kkLFssw@public.gmane.org Return-path: In-Reply-To: <1418999443-11101-1-git-send-email-pablo.de.lara.guarch-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org> List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces-VfR2kkLFssw@public.gmane.org Sender: "dev" From: Siobhan Butler Removed redundant references to Intel(R) DPDK in Programmers Guide. Signed-off-by: Siobhan Butler --- doc/guides/prog_guide/dev_kit_build_system.rst | 24 ++++---- doc/guides/prog_guide/dev_kit_root_make_help.rst | 10 ++-- doc/guides/prog_guide/driver_vm_emul_dev.rst | 8 +-- doc/guides/prog_guide/env_abstraction_layer.rst | 14 ++--- doc/guides/prog_guide/ext_app_lib_make_help.rst | 2 +- doc/guides/prog_guide/extend_intel_dpdk.rst | 14 ++--- doc/guides/prog_guide/glossary.rst | 6 +- doc/guides/prog_guide/hash_lib.rst | 6 +- .../prog_guide/i40e_ixgbe_igb_virt_func_drv.rst | 56 +++++++++-------= --- .../intel_dpdk_xen_based_packet_switch_sol.rst | 36 ++++++------ doc/guides/prog_guide/intro.rst | 22 ++++---- .../prog_guide/ip_fragment_reassembly_lib.rst | 2 +- doc/guides/prog_guide/ivshmem_lib.rst | 32 +++++------ doc/guides/prog_guide/kernel_nic_interface.rst | 56 +++++++++-------= --- .../libpcap_ring_based_poll_mode_drv.rst | 8 +-- .../prog_guide/link_bonding_poll_mode_drv_lib.rst | 8 +-- doc/guides/prog_guide/lpm_lib.rst | 2 +- doc/guides/prog_guide/malloc_lib.rst | 6 +- doc/guides/prog_guide/mbuf_lib.rst | 6 +- doc/guides/prog_guide/mempool_lib.rst | 2 +- doc/guides/prog_guide/multi_proc_support.rst | 64 +++++++++++-----= ------ doc/guides/prog_guide/overview.rst | 30 +++++----- .../prog_guide/packet_classif_access_ctrl.rst | 4 +- doc/guides/prog_guide/packet_distrib_lib.rst | 4 +- doc/guides/prog_guide/packet_framework.rst | 8 +-- doc/guides/prog_guide/perf_opt_guidelines.rst | 4 +- doc/guides/prog_guide/poll_mode_drv.rst | 12 ++-- .../poll_mode_drv_emulated_virtio_nic.rst | 12 ++-- .../poll_mode_drv_paravirtual_vmxnets_nic.rst | 24 ++++---- doc/guides/prog_guide/power_man.rst | 10 ++-- doc/guides/prog_guide/profile_app.rst | 4 +- doc/guides/prog_guide/qos_framework.rst | 28 +++++----- doc/guides/prog_guide/ring_lib.rst | 2 +- doc/guides/prog_guide/source_org.rst | 10 ++-- .../thread_safety_intel_dpdk_functions.rst | 24 ++++---- doc/guides/prog_guide/timer_lib.rst | 2 +- doc/guides/prog_guide/writing_efficient_code.rst | 20 +++---- 37 files changed, 291 insertions(+), 291 deletions(-) diff --git a/doc/guides/prog_guide/dev_kit_build_system.rst b/doc/guides/= prog_guide/dev_kit_build_system.rst index d5ee994..23944f4 100644 --- a/doc/guides/prog_guide/dev_kit_build_system.rst +++ b/doc/guides/prog_guide/dev_kit_build_system.rst @@ -33,21 +33,21 @@ Development Kit Build System =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D =20 -The Intel=C2=AE DPDK requires a build system for compilation activities = and so on. -This section describes the constraints and the mechanisms used in the In= tel=C2=AE DPDK framework. +The DPDK requires a build system for compilation activities and so on. +This section describes the constraints and the mechanisms used in the DP= DK framework. =20 There are two use-cases for the framework: =20 -* Compilation of the Intel=C2=AE DPDK libraries and sample applicatio= ns; +* Compilation of the DPDK libraries and sample applications; the framework generates specific binary libraries, include files and sample applications =20 -* Compilation of an external application or library, using an installe= d binary Intel=C2=AE DPDK +* Compilation of an external application or library, using an installe= d binary DPDK =20 Building the Development Kit Binary ----------------------------------- =20 -The following provides details on how to build the Intel=C2=AE DPDK bina= ry. +The following provides details on how to build the DPDK binary. =20 Build Directory Concept ~~~~~~~~~~~~~~~~~~~~~~~ @@ -179,12 +179,12 @@ The content of the my_sdk_build_dir is then: =20 Refer to :ref:`Development Kit Root Makefile Help ` -for details about make commands that can be used from the root of Intel=C2= =AE DPDK. +for details about make commands that can be used from the root of DPDK. =20 Building External Applications ------------------------------ =20 -Since Intel=C2=AE DPDK is in essence a development kit, the first object= ive of end users will be to create an application using this SDK. +Since DPDK is in essence a development kit, the first objective of end u= sers will be to create an application using this SDK. To compile an application, the user must set the RTE_SDK and RTE_TARGET = environment variables. =20 .. code-block:: console @@ -212,10 +212,10 @@ Sample applications are provided in the examples di= rectory. Makefile Description -------------------- =20 -General Rules For Intel=C2=AE DPDK Makefiles -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +General Rules For DPDK Makefiles +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ =20 -In the Intel=C2=AE DPDK, Makefiles always follow the same scheme: +In the DPDK, Makefiles always follow the same scheme: =20 #. Include $(RTE_SDK)/mk/DPDK.vars.mk at the beginning. =20 @@ -309,7 +309,7 @@ Misc Useful Variables Provided by the Build System ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ =20 -* RTE_SDK: The absolute path to the Intel=C2=AE DPDK sources. +* RTE_SDK: The absolute path to the DPDK sources. When compiling the development kit, this variable is automatically s= et by the framework. It has to be defined by the user as an environment variable if compi= ling an external application. =20 @@ -368,7 +368,7 @@ Variables that Can be Set/Overridden in a Makefile On= ly =20 * SYMLINK-y-$(INSTPATH): A list of files to be installed in $(INSTPATH= ). The files must be available from VPATH and will be linked (symbolica= lly) in $(RTE_OUTPUT)/$(INSTPATH). - This variable can be used in almost any Intel=C2=AE DPDK Makefile. + This variable can be used in almost any DPDK Makefile. =20 * PREBUILD: A list of prerequisite actions to be taken before building= . The user should use +=3D to append data in this variable. =20 diff --git a/doc/guides/prog_guide/dev_kit_root_make_help.rst b/doc/guide= s/prog_guide/dev_kit_root_make_help.rst index b410674..4f30192 100644 --- a/doc/guides/prog_guide/dev_kit_root_make_help.rst +++ b/doc/guides/prog_guide/dev_kit_root_make_help.rst @@ -33,7 +33,7 @@ Development Kit Root Makefile Help =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =20 -The Intel=C2=AE DPDK provides a root level Makefile with targets for con= figuration, building, cleaning, testing, installation and others. +The DPDK provides a root level Makefile with targets for configuration, = building, cleaning, testing, installation and others. These targets are explained in the following sections. =20 Configuration Targets @@ -64,7 +64,7 @@ The default output directory is build. =20 * all, build or just make =20 - Build the Intel=C2=AE DPDK in the output directory previously create= d by a make config. + Build the DPDK in the output directory previously created by a make = config. =20 Example: =20 @@ -107,7 +107,7 @@ Install Targets =20 * Install =20 - Build the Intel=C2=AE DPDK binary. + Build the DPDK binary. Actually, this builds each supported target in a separate directory. The name of each directory is the name of the target. The name of the targets to install can be optionally specified using= T=3Dmytarget. @@ -240,14 +240,14 @@ is equivalent to: Compiling for Debug ------------------- =20 -To compile the Intel=C2=AE DPDK and sample applications with debugging i= nformation included and the optimization level set to 0, +To compile the DPDK and sample applications with debugging information i= ncluded and the optimization level set to 0, the EXTRA_CFLAGS environment variable should be set before compiling as = follows: =20 .. code-block:: console =20 export EXTRA_CFLAGS=3D'-O0 -g' =20 -The Intel=C2=AE DPDK and any user or sample applications can then be com= piled in the usual way. +The DPDK and any user or sample applications can then be compiled in the= usual way. For example: =20 .. code-block:: console diff --git a/doc/guides/prog_guide/driver_vm_emul_dev.rst b/doc/guides/pr= og_guide/driver_vm_emul_dev.rst index 19175bb..fedafad 100644 --- a/doc/guides/prog_guide/driver_vm_emul_dev.rst +++ b/doc/guides/prog_guide/driver_vm_emul_dev.rst @@ -31,7 +31,7 @@ Driver for VM Emulated Devices =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D =20 -The Intel=C2=AE DPDK EM poll mode driver supports the following emulated= devices: +The DPDK EM poll mode driver supports the following emulated devices: =20 * qemu-kvm emulated Intel=C2=AE 82540EM Gigabit Ethernet Controller (q= emu e1000 device) =20 @@ -57,7 +57,7 @@ The recommended guest operating system in a virtualized= environment is: =20 * Fedora* 18 (64-bit) =20 -For supported kernel versions, refer to the *Intel=C2=AE DPDK Release No= tes*. +For supported kernel versions, refer to the *DPDK Release Notes*. =20 Setting Up a KVM Virtual Machine -------------------------------- @@ -70,7 +70,7 @@ The following describes a target environment: =20 * Guest Operating System: Fedora 14 =20 -* Linux Kernel Version: Refer to the Intel=C2=AE DPDK Getting Started = Guide +* Linux Kernel Version: Refer to the DPDK Getting Started Guide =20 * Target Applications: testpmd =20 @@ -162,7 +162,7 @@ The setup procedure is as follows: 00:04.0 Ethernet controller: Intel Corporation 82540EM Gigabit E= thernet Controller (rev 03) 00:05.0 Ethernet controller: Intel Corporation 82540EM Gigabit E= thernet Controller (rev 03) =20 -#. Install the Intel=C2=AE DPDK and run testpmd. +#. Install the DPDK and run testpmd. =20 Known Limitations of Emulated Devices ------------------------------------- diff --git a/doc/guides/prog_guide/env_abstraction_layer.rst b/doc/guides= /prog_guide/env_abstraction_layer.rst index e6144a7..231e266 100644 --- a/doc/guides/prog_guide/env_abstraction_layer.rst +++ b/doc/guides/prog_guide/env_abstraction_layer.rst @@ -40,8 +40,8 @@ It is the responsibility of the initialization routine = to decide how to allocate =20 Typical services expected from the EAL are: =20 -* Intel=C2=AE DPDK Loading and Launching: - The Intel=C2=AE DPDK and its application are linked as a single app= lication and must be loaded by some means. +* DPDK Loading and Launching: + The DPDK and its application are linked as a single application and = must be loaded by some means. =20 * Core Affinity/Assignment Procedures: The EAL provides mechanisms for assigning execution units to specifi= c cores as well as creating execution instances. @@ -65,14 +65,14 @@ Typical services expected from the EAL are: EAL in a Linux-userland Execution Environment --------------------------------------------- =20 -In a Linux user space environment, the Intel=C2=AE DPDK application runs= as a user-space application using the pthread library. +In a Linux user space environment, the DPDK application runs as a user-s= pace application using the pthread library. PCI information about devices and address space is discovered through th= e /sys kernel interface and through a module called igb_uio. Refer to the UIO: User-space drivers documentation in the Linux kernel. = This memory is mmap'd in the application. =20 The EAL performs physical memory allocation using mmap() in hugetlbfs (u= sing huge page sizes to increase performance). -This memory is exposed to Intel=C2=AE DPDK service layers such as the :r= ef:`Mempool Library `. +This memory is exposed to DPDK service layers such as the :ref:`Mempool = Library `. =20 -At this point, the Intel=C2=AE DPDK services layer will be initialized, = then through pthread setaffinity calls, +At this point, the DPDK services layer will be initialized, then through= pthread setaffinity calls, each execution unit will be assigned to a specific logical core to run a= s a user-level thread. =20 The time reference is provided by the CPU Time-Stamp Counter (TSC) or by= the HPET kernel API through a mmap() call. @@ -178,14 +178,14 @@ The EAL also allows timed callbacks to be used in t= he same way as for NIC interr =20 .. note:: =20 - The only interrupts supported by the Intel=C2=AE PDK Poll-Mode Drive= rs are those for link status change, + The only interrupts supported by the DPDK Poll-Mode Drivers are thos= e for link status change, i.e. link up and link down notification. =20 Blacklisting ~~~~~~~~~~~~ =20 The EAL PCI device blacklist functionality can be used to mark certain N= IC ports as blacklisted, -so they are ignored by the Intel=C2=AE DPDK. +so they are ignored by the DPDK. The ports to be blacklisted are identified using the PCIe* description (= Domain:Bus:Device.Function). =20 Misc Functions diff --git a/doc/guides/prog_guide/ext_app_lib_make_help.rst b/doc/guides= /prog_guide/ext_app_lib_make_help.rst index 84129d5..bc5e238 100644 --- a/doc/guides/prog_guide/ext_app_lib_make_help.rst +++ b/doc/guides/prog_guide/ext_app_lib_make_help.rst @@ -47,7 +47,7 @@ Prerequisites =20 The following variables must be defined: =20 -* ${RTE_SDK}: Points to the root directory of the Intel=C2=AE DPDK. +* ${RTE_SDK}: Points to the root directory of the DPDK. =20 * ${RTE_TARGET}: Reference the target to be used for compilation (for = example, x86_64-native-linuxapp-gcc). =20 diff --git a/doc/guides/prog_guide/extend_intel_dpdk.rst b/doc/guides/pro= g_guide/extend_intel_dpdk.rst index 6affc67..51f0b5c 100644 --- a/doc/guides/prog_guide/extend_intel_dpdk.rst +++ b/doc/guides/prog_guide/extend_intel_dpdk.rst @@ -28,16 +28,16 @@ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE US= E OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. =20 -Extending the Intel=C2=AE DPDK +Extending the DPDK =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D =20 -This chapter describes how a developer can extend the Intel=C2=AE DPDK t= o provide a new library, +This chapter describes how a developer can extend the DPDK to provide a = new library, a new target, or support a new target. =20 Example: Adding a New Library libfoo ------------------------------------ =20 -To add a new library to the Intel=C2=AE DPDK, proceed as follows: +To add a new library to the DPDK, proceed as follows: =20 #. Add a new configuration option: =20 @@ -92,10 +92,10 @@ To add a new library to the Intel=C2=AE DPDK, proceed= as follows: =20 =20 #. Update mk/DPDK.app.mk, and add -lfoo in LDLIBS variable when the opt= ion is enabled. - This will automatically add this flag when linking an Intel=C2=AE DP= DK application. + This will automatically add this flag when linking a DPDK applicatio= n. =20 =20 -#. Build the Intel=C2=AE DPDK with the new library (we only show a spec= ific target here): +#. Build the DPDK with the new library (we only show a specific target = here): =20 .. code-block:: console =20 @@ -114,7 +114,7 @@ To add a new library to the Intel=C2=AE DPDK, proceed= as follows: Example: Using libfoo in the Test Application ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ =20 -The test application is used to validate all functionality of the Intel=C2= =AE DPDK. +The test application is used to validate all functionality of the DPDK. Once you have added a library, a new test case should be added in the te= st application. =20 * A new test_foo.c file should be added, that includes foo.h and calls= the foo() function from test_foo(). @@ -126,7 +126,7 @@ Once you have added a library, a new test case should= be added in the test appli ${RTE_SDK}/doc/rst/test_report/autotests directory. This script must= be updated also. If libfoo is in a new test family, the links in ${RTE_SDK}/doc/rst/t= est_report/test_report.rst must be updated. =20 -* Build the Intel=C2=AE DPDK with the updated test application (we onl= y show a specific target here): +* Build the DPDK with the updated test application (we only show a spe= cific target here): =20 =20 .. code-block:: console diff --git a/doc/guides/prog_guide/glossary.rst b/doc/guides/prog_guide/g= lossary.rst index 7215e04..913946d 100644 --- a/doc/guides/prog_guide/glossary.rst +++ b/doc/guides/prog_guide/glossary.rst @@ -50,7 +50,7 @@ Control Plane The control plane is = concerned with the routin =20 Core A core may include several lcores or t= hreads if the processor supports hyperthreading. =20 -Core Components A set of libraries provided by the Int= el=C2=AE DPDK, including eal, ring, mempool, mbuf, timers, and so on. +Core Components A set of libraries provided by the DPD= K, including eal, ring, mempool, mbuf, timers, and so on. =20 CPU Central Processing Unit =20 @@ -64,7 +64,7 @@ Data Plane In contrast to the co= ntrol plane, =20 DIMM Dual In-line Memory Module =20 -Doxygen A documentation generator used in the = Intel=C2=AE DPDK to generate the API reference. +Doxygen A documentation generator used in the = DPDK to generate the API reference. =20 DPDK Data Plane Development Kit =20 @@ -169,7 +169,7 @@ SRTD Scheduler Round Tri= p Delay =20 SW Software =20 -Target In the Intel=C2=AE DPDK, the target is= a combination of architecture, +Target In the DPDK, the target is a combinati= on of architecture, machine, executive environment and too= lchain. For example: i686-native-linuxapp-gcc. =20 diff --git a/doc/guides/prog_guide/hash_lib.rst b/doc/guides/prog_guide/h= ash_lib.rst index 41d15da..9b83835 100644 --- a/doc/guides/prog_guide/hash_lib.rst +++ b/doc/guides/prog_guide/hash_lib.rst @@ -33,9 +33,9 @@ Hash Library =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =20 -The Intel=C2=AE DPDK provides a Hash Library for creating hash table for= fast lookup. +The DPDK provides a Hash Library for creating hash table for fast lookup= . The hash table is a data structure optimized for searching through a set= of entries that are each identified by a unique key. -For increased performance the Intel=C2=AE DPDK Hash requires that all th= e keys have the same number of bytes which is set at the hash creation ti= me. +For increased performance the DPDK Hash requires that all the keys have = the same number of bytes which is set at the hash creation time. =20 Hash API Overview ----------------- @@ -110,7 +110,7 @@ a number of fields read from the input packet that ma= ke up the flow key. One example is to use the DiffServ 5-tuple made up of the following fiel= ds of the IP and transport layer packet headers: Source IP Address, Destination IP Address, Protocol, Source Port, Destin= ation Port. =20 -The Intel=C2=AE DPDK hash provides a generic method to implement an appl= ication specific flow classification mechanism. +The DPDK hash provides a generic method to implement an application spec= ific flow classification mechanism. Given a flow table implemented as an array, the application should creat= e a hash object with the same number of entries as the flow table and with the hash key size set to the number of bytes in the selected flow k= ey. =20 diff --git a/doc/guides/prog_guide/i40e_ixgbe_igb_virt_func_drv.rst b/doc= /guides/prog_guide/i40e_ixgbe_igb_virt_func_drv.rst index 996e823..41e316e 100755 --- a/doc/guides/prog_guide/i40e_ixgbe_igb_virt_func_drv.rst +++ b/doc/guides/prog_guide/i40e_ixgbe_igb_virt_func_drv.rst @@ -31,7 +31,7 @@ I40E/IXGBE/IGB Virtual Function Driver =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =20 -Supported Intel=C2=AE Ethernet Controllers (see the *Intel=C2=AE DPDK Re= lease Notes* for details) +Supported Intel=C2=AE Ethernet Controllers (see the *DPDK Release Notes*= for details) support the following modes of operation in a virtualized environment: =20 * **SR-IOV mode**: Involves direct assignment of part of the port reso= urces to different guest operating systems @@ -43,22 +43,22 @@ support the following modes of operation in a virtual= ized environment: a Virtual Machine Monitor (VMM), also known as software switch accel= eration mode. In this chapter, this mode is referred to as the Next Generation VMD= q mode. =20 -SR-IOV Mode Utilization in an Intel=C2=AE DPDK Environment ------------------------------------------------------ +SR-IOV Mode Utilization in a DPDK Environment +--------------------------------------------- =20 -The Intel=C2=AE DPDK uses the SR-IOV feature for hardware-based I/O shar= ing in IOV mode. +The DPDK uses the SR-IOV feature for hardware-based I/O sharing in IOV m= ode. Therefore, it is possible to partition SR-IOV capability on Ethernet con= troller NIC resources logically and expose them to a virtual machine as a separate PCI function called a "Vi= rtual Function". Refer to Figure 10. =20 Therefore, a NIC is logically distributed among multiple virtual machine= s (as shown in Figure 10), while still having global data in common to share with the Physical Func= tion and other Virtual Functions. -The Intel=C2=AE DPDK i40evf, igbvf or ixgbevf as a Poll Mode Driver (PMD= ) serves for the Intel=C2=AE 82576 Gigabit Ethernet Controller, +The DPDK i40evf, igbvf or ixgbevf as a Poll Mode Driver (PMD) serves for= the Intel=C2=AE 82576 Gigabit Ethernet Controller, Intel=C2=AE Ethernet Controller I350 family, Intel=C2=AE 82599 10 Gigabi= t Ethernet Controller NIC, or Intel=C2=AE Fortville 10/40 Gigabit Ethernet Controller NIC's virtual= PCI function. -Meanwhile the Intel=C2=AE DPDK Poll Mode Driver (PMD) also supports "Phy= sical Function" of such NIC's on the host. +Meanwhile the DPDK Poll Mode Driver (PMD) also supports "Physical Functi= on" of such NIC's on the host. =20 -The Intel=C2=AE DPDK PF/VF Poll Mode Driver (PMD) supports the Layer 2 s= witch on Intel=C2=AE 82576 Gigabit Ethernet Controller, +The DPDK PF/VF Poll Mode Driver (PMD) supports the Layer 2 switch on Int= el=C2=AE 82576 Gigabit Ethernet Controller, Intel=C2=AE Ethernet Controller I350 family, Intel=C2=AE 82599 10 Gigabi= t Ethernet Controller, and Intel=C2=AE Fortville 10/40 Gigabit Ethernet Controller NICs so that= guest can choose it for inter virtual machine traffic in SR-IOV mode. =20 @@ -112,7 +112,7 @@ For example, rmmod i40e (To remove the i40e module) insmod i40e.ko max_vfs=3D2,2 (To enable two Virtual Functions pe= r port) =20 -* Using the Intel=C2=AE DPDK PMD PF i40e driver: +* Using the DPDK PMD PF i40e driver: =20 Kernel Params: iommu=3Dpt, intel_iommu=3Don =20 @@ -123,7 +123,7 @@ For example, ./dpdk_nic_bind.py -b igb_uio bb:ss.f echo 2 > /sys/bus/pci/devices/0000\:bb\:ss.f/max_vfs (To enable = two VFs on a specific PCI device) =20 - Launch the Intel=C2=AE DPDK testpmd/example or your own host daemon = application using the Intel=C2=AE DPDK PMD library. + Launch the DPDK testpmd/example or your own host daemon application = using the DPDK PMD library. =20 Virtual Function enumeration is performed in the following sequence by t= he Linux* pci driver for a dual-port NIC. When you enable the four Virtual Functions with the above command, the f= our enabled functions have a Function# @@ -145,7 +145,7 @@ The programmer can enable a maximum of *63 Virtual Fu= nctions* and there must be 10 Gigabit Ethernet Controller NIC port. The reason for this is that the device allows for a maximum of 128 queue= s per port and a virtual/physical function has to have at least one queue pair (RX/TX). -The current implementation of the Intel=C2=AE DPDK ixgbevf driver suppor= ts a single queue pair (RX/TX) per Virtual Function. +The current implementation of the DPDK ixgbevf driver supports a single = queue pair (RX/TX) per Virtual Function. The Physical Function in host could be either configured by the Linux* i= xgbe driver (in the case of the Linux Kernel-based Virtual Machine [KVM]) or by DPDK= PMD PF driver. When using both DPDK PMD PF/VF drivers, the whole NIC will be taken over= by DPDK based application. @@ -159,7 +159,7 @@ For example, rmmod ixgbe (To remove the ixgbe module) insmod ixgbe max_vfs=3D2,2 (To enable two Virtual Functions per = port) =20 -* Using the Intel=C2=AE DPDK PMD PF ixgbe driver: +* Using the DPDK PMD PF ixgbe driver: =20 Kernel Params: iommu=3Dpt, intel_iommu=3Don =20 @@ -170,7 +170,7 @@ For example, ./dpdk_nic_bind.py -b igb_uio bb:ss.f echo 2 > /sys/bus/pci/devices/0000\:bb\:ss.f/max_vfs (To enable = two VFs on a specific PCI device) =20 - Launch the Intel=C2=AE DPDK testpmd/example or your own host daemon = application using the Intel=C2=AE DPDK PMD library. + Launch the DPDK testpmd/example or your own host daemon application = using the DPDK PMD library. =20 Virtual Function enumeration is performed in the following sequence by t= he Linux* pci driver for a dual-port NIC. When you enable the four Virtual Functions with the above command, the f= our enabled functions have a Function# @@ -219,7 +219,7 @@ For example, ./dpdk_nic_bind.py -b igb_uio bb:ss.f echo 2 > /sys/bus/pci/devices/0000\:bb\:ss.f/max_vfs (To enable = two VFs on a specific pci device) =20 - Launch Intel=C2=AE DPDK testpmd/example or your own host daemon appl= ication using the Intel=C2=AE DPDK PMD library. + Launch DPDK testpmd/example or your own host daemon application usin= g the DPDK PMD library. =20 Virtual Function enumeration is performed in the following sequence by t= he Linux* pci driver for a four-port NIC. When you enable the four Virtual Functions with the above command, the f= our enabled functions have a Function# @@ -247,7 +247,7 @@ The validated hypervisor is: =20 However, the hypervisor is bypassed to configure the Virtual Function de= vices using the Mailbox interface, the solution is hypervisor-agnostic. -Xen* and VMware* (when SR- IOV is supported) will also be able to suppor= t the Intel=C2=AE DPDK with Virtual Function driver support. +Xen* and VMware* (when SR- IOV is supported) will also be able to suppor= t the DPDK with Virtual Function driver support. =20 Expected Guest Operating System in Virtual Machine ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -258,7 +258,7 @@ The expected guest operating systems in a virtualized= environment are: =20 * Ubuntu* 10.04 (64-bit) =20 -For supported kernel versions, refer to the *Intel=C2=AE DPDK Release No= tes*. +For supported kernel versions, refer to the *DPDK Release Notes*. =20 Setting Up a KVM Virtual Machine Monitor ---------------------------------------- @@ -271,7 +271,7 @@ The following describes a target environment: =20 * Guest Operating System: Fedora 14 =20 -* Linux Kernel Version: Refer to the *Intel=C2=AE DPDK Getting Starte= d Guide* +* Linux Kernel Version: Refer to the *DPDK Getting Started Guide* =20 * Target Applications: l2fwd, l3fwd-vf =20 @@ -280,7 +280,7 @@ The setup procedure is as follows: #. Before booting the Host OS, open **BIOS setup** and enable **Intel=C2= =AE VT features**. =20 #. While booting the Host OS kernel, pass the intel_iommu=3Don kernel c= ommand line argument using GRUB. - When using Intel=C2=AE DPDK PF driver on host, pass the iommu=3Dpt k= ernel command line argument in GRUB. + When using DPDK PF driver on host, pass the iommu=3Dpt kernel comman= d line argument in GRUB. =20 #. Download qemu-kvm-0.14.0 from `http://sourceforge.net/projects/kvm/files/qemu-kvm/ `_ @@ -331,7 +331,7 @@ The setup procedure is as follows: rmmod ixgbe modprobe ixgbe max_vfs=3D2,2 =20 - When using DPDK PMD PF driver, insert Intel=C2=AE DPDK kernel module= igb_uio and set the number of VF by sysfs max_vfs: + When using DPDK PMD PF driver, insert DPDK kernel module igb_uio and= set the number of VF by sysfs max_vfs: =20 .. code-block:: console =20 @@ -449,7 +449,7 @@ The setup procedure is as follows: #. Finally, access the Guest OS using vncviewer with the localhost:5900= port and check the lspci command output in the Guest OS. The virtual functions will be listed as available for use. =20 -#. Configure and install the Intel=C2=AE DPDK with an x86_64-native-lin= uxapp-gcc configuration on the Guest OS as normal, +#. Configure and install the DPDK with an x86_64-native-linuxapp-gcc co= nfiguration on the Guest OS as normal, that is, there is no change to the normal installation procedure. =20 .. code-block:: console @@ -460,13 +460,13 @@ The setup procedure is as follows: =20 .. note:: =20 - If you are unable to compile the Intel=C2=AE DPDK and you are gettin= g "error: CPU you selected does not support x86-64 instruction set", + If you are unable to compile the DPDK and you are getting "error: CP= U you selected does not support x86-64 instruction set", power off the Guest OS and start the virtual machine with the correc= t -cpu option in the qemu- system-x86_64 command as shown in step 9. You must select the best x86_64 cpu_model to emulate or you can sele= ct host option if available. =20 .. note:: =20 - Run the Intel=C2=AE DPDK l2fwd sample application in the Guest OS wi= th Hugepages enabled. + Run the DPDK l2fwd sample application in the Guest OS with Hugepages= enabled. For the expected benchmark performance, you must pin the cores from = the Guest OS to the Host OS (taskset can be used to do this) and you must also look at the PCI Bus layout on the board to ensure you = are not running the traffic over the QPI Inteface. =20 @@ -490,15 +490,15 @@ The setup procedure is as follows: =20 |perf_benchmark| =20 -Intel=C2=AE DPDK SR-IOV PMD PF/VF Driver Usage Model ------------------------------------------------ +DPDK SR-IOV PMD PF/VF Driver Usage Model +---------------------------------------- =20 Fast Host-based Packet Processing ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ =20 Software Defined Network (SDN) trends are demanding fast host-based pack= et handling. In a virtualization environment, -the Intel=C2=AE DPDK VF PMD driver performs the same throughput result a= s a non-VT native environment. +the DPDK VF PMD driver performs the same throughput result as a non-VT n= ative environment. =20 With such host instance fast packet processing, lots of services such as= filtering, QoS, DPI can be offloaded on the host fast path. @@ -521,15 +521,15 @@ Inter-VM data communication is one of the traffic b= ottle necks in virtualization SR-IOV device assignment helps a VM to attach the real device, taking ad= vantage of the bridge in the NIC. So VF-to-VF traffic within the same physical port (VM0<->VM1) have hardw= are acceleration. However, when VF crosses physical ports (VM0<->VM2), there is no such ha= rdware bridge. -In this case, the Intel=C2=AE DPDK PMD PF driver provides host forwardin= g between such VMs. +In this case, the DPDK PMD PF driver provides host forwarding between su= ch VMs. =20 Figure 13 shows an example. -In this case an update of the MAC address lookup tables in both the NIC = and host Intel=C2=AE DPDK application is required. +In this case an update of the MAC address lookup tables in both the NIC = and host DPDK application is required. =20 In the NIC, writing the destination of a MAC address belongs to another = cross device VM to the PF specific pool. -So when a packet comes in, its destination MAC address will match and fo= rward to the host Intel=C2=AE DPDK PMD application. +So when a packet comes in, its destination MAC address will match and fo= rward to the host DPDK PMD application. =20 -In the host Intel=C2=AE DPDK application, the behavior is similar to L2 = forwarding, +In the host DPDK application, the behavior is similar to L2 forwarding, that is, the packet is forwarded to the correct PF pool. The SR-IOV NIC switch forwards the packet to a specific VM according to = the MAC destination address which belongs to the destination VF on the VM. diff --git a/doc/guides/prog_guide/intel_dpdk_xen_based_packet_switch_sol= .rst b/doc/guides/prog_guide/intel_dpdk_xen_based_packet_switch_sol.rst index 8edea89..1f1e04f 100644 --- a/doc/guides/prog_guide/intel_dpdk_xen_based_packet_switch_sol.rst +++ b/doc/guides/prog_guide/intel_dpdk_xen_based_packet_switch_sol.rst @@ -28,13 +28,13 @@ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE US= E OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. =20 -Intel=C2=AE DPDK Xen Based Packet-Switching Solution -=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +DPDK Xen Based Packet-Switching Solution +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =20 Introduction ------------ =20 -Intel=C2=AE DPDK provides a para-virtualization packet switching solutio= n, based on the Xen hypervisor's Grant Table, Note 1, +DPDK provides a para-virtualization packet switching solution, based on = the Xen hypervisor's Grant Table, Note 1, which provides simple and fast packet switching capability between guest= domains and host domain based on MAC address or VLAN tag. =20 This solution is comprised of two components; @@ -44,13 +44,13 @@ including grant reference IDs for shared Virtio RX/TX= rings, MAC address, device state, and so on. XenStore is an information storage= space shared between domains, see further information on XenStore below. =20 -The front end PMD can be found in the Intel=C2=AE DPDK directory lib/ li= brte_pmd_xenvirt and back end example in examples/vhost_xen. +The front end PMD can be found in the DPDK directory lib/ librte_pmd_xen= virt and back end example in examples/vhost_xen. =20 The PMD front end and switching back end use shared Virtio RX/TX rings a= s para- virtualized interface. The Virtio ring is created by the front end, and Grant table references = for the ring are passed to host. The switching back end maps those grant table references and creates sha= red rings in a mapped address space. =20 -The following diagram describes the functionality of the Intel=C2=AE DPD= K Xen Packet- Switching Solution. +The following diagram describes the functionality of the DPDK Xen Packet= - Switching Solution. =20 .. image35_png has been renamed =20 @@ -78,11 +78,11 @@ Poll Mode Driver Front End =20 * Mbuf pool allocation: =20 - To use a Xen switching solution, the Intel=C2=AE DPDK application sh= ould use rte_mempool_gntalloc_create() + To use a Xen switching solution, the DPDK application should use rte= _mempool_gntalloc_create() to reserve mbuf pools during initialization. rte_mempool_gntalloc_create() creates a mempool with objects from me= mory allocated and managed via gntalloc/gntdev. =20 - The Intel=C2=AE DPDK now supports construction of mempools from allo= cated virtual memory through the rte_mempool_xmem_create() API. + The DPDK now supports construction of mempools from allocated virtua= l memory through the rte_mempool_xmem_create() API. =20 This front end constructs mempools based on memory allocated through= the xen_gntalloc driver. rte_mempool_gntalloc_create() allocates Grant pages, maps them to co= ntinuous virtual address space, @@ -101,7 +101,7 @@ Poll Mode Driver Front End =20 * Interrupt and Kick: =20 - There are no interrupts in Intel=C2=AE DPDK Xen Switching as both fr= ont and back ends work in polling mode. + There are no interrupts in DPDK Xen Switching as both front and back= ends work in polling mode. There is no requirement for notification. =20 * Feature Negotiation: @@ -173,7 +173,7 @@ As each pool is bonded to a Virtio device in some gue= st domain, the switching ba =20 #. Copy the contents of the packet to the memory buffer pointed to by g= va. =20 -The Intel=C2=AE DPDK application in the guest domain, based on the PMD f= ront end, +The DPDK application in the guest domain, based on the PMD front end, is polling the shared Virtio RX ring for available packets and receives = them on arrival. =20 Packet Transmission @@ -267,7 +267,7 @@ Note that the following commands might not be the sam= e on different Linux* distr =20 limit=3Dnb_mbuf# * VM#. =20 - In Intel=C2=AE DPDK examples, nb_mbuf# is normally 8192. + In DPDK examples, nb_mbuf# is normally 8192. =20 Building and Running the Switching Backend ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -291,7 +291,7 @@ Building and Running the Switching Backend =20 make -C examples/vhost_xen/ =20 -#. Load the Xen Intel=C2=AE DPDK memory management module and prealloca= te memory: +#. Load the Xen DPDK memory management module and preallocate memory: =20 .. code-block:: console =20 @@ -301,10 +301,10 @@ Building and Running the Switching Backend .. note:: =20 On Xen Dom0, there is no hugepage support. - Under Xen Dom0, the Intel=C2=AE DPDK uses a special memory manag= ement kernel module + Under Xen Dom0, the DPDK uses a special memory management kernel= module to allocate chunks of physically continuous memory. - Refer to the *Intel=C2=AE DPDK Getting Started Guide* for more i= nformation on memory management in the Intel=C2=AE DPDK. - In the above command, 4 GB memory is reserved (2048 of 2 MB page= s) for Intel=C2=AE DPDK. + Refer to the *DPDK Getting Started Guide* for more information o= n memory management in the DPDK. + In the above command, 4 GB memory is reserved (2048 of 2 MB page= s) for DPDK. =20 #. Load igb_uio and bind one Intel NIC controller to igb_uio: =20 @@ -323,7 +323,7 @@ Building and Running the Switching Backend =20 .. note:: =20 - The -xen-dom0 option instructs the Intel=C2=AE DPDK to use the Xen k= ernel module to allocate memory. + The -xen-dom0 option instructs the DPDK to use the Xen kernel module= to allocate memory. =20 Other Parameters: =20 @@ -390,10 +390,10 @@ Building and Running the Front End =20 make install T=3Dx86_64-native-linuxapp-gcc =20 -#. Enable hugepages. Refer to the *Intel=C2=AE DPDK Getting Started Gu= ide* for instructions on - how to use hugepages in the Intel=C2=AE DPDK. +#. Enable hugepages. Refer to the *DPDK Getting Started Guide* for ins= tructions on + how to use hugepages in the DPDK. =20 -#. Run TestPMD. Refer to *Intel=C2=AE DPDK TestPMD Application User Gui= de* for detailed parameter usage. +#. Run TestPMD. Refer to *DPDK TestPMD Application User Guide* for deta= iled parameter usage. =20 .. code-block:: console =20 diff --git a/doc/guides/prog_guide/intro.rst b/doc/guides/prog_guide/intr= o.rst index 4b7a9f8..d6daab3 100644 --- a/doc/guides/prog_guide/intro.rst +++ b/doc/guides/prog_guide/intro.rst @@ -35,40 +35,40 @@ This document provides software architecture informat= ion, development environment information and optimization guidelines. =20 For programming examples and for instructions on compiling and running e= ach sample application, -see the *Intel=C2=AE DPDK Sample Applications User Guide* for details. +see the *DPDK Sample Applications User Guide* for details. =20 -For general information on compiling and running applications, see the *= Intel=C2=AE DPDK Getting Started Guide*. +For general information on compiling and running applications, see the *= DPDK Getting Started Guide*. =20 Documentation Roadmap --------------------- =20 -The following is a list of Intel=C2=AE DPDK documents in the suggested r= eading order: +The following is a list of DPDK documents in the suggested reading order= : =20 * **Release Notes** (this document): Provides release-specific informa= tion, including supported features, limitations, fixed issues, known issues and so on. Also, provides the answers to frequently asked questions in FAQ form= at. =20 -* **Getting Started Guide** : Describes how to install and configure t= he Intel=C2=AE DPDK software; +* **Getting Started Guide** : Describes how to install and configure t= he DPDK software; designed to get users up and running quickly with the software. =20 -* **FreeBSD* Getting Started Guide** : A document describing the use o= f the Intel=C2=AE DPDK with FreeBSD* - has been added in Intel=C2=AE DPDK Release 1.6.0. - Refer to this guide for installation and configuration instructions = to get started using the Intel=C2=AE DPDK with FreeBSD*. +* **FreeBSD* Getting Started Guide** : A document describing the use o= f the DPDK with FreeBSD* + has been added in DPDK Release 1.6.0. + Refer to this guide for installation and configuration instructions = to get started using the DPDK with FreeBSD*. =20 * **Programmer's Guide** (this document): Describes: =20 * The software architecture and how to use it (through examples), specifically in a Linux* application (linuxapp) environment =20 - * The content of the Intel=C2=AE DPDK, the build system - (including the commands that can be used in the root Intel=C2=AE= DPDK Makefile to build the development kit and an application) + * The content of the DPDK, the build system + (including the commands that can be used in the root DPDK Makefi= le to build the development kit and an application) and guidelines for porting an application =20 * Optimizations used in the software and those that should be cons= idered for new development =20 A glossary of terms is also provided. =20 -* **API Reference** : Provides detailed information about Intel=C2=AE = DPDK functions, +* **API Reference** : Provides detailed information about DPDK functio= ns, data structures and other programming constructs. =20 * **Sample Applications User Guide**: Describes a set of sample applic= ations. @@ -78,6 +78,6 @@ The following is a list of Intel=C2=AE DPDK documents i= n the suggested reading order Related Publications -------------------- =20 -The following documents provide information that is relevant to the deve= lopment of applications using the Intel=C2=AE DPDK: +The following documents provide information that is relevant to the deve= lopment of applications using the DPDK: =20 * Intel=C2=AE 64 and IA-32 Architectures Software Developer's Manual V= olume 3A: System Programming Guide diff --git a/doc/guides/prog_guide/ip_fragment_reassembly_lib.rst b/doc/g= uides/prog_guide/ip_fragment_reassembly_lib.rst index bbb0445..d17daa7 100644 --- a/doc/guides/prog_guide/ip_fragment_reassembly_lib.rst +++ b/doc/guides/prog_guide/ip_fragment_reassembly_lib.rst @@ -55,7 +55,7 @@ Finally 'direct' and 'indirect' mbufs for each fragnemt= are linked together via The caller has an ability to explicitly specify which mempools should be= used to allocate 'direct' and 'indirect' mbufs from. =20 Note that configuration macro RTE_MBUF_SCATTER_GATHER has to be enabled = to make fragmentation library build and work correctly. -For more information about direct and indirect mbufs, refer to the *Inte= l DPDK Programmers guide 7.7 Direct and Indirect Buffers.* +For more information about direct and indirect mbufs, refer to the *DPDK= Programmers guide 7.7 Direct and Indirect Buffers.* =20 Packet reassembly ----------------- diff --git a/doc/guides/prog_guide/ivshmem_lib.rst b/doc/guides/prog_guid= e/ivshmem_lib.rst index cfaa40e..cd2f595 100644 --- a/doc/guides/prog_guide/ivshmem_lib.rst +++ b/doc/guides/prog_guide/ivshmem_lib.rst @@ -31,17 +31,17 @@ IVSHMEM Library =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =20 -The Intel=C2=AE DPDK IVSHMEM library facilitates fast zero-copy data sha= ring among virtual machines +The DPDK IVSHMEM library facilitates fast zero-copy data sharing among v= irtual machines (host-to-guest or guest-to-guest) by means of QEUMU's IVSHMEM mechanism. =20 The library works by providing a command line for QEMU to map several hu= gepages into a single IVSHMEM device. For the guest to know what is inside any given IVSHMEM device -(and to distinguish between Intel=C2=AE DPDK and non-Intel=C2=AE DPDK IV= SHMEM devices), +(and to distinguish between DPDK and non-DPDK IVSHMEM devices), a metadata file is also mapped into the IVSHMEM segment. No work needs to be done by the guest application to map IVSHMEM devices= into memory; -they are automatically recognized by the Intel=C2=AE DPDK Environment Ab= straction Layer (EAL). +they are automatically recognized by the DPDK Environment Abstraction La= yer (EAL). =20 -A typical Intel=C2=AE DPDK IVSHMEM use case looks like the following. +A typical DPDK IVSHMEM use case looks like the following. =20 .. image28_png has been renamed =20 @@ -60,7 +60,7 @@ The following is a simple guide to using the IVSHMEM Li= brary API: * Call rte_ivshmem_metadata_create() to create a new metadata file. The metadata name is used to distinguish between multiple metadata f= iles. =20 -* Populate each metadata file with Intel=C2=AE DPDK data structures. +* Populate each metadata file with DPDK data structures. This can be done using the following API calls: =20 * rte_ivhshmem_metadata_add_memzone() to add rte_memzone to metada= ta file @@ -74,9 +74,9 @@ The following is a simple guide to using the IVSHMEM Li= brary API: =20 .. note:: =20 - Only data structures fully residing in Intel=C2=AE DPDK hugepage mem= ory work correctly. + Only data structures fully residing in DPDK hugepage memory work cor= rectly. Supported data structures created by malloc(), mmap() - or otherwise using non-Intel=C2=AE DPDK memory cause undefined behav= ior and even a segmentation fault. + or otherwise using non-DPDK memory cause undefined behavior and even= a segmentation fault. =20 IVSHMEM Environment Configuration --------------------------------- @@ -87,11 +87,11 @@ The steps needed to successfully run IVSHMEM applicat= ions are the following: =20 The source code can be found on the QEMU website (currently, version= 1.4.x is supported, but version 1.5.x is known to work also), however, the source code will need to be patched to support using re= gular files as the IVSHMEM memory backend. - The patch is not included in the Intel=C2=AE DPDK package, + The patch is not included in the DPDK package, but is available on the `Intel=C2=AEDPDK-vswitch project webpage `_ - (either separately or in an Intel=C2=AE DPDK vSwitch package). + (either separately or in a DPDK vSwitch package). =20 -* Enable IVSHMEM library in the Intel=C2=AE DPDK build configuration. +* Enable IVSHMEM library in the DPDK build configuration. =20 In the default configuration, IVSHMEM library is not compiled. To co= mpile the IVSHMEM library, one has to either use one of the provided IVSHMEM targets @@ -100,8 +100,8 @@ The steps needed to successfully run IVSHMEM applicat= ions are the following: =20 * Set up hugepage memory on the virtual machine. =20 - The guest applications run as regular Intel=C2=AE DPDK (primary) pro= cesses and thus need their own hugepage memory set up inside the VM. - The process is identical to the one described in the *Intel=C2=AE DP= DK Getting Started Guide*. + The guest applications run as regular DPDK (primary) processes and t= hus need their own hugepage memory set up inside the VM. + The process is identical to the one described in the *DPDK Getting S= tarted Guide*. =20 Best Practices for Writing IVSHMEM Applications ----------------------------------------------- @@ -115,10 +115,10 @@ Consequently, any shared memory corruption will aff= ect both host and all VMs sha =20 IVSHMEM applications essentially behave like multi-process applications, so it is important to implement access serialization to data and thread = safety. -Intel=C2=AE DPDK ring structures are already thread-safe, however, +DPDK ring structures are already thread-safe, however, any custom data structures that the user might need would have to be thr= ead-safe also. =20 -Similar to regular Intel=C2=AE DPDK multi-process applications, +Similar to regular DPDK multi-process applications, it is not recommended to use function pointers as functions might have d= ifferent memory addresses in different processes. =20 It is best to avoid freeing the rte_mbuf structure on a different machin= e from where it was allocated, @@ -139,9 +139,9 @@ If NUMA support is enabled, it is also desirable to k= eep host process' hugepage =20 For the best performance across all NUMA nodes, each QUEMU core should b= e pinned to host CPU core on the appropriate NUMA node. QEMU's virtual NUMA nodes should also be set up to correspond to physica= l NUMA nodes. -More on how to set up Intel=C2=AE DPDK and QEMU NUMA support can be foun= d in *Intel=C2=AE DPDK Getting Started Guide* and +More on how to set up DPDK and QEMU NUMA support can be found in *DPDK G= etting Started Guide* and `QEMU documentation `_ respective= ly. -A script called cpu_layout.py is provided with the Intel=C2=AE DPDK pack= age (in the tools directory) +A script called cpu_layout.py is provided with the DPDK package (in the = tools directory) that can be used to identify which CPU cores correspond to which NUMA no= de. =20 The QEMU IVSHMEM command line creation should be considered the last ste= p before starting the virtual machine. diff --git a/doc/guides/prog_guide/kernel_nic_interface.rst b/doc/guides/= prog_guide/kernel_nic_interface.rst index e9462ae..0276019 100644 --- a/doc/guides/prog_guide/kernel_nic_interface.rst +++ b/doc/guides/prog_guide/kernel_nic_interface.rst @@ -31,29 +31,29 @@ Kernel NIC Interface =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =20 -The Intel=C2=AE DPDK Kernel NIC Interface (KNI) allows userspace applica= tions access to the Linux* control plane. +The DPDK Kernel NIC Interface (KNI) allows userspace applications access= to the Linux* control plane. =20 -The benefits of using the Intel=C2=AE DPDK KNI are: +The benefits of using the DPDK KNI are: =20 * Faster than existing Linux TUN/TAP interfaces (by eliminating system calls and copy_to_user()/copy_from_user() ope= rations. =20 -* Allows management of Intel=C2=AE DPDK ports using standard Linux net= tools such as ethtool, ifconfig and tcpdump. +* Allows management of DPDK ports using standard Linux net tools such = as ethtool, ifconfig and tcpdump. =20 * Allows an interface with the kernel network stack. =20 -The components of an application using the Intel=C2=AE DPDK Kernel NIC I= nterface are shown in Figure 17. +The components of an application using the DPDK Kernel NIC Interface are= shown in Figure 17. =20 .. _pg_figure_17: =20 -**Figure 17. Components of an Intel=C2=AE DPDK KNI Application** +**Figure 17. Components of a DPDK KNI Application** =20 .. image43_png has been renamed =20 |kernel_nic_intf| =20 -The Intel=C2=AE DPDK KNI Kernel Module ---------------------------------- +The DPDK KNI Kernel Module +-------------------------- =20 The KNI kernel loadable module provides support for two types of devices= : =20 @@ -74,7 +74,7 @@ The KNI kernel loadable module provides support for two= types of devices: =20 * Net functionality provided by implementing several operations su= ch as netdev_ops, header_ops, ethtool_ops that are defined by struct net_device, - including support for Intel=C2=AE DPDK mbufs and FIFOs. + including support for DPDK mbufs and FIFOs. =20 * The interface name is provided from userspace. =20 @@ -83,7 +83,7 @@ The KNI kernel loadable module provides support for two= types of devices: KNI Creation and Deletion ------------------------- =20 -The KNI interfaces are created by an Intel=C2=AE DPDK application dynami= cally. +The KNI interfaces are created by a DPDK application dynamically. The interface name and FIFO details are provided by the application thro= ugh an ioctl call using the rte_kni_device_info struct which contains: =20 @@ -97,28 +97,28 @@ using the rte_kni_device_info struct which contains: =20 * Core affinity. =20 -Refer to rte_kni_common.h in the Intel=C2=AE DPDK source code for more d= etails. +Refer to rte_kni_common.h in the DPDK source code for more details. =20 The physical addresses will be re-mapped into the kernel address space a= nd stored in separate KNI contexts. =20 Once KNI interfaces are created, the KNI context information can be quer= ied by calling the rte_kni_info_get() function. =20 -The KNI interfaces can be deleted by an Intel=C2=AE DPDK application dyn= amically after being created. +The KNI interfaces can be deleted by a DPDK application dynamically afte= r being created. Furthermore, all those KNI interfaces not deleted will be deleted on the= release operation -of the miscellaneous device (when the Intel=C2=AE DPDK application is cl= osed). +of the miscellaneous device (when the DPDK application is closed). =20 -Intel=C2=AE DPDK mbuf Flow ---------------------- +DPDK mbuf Flow +-------------- =20 -To minimize the amount of Intel=C2=AE DPDK code running in kernel space,= the mbuf mempool is managed in userspace only. +To minimize the amount of DPDK code running in kernel space, the mbuf me= mpool is managed in userspace only. The kernel module will be aware of mbufs, -but all mbuf allocation and free operations will be handled by the Intel= =C2=AE DPDK application only. +but all mbuf allocation and free operations will be handled by the DPDK = application only. =20 Figure 18 shows a typical scenario with packets sent in both directions. =20 .. _pg_figure_18: =20 -**Figure 18. Packet Flow via mbufs in the Intel DPDK=C2=AE KNI** +**Figure 18. Packet Flow via mbufs in the DPDK KNI** =20 .. image44_png has been renamed =20 @@ -127,7 +127,7 @@ Figure 18 shows a typical scenario with packets sent = in both directions. Use Case: Ingress ----------------- =20 -On the Intel=C2=AE DPDK RX side, the mbuf is allocated by the PMD in the= RX thread context. +On the DPDK RX side, the mbuf is allocated by the PMD in the RX thread c= ontext. This thread will enqueue the mbuf in the rx_q FIFO. The KNI thread will poll all KNI active devices for the rx_q. If an mbuf is dequeued, it will be converted to a sk_buff and sent to th= e net stack via netif_rx(). @@ -138,13 +138,13 @@ The RX thread, in the same main loop, polls this FI= FO and frees the mbuf after d Use Case: Egress ---------------- =20 -For packet egress the Intel=C2=AE DPDK application must first enqueue se= veral mbufs to create an mbuf cache on the kernel side. +For packet egress the DPDK application must first enqueue several mbufs = to create an mbuf cache on the kernel side. =20 The packet is received from the Linux net stack, by calling the kni_net_= tx() callback. The mbuf is dequeued (without waiting due the cache) and filled with dat= a from sk_buff. The sk_buff is then freed and the mbuf sent in the tx_q FIFO. =20 -The Intel=C2=AE DPDK TX thread dequeues the mbuf and sends it to the PMD= (via rte_eth_tx_burst()). +The DPDK TX thread dequeues the mbuf and sends it to the PMD (via rte_et= h_tx_burst()). It then puts the mbuf back in the cache. =20 Ethtool @@ -160,7 +160,7 @@ Link state and MTU change =20 Link state and MTU change are network interface specific operations usua= lly done via ifconfig. The request is initiated from the kernel side (in the context of the ifc= onfig process) -and handled by the user space Intel=C2=AE DPDK application. +and handled by the user space DPDK application. The application polls the request, calls the application handler and ret= urns the response back into the kernel space. =20 The application handlers can be registered upon interface creation or ex= plicitly registered/unregistered in runtime. @@ -173,9 +173,9 @@ KNI Working as a Kernel vHost Backend =20 vHost is a kernel module usually working as the backend of virtio (a par= a- virtualization driver framework) to accelerate the traffic from the guest to the host. -The Intel=C2=AE DPDK Kernel NIC interface provides the ability to hookup= vHost traffic into userspace Intel=C2=AE DPDK application. -Together with the Intel=C2=AE DPDK PMD virtio, it significantly improves= the throughput between guest and host. -In the scenario where Intel=C2=AE DPDK is running as fast path in the ho= st, kni-vhost is an efficient path for the traffic. +The DPDK Kernel NIC interface provides the ability to hookup vHost traff= ic into userspace DPDK application. +Together with the DPDK PMD virtio, it significantly improves the through= put between guest and host. +In the scenario where DPDK is running as fast path in the host, kni-vhos= t is an efficient path for the traffic. =20 Overview ~~~~~~~~ @@ -185,7 +185,7 @@ The main idea behind kni-vhost is making the KNI work= as a RAW socket, attaching It is using the existing interface with vHost-net, so it does not requir= e any kernel hacking, and is fully-compatible with the kernel vhost module. As vHost is still taking responsibility for communicating with the front= -end virtio, -it naturally supports both legacy virtio -net and the Intel=C2=AE DPDK P= MD virtio. +it naturally supports both legacy virtio -net and the DPDK PMD virtio. There is a little penalty that comes from the non-polling mode of vhost. However, it scales throughput well when using KNI in multi-thread mode. =20 @@ -224,7 +224,7 @@ Otherwise, by default, KNI will not enable its backen= d support capability. =20 Of course, as a prerequisite, the vhost/vhost-net kernel CONFIG should b= e chosen before compiling the kernel. =20 -#. Compile the Intel=C2=AE DPDK and insert igb_uio as normal. +#. Compile the DPDK and insert igb_uio as normal. =20 #. Insert the KNI kernel module: =20 @@ -248,7 +248,7 @@ Of course, as a prerequisite, the vhost/vhost-net ker= nel CONFIG should be chosen Each port pins two forwarding cores (ingress/egress) in user space. =20 #. Assign a raw socket to vhost-net during qemu-kvm startup. - The Intel=C2=AE DPDK does not provide a script to do this since it i= s easy for the user to customize. + The DPDK does not provide a script to do this since it is easy for t= he user to customize. The following shows the key steps to launch qemu-kvm with kni-vhost: =20 .. code-block:: bash @@ -272,7 +272,7 @@ Then, using the qemu-kvm command with the -netdev opt= ion to assign such raw sock Compatibility Configure Option ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ =20 -There is a CONFIG_RTE_KNI_VHOST_VNET_HDR_EN configuration option in Inte= l=C2=AE DPDK configuration file. +There is a CONFIG_RTE_KNI_VHOST_VNET_HDR_EN configuration option in DPDK= configuration file. By default, it set to n, which means do not turn on the virtio net heade= r, which is used to support additional features (such as, csum offload, vla= n offload, generic-segmentation and so on), since the kni-vhost does not yet support those features. diff --git a/doc/guides/prog_guide/libpcap_ring_based_poll_mode_drv.rst b= /doc/guides/prog_guide/libpcap_ring_based_poll_mode_drv.rst index 5e6e3bf..249a2e0 100644 --- a/doc/guides/prog_guide/libpcap_ring_based_poll_mode_drv.rst +++ b/doc/guides/prog_guide/libpcap_ring_based_poll_mode_drv.rst @@ -32,7 +32,7 @@ Libpcap and Ring Based Poll Mode Drivers =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =20 In addition to Poll Mode Drivers (PMDs) for physical and virtual hardwar= e, -the Intel=C2=AE DPDK also includes two pure-software PMDs. These two dri= vers are: +the DPDK also includes two pure-software PMDs. These two drivers are: =20 * A libpcap -based PMD (librte_pmd_pcap) that reads and writes packets= using libpcap, - both from files on disk, as well as from physical NIC devices usin= g standard Linux kernel drivers. @@ -50,7 +50,7 @@ the Intel=C2=AE DPDK also includes two pure-software PM= Ds. These two drivers are: Using the Drivers from the EAL Command Line ------------------------------------------- =20 -For ease of use, the Intel=C2=AE DPDK EAL also has been extended to allo= w pseudo-ethernet devices, +For ease of use, the DPDK EAL also has been extended to allow pseudo-eth= ernet devices, using one or more of these drivers, to be created at application startup time during EAL initialization. =20 @@ -168,7 +168,7 @@ Otherwise, the first 512 packets from the input pcap = file will be discarded by t Rings-based PMD ~~~~~~~~~~~~~~~ =20 -To run an Intel=C2=AE DPDK application on a machine without any Ethernet= devices, a pair of ring-based rte_ethdevs can be used as below. +To run a DPDK application on a machine without any Ethernet devices, a p= air of ring-based rte_ethdevs can be used as below. The device names passed to the --vdev option must start with eth_ring an= d take no additional parameters. Multiple devices may be specified, separated by commas. =20 @@ -259,7 +259,7 @@ where one may want to have inter-core communication u= sing pseudo Ethernet device for reasons of API consistency. =20 Enqueuing and dequeuing items from an rte_ring using the rings-based PMD= may be slower than using the native rings API. -This is because Intel=C2=AE DPDK Ethernet drivers make use of function p= ointers to call the appropriate enqueue or dequeue functions, +This is because DPDK Ethernet drivers make use of function pointers to c= all the appropriate enqueue or dequeue functions, while the rte_ring specific functions are direct function calls in the c= ode and are often inlined by the compiler. =20 Once an ethdev has been created, for either a ring or a pcap-based PM= D, diff --git a/doc/guides/prog_guide/link_bonding_poll_mode_drv_lib.rst b/d= oc/guides/prog_guide/link_bonding_poll_mode_drv_lib.rst index 08e4424..cf6a6fa 100644 --- a/doc/guides/prog_guide/link_bonding_poll_mode_drv_lib.rst +++ b/doc/guides/prog_guide/link_bonding_poll_mode_drv_lib.rst @@ -1,5 +1,5 @@ .. BSD LICENSE - Copyright(c) 2010-2014 Intel Corporation. All rights reserved. + Copyright(c) 2010-2014 ntel Corporation. All rights reserved. All rights reserved. =20 Redistribution and use in source and binary forms, with or without @@ -32,7 +32,7 @@ Link Bonding Poll Mode Driver Library =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =20 In addition to Poll Mode Drivers (PMDs) for physical and virtual hardwar= e, -Intel=C2=AE DPDK also includes a pure-software library that +DPDK also includes a pure-software library that allows physical PMD's to be bonded together to create a single logical P= MD. =20 |bond-overview| @@ -53,7 +53,7 @@ bonded device and its slave devices. =20 The Link Bonding PMD Library is enabled by default in the build configuration files, the library can be disabled by setting - ``CONFIG_RTE_LIBRTE_PMD_BOND=3Dn`` and recompiling the Intel=C2=AE D= PDK. + ``CONFIG_RTE_LIBRTE_PMD_BOND=3Dn`` and recompiling the DPDK. =20 Link Bonding Modes Overview --------------------------- @@ -139,7 +139,7 @@ Implementation Details ---------------------- =20 The librte_pmd_bond bonded device are compatible with the Ethernet devic= e API -exported by the Ethernet PMDs described in the *Intel=C2=AE DPDK API Ref= erence*. +exported by the Ethernet PMDs described in the *DPDK API Reference*. =20 The Link Bonding Library supports the creation of bonded devices at appl= ication startup time during EAL initialization using the ``--vdev`` option as we= ll as diff --git a/doc/guides/prog_guide/lpm_lib.rst b/doc/guides/prog_guide/lp= m_lib.rst index ba27b0f..d1de87a 100644 --- a/doc/guides/prog_guide/lpm_lib.rst +++ b/doc/guides/prog_guide/lpm_lib.rst @@ -33,7 +33,7 @@ LPM Library =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =20 -The Intel=C2=AE DPDK LPM library component implements the Longest Prefix= Match (LPM) table search method for 32-bit keys +The DPDK LPM library component implements the Longest Prefix Match (LPM)= table search method for 32-bit keys that is typically used to find the best route match in IP forwarding app= lications. =20 LPM API Overview diff --git a/doc/guides/prog_guide/malloc_lib.rst b/doc/guides/prog_guide= /malloc_lib.rst index 15489ff..63d87d9 100644 --- a/doc/guides/prog_guide/malloc_lib.rst +++ b/doc/guides/prog_guide/malloc_lib.rst @@ -37,14 +37,14 @@ The librte_malloc library provides an API to allocate= any-sized memory. =20 The objective of this library is to provide malloc-like functions to all= ow allocation from hugepage memory and to facilitate application porting. -The *Intel=C2=AE DPDK API Reference* manual describes the available func= tions. +The *DPDK API Reference* manual describes the available functions. =20 Typically, these kinds of allocations should not be done in data plane p= rocessing because they are slower than pool-based allocation and make use of locks= within the allocation and free paths. However, they can be used in configuration code. =20 -Refer to the rte_malloc() function description in the *Intel=C2=AE DPDK = API Reference* manual for more information. +Refer to the rte_malloc() function description in the *DPDK API Referenc= e* manual for more information. =20 Cookies ------- @@ -203,7 +203,7 @@ Once the new memzone has been set up, the scan of the= free-list for the heap is and on this occasion should find the newly created, suitable element as the size of memory reserved in the memzone is set to= be at least the size of the requested data block plus the alignment - -subject to a minimum size specified in the Intel DPDK compile-time confi= guration. +subject to a minimum size specified in the DPDK compile-time configurati= on. =20 When a suitable, free element has been identified, the pointer to be ret= urned to the user is calculated, with the space to be provided to the user being at the end of the free b= lock. diff --git a/doc/guides/prog_guide/mbuf_lib.rst b/doc/guides/prog_guide/m= buf_lib.rst index d6b6e50..3d59e96 100644 --- a/doc/guides/prog_guide/mbuf_lib.rst +++ b/doc/guides/prog_guide/mbuf_lib.rst @@ -34,7 +34,7 @@ Mbuf Library =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =20 The mbuf library provides the ability to allocate and free buffers (mbuf= s) -that may be used by the Intel=C2=AE DPDK application to store message bu= ffers. +that may be used by the DPDK application to store message buffers. The message buffers are stored in a mempool, using the :ref:`Mempool Lib= rary `. =20 A rte_mbuf struct can carry network packet buffers @@ -57,7 +57,7 @@ The advantage of the first method is that it only needs= one operation to allocat On the other hand, the second method is more flexible and allows the complete separation of the allocation of metadata structures from th= e allocation of packet data buffers. =20 -The first method was chosen for the Intel=C2=AE DPDK. +The first method was chosen for the DPDK. The metadata contains control information such as message type, length, offset to the start of the data and a pointer for additional mbuf struct= ures allowing buffer chaining. =20 @@ -135,7 +135,7 @@ This library provides some functions for manipulating= the data in a packet mbuf. =20 * Remove data at the beginning of the buffer (rte_pktmbuf_adj()) =20 - * Remove data at the end of the buffer (rte_pktmbuf_trim()) Refer = to the *Intel=C2=AE DPDK API Reference* for details. + * Remove data at the end of the buffer (rte_pktmbuf_trim()) Refer = to the *DPDK API Reference* for details. =20 Meta Information ---------------- diff --git a/doc/guides/prog_guide/mempool_lib.rst b/doc/guides/prog_guid= e/mempool_lib.rst index 9000215..b4704a7 100644 --- a/doc/guides/prog_guide/mempool_lib.rst +++ b/doc/guides/prog_guide/mempool_lib.rst @@ -34,7 +34,7 @@ Mempool Library =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =20 A memory pool is an allocator of a fixed-sized object. -In the Intel=C2=AE DPDK, it is identified by name and uses a ring to sto= re free objects. +In the DPDK, it is identified by name and uses a ring to store free obje= cts. It provides some other optional services such as a per-core object cache= and an alignment helper to ensure that objects are padded to spread them equ= ally on all DRAM or DDR3 channels. =20 diff --git a/doc/guides/prog_guide/multi_proc_support.rst b/doc/guides/pr= og_guide/multi_proc_support.rst index 43134df..deaae47 100644 --- a/doc/guides/prog_guide/multi_proc_support.rst +++ b/doc/guides/prog_guide/multi_proc_support.rst @@ -33,13 +33,13 @@ Multi-process Support =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =20 -In the Intel=C2=AE DPDK, multi-process support is designed to allow a gr= oup of Intel=C2=AE DPDK processes +In the DPDK, multi-process support is designed to allow a group of DPDK = processes to work together in a simple transparent manner to perform packet proces= sing, or other workloads, on Intel=C2=AE architecture hardware. To support this functionality, -a number of additions have been made to the core Intel=C2=AE DPDK Enviro= nment Abstraction Layer (EAL). +a number of additions have been made to the core DPDK Environment Abstra= ction Layer (EAL). =20 -The EAL has been modified to allow different types of Intel=C2=AE DPDK p= rocesses to be spawned, +The EAL has been modified to allow different types of DPDK processes to = be spawned, each with different permissions on the hugepage memory used by the appli= cations. For now, there are two types of process specified: =20 @@ -48,31 +48,31 @@ For now, there are two types of process specified: * secondary processes, which cannot initialize shared memory, but can attach to pre- initialized shared memory and create objects = in it. =20 -Standalone Intel=C2=AE DPDK processes are primary processes, +Standalone DPDK processes are primary processes, while secondary processes can only run alongside a primary process or after a primary process has already configured the hugepage shared memor= y for them. =20 To support these two process types, and other multi-process setups descr= ibed later, two additional command-line parameters are available to the EAL: =20 -* --proc-type: for specifying a given process instance as the primary = or secondary Intel=C2=AE DPDK instance +* --proc-type: for specifying a given process instance as the primary = or secondary DPDK instance =20 * --file-prefix: to allow processes that do not want to co-operate to = have different memory regions =20 -A number of example applications are provided that demonstrate how multi= ple Intel=C2=AE DPDK processes can be used together. +A number of example applications are provided that demonstrate how multi= ple DPDK processes can be used together. These are more fully documented in the "Multi- process Sample Applicatio= n" chapter -in the *Intel=C2=AE DPDK Sample Application's User Guide*. +in the *DPDK Sample Application's User Guide*. =20 Memory Sharing -------------- =20 -The key element in getting a multi-process application working using the= Intel=C2=AE DPDK is to ensure that +The key element in getting a multi-process application working using the= DPDK is to ensure that memory resources are properly shared among the processes making up the m= ulti-process application. Once there are blocks of shared memory available that can be accessed by= multiple processes, then issues such as inter-process communication (IPC) becomes much simpl= er. =20 On application start-up in a primary or standalone process, -the Intel DPDK records to memory-mapped files the details of the memory = configuration it is using - hugepages in use, +the DPDK records to memory-mapped files the details of the memory config= uration it is using - hugepages in use, the virtual addresses they are mapped at, the number of memory channels = present, etc. When a secondary process is started, these files are read and the EAL re= creates the same memory configuration in the secondary process so that all memory zones are shared between pro= cesses and all pointers to that memory are valid, @@ -85,14 +85,14 @@ and point to the same objects, in both processes. =20 .. _pg_figure_16: =20 -**Figure 16. Memory Sharing in the Intel=C2=AE DPDK Multi-process Sample= Application** +**Figure 16. Memory Sharing in the DPDK Multi-process Sample Application= ** =20 .. image42_png has been replaced =20 |multi_process_memory| =20 The EAL also supports an auto-detection mode (set by EAL --proc-type=3Da= uto flag ), -whereby an Intel=C2=AE DPDK process is started as a secondary instance i= f a primary instance is already running. +whereby an DPDK process is started as a secondary instance if a primary = instance is already running. =20 Deployment Models ----------------- @@ -100,14 +100,14 @@ Deployment Models Symmetric/Peer Processes ~~~~~~~~~~~~~~~~~~~~~~~~ =20 -Intel=C2=AE DPDK multi-process support can be used to create a set of pe= er processes where each process performs the same workload. +DPDK multi-process support can be used to create a set of peer processes= where each process performs the same workload. This model is equivalent to having multiple threads each running the sam= e main-loop function, -as is done in most of the supplied Intel=C2=AE DPDK sample applications. +as is done in most of the supplied DPDK sample applications. In this model, the first of the processes spawned should be spawned usin= g the --proc-type=3Dprimary EAL flag, while all subsequent instances should be spawned using the --proc-type=3D= secondary flag. =20 The simple_mp and symmetric_mp sample applications demonstrate this usag= e model. -They are described in the "Multi-process Sample Application" chapter in = the *Intel=C2=AE DPDK Sample Application's User Guide*. +They are described in the "Multi-process Sample Application" chapter in = the *DPDK Sample Application's User Guide*. =20 Asymmetric/Non-Peer Processes ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ @@ -118,13 +118,13 @@ server distributing received packets among worker o= r client threads, which are r In this case, extensive use of rte_ring objects is made, which are locat= ed in shared hugepage memory. =20 The client_server_mp sample application shows this usage model. -It is described in the "Multi-process Sample Application" chapter in the= *Intel=C2=AE DPDK Sample Application's User Guide*. +It is described in the "Multi-process Sample Application" chapter in the= *DPDK Sample Application's User Guide*. =20 -Running Multiple Independent Intel=C2=AE DPDK Applications -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Running Multiple Independent DPDK Applications +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ =20 -In addition to the above scenarios involving multiple Intel=C2=AE DPDK p= rocesses working together, -it is possible to run multiple Intel=C2=AE DPDK processes side-by-side, +In addition to the above scenarios involving multiple DPDK processes wor= king together, +it is possible to run multiple DPDK processes side-by-side, where those processes are all working independently. Support for this usage scenario is provided using the --file-prefix para= meter to the EAL. =20 @@ -136,32 +136,32 @@ if filesystem and device permissions are set up to = allow this). The rte part of the filenames of each of the above is configurable using= the file-prefix parameter. =20 In addition to specifying the file-prefix parameter, -any Intel=C2=AE DPDK applications that are to be run side-by-side must e= xplicitly limit their memory use. +any DPDK applications that are to be run side-by-side must explicitly li= mit their memory use. This is done by passing the -m flag to each process to specify how much = hugepage memory, in megabytes, each process can use (or passing --socket-mem to specify how much hugepa= ge memory on each socket each process can use). =20 .. note:: =20 - Independent Intel=C2=AE DPDK instances running side-by-side on a sin= gle machine cannot share any network ports. + Independent DPDK instances running side-by-side on a single machine = cannot share any network ports. Any network ports being used by one process should be blacklisted in= every other process. =20 -Running Multiple Independent Groups of Intel=C2=AE DPDK Applications -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Running Multiple Independent Groups of DPDK Applications +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ =20 -In the same way that it is possible to run independent Intel=C2=AE DPDK = applications side- by-side on a single system, -this can be trivially extended to multi-process groups of Intel=C2=AE DP= DK applications running side-by-side. +In the same way that it is possible to run independent DPDK applications= side- by-side on a single system, +this can be trivially extended to multi-process groups of DPDK applicati= ons running side-by-side. In this case, the secondary processes must use the same --file-prefix pa= rameter as the primary process whose shared memory they are connecting to. =20 .. note:: =20 - All restrictions and issues with multiple independent Intel=C2=AE D= PDK processes running side-by-side + All restrictions and issues with multiple independent DPDK processes= running side-by-side apply in this usage scenario also. =20 Multi-process Limitations ------------------------- =20 -There are a number of limitations to what can be done when running Intel= =C2=AE DPDK multi-process applications. +There are a number of limitations to what can be done when running DPDK = multi-process applications. Some of these are documented below: =20 * The multi-process feature requires that the exact same hugepage memo= ry mappings be present in all applications. @@ -174,7 +174,7 @@ Some of these are documented below: so it is recommended that it be disabled only when absolutely necess= ary, and only when the implications of this change have been understood. =20 -* All Intel=C2=AE DPDK processes running as a single application and u= sing shared memory must have distinct coremask arguments. +* All DPDK processes running as a single application and using shared = memory must have distinct coremask arguments. It is not possible to have a primary and secondary instance, or two = secondary instances, using any of the same logical cores. Attempting to do so can cause corruption of memory pool caches, amon= g other issues. @@ -193,11 +193,11 @@ To work around this issue, it is recommended that m= ulti-process applications per the hashing function from the code and then using the rte_hash_add_with_= hash()/rte_hash_lookup_with_hash() functions instead of the functions which do the hashing internally, such as rte_ha= sh_add()/rte_hash_lookup(). =20 -* Depending upon the hardware in use, and the number of Intel=C2=AE DP= DK processes used, - it may not be possible to have HPET timers available in each Intel=C2= =AE DPDK instance. +* Depending upon the hardware in use, and the number of DPDK processes= used, + it may not be possible to have HPET timers available in each DPDK in= stance. The minimum number of HPET comparators available to Linux* userspace= can be just a single comparator, - which means that only the first, primary Intel=C2=AE DPDK process in= stance can open and mmap /dev/hpet. - If the number of required Intel=C2=AE DPDK processes exceeds that of= the number of available HPET comparators, + which means that only the first, primary DPDK process instance can o= pen and mmap /dev/hpet. + If the number of required DPDK processes exceeds that of the number = of available HPET comparators, the TSC (which is the default timer in this release) must be used as= a time source across all processes instead of the HPET. =20 .. |multi_process_memory| image:: img/multi_process_memory.svg diff --git a/doc/guides/prog_guide/overview.rst b/doc/guides/prog_guide/o= verview.rst index 5781e72..6603409 100644 --- a/doc/guides/prog_guide/overview.rst +++ b/doc/guides/prog_guide/overview.rst @@ -33,13 +33,13 @@ Overview =3D=3D=3D=3D=3D=3D=3D=3D =20 -This section gives a global overview of the architecture of Intel=C2=AE = Data Plane Development Kit (Intel=C2=AE DPDK). +This section gives a global overview of the architecture of Data Plane D= evelopment Kit (DPDK). =20 -The main goal of the Intel=C2=AE DPDK is to provide a simple, +The main goal of the DPDK is to provide a simple, complete framework for fast packet processing in data plane applications= . Users may use the code to understand some of the techniques employed, to build upon for prototyping or to add their own protocol stacks. -Alternative ecosystem options that use the Intel=C2=AE DPDK are availabl= e. +Alternative ecosystem options that use the DPDK are available. =20 The framework creates a set of libraries for specific environments through the creation of an Environment Abstraction Layer (EAL), @@ -49,9 +49,9 @@ These environments are created through the use of make = files and configuration f Once the EAL library is created, the user may link with the library to c= reate their own applications. Other libraries, outside of EAL, including the Hash, Longest Prefix Match (LPM) and rings libraries are also provided. -Sample applications are provided to help show the user how to use variou= s features of the Intel=C2=AE DPDK. +Sample applications are provided to help show the user how to use variou= s features of the DPDK. =20 -The Intel=C2=AE DPDK implements a run to completion model for packet pro= cessing, +The DPDK implements a run to completion model for packet processing, where all resources must be allocated prior to calling Data Plane applic= ations, running as execution units on logical processing cores. The model does not support a scheduler and all devices are accessed by p= olling. @@ -64,15 +64,15 @@ This allows work to be performed in stages and may al= low more efficient use of c Development Environment ----------------------- =20 -The Intel=C2=AE DPDK project installation requires Linux and the associa= ted toolchain, +The DPDK project installation requires Linux and the associated toolchai= n, such as one or more compilers, assembler, make utility, -editor and various libraries to create the Intel=C2=AE DPDK components a= nd libraries. +editor and various libraries to create the DPDK components and libraries= . =20 Once these libraries are created for the specific environment and archit= ecture, they may then be used to create the user's data plane application. =20 When creating applications for the Linux user space, the glibc library i= s used. -For Intel=C2=AE DPDK applications, two environmental variables (RTE_SDK = and RTE_TARGET) +For DPDK applications, two environmental variables (RTE_SDK and RTE_TARG= ET) must be configured before compiling the applications. The following are examples of how the variables can be set: =20 @@ -81,7 +81,7 @@ The following are examples of how the variables can be = set: export RTE_SDK=3D/home/user/DPDK export RTE_TARGET=3Dx86_64-native-linuxapp-gcc =20 -See the *Intel=C2=AE DPDK Getting Started Guide* for information on sett= ing up the development environment. +See the *DPDK Getting Started Guide* for information on setting up the d= evelopment environment. =20 Environment Abstraction Layer ----------------------------- @@ -90,7 +90,7 @@ The Environment Abstraction Layer (EAL) provides a gene= ric interface that hides the environment specifics from the applications and libraries= . The services provided by the EAL are: =20 -* Intel=C2=AE DPDK loading and launching +* DPDK loading and launching =20 * Support for multi-process and multi-thread execution types =20 @@ -162,8 +162,8 @@ Network Packet Buffer Management (librte_mbuf) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ =20 The mbuf library provides the facility to create and destroy buffers -that may be used by the Intel=C2=AE DPDK application to store message bu= ffers. -The message buffers are created at startup time and stored in a mempool,= using the Intel=C2=AE DPDK mempool library. +that may be used by the DPDK application to store message buffers. +The message buffers are created at startup time and stored in a mempool,= using the DPDK mempool library. =20 This library provide an API to allocate/free mbufs, manipulate control m= essage buffers (ctrlmbuf) which are generic message buffers, and packet buffers (pktmbuf) which are used to carry network packets. @@ -173,7 +173,7 @@ Network Packet Buffer Management is described in :ref= :`Mbuf Library `. Ethernet* Poll Mode Driver Architecture --------------------------------------- =20 -The Intel=C2=AE DPDK includes Poll Mode Drivers (PMDs) for 1 GbE, 10 GbE= and 40GbE, and para virtualized virtio +The DPDK includes Poll Mode Drivers (PMDs) for 1 GbE, 10 GbE and 40GbE, = and para virtualized virtio Ethernet controllers which are designed to work without asynchronous, in= terrupt-based signaling mechanisms. =20 See :ref:`Poll Mode Driver `. @@ -192,7 +192,7 @@ See :ref:`Poll Mode Driver `. Packet Forwarding Algorithm Support ----------------------------------- =20 -The Intel=C2=AE DPDK includes Hash (librte_hash) and Longest Prefix Matc= h (LPM,librte_lpm) +The DPDK includes Hash (librte_hash) and Longest Prefix Match (LPM,librt= e_lpm) libraries to support the corresponding packet forwarding algorithms. =20 See :ref:`Hash Library ` and :ref:`LPM Library ` for more information. diff --git a/doc/guides/prog_guide/packet_classif_access_ctrl.rst b/doc/g= uides/prog_guide/packet_classif_access_ctrl.rst index dbbc78a..72f4510 100644 --- a/doc/guides/prog_guide/packet_classif_access_ctrl.rst +++ b/doc/guides/prog_guide/packet_classif_access_ctrl.rst @@ -31,7 +31,7 @@ Packet Classification and Access Control =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =20 -The Intel=C2=AE DPDK provides an Access Control library that gives the a= bility +The DPDK provides an Access Control library that gives the ability to classify an input packet based on a set of classification rules. =20 The ACL library is used to perform an N-tuple search over a set of rules= with multiple categories @@ -267,7 +267,7 @@ Application Programming Interface (API) Usage =20 .. note:: =20 - For more details about the Access Control API, please refer to the *= Intel=C2=AE DPDK API Reference*. + For more details about the Access Control API, please refer to the *= DPDK API Reference*. =20 The following example demonstrates IPv4, 5-tuple classification for rule= s defined above with multiple categories in more detail. diff --git a/doc/guides/prog_guide/packet_distrib_lib.rst b/doc/guides/pr= og_guide/packet_distrib_lib.rst index c95291d..18baf55 100644 --- a/doc/guides/prog_guide/packet_distrib_lib.rst +++ b/doc/guides/prog_guide/packet_distrib_lib.rst @@ -31,7 +31,7 @@ Packet Distributor Library =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D =20 -The Intel=C2=AE DPDK Packet Distributor library is a library designed to= be used for dynamic load balancing of traffic +The DPDK Packet Distributor library is a library designed to be used for= dynamic load balancing of traffic while supporting single packet at a time operation. When using this library, the logical cores in use are to be considered i= n two roles: firstly a distributor lcore, which is responsible for load balancing or distributing packets, @@ -97,7 +97,7 @@ while allowing packet order within a packet flow -- ide= ntified by a tag -- to be =20 The flush and clear_returns API calls, mentioned previously, are likely of less use that the process and returned_pkts APIS, and are = principally provided to aid in unit testing of the library. -Descriptions of these functions and their use can be found in the Intel=C2= =AE DPDK API Reference document. +Descriptions of these functions and their use can be found in the DPDK A= PI Reference document. =20 Worker Operation ---------------- diff --git a/doc/guides/prog_guide/packet_framework.rst b/doc/guides/prog= _guide/packet_framework.rst index 625ba2e..537811b 100644 --- a/doc/guides/prog_guide/packet_framework.rst +++ b/doc/guides/prog_guide/packet_framework.rst @@ -34,7 +34,7 @@ Packet Framework Design Objectives ----------------- =20 -The main design objectives for the Intel DPDK Packet Framework are: +The main design objectives for the DPDK Packet Framework are: =20 * Provide standard methodology to build complex packet processing pipe= lines. Provide reusable and extensible templates for the commonly used pipe= line functional blocks; @@ -55,7 +55,7 @@ with the logic of each stage glued around a lookup tabl= e. For each incoming packet, the table defines the set of actions to be app= lied to the packet, as well as the next stage to send the packet to. =20 -The Intel DPDK Packet Framework minimizes the development effort require= d to build packet processing pipelines +The DPDK Packet Framework minimizes the development effort required to b= uild packet processing pipelines by defining a standard methodology for pipeline development, as well as providing libraries of reusable templates for the commonly us= ed pipeline blocks. =20 @@ -93,12 +93,12 @@ Table 19 is a non-exhaustive list of ports that can b= e implemented with the Pack | | | = | +=3D=3D=3D+=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D+ | 1 | SW ring | SW circular buffer used for message passing bet= ween the application threads. Uses | -| | | the Intel DPDK rte_ring primitive. Expected to = be the most commonly used type of | +| | | the DPDK rte_ring primitive. Expected to be the= most commonly used type of | | | | port. = | | | | = | +---+------------------+------------------------------------------------= ---------------------------------------+ | 2 | HW ring | Queue of buffer descriptors used to interact wi= th NIC, switch or accelerator ports. | -| | | For NIC ports, it uses the Intel DPDK rte_eth_r= x_queue or rte_eth_tx_queue | +| | | For NIC ports, it uses the DPDK rte_eth_rx_queu= e or rte_eth_tx_queue | | | | primitives. = | | | | = | +---+------------------+------------------------------------------------= ---------------------------------------+ diff --git a/doc/guides/prog_guide/perf_opt_guidelines.rst b/doc/guides/p= rog_guide/perf_opt_guidelines.rst index 90480b8..7c24aa4 100644 --- a/doc/guides/prog_guide/perf_opt_guidelines.rst +++ b/doc/guides/prog_guide/perf_opt_guidelines.rst @@ -38,9 +38,9 @@ Performance Optimization Guidelines Introduction ------------ =20 -The following sections describe optimizations used in the Intel=C2=AE DP= DK and optimizations that should be considered for a new applications. +The following sections describe optimizations used in the DPDK and optim= izations that should be considered for a new applications. =20 They also highlight the performance-impacting coding techniques that sho= uld, -and should not be, used when developing an application using the Intel=C2= =AE DPDK. +and should not be, used when developing an application using the DPDK. =20 And finally, they give an introduction to application profiling using a = Performance Analyzer from Intel to optimize the software. diff --git a/doc/guides/prog_guide/poll_mode_drv.rst b/doc/guides/prog_gu= ide/poll_mode_drv.rst index da37b1f..e9e1132 100755 --- a/doc/guides/prog_guide/poll_mode_drv.rst +++ b/doc/guides/prog_guide/poll_mode_drv.rst @@ -33,7 +33,7 @@ Poll Mode Driver =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =20 -The Intel=C2=AE DPDK includes 1 Gigabit, 10 Gigabit and 40 Gigabit and p= ara virtualized virtio Poll Mode Drivers. +The DPDK includes 1 Gigabit, 10 Gigabit and 40 Gigabit and para virtuali= zed virtio Poll Mode Drivers. =20 A Poll Mode Driver (PMD) consists of APIs, provided through the BSD driv= er running in user space, to configure the devices and their respective queues. @@ -46,7 +46,7 @@ their global design principles and proposes a high-leve= l architecture and a gene Requirements and Assumptions ---------------------------- =20 -The Intel=C2=AE DPDK environment for packet processing applications allo= ws for two models, run-to-completion and pipe-line: +The DPDK environment for packet processing applications allows for two m= odels, run-to-completion and pipe-line: =20 * In the *run-to-completion* model, a specific port's RX descriptor r= ing is polled for packets through an API. Packets are then processed on the same core and placed on a port's T= X descriptor ring through an API for transmission. @@ -56,7 +56,7 @@ The Intel=C2=AE DPDK environment for packet processing = applications allows for two m The other core continues to process the packet which then may be pla= ced on a port's TX descriptor ring through an API for transmission. =20 In a synchronous run-to-completion model, -each logical core assigned to the Intel=C2=AE DPDK executes a packet pro= cessing loop that includes the following steps: +each logical core assigned to the DPDK executes a packet processing loop= that includes the following steps: =20 * Retrieve input packets through the PMD receive API =20 @@ -136,7 +136,7 @@ replenishing multiple descriptors of the receive ring= . Logical Cores, Memory and NIC Queues Relationships -------------------------------------------------- =20 -The Intel=C2=AE DPDK supports NUMA allowing for better performance when = a processor's logical cores and interfaces utilize its local memory. +The DPDK supports NUMA allowing for better performance when a processor'= s logical cores and interfaces utilize its local memory. Therefore, mbuf allocation associated with local PCIe* interfaces should= be allocated from memory pools created in the local memory. The buffers should, if possible, remain on the local processor to obtain= the best performance results and RX and TX buffer descriptors should be populated with mbufs allocated from a mempool allocated from l= ocal memory. @@ -153,7 +153,7 @@ Device Identification ~~~~~~~~~~~~~~~~~~~~~ =20 Each NIC port is uniquely designated by its (bus/bridge, device, functio= n) PCI -identifiers assigned by the PCI probing/enumeration function executed at= Intel=C2=AE DPDK initialization. +identifiers assigned by the PCI probing/enumeration function executed at= DPDK initialization. Based on their PCI identifier, NIC ports are assigned two other identifi= ers: =20 * A port index used to designate the NIC port in all functions exporte= d by the PMD API. @@ -287,7 +287,7 @@ The mbuf structure is fully described in the :ref:`Mb= uf Library ` Ethernet Device API ~~~~~~~~~~~~~~~~~~~ =20 -The Ethernet device API exported by the Ethernet PMDs is described in th= e *Intel=C2=AE DPDK API Reference*. +The Ethernet device API exported by the Ethernet PMDs is described in th= e *DPDK API Reference*. =20 Vector PMD for IXGBE -------------------- diff --git a/doc/guides/prog_guide/poll_mode_drv_emulated_virtio_nic.rst = b/doc/guides/prog_guide/poll_mode_drv_emulated_virtio_nic.rst index 9ccaa18..86f4f60 100644 --- a/doc/guides/prog_guide/poll_mode_drv_emulated_virtio_nic.rst +++ b/doc/guides/prog_guide/poll_mode_drv_emulated_virtio_nic.rst @@ -32,12 +32,12 @@ Poll Mode Driver for Emulated Virtio NIC =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =20 Virtio is a para-virtualization framework initiated by IBM, and supporte= d by KVM hypervisor. -In the Intel=C2=AE Data Plane Development Kit (Intel=C2=AE DPDK), +In the Data Plane Development Kit (DPDK), we provide a virtio Poll Mode Driver (PMD) as a software solution, compa= ring to SRIOV hardware solution, for fast guest VM to guest VM communication and guest VM to host communi= cation. =20 Vhost is a kernel acceleration module for virtio qemu backend. -The Intel=C2=AE DPDK extends kni to support vhost raw socket interface, +The DPDK extends kni to support vhost raw socket interface, which enables vhost to directly read/ write packets from/to a physical p= ort. With this enhancement, virtio could achieve quite promising performance. =20 @@ -50,8 +50,8 @@ please refer to Chapter "Driver for VM Emulated Devices= ". In this chapter, we will demonstrate usage of virtio PMD driver with two= backends, standard qemu vhost back end and vhost kni back end. =20 -Virtio Implementation in Intel=C2=AE DPDK ------------------------------------- +Virtio Implementation in DPDK +----------------------------- =20 For details about the virtio spec, refer to Virtio PCI Card Specificatio= n written by Rusty Russell. =20 @@ -113,8 +113,8 @@ Host2VM communication example =20 insmod rte_kni.ko =20 - Other basic Intel=C2=AE DPDK preparations like hugepage enabling, ig= b_uio port binding are not listed here. - Please refer to the *Intel=C2=AE DPDK Getting Started Guide* for det= ailed instructions. + Other basic DPDK preparations like hugepage enabling, igb_uio port b= inding are not listed here. + Please refer to the *DPDK Getting Started Guide* for detailed instru= ctions. =20 #. Launch the kni user application: =20 diff --git a/doc/guides/prog_guide/poll_mode_drv_paravirtual_vmxnets_nic.= rst b/doc/guides/prog_guide/poll_mode_drv_paravirtual_vmxnets_nic.rst index 83ee68b..e48bc13 100644 --- a/doc/guides/prog_guide/poll_mode_drv_paravirtual_vmxnets_nic.rst +++ b/doc/guides/prog_guide/poll_mode_drv_paravirtual_vmxnets_nic.rst @@ -38,9 +38,9 @@ multi-queue support (also known as Receive Side Scaling= , RSS), IPv6 offloads, and MSI/MSI-X interrupt delivery. Because operating system vendors do not provide built-in drivers for thi= s card, VMware Tools must be installed to have a driver for the VMXNET3 network = adapter available. -One can use the same device in an Intel=C2=AE DPDK application with VMXN= ET3 PMD introduced in Intel=C2=AE DPDK API. +One can use the same device in a DPDK application with VMXNET3 PMD intro= duced in DPDK API. =20 -Currently, the driver provides basic support for using the device in an = Intel=C2=AE DPDK application running on a guest OS. +Currently, the driver provides basic support for using the device in a D= PDK application running on a guest OS. Optimization is needed on the backend, that is, the VMware* ESXi vmkerne= l switch, to achieve optimal performance end-to-end. =20 In this chapter, two setups with the use of the VMXNET3 PMD are demonstr= ated: @@ -49,8 +49,8 @@ In this chapter, two setups with the use of the VMXNET3= PMD are demonstrated: =20 #. Vmxnet3 chaining VMs connected to a vSwitch =20 -VMXNET3 Implementation in the Intel=C2=AE DPDK ------------------------------------------ +VMXNET3 Implementation in the DPDK +---------------------------------- =20 For details on the VMXNET3 device, refer to the VMXNET3 driver's vmxnet3= directory and support manual from VMware*. =20 @@ -69,15 +69,15 @@ During RX/TX, the packet buffers are exchanged by the= ir GPAs, and the hypervisor loads the buffers with packets in the RX case and sen= ds packets to vSwitch in the TX case. =20 The VMXNET3 PMD is compiled with vmxnet3 device headers. -The interface is similar to that of the other PMDs available in the Inte= l=C2=AE DPDK API. +The interface is similar to that of the other PMDs available in the DPDK= API. The driver pre-allocates the packet buffers and loads the command ring d= escriptors in advance. The hypervisor fills those packet buffers on packet arrival and write co= mpletion ring descriptors, which are eventually pulled by the PMD. -After reception, the Intel=C2=AE DPDK application frees the descriptors = and loads new packet buffers for the coming packets. +After reception, the DPDK application frees the descriptors and loads ne= w packet buffers for the coming packets. The interrupts are disabled and there is no notification required. This keeps performance up on the RX side, even though the device provide= s a notification feature. =20 -In the transmit routine, the Intel=C2=AE DPDK application fills packet b= uffer pointers in the descriptors of the command ring +In the transmit routine, the DPDK application fills packet buffer pointe= rs in the descriptors of the command ring and notifies the hypervisor. In response the hypervisor takes packets and passes them to the vSwitch.= It writes into the completion descriptors ring. The rings are read by the PMD in the next transmit routine call and the = buffers and descriptors are freed from memory. @@ -132,12 +132,12 @@ The following prerequisites apply: =20 .. note:: =20 - Follow the *Intel=C2=AE DPDK Getting Started Guide* to setup the bas= ic Intel=C2=AE DPDK environment. + Follow the *DPDK Getting Started Guide* to setup the basic DPDK envi= ronment. =20 .. note:: =20 - Follow the *Intel=C2=AE DPDK Sample Application's User Guide*, L2 Fo= rwarding/L3 Forwarding and - TestPMD for instructions on how to run an Intel=C2=AE DPDK applicati= on using an assigned VMXNET3 device. + Follow the *DPDK Sample Application's User Guide*, L2 Forwarding/L3 = Forwarding and + TestPMD for instructions on how to run a DPDK application using an a= ssigned VMXNET3 device. =20 VMXNET3 with a Native NIC Connected to a vSwitch ------------------------------------------------ @@ -150,8 +150,8 @@ This section describes an example setup for Phy-vSwit= ch-VM-Phy communication. =20 .. note:: =20 - Other instructions on preparing to use Intel=C2=AE DPDK such as, hug= epage enabling, igb_uio port binding are not listed here. - Please refer to *Intel=C2=AE DPDK Getting Started Guide and Intel=C2= =AE DPDK Sample Application's User Guide* for detailed instructions. + Other instructions on preparing to use DPDK such as, hugepage enabli= ng, igb_uio port binding are not listed here. + Please refer to *DPDK Getting Started Guide and DPDK Sample Applicat= ion's User Guide* for detailed instructions. =20 The packet reception and transmission flow path is: =20 diff --git a/doc/guides/prog_guide/power_man.rst b/doc/guides/prog_guide/= power_man.rst index 3b90e6b..114d0b1 100644 --- a/doc/guides/prog_guide/power_man.rst +++ b/doc/guides/prog_guide/power_man.rst @@ -31,7 +31,7 @@ Power Management =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =20 -The Intel=C2=AE DPDK Power Management feature allows users space applica= tions to save power +The DPDK Power Management feature allows users space applications to sav= e power by dynamically adjusting CPU frequency or entering into different C-Stat= es. =20 * Adjusting the CPU frequency dynamically according to the utilization= of RX queue. @@ -78,7 +78,7 @@ For example, for cpuX, /sys/devices/system/cpu/cpuX/cpu= freq/ has the following s =20 * scaling_setspeed =20 -In the Intel=C2=AE DPDK, scaling_governor is configured in user space. +In the DPDK, scaling_governor is configured in user space. Then, a user space application can prompt the kernel by writing scaling_= setspeed to adjust the CPU frequency according to the strategies defined by the user space application. =20 @@ -86,7 +86,7 @@ Core-load Throttling through C-States ------------------------------------- =20 Core state can be altered by speculative sleeps whenever the specified l= core has nothing to do. -In the Intel=C2=AE DPDK, if no packet is received after polling, +In the DPDK, if no packet is received after polling, speculative sleeps can be triggered according the strategies defined by = the user space application. =20 API Overview of the Power Library @@ -116,6 +116,6 @@ The power management mechanism is used to save power = when performing L3 forwardi References ---------- =20 -* l3fwd-power: The sample application in Intel=C2=AE DPDK that perfor= ms L3 forwarding with power management. +* l3fwd-power: The sample application in DPDK that performs L3 forward= ing with power management. =20 -* The "L3 Forwarding with Power Management Sample Application" chapter= in the *Intel=C2=AE DPDK Sample Application's User Guide*. +* The "L3 Forwarding with Power Management Sample Application" chapter= in the *DPDK Sample Application's User Guide*. diff --git a/doc/guides/prog_guide/profile_app.rst b/doc/guides/prog_guid= e/profile_app.rst index 10821f6..3226187 100644 --- a/doc/guides/prog_guide/profile_app.rst +++ b/doc/guides/prog_guide/profile_app.rst @@ -33,9 +33,9 @@ Profile Your Application =20 Intel processors provide performance counters to monitor events. Some tools provided by Intel can be used to profile and benchmark an app= lication. -See the *VTune=E2=84=A2 Performance Analyzer Essentials* publication fro= m Intel Press for more information. +See the *VTune Performance Analyzer Essentials* publication from Intel P= ress for more information. =20 -For an Intel=C2=AE DPDK application, this can be done in a Linux* applic= ation environment only. +For a DPDK application, this can be done in a Linux* application environ= ment only. =20 The main situations that should be monitored through event counters are: =20 diff --git a/doc/guides/prog_guide/qos_framework.rst b/doc/guides/prog_gu= ide/qos_framework.rst index 0e3c99a..087f3c4 100644 --- a/doc/guides/prog_guide/qos_framework.rst +++ b/doc/guides/prog_guide/qos_framework.rst @@ -31,7 +31,7 @@ Quality of Service (QoS) Framework =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =20 -This chapter describes the Intel=C2=AE DPDK Quality of Service (QoS) fra= mework. +This chapter describes the DPDK Quality of Service (QoS) framework. =20 Packet Pipeline with QoS Support -------------------------------- @@ -46,7 +46,7 @@ An example of a complex packet processing pipeline with= QoS support is shown in =20 |pkt_proc_pipeline_qos| =20 -This pipeline can be built using reusable Intel=C2=AE DPDK software libr= aries. +This pipeline can be built using reusable DPDK software libraries. The main blocks implementing QoS in this pipeline are: the policer, the = dropper and the scheduler. A functional description of each block is provided in the following tabl= e. =20 @@ -229,7 +229,7 @@ The rte_sched.h file contains configuration functions= for port, subport and pipe Port Scheduler Enqueue API ^^^^^^^^^^^^^^^^^^^^^^^^^^ =20 -The port scheduler enqueue API is very similar to the API of the Intel=C2= =AE DPDK PMD TX function. +The port scheduler enqueue API is very similar to the API of the DPDK PM= D TX function. =20 .. code-block:: c =20 @@ -238,7 +238,7 @@ The port scheduler enqueue API is very similar to the= API of the Intel=C2=AE DPDK PM Port Scheduler Dequeue API ^^^^^^^^^^^^^^^^^^^^^^^^^^ =20 -The port scheduler dequeue API is very similar to the API of the Intel=C2= =AE DPDK PMD RX function. +The port scheduler dequeue API is very similar to the API of the DPDK PM= D RX function. =20 .. code-block:: c =20 @@ -1170,16 +1170,16 @@ the performance of a small set of message passing= queues. Dropper ------- =20 -The purpose of the Intel=C2=AE DPDK dropper is to drop packets arriving = at a packet scheduler to avoid congestion. +The purpose of the DPDK dropper is to drop packets arriving at a packet = scheduler to avoid congestion. The dropper supports the Random Early Detection (RED), Weighted Random Early Detection (WRED) and tail drop algorithms. Figure 1 illustrates how the dropper integrates with the scheduler. -The Intel=C2=AE DPDK currently does not support congestion management +The DPDK currently does not support congestion management so the dropper provides the only method for congestion avoidance. =20 .. _pg_figure_27: =20 -**Figure 27. High-level Block Diagram of the Intel=C2=AE DPDK Dropper** +**Figure 27. High-level Block Diagram of the DPDK Dropper** =20 .. image53_png has been renamed =20 @@ -1549,17 +1549,17 @@ through the API that a queue has become empty. Source Files Location ~~~~~~~~~~~~~~~~~~~~~ =20 -The source files for the Intel=C2=AE DPDK dropper are located at: +The source files for the DPDK dropper are located at: =20 * DPDK/lib/librte_sched/rte_red.h =20 * DPDK/lib/librte_sched/rte_red.c =20 -Integration with the Intel=C2=AE DPDK QoS Scheduler +Integration with the DPDK QoS Scheduler ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ =20 -RED functionality in the Intel=C2=AE DPDK QoS scheduler is disabled by d= efault. -To enable it, use the Intel=C2=AE DPDK configuration parameter: +RED functionality in the DPDK QoS scheduler is disabled by default. +To enable it, use the DPDK configuration parameter: =20 :: =20 @@ -1573,10 +1573,10 @@ that is passed to the scheduler on initialization= . RED parameters are specified separately for four traffic classes and thr= ee packet colors (green, yellow and red) allowing the scheduler to implement Weighted Random Early Detection (WRE= D). =20 -Integration with the Intel=C2=AE DPDK QoS Scheduler Sample Application -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Integration with the DPDK QoS Scheduler Sample Application +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ =20 -The Intel=C2=AE DPDK QoS Scheduler Application reads a configuration fil= e on start-up. +The DPDK QoS Scheduler Application reads a configuration file on start-u= p. The configuration file includes a section containing RED parameters. The format of these parameters is described in :ref:`Section2.23.3.1 `. A sample RED configuration is shown below. In this example, the queue si= ze is 64 packets. diff --git a/doc/guides/prog_guide/ring_lib.rst b/doc/guides/prog_guide/r= ing_lib.rst index 3289d71..95f773e 100644 --- a/doc/guides/prog_guide/ring_lib.rst +++ b/doc/guides/prog_guide/ring_lib.rst @@ -123,7 +123,7 @@ Use Cases =20 Use cases for the Ring library include: =20 - * Communication between applications in the Intel=C2=AE DPDK + * Communication between applications in the DPDK =20 * Used by memory pool allocator =20 diff --git a/doc/guides/prog_guide/source_org.rst b/doc/guides/prog_guide= /source_org.rst index 90c35a7..c8ca54f 100644 --- a/doc/guides/prog_guide/source_org.rst +++ b/doc/guides/prog_guide/source_org.rst @@ -33,7 +33,7 @@ Source Organization =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =20 -This section describes the organization of sources in the Intel=C2=AE DP= DK framework. +This section describes the organization of sources in the DPDK framework= . =20 Makefiles and Config -------------------- @@ -46,10 +46,10 @@ Makefiles and Config :ref:`Useful Variables Provided by the Build System ` for descriptions of other variables. =20 -Makefiles that are provided by the Intel=C2=AE DPDK libraries and applic= ations are located in $(RTE_SDK)/mk. +Makefiles that are provided by the DPDK libraries and applications are l= ocated in $(RTE_SDK)/mk. =20 Config templates are located in $(RTE_SDK)/config. The templates describ= e the options that are enabled for each target. -The config file also contains items that can be enabled and disabled for= many of the Intel=C2=AE DPDK libraries, +The config file also contains items that can be enabled and disabled for= many of the DPDK libraries, including debug options. The user should look at the config file and become familiar with the opt= ions. The config file is also used to create a header file, which will be loca= ted in the new build directory. @@ -99,7 +99,7 @@ Applications Applications are sources that contain a main() function. They are located in the $(RTE_SDK)/app and $(RTE_SDK)/examples directori= es. =20 -The app directory contains sample applications that are used to test the= Intel=C2=AE DPDK (autotests). +The app directory contains sample applications that are used to test the= DPDK (autotests). The examples directory contains sample applications that show how librar= ies can be used. =20 :: @@ -135,4 +135,4 @@ The examples directory contains sample applications t= hat show how libraries can .. note:: =20 The actual examples directory may contain additional sample applicat= ions to those shown above. - Check the latest Intel=C2=AE DPDK source files for details. + Check the latest DPDK source files for details. diff --git a/doc/guides/prog_guide/thread_safety_intel_dpdk_functions.rst= b/doc/guides/prog_guide/thread_safety_intel_dpdk_functions.rst index 654dd26..0034bf4 100644 --- a/doc/guides/prog_guide/thread_safety_intel_dpdk_functions.rst +++ b/doc/guides/prog_guide/thread_safety_intel_dpdk_functions.rst @@ -28,14 +28,14 @@ (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE US= E OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. =20 -Thread Safety of Intel=C2=AE DPDK Functions -=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D +Thread Safety of DPDK Functions +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D =20 -The Intel=C2=AE DPDK is comprised of several libraries. +The DPDK is comprised of several libraries. Some of the functions in these libraries can be safely called from multi= ple threads simultaneously, while others cannot. This section allows the developer to take these issues into account when= building their own application. =20 -The run-time environment of the Intel=C2=AE DPDK is typically a single t= hread per logical core. +The run-time environment of the DPDK is typically a single thread per lo= gical core. In some cases, it is not only multi-threaded, but multi-process. Typically, it is best to avoid sharing data structures between threads a= nd/or processes where possible. Where this is not possible, then the execution blocks must access the da= ta in a thread- safe manner. @@ -57,7 +57,7 @@ Adding, removing or modifying values, however, cannot be done in multiple threads without using locking when a single h= ash or LPM table is accessed. Another alternative to locking would be to create multiple instances of = these tables allowing each thread its own copy. =20 -The RX and TX of the PMD are the most critical aspects of an Intel=C2=AE= DPDK application +The RX and TX of the PMD are the most critical aspects of a DPDK applica= tion and it is recommended that no locking be used as it will impact performa= nce. Note, however, that these functions can safely be used from multiple thr= eads when each thread is performing I/O on a different NIC queue. @@ -66,13 +66,13 @@ then locking, or some other form of mutual exclusion,= is necessary. =20 The ring library is based on a lockless ring-buffer algorithm that maint= ains its original design for thread safety. Moreover, it provides high performance for either multi- or single-consu= mer/producer enqueue/dequeue operations. -The mempool library is based on the Intel=C2=AE DPDK lockless ring libra= ry and therefore is also multi-thread safe. +The mempool library is based on the DPDK lockless ring library and there= fore is also multi-thread safe. =20 Performance Insensitive API --------------------------- =20 Outside of the performance sensitive areas described in Section 25.1, -the Intel=C2=AE DPDK provides a thread-safe API for most other libraries= . +the DPDK provides a thread-safe API for most other libraries. For example, malloc(librte_malloc) and memzone functions are safe for us= e in multi-threaded and multi-process environments. =20 The setup and configuration of the PMD is not performance sensitive, but= is not thread safe either. @@ -83,9 +83,9 @@ It is expected that, in most applications, the initial = configuration of the netw Library Initialization ---------------------- =20 -It is recommended that Intel=C2=AE DPDK libraries are initialized in the= main thread at application startup +It is recommended that DPDK libraries are initialized in the main thread= at application startup rather than subsequently in the forwarding threads. -However, the Intel=C2=AE DPDK performs checks to ensure that libraries a= re only initialized once. +However, the DPDK performs checks to ensure that libraries are only init= ialized once. If initialization is attempted more than once, an error is returned. =20 In the multi-process case, the configuration information of shared memor= y will only be initialized by the master process. @@ -94,9 +94,9 @@ Thereafter, both master and secondary processes can all= ocate/release any objects Interrupt Thread ---------------- =20 -The Intel=C2=AE DPDK works almost entirely in Linux user space in pollin= g mode. +The DPDK works almost entirely in Linux user space in polling mode. For certain infrequent operations, such as receiving a PMD link status c= hange notification, -callbacks may be called in an additional thread outside the main Intel=C2= =AE DPDK processing threads. -These function callbacks should avoid manipulating Intel=C2=AE DPDK obje= cts that are also managed by the normal Intel=C2=AE DPDK threads, +callbacks may be called in an additional thread outside the main DPDK pr= ocessing threads. +These function callbacks should avoid manipulating DPDK objects that are= also managed by the normal DPDK threads, and if they need to do so, it is up to the application to provide the appropriate locking or mutual= exclusion restrictions around those objects. diff --git a/doc/guides/prog_guide/timer_lib.rst b/doc/guides/prog_guide/= timer_lib.rst index 7099f3a..7baf034 100644 --- a/doc/guides/prog_guide/timer_lib.rst +++ b/doc/guides/prog_guide/timer_lib.rst @@ -33,7 +33,7 @@ Timer Library =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =20 -The Timer library provides a timer service to Intel=C2=AE DPDK execution= units to enable execution of callback functions asynchronously. +The Timer library provides a timer service to DPDK execution units to en= able execution of callback functions asynchronously. Features of the library are: =20 * Timers can be periodic (multi-shot) or single (one-shot). diff --git a/doc/guides/prog_guide/writing_efficient_code.rst b/doc/guide= s/prog_guide/writing_efficient_code.rst index 2868380..9a7b31b 100644 --- a/doc/guides/prog_guide/writing_efficient_code.rst +++ b/doc/guides/prog_guide/writing_efficient_code.rst @@ -31,7 +31,7 @@ Writing Efficient Code =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D =20 -This chapter provides some tips for developing efficient code using the = Intel=C2=AE DPDK. +This chapter provides some tips for developing efficient code using the = DPDK. For additional and more general information, please refer to the *Intel=C2=AE 64 and IA-32 Architectures Optimization= Reference Manual* which is a valuable reference to writing efficient code. @@ -39,12 +39,12 @@ which is a valuable reference to writing efficient co= de. Memory ------ =20 -This section describes some key memory considerations when developing ap= plications in the Intel=C2=AE DPDK environment. +This section describes some key memory considerations when developing ap= plications in the DPDK environment. =20 Memory Copy: Do not Use libc in the Data Plane ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ =20 -Many libc functions are available in the Intel=C2=AE DPDK, via the Linux= * application environment. +Many libc functions are available in the DPDK, via the Linux* applicatio= n environment. This can ease the porting of applications and the development of the con= figuration plane. However, many of these functions are not designed for performance. Functions such as memcpy() or strcpy() should not be used in the data pl= ane. @@ -54,7 +54,7 @@ Refer to the *VTune=E2=84=A2 Performance Analyzer Essen= tials* publication from Intel P For specific functions that are called often, it is also a good idea to provide a self-made optimized function, which = should be declared as static inline. =20 -The Intel=C2=AE DPDK API provides an optimized rte_memcpy() function. +The DPDK API provides an optimized rte_memcpy() function. =20 Memory Allocation ~~~~~~~~~~~~~~~~~ @@ -88,7 +88,7 @@ NUMA ~~~~ =20 On a NUMA system, it is preferable to access local memory since remote m= emory access is slower. -In the Intel=C2=AE DPDK, the memzone, ring, rte_malloc and mempool APIs = provide a way to create a pool on a specific socket. +In the DPDK, the memzone, ring, rte_malloc and mempool APIs provide a wa= y to create a pool on a specific socket. =20 Sometimes, it can be a good idea to duplicate data to optimize speed. For read-mostly variables that are often accessed, @@ -109,7 +109,7 @@ Communication Between lcores ---------------------------- =20 To provide a message-based communication between lcores, -it is advised to use the Intel=C2=AE DPDK ring API, which provides a loc= kless ring implementation. +it is advised to use the DPDK ring API, which provides a lockless ring i= mplementation. =20 The ring supports bulk and burst access, meaning that it is possible to read several elements from the ring with = only one costly atomic operation @@ -134,7 +134,7 @@ The code algorithm that dequeues messages may be some= thing similar to the follow PMD Driver ---------- =20 -The Intel=C2=AE DPDK Poll Mode Driver (PMD) is also able to work in bulk= /burst mode, +The DPDK Poll Mode Driver (PMD) is also able to work in bulk/burst mode, allowing the factorization of some code for each call in the send or rec= eive function. =20 Avoid partial writes. @@ -152,7 +152,7 @@ Similarly, the application can be tuned to have, on a= verage, a low end-to-end latency, at the cost of lower throughput. =20 In order to achieve higher throughput, -the Intel=C2=AE DPDK attempts to aggregate the cost of processing each p= acket individually by processing packets in bursts. +the DPDK attempts to aggregate the cost of processing each packet indivi= dually by processing packets in bursts. =20 Using the testpmd application as an example, the burst size can be set on the command line to a value of 16 (also the= default value). @@ -213,8 +213,8 @@ For instance: Setting the Target CPU Type --------------------------- =20 -The Intel=C2=AE DPDK supports CPU microarchitecture-specific optimizatio= ns by means of CONFIG_RTE_MACHINE option -in the Intel=C2=AE DPDK configuration file. +The DPDK supports CPU microarchitecture-specific optimizations by means = of CONFIG_RTE_MACHINE option +in the DPDK configuration file. The degree of optimization depends on the compiler's ability to optimize= for a specitic microarchitecture, therefore it is preferable to use the latest compiler versions whenever = possible. =20 --=20 2.1.0