diff options
-rw-r--r-- | DEPENDENCIES | 37 | ||||
-rwxr-xr-x | scripts/build-pktio-dpdk | 40 |
2 files changed, 28 insertions, 49 deletions
diff --git a/DEPENDENCIES b/DEPENDENCIES index 6b345b9c3..abe6d7411 100644 --- a/DEPENDENCIES +++ b/DEPENDENCIES @@ -166,23 +166,42 @@ Prerequisites for building the OpenDataPlane (ODP) API Use DPDK for ODP packet I/O. + Note: only packet I/O is accelerated with DPDK. Use + https://github.com/Linaro/odp-dpdk.git + for fully accelerated odp dpdk platform. + +3.4.1 DPDK pktio requirements + DPDK pktio adds a depency to NUMA library. # Debian/Ubuntu $ sudo apt-get install libnuma-dev # CentOS/RedHat/Fedora $ sudo yum install numactl-devel - Note: only packet I/O is accelerated with DPDK. Use - https://github.com/Linaro/odp-dpdk.git - for fully accelerated odp dpdk platform. +3.4.2 Native DPDK install + # Debian/Ubuntu starting from 18.04 + $ sudo apt-get install dpdk-dev + +3.4.2 Built DPDK from src + git clone --branch=17.11 http://dpdk.org/git/dpdk-stable dpdk + + #Make and edit DPDK configuration + TARGET="x86_64-native-linuxapp-gcc" + make config T=${TARGET} O=${TARGET} + pushd ${TARGET} -3.4.1 Building DPDK and ODP with DPDK pktio support + #To use I/O without DPDK supported NIC's enable pcap pmd: + sed -ri 's,(CONFIG_RTE_LIBRTE_PMD_PCAP=).*,\1y,' .config + popd - DPDK packet I/O has been tested to work with DPDK v17.11. + #Build DPDK + make build O=${TARGET} EXTRA_CFLAGS="-fPIC" + make install O=${TARGET} DESTDIR=${TARGET} - Follow steps in ./scripts/build-pktio-dpdk + #compile ODP + ./configure --with-dpdk-path=`pwd`/dpdk/${TARGET}/usr/local -3.4.2 Setup system +3.4.3 Setup system # Load DPDK modules $ sudo /sbin/modprobe uio @@ -194,13 +213,13 @@ Prerequisites for building the OpenDataPlane (ODP) API 512 x 2MB hugepages. All this can be done with the DPDK setup script (<dpdk-dir>/tools/dpdk-setup.sh). -3.4.3 Running ODP with DPDK pktio +3.4.4 Running ODP with DPDK pktio ODP applications will try use DPDK for packet I/O by default. If some other I/O type is desired instead, DPDK I/O can be disabled by setting the environment variable ODP_PKTIO_DISABLE_DPDK. - DPDK interfaces are accessed using indices. For example, two first DPDK + DPDK interfaces are accessed using indexes. For example, two first DPDK interfaces can be used with the odp_l2fwd example as follows: $ cd <odp_dir> $ sudo ./test/performance/odp_l2fwd -i 0,1 -c 2 -m 0 diff --git a/scripts/build-pktio-dpdk b/scripts/build-pktio-dpdk deleted file mode 100755 index b0c0a4d0e..000000000 --- a/scripts/build-pktio-dpdk +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash - -TARGET=${TARGET:-"x86_64-native-linuxapp-gcc"} - -export ROOT_DIR=$(readlink -e $(dirname $0) | sed 's|/scripts||') -pushd ${ROOT_DIR} - -echo '#include "pcap.h"' | cpp -H -o /dev/null 2>&1 -if [ "$?" != "0" ]; then - echo "Error: pcap is not installed. You may need to install libpcap-dev" -fi - -echo '#include "numa.h"' | cpp -H -o /dev/null 2>&1 -if [ "$?" != "0" ]; then - echo "Error: NUMA library is not installed. You need to install libnuma-dev" - exit 1 -fi - -git -c advice.detachedHead=false clone -q --depth=1 --single-branch --branch=17.11 http://dpdk.org/git/dpdk-stable dpdk -pushd dpdk -git log --oneline --decorate - -#Make and edit DPDK configuration -make config T=${TARGET} O=${TARGET} -pushd ${TARGET} -#To use I/O without DPDK supported NIC's enable pcap pmd: -sed -ri 's,(CONFIG_RTE_LIBRTE_PMD_PCAP=).*,\1y,' .config -popd - -#Build DPDK -make build O=${TARGET} EXTRA_CFLAGS="-fPIC" -make install O=${TARGET} DESTDIR=${TARGET} -popd - -#Build ODP -./bootstrap; -./configure --enable-test-vald --enable-test-perf --enable-test-cpp \ - --enable-debug --enable-debug-print \ - --with-dpdk-path=`pwd`/dpdk/${TARGET}/usr/local -make |