aboutsummaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authorSean Mooney <sean.k.mooney@intel.com>2017-03-29 15:05:55 +0000
committerSean Mooney <sean.k.mooney@intel.com>2017-07-05 11:34:51 +0000
commit4f5bac108952a4f7e0bec3789bea175c5875d6f7 (patch)
tree2f5b55fcebb285b5b6f48f4cfca6b2c1e7b0567f /contrib
parentc2c457c28201f551d9bc401f562c17ba2ac6eb36 (diff)
downloadkolla-4f5bac108952a4f7e0bec3789bea175c5875d6f7.tar.gz
kolla-4f5bac108952a4f7e0bec3789bea175c5875d6f7.zip
introduces support for the OVS DPDK dataplane
- DPDK is a userspace library for high-performance networking. - This change enable support of Open vSwitch with the DPDK accelerated netdev datapath. - This change provided binary and source support via a template-override. - This change provides an example template override file and corresponding documentation. Co-Authored-By: Mauricio Lima <mauriciolimab@gmail.com> Partial-Implements: blueprint ovs-dpdk Change-Id: I7c3a5dddeca1886fe1c7681ce8d5bebde08f3102
Diffstat (limited to 'contrib')
-rw-r--r--contrib/template-override/ovs-dpdk.j275
1 files changed, 75 insertions, 0 deletions
diff --git a/contrib/template-override/ovs-dpdk.j2 b/contrib/template-override/ovs-dpdk.j2
new file mode 100644
index 000000000..7dea1b7fd
--- /dev/null
+++ b/contrib/template-override/ovs-dpdk.j2
@@ -0,0 +1,75 @@
+{% extends parent_template %}
+
+{% block ovsdpdk_install %}
+
+# install ovs from source
+
+{% if base_distro in ['centos', 'oraclelinux', 'rhel'] %}
+ {% set ovs_dpdk_packages = [
+ 'kernel-devel-$(uname -r)',
+ 'redhat-lsb-core',
+ 'pciutils',
+ 'autoconf',
+ 'libtool',
+ 'fuse-devel',
+ 'gcc',
+ 'make',
+ 'autoconf',
+ 'automake',
+ 'libpcap-devel',
+ 'python-devel',
+ 'python-six',
+ 'crudini'
+ ] %}
+
+{% elif base_distro in [ 'debian', 'ubuntu' ] %}
+
+ {% set ovs_dpdk_packages = [
+ 'linux-headers-$(uname -r)',
+ 'fdutils',
+ 'libxtst6',
+ 'libnuma-dev',
+ 'autoconf',
+ 'automake',
+ 'libtool',
+ 'libfuse-dev',
+ 'gcc',
+ 'make',
+ 'build-essential',
+ 'libpcap-dev',
+ 'python-dev',
+ 'python-six',
+ 'crudini'
+ ] %}
+
+{% endif %}
+
+{{ macros.install_packages(ovs_dpdk_packages | customizable("packages")) }}
+
+ADD plugins-archive /
+RUN ln -s /plugins/ovsdpdk-plugin-ovs-archive-*/ /ovs \
+ && ln -s /plugins/ovsdpdk-plugin-dpdk-archive-*/ /dpdk
+WORKDIR /dpdk
+{% set RTE_TARGET='x86_64-native-linuxapp-gcc' %}
+RUN make config T="{{ RTE_TARGET }}"
+WORKDIR "/dpdk/build"
+
+{{ macros.sed( file="/dpdk/build/.config",
+ expressions=["s/CONFIG_RTE_BUILD_COMBINE_LIBS=n/CONFIG_RTE_BUILD_COMBINE_LIBS=y/",
+ "s/CONFIG_RTE_MAX_MEMSEG=.*$/CONFIG_RTE_MAX_MEMSEG=1024/",
+ "s/CONFIG_RTE_LIBRTE_VHOST=.*$/CONFIG_RTE_LIBRTE_VHOST=y/",
+ "s/CONFIG_RTE_LIBRTE_KNI=.*$/CONFIG_RTE_LIBRTE_KNI=n/",
+ "s/CONFIG_RTE_KNI_KMOD=.*$/CONFIG_RTE_KNI_KMOD=n/",
+ "s/CONFIG_RTE_EAL_IGB_UIO=.*$/CONFIG_RTE_EAL_IGB_UIO=y/",
+ "s/CONFIG_RTE_BUILD_SHARED_LIB=.*$/CONFIG_RTE_BUILD_SHARED_LIB=n/"])
+}}
+
+RUN make -j $(nproc) EXTRA_CFLAGS='-O2 -fPIC' \
+ && make install
+WORKDIR /ovs
+RUN ./boot.sh \
+ && ./configure --with-dpdk="/dpdk/build" --prefix=/usr --with-dbdir=/etc/openvswitch --with-rundir=/run/openvswitch \
+ && make -j $(nproc) CFLAGS='-O2 -fPIC' \
+ && make install
+
+{% endblock %}