├── DPDK实验.docx ├── DPDK常见问题整理.docx ├── DPDK编程指南.docx ├── Makefile ├── README.md ├── make.bat └── source ├── conf.py ├── contributing ├── cheatsheet.rst ├── coding_style.rst ├── design.rst ├── documentation.rst ├── img │ └── patch_cheatsheet.svg ├── index.rst ├── patches.rst ├── stable.rst └── versioning.rst ├── cryptodevs ├── aesni_gcm.rst ├── aesni_mb.rst ├── armv8.rst ├── features │ ├── aesni_gcm.ini │ ├── aesni_mb.ini │ ├── armv8.ini │ ├── default.ini │ ├── kasumi.ini │ ├── null.ini │ ├── openssl.ini │ ├── qat.ini │ ├── snow3g.ini │ └── zuc.ini ├── img │ └── scheduler-overview.svg ├── index.rst ├── kasumi.rst ├── null.rst ├── openssl.rst ├── overview.rst ├── qat.rst ├── scheduler.rst ├── snow3g.rst └── zuc.rst ├── eventdevs ├── index.rst ├── octeontx.rst └── sw.rst ├── faq ├── faq.rst └── index.rst ├── freebsd_gsg ├── build_dpdk.rst ├── build_sample_apps.rst ├── index.rst ├── install_from_ports.rst └── intro.rst ├── howto ├── flow_bifurcation.rst ├── img │ ├── flow_bifurcation_overview.svg │ ├── ixgbe_bifu_queue_idx.svg │ ├── lm_bond_virtio_sriov.svg │ ├── lm_vhost_user.svg │ ├── pvp_2nics.svg │ ├── use_models_for_running_dpdk_in_containers.svg │ ├── vf_daemon_overview.svg │ ├── virtio_user_as_exceptional_path.svg │ └── virtio_user_for_container_networking.svg ├── index.rst ├── lm_bond_virtio_sriov.rst ├── lm_virtio_vhost_user.rst ├── pvp_reference_benchmark.rst ├── vfd.rst ├── virtio_user_as_exceptional_path.rst └── virtio_user_for_container_networking.rst ├── index.rst ├── linux_gsg ├── build_dpdk.rst ├── build_dpdk.rst.txt ├── build_sample_apps.rst ├── build_sample_apps.rst.txt ├── enable_func.rst ├── enable_func.rst.txt ├── img │ └── intel_perf_test_setup.png ├── index.rst ├── intro.rst ├── intro.rst.txt ├── nic_perf_intel_platform.rst ├── nic_perf_intel_platform.rst.txt ├── quick_start.rst ├── quick_start.rst.txt ├── sys_reqs.rst └── sys_reqs.rst.txt ├── nics ├── avp.rst ├── bnx2x.rst ├── bnxt.rst ├── cxgbe.rst ├── e1000em.rst ├── ena.rst ├── enic.rst ├── features │ ├── afpacket.ini │ ├── avp.ini │ ├── bnx2x.ini │ ├── bnx2x_vf.ini │ ├── bnxt.ini │ ├── bonding.ini │ ├── cxgbe.ini │ ├── default.ini │ ├── e1000.ini │ ├── ena.ini │ ├── enic.ini │ ├── fm10k.ini │ ├── fm10k_vec.ini │ ├── fm10k_vf.ini │ ├── fm10k_vf_vec.ini │ ├── i40e.ini │ ├── i40e_vec.ini │ ├── i40e_vf.ini │ ├── i40e_vf_vec.ini │ ├── igb.ini │ ├── igb_vf.ini │ ├── ixgbe.ini │ ├── ixgbe_vec.ini │ ├── ixgbe_vf.ini │ ├── ixgbe_vf_vec.ini │ ├── kni.ini │ ├── liquidio.ini │ ├── mlx4.ini │ ├── mlx5.ini │ ├── nfp.ini │ ├── null.ini │ ├── pcap.ini │ ├── qede.ini │ ├── qede_vf.ini │ ├── ring.ini │ ├── sfc_efx.ini │ ├── szedata2.ini │ ├── tap.ini │ ├── thunderx.ini │ ├── vhost.ini │ ├── virtio.ini │ ├── virtio_vec.ini │ ├── vmxnet3.ini │ └── xenvirt.ini ├── fm10k.rst ├── i40e.rst ├── img │ ├── console.png │ ├── fast_pkt_proc.png │ ├── forward_stats.png │ ├── host_vm_comms.png │ ├── host_vm_comms_qemu.png │ ├── inter_vm_comms.png │ ├── perf_benchmark.png │ ├── single_port_nic.png │ ├── vm_vm_comms.png │ ├── vmxnet3_int.png │ └── vswitch_vm.png ├── index.rst ├── intel_vf.rst ├── ixgbe.rst ├── kni.rst ├── liquidio.rst ├── mlx4.rst ├── mlx5.rst ├── nfp.rst ├── overview.rst ├── pcap_ring.rst ├── qede.rst ├── sfc_efx.rst ├── szedata2.rst ├── tap.rst ├── thunderx.rst ├── vhost.rst ├── virtio.rst └── vmxnet3.rst ├── prog_guide ├── build_app.rst ├── build_app.rst.txt ├── cryptodev_lib.rst ├── cryptodev_lib.rst.txt ├── dev_kit_build_system.rst ├── dev_kit_build_system.rst.txt ├── dev_kit_root_make_help.rst ├── dev_kit_root_make_help.rst.txt ├── efd_lib.rst ├── env_abstraction_layer.rst ├── env_abstraction_layer.rst.txt ├── ext_app_lib_make_help.rst ├── ext_app_lib_make_help.rst.txt ├── extend_dpdk.rst ├── extend_dpdk.rst.txt ├── glossary.rst ├── glossary.rst.txt ├── hash_lib.rst ├── hash_lib.rst.txt ├── img │ ├── architecture-overview.svg │ ├── blk_diag_dropper.png │ ├── bond-mode-0.svg │ ├── bond-mode-1.svg │ ├── bond-mode-2.svg │ ├── bond-mode-3.svg │ ├── bond-mode-4.svg │ ├── bond-mode-5.svg │ ├── bond-overview.svg │ ├── crypto_op.svg │ ├── crypto_xform_chain.svg │ ├── cryptodev_sym_sess.svg │ ├── data_struct_per_port.png │ ├── drop_probability_eq3.png │ ├── drop_probability_eq4.png │ ├── drop_probability_graph.png │ ├── efd_i1.svg │ ├── efd_i10.svg │ ├── efd_i11.svg │ ├── efd_i12.svg │ ├── efd_i2.svg │ ├── efd_i3.svg │ ├── efd_i4.svg │ ├── efd_i5.svg │ ├── efd_i6.svg │ ├── efd_i7.svg │ ├── efd_i8.svg │ ├── efd_i9.svg │ ├── eq2_expression.png │ ├── eq2_factor.png │ ├── ewma_filter_eq_1.png │ ├── ewma_filter_eq_2.png │ ├── ex_data_flow_tru_dropper.png │ ├── figure32.png │ ├── figure33.png │ ├── figure34.png │ ├── figure35.png │ ├── figure37.png │ ├── figure38.png │ ├── figure39.png │ ├── flow_tru_droppper.png │ ├── hier_sched_blk.png │ ├── kernel_nic_intf.png │ ├── kni_traffic_flow.png │ ├── linuxapp_launch.svg │ ├── m_definition.png │ ├── malloc_heap.svg │ ├── mbuf1.svg │ ├── mbuf2.svg │ ├── memory-management.svg │ ├── memory-management2.svg │ ├── mempool.svg │ ├── multi_process_memory.svg │ ├── packet_distributor1.png │ ├── packet_distributor2.png │ ├── pipe_prefetch_sm.png │ ├── pkt_drop_probability.png │ ├── pkt_flow_kni.png │ ├── pkt_proc_pipeline_qos.png │ ├── prefetch_pipeline.png │ ├── ring-dequeue1.svg │ ├── ring-dequeue2.svg │ ├── ring-dequeue3.svg │ ├── ring-enqueue1.svg │ ├── ring-enqueue2.svg │ ├── ring-enqueue3.svg │ ├── ring-modulo1.svg │ ├── ring-modulo2.svg │ ├── ring-mp-enqueue1.svg │ ├── ring-mp-enqueue2.svg │ ├── ring-mp-enqueue3.svg │ ├── ring-mp-enqueue4.svg │ ├── ring-mp-enqueue5.svg │ ├── ring1.svg │ ├── sched_hier_per_port.png │ ├── tbl24_tbl8.png │ ├── tbl24_tbl8_tbl8.png │ └── vhost_net_arch.png ├── index.rst ├── index.rst.txt ├── intro.rst ├── intro.rst.txt ├── ip_fragment_reassembly_lib.rst ├── ip_fragment_reassembly_lib.rst.txt ├── kernel_nic_interface.rst ├── kernel_nic_interface.rst.txt ├── link_bonding_poll_mode_drv_lib.rst ├── link_bonding_poll_mode_drv_lib.rst.txt ├── lpm6_lib.rst ├── lpm6_lib.rst.txt ├── lpm_lib.rst ├── lpm_lib.rst.txt ├── mbuf_lib.rst ├── mbuf_lib.rst.txt ├── mempool_lib.rst ├── mempool_lib.rst.txt ├── metrics_lib.rst ├── metrics_lib.rst.txt ├── multi_proc_support.rst ├── multi_proc_support.rst.txt ├── overview.rst ├── overview.rst.txt ├── packet_classif_access_ctrl.rst ├── packet_classif_access_ctrl.rst.txt ├── packet_distrib_lib.rst ├── packet_distrib_lib.rst.txt ├── packet_framework.rst ├── packet_framework.rst.txt ├── pdump_lib.rst ├── pdump_lib.rst.txt ├── perf_opt_guidelines.rst ├── perf_opt_guidelines.rst.txt ├── poll_mode_drv.rst ├── poll_mode_drv.rst.txt ├── port_hotplug_framework.rst ├── port_hotplug_framework.rst.txt ├── power_man.rst ├── power_man.rst.txt ├── profile_app.rst ├── profile_app.rst.txt ├── qos_framework.rst ├── qos_framework.rst.txt ├── reorder_lib.rst ├── reorder_lib.rst.txt ├── ring_lib.rst ├── ring_lib.rst.txt ├── rte_flow.rst ├── rte_flow.rst.txt ├── source_org.rst ├── source_org.rst.txt ├── thread_safety_dpdk_functions.rst ├── thread_safety_dpdk_functions.rst.txt ├── timer_lib.rst ├── timer_lib.rst.txt ├── vhost_lib.rst ├── vhost_lib.rst.txt ├── writing_efficient_code.rst └── writing_efficient_code.rst.txt ├── rel_notes ├── deprecation.rst ├── index.rst ├── known_issues.rst ├── rel_description.rst ├── release_16_04.rst ├── release_16_07.rst ├── release_16_11.rst ├── release_17_02.rst ├── release_17_05.rst ├── release_1_8.rst ├── release_2_0.rst ├── release_2_1.rst ├── release_2_2.rst └── supported_os.rst ├── sample_app_ug ├── cmd_line.rst ├── dist_app.rst ├── ethtool.rst ├── exception_path.rst ├── hello_world.rst ├── img │ ├── client_svr_sym_multi_proc_app.png │ ├── dist_app.svg │ ├── dist_perf.svg │ ├── example_rules.png │ ├── exception_path_example.svg │ ├── ip_pipelines_1.svg │ ├── ip_pipelines_2.svg │ ├── ip_pipelines_3.svg │ ├── ipsec_endpoints.svg │ ├── ipv4_acl_rule.png │ ├── kernel_nic.png │ ├── l2_fwd_benchmark_setup.svg │ ├── l2_fwd_encrypt_flow.svg │ ├── l2_fwd_virtenv_benchmark_setup.png │ ├── l2_fwd_vm2vm.svg │ ├── load_bal_app_arch.png │ ├── master_slave_proc.png │ ├── overlay_networking.svg │ ├── performance_thread_1.svg │ ├── performance_thread_2.svg │ ├── pipeline_overview.png │ ├── ptpclient.svg │ ├── qos_sched_app_arch.png │ ├── quickassist_block_diagram.png │ ├── ring_pipeline_perf_setup.png │ ├── server_node_efd.svg │ ├── slave_proc_recov.png │ ├── sym_multi_proc_app.png │ ├── tep_termination_arch.svg │ ├── test_pipeline_app.png │ ├── threads_pipelines.png │ ├── vm_power_mgr_highlevel.svg │ ├── vm_power_mgr_vm_request_seq.svg │ └── vmdq_dcb_example.svg ├── index.rst ├── intro.rst ├── ip_frag.rst ├── ip_pipeline.rst ├── ip_reassembly.rst ├── ipsec_secgw.rst ├── ipv4_multicast.rst ├── keep_alive.rst ├── kernel_nic_interface.rst ├── l2_forward_cat.rst ├── l2_forward_crypto.rst ├── l2_forward_job_stats.rst ├── l2_forward_real_virtual.rst ├── l3_forward.rst ├── l3_forward_access_ctrl.rst ├── l3_forward_power_man.rst ├── l3_forward_virtual.rst ├── link_status_intr.rst ├── load_balancer.rst ├── multi_process.rst ├── netmap_compatibility.rst ├── packet_ordering.rst ├── performance_thread.rst ├── ptpclient.rst ├── qos_metering.rst ├── qos_scheduler.rst ├── quota_watermark.rst ├── rxtx_callbacks.rst ├── server_node_efd.rst ├── skeleton.rst ├── tep_termination.rst ├── test_pipeline.rst ├── timer.rst ├── vhost.rst ├── vm_power_management.rst └── vmdq_dcb_forwarding.rst ├── testpmd_app_ug ├── build_app.rst ├── index.rst ├── intro.rst ├── run_app.rst └── testpmd_funcs.rst ├── tools ├── cryptoperf.rst ├── devbind.rst ├── index.rst ├── pdump.rst ├── pmdinfo.rst └── proc_info.rst └── xen ├── img ├── dpdk_xen_pkt_switch.png ├── grant_refs.png └── grant_table.png ├── index.rst └── pkt_switch.rst /DPDK实验.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/DPDK实验.docx -------------------------------------------------------------------------------- /DPDK常见问题整理.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/DPDK常见问题整理.docx -------------------------------------------------------------------------------- /DPDK编程指南.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/DPDK编程指南.docx -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | # Minimal makefile for Sphinx documentation 2 | # 3 | 4 | # You can set these variables from the command line. 5 | SPHINXOPTS = 6 | SPHINXBUILD = sphinx-build 7 | SPHINXPROJ = dpdk 8 | SOURCEDIR = source 9 | BUILDDIR = build 10 | 11 | # Put it first so that "make" without argument is like "make help". 12 | help: 13 | @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) 14 | 15 | .PHONY: help Makefile 16 | 17 | # Catch-all target: route all unknown targets to Sphinx using the new 18 | # "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). 19 | %: Makefile 20 | @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # DPDK英文文档翻译及学习笔记 2 | 3 | 文档托管在[dpdk-docs.readthedocs.io](http://dpdk-docs.readthedocs.io/)上,欢迎下载。 4 | 5 | 英文原文档readthedocs上,或者DPDK官网上都可以找到。 6 | 7 | 8 | PS: 9 | readthedocs上托管的文档没有继续更新,新的更新直接放在word文档中。 10 | 欢迎使用,有问题交流请联系dpanic@sina.com 。 11 | 欢迎指正。 12 | -------------------------------------------------------------------------------- /make.bat: -------------------------------------------------------------------------------- 1 | @ECHO OFF 2 | 3 | pushd %~dp0 4 | 5 | REM Command file for Sphinx documentation 6 | 7 | if "%SPHINXBUILD%" == "" ( 8 | set SPHINXBUILD=sphinx-build 9 | ) 10 | set SOURCEDIR=source 11 | set BUILDDIR=build 12 | set SPHINXPROJ=dpdk 13 | 14 | if "%1" == "" goto help 15 | 16 | %SPHINXBUILD% >NUL 2>NUL 17 | if errorlevel 9009 ( 18 | echo. 19 | echo.The 'sphinx-build' command was not found. Make sure you have Sphinx 20 | echo.installed, then set the SPHINXBUILD environment variable to point 21 | echo.to the full path of the 'sphinx-build' executable. Alternatively you 22 | echo.may add the Sphinx directory to PATH. 23 | echo. 24 | echo.If you don't have Sphinx installed, grab it from 25 | echo.http://sphinx-doc.org/ 26 | exit /b 1 27 | ) 28 | 29 | %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% 30 | goto end 31 | 32 | :help 33 | %SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% 34 | 35 | :end 36 | popd 37 | -------------------------------------------------------------------------------- /source/contributing/cheatsheet.rst: -------------------------------------------------------------------------------- 1 | Patch Cheatsheet 2 | ================ 3 | 4 | .. _figure_patch_cheatsheet: 5 | 6 | .. figure:: img/patch_cheatsheet.* 7 | 8 | Cheat sheet for submitting patches to dev@dpdk.org 9 | -------------------------------------------------------------------------------- /source/contributing/index.rst: -------------------------------------------------------------------------------- 1 | Contributor's Guidelines 2 | ======================== 3 | 4 | .. toctree:: 5 | :maxdepth: 2 6 | :numbered: 7 | 8 | coding_style 9 | design 10 | versioning 11 | documentation 12 | patches 13 | stable 14 | cheatsheet 15 | -------------------------------------------------------------------------------- /source/contributing/stable.rst: -------------------------------------------------------------------------------- 1 | .. stable_lts_releases: 2 | 3 | DPDK Stable Releases and Long Term Support 4 | ========================================== 5 | 6 | This section sets out the guidelines for the DPDK Stable Releases and the DPDK 7 | Long Term Support releases (LTS). 8 | 9 | 10 | Introduction 11 | ------------ 12 | 13 | The purpose of the DPDK Stable Releases is to maintain releases of DPDK with 14 | backported fixes over an extended period of time. This provides downstream 15 | consumers of DPDK with a stable target on which to base applications or 16 | packages. 17 | 18 | The Long Term Support release (LTS) is a designation applied to a Stable 19 | Release to indicate longer term support. 20 | 21 | 22 | Stable Releases 23 | --------------- 24 | 25 | Any major release of DPDK can be designated as a Stable Release if a 26 | maintainer volunteers to maintain it. 27 | 28 | A Stable Release is used to backport fixes from an ``N`` release back to an 29 | ``N-1`` release, for example, from 16.11 to 16.07. 30 | 31 | The duration of a stable is one complete release cycle (3 months). It can be 32 | longer, up to 1 year, if a maintainer continues to support the stable branch, 33 | or if users supply backported fixes, however the explicit commitment should be 34 | for one release cycle. 35 | 36 | The release cadence is determined by the maintainer based on the number of 37 | bugfixes and the criticality of the bugs. Releases should be coordinated with 38 | the validation engineers to ensure that a tagged release has been tested. 39 | 40 | 41 | LTS Release 42 | ----------- 43 | 44 | A stable release can be designated as an LTS release based on community 45 | agreement and a commitment from a maintainer. An LTS release will have a 46 | maintenance duration of 2 years. 47 | 48 | The current DPDK LTS release is 16.11. 49 | 50 | It is anticipated that there will be at least 4 releases per year of the LTS 51 | or approximately 1 every 3 months. However, the cadence can be shorter or 52 | longer depending on the number and criticality of the backported 53 | fixes. Releases should be coordinated with the validation engineers to ensure 54 | that a tagged release has been tested. 55 | 56 | 57 | What changes should be backported 58 | --------------------------------- 59 | 60 | Backporting should be limited to bug fixes. 61 | 62 | Features should not be backported to stable releases. It may be acceptable, in 63 | limited cases, to back port features for the LTS release where: 64 | 65 | * There is a justifiable use case (for example a new PMD). 66 | * The change is non-invasive. 67 | * The work of preparing the backport is done by the proposer. 68 | * There is support within the community. 69 | 70 | 71 | The Stable Mailing List 72 | ----------------------- 73 | 74 | The Stable and LTS release are coordinated on the stable@dpdk.org mailing 75 | list. 76 | 77 | All fix patches to the master branch that are candidates for backporting 78 | should also be CCed to the `stable@dpdk.org `_ 79 | mailing list. 80 | 81 | 82 | Releasing 83 | --------- 84 | 85 | A Stable Release will be released by: 86 | 87 | * Tagging the release with YY.MM.n (year, month, number). 88 | * Uploading a tarball of the release to dpdk.org. 89 | * Sending an announcement to the `announce@dpdk.org `_ 90 | list. 91 | 92 | Stable releases are available on the `dpdk.org download page `_. 93 | 94 | 95 | ABI 96 | --- 97 | 98 | The Stable Release should not be seen as a way of breaking or circumventing 99 | the DPDK ABI policy. 100 | -------------------------------------------------------------------------------- /source/cryptodevs/aesni_gcm.rst: -------------------------------------------------------------------------------- 1 | .. BSD LICENSE 2 | Copyright(c) 2016 Intel Corporation. All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions 6 | are met: 7 | 8 | * Redistributions of source code must retain the above copyright 9 | notice, this list of conditions and the following disclaimer. 10 | * Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in 12 | the documentation and/or other materials provided with the 13 | distribution. 14 | * Neither the name of Intel Corporation nor the names of its 15 | contributors may be used to endorse or promote products derived 16 | from this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 | 30 | AES-NI GCM Crypto Poll Mode Driver 31 | ================================== 32 | 33 | 34 | The AES-NI GCM PMD (**librte_pmd_aesni_gcm**) provides poll mode crypto driver 35 | support for utilizing Intel ISA-L crypto library, which provides operation acceleration 36 | through the AES-NI instruction sets for AES-GCM authenticated cipher algorithm. 37 | 38 | Features 39 | -------- 40 | 41 | AESNI GCM PMD has support for: 42 | 43 | Cipher algorithms: 44 | 45 | * RTE_CRYPTO_CIPHER_AES_GCM 46 | 47 | Authentication algorithms: 48 | 49 | * RTE_CRYPTO_AUTH_AES_GCM 50 | * RTE_CRYPTO_AUTH_AES_GMAC 51 | 52 | Installation 53 | ------------ 54 | 55 | To build DPDK with the AESNI_GCM_PMD the user is required to install 56 | the ``libisal_crypto`` library in the build environment. 57 | For download and more details please visit ``_. 58 | 59 | Initialization 60 | -------------- 61 | 62 | In order to enable this virtual crypto PMD, user must: 63 | 64 | * Install the ISA-L crypto library (explained in Installation section). 65 | 66 | * Set CONFIG_RTE_LIBRTE_PMD_AESNI_GCM=y in config/common_base. 67 | 68 | To use the PMD in an application, user must: 69 | 70 | * Call rte_eal_vdev_init("crypto_aesni_gcm") within the application. 71 | 72 | * Use --vdev="crypto_aesni_gcm" in the EAL options, which will call rte_eal_vdev_init() internally. 73 | 74 | The following parameters (all optional) can be provided in the previous two calls: 75 | 76 | * socket_id: Specify the socket where the memory for the device is going to be allocated 77 | (by default, socket_id will be the socket where the core that is creating the PMD is running on). 78 | 79 | * max_nb_queue_pairs: Specify the maximum number of queue pairs in the device (8 by default). 80 | 81 | * max_nb_sessions: Specify the maximum number of sessions that can be created (2048 by default). 82 | 83 | Example: 84 | 85 | .. code-block:: console 86 | 87 | ./l2fwd-crypto -l 6 -n 4 --vdev="crypto_aesni_gcm,socket_id=1,max_nb_sessions=128" 88 | 89 | Limitations 90 | ----------- 91 | 92 | * Chained mbufs are supported but only out-of-place (destination mbuf must be contiguous). 93 | * Hash only is not supported. 94 | * Cipher only is not supported. 95 | -------------------------------------------------------------------------------- /source/cryptodevs/armv8.rst: -------------------------------------------------------------------------------- 1 | .. BSD LICENSE 2 | Copyright (C) Cavium networks Ltd. 2017. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions 6 | are met: 7 | 8 | * Redistributions of source code must retain the above copyright 9 | notice, this list of conditions and the following disclaimer. 10 | * Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in 12 | the documentation and/or other materials provided with the 13 | distribution. 14 | * Neither the name of Cavium networks nor the names of its 15 | contributors may be used to endorse or promote products derived 16 | from this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 | 30 | 31 | ARMv8 Crypto Poll Mode Driver 32 | ============================= 33 | 34 | This code provides the initial implementation of the ARMv8 crypto PMD. 35 | The driver uses ARMv8 cryptographic extensions to process chained crypto 36 | operations in an optimized way. The core functionality is provided by 37 | a low-level library, written in the assembly code. 38 | 39 | Features 40 | -------- 41 | 42 | ARMv8 Crypto PMD has support for the following algorithm pairs: 43 | 44 | Supported cipher algorithms: 45 | 46 | * ``RTE_CRYPTO_CIPHER_AES_CBC`` 47 | 48 | Supported authentication algorithms: 49 | 50 | * ``RTE_CRYPTO_AUTH_SHA1_HMAC`` 51 | * ``RTE_CRYPTO_AUTH_SHA256_HMAC`` 52 | 53 | Installation 54 | ------------ 55 | 56 | In order to enable this virtual crypto PMD, user must: 57 | 58 | * Download ARMv8 crypto library source code from 59 | `here `_ 60 | 61 | * Export the environmental variable ARMV8_CRYPTO_LIB_PATH with 62 | the path where the ``armv8_crypto`` library was downloaded 63 | or cloned. 64 | 65 | * Build the library by invoking: 66 | 67 | .. code-block:: console 68 | 69 | make -C $ARMV8_CRYPTO_LIB_PATH/ 70 | 71 | * Set CONFIG_RTE_LIBRTE_PMD_ARMV8_CRYPTO=y in 72 | config/defconfig_arm64-armv8a-linuxapp-gcc 73 | 74 | The corresponding device can be created only if the following features 75 | are supported by the CPU: 76 | 77 | * ``RTE_CPUFLAG_AES`` 78 | * ``RTE_CPUFLAG_SHA1`` 79 | * ``RTE_CPUFLAG_SHA2`` 80 | * ``RTE_CPUFLAG_NEON`` 81 | 82 | Initialization 83 | -------------- 84 | 85 | User can use app/test application to check how to use this PMD and to verify 86 | crypto processing. 87 | 88 | Test name is cryptodev_sw_armv8_autotest. 89 | For performance test cryptodev_sw_armv8_perftest can be used. 90 | 91 | Limitations 92 | ----------- 93 | 94 | * Maximum number of sessions is 2048. 95 | * Only chained operations are supported. 96 | * AES-128-CBC is the only supported cipher variant. 97 | * Cipher input data has to be a multiple of 16 bytes. 98 | * Digest input data has to be a multiple of 8 bytes. 99 | -------------------------------------------------------------------------------- /source/cryptodevs/features/aesni_gcm.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'aesni_gcm' crypto driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Symmetric crypto = Y 8 | Sym operation chaining = Y 9 | CPU AESNI = Y 10 | 11 | ; 12 | ; Supported crypto algorithms of the 'aesni_gcm' crypto driver. 13 | ; 14 | [Cipher] 15 | 16 | ; 17 | ; Supported authentication algorithms of the 'aesni_gcm' crypto driver. 18 | ; 19 | [Auth] 20 | AES GMAC = Y 21 | 22 | ; 23 | ; Supported AEAD algorithms of the 'aesni_gcm' crypto driver. 24 | ; 25 | [AEAD] 26 | AES GCM (128) = Y 27 | AES GCM (256) = Y 28 | -------------------------------------------------------------------------------- /source/cryptodevs/features/aesni_mb.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'aesni_mb' crypto driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Symmetric crypto = Y 8 | Sym operation chaining = Y 9 | CPU SSE = Y 10 | CPU AVX = Y 11 | CPU AVX2 = Y 12 | CPU AVX512 = Y 13 | CPU AESNI = Y 14 | 15 | ; 16 | ; Supported crypto algorithms of the 'aesni_mb' crypto driver. 17 | ; 18 | [Cipher] 19 | AES CBC (128) = Y 20 | AES CBC (192) = Y 21 | AES CBC (256) = Y 22 | AES CTR (128) = Y 23 | AES CTR (192) = Y 24 | AES CTR (256) = Y 25 | AES DOCSIS BPI = Y 26 | ; 27 | ; Supported authentication algorithms of the 'aesni_mb' crypto driver. 28 | ; 29 | [Auth] 30 | MD5 HMAC = Y 31 | SHA1 HMAC = Y 32 | SHA224 HMAC = Y 33 | SHA256 HMAC = Y 34 | SHA384 HMAC = Y 35 | SHA512 HMAC = Y 36 | AES XCBC MAC = Y 37 | 38 | ; 39 | ; Supported AEAD algorithms of the 'aesni_mb' crypto driver. 40 | ; 41 | [AEAD] 42 | -------------------------------------------------------------------------------- /source/cryptodevs/features/armv8.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'armv8' crypto driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Symmetric crypto = Y 8 | Sym operation chaining = Y 9 | CPU NEON = Y 10 | CPU ARM CE = Y 11 | 12 | ; 13 | ; Supported crypto algorithms of the 'armv8' crypto driver. 14 | ; 15 | [Cipher] 16 | AES CBC (128) = Y 17 | 18 | ; 19 | ; Supported authentication algorithms of the 'armv8' crypto driver. 20 | ; 21 | [Auth] 22 | SHA1 HMAC = Y 23 | SHA256 HMAC = Y 24 | 25 | ; 26 | ; Supported AEAD algorithms of the 'armv8' crypto driver. 27 | ; 28 | [AEAD] 29 | -------------------------------------------------------------------------------- /source/cryptodevs/features/default.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Features of a default crypto driver. 3 | ; 4 | ; This file defines the features that are valid for inclusion in 5 | ; the other driver files and also the order that they appear in 6 | ; the features table in the documentation. 7 | ; 8 | [Features] 9 | Symmetric crypto = 10 | Asymmetric crypto = 11 | Sym operation chaining = 12 | HW Accelerated = 13 | CPU SSE = 14 | CPU AVX = 15 | CPU AVX2 = 16 | CPU AVX512 = 17 | CPU AESNI = 18 | CPU NEON = 19 | CPU ARM CE = 20 | 21 | ; 22 | ; Supported crypto algorithms of a default crypto driver. 23 | ; 24 | [Cipher] 25 | NULL = 26 | AES CBC (128) = 27 | AES CBC (192) = 28 | AES CBC (256) = 29 | AES CTR (128) = 30 | AES CTR (192) = 31 | AES CTR (256) = 32 | AES DOCSIS BPI = 33 | 3DES CBC = 34 | 3DES CTR = 35 | DES CBC = 36 | DES DOCSIS BPI = 37 | SNOW3G UEA2 = 38 | KASUMI F8 = 39 | ZUC EEA3 = 40 | 41 | ; 42 | ; Supported authentication algorithms of a default crypto driver. 43 | ; 44 | [Auth] 45 | NULL = 46 | MD5 = 47 | MD5 HMAC = 48 | SHA1 = 49 | SHA1 HMAC = 50 | SHA224 = 51 | SHA224 HMAC = 52 | SHA256 = 53 | SHA256 HMAC = 54 | SHA384 = 55 | SHA384 HMAC = 56 | SHA512 = 57 | SHA512 HMAC = 58 | AES XCBC MAC = 59 | AES GMAC = 60 | SNOW3G UIA2 = 61 | KASUMI F9 = 62 | ZUC EIA3 = 63 | 64 | ; 65 | ; Supported AEAD algorithms of a default crypto driver. 66 | ; 67 | [AEAD] 68 | AES GCM (128) = 69 | AES GCM (192) = 70 | AES GCM (256) = 71 | -------------------------------------------------------------------------------- /source/cryptodevs/features/kasumi.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'kasumi' crypto driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Symmetric crypto = Y 8 | Sym operation chaining = Y 9 | 10 | ; 11 | ; Supported crypto algorithms of the 'kasumi' crypto driver. 12 | ; 13 | [Cipher] 14 | KASUMI F8 = Y 15 | ; 16 | ; Supported authentication algorithms of the 'kasumi' crypto driver. 17 | ; 18 | [Auth] 19 | KASUMI F9 = Y 20 | 21 | ; 22 | ; Supported AEAD algorithms of the 'kasumi' crypto driver. 23 | ; 24 | [AEAD] 25 | -------------------------------------------------------------------------------- /source/cryptodevs/features/null.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'null' crypto driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Symmetric crypto = Y 8 | Sym operation chaining = Y 9 | 10 | ; 11 | ; Supported crypto algorithms of the 'null' crypto driver. 12 | ; 13 | [Cipher] 14 | NULL = Y 15 | 16 | ; 17 | ; Supported authentication algorithms of the 'null' crypto driver. 18 | ; 19 | [Auth] 20 | NULL = Y 21 | 22 | ; 23 | ; Supported AEAD algorithms of the 'null' crypto driver. 24 | ; 25 | [AEAD] 26 | -------------------------------------------------------------------------------- /source/cryptodevs/features/openssl.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'openssl' crypto driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Symmetric crypto = Y 8 | Sym operation chaining = Y 9 | 10 | ; 11 | ; Supported crypto algorithms of the 'openssl' crypto driver. 12 | ; 13 | [Cipher] 14 | AES CBC (128) = Y 15 | AES CBC (192) = Y 16 | AES CBC (256) = Y 17 | AES CTR (128) = Y 18 | AES CTR (192) = Y 19 | AES CTR (256) = Y 20 | 3DES CBC = Y 21 | 3DES CTR = Y 22 | DES DOCSIS BPI = Y 23 | ; 24 | ; Supported authentication algorithms of the 'openssl' crypto driver. 25 | ; 26 | [Auth] 27 | MD5 = Y 28 | MD5 HMAC = Y 29 | SHA1 = Y 30 | SHA1 HMAC = Y 31 | SHA224 = Y 32 | SHA224 HMAC = Y 33 | SHA256 = Y 34 | SHA256 HMAC = Y 35 | SHA384 = Y 36 | SHA384 HMAC = Y 37 | SHA512 = Y 38 | SHA512 HMAC = Y 39 | AES GMAC = Y 40 | 41 | ; 42 | ; Supported AEAD algorithms of the 'openssl' crypto driver. 43 | ; 44 | [AEAD] 45 | AES GCM (128) = Y 46 | AES GCM (192) = Y 47 | AES GCM (256) = Y 48 | -------------------------------------------------------------------------------- /source/cryptodevs/features/qat.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'qat' crypto driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Symmetric crypto = Y 8 | Sym operation chaining = Y 9 | HW Accelerated = Y 10 | 11 | ; 12 | ; Supported crypto algorithms of the 'qat' crypto driver. 13 | ; 14 | [Cipher] 15 | NULL = Y 16 | AES CBC (128) = Y 17 | AES CBC (192) = Y 18 | AES CBC (256) = Y 19 | AES CTR (128) = Y 20 | AES CTR (192) = Y 21 | AES CTR (256) = Y 22 | 3DES CBC = Y 23 | 3DES CTR = Y 24 | DES CBC = Y 25 | SNOW3G UEA2 = Y 26 | KASUMI F8 = Y 27 | AES DOCSIS BPI = Y 28 | DES DOCSIS BPI = Y 29 | ZUC EEA3 = Y 30 | ; 31 | ; Supported authentication algorithms of the 'qat' crypto driver. 32 | ; 33 | [Auth] 34 | NULL = Y 35 | MD5 HMAC = Y 36 | SHA1 HMAC = Y 37 | SHA224 HMAC = Y 38 | SHA256 HMAC = Y 39 | SHA384 HMAC = Y 40 | SHA512 HMAC = Y 41 | AES GMAC = Y 42 | SNOW3G UIA2 = Y 43 | KASUMI F9 = Y 44 | AES XCBC MAC = Y 45 | ZUC EIA3 = Y 46 | 47 | ; 48 | ; Supported AEAD algorithms of the 'qat' crypto driver. 49 | ; 50 | [AEAD] 51 | AES GCM (128) = Y 52 | AES GCM (192) = Y 53 | AES GCM (256) = Y 54 | -------------------------------------------------------------------------------- /source/cryptodevs/features/snow3g.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'snow3g' crypto driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Symmetric crypto = Y 8 | Sym operation chaining = Y 9 | 10 | ; 11 | ; Supported crypto algorithms of the 'snow3g' crypto driver. 12 | ; 13 | [Cipher] 14 | SNOW3G UEA2 = Y 15 | ; 16 | ; Supported authentication algorithms of the 'snow3g' crypto driver. 17 | ; 18 | [Auth] 19 | SNOW3G UIA2 = Y 20 | 21 | ; 22 | ; Supported AEAD algorithms of the 'snow3g' crypto driver. 23 | ; 24 | [AEAD] 25 | -------------------------------------------------------------------------------- /source/cryptodevs/features/zuc.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'zuc' crypto driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Symmetric crypto = Y 8 | Sym operation chaining = Y 9 | 10 | ; 11 | ; Supported crypto algorithms of the 'zuc' crypto driver. 12 | ; 13 | [Cipher] 14 | ZUC EEA3 = Y 15 | ; 16 | ; Supported authentication algorithms of the 'zuc' crypto driver. 17 | ; 18 | [Auth] 19 | ZUC EIA3 = Y 20 | 21 | ; 22 | ; Supported AEAD algorithms of the 'zuc' crypto driver. 23 | ; 24 | [AEAD] 25 | -------------------------------------------------------------------------------- /source/cryptodevs/index.rst: -------------------------------------------------------------------------------- 1 | .. BSD LICENSE 2 | Copyright(c) 2015 - 2017 Intel Corporation. All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions 6 | are met: 7 | 8 | * Redistributions of source code must retain the above copyright 9 | notice, this list of conditions and the following disclaimer. 10 | * Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in 12 | the documentation and/or other materials provided with the 13 | distribution. 14 | * Neither the name of Intel Corporation nor the names of its 15 | contributors may be used to endorse or promote products derived 16 | from this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 | 30 | Crypto Device Drivers 31 | ===================== 32 | 33 | 34 | .. toctree:: 35 | :maxdepth: 2 36 | :numbered: 37 | 38 | overview 39 | aesni_mb 40 | aesni_gcm 41 | armv8 42 | kasumi 43 | openssl 44 | null 45 | scheduler 46 | snow3g 47 | qat 48 | zuc 49 | -------------------------------------------------------------------------------- /source/cryptodevs/null.rst: -------------------------------------------------------------------------------- 1 | .. BSD LICENSE 2 | Copyright(c) 2016 Intel Corporation. All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions 6 | are met: 7 | 8 | * Redistributions of source code must retain the above copyright 9 | notice, this list of conditions and the following disclaimer. 10 | * Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in 12 | the documentation and/or other materials provided with the 13 | distribution. 14 | * Neither the name of Intel Corporation nor the names of its 15 | contributors may be used to endorse or promote products derived 16 | from this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 | 30 | Null Crypto Poll Mode Driver 31 | ============================ 32 | 33 | The Null Crypto PMD (**librte_pmd_null_crypto**) provides a crypto poll mode 34 | driver which provides a minimal implementation for a software crypto device. As 35 | a null device it does not modify the data in the mbuf on which the crypto 36 | operation is to operate and it only has support for a single cipher and 37 | authentication algorithm. 38 | 39 | When a burst of mbufs is submitted to a Null Crypto PMD for processing then 40 | each mbuf in the burst will be enqueued in an internal buffer for collection on 41 | a dequeue call as long as the mbuf has a valid rte_mbuf_offload operation with 42 | a valid rte_cryptodev_session or rte_crypto_xform chain of operations. 43 | 44 | Features 45 | -------- 46 | 47 | Modes: 48 | 49 | * RTE_CRYPTO_XFORM_CIPHER ONLY 50 | * RTE_CRYPTO_XFORM_AUTH ONLY 51 | * RTE_CRYPTO_XFORM_CIPHER THEN RTE_CRYPTO_XFORM_AUTH 52 | * RTE_CRYPTO_XFORM_AUTH THEN RTE_CRYPTO_XFORM_CIPHER 53 | 54 | Cipher algorithms: 55 | 56 | * RTE_CRYPTO_CIPHER_NULL 57 | 58 | Authentication algorithms: 59 | 60 | * RTE_CRYPTO_AUTH_NULL 61 | 62 | Limitations 63 | ----------- 64 | 65 | * Only in-place is currently supported (destination address is the same as 66 | source address). 67 | 68 | Installation 69 | ------------ 70 | 71 | The Null Crypto PMD is enabled and built by default in both the Linux and 72 | FreeBSD builds. 73 | 74 | Initialization 75 | -------------- 76 | 77 | To use the PMD in an application, user must: 78 | 79 | * Call rte_eal_vdev_init("crypto_null") within the application. 80 | 81 | * Use --vdev="crypto_null" in the EAL options, which will call rte_eal_vdev_init() internally. 82 | 83 | The following parameters (all optional) can be provided in the previous two calls: 84 | 85 | * socket_id: Specify the socket where the memory for the device is going to be allocated 86 | (by default, socket_id will be the socket where the core that is creating the PMD is running on). 87 | 88 | * max_nb_queue_pairs: Specify the maximum number of queue pairs in the device (8 by default). 89 | 90 | * max_nb_sessions: Specify the maximum number of sessions that can be created (2048 by default). 91 | 92 | Example: 93 | 94 | .. code-block:: console 95 | 96 | ./l2fwd-crypto -l 6 -n 4 --vdev="crypto_null,socket_id=1,max_nb_sessions=128" 97 | -------------------------------------------------------------------------------- /source/cryptodevs/snow3g.rst: -------------------------------------------------------------------------------- 1 | .. BSD LICENSE 2 | Copyright(c) 2016 Intel Corporation. All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions 6 | are met: 7 | 8 | * Redistributions of source code must retain the above copyright 9 | notice, this list of conditions and the following disclaimer. 10 | * Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in 12 | the documentation and/or other materials provided with the 13 | distribution. 14 | * Neither the name of Intel Corporation nor the names of its 15 | contributors may be used to endorse or promote products derived 16 | from this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 | 30 | SNOW 3G Crypto Poll Mode Driver 31 | =============================== 32 | 33 | The SNOW 3G PMD (**librte_pmd_snow3g**) provides poll mode crypto driver 34 | support for utilizing Intel Libsso library, which implements F8 and F9 functions 35 | for SNOW 3G UEA2 cipher and UIA2 hash algorithms. 36 | 37 | Features 38 | -------- 39 | 40 | SNOW 3G PMD has support for: 41 | 42 | Cipher algorithm: 43 | 44 | * RTE_CRYPTO_CIPHER_SNOW3G_UEA2 45 | 46 | Authentication algorithm: 47 | 48 | * RTE_CRYPTO_AUTH_SNOW3G_UIA2 49 | 50 | Limitations 51 | ----------- 52 | 53 | * Chained mbufs are not supported. 54 | * SNOW 3G (UIA2) supported only if hash offset field is byte-aligned. 55 | * In-place bit-level operations for SNOW 3G (UEA2) are not supported 56 | (if length and/or offset of data to be ciphered is not byte-aligned). 57 | 58 | Installation 59 | ------------ 60 | 61 | To build DPDK with the SNOW3G_PMD the user is required to download 62 | the export controlled ``libsso_snow3g`` library, by requesting it from 63 | ``_. 64 | Once approval has been granted, the user needs to log in 65 | ``_ 66 | and click on "Snow3G Bit Stream crypto library" link, to download the library. 67 | After downloading the library, the user needs to unpack and compile it 68 | on their system before building DPDK:: 69 | 70 | make snow3G 71 | 72 | Initialization 73 | -------------- 74 | 75 | In order to enable this virtual crypto PMD, user must: 76 | 77 | * Export the environmental variable LIBSSO_SNOW3G_PATH with the path where 78 | the library was extracted (snow3g folder). 79 | 80 | * Build the LIBSSO_SNOW3G library (explained in Installation section). 81 | 82 | * Set CONFIG_RTE_LIBRTE_PMD_SNOW3G=y in config/common_base. 83 | 84 | To use the PMD in an application, user must: 85 | 86 | * Call rte_eal_vdev_init("crypto_snow3g") within the application. 87 | 88 | * Use --vdev="crypto_snow3g" in the EAL options, which will call rte_eal_vdev_init() internally. 89 | 90 | The following parameters (all optional) can be provided in the previous two calls: 91 | 92 | * socket_id: Specify the socket where the memory for the device is going to be allocated 93 | (by default, socket_id will be the socket where the core that is creating the PMD is running on). 94 | 95 | * max_nb_queue_pairs: Specify the maximum number of queue pairs in the device (8 by default). 96 | 97 | * max_nb_sessions: Specify the maximum number of sessions that can be created (2048 by default). 98 | 99 | Example: 100 | 101 | .. code-block:: console 102 | 103 | ./l2fwd-crypto -l 6 -n 4 --vdev="crypto_snow3g,socket_id=1,max_nb_sessions=128" 104 | -------------------------------------------------------------------------------- /source/eventdevs/index.rst: -------------------------------------------------------------------------------- 1 | .. BSD LICENSE 2 | Copyright(c) 2017 Intel Corporation. All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions 6 | are met: 7 | 8 | * Redistributions of source code must retain the above copyright 9 | notice, this list of conditions and the following disclaimer. 10 | * Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in 12 | the documentation and/or other materials provided with the 13 | distribution. 14 | * Neither the name of Intel Corporation nor the names of its 15 | contributors may be used to endorse or promote products derived 16 | from this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 | 30 | Event Device Drivers 31 | ==================== 32 | 33 | The following are a list of event device PMDs, which can be used from an 34 | application trough the eventdev API. 35 | 36 | .. toctree:: 37 | :maxdepth: 2 38 | :numbered: 39 | 40 | sw 41 | octeontx 42 | -------------------------------------------------------------------------------- /source/faq/index.rst: -------------------------------------------------------------------------------- 1 | .. BSD LICENSE 2 | Copyright(c) 2010-2014 Intel Corporation. All rights reserved. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions 7 | are met: 8 | 9 | * Redistributions of source code must retain the above copyright 10 | notice, this list of conditions and the following disclaimer. 11 | * Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in 13 | the documentation and/or other materials provided with the 14 | distribution. 15 | * Neither the name of Intel Corporation nor the names of its 16 | contributors may be used to endorse or promote products derived 17 | from this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | FAQ 32 | === 33 | 34 | This document contains some Frequently Asked Questions that arise when working with DPDK. 35 | 36 | .. toctree:: 37 | :maxdepth: 2 38 | :numbered: 39 | 40 | faq 41 | -------------------------------------------------------------------------------- /source/freebsd_gsg/index.rst: -------------------------------------------------------------------------------- 1 | .. BSD LICENSE 2 | Copyright(c) 2010-2014 Intel Corporation. All rights reserved. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions 7 | are met: 8 | 9 | * Redistributions of source code must retain the above copyright 10 | notice, this list of conditions and the following disclaimer. 11 | * Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in 13 | the documentation and/or other materials provided with the 14 | distribution. 15 | * Neither the name of Intel Corporation nor the names of its 16 | contributors may be used to endorse or promote products derived 17 | from this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | .. _freebsd_gsg: 32 | 33 | Getting Started Guide for FreeBSD 34 | ================================= 35 | 36 | .. toctree:: 37 | :maxdepth: 2 38 | :numbered: 39 | 40 | intro 41 | install_from_ports 42 | build_dpdk 43 | build_sample_apps 44 | -------------------------------------------------------------------------------- /source/freebsd_gsg/intro.rst: -------------------------------------------------------------------------------- 1 | .. BSD LICENSE 2 | Copyright(c) 2010-2014 Intel Corporation. All rights reserved. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions 7 | are met: 8 | 9 | * Redistributions of source code must retain the above copyright 10 | notice, this list of conditions and the following disclaimer. 11 | * Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in 13 | the documentation and/or other materials provided with the 14 | distribution. 15 | * Neither the name of Intel Corporation nor the names of its 16 | contributors may be used to endorse or promote products derived 17 | from this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | Introduction 32 | ============ 33 | 34 | This document contains instructions for installing and configuring the 35 | Data Plane Development Kit (DPDK) software. It is designed to get customers 36 | up and running quickly and describes how to compile and run a 37 | DPDK application in a FreeBSD application (bsdapp) environment, without going 38 | deeply into detail. 39 | 40 | For a comprehensive guide to installing and using FreeBSD, the following 41 | handbook is available from the FreeBSD Documentation Project: 42 | `FreeBSD Handbook `_. 43 | 44 | .. note:: 45 | 46 | The DPDK is now available as part of the FreeBSD ports collection. 47 | Installing via the ports collection infrastructure is now the recommended 48 | way to install the DPDK on FreeBSD, and is documented in the 49 | next chapter, :ref:`install_from_ports`. 50 | 51 | Documentation Roadmap 52 | --------------------- 53 | 54 | The following is a list of DPDK documents in the suggested reading order: 55 | 56 | * **Release Notes** : Provides release-specific information, including supported 57 | features, limitations, fixed issues, known issues and so on. Also, provides the 58 | answers to frequently asked questions in FAQ format. 59 | 60 | * **Getting Started Guide** (this document): Describes how to install and 61 | configure the DPDK; designed to get users up and running quickly with the 62 | software. 63 | 64 | * **Programmer's Guide**: Describes: 65 | 66 | * The software architecture and how to use it (through examples), 67 | specifically in a Linux* application (linuxapp) environment 68 | 69 | * The content of the DPDK, the build system (including the commands 70 | that can be used in the root DPDK Makefile to build the development 71 | kit and an application) and guidelines for porting an application 72 | 73 | * Optimizations used in the software and those that should be considered 74 | for new development 75 | 76 | A glossary of terms is also provided. 77 | 78 | * **API Reference**: Provides detailed information about DPDK functions, 79 | data structures and other programming constructs. 80 | 81 | * **Sample Applications User Guide**: Describes a set of sample applications. 82 | Each chapter describes a sample application that showcases specific functionality 83 | and provides instructions on how to compile, run and use the sample application. 84 | -------------------------------------------------------------------------------- /source/howto/index.rst: -------------------------------------------------------------------------------- 1 | .. BSD LICENSE 2 | Copyright(c) 2016 Intel Corporation. All rights reserved. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions 7 | are met: 8 | 9 | * Redistributions of source code must retain the above copyright 10 | notice, this list of conditions and the following disclaimer. 11 | * Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in 13 | the documentation and/or other materials provided with the 14 | distribution. 15 | * Neither the name of Intel Corporation nor the names of its 16 | contributors may be used to endorse or promote products derived 17 | from this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | HowTo Guides 32 | ============ 33 | 34 | .. toctree:: 35 | :maxdepth: 2 36 | :numbered: 37 | 38 | lm_bond_virtio_sriov 39 | lm_virtio_vhost_user 40 | flow_bifurcation 41 | pvp_reference_benchmark 42 | vfd 43 | virtio_user_for_container_networking 44 | virtio_user_as_exceptional_path 45 | -------------------------------------------------------------------------------- /source/index.rst: -------------------------------------------------------------------------------- 1 | .. BSD LICENSE 2 | Copyright(c) 2010-2014 Intel Corporation. All rights reserved. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions 7 | are met: 8 | 9 | * Redistributions of source code must retain the above copyright 10 | notice, this list of conditions and the following disclaimer. 11 | * Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in 13 | the documentation and/or other materials provided with the 14 | distribution. 15 | * Neither the name of Intel Corporation nor the names of its 16 | contributors may be used to endorse or promote products derived 17 | from this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | DPDK documentation 32 | ================== 33 | 34 | .. toctree:: 35 | :maxdepth: 1 36 | 37 | linux_gsg/index 38 | freebsd_gsg/index 39 | sample_app_ug/index 40 | prog_guide/index 41 | howto/index 42 | tools/index 43 | testpmd_app_ug/index 44 | nics/index 45 | cryptodevs/index 46 | eventdevs/index 47 | xen/index 48 | contributing/index 49 | rel_notes/index 50 | faq/index 51 | -------------------------------------------------------------------------------- /source/linux_gsg/img/intel_perf_test_setup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/linux_gsg/img/intel_perf_test_setup.png -------------------------------------------------------------------------------- /source/linux_gsg/index.rst: -------------------------------------------------------------------------------- 1 | .. BSD LICENSE 2 | Copyright(c) 2010-2015 Intel Corporation. All rights reserved. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions 7 | are met: 8 | 9 | * Redistributions of source code must retain the above copyright 10 | notice, this list of conditions and the following disclaimer. 11 | * Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in 13 | the documentation and/or other materials provided with the 14 | distribution. 15 | * Neither the name of Intel Corporation nor the names of its 16 | contributors may be used to endorse or promote products derived 17 | from this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | .. _linux_gsg: 32 | 33 | Linux平台上DPDK入门指南 34 | ======================= 35 | 36 | .. toctree:: 37 | :maxdepth: 2 38 | :numbered: 39 | 40 | intro 41 | sys_reqs 42 | build_dpdk 43 | build_sample_apps 44 | enable_func 45 | quick_start 46 | nic_perf_intel_platform 47 | -------------------------------------------------------------------------------- /source/linux_gsg/intro.rst: -------------------------------------------------------------------------------- 1 | .. BSD LICENSE 2 | Copyright(c) 2010-2014 Intel Corporation. All rights reserved. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions 7 | are met: 8 | 9 | * Redistributions of source code must retain the above copyright 10 | notice, this list of conditions and the following disclaimer. 11 | * Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in 13 | the documentation and/or other materials provided with the 14 | distribution. 15 | * Neither the name of Intel Corporation nor the names of its 16 | contributors may be used to endorse or promote products derived 17 | from this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | 简介 32 | ==== 33 | 34 | 本文档包含DPDK软件安装和配置的相关说明。旨在帮助用户快速启动和运行软件。文档主要描述了在Linux环境下编译和 35 | 运行DPDK应用程序,但是文档并不深入DPDK的具体实现细节。 36 | 37 | 文档地图 38 | -------- 39 | 40 | 以下是一份建议顺序阅读的DPDK参考文档列表: 41 | 42 | * **发布说明** : 提供特性发行版本的信息,包括支持的功能,限制,修复的问题,已知的问题等等。此外,还以FAQ方式提供了常见问题及解答。 43 | 44 | * **入门指南**(本文档):介绍如何安装和配置DPDK,旨在帮助用户快速上手。 45 | 46 | * **编程指南** :描述如下内容: 47 | 48 | * 软件架构及如何使用(实例介绍),特别是在Linux环境中的用法 49 | 50 | * DPDK的主要内容,系统构建(包括可以在DPDK根目录Makefile中来构建工具包和应用程序的命令)及应用移植细则。 51 | 52 | * 软件中使用的,以及新开发中需要考虑的一些优化。 53 | 54 | 还提供了文档使用的术语表。 55 | 56 | * **API参考** :提供有关DPDK功能、数据结构和其他编程结构的详细信息。 57 | 58 | * **示例程序用户指南** :描述了一组例程。 59 | 每个章节描述了一个用例,展示了具体的功能,并提供了有关如何编译、运行和使用的说明。 60 | -------------------------------------------------------------------------------- /source/linux_gsg/intro.rst.txt: -------------------------------------------------------------------------------- 1 | .. BSD LICENSE 2 | Copyright(c) 2010-2014 Intel Corporation. All rights reserved. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions 7 | are met: 8 | 9 | * Redistributions of source code must retain the above copyright 10 | notice, this list of conditions and the following disclaimer. 11 | * Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in 13 | the documentation and/or other materials provided with the 14 | distribution. 15 | * Neither the name of Intel Corporation nor the names of its 16 | contributors may be used to endorse or promote products derived 17 | from this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | Introduction 32 | ============ 33 | 34 | This document contains instructions for installing and configuring the Data Plane Development Kit (DPDK) software. 35 | It is designed to get customers up and running quickly. 36 | The document describes how to compile and run a DPDK application in a Linux application (linuxapp) environment, 37 | without going deeply into detail. 38 | 39 | Documentation Roadmap 40 | --------------------- 41 | 42 | The following is a list of DPDK documents in the suggested reading order: 43 | 44 | * Release Notes: Provides release-specific information, including supported features, limitations, fixed issues, known issues and so on. 45 | Also, provides the answers to frequently asked questions in FAQ format. 46 | 47 | * Getting Started Guide (this document): Describes how to install and configure the DPDK; designed to get users up and running quickly with the software. 48 | 49 | * Programmer's Guide: Describes: 50 | 51 | * The software architecture and how to use it (through examples), specifically in a Linux application (linuxapp) environment 52 | 53 | * The content of the DPDK, the build system (including the commands that can be used in the root DPDK Makefile to build the development kit and 54 | an application) and guidelines for porting an application 55 | 56 | * Optimizations used in the software and those that should be considered for new development 57 | 58 | A glossary of terms is also provided. 59 | 60 | * API Reference: Provides detailed information about DPDK functions, data structures and other programming constructs. 61 | 62 | * Sample Applications User Guide: Describes a set of sample applications. 63 | Each chapter describes a sample application that showcases specific functionality and provides instructions on how to compile, run and use the sample application. 64 | -------------------------------------------------------------------------------- /source/nics/bnxt.rst: -------------------------------------------------------------------------------- 1 | .. BSD LICENSE 2 | Copyright 2016 Broadcom Limited 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions 6 | are met: 7 | 8 | * Redistributions of source code must retain the above copyright 9 | notice, this list of conditions and the following disclaimer. 10 | * Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in 12 | the documentation and/or other materials provided with the 13 | distribution. 14 | * Neither the name of Broadcom Limited nor the names of its 15 | contributors may be used to endorse or promote products derived 16 | from this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 | 30 | BNXT Poll Mode Driver 31 | ===================== 32 | 33 | The bnxt poll mode library (**librte_pmd_bnxt**) implements support for: 34 | 35 | * **Broadcom NetXtreme-C®/NetXtreme-E® BCM5730X and BCM5740X family of 36 | Ethernet Network Controllers** 37 | 38 | These adapters support Standards compliant 10/25/50Gbps 30MPPS 39 | full-duplex throughput. 40 | 41 | Information about the NetXtreme family of adapters can be found in the 42 | `NetXtreme® Brand section 43 | `_ 44 | of the `Broadcom website `_. 45 | 46 | * **Broadcom StrataGX® BCM5871X Series of Communucations Processors** 47 | 48 | These ARM based processors target a broad range of networking applications 49 | including virtual CPE (vCPE) and NFV appliances, 10G service routers and 50 | gateways, control plane processing for Ethernet switches and network 51 | attached storage (NAS). 52 | 53 | Information about the StrataGX family of adapters can be found in the 54 | `StrataGX® BCM5871X Series section 55 | `_ 56 | of the `Broadcom website `_. 57 | 58 | Limitations 59 | ----------- 60 | 61 | With the current driver, allocated mbufs must be large enough to hold 62 | the entire received frame. If the mbufs are not large enough, the 63 | packets will be dropped. This is most limiting when jumbo frames are 64 | used. 65 | -------------------------------------------------------------------------------- /source/nics/features/afpacket.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'afpacket' network poll mode driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | -------------------------------------------------------------------------------- /source/nics/features/avp.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'AVP' network poll mode driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Link status = Y 8 | Jumbo frame = Y 9 | Scattered Rx = Y 10 | Promiscuous mode = Y 11 | Unicast MAC filter = Y 12 | VLAN offload = Y 13 | Basic stats = Y 14 | Stats per queue = Y 15 | Linux UIO = Y 16 | x86-64 = Y 17 | -------------------------------------------------------------------------------- /source/nics/features/bnx2x.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'bnx2x' network poll mode driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Link status = Y 8 | Link status event = Y 9 | Promiscuous mode = Y 10 | Unicast MAC filter = Y 11 | Multicast MAC filter = Y 12 | Basic stats = Y 13 | Extended stats = Y 14 | Linux UIO = Y 15 | x86-64 = Y 16 | Usage doc = Y 17 | -------------------------------------------------------------------------------- /source/nics/features/bnx2x_vf.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'bnx2x_vf' network poll mode driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Link status = Y 8 | Link status event = Y 9 | Promiscuous mode = Y 10 | Unicast MAC filter = Y 11 | Multicast MAC filter = Y 12 | SR-IOV = Y 13 | Basic stats = Y 14 | Extended stats = Y 15 | Linux UIO = Y 16 | x86-64 = Y 17 | Usage doc = Y 18 | -------------------------------------------------------------------------------- /source/nics/features/bnxt.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'bnxt' network poll mode driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Link status = Y 8 | Queue start/stop = Y 9 | Promiscuous mode = Y 10 | Unicast MAC filter = Y 11 | Multicast MAC filter = Y 12 | RSS reta update = Y 13 | Basic stats = Y 14 | Extended stats = Y 15 | Linux UIO = Y 16 | x86-64 = Y 17 | -------------------------------------------------------------------------------- /source/nics/features/bonding.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'bonding' network poll mode driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | -------------------------------------------------------------------------------- /source/nics/features/cxgbe.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'cxgbe' network poll mode driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Link status = Y 8 | Queue start/stop = Y 9 | MTU update = Y 10 | Jumbo frame = Y 11 | Scattered Rx = Y 12 | TSO = Y 13 | Promiscuous mode = Y 14 | Allmulticast mode = Y 15 | RSS hash = Y 16 | Flow control = Y 17 | CRC offload = Y 18 | VLAN offload = Y 19 | L3 checksum offload = Y 20 | L4 checksum offload = Y 21 | Packet type parsing = Y 22 | Basic stats = Y 23 | Stats per queue = Y 24 | EEPROM dump = Y 25 | Registers dump = Y 26 | BSD nic_uio = Y 27 | Linux UIO = Y 28 | Linux VFIO = Y 29 | x86-32 = Y 30 | x86-64 = Y 31 | Usage doc = Y 32 | -------------------------------------------------------------------------------- /source/nics/features/default.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Features of a default network driver. 3 | ; 4 | ; This file defines the features that are valid for inclusion in 5 | ; the other driver files and also the order that they appear in 6 | ; the features table in the documentation. The feature description 7 | ; string should not exceed feature_str_len defined in conf.py. 8 | ; 9 | [Features] 10 | Speed capabilities = 11 | Link status = 12 | Link status event = 13 | Queue status event = 14 | Rx interrupt = 15 | Free Tx mbuf on demand = 16 | Queue start/stop = 17 | MTU update = 18 | Jumbo frame = 19 | Scattered Rx = 20 | LRO = 21 | TSO = 22 | Promiscuous mode = 23 | Allmulticast mode = 24 | Unicast MAC filter = 25 | Multicast MAC filter = 26 | RSS hash = 27 | RSS key update = 28 | RSS reta update = 29 | VMDq = 30 | SR-IOV = 31 | DCB = 32 | VLAN filter = 33 | Ethertype filter = 34 | N-tuple filter = 35 | SYN filter = 36 | Tunnel filter = 37 | Flexible filter = 38 | Hash filter = 39 | Flow director = 40 | Flow control = 41 | Flow API = 42 | Rate limitation = 43 | Traffic mirroring = 44 | CRC offload = 45 | VLAN offload = 46 | QinQ offload = 47 | L3 checksum offload = 48 | L4 checksum offload = 49 | MACsec offload = 50 | Inner L3 checksum = 51 | Inner L4 checksum = 52 | Packet type parsing = 53 | Timesync = 54 | Rx descriptor status = 55 | Tx descriptor status = 56 | Basic stats = 57 | Extended stats = 58 | Stats per queue = 59 | FW version = 60 | EEPROM dump = 61 | Registers dump = 62 | Multiprocess aware = 63 | BSD nic_uio = 64 | Linux UIO = 65 | Linux VFIO = 66 | Other kdrv = 67 | ARMv7 = 68 | ARMv8 = 69 | Power8 = 70 | x86-32 = 71 | x86-64 = 72 | Usage doc = 73 | Design doc = 74 | Perf doc = 75 | -------------------------------------------------------------------------------- /source/nics/features/e1000.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'e1000' network poll mode driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Link status = Y 8 | Link status event = Y 9 | Rx interrupt = Y 10 | Free Tx mbuf on demand = Y 11 | MTU update = Y 12 | Jumbo frame = Y 13 | Scattered Rx = Y 14 | Promiscuous mode = Y 15 | Allmulticast mode = Y 16 | Unicast MAC filter = Y 17 | VLAN filter = Y 18 | Flow control = Y 19 | CRC offload = Y 20 | VLAN offload = Y 21 | QinQ offload = Y 22 | L3 checksum offload = Y 23 | L4 checksum offload = Y 24 | Rx descriptor status = Y 25 | Tx descriptor status = Y 26 | Basic stats = Y 27 | BSD nic_uio = Y 28 | Linux UIO = Y 29 | Linux VFIO = Y 30 | x86-32 = Y 31 | x86-64 = Y 32 | -------------------------------------------------------------------------------- /source/nics/features/ena.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'ena' network poll mode driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Queue start/stop = Y 8 | MTU update = Y 9 | Jumbo frame = Y 10 | Scattered Rx = Y 11 | TSO = Y 12 | RSS hash = Y 13 | RSS key update = Y 14 | RSS reta update = Y 15 | SR-IOV = Y 16 | CRC offload = Y 17 | VLAN offload = Y 18 | L3 checksum offload = Y 19 | L4 checksum offload = Y 20 | Inner L3 checksum = Y 21 | Inner L4 checksum = Y 22 | Basic stats = Y 23 | Extended stats = Y 24 | Linux UIO = Y 25 | x86-32 = Y 26 | x86-64 = Y 27 | -------------------------------------------------------------------------------- /source/nics/features/enic.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'enic' network poll mode driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Link status = Y 8 | Link status event = Y 9 | Queue start/stop = Y 10 | MTU update = Y 11 | Jumbo frame = Y 12 | Scattered Rx = Y 13 | TSO = Y 14 | Promiscuous mode = Y 15 | Unicast MAC filter = Y 16 | Multicast MAC filter = Y 17 | RSS hash = Y 18 | VLAN filter = Y 19 | CRC offload = Y 20 | VLAN offload = Y 21 | Flow director = Y 22 | L3 checksum offload = Y 23 | L4 checksum offload = Y 24 | Packet type parsing = Y 25 | Basic stats = Y 26 | BSD nic_uio = Y 27 | Linux UIO = Y 28 | Linux VFIO = Y 29 | x86-32 = Y 30 | x86-64 = Y 31 | Usage doc = Y 32 | -------------------------------------------------------------------------------- /source/nics/features/fm10k.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'fm10k' network poll mode driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Rx interrupt = Y 8 | Queue start/stop = Y 9 | Jumbo frame = Y 10 | Scattered Rx = Y 11 | TSO = Y 12 | Promiscuous mode = Y 13 | Allmulticast mode = Y 14 | Unicast MAC filter = Y 15 | Multicast MAC filter = Y 16 | RSS hash = Y 17 | RSS key update = Y 18 | RSS reta update = Y 19 | VMDq = Y 20 | VLAN filter = Y 21 | CRC offload = Y 22 | VLAN offload = Y 23 | L3 checksum offload = Y 24 | L4 checksum offload = Y 25 | Packet type parsing = Y 26 | Basic stats = Y 27 | Extended stats = Y 28 | Stats per queue = Y 29 | Multiprocess aware = Y 30 | BSD nic_uio = Y 31 | Linux UIO = Y 32 | Linux VFIO = Y 33 | x86-32 = Y 34 | x86-64 = Y 35 | -------------------------------------------------------------------------------- /source/nics/features/fm10k_vec.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'fm10k_vec' network poll mode driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Rx interrupt = Y 8 | Queue start/stop = Y 9 | Jumbo frame = Y 10 | Scattered Rx = Y 11 | TSO = Y 12 | Promiscuous mode = Y 13 | Allmulticast mode = Y 14 | Unicast MAC filter = Y 15 | Multicast MAC filter = Y 16 | RSS hash = Y 17 | RSS key update = Y 18 | RSS reta update = Y 19 | VMDq = Y 20 | VLAN filter = Y 21 | CRC offload = Y 22 | VLAN offload = Y 23 | L3 checksum offload = Y 24 | L4 checksum offload = Y 25 | Packet type parsing = Y 26 | Basic stats = Y 27 | Extended stats = Y 28 | Stats per queue = Y 29 | Multiprocess aware = Y 30 | BSD nic_uio = Y 31 | Linux UIO = Y 32 | Linux VFIO = Y 33 | x86-32 = Y 34 | x86-64 = Y 35 | -------------------------------------------------------------------------------- /source/nics/features/fm10k_vf.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'fm10k_vf' network poll mode driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Rx interrupt = Y 8 | Queue start/stop = Y 9 | Jumbo frame = Y 10 | Scattered Rx = Y 11 | TSO = Y 12 | RSS hash = Y 13 | RSS key update = Y 14 | RSS reta update = Y 15 | CRC offload = Y 16 | VLAN offload = Y 17 | L3 checksum offload = Y 18 | L4 checksum offload = Y 19 | Packet type parsing = Y 20 | Basic stats = Y 21 | Extended stats = Y 22 | Stats per queue = Y 23 | Multiprocess aware = Y 24 | BSD nic_uio = Y 25 | Linux UIO = Y 26 | Linux VFIO = Y 27 | x86-32 = Y 28 | x86-64 = Y 29 | -------------------------------------------------------------------------------- /source/nics/features/fm10k_vf_vec.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'fm10kvf_vec' network poll mode driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Rx interrupt = Y 8 | Queue start/stop = Y 9 | Jumbo frame = Y 10 | Scattered Rx = Y 11 | TSO = Y 12 | RSS hash = Y 13 | RSS key update = Y 14 | RSS reta update = Y 15 | CRC offload = Y 16 | VLAN offload = Y 17 | L3 checksum offload = Y 18 | L4 checksum offload = Y 19 | Packet type parsing = Y 20 | Basic stats = Y 21 | Extended stats = Y 22 | Stats per queue = Y 23 | Multiprocess aware = Y 24 | BSD nic_uio = Y 25 | Linux UIO = Y 26 | Linux VFIO = Y 27 | x86-32 = Y 28 | x86-64 = Y 29 | -------------------------------------------------------------------------------- /source/nics/features/i40e.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'i40e' network poll mode driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Link status = Y 8 | Link status event = Y 9 | Rx interrupt = Y 10 | Queue start/stop = Y 11 | Jumbo frame = Y 12 | Scattered Rx = Y 13 | TSO = Y 14 | Promiscuous mode = Y 15 | Allmulticast mode = Y 16 | Unicast MAC filter = Y 17 | Multicast MAC filter = Y 18 | RSS hash = Y 19 | RSS key update = Y 20 | RSS reta update = Y 21 | VMDq = Y 22 | SR-IOV = Y 23 | DCB = Y 24 | VLAN filter = Y 25 | Ethertype filter = Y 26 | Tunnel filter = Y 27 | Hash filter = Y 28 | Flow director = Y 29 | Flow control = Y 30 | Flow API = Y 31 | Traffic mirroring = Y 32 | CRC offload = Y 33 | VLAN offload = Y 34 | QinQ offload = Y 35 | L3 checksum offload = Y 36 | L4 checksum offload = Y 37 | Inner L3 checksum = Y 38 | Inner L4 checksum = Y 39 | Packet type parsing = Y 40 | Timesync = Y 41 | Rx descriptor status = Y 42 | Tx descriptor status = Y 43 | Basic stats = Y 44 | Extended stats = Y 45 | FW version = Y 46 | Multiprocess aware = Y 47 | BSD nic_uio = Y 48 | Linux UIO = Y 49 | Linux VFIO = Y 50 | x86-32 = Y 51 | x86-64 = Y 52 | ARMv8 = Y 53 | Power8 = Y 54 | -------------------------------------------------------------------------------- /source/nics/features/i40e_vec.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'i40e_vec' network poll mode driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Link status = Y 8 | Link status event = Y 9 | Rx interrupt = Y 10 | Queue start/stop = Y 11 | Jumbo frame = Y 12 | Scattered Rx = Y 13 | TSO = Y 14 | Promiscuous mode = Y 15 | Allmulticast mode = Y 16 | Unicast MAC filter = Y 17 | Multicast MAC filter = Y 18 | RSS hash = Y 19 | RSS key update = Y 20 | RSS reta update = Y 21 | VMDq = Y 22 | SR-IOV = Y 23 | DCB = Y 24 | VLAN filter = Y 25 | Ethertype filter = Y 26 | Tunnel filter = Y 27 | Hash filter = Y 28 | Flow director = Y 29 | Flow control = Y 30 | Traffic mirroring = Y 31 | Timesync = Y 32 | Rx descriptor status = Y 33 | Tx descriptor status = Y 34 | Basic stats = Y 35 | Extended stats = Y 36 | Multiprocess aware = Y 37 | BSD nic_uio = Y 38 | Linux UIO = Y 39 | Linux VFIO = Y 40 | x86-32 = Y 41 | x86-64 = Y 42 | ARMv8 = Y 43 | Power8 = Y 44 | -------------------------------------------------------------------------------- /source/nics/features/i40e_vf.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'i40e_vf' network poll mode driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Rx interrupt = Y 8 | Queue start/stop = Y 9 | Jumbo frame = Y 10 | Scattered Rx = Y 11 | TSO = Y 12 | Promiscuous mode = Y 13 | Allmulticast mode = Y 14 | Unicast MAC filter = Y 15 | Multicast MAC filter = Y 16 | RSS hash = Y 17 | RSS key update = Y 18 | RSS reta update = Y 19 | VLAN filter = Y 20 | Hash filter = Y 21 | CRC offload = Y 22 | VLAN offload = Y 23 | QinQ offload = Y 24 | L3 checksum offload = Y 25 | L4 checksum offload = Y 26 | Inner L3 checksum = Y 27 | Inner L4 checksum = Y 28 | Packet type parsing = Y 29 | Rx descriptor status = Y 30 | Tx descriptor status = Y 31 | Basic stats = Y 32 | Extended stats = Y 33 | Multiprocess aware = Y 34 | BSD nic_uio = Y 35 | Linux UIO = Y 36 | Linux VFIO = Y 37 | x86-32 = Y 38 | x86-64 = Y 39 | -------------------------------------------------------------------------------- /source/nics/features/i40e_vf_vec.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'i40evf_vec' network poll mode driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Rx interrupt = Y 8 | Queue start/stop = Y 9 | Jumbo frame = Y 10 | Scattered Rx = Y 11 | TSO = Y 12 | Promiscuous mode = Y 13 | Allmulticast mode = Y 14 | Unicast MAC filter = Y 15 | Multicast MAC filter = Y 16 | RSS hash = Y 17 | RSS key update = Y 18 | RSS reta update = Y 19 | VLAN filter = Y 20 | Hash filter = Y 21 | Rx descriptor status = Y 22 | Tx descriptor status = Y 23 | Basic stats = Y 24 | Extended stats = Y 25 | Multiprocess aware = Y 26 | BSD nic_uio = Y 27 | Linux UIO = Y 28 | Linux VFIO = Y 29 | x86-32 = Y 30 | x86-64 = Y 31 | ARMv8 = Y 32 | -------------------------------------------------------------------------------- /source/nics/features/igb.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'igb' network poll mode driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Link status = Y 8 | Link status event = Y 9 | Rx interrupt = Y 10 | MTU update = Y 11 | Jumbo frame = Y 12 | Scattered Rx = Y 13 | TSO = Y 14 | Promiscuous mode = Y 15 | Allmulticast mode = Y 16 | Unicast MAC filter = Y 17 | RSS hash = Y 18 | RSS key update = Y 19 | RSS reta update = Y 20 | VMDq = Y 21 | SR-IOV = Y 22 | DCB = Y 23 | VLAN filter = Y 24 | Ethertype filter = Y 25 | N-tuple filter = Y 26 | SYN filter = Y 27 | Flexible filter = Y 28 | Flow control = Y 29 | CRC offload = Y 30 | VLAN offload = Y 31 | QinQ offload = Y 32 | L3 checksum offload = Y 33 | L4 checksum offload = Y 34 | Packet type parsing = Y 35 | Timesync = Y 36 | Rx descriptor status = Y 37 | Tx descriptor status = Y 38 | Basic stats = Y 39 | Extended stats = Y 40 | FW version = Y 41 | EEPROM dump = Y 42 | Registers dump = Y 43 | BSD nic_uio = Y 44 | Linux UIO = Y 45 | Linux VFIO = Y 46 | x86-32 = Y 47 | x86-64 = Y 48 | -------------------------------------------------------------------------------- /source/nics/features/igb_vf.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'igb_vf' network poll mode driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Rx interrupt = Y 8 | Scattered Rx = Y 9 | TSO = Y 10 | Promiscuous mode = Y 11 | Allmulticast mode = Y 12 | Unicast MAC filter = Y 13 | VLAN filter = Y 14 | CRC offload = Y 15 | VLAN offload = Y 16 | QinQ offload = Y 17 | L3 checksum offload = Y 18 | L4 checksum offload = Y 19 | Packet type parsing = Y 20 | Rx descriptor status = Y 21 | Tx descriptor status = Y 22 | Basic stats = Y 23 | Extended stats = Y 24 | Registers dump = Y 25 | BSD nic_uio = Y 26 | Linux UIO = Y 27 | Linux VFIO = Y 28 | x86-32 = Y 29 | x86-64 = Y 30 | -------------------------------------------------------------------------------- /source/nics/features/ixgbe.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'ixgbe' network poll mode driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Link status = Y 8 | Link status event = Y 9 | Rx interrupt = Y 10 | Queue start/stop = Y 11 | MTU update = Y 12 | Jumbo frame = Y 13 | Scattered Rx = Y 14 | LRO = Y 15 | TSO = Y 16 | Promiscuous mode = Y 17 | Allmulticast mode = Y 18 | Unicast MAC filter = Y 19 | RSS hash = Y 20 | RSS key update = Y 21 | RSS reta update = Y 22 | VMDq = Y 23 | SR-IOV = Y 24 | DCB = Y 25 | VLAN filter = Y 26 | Ethertype filter = Y 27 | N-tuple filter = Y 28 | SYN filter = Y 29 | Tunnel filter = Y 30 | Flow director = Y 31 | Flow control = Y 32 | Flow API = Y 33 | Rate limitation = Y 34 | Traffic mirroring = Y 35 | CRC offload = Y 36 | VLAN offload = Y 37 | QinQ offload = Y 38 | L3 checksum offload = Y 39 | L4 checksum offload = Y 40 | MACsec offload = Y 41 | Inner L3 checksum = Y 42 | Inner L4 checksum = Y 43 | Packet type parsing = Y 44 | Timesync = Y 45 | Rx descriptor status = Y 46 | Tx descriptor status = Y 47 | Basic stats = Y 48 | Extended stats = Y 49 | Stats per queue = Y 50 | FW version = Y 51 | EEPROM dump = Y 52 | Registers dump = Y 53 | Multiprocess aware = Y 54 | BSD nic_uio = Y 55 | Linux UIO = Y 56 | Linux VFIO = Y 57 | ARMv8 = Y 58 | x86-32 = Y 59 | x86-64 = Y 60 | -------------------------------------------------------------------------------- /source/nics/features/ixgbe_vec.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'ixgbe_vec' network poll mode driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Link status = Y 8 | Link status event = Y 9 | Rx interrupt = Y 10 | Queue start/stop = Y 11 | MTU update = Y 12 | Jumbo frame = Y 13 | Scattered Rx = Y 14 | LRO = Y 15 | TSO = Y 16 | Promiscuous mode = Y 17 | Allmulticast mode = Y 18 | Unicast MAC filter = Y 19 | RSS hash = Y 20 | RSS key update = Y 21 | RSS reta update = Y 22 | VMDq = Y 23 | SR-IOV = Y 24 | DCB = Y 25 | VLAN filter = Y 26 | Ethertype filter = Y 27 | N-tuple filter = Y 28 | SYN filter = Y 29 | Tunnel filter = Y 30 | Flow director = Y 31 | Flow control = Y 32 | Rate limitation = Y 33 | Traffic mirroring = Y 34 | Timesync = Y 35 | Rx descriptor status = Y 36 | Tx descriptor status = Y 37 | Basic stats = Y 38 | Extended stats = Y 39 | Stats per queue = Y 40 | EEPROM dump = Y 41 | Registers dump = Y 42 | Multiprocess aware = Y 43 | BSD nic_uio = Y 44 | Linux UIO = Y 45 | Linux VFIO = Y 46 | ARMv8 = Y 47 | x86-32 = Y 48 | x86-64 = Y 49 | -------------------------------------------------------------------------------- /source/nics/features/ixgbe_vf.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'ixgbe_vf' network poll mode driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Link status = Y 8 | Rx interrupt = Y 9 | MTU update = Y 10 | Jumbo frame = Y 11 | Scattered Rx = Y 12 | LRO = Y 13 | TSO = Y 14 | Allmulticast mode = Y 15 | Unicast MAC filter = Y 16 | RSS hash = Y 17 | RSS key update = Y 18 | RSS reta update = Y 19 | VLAN filter = Y 20 | CRC offload = Y 21 | VLAN offload = Y 22 | QinQ offload = Y 23 | L3 checksum offload = Y 24 | L4 checksum offload = Y 25 | Inner L3 checksum = Y 26 | Inner L4 checksum = Y 27 | Packet type parsing = Y 28 | Rx descriptor status = Y 29 | Tx descriptor status = Y 30 | Basic stats = Y 31 | Extended stats = Y 32 | Registers dump = Y 33 | Multiprocess aware = Y 34 | BSD nic_uio = Y 35 | Linux UIO = Y 36 | Linux VFIO = Y 37 | ARMv8 = Y 38 | x86-32 = Y 39 | x86-64 = Y 40 | -------------------------------------------------------------------------------- /source/nics/features/ixgbe_vf_vec.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'ixgbevf_vec' network poll mode driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Link status = Y 8 | Rx interrupt = Y 9 | MTU update = Y 10 | Jumbo frame = Y 11 | Scattered Rx = Y 12 | LRO = Y 13 | TSO = Y 14 | Allmulticast mode = Y 15 | Unicast MAC filter = Y 16 | RSS hash = Y 17 | RSS key update = Y 18 | RSS reta update = Y 19 | VLAN filter = Y 20 | Rx descriptor status = Y 21 | Tx descriptor status = Y 22 | Basic stats = Y 23 | Extended stats = Y 24 | Registers dump = Y 25 | Multiprocess aware = Y 26 | BSD nic_uio = Y 27 | Linux UIO = Y 28 | Linux VFIO = Y 29 | ARMv8 = Y 30 | x86-32 = Y 31 | x86-64 = Y 32 | -------------------------------------------------------------------------------- /source/nics/features/kni.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'kni' network poll mode driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Usage doc = Y 8 | -------------------------------------------------------------------------------- /source/nics/features/liquidio.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'LiquidIO' network poll mode driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Link status = Y 8 | Link status event = Y 9 | Jumbo frame = Y 10 | Scattered Rx = Y 11 | Allmulticast mode = Y 12 | RSS hash = Y 13 | RSS key update = Y 14 | RSS reta update = Y 15 | VLAN filter = Y 16 | CRC offload = Y 17 | VLAN offload = P 18 | L3 checksum offload = Y 19 | L4 checksum offload = Y 20 | Inner L3 checksum = Y 21 | Inner L4 checksum = Y 22 | Basic stats = Y 23 | Extended stats = Y 24 | Multiprocess aware = Y 25 | Linux UIO = Y 26 | Linux VFIO = Y 27 | x86-64 = Y 28 | Usage doc = Y 29 | -------------------------------------------------------------------------------- /source/nics/features/mlx4.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'mlx4' network poll mode driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Link status = Y 8 | Link status event = Y 9 | Queue start/stop = Y 10 | MTU update = Y 11 | Jumbo frame = Y 12 | Scattered Rx = Y 13 | Promiscuous mode = Y 14 | Allmulticast mode = Y 15 | Unicast MAC filter = Y 16 | Multicast MAC filter = Y 17 | RSS hash = Y 18 | SR-IOV = Y 19 | VLAN filter = Y 20 | L3 checksum offload = Y 21 | L4 checksum offload = Y 22 | Inner L3 checksum = Y 23 | Inner L4 checksum = Y 24 | Packet type parsing = Y 25 | Basic stats = Y 26 | Stats per queue = Y 27 | Multiprocess aware = Y 28 | Other kdrv = Y 29 | Power8 = Y 30 | x86-32 = Y 31 | x86-64 = Y 32 | Usage doc = Y 33 | -------------------------------------------------------------------------------- /source/nics/features/mlx5.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'mlx5' network poll mode driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Speed capabilities = Y 8 | Link status = Y 9 | Link status event = Y 10 | Rx interrupt = Y 11 | Queue start/stop = Y 12 | MTU update = Y 13 | Jumbo frame = Y 14 | Scattered Rx = Y 15 | TSO = Y 16 | Promiscuous mode = Y 17 | Allmulticast mode = Y 18 | Unicast MAC filter = Y 19 | Multicast MAC filter = Y 20 | RSS hash = Y 21 | RSS key update = Y 22 | RSS reta update = Y 23 | SR-IOV = Y 24 | VLAN filter = Y 25 | Flow director = Y 26 | Flow API = Y 27 | CRC offload = Y 28 | VLAN offload = Y 29 | L3 checksum offload = Y 30 | L4 checksum offload = Y 31 | Inner L3 checksum = Y 32 | Inner L4 checksum = Y 33 | Packet type parsing = Y 34 | Rx descriptor status = Y 35 | Tx descriptor status = Y 36 | Basic stats = Y 37 | Stats per queue = Y 38 | Multiprocess aware = Y 39 | Other kdrv = Y 40 | Power8 = Y 41 | x86-32 = Y 42 | x86-64 = Y 43 | Usage doc = Y 44 | -------------------------------------------------------------------------------- /source/nics/features/nfp.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'nfp' network poll mode driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Speed capabilities = Y 8 | Link status = Y 9 | Link status event = Y 10 | Rx interrupt = Y 11 | Queue start/stop = Y 12 | MTU update = Y 13 | Jumbo frame = Y 14 | Promiscuous mode = Y 15 | TSO = Y 16 | RSS hash = Y 17 | RSS key update = Y 18 | RSS reta update = Y 19 | SR-IOV = Y 20 | Flow control = Y 21 | VLAN offload = Y 22 | L3 checksum offload = Y 23 | L4 checksum offload = Y 24 | Basic stats = Y 25 | Stats per queue = Y 26 | Linux UIO = Y 27 | Linux VFIO = Y 28 | x86-64 = Y 29 | Usage doc = Y 30 | -------------------------------------------------------------------------------- /source/nics/features/null.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'null' network poll mode driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | -------------------------------------------------------------------------------- /source/nics/features/pcap.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'pcap' network poll mode driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Jumbo frame = Y 8 | Basic stats = Y 9 | Multiprocess aware = Y 10 | ARMv7 = Y 11 | ARMv8 = Y 12 | Power8 = Y 13 | x86-32 = Y 14 | x86-64 = Y 15 | Usage doc = Y 16 | -------------------------------------------------------------------------------- /source/nics/features/qede.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'qede' network poll mode driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Speed capabilities = Y 8 | Link status = Y 9 | Link status event = Y 10 | MTU update = Y 11 | Jumbo frame = Y 12 | Scattered Rx = Y 13 | Promiscuous mode = Y 14 | Allmulticast mode = Y 15 | Unicast MAC filter = Y 16 | Multicast MAC filter = Y 17 | RSS hash = Y 18 | RSS key update = Y 19 | RSS reta update = Y 20 | VLAN filter = Y 21 | Flow control = Y 22 | CRC offload = Y 23 | VLAN offload = Y 24 | L3 checksum offload = Y 25 | L4 checksum offload = Y 26 | Tunnel filter = Y 27 | Inner L3 checksum = Y 28 | Inner L4 checksum = Y 29 | Packet type parsing = Y 30 | Basic stats = Y 31 | Extended stats = Y 32 | Stats per queue = Y 33 | Multiprocess aware = Y 34 | Linux UIO = Y 35 | x86-64 = Y 36 | Usage doc = Y 37 | N-tuple filter = Y 38 | Flow director = Y 39 | LRO = Y 40 | TSO = Y 41 | -------------------------------------------------------------------------------- /source/nics/features/qede_vf.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'qede_vf' network poll mode driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Speed capabilities = Y 8 | Link status = Y 9 | Link status event = Y 10 | MTU update = Y 11 | Jumbo frame = Y 12 | Scattered Rx = Y 13 | Promiscuous mode = Y 14 | Allmulticast mode = Y 15 | Unicast MAC filter = Y 16 | Multicast MAC filter = Y 17 | RSS hash = Y 18 | RSS key update = Y 19 | RSS reta update = Y 20 | SR-IOV = Y 21 | VLAN filter = Y 22 | Flow control = Y 23 | CRC offload = Y 24 | VLAN offload = Y 25 | L3 checksum offload = Y 26 | L4 checksum offload = Y 27 | Packet type parsing = Y 28 | Basic stats = Y 29 | Extended stats = Y 30 | Stats per queue = Y 31 | Multiprocess aware = Y 32 | Linux UIO = Y 33 | x86-64 = Y 34 | LRO = Y 35 | TSO = Y 36 | Usage doc = Y 37 | -------------------------------------------------------------------------------- /source/nics/features/ring.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'ring' network poll mode driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | -------------------------------------------------------------------------------- /source/nics/features/sfc_efx.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'sfc_efx' network poll mode driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Speed capabilities = Y 8 | Link status = Y 9 | Link status event = Y 10 | Queue start/stop = Y 11 | MTU update = Y 12 | Jumbo frame = Y 13 | Scattered Rx = Y 14 | TSO = Y 15 | Promiscuous mode = Y 16 | Allmulticast mode = Y 17 | Multicast MAC filter = Y 18 | RSS hash = Y 19 | RSS key update = Y 20 | RSS reta update = Y 21 | SR-IOV = Y 22 | Flow control = Y 23 | Flow API = Y 24 | VLAN offload = P 25 | L3 checksum offload = Y 26 | L4 checksum offload = Y 27 | Packet type parsing = Y 28 | Basic stats = Y 29 | Extended stats = Y 30 | FW version = Y 31 | BSD nic_uio = Y 32 | Linux UIO = Y 33 | Linux VFIO = Y 34 | x86-64 = Y 35 | -------------------------------------------------------------------------------- /source/nics/features/szedata2.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'szedata2' network poll mode driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Link status = Y 8 | Queue start/stop = Y 9 | Scattered Rx = Y 10 | Promiscuous mode = Y 11 | Allmulticast mode = Y 12 | Basic stats = Y 13 | Extended stats = Y 14 | Stats per queue = Y 15 | Other kdrv = Y 16 | x86-64 = Y 17 | Usage doc = Y 18 | -------------------------------------------------------------------------------- /source/nics/features/tap.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'tap' driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Link status = Y 8 | Link status event = Y 9 | Jumbo frame = Y 10 | Promiscuous mode = Y 11 | Allmulticast mode = Y 12 | Basic stats = Y 13 | Flow API = Y 14 | MTU update = Y 15 | Multicast MAC filter = Y 16 | Speed capabilities = Y 17 | Unicast MAC filter = Y 18 | Packet type parsing = Y 19 | Flow control = Y 20 | Other kdrv = Y 21 | ARMv7 = Y 22 | ARMv8 = Y 23 | Power8 = Y 24 | x86-32 = Y 25 | x86-64 = Y 26 | Usage doc = Y 27 | -------------------------------------------------------------------------------- /source/nics/features/thunderx.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'thunderx' network poll mode driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Link status = Y 8 | Link status event = Y 9 | Queue start/stop = Y 10 | MTU update = Y 11 | Jumbo frame = Y 12 | Scattered Rx = Y 13 | Promiscuous mode = Y 14 | Allmulticast mode = Y 15 | RSS hash = Y 16 | RSS key update = Y 17 | RSS reta update = Y 18 | SR-IOV = Y 19 | CRC offload = Y 20 | VLAN offload = P 21 | L3 checksum offload = Y 22 | L4 checksum offload = Y 23 | Packet type parsing = Y 24 | Basic stats = Y 25 | Stats per queue = Y 26 | Registers dump = Y 27 | Multiprocess aware = Y 28 | Linux VFIO = Y 29 | ARMv8 = Y 30 | Usage doc = Y 31 | -------------------------------------------------------------------------------- /source/nics/features/vhost.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'vhost' network poll mode driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Link status = Y 8 | Link status event = Y 9 | Free Tx mbuf on demand = Y 10 | Queue status event = Y 11 | Basic stats = Y 12 | Extended stats = Y 13 | x86-32 = Y 14 | x86-64 = Y 15 | -------------------------------------------------------------------------------- /source/nics/features/virtio.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'virtio' network poll mode driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Link status = Y 8 | Rx interrupt = Y 9 | Queue start/stop = Y 10 | Scattered Rx = Y 11 | Promiscuous mode = Y 12 | Allmulticast mode = Y 13 | Unicast MAC filter = Y 14 | Multicast MAC filter = Y 15 | VLAN filter = Y 16 | Basic stats = Y 17 | Stats per queue = Y 18 | Extended stats = Y 19 | Multiprocess aware = Y 20 | BSD nic_uio = Y 21 | Linux UIO = Y 22 | Linux VFIO = Y 23 | ARMv7 = Y 24 | ARMv8 = Y 25 | x86-32 = Y 26 | x86-64 = Y 27 | Usage doc = Y 28 | MTU update = Y 29 | -------------------------------------------------------------------------------- /source/nics/features/virtio_vec.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'virtio_vec' network poll mode driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Link status = Y 8 | Rx interrupt = Y 9 | Queue start/stop = Y 10 | Promiscuous mode = Y 11 | Allmulticast mode = Y 12 | Unicast MAC filter = Y 13 | Multicast MAC filter = Y 14 | VLAN filter = Y 15 | Basic stats = Y 16 | Stats per queue = Y 17 | BSD nic_uio = Y 18 | Linux UIO = Y 19 | Linux VFIO = Y 20 | ARMv7 = Y 21 | ARMv8 = Y 22 | x86-32 = Y 23 | x86-64 = Y 24 | -------------------------------------------------------------------------------- /source/nics/features/vmxnet3.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'vmxnet3' network poll mode driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | Link status = Y 8 | Link status event = Y 9 | Queue start/stop = Y 10 | MTU update = Y 11 | Jumbo frame = Y 12 | LRO = Y 13 | TSO = Y 14 | Promiscuous mode = Y 15 | Allmulticast mode = Y 16 | Unicast MAC filter = Y 17 | RSS hash = Y 18 | VLAN filter = Y 19 | VLAN offload = Y 20 | L4 checksum offload = Y 21 | Packet type parsing = Y 22 | Basic stats = Y 23 | Stats per queue = Y 24 | Linux UIO = Y 25 | Linux VFIO = Y 26 | x86-32 = Y 27 | x86-64 = Y 28 | Usage doc = Y 29 | -------------------------------------------------------------------------------- /source/nics/features/xenvirt.ini: -------------------------------------------------------------------------------- 1 | ; 2 | ; Supported features of the 'xenvirt' network poll mode driver. 3 | ; 4 | ; Refer to default.ini for the full list of available PMD features. 5 | ; 6 | [Features] 7 | -------------------------------------------------------------------------------- /source/nics/img/console.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/nics/img/console.png -------------------------------------------------------------------------------- /source/nics/img/fast_pkt_proc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/nics/img/fast_pkt_proc.png -------------------------------------------------------------------------------- /source/nics/img/forward_stats.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/nics/img/forward_stats.png -------------------------------------------------------------------------------- /source/nics/img/host_vm_comms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/nics/img/host_vm_comms.png -------------------------------------------------------------------------------- /source/nics/img/host_vm_comms_qemu.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/nics/img/host_vm_comms_qemu.png -------------------------------------------------------------------------------- /source/nics/img/inter_vm_comms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/nics/img/inter_vm_comms.png -------------------------------------------------------------------------------- /source/nics/img/perf_benchmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/nics/img/perf_benchmark.png -------------------------------------------------------------------------------- /source/nics/img/single_port_nic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/nics/img/single_port_nic.png -------------------------------------------------------------------------------- /source/nics/img/vm_vm_comms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/nics/img/vm_vm_comms.png -------------------------------------------------------------------------------- /source/nics/img/vmxnet3_int.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/nics/img/vmxnet3_int.png -------------------------------------------------------------------------------- /source/nics/img/vswitch_vm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/nics/img/vswitch_vm.png -------------------------------------------------------------------------------- /source/nics/index.rst: -------------------------------------------------------------------------------- 1 | .. BSD LICENSE 2 | Copyright(c) 2010-2014 Intel Corporation. All rights reserved. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions 7 | are met: 8 | 9 | * Redistributions of source code must retain the above copyright 10 | notice, this list of conditions and the following disclaimer. 11 | * Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in 13 | the documentation and/or other materials provided with the 14 | distribution. 15 | * Neither the name of Intel Corporation nor the names of its 16 | contributors may be used to endorse or promote products derived 17 | from this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | Network Interface Controller Drivers 32 | ==================================== 33 | 34 | .. toctree:: 35 | :maxdepth: 3 36 | :numbered: 37 | 38 | overview 39 | avp 40 | bnx2x 41 | bnxt 42 | cxgbe 43 | e1000em 44 | ena 45 | enic 46 | fm10k 47 | i40e 48 | ixgbe 49 | intel_vf 50 | kni 51 | liquidio 52 | mlx4 53 | mlx5 54 | nfp 55 | qede 56 | sfc_efx 57 | szedata2 58 | tap 59 | thunderx 60 | virtio 61 | vhost 62 | vmxnet3 63 | pcap_ring 64 | 65 | **Figures** 66 | 67 | :numref:`figure_single_port_nic` :ref:`figure_single_port_nic` 68 | 69 | :numref:`figure_perf_benchmark` :ref:`figure_perf_benchmark` 70 | 71 | :numref:`figure_fast_pkt_proc` :ref:`figure_fast_pkt_proc` 72 | 73 | :numref:`figure_inter_vm_comms` :ref:`figure_inter_vm_comms` 74 | 75 | :numref:`figure_host_vm_comms` :ref:`figure_host_vm_comms` 76 | 77 | :numref:`figure_host_vm_comms_qemu` :ref:`figure_host_vm_comms_qemu` 78 | 79 | :numref:`figure_vmxnet3_int` :ref:`figure_vmxnet3_int` 80 | 81 | :numref:`figure_vswitch_vm` :ref:`figure_vswitch_vm` 82 | 83 | :numref:`figure_vm_vm_comms` :ref:`figure_vm_vm_comms` 84 | -------------------------------------------------------------------------------- /source/nics/overview.rst: -------------------------------------------------------------------------------- 1 | .. BSD LICENSE 2 | Copyright 2016 6WIND S.A. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions 6 | are met: 7 | 8 | * Redistributions of source code must retain the above copyright 9 | notice, this list of conditions and the following disclaimer. 10 | * Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in 12 | the documentation and/or other materials provided with the 13 | distribution. 14 | * Neither the name of 6WIND S.A. nor the names of its 15 | contributors may be used to endorse or promote products derived 16 | from this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 | 30 | Overview of Networking Drivers 31 | ============================== 32 | 33 | The networking drivers may be classified in two categories: 34 | 35 | - physical for real devices 36 | - virtual for emulated devices 37 | 38 | Some physical devices may be shaped through a virtual layer as for 39 | SR-IOV. 40 | The interface seen in the virtual environment is a VF (Virtual Function). 41 | 42 | The ethdev layer exposes an API to use the networking functions 43 | of these devices. 44 | The bottom half part of ethdev is implemented by the drivers. 45 | Thus some features may not be implemented. 46 | 47 | There are more differences between drivers regarding some internal properties, 48 | portability or even documentation availability. 49 | Most of these differences are summarized below. 50 | 51 | .. _table_net_pmd_features: 52 | 53 | .. raw:: html 54 | 55 | 105 | 106 | .. include:: overview_table.txt 107 | 108 | .. Note:: 109 | 110 | Features marked with "P" are partially supported. Refer to the appropriate 111 | NIC guide in the following sections for details. 112 | -------------------------------------------------------------------------------- /source/prog_guide/build_app.rst: -------------------------------------------------------------------------------- 1 | .. BSD LICENSE 2 | Copyright(c) 2010-2014 Intel Corporation. All rights reserved. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions 7 | are met: 8 | 9 | * Redistributions of source code must retain the above copyright 10 | notice, this list of conditions and the following disclaimer. 11 | * Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in 13 | the documentation and/or other materials provided with the 14 | distribution. 15 | * Neither the name of Intel Corporation nor the names of its 16 | contributors may be used to endorse or promote products derived 17 | from this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | .. _Building_Your_Own_Application: 32 | 33 | 构建你自己的应用程序 34 | ====================== 35 | 36 | 在DPDK中编译一个示例程序 37 | -------------------------- 38 | 39 | 当编译示例应用程序(如 hello world)时,需要导出变量:RTE_SDK 和 RTE_TARGET。 40 | 41 | .. code-block:: console 42 | 43 | ~/DPDK$ cd examples/helloworld/ 44 | ~/DPDK/examples/helloworld$ export RTE_SDK=/home/user/DPDK 45 | ~/DPDK/examples/helloworld$ export RTE_TARGET=x86_64-native-linuxapp-gcc 46 | ~/DPDK/examples/helloworld$ make 47 | CC main.o 48 | LD helloworld 49 | INSTALL-APP helloworld 50 | INSTALL-MAP helloworld.map 51 | 52 | 生成的二进制文件默认放在build目录下: 53 | 54 | .. code-block:: console 55 | 56 | ~/DPDK/examples/helloworld$ ls build/app 57 | helloworld helloworld.map 58 | 59 | 在DPDK外构建自己的应用程序 60 | ---------------------------- 61 | 62 | 示例应用程序(Hello World)可以复制到一个新的目录中作为开发目录: 63 | 64 | .. code-block:: console 65 | 66 | ~$ cp -r DPDK/examples/helloworld my_rte_app 67 | ~$ cd my_rte_app/ 68 | ~/my_rte_app$ export RTE_SDK=/home/user/DPDK 69 | ~/my_rte_app$ export RTE_TARGET=x86_64-native-linuxapp-gcc 70 | ~/my_rte_app$ make 71 | CC main.o 72 | LD helloworld 73 | INSTALL-APP helloworld 74 | INSTALL-MAP helloworld.map 75 | 76 | 定制 Makefiles 77 | ---------------- 78 | 79 | 应用程序 Makefile 80 | ~~~~~~~~~~~~~~~~~~~~ 81 | 82 | 示例应用程序默认的makefile可以作为一个很好的起点,我们可以直接修订使用。它包括: 83 | 84 | * 起始处包含 $(RTE_SDK)/mk/rte.vars.mk 85 | 86 | * 终止处包含 $(RTE_SDK)/mk/rte.extapp.mk 87 | 88 | 用户必须配置几个变量: 89 | 90 | * APP: 应用程序的名称 91 | 92 | * SRCS-y: 源文件列表(\*.c, \*.S)。 93 | 94 | 库 Makefile 95 | ~~~~~~~~~~~~~ 96 | 97 | 同样的方法也可以用于构建库: 98 | 99 | * 起始处包含 $(RTE_SDK)/mk/rte.vars.mk 100 | 101 | * 终止处包含 $(RTE_SDK)/mk/rte.extlib.mk 102 | 103 | 唯一的不同之处就是用LIB名称替换APP的名称,例如:libfoo.a。 104 | 105 | 定制 Makefile 动作 106 | ~~~~~~~~~~~~~~~~~~~~ 107 | 108 | 可以通过定制一些变量来制定 Makefile 动作。常用的动作列表可以参考文档 :ref:`Development Kit Build System ` 章节 :ref:`Makefile Description ` 。 109 | 110 | 111 | * VPATH: 构建系统将搜索的源文件目录,默认情况下 RTE_SRCDIR 将被包含在 VPATH 中。 112 | 113 | * CFLAGS_my_file.o: 编译c文件时指定的编译flag标志。 114 | 115 | * CFLAGS: C编译标志。 116 | 117 | * LDFLAGS: 链接标志。 118 | 119 | * CPPFLAGS: 预处理器标志(只是用于汇编.s文件)。 120 | 121 | * LDLIBS: 链接库列表(如 -L /path/to/libfoo - lfoo)。 122 | -------------------------------------------------------------------------------- /source/prog_guide/ext_app_lib_make_help.rst: -------------------------------------------------------------------------------- 1 | .. BSD LICENSE 2 | Copyright(c) 2010-2014 Intel Corporation. All rights reserved. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions 7 | are met: 8 | 9 | * Redistributions of source code must retain the above copyright 10 | notice, this list of conditions and the following disclaimer. 11 | * Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in 13 | the documentation and/or other materials provided with the 14 | distribution. 15 | * Neither the name of Intel Corporation nor the names of its 16 | contributors may be used to endorse or promote products derived 17 | from this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | .. _External_Application/Library_Makefile_help: 32 | 33 | 外部应用程序/库的 Makefile 34 | ============================= 35 | 36 | 外部的应用程序或库必须包含RTE_SDK指定的位于mk目录中的Makefiles文件。 37 | 这些Makefiles包括: 38 | 39 | * ${RTE_SDK}/mk/rte.extapp.mk: 构建一个应用程序。 40 | 41 | * ${RTE_SDK}/mk/rte.extlib.mk: 构建一个静态库。 42 | 43 | * ${RTE_SDK}/mk/rte.extobj.mk: 购件一个目标文件。 44 | 45 | 前提 46 | ------ 47 | 48 | 必须定义以下变量: 49 | 50 | * ${RTE_SDK}: 指向DPDK根目录。 51 | 52 | * ${RTE_TARGET}: 指向用于编译的目标编译器(如x86_64-native-linuxapp-gcc)。 53 | 54 | 构建 Targets 55 | ------------- 56 | 57 | 支持构建target时指定输出文件的目录,使用 O=mybuilddir 选项。 58 | 这是可选的,默认的输出目录是build。 59 | 60 | * all, "nothing" (仅make) 61 | 62 | 编译应用程序或库到指定的输出目录中。 63 | 64 | 例如: 65 | 66 | .. code-block:: console 67 | 68 | make O=mybuild 69 | 70 | * clean 71 | 72 | 清除make操作产生的所有目标文件。 73 | 74 | 例如: 75 | 76 | .. code-block:: console 77 | 78 | make clean O=mybuild 79 | 80 | Help Targets 81 | ------------ 82 | 83 | * help 84 | 85 | 显示帮助信息。 86 | 87 | 其他有用的命令行变量 88 | ---------------------- 89 | 90 | 以下变量可以在命令行中指定: 91 | 92 | * S= 93 | 94 | 指定源文件的位置。默认情况下是当前目录。 95 | 96 | * M= 97 | 98 | 指定需要被调用的Makefile。默认情况下使用 $(S)/Makefile。 99 | 100 | * V= 101 | 102 | 使能详细编译(显示完全编译命令及一些中间命令过程)。 103 | 104 | * D= 105 | 106 | 启用依赖关系调试。提供了一些有用的信息。 107 | 108 | * EXTRA_CFLAGS=, EXTRA_LDFLAGS=, EXTRA_ASFLAGS=, EXTRA_CPPFLAGS= 109 | 110 | 添加的编译、连接或汇编标志。 111 | 112 | * CROSS= 113 | 114 | 指定一个交叉工具链,该前缀将作为所有gcc/binutils应用程序的前缀。只有在gcc下才起作用。 115 | 116 | 从其他目录中编译 117 | ------------------ 118 | 119 | 通过指定输出和源目录,可以从另一个目录运行Makefile。 例如: 120 | 121 | .. code-block:: console 122 | 123 | export RTE_SDK=/path/to/DPDK 124 | export RTE_TARGET=x86_64-native-linuxapp-icc 125 | make -f /path/to/my_app/Makefile S=/path/to/my_app O=/path/to/build_dir 126 | -------------------------------------------------------------------------------- /source/prog_guide/extend_dpdk.rst: -------------------------------------------------------------------------------- 1 | .. BSD LICENSE 2 | Copyright(c) 2010-2014 Intel Corporation. All rights reserved. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions 7 | are met: 8 | 9 | * Redistributions of source code must retain the above copyright 10 | notice, this list of conditions and the following disclaimer. 11 | * Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in 13 | the documentation and/or other materials provided with the 14 | distribution. 15 | * Neither the name of Intel Corporation nor the names of its 16 | contributors may be used to endorse or promote products derived 17 | from this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | 扩展 DPDK 32 | ============ 33 | 34 | 本章描述了开发者如何通过扩展DPDK来提供一个新的库、目标文件或者支持新的开发板。 35 | 36 | 示例:添加新的库 libfoo 37 | -------------------------- 38 | 39 | 要添加新的库到DPDK,按照如下操作: 40 | 41 | #. 添加新的配置选项: 42 | 43 | .. code-block:: bash 44 | 45 | for f in config/\*; do \ 46 | echo CONFIG_RTE_LIBFOO=y >> $f; done 47 | 48 | #. 创建新的源码目录: 49 | 50 | .. code-block:: console 51 | 52 | mkdir ${RTE_SDK}/lib/libfoo 53 | touch ${RTE_SDK}/lib/libfoo/foo.c 54 | touch ${RTE_SDK}/lib/libfoo/foo.h 55 | 56 | #. 源码添加 foo() 函数。 57 | 58 | 函数定义于 foo.c: 59 | 60 | .. code-block:: c 61 | 62 | void foo(void) 63 | { 64 | } 65 | 66 | 函数声明于 foo.h: 67 | 68 | .. code-block:: c 69 | 70 | extern void foo(void); 71 | 72 | #. 更新文件 lib/Makefile: 73 | 74 | .. code-block:: console 75 | 76 | vi ${RTE_SDK}/lib/Makefile 77 | # add: 78 | # DIRS-$(CONFIG_RTE_LIBFOO) += libfoo 79 | 80 | #. 为新的库创建新的 Makefile,如派生自 mempool Makefile,进行修改: 81 | 82 | .. code-block:: console 83 | 84 | cp ${RTE_SDK}/lib/librte_mempool/Makefile ${RTE_SDK}/lib/libfoo/ 85 | 86 | vi ${RTE_SDK}/lib/libfoo/Makefile 87 | # replace: 88 | # librte_mempool -> libfoo 89 | # rte_mempool -> foo 90 | 91 | #. 更新文件 mk/DPDK.app.mk,添加 -lfoo 选项到 LDLIBS 变量中。 92 | 链接DPDK应用程序时会自动添加此标志。 93 |      94 | 95 | #. 添加此新库之后,重新构建DPDK (此处仅显示这个特殊的部分): 96 | 97 | .. code-block:: console 98 | 99 | cd ${RTE_SDK} 100 | make config T=x86_64-native-linuxapp-gcc 101 | make 102 | 103 | #. 检测这个库被正确安装了: 104 | 105 | .. code-block:: console 106 | 107 | ls build/lib 108 | ls build/include 109 | 110 | 示例:在测试用例中使用新库 libfoo 111 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 112 | 113 | 测试应用程序用于验证DPDK的所有功能。 114 | 一旦添加了一个库,应该在测试用例程序中添加一个用例。 115 | 116 | * 新的测试文件 test_foo.c 被添加,包含头文件 foo.h 并调用 foo() 函数。 117 | 当测试通过时,test_foo() 函数需要返回0。 118 | 119 | * 为了处理新的测试用例,Makefile, test.h 和 commands.c 必须同时更新。 120 | 121 | * 测试报告生成:autotest.py 是一个脚本,用于生成文件 ${RTE_SDK}/doc/rst/test_report/autotests 目录中指定的测试用例报告。 122 | 如果libfoo处于新的测试家族,链接 ${RTE_SDK}/doc/rst/test_report/test_report.rst 需要更新。 123 | 124 | * 重新构建DPDK库,添加新的测试应用程序: 125 | 126 | 127 | .. code-block:: console 128 | 129 | cd ${RTE_SDK} 130 | make config T=x86_64-native-linuxapp-gcc 131 | make 132 | -------------------------------------------------------------------------------- /source/prog_guide/img/blk_diag_dropper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/prog_guide/img/blk_diag_dropper.png -------------------------------------------------------------------------------- /source/prog_guide/img/cryptodev_sym_sess.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | Page-1 36 | 37 | Rounded Rectangle.12 38 | Crypto Symmetric Session 39 | 42 | Crypto Symmetric Session 43 | 44 | Rounded Rectangle.13 45 | Private Session Data 46 | 47 | 50 | 51 | 54 | Private Session Data 55 | 56 | Rounded Rectangle.15 57 | General Session Data (struct rte_cryptodev_sym_session) 58 | 61 | General Session Data (struct rte_cryptodev_sym_session) 65 | 66 | 67 | -------------------------------------------------------------------------------- /source/prog_guide/img/data_struct_per_port.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/prog_guide/img/data_struct_per_port.png -------------------------------------------------------------------------------- /source/prog_guide/img/drop_probability_eq3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/prog_guide/img/drop_probability_eq3.png -------------------------------------------------------------------------------- /source/prog_guide/img/drop_probability_eq4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/prog_guide/img/drop_probability_eq4.png -------------------------------------------------------------------------------- /source/prog_guide/img/drop_probability_graph.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/prog_guide/img/drop_probability_graph.png -------------------------------------------------------------------------------- /source/prog_guide/img/eq2_expression.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/prog_guide/img/eq2_expression.png -------------------------------------------------------------------------------- /source/prog_guide/img/eq2_factor.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/prog_guide/img/eq2_factor.png -------------------------------------------------------------------------------- /source/prog_guide/img/ewma_filter_eq_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/prog_guide/img/ewma_filter_eq_1.png -------------------------------------------------------------------------------- /source/prog_guide/img/ewma_filter_eq_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/prog_guide/img/ewma_filter_eq_2.png -------------------------------------------------------------------------------- /source/prog_guide/img/ex_data_flow_tru_dropper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/prog_guide/img/ex_data_flow_tru_dropper.png -------------------------------------------------------------------------------- /source/prog_guide/img/figure32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/prog_guide/img/figure32.png -------------------------------------------------------------------------------- /source/prog_guide/img/figure33.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/prog_guide/img/figure33.png -------------------------------------------------------------------------------- /source/prog_guide/img/figure34.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/prog_guide/img/figure34.png -------------------------------------------------------------------------------- /source/prog_guide/img/figure35.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/prog_guide/img/figure35.png -------------------------------------------------------------------------------- /source/prog_guide/img/figure37.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/prog_guide/img/figure37.png -------------------------------------------------------------------------------- /source/prog_guide/img/figure38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/prog_guide/img/figure38.png -------------------------------------------------------------------------------- /source/prog_guide/img/figure39.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/prog_guide/img/figure39.png -------------------------------------------------------------------------------- /source/prog_guide/img/flow_tru_droppper.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/prog_guide/img/flow_tru_droppper.png -------------------------------------------------------------------------------- /source/prog_guide/img/hier_sched_blk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/prog_guide/img/hier_sched_blk.png -------------------------------------------------------------------------------- /source/prog_guide/img/kernel_nic_intf.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/prog_guide/img/kernel_nic_intf.png -------------------------------------------------------------------------------- /source/prog_guide/img/kni_traffic_flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/prog_guide/img/kni_traffic_flow.png -------------------------------------------------------------------------------- /source/prog_guide/img/m_definition.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/prog_guide/img/m_definition.png -------------------------------------------------------------------------------- /source/prog_guide/img/packet_distributor1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/prog_guide/img/packet_distributor1.png -------------------------------------------------------------------------------- /source/prog_guide/img/packet_distributor2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/prog_guide/img/packet_distributor2.png -------------------------------------------------------------------------------- /source/prog_guide/img/pipe_prefetch_sm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/prog_guide/img/pipe_prefetch_sm.png -------------------------------------------------------------------------------- /source/prog_guide/img/pkt_drop_probability.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/prog_guide/img/pkt_drop_probability.png -------------------------------------------------------------------------------- /source/prog_guide/img/pkt_flow_kni.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/prog_guide/img/pkt_flow_kni.png -------------------------------------------------------------------------------- /source/prog_guide/img/pkt_proc_pipeline_qos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/prog_guide/img/pkt_proc_pipeline_qos.png -------------------------------------------------------------------------------- /source/prog_guide/img/prefetch_pipeline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/prog_guide/img/prefetch_pipeline.png -------------------------------------------------------------------------------- /source/prog_guide/img/sched_hier_per_port.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/prog_guide/img/sched_hier_per_port.png -------------------------------------------------------------------------------- /source/prog_guide/img/tbl24_tbl8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/prog_guide/img/tbl24_tbl8.png -------------------------------------------------------------------------------- /source/prog_guide/img/tbl24_tbl8_tbl8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/prog_guide/img/tbl24_tbl8_tbl8.png -------------------------------------------------------------------------------- /source/prog_guide/img/vhost_net_arch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/prog_guide/img/vhost_net_arch.png -------------------------------------------------------------------------------- /source/prog_guide/intro.rst: -------------------------------------------------------------------------------- 1 | .. BSD LICENSE 2 | Copyright(c) 2010-2014 Intel Corporation. All rights reserved. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions 7 | are met: 8 | 9 | * Redistributions of source code must retain the above copyright 10 | notice, this list of conditions and the following disclaimer. 11 | * Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in 13 | the documentation and/or other materials provided with the 14 | distribution. 15 | * Neither the name of Intel Corporation nor the names of its 16 | contributors may be used to endorse or promote products derived 17 | from this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | 简介 32 | ==== 33 | 34 | 本文档提供软件架构信息,开发环境及优化指南。 35 | 36 | 有关编程示例及如何编译运行这些示例,请参阅 *DPDK示例用户指南* 。 37 | 38 | 有关编译和运行应用程序的一般信息,请参阅 *DPDK入门指南* 。 39 | 40 | 文档地图 41 | -------- 42 | 43 | 以下是一份建议顺序阅读的DPDK参考文档列表: 44 | 45 | * **发布说明** : 提供特性发行版本的信息,包括支持的功能,限制,修复的问题,已知的问题等等。此外,还以FAQ方式提供了常见问题及解答。 46 | 47 | * **入门指南** : 介绍如何安装和配置DPDK;旨在帮助用户快速上手。 48 | 49 | * **FreeBSD* 入门指南** : DPDK1.6.0版本之后添加了FreeBSD*平台上DPDK入门指南。有关如何在FreeBSD*上安装配置DPDK,请参阅这个文档。 50 | 51 | * **编程指南** (本文档): 描述如下内容: 52 | 53 | * 软件架构及如何使用(实例介绍),特别是在Linux环境中的用法 54 | 55 | * DPDK的主要内容,系统构建(包括可以在DPDK根目录Makefile中来构建工具包和应用程序的命令)及应用移植细则。 56 | 57 | * 软件中使用的,以及新开发中需要考虑的一些优化。 58 | 59 | 还提供了文档使用的术语表。 60 | 61 | * **API参考** :提供有关DPDK功能、数据结构和其他编程结构的详细信息。 62 | 63 | * **示例程序用户指南** :描述了一组例程。 64 | 每个章节描述了一个用例,展示了具体的功能,并提供了有关如何编译、运行和使用的说明。 65 | 66 | 相关刊物 67 | -------- 68 | 69 | 以下文档提供与使用DPDK开发应用程序相关的信息: 70 | 71 | * Intel® 64 and IA-32 Architectures Software Developer's Manual Volume 3A: System Programming Guide 72 | -------------------------------------------------------------------------------- /source/prog_guide/intro.rst.txt: -------------------------------------------------------------------------------- 1 | .. BSD LICENSE 2 | Copyright(c) 2010-2014 Intel Corporation. All rights reserved. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions 7 | are met: 8 | 9 | * Redistributions of source code must retain the above copyright 10 | notice, this list of conditions and the following disclaimer. 11 | * Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in 13 | the documentation and/or other materials provided with the 14 | distribution. 15 | * Neither the name of Intel Corporation nor the names of its 16 | contributors may be used to endorse or promote products derived 17 | from this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | Introduction 32 | ============ 33 | 34 | This document provides software architecture information, 35 | development environment information and optimization guidelines. 36 | 37 | For programming examples and for instructions on compiling and running each sample application, 38 | see the *DPDK Sample Applications User Guide* for details. 39 | 40 | For general information on compiling and running applications, see the *DPDK Getting Started Guide*. 41 | 42 | Documentation Roadmap 43 | --------------------- 44 | 45 | The following is a list of DPDK documents in the suggested reading order: 46 | 47 | * **Release Notes** : Provides release-specific information, including supported features, 48 | limitations, fixed issues, known issues and so on. 49 | Also, provides the answers to frequently asked questions in FAQ format. 50 | 51 | * **Getting Started Guide** : Describes how to install and configure the DPDK software; 52 | designed to get users up and running quickly with the software. 53 | 54 | * **FreeBSD* Getting Started Guide** : A document describing the use of the DPDK with FreeBSD* 55 | has been added in DPDK Release 1.6.0. 56 | Refer to this guide for installation and configuration instructions to get started using the DPDK with FreeBSD*. 57 | 58 | * **Programmer's Guide** (this document): Describes: 59 | 60 | * The software architecture and how to use it (through examples), 61 | specifically in a Linux* application (linuxapp) environment 62 | 63 | * The content of the DPDK, the build system 64 | (including the commands that can be used in the root DPDK Makefile to build the development kit and an application) 65 | and guidelines for porting an application 66 | 67 | * Optimizations used in the software and those that should be considered for new development 68 | 69 | A glossary of terms is also provided. 70 | 71 | * **API Reference** : Provides detailed information about DPDK functions, 72 | data structures and other programming constructs. 73 | 74 | * **Sample Applications User Guide**: Describes a set of sample applications. 75 | Each chapter describes a sample application that showcases specific functionality 76 | and provides instructions on how to compile, run and use the sample application. 77 | 78 | Related Publications 79 | -------------------- 80 | 81 | The following documents provide information that is relevant to the development of applications using the DPDK: 82 | 83 | * Intel® 64 and IA-32 Architectures Software Developer's Manual Volume 3A: System Programming Guide 84 | -------------------------------------------------------------------------------- /source/prog_guide/ip_fragment_reassembly_lib.rst: -------------------------------------------------------------------------------- 1 | .. BSD LICENSE 2 | Copyright(c) 2010-2014 Intel Corporation. All rights reserved. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions 7 | are met: 8 | 9 | * Redistributions of source code must retain the above copyright 10 | notice, this list of conditions and the following disclaimer. 11 | * Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in 13 | the documentation and/or other materials provided with the 14 | distribution. 15 | * Neither the name of Intel Corporation nor the names of its 16 | contributors may be used to endorse or promote products derived 17 | from this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | IP分片及重组库 32 | ================ 33 | 34 | IP分段和重组库实现IPv4和IPv6报文的分片和重组。 35 | 36 | 报文分片 37 | --------- 38 | 39 | 报文分段例程将输入报文划分成多个分片。rte_ipv4_fragment_packet()和rte_ipv6_fragment_packet()函数都假定输入mbuf数据指向报文的IP报头的开始(即L2报头已经被剥离)。为了避免复制实际数据包的数据,使用零拷贝技术(rte_pktmbuf_attach)。对于每个片段,将创建两个新的mbuf: 40 | 41 | * Direct mbuf -- mbuf将包含新片段的L3头部。 42 | 43 | * Indirect mbuf -- 源数据包附加到mbuf。数据字段指向原始数据包数据的附加数据偏移量开始处。 44 | 45 | 然后将L3头部从原始mbuf复制到“direct”mbuf并更新以反映新的碎片状态。 请注意,对于IPv4,不会重新计算头校验和,其值设置为零。 46 | 47 | 最后,通过mbuf的下next字段将每个片段的“dirext”和“indirect”mbuf链接在一起,以构成新片段的数据包。 48 | 49 | 调用者可以明确指定哪些mempools应用于从中分配“direct”和“indirect”mbufs。 50 | 51 | 有关direct和indirect mbufs的信息,请参阅 :ref:`direct_indirect_buffer` 。 52 | 53 | 报文重组 54 | ---------- 55 | 56 | IP分片表 57 | ~~~~~~~~~~ 58 | 59 | 报文分片表中维护已经接收到的数据包片段的信息。 60 | 61 | 每个IP数据包由三个字段:<源IP地址>,<目标IP地址>,唯一标识。 62 | 63 | 请注意,报文分片表上的所有更新/查找操作都不是线程安全的。因此,如果不同的执行上下文(线程/进程)要同时访问同一个表,那么必须提供一些外部同步机制。 64 | 65 | 每个表项可以保存最多RTE_LIBRTE_IP_FRAG_MAX(默认值为4)片段的数据包的信息。 66 | 67 | 代码示例,演示了创建新的片段表: 68 | 69 | .. code-block:: c 70 | 71 | frag_cycles = (rte_get_tsc_hz() + MS_PER_S - 1) / MS_PER_S * max_flow_ttl; 72 | bucket_num = max_flow_num + max_flow_num / 4; 73 | frag_tbl = rte_ip_frag_table_create(max_flow_num, bucket_entries, max_flow_num, frag_cycles, socket_id); 74 | 75 | 内部片段表是一个简单的哈希表。 基本思想是使用两个哈希函数和 关联性。 这为每个Key在散列表中提供了2 可能的位置。当发生冲突并且所有2 * 都被占用时,ip_frag_tbl_add()只是返回失败,而不是将现有的Key重新插入到另外的位置。 76 | 77 | 此外,驻留在表中的条目如果比更长,被认为是无效的,可以被新的条目删除/替换。 78 | 79 | 请注意,重新组合需要分配很多mbuf。在任何给定时间(2 bucket_entries RTE_LIBRTE_IP_FRAG_MAX * <每个数据包的最大mbufs数>>)可以存储在等待剩余片段的Fragment Table中。 80 | 81 | 报文重组 82 | ~~~~~~~~~~ 83 | 84 | 报文分组处理和重组由rte_ipv4_frag_reassemble_packet()/rte_ipv6_frag_reassemble_packet()完成。它们返回一个指向有效mbuf的指针,它包含重新组合的数据包,或者返回NULL(如果数据包由于某种原因而无法重新组合)。 85 | 86 | 这些功能包括: 87 | 88 | #. 搜索片段表,输入数据包的。 89 | 90 | #. 如果找到该条目,则检查该条目是否已经超时。如果是,则释放所有以前收到的碎片,并从条目中删除有关它们的信息。 91 | 92 | #. 如果没有找到这样的Key的条目,那么尝试通过以下两种方法之一创建一个新的: 93 | 94 | a) 用作空条目。 95 | 96 | b) 删除一个超时条目,与它mbufs关联的空闲mbufs,并在其中存储一个带有指定键的新条目。 97 | 98 | #. 使用新的片段信息更新条目,并检查是否可以重新组合数据包(数据包的条目包含所有片段)。 99 | 100 | a) 如果是,则重新组装数据包,将表的条目标记为空,并将重新组装的mbuf返回给调用者。 101 | 102 | b) 如果否,则向调用者返回一个NULL。 103 | 104 | 如果在分组处理的任何阶段遇到错误(例如:不能将新条目插入片段表或无效/超时片段),则该函数将释放所有与分组片段相关联的标记表条目 作为无效并将NULL返回给调用者。 105 | 106 | 调试日志及统计收集 107 | ~~~~~~~~~~~~~~~~~~~~ 108 | 109 | RTE_LIBRTE_IP_FRAG_TBL_STAT配置宏用于控制片段表的统计信息收集。默认情况下未启用。 110 | 111 | RTE_LIBRTE_IP_FRAG_DEBUG控制IP片段处理和重组的调试日志记录。默认情况下禁用。请注意,在日志记录包含大量详细信息时,会减慢数据包处理速度,并可能导致丢失大量数据包。 112 | -------------------------------------------------------------------------------- /source/prog_guide/packet_distrib_lib.rst: -------------------------------------------------------------------------------- 1 | .. BSD LICENSE 2 | Copyright(c) 2010-2014 Intel Corporation. All rights reserved. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions 7 | are met: 8 | 9 | * Redistributions of source code must retain the above copyright 10 | notice, this list of conditions and the following disclaimer. 11 | * Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in 13 | the documentation and/or other materials provided with the 14 | distribution. 15 | * Neither the name of Intel Corporation nor the names of its 16 | contributors may be used to endorse or promote products derived 17 | from this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | 报文分发库 32 | ============= 33 | 34 | DPDK报文分发器是一种库,用于在一次 操作中获取单个数据包,以支持流量的动态负载均衡。当使用这个库时,需要考虑两种角色的逻辑核:首先是负责负载均衡及分发数据包的分发逻辑核,另一个是一组工作逻辑核,负责接收来自分发逻辑核的数据包并对其进行操作。 35 | 36 | 操作模式如下图所示: 37 | 38 | .. figure:: img/packet_distributor1.* 39 | 40 | Packet Distributor mode of operation 41 | 42 | 在报文分发器库中有两种API操作模式:一种是使用32bit的flow_id,一次向一个worker发送一个报文;另一种优化模式是一次性最多发送8个数据包给worker,使用15bit的flow_id。该模式由 ``rte_distributor_create()`` 函数中的类型字段指定。 43 | 44 | 分发逻辑核操作 45 | ---------------- 46 | 47 | 分发逻辑核执行了大部分的处理以确保数据包在worker之间公平分发。分发逻辑核的运作情况如下: 48 | 49 | #. 分发逻辑核的lcore线程通过调用 ``rte_distributor_process()`` 来获取数据包。 50 | 51 | #. 所有的worker lcore与distributor lcore共享一条缓存线行,以便在worker和distributor之间传递消息和数据包。执行API调用将轮询所有worker的缓存行,以查看哪些worker正在请求数据包。 52 | 53 | #. 当有worker请求数据包时,distributor从第一步中传过来的一组数据包中取出数据包,并将其分发给worker。它检查每个数据包中存储在mbuf中RSS哈希字段中的“tag”,并记录每个worker正在处理的tag。 54 | 55 | #. 如果输入报文集中的下一个数据包有一个已经被worker处理的tag,则该数据包将排队等待worker的处理,并在下一个worker请求数据包时,优先考虑其他的数据包。这可以确保不会并发处理具有相同tag的两个报文,并且,具有相同tag的两个报文按输入顺序被处理。 56 | 57 | #. 一旦传递给执行API的所有报文已经分发给worker,或者已经排队等待给定tag的worker处理,则执行API返回给调用者。 58 | 59 | Distributor lcore可以使用的其他功能有: 60 | 61 | * rte_distributor_returned_pkts() 62 | 63 | * rte_distributor_flush() 64 | 65 | * rte_distributor_clear_returns() 66 | 67 | 其中最重要的API调用是 ``rte_distributor_returned_pkts()`` ,它只能在调用进程API的lcore上调用。它将所有worker core完成处理的所有数据包返回给调用者。在这组返回的数据包中,共享相同标签的所有数据包将按原始顺序返回。 68 | 69 | **NOTE:** 70 | 如果worker lcore在内部缓存数据包进行批量传输,则共享tag的数据包可能会出现故障。一旦一个worker lcore请求一个新的数据包,distributor就会假定它已经完成了先前的数据包,因此具有相同tag的附加数据包可以安全地分配给其他worker,然后他们可能会更早地刷新缓冲的数据包,使数据包发生故障。 71 | 72 | **NOTE:** 73 | 对于不共享公共数据包tag的数据包,不提供数据包排序保证。 74 | 75 | 使用上述执行过程及returned_pkts API,可以使用以下应用程序工作流,同时允许维护由tag识别的数据包流中的数据包顺序。 76 | 77 | 78 | .. figure:: img/packet_distributor2.* 79 | 80 | Application workflow 81 | 82 | 83 | 之前提到的flush和clear_returns API调用可能不太用于进程和returned_pkts APIS,并且主要用于帮助对库进行单元测试。可以在DPDK API参考文档中找到这些功能及其用途的描述。 84 | 85 | Worker Operation 86 | ---------------- 87 | 88 | Worker lcore是对distributor分发的数据包进行实际操作的lcore。 Worker调用rte_distributor_get_pkt() API在完成处理前一个数据包时请求一个新的数据包。前一个数据包应通过将其作为最终参数传递给该API调用而返回给分发器组件。 89 | 90 | 有时候可能需要改变worker lcore的数量,这取决于业务负载,即在较轻的负载时节省功率,可以worker通过调用rte_distributor_return_pkt()接口停止处理报文,以指示在完成当前数据包处理后,不需要新的数据包。 91 | -------------------------------------------------------------------------------- /source/prog_guide/pdump_lib.rst: -------------------------------------------------------------------------------- 1 | .. BSD LICENSE 2 | Copyright(c) 2016 Intel Corporation. All rights reserved. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions 7 | are met: 8 | 9 | * Redistributions of source code must retain the above copyright 10 | notice, this list of conditions and the following disclaimer. 11 | * Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in 13 | the documentation and/or other materials provided with the 14 | distribution. 15 | * Neither the name of Intel Corporation nor the names of its 16 | contributors may be used to endorse or promote products derived 17 | from this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | .. _pdump_library: 32 | 33 | Librte_pdump库 34 | ================ 35 | 36 | ``librte_pdump`` 库为DPDK中的数据包捕获提供了一个框架。该库将Rx和Tx mbufs的完整复制到新的mempool,因此会降低应用程序的性能,故建议只使用该库进行调试。 37 | 38 | 该库提供以下API来初始化数据包捕获框架,启用或禁用数据包捕获,或者对其进行反初始化: 39 | 40 | * ``rte_pdump_init()``: 41 | 初始化数据包捕获框架。 42 | 43 | * ``rte_pdump_enable()``: 44 | 在给定的端口和队列上进行数据包捕获。注意:API中的过滤器选项是用于未来增强功能的占位符。 45 | 46 | * ``rte_pdump_enable_by_deviceid()``: 47 | 启用在给定设备ID(vdev名称或pci地址)和队列上的数据包捕获。 注意:API中的过滤器选项是用于未来增强功能的占位符。 48 | 49 | * ``rte_pdump_disable()``: 50 | 禁用给定端口和队列上的数据包捕获。 51 | 52 | * ``rte_pdump_disable_by_deviceid()``: 53 | 禁用给定设备ID(vdev名称或pci地址)和队列上的数据包捕获。 54 | 55 | * ``rte_pdump_uninit()``: 56 | 反初始化数据包捕获框架。 57 | 58 | * ``rte_pdump_set_socket_dir()``: 59 | 设置服务器和客户端套接字路径。注意:此API不是线程安全的。 60 | 61 | 62 | 操作 63 | ----- 64 | 65 | librte_pdump库适用于客户端/服务器型号。服务器负责启用或禁用数据包捕获,客户端负责请求启用或禁用数据包捕获。 66 | 67 | 数据包捕获框架作为程序初始化的一部分,在pthread中创建pthread和服务器套接字。调用框架初始化的应用程序将创建服务器套接字,可能是在应用程序传入的路径,也可能是默认路径(root用户的/var/run/.dpdk,非root用户~/.dpdk)下创建。 68 | 69 | 请求启用或禁用数据包捕获的应用程序将在应用程序传入的路径下或默认路径(root用户的/var/run/.dpdk,非root用户~/.dpdk)下创建客户机套接字,用户将请求发送到服务器。服务器套接字将监听用于启用或禁用数据包捕获的客户端请求。 70 | 71 | 72 | 实现细节 73 | ---------- 74 | 75 | 库API rte_pdump_init()通过创建pthread和服务器套接字来初始化数据包捕获框架。pthread上下文中的服务器套接字将监听客户端请求以启用或禁用数据包捕获。 76 | 77 | 库API rte_pdump_enable()和rte_pdump_enable_by_deviceid()启用数据包捕获。每次调用这些API时,库创建一个单独的客户端套接字,生成“pdump enable”请求,并将请求发送到服务器。在套接字上监听的服务器将通过对给定的端口或设备ID和队列组合的以太网Rx/TX注册回调函数来接收请求并启用数据包捕获。然后,服务器将镜像数据包到新的mempool并将它们入队到客户端传递给这些API的rte_ring。服务器还将响应发送回客户端,以了解处理过的请求的状态。从服务器收到响应后,客户端套接字关闭。 78 | 79 | 库API rte_pdump_disable()和rte_pdump_disable_by_deviceid()禁用数据包捕获。每次调用这些API时,库会创建一个单独的客户端套接字,生成“pdump disable”请求,并将请求发送到服务器。正在监听套接字的服务器将通过对给定端口或设备ID和队列组合的以太网RX和TX删除回调函数来执行请求并禁用数据包捕获。服务器还将响应发送回客户端,以了解处理过的请求的状态。从服务器收到响应后,客户端套接字关闭。 80 | 81 | 库API rte_pdump_uninit()通过关闭pthread和服务器套接字来初始化数据包捕获框架。 82 | 83 | 库API rte_pdump_set_socket_dir()根据API的类型参数将给定路径设置为服务器套接字路径或客户端套接字路径。如果给定路径为NULL,则将选择默认路径(即root用户的/var/run/.dpdk或非root用户的~/.dpdk)。如果服务器套接字路径与默认路径不同,客户端还需要调用此API来设置其服务器套接字路径。 84 | 85 | 86 | 用例:抓包 87 | ----------- 88 | 89 | DPDK应用程序/pdump工具是基于此库开发的,用于捕获DPDK中的数据包。用户可以用它来开发自己的数据包捕获工具。 90 | -------------------------------------------------------------------------------- /source/prog_guide/perf_opt_guidelines.rst: -------------------------------------------------------------------------------- 1 | .. BSD LICENSE 2 | Copyright(c) 2010-2014 Intel Corporation. All rights reserved. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions 7 | are met: 8 | 9 | * Redistributions of source code must retain the above copyright 10 | notice, this list of conditions and the following disclaimer. 11 | * Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in 13 | the documentation and/or other materials provided with the 14 | distribution. 15 | * Neither the name of Intel Corporation nor the names of its 16 | contributors may be used to endorse or promote products derived 17 | from this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | .. _Performance_Optimization: 32 | 33 | **Part 3: Performance Optimization** 34 | 35 | 性能优化指南 36 | ============== 37 | 38 | 介绍 39 | ------ 40 | 41 | 以下各节将介绍DPDK中使用的优化以及新应用程序应考虑的优化。 42 | 43 | 还强调了在开发使用DPDK的应用程序时应该及不应该使用的影响性能的编码技术。 44 | 45 | 最后,介绍了使用英特尔性能分析器进行应用程序分析以优化软件。 46 | -------------------------------------------------------------------------------- /source/prog_guide/perf_opt_guidelines.rst.txt: -------------------------------------------------------------------------------- 1 | .. BSD LICENSE 2 | Copyright(c) 2010-2014 Intel Corporation. All rights reserved. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions 7 | are met: 8 | 9 | * Redistributions of source code must retain the above copyright 10 | notice, this list of conditions and the following disclaimer. 11 | * Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in 13 | the documentation and/or other materials provided with the 14 | distribution. 15 | * Neither the name of Intel Corporation nor the names of its 16 | contributors may be used to endorse or promote products derived 17 | from this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | .. _Performance_Optimization: 32 | 33 | **Part 3: Performance Optimization** 34 | 35 | Performance Optimization Guidelines 36 | =================================== 37 | 38 | Introduction 39 | ------------ 40 | 41 | The following sections describe optimizations used in the DPDK and optimizations that should be considered for a new applications. 42 | 43 | They also highlight the performance-impacting coding techniques that should, 44 | and should not be, used when developing an application using the DPDK. 45 | 46 | And finally, they give an introduction to application profiling using a Performance Analyzer from Intel to optimize the software. 47 | -------------------------------------------------------------------------------- /source/prog_guide/port_hotplug_framework.rst: -------------------------------------------------------------------------------- 1 | .. BSD LICENSE 2 | Copyright(c) 2015 IGEL Co.,Ltd. All rights reserved. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions 7 | are met: 8 | 9 | * Redistributions of source code must retain the above copyright 10 | notice, this list of conditions and the following disclaimer. 11 | * Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in 13 | the documentation and/or other materials provided with the 14 | distribution. 15 | * Neither the name of IGEL Co.,Ltd. nor the names of its 16 | contributors may be used to endorse or promote products derived 17 | from this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | 端口热插拔框架 32 | ================ 33 | 34 | 端口热插拔框架为DPDK应用程序提供了运行时添加、移除端口的能力。 35 | 由于框架一来PMD实现,所以热插拔的端口必须是PMD支持的端口才行。 36 | 此外,从DPDK程序中移除端口之后,框架并不提供从系统中删除设备的方法。 37 | 对于由物理网卡支持的端口,内核需要支持PCI热插拔功能。 38 | 39 | 概述 40 | ------ 41 | 42 | 端口热插拔框架的基本要求: 43 | 44 | * 使用端口热插拔框架的DPDK应用程序需要管理其自己的端口。 45 | 46 | 端口热插拔矿机被实现为允许DPDK应用程序管理自己的端口。 47 | 例如,当应用程序调用添加端口的功能时,将返回添加的端口号。 48 | DPDK应用程序也可以通过端口号移除该端口。 49 | 50 | * 内核需要支持待添加、移除的物理设备端口。 51 | 52 | 为了添加新的物理设备端口,设备首先被内核中的用户框架IO驱动识别。 53 | 然后DPDK应用程序可以调用端口热插拔功能来连接端口。 54 | 移除过程步骤刚好相反。 55 | 56 | * 移除之前,必须先停止并关闭端口。 57 | 58 | DPDK应用程序在移除端口之前,必须调用 "rte_eth_dev_stop()" 和 "rte_eth_dev_close()" 函数。 59 | 这些函数将启动PMD的反初始化过程。 60 | 61 | * 本框架不会影响传统的DPDK应用程序的行为。 62 | 63 | 如果端口热插拔的功能没有被调用,所有传统的DPDK应用程序仍然可以不加修改地工作。 64 | 65 | 端口热插拔API概述 66 | ------------------- 67 | 68 | * 添加一个端口 69 | 70 | "rte_eth_dev_attach()" API 将端口添加到DPDK应用程序,并返回添加的端口号。 71 | 在调用API之前,设备应该被用户空间驱动IO框架识别。 72 | API接收一个类似 "0000:01:00.0" 的pci地址或者是 "net_pcap0,iface=eth0" 这样的虚拟设备名称。 73 | 在虚拟设备名称情况下,格式与DPDK的一般‘-vdev’选项相同。 74 | 75 | * 移除一个端口 76 | 77 | "rte_eth_dev_detach()" API 从DPDK应用程序中移除一个端口,并返回移除的设备的pci地址或虚拟设备名称。 78 | 79 | 引用 80 | ------ 81 | 82 | "testpmd" 支持端口热插拔框架。 83 | 84 | 限制 85 | ------ 86 | 87 | * 端口热插拔API并不是线程安全的。 88 | 89 | * 本框架只能在Linux下使能,BSD并不支持。 90 | 91 | * 为了移除端口,端口必须是igb_uio或VFIO管理的设备端口。 92 | 93 | * 并非所有的PMD都支持移除功能。要知道PMD是否支持移除,请搜索 rte_eth_dev::data::dev_flags 中的 "RTE_ETH_DEV_DETACHABLE" 标志。 94 | 如果在PMD中定义该标志,则表示支持。 95 | -------------------------------------------------------------------------------- /source/prog_guide/power_man.rst: -------------------------------------------------------------------------------- 1 | .. BSD LICENSE 2 | Copyright(c) 2010-2014 Intel Corporation. All rights reserved. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions 7 | are met: 8 | 9 | * Redistributions of source code must retain the above copyright 10 | notice, this list of conditions and the following disclaimer. 11 | * Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in 13 | the documentation and/or other materials provided with the 14 | distribution. 15 | * Neither the name of Intel Corporation nor the names of its 16 | contributors may be used to endorse or promote products derived 17 | from this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | 电源管理 32 | ========== 33 | 34 | DPDK电源管理功能允许用户空间应用程序通过动态调整CPU频率或进入不同的C-State来节省功耗。 35 | 36 | * 根据RX队列的利用率动态调整CPU频率。 37 | 38 | * 根据自适应算法进入不同层次的C-State,以推测在没有收到数据包的情况下暂停应用的短暂时间段。 39 | 40 | 调整CPU频率的接口位于电源管理库中。C-State控制是根据不同用例实现的。 41 | 42 | CPU频率缩放 43 | ------------- 44 | 45 | Linux内核提供了一个用于每个lcore的CPU频率缩放的cpufreq模块。 46 | 例如,对于cpuX, /sys/devices/system/cpu/cpuX/cpufreq/具有以下用于频率缩放的sys文件: 47 | 48 | * affected_cpus 49 | 50 | * bios_limit 51 | 52 | * cpuinfo_cur_freq 53 | 54 | * cpuinfo_max_freq 55 | 56 | * cpuinfo_min_freq 57 | 58 | * cpuinfo_transition_latency 59 | 60 | * related_cpus 61 | 62 | * scaling_available_frequencies 63 | 64 | * scaling_available_governors 65 | 66 | * scaling_cur_freq 67 | 68 | * scaling_driver 69 | 70 | * scaling_governor 71 | 72 | * scaling_max_freq 73 | 74 | * scaling_min_freq 75 | 76 | * scaling_setspeed 77 | 78 | 在DPDK中,scaling_governor在用户空间中配置。然后,用户空间应用程序可以通过写入scaling_setspeed来提示内核以根据用户空间应用程序定义的策略来调整CPU频率。 79 | 80 | 通过C-States调节Core负载 81 | -------------------------- 82 | 83 | 只要指定的lcore无任务执行,可以通过设置睡眠来改变Core状态。 84 | 在DPDK中,如果在轮询后没有接收到分组,则可以根据用户空间应用定义的策略来触发睡眠。 85 | 86 | 电源管理库API概述 87 | --------------------- 88 | 89 | 电源管理库导出的主要方法是CPU频率缩放,包括: 90 | 91 | * **频率上升**: 提示内核扩大特定lcore的频率。 92 | 93 | * **频率下降**: 提示内核缩小特定lcore的频率。 94 | 95 | * **频率最大**: 提示内核将特定lcore的频率最大化。 96 | 97 | * **频率最小**: 提示内核将特定lcore的频率降至最低。 98 | 99 | * **获取有效的频率**: 从sys文件中读取特定lcore的可用频率。 100 | 101 | * **Freq获取**: 获取当前的特定lcore的频率。 102 | 103 | * **频率设置**: 提示内核为特定的lcore设置频率。 104 | 105 | 示例 106 | ------ 107 | 108 | 电源管理机制可用于在进行L3转发时节省功耗。 109 | 110 | 参考 111 | ------ 112 | 113 | * l3fwd-power: DPDK提供的示例应用程序,实现功耗管理下的L3转发。 114 | 115 | * “功耗管理下的L3转发”章节请参阅《DPDK Sample Application’s User Guide》。 116 | -------------------------------------------------------------------------------- /source/prog_guide/profile_app.rst: -------------------------------------------------------------------------------- 1 | .. BSD LICENSE 2 | Copyright(c) 2010-2014 Intel Corporation. All rights reserved. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions 7 | are met: 8 | 9 | * Redistributions of source code must retain the above copyright 10 | notice, this list of conditions and the following disclaimer. 11 | * Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in 13 | the documentation and/or other materials provided with the 14 | distribution. 15 | * Neither the name of Intel Corporation nor the names of its 16 | contributors may be used to endorse or promote products derived 17 | from this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | 配置你的应用程序 32 | ================== 33 | 34 | 以下各节介绍了在不同体系结构上配置DPDK应用程序的方法。 35 | 36 | 37 | X86 38 | ----- 39 | 40 | 英特尔处理器提供性能计数器来监视事件 41 | 英特尔提供的某些工具(如VTune)可用于对应用程序进行配置和基准测试。 42 | 欲了解更多信息,请参阅英特尔 *VTune Performance Analyzer Essentials* 。 43 | 44 | 对于DPDK应用程序,这只能在Linux应用程序环境中完成。 45 | 46 | 应通过事件计数器监测的主要情况是: 47 | 48 | * Cache misses 49 | 50 | * Branch mis-predicts 51 | 52 | * DTLB misses 53 | 54 | * Long latency instructions and exceptions 55 | 56 | 请参考 `Intel Performance Analysis Guide `_ 获取更多的信息。 57 | 58 | 59 | ARM64 60 | ------- 61 | 62 | 使用 Linux perf 63 | ~~~~~~~~~~~~~~~~ 64 | 65 | ARM64体系结构提供性能计数器来监视事件。 66 | Linux ``perf`` 工具可以用来分析和测试应用程序。 67 | 除了标准事件之外,还可以使用 ``perf`` 通过原始事件( ``-e`` ``-rXX`` )来分析arm64特定的PMU(性能监视单元)事件。 68 | 69 | 更多详细信息请参考 `ARM64 specific PMU events enumeration `_. 70 | 71 | 72 | 高分辨率的cycle计数器 73 | ~~~~~~~~~~~~~~~~~~~~~~~~ 74 | 75 | 基于 ``rte_rdtsc()`` 的默认 ``cntvct_el0`` 提供了一种便携的方式来获取用户空间中的时钟计数器。通常它运行在<= 100MHz下。 76 | 77 | 为高分辨时钟计数器启用 ``rte_rdtsc()`` 的替代方法是通过armv8 PMU子系统。 78 | PMU周期计数器以CPU频率运行。但是,在arm64 linux内核中,默认情况下,不能从用户空间访问PMU周期计数器。 79 | 通过从特权模式(内核空间)配置PMU,可以为用户空间访问启用循环计数器。 80 | 81 | 默认情况下,``rte_rdtsc()`` 实现使用一个可移植的 ``cntvct_el0`` 方案。 82 | 应用程序可以使用“CONFIG_RTE_ARM_EAL_RDTSC_USE_PMU”选择基于PMU的实现。 83 | 84 | 下面的示例显示了在armv8机器上配置基于PMU的循环计数器的步骤。 85 | 86 | .. code-block:: console 87 | 88 | git clone https://github.com/jerinjacobk/armv8_pmu_cycle_counter_el0 89 | cd armv8_pmu_cycle_counter_el0 90 | make 91 | sudo insmod pmu_el0_cycle_counter.ko 92 | cd $DPDK_DIR 93 | make config T=arm64-armv8a-linuxapp-gcc 94 | echo "CONFIG_RTE_ARM_EAL_RDTSC_USE_PMU=y" >> build/.config 95 | make 96 | 97 | .. warning:: 98 | 99 | The PMU based scheme is useful for high accuracy performance profiling with 100 | ``rte_rdtsc()``. However, this method can not be used in conjunction with 101 | Linux userspace profiling tools like ``perf`` as this scheme alters the PMU 102 | registers state. 103 | -------------------------------------------------------------------------------- /source/prog_guide/reorder_lib.rst: -------------------------------------------------------------------------------- 1 | .. BSD LICENSE 2 | Copyright(c) 2015 Intel Corporation. All rights reserved. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions 7 | are met: 8 | 9 | * Redistributions of source code must retain the above copyright 10 | notice, this list of conditions and the following disclaimer. 11 | * Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in 13 | the documentation and/or other materials provided with the 14 | distribution. 15 | * Neither the name of Intel Corporation nor the names of its 16 | contributors may be used to endorse or promote products derived 17 | from this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | .. _Reorder_Library: 32 | 33 | 排序器库 34 | ========== 35 | 36 | 重新排序库提供了一种根据序列号重新排序mbufs的机制。 37 | 38 | 操作 39 | ----- 40 | 41 | 重新排序库本质上是一个重新排列mbufs的缓冲区。用户将乱序的mbufs插入到重新排序缓冲区中,并从中输出顺序mbufs。 42 | 43 | 在给定的时间,重新排序缓冲区包含序列号在序列窗口内的mbufs。顺序窗口由缓冲区配置的可以维护的最小序列号和条目数决定。例如,给定具有200个条目并且最小序列号为350的重排序缓冲器,序列窗口分别具有350和550的低和高限制。 44 | 45 | 当插入mbufs时,重新排序库根据插入的mbuf的序列号区分valid,late和early的mbuf: 46 | 47 | * valid: 序列号在有序窗口的限制内。 48 | * late: 序列号在窗口限制外,小于下限。 49 | * early: 序列号在窗口限制外,大于上限。 50 | 51 | 重新排序缓冲区直接返回late mbufs,并尝试适应early mbufs。 52 | 53 | 54 | 实现细节 55 | ---------- 56 | 57 | 重新排序库被实现为一对缓冲区,称为Order buffer和Ready buffer。 58 | 59 | 在插入调用时,valid mbufs将直接插入到Order buffer中,late mbufs将直接返回给用户错误。 60 | 61 | 对于early buffer的情况,重排序缓冲区将尝试移动窗口(递增最小序列号),以使mbuf成为有效的一个。为此,Order buffer中的mbufs被移动到就Ready buffer中。任何尚未到达的mbufs都被忽略,且将变成late mbufs。这意味着只要Ready buffer中有空间,窗口将被移动以适应early mbufs,否则将在重新排序窗口之外。 62 | 63 | 例如,假设我们有一个具有350个最小序列号的200个条目的缓冲区,并且我们需要插入一个具有565序列号的early mbuf。这意味着我们需要移动窗口至少15个位置来容纳mbuf。只要在Ready buffer中有空间,重新排序缓冲区将尝试将至少在Order buffer中的下一个15个槽中的mbufs移动到Ready buffer区。在这一点上的顺序缓冲区中的任何间隙将被跳过,并且这些数据包在报文到达时将被报告为late buffer的数据包。将数据包移动到Ready buffer的过程继续超出所需的最小值,直到遇到了缓冲区中的间隙,即缺少mbuf。 64 | 65 | 排出mbufs时,重新排序缓冲区首先返回Ready buffer中的mbufs,然后从Order buffer返回到尚未到达的mbufs。 66 | 67 | 用例:报文分发 68 | ---------------- 69 | 70 | 使用DPDK数据包分发器的应用程序可以利用重新排序库以与它们相同的顺序传送数据包。 71 | 72 | 基本的报文分配器用例将由具有多个worker cors的分配器组成。worker对数据包的处理不能保证按顺序进行,因此可以使用重排序缓冲区来尽可能多地重排数据包。 73 | 74 | 在这种情况下,distributor将序列号分配给mbufs,然后再将其发送给工作人员。随着worker完成处理数据包,distributor将这些mbufs插入重排序缓冲区,最后传输排出的mbufs。 75 | -------------------------------------------------------------------------------- /source/prog_guide/thread_safety_dpdk_functions.rst: -------------------------------------------------------------------------------- 1 | .. BSD LICENSE 2 | Copyright(c) 2010-2014 Intel Corporation. All rights reserved. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions 7 | are met: 8 | 9 | * Redistributions of source code must retain the above copyright 10 | notice, this list of conditions and the following disclaimer. 11 | * Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in 13 | the documentation and/or other materials provided with the 14 | distribution. 15 | * Neither the name of Intel Corporation nor the names of its 16 | contributors may be used to endorse or promote products derived 17 | from this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | DPDK功能的线程安全 32 | =================== 33 | 34 | DPDK由几个库组成。这些库中的某些功能可以同时被多个线程安全地调用,而另一部分则不能。 本节介绍开发人员在构建自己的应用程序时考虑这些问题。 35 | 36 | DPDK的运行时环境通常是每个逻辑核上的单个线程。但是,在某些情况下,它不仅是多线程的,而且是多进程的。通常,最好避免在在线程和/或进程之间共享数据结构。如果不可能,则执行块必须以线程安全的方式访问数据。可以使用诸如原子操作或锁的机制,这将允许执行块串行操作。但是,这可能会对应用程序的性能产生影响。 37 | 38 | 快速路径API 39 | -------------- 40 | 41 | 在数据面中运行的应用程序对性能敏感,但这些库中的某些函数可能不会多线程并发调用。PMD中的Hash,LPM和mempool库以及RX / TX都是这样的例子。 42 | 43 | 通过设计,Hash和LPM库线程不安全,不能并行调用,以保持性能。然而,如果需要,开发人员可以在这些库之上添加封装层以提供线程安全性。在所有情况下都不需要锁,并且在哈希和LPM库中,可以在多个线程中并行执行值的查找。但是,当访问单个哈希表或LPM表时,添加,删除或修改值不能不使用锁在多个线程中完成。锁的另一个替代方法是创建这些表的多个实例,允许每个线程自己的副本。 44 | 45 | PMD的RX和TX是DPDK应用程序中最关键的方面,建议不要使用锁,因为它会影响性能。但是请注意,当每个线程在不同的NIC队列上执行I/O时,这些功能可以安全地从多个线程使用。如果多个线程在同一个NIC端口上使用相同的硬件队列,则需要锁定或某种其他形式的互斥。 46 | 47 | Ring库的实现基于无锁缓冲算法,保持其原有的线程安全设计。此外,它可以为多个或单个消费者/生产者入队/出队操作提供高性能。mempool库基于DPDK无锁ring库,因此也是多线程安全的。 48 | 49 | 非性能敏感API 50 | --------------- 51 | 52 | 在第25.1节描述的性能敏感区域之外,DPDK为大多数其他库提供线程安全的API。例如,malloc和memzone功能可以安全地用于多线程和多进程环境中。 53 | 54 | PMD的设置和配置不是性能敏感的,但也不是线程安全的。在多线程环境中PMD设置和配置期间的多次读/写可能会被破坏。由于这不是性能敏感的,开发人员可以选择添加自己的层,以提供线程安全的设置和配置。预计在大多数应用中,网络端口的初始配置将由启动时的单个线程完成。 55 | 56 | 库初始化 57 | --------- 58 | 59 | 建议DPDK库在应用程序启动时在主线程中初始化,而不是随后在转发线程中初始化。但是,DPDK会执行检查,以确保库仅被初始化一次。如果尝试多次初始化,则返回错误。 60 | 在多进程情况下,共享内存的配置信息只能由primary process初始化。此后,primary process和secondary process都可以分配/释放最终依赖于rte_malloc或memzone的任何内存对象。 61 | 62 | 中断线程 63 | ---------- 64 | 65 | DPDK在轮询模式下几乎完全用于Linux用户空间。对于诸如接收PMD链路状态改变通知的某些不经常的操作,可以在主DPDK处理线程外部的附加线程中调用回调。这些函数回调应避免操作也由普通DPDK线程管理的DPDK对象,如果需要这样做,应用程序就可以为这些对象提供适当的锁定或互斥限制。 66 | -------------------------------------------------------------------------------- /source/prog_guide/timer_lib.rst: -------------------------------------------------------------------------------- 1 | .. BSD LICENSE 2 | Copyright(c) 2010-2014 Intel Corporation. All rights reserved. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions 7 | are met: 8 | 9 | * Redistributions of source code must retain the above copyright 10 | notice, this list of conditions and the following disclaimer. 11 | * Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in 13 | the documentation and/or other materials provided with the 14 | distribution. 15 | * Neither the name of Intel Corporation nor the names of its 16 | contributors may be used to endorse or promote products derived 17 | from this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | .. _Timer_Library: 32 | 33 | 定时器库 34 | ============= 35 | 36 | 定时器库为DPDK执行单元提供定时器服务,使得执行单元可以为异步操作执行回调函数。定时器库的特性如下: 37 | 38 | * 定时器可以周期执行,也可以执行一次。 39 | 40 | * 定时器可以在一个核心加载并在另一个核心执行。但是必须在调用rte_timer_reset()中指定它。 41 | 42 | * 定时器提供高精度(取决于检查本地核心的定时器到期的rte_timer_manage()的调用频率)。 43 | 44 | * 如果应用程序不需要,可以在编译时禁用定时器,并且程序中不调用rte_timer_manage()来提高性能。 45 | 46 | 定时器库使用rte_get_timer_cycles()获取高精度事件定时器(HPET)或CPU时间戳计数器(TSC)提供的可靠时间参考。 47 | 48 | 该库提供了添加,删除和重新启动定时器的接口。API基于BSD callout(),可能会有一些差异。详细请参考 `callout manual `_. 49 | 50 | 实现细节 51 | ---------- 52 | 53 | 定时器以每个逻辑核为基础进行跟踪,一个逻辑核上要维护的所有挂起的定时器,按照定时器到期顺序插入到跳跃表数据结构。 54 | 55 | 所使用的跳跃表有十个层,表中的每个条目都以1/4的概率显示在每个层上。这意味着所有条目都存在于第0层中,每4个条目中的1个条目存在于第一层,每16个中1个条目存在于第2层,等等。同时,这意味着从逻辑核的定时器列表中添加和删除条目可以在log(n)时间内完成,最多4 ^ 10个条目,即每个逻辑核约有1,000,000个定时器。 56 | 57 | 定时器结构包含一个称为状态的特殊字段,它是定时器状态(stopped,pending,running,config)及其所有者(lcore id)的联合体。根据定时器状态,我们可以知道定时器当前是否存在于列表中: 58 | 59 | * STOPPED:没有所有者,不再链表中。 60 | 61 | * CONFIG: 由一个逻辑核持有,其他逻辑核不能修改,是否存在于跳表中取决于以前的状态。 62 | 63 | * PENDING: 由一个逻辑核持有,其他逻辑核不能修改,是否存在于跳表中取决于以前的状态。 64 | 65 | * RUNNING: 由一个逻辑核持有,其他逻辑核不能修改,是否存在于跳表中取决于以前的状态。 66 | 67 | 不允许在定时器处于CONFIG或RUNNING状态时复位或停止定时器。当修改定时器的状态时,应使用CAP指令来保证状态修改操作(状态+所有者)是原子操作。 68 | 69 | 在rte_timer_manage()函数里面,跳跃表作为常规的链表,通过沿着包含所有计时器条目的第0层链表迭代,直到遇到尚未到期的条目为止。当列表中有条目,但是没有任何条目定时器到期时,为了提高性能,第一个定时器条目的到期时间保存在每个逻辑和计时器列表结构本身内部。在64位平台上,可以直接检查该值,而无需对整个结构进行锁定。(由于到期时间维持为64位值,所以在32位平台上无法直接对该值进行检查,而不使用(CAS)指令或使用锁机制,因此,一旦数据结构被上锁,此额外的检查将被跳过。)在64位和32位平台上,在调用逻辑核的计时器列表为空的情况下,对rte_timer_manage()的调用将直接返回而不进行锁定。= 70 | 71 | 用例 72 | ----- 73 | 74 | 定时器库用于定期调用,如垃圾收集器或某些状态机(ARP,桥接等)。 75 | 76 | 参考 77 | ----- 78 | 79 | * `callout manual `_ 80 | - 唤醒功能,提供定时器到期执行的功能。 81 | 82 | * `HPET `_ 83 | - 有关高精度事件定时器(HPET)的信息。 84 | -------------------------------------------------------------------------------- /source/rel_notes/deprecation.rst: -------------------------------------------------------------------------------- 1 | ABI and API Deprecation 2 | ======================= 3 | 4 | See the :doc:`guidelines document for details of the ABI policy `. 5 | API and ABI deprecation notices are to be posted here. 6 | 7 | 8 | Deprecation Notices 9 | ------------------- 10 | 11 | * eal: the following functions are deprecated starting from 17.05 and will 12 | be removed in 17.08: 13 | 14 | - ``rte_set_log_level``, replaced by ``rte_log_set_global_level`` 15 | - ``rte_get_log_level``, replaced by ``rte_log_get_global_level`` 16 | - ``rte_set_log_type``, replaced by ``rte_log_set_level`` 17 | - ``rte_get_log_type``, replaced by ``rte_log_get_level`` 18 | 19 | * igb_uio: iomem mapping and sysfs files created for iomem and ioport in 20 | igb_uio will be removed, because we are able to detect these from what Linux 21 | has exposed, like the way we have done with uio-pci-generic. This change 22 | targets release 17.05. 23 | 24 | * vfio: Some functions are planned to be exported outside librte_eal in 17.05. 25 | VFIO APIs like ``vfio_setup_device``, ``vfio_get_group_fd`` can be used by 26 | subsystem other than EAL/PCI. For that, these need to be exported symbols. 27 | Such APIs are planned to be renamed according to ``rte_*`` naming convention 28 | and exported from librte_eal. 29 | 30 | * The VDEV subsystem will be converted as driver of the new bus model. 31 | It will imply some EAL API changes in 17.05. 32 | 33 | * ``eth_driver`` is planned to be removed in 17.05. This currently serves as 34 | a placeholder for PMDs to register themselves. Changes for ``rte_bus`` will 35 | provide a way to handle device initialization currently being done in 36 | ``eth_driver``. Similarly, ``rte_pci_driver`` is planned to be removed from 37 | ``rte_cryptodev_driver`` in 17.05. 38 | 39 | * ethdev: An API change is planned for 17.05 for the function 40 | ``_rte_eth_dev_callback_process``. In 17.05 the function will return an ``int`` 41 | instead of ``void`` and a fourth parameter ``void *ret_param`` will be added. 42 | 43 | * ethdev: for 17.05 it is planned to deprecate the following nine rte_eth_dev_* 44 | functions and move them into the ixgbe PMD: 45 | 46 | ``rte_eth_dev_bypass_init``, ``rte_eth_dev_bypass_state_set``, 47 | ``rte_eth_dev_bypass_state_show``, ``rte_eth_dev_bypass_event_store``, 48 | ``rte_eth_dev_bypass_event_show``, ``rte_eth_dev_wd_timeout_store``, 49 | ``rte_eth_dev_bypass_wd_timeout_show``, ``rte_eth_dev_bypass_ver_show``, 50 | ``rte_eth_dev_bypass_wd_reset``. 51 | 52 | The following fields will be removed from ``struct eth_dev_ops``: 53 | 54 | ``bypass_init_t``, ``bypass_state_set_t``, ``bypass_state_show_t``, 55 | ``bypass_event_set_t``, ``bypass_event_show_t``, ``bypass_wd_timeout_set_t``, 56 | ``bypass_wd_timeout_show_t``, ``bypass_ver_show_t``, ``bypass_wd_reset_t``. 57 | 58 | The functions will be renamed to the following, and moved to the ``ixgbe`` PMD: 59 | 60 | ``rte_pmd_ixgbe_bypass_init``, ``rte_pmd_ixgbe_bypass_state_set``, 61 | ``rte_pmd_ixgbe_bypass_state_show``, ``rte_pmd_ixgbe_bypass_event_set``, 62 | ``rte_pmd_ixgbe_bypass_event_show``, ``rte_pmd_ixgbe_bypass_wd_timeout_set``, 63 | ``rte_pmd_ixgbe_bypass_wd_timeout_show``, ``rte_pmd_ixgbe_bypass_ver_show``, 64 | ``rte_pmd_ixgbe_bypass_wd_reset``. 65 | 66 | * The mbuf flags PKT_RX_VLAN_PKT and PKT_RX_QINQ_PKT are deprecated and 67 | are respectively replaced by PKT_RX_VLAN_STRIPPED and 68 | PKT_RX_QINQ_STRIPPED, that are better described. The old flags and 69 | their behavior will be kept until 17.02 and will be removed in 17.05. 70 | 71 | * ethdev: the legacy filter API, including 72 | ``rte_eth_dev_filter_supported()``, ``rte_eth_dev_filter_ctrl()`` as well 73 | as filter types MACVLAN, ETHERTYPE, FLEXIBLE, SYN, NTUPLE, TUNNEL, FDIR, 74 | HASH and L2_TUNNEL, is superseded by the generic flow API (rte_flow) in 75 | PMDs that implement the latter. 76 | Target release for removal of the legacy API will be defined once most 77 | PMDs have switched to rte_flow. 78 | 79 | * crypto/scheduler: the following two functions are deprecated starting 80 | from 17.05 and will be removed in 17.08: 81 | 82 | - ``rte_crpytodev_scheduler_mode_get``, replaced by ``rte_cryptodev_scheduler_mode_get`` 83 | - ``rte_crpytodev_scheduler_mode_set``, replaced by ``rte_cryptodev_scheduler_mode_set`` 84 | -------------------------------------------------------------------------------- /source/rel_notes/index.rst: -------------------------------------------------------------------------------- 1 | .. BSD LICENSE 2 | Copyright(c) 2010-2014 Intel Corporation. All rights reserved. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions 7 | are met: 8 | 9 | * Redistributions of source code must retain the above copyright 10 | notice, this list of conditions and the following disclaimer. 11 | * Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in 13 | the documentation and/or other materials provided with the 14 | distribution. 15 | * Neither the name of Intel Corporation nor the names of its 16 | contributors may be used to endorse or promote products derived 17 | from this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | Release Notes 32 | ============= 33 | 34 | .. toctree:: 35 | :maxdepth: 1 36 | :numbered: 37 | 38 | rel_description 39 | release_17_05 40 | release_17_02 41 | release_16_11 42 | release_16_07 43 | release_16_04 44 | release_2_2 45 | release_2_1 46 | release_2_0 47 | release_1_8 48 | supported_os 49 | known_issues 50 | deprecation 51 | -------------------------------------------------------------------------------- /source/rel_notes/rel_description.rst: -------------------------------------------------------------------------------- 1 | .. BSD LICENSE 2 | Copyright(c) 2010-2015 Intel Corporation. All rights reserved. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions 7 | are met: 8 | 9 | * Redistributions of source code must retain the above copyright 10 | notice, this list of conditions and the following disclaimer. 11 | * Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in 13 | the documentation and/or other materials provided with the 14 | distribution. 15 | * Neither the name of Intel Corporation nor the names of its 16 | contributors may be used to endorse or promote products derived 17 | from this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | 32 | Description of Release 33 | ====================== 34 | 35 | This document contains the release notes for Data Plane Development Kit (DPDK) 36 | release version |release| and previous releases. 37 | 38 | It lists new features, fixed bugs, API and ABI changes and known issues. 39 | 40 | For instructions on compiling and running the release, see the :ref:`DPDK Getting Started Guide `. 41 | -------------------------------------------------------------------------------- /source/rel_notes/release_1_8.rst: -------------------------------------------------------------------------------- 1 | .. BSD LICENSE 2 | Copyright(c) 2010-2014 Intel Corporation. All rights reserved. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions 7 | are met: 8 | 9 | * Redistributions of source code must retain the above copyright 10 | notice, this list of conditions and the following disclaimer. 11 | * Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in 13 | the documentation and/or other materials provided with the 14 | distribution. 15 | * Neither the name of Intel Corporation nor the names of its 16 | contributors may be used to endorse or promote products derived 17 | from this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | 32 | DPDK Release 1.8 33 | ================ 34 | 35 | New Features 36 | ------------ 37 | 38 | * Link Bonding 39 | 40 | * Support for 802.3ad link aggregation (mode 4) and transmit load balancing (mode 5) to the link bonding library. 41 | 42 | * Support for registration of link status change callbacks with link bonding devices. 43 | 44 | * Support for slaves devices which do not support link status change interrupts in the link bonding library via a link status polling mechanism. 45 | 46 | * Poll Mode Driver - 40 GbE Controllers (librte_pmd_i40e) 47 | 48 | * Support for Flow Director 49 | 50 | * Support for ethertype filter 51 | 52 | * Support RSS in VF 53 | 54 | * Support configuring redirection table with different size from 1GbE and 10 GbE 55 | 56 | - 128/512 entries of 40GbE PF 57 | 58 | - 64 entries of 40GbE VF 59 | 60 | * Support configuring hash functions 61 | 62 | * Support for VXLAN packet on Intel 40GbE Controllers 63 | 64 | * Packet Distributor Sample Application 65 | -------------------------------------------------------------------------------- /source/rel_notes/supported_os.rst: -------------------------------------------------------------------------------- 1 | .. BSD LICENSE 2 | Copyright(c) 2010-2014 Intel Corporation. All rights reserved. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions 7 | are met: 8 | 9 | * Redistributions of source code must retain the above copyright 10 | notice, this list of conditions and the following disclaimer. 11 | * Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in 13 | the documentation and/or other materials provided with the 14 | distribution. 15 | * Neither the name of Intel Corporation nor the names of its 16 | contributors may be used to endorse or promote products derived 17 | from this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | Supported Operating Systems 32 | =========================== 33 | 34 | The following Linux distributions were successfully used to compiler or run DPDK. 35 | 36 | * FreeBSD 10 37 | 38 | * Fedora release 20 39 | 40 | * Ubuntu 14.04 LTS 41 | 42 | * Wind River Linux 6 43 | 44 | * Red Hat Enterprise Linux 6.5 45 | 46 | * SUSE Enterprise Linux 11 SP3 47 | 48 | These distributions may need additional packages that are not installed by default, or a specific kernel. 49 | Refer to the :ref:`Linux guide ` and :ref:`FreeBSD guide ` for details. 50 | -------------------------------------------------------------------------------- /source/sample_app_ug/img/client_svr_sym_multi_proc_app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/sample_app_ug/img/client_svr_sym_multi_proc_app.png -------------------------------------------------------------------------------- /source/sample_app_ug/img/example_rules.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/sample_app_ug/img/example_rules.png -------------------------------------------------------------------------------- /source/sample_app_ug/img/ipv4_acl_rule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/sample_app_ug/img/ipv4_acl_rule.png -------------------------------------------------------------------------------- /source/sample_app_ug/img/kernel_nic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/sample_app_ug/img/kernel_nic.png -------------------------------------------------------------------------------- /source/sample_app_ug/img/l2_fwd_virtenv_benchmark_setup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/sample_app_ug/img/l2_fwd_virtenv_benchmark_setup.png -------------------------------------------------------------------------------- /source/sample_app_ug/img/load_bal_app_arch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/sample_app_ug/img/load_bal_app_arch.png -------------------------------------------------------------------------------- /source/sample_app_ug/img/master_slave_proc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/sample_app_ug/img/master_slave_proc.png -------------------------------------------------------------------------------- /source/sample_app_ug/img/pipeline_overview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/sample_app_ug/img/pipeline_overview.png -------------------------------------------------------------------------------- /source/sample_app_ug/img/qos_sched_app_arch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/sample_app_ug/img/qos_sched_app_arch.png -------------------------------------------------------------------------------- /source/sample_app_ug/img/quickassist_block_diagram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/sample_app_ug/img/quickassist_block_diagram.png -------------------------------------------------------------------------------- /source/sample_app_ug/img/ring_pipeline_perf_setup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/sample_app_ug/img/ring_pipeline_perf_setup.png -------------------------------------------------------------------------------- /source/sample_app_ug/img/slave_proc_recov.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/sample_app_ug/img/slave_proc_recov.png -------------------------------------------------------------------------------- /source/sample_app_ug/img/sym_multi_proc_app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/sample_app_ug/img/sym_multi_proc_app.png -------------------------------------------------------------------------------- /source/sample_app_ug/img/test_pipeline_app.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/sample_app_ug/img/test_pipeline_app.png -------------------------------------------------------------------------------- /source/sample_app_ug/img/threads_pipelines.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/sample_app_ug/img/threads_pipelines.png -------------------------------------------------------------------------------- /source/sample_app_ug/intro.rst: -------------------------------------------------------------------------------- 1 | .. BSD LICENSE 2 | Copyright(c) 2010-2014 Intel Corporation. All rights reserved. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions 7 | are met: 8 | 9 | * Redistributions of source code must retain the above copyright 10 | notice, this list of conditions and the following disclaimer. 11 | * Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in 13 | the documentation and/or other materials provided with the 14 | distribution. 15 | * Neither the name of Intel Corporation nor the names of its 16 | contributors may be used to endorse or promote products derived 17 | from this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | Introduction 32 | ============ 33 | 34 | This document describes the sample applications that are included in the Data Plane Development Kit (DPDK). 35 | Each chapter describes a sample application that showcases specific functionality and 36 | provides instructions on how to compile, run and use the sample application. 37 | 38 | Documentation Roadmap 39 | --------------------- 40 | 41 | The following is a list of DPDK documents in suggested reading order: 42 | 43 | * **Release Notes** : Provides release-specific information, including supported features, 44 | limitations, fixed issues, known issues and so on. 45 | Also, provides the answers to frequently asked questions in FAQ format. 46 | 47 | * **Getting Started Guides** : Describes how to install and 48 | configure the DPDK software for your operating system; 49 | designed to get users up and running quickly with the software. 50 | 51 | * **Programmer's Guide:** Describes: 52 | 53 | * The software architecture and how to use it (through examples), 54 | specifically in a Linux* application (linuxapp) environment. 55 | 56 | * The content of the DPDK, the build system 57 | (including the commands that can be used in the root DPDK Makefile to build the development kit and an application) 58 | and guidelines for porting an application. 59 | 60 | * Optimizations used in the software and those that should be considered for new development 61 | 62 | A glossary of terms is also provided. 63 | 64 | * **API Reference** : Provides detailed information about DPDK functions, 65 | data structures and other programming constructs. 66 | 67 | * **Sample Applications User Guide** : Describes a set of sample applications. 68 | Each chapter describes a sample application that showcases specific functionality and 69 | provides instructions on how to compile, run and use the sample application. 70 | -------------------------------------------------------------------------------- /source/testpmd_app_ug/build_app.rst: -------------------------------------------------------------------------------- 1 | .. BSD LICENSE 2 | Copyright(c) 2010-2014 Intel Corporation. All rights reserved. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions 7 | are met: 8 | 9 | * Redistributions of source code must retain the above copyright 10 | notice, this list of conditions and the following disclaimer. 11 | * Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in 13 | the documentation and/or other materials provided with the 14 | distribution. 15 | * Neither the name of Intel Corporation nor the names of its 16 | contributors may be used to endorse or promote products derived 17 | from this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | Compiling the Application 32 | ========================= 33 | 34 | The ``testpmd`` application is compiled as part of the main compilation of the DPDK libraries and tools. 35 | Refer to the DPDK Getting Started Guides for details. 36 | The basic compilation steps are: 37 | 38 | #. Set the required environmental variables and go to the source directory: 39 | 40 | .. code-block:: console 41 | 42 | export RTE_SDK=/path/to/rte_sdk 43 | cd $RTE_SDK 44 | 45 | #. Set the compilation target. For example: 46 | 47 | .. code-block:: console 48 | 49 | export RTE_TARGET=x86_64-native-linuxapp-gcc 50 | 51 | #. Build the application: 52 | 53 | .. code-block:: console 54 | 55 | make install T=$RTE_TARGET 56 | 57 | The compiled application will be located at: 58 | 59 | .. code-block:: console 60 | 61 | $RTE_SDK/$RTE_TARGET/app/testpmd 62 | -------------------------------------------------------------------------------- /source/testpmd_app_ug/index.rst: -------------------------------------------------------------------------------- 1 | .. BSD LICENSE 2 | Copyright(c) 2010-2014 Intel Corporation. All rights reserved. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions 7 | are met: 8 | 9 | * Redistributions of source code must retain the above copyright 10 | notice, this list of conditions and the following disclaimer. 11 | * Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in 13 | the documentation and/or other materials provided with the 14 | distribution. 15 | * Neither the name of Intel Corporation nor the names of its 16 | contributors may be used to endorse or promote products derived 17 | from this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | Testpmd Application User Guide 32 | ============================== 33 | 34 | .. toctree:: 35 | :maxdepth: 3 36 | :numbered: 37 | 38 | intro 39 | build_app 40 | run_app 41 | testpmd_funcs 42 | -------------------------------------------------------------------------------- /source/testpmd_app_ug/intro.rst: -------------------------------------------------------------------------------- 1 | .. BSD LICENSE 2 | Copyright(c) 2010-2014 Intel Corporation. All rights reserved. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions 7 | are met: 8 | 9 | * Redistributions of source code must retain the above copyright 10 | notice, this list of conditions and the following disclaimer. 11 | * Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in 13 | the documentation and/or other materials provided with the 14 | distribution. 15 | * Neither the name of Intel Corporation nor the names of its 16 | contributors may be used to endorse or promote products derived 17 | from this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | Introduction 32 | ============ 33 | 34 | This document is a user guide for the ``testpmd`` example application that is shipped as part of the Data Plane Development Kit. 35 | 36 | The ``testpmd`` application can be used to test the DPDK in a packet forwarding mode 37 | and also to access NIC hardware features such as Flow Director. 38 | It also serves as a example of how to build a more fully-featured application using the DPDK SDK. 39 | 40 | The guide shows how to build and run the testpmd application and 41 | how to configure the application from the command line and the run-time environment. 42 | -------------------------------------------------------------------------------- /source/tools/index.rst: -------------------------------------------------------------------------------- 1 | .. BSD LICENSE 2 | Copyright(c) 2016 Canonical Limited. All rights reserved. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions 7 | are met: 8 | 9 | * Redistributions of source code must retain the above copyright 10 | notice, this list of conditions and the following disclaimer. 11 | * Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in 13 | the documentation and/or other materials provided with the 14 | distribution. 15 | * Neither the name of Intel Corporation nor the names of its 16 | contributors may be used to endorse or promote products derived 17 | from this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | DPDK Tools User Guides 32 | ====================== 33 | 34 | .. toctree:: 35 | :maxdepth: 2 36 | :numbered: 37 | 38 | proc_info 39 | pdump 40 | pmdinfo 41 | devbind 42 | cryptoperf 43 | 44 | -------------------------------------------------------------------------------- /source/tools/pmdinfo.rst: -------------------------------------------------------------------------------- 1 | .. BSD LICENSE 2 | Copyright(c) 2016 Canonical Limited. All rights reserved. 3 | 4 | Redistribution and use in source and binary forms, with or without 5 | modification, are permitted provided that the following conditions 6 | are met: 7 | 8 | * Redistributions of source code must retain the above copyright 9 | notice, this list of conditions and the following disclaimer. 10 | * Redistributions in binary form must reproduce the above copyright 11 | notice, this list of conditions and the following disclaimer in 12 | the documentation and/or other materials provided with the 13 | distribution. 14 | * Neither the name of Intel Corporation nor the names of its 15 | contributors may be used to endorse or promote products derived 16 | from this software without specific prior written permission. 17 | 18 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 | 30 | 31 | dpdk-pmdinfo Application 32 | ======================== 33 | 34 | The ``dpdk-pmdinfo`` tool is a Data Plane Development Kit (DPDK) utility that 35 | can dump a PMDs hardware support info. 36 | 37 | 38 | Running the Application 39 | ----------------------- 40 | 41 | The tool has a number of command line options: 42 | 43 | .. code-block:: console 44 | 45 | dpdk-pmdinfo [-hrtp] [-d 46 | 47 | -h, --help Show a short help message and exit 48 | -r, --raw Dump as raw json strings 49 | -d FILE, --pcidb=FILE Specify a pci database to get vendor names from 50 | -t, --table Output information on hw support as a hex table 51 | -p, --plugindir Scan dpdk for autoload plugins 52 | 53 | .. Note:: 54 | 55 | * Parameters inside the square brackets represents optional parameters. 56 | -------------------------------------------------------------------------------- /source/tools/proc_info.rst: -------------------------------------------------------------------------------- 1 | .. BSD LICENSE 2 | Copyright(c) 2015 Intel Corporation. All rights reserved. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions 7 | are met: 8 | 9 | * Redistributions of source code must retain the above copyright 10 | notice, this list of conditions and the following disclaimer. 11 | * Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in 13 | the documentation and/or other materials provided with the 14 | distribution. 15 | * Neither the name of Intel Corporation nor the names of its 16 | contributors may be used to endorse or promote products derived 17 | from this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | 32 | dpdk-procinfo Application 33 | ========================= 34 | 35 | The dpdk-procinfo application is a Data Plane Development Kit (DPDK) application 36 | that runs as a DPDK secondary process and is capable of retrieving port 37 | statistics, resetting port statistics and printing DPDK memory information. 38 | This application extends the original functionality that was supported by 39 | dump_cfg. 40 | 41 | Running the Application 42 | ----------------------- 43 | The application has a number of command line options: 44 | 45 | .. code-block:: console 46 | 47 | ./$(RTE_TARGET)/app/dpdk-procinfo -- -m | [-p PORTMASK] [--stats | --xstats | 48 | --stats-reset | --xstats-reset] 49 | 50 | Parameters 51 | ~~~~~~~~~~ 52 | **-p PORTMASK**: Hexadecimal bitmask of ports to configure. 53 | 54 | **--stats** 55 | The stats parameter controls the printing of generic port statistics. If no 56 | port mask is specified stats are printed for all DPDK ports. 57 | 58 | **--xstats** 59 | The xstats parameter controls the printing of extended port statistics. If no 60 | port mask is specified xstats are printed for all DPDK ports. 61 | 62 | **--stats-reset** 63 | The stats-reset parameter controls the resetting of generic port statistics. If 64 | no port mask is specified, the generic stats are reset for all DPDK ports. 65 | 66 | **--xstats-reset** 67 | The xstats-reset parameter controls the resetting of extended port statistics. 68 | If no port mask is specified xstats are reset for all DPDK ports. 69 | 70 | **-m**: Print DPDK memory information. 71 | -------------------------------------------------------------------------------- /source/xen/img/dpdk_xen_pkt_switch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/xen/img/dpdk_xen_pkt_switch.png -------------------------------------------------------------------------------- /source/xen/img/grant_refs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/xen/img/grant_refs.png -------------------------------------------------------------------------------- /source/xen/img/grant_table.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lockless/dpdk/ed9a7a44b805bbff5d6fe407e78d7b9e4a86d33a/source/xen/img/grant_table.png -------------------------------------------------------------------------------- /source/xen/index.rst: -------------------------------------------------------------------------------- 1 | .. BSD LICENSE 2 | Copyright(c) 2010-2014 Intel Corporation. All rights reserved. 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions 7 | are met: 8 | 9 | * Redistributions of source code must retain the above copyright 10 | notice, this list of conditions and the following disclaimer. 11 | * Redistributions in binary form must reproduce the above copyright 12 | notice, this list of conditions and the following disclaimer in 13 | the documentation and/or other materials provided with the 14 | distribution. 15 | * Neither the name of Intel Corporation nor the names of its 16 | contributors may be used to endorse or promote products derived 17 | from this software without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 22 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 23 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 25 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 26 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 27 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 28 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 | 31 | Xen Guide 32 | ========= 33 | 34 | .. toctree:: 35 | :maxdepth: 2 36 | :numbered: 37 | 38 | pkt_switch 39 | --------------------------------------------------------------------------------