[ovs-dev] Quick setup guide for Fedora, OVS-DPDK with dpdkvhostuserclient / server mode
Eelco Chaudron
echaudro at redhat.com
Fri Jan 13 14:02:12 UTC 2017
Hi all,
This might not be the correct place to dump this, but it might help
people reading this dev list trying to setup something similar on Fedora.
Enjoy,
Eelco
# Install Fedora 25 Server edition
# Update and install needed packages
dnf -y update
dnf -y install wget emacs libvirt qemu-kvm libguestfs libguestfs-tools-c \
kernel-devel gcc rpm-build autoconf automake libtool systemd-units \
openssl openssl-devel python python-twisted-core python-zope-interface \
python-six desktop-file-utils groff graphviz procps-ng checkpolicy \
selinux-policy-devel libcap-ng libcap-ng-devel
# Setting up kernel for DPDK
sed -i -e
's/GRUB_CMDLINE_LINUX="/GRUB_CMDLINE_LINUX="default_hugepagesz=1G
hugepagesz=1G hugepages=16 iommu=pt intel_iommu=on /' /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg
sed -i -e 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
reboot
# Get and build DPDK
cd /usr/src
wget http://fast.dpdk.org/rel/dpdk-16.11.tar.xz
tar xf dpdk-16.11.tar.xz
echo 'export DPDK_DIR=/usr/src/dpdk-16.11' >> ~/.bashrc
echo 'export DPDK_TARGET=x86_64-native-linuxapp-gcc' >> ~/.bashrc
echo 'export DPDK_BUILD=$DPDK_DIR/$DPDK_TARGET' >> ~/.bashrc
source ~/.bashrc
cd $DPDK_DIR
make -j 20 install T=$DPDK_TARGET DESTDIR=install
# Get, build and setup OVS
cd /usr/src
wget http://openvswitch.org/releases/openvswitch-2.6.1.tar.gz
tar xzf openvswitch-2.6.1.tar.gz
cd openvswitch-2.6.1/
./boot.sh
./configure --enable-Werror --with-dpdk=$DPDK_BUILD
make -j20
make check TESTSUITEFLAGS=-j20
make install
mkdir -p /usr/local/etc/openvswitch
mkdir -p /usr/local/var/run/openvswitch
ovsdb-tool create /usr/local/etc/openvswitch/conf.db \
vswitchd/vswitch.ovsschema
# Start OVS
ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock \
--remote=db:Open_vSwitch,Open_vSwitch,manager_options \
--pidfile --detach
ovs-vsctl --no-wait init
ovs-vswitchd --pidfile --detach --log-file
# Configure OVS
ovs-vsctl set Open_vSwitch . other_config:dpdk-init=true
ovs-vsctl set Open_vSwitch . other_config:dpdk-lcore-mask=0x2
ovs-vsctl set Open_vSwitch . other_config:dpdk-socket-mem=2048
ovs-vsctl set Open_vSwitch . other_config:pmd-cpu-mask=2
killall ovs-vswitchd
ovs-vswitchd --pidfile --detach --log-file
ovs-vsctl add-br br0
ovs-vsctl set Bridge br0 datapath_type=netdev
ovs-vsctl add-port br0 vhost0
ovs-vsctl set Interface vhost0 type=dpdkvhostuserclient
ovs-vsctl set Interface vhost0 options:vhost-server-path="/tmp/sock0"
ovs-vsctl add-port br0 vhost1
ovs-vsctl set Interface vhost1 type=dpdkvhostuserclient
ovs-vsctl set Interface vhost1 options:vhost-server-path="/tmp/sock1"
# Get VM image, and make a copy
cd
export LIBGUESTFS_BACKEND=direct
virt-builder fedora-25 --root-password password:fedora -o f25vm1.qcow2
--format qcow2
cp f25vm1.qcow2 f25vm2.qcow2
# Start the VMs
qemu-kvm -cpu host -enable-kvm -m 4096M \
-object
memory-backend-file,id=mem,size=4096M,mem-path=/dev/hugepages,share=on \
-numa node,memdev=mem -mem-prealloc \
-drive file=./f25vm1.qcow2 \
-chardev socket,id=char0,path=/tmp/sock0,server \
-netdev type=vhost-user,id=mynet1,chardev=char0,vhostforce \
-device
virtio-net-pci,mac=00:00:00:00:00:01,netdev=mynet1,mrg_rxbuf=off \
-nographic
qemu-kvm -cpu host -enable-kvm -m 4096M \
-object
memory-backend-file,id=mem,size=4096M,mem-path=/dev/hugepages,share=on \
-numa node,memdev=mem -mem-prealloc \
-drive file=./f25vm2.qcow2 \
-chardev socket,id=char0,path=/tmp/sock1,server \
-netdev type=vhost-user,id=mynet1,chardev=char0,vhostforce \
-device
virtio-net-pci,mac=00:00:00:00:00:02,netdev=mynet1,mrg_rxbuf=off \
-nographic
# Configure networking on the VMs and make sure you can communicate
#
# Now kill qemu, and reconfigure OVS for server mode,start VMs
#
killall qemu-system-x86_64
ovs-vsctl set Interface vhost0 type=dpdkvhostuser
ovs-vsctl set Interface vhost1 type=dpdkvhostuser
qemu-kvm -cpu host -enable-kvm -m 4096M \
-object
memory-backend-file,id=mem,size=4096M,mem-path=/dev/hugepages,share=on \
-numa node,memdev=mem -mem-prealloc \
-drive file=./f25vm1.qcow2 \
-chardev socket,id=char0,path=/usr/local/var/run/openvswitch/vhost0 \
-netdev type=vhost-user,id=mynet1,chardev=char0,vhostforce \
-device
virtio-net-pci,mac=00:00:00:00:00:01,netdev=mynet1,mrg_rxbuf=off \
-nographic
qemu-kvm -cpu host -enable-kvm -m 4096M \
-object
memory-backend-file,id=mem,size=4096M,mem-path=/dev/hugepages,share=on \
-numa node,memdev=mem -mem-prealloc \
-drive file=./f25vm2.qcow2 \
-chardev socket,id=char0,path=/usr/local/var/run/openvswitch/vhost1 \
-netdev type=vhost-user,id=mynet1,chardev=char0,vhostforce \
-device
virtio-net-pci,mac=00:00:00:00:00:02,netdev=mynet1,mrg_rxbuf=off \
-nographic
More information about the dev
mailing list