OpenVSwitch DPDK
Introduction
La mise en place de OpenVSwitch avec le DataPath DPDK.
Le Backend DPDK permet un accélération software des paquets réseaux permettant d’atteindre des taux de transmissions de plusieurs Millions de paquets par seconde, voire d’atteindre les limites d’une carte physique de 10Gb.
Installation
Il est possible d’installer des paquets OpenVswitch-DPDK sur une distribution. Mais pour pouvoir pleinement utiliser OVS-DPK, la documentation indique une minimale de DPDK, la 18.11.2.
Il se trouve que sur Ubuntu le package DPDK en 18.11.2 n’est disponible qu’à partir de Ubuntu-19.04.
Pour une version antérieure d’Ubuntu (la 18_04LTS par exemple), ou pour une distribution ne disposant pas du package, il est indispensable de passer par une installation source.
Les packages à installer (sur une Ubuntu18_04) :
apt-get install aptitude
aptitude update
aptitude upgrade
aptitude install git
aptitude install automake
aptitude install libtool
aptitude install make
aptitude install gcc
aptitude install libnuma-dev
D’après la page http://docs.openvswitch.org/en/latest/faq/releases/, il est nécessaire d’avoir une version 18.11.5 de DPDK pour utiliser une version 2.12 d’OVS.
La compilation :
# DPDK
export DPDK_TARGET=x86_64-native-linuxapp-gcc
# Version de DPDK indiqué par la doc OVS-DPDK à l'heure actuelle
wget http://fast.dpdk.org/rel/dpdk-18.11.5.tar.xz
tar xf dpdk-18.11.5.tar.xz
export DPDK_DIR=$(pwd)/dpdk-stable-18.11.5
cd $DPDK_DIR
make install T=$DPDK_TARGET DESTDIR=install
export DPDK_BUILD=$DPDK_DIR/$DPDK_TARGET
# OVS
cd ..
git clone https://github.com/openvswitch/ovs.git
# Dernière version à l'heure actuelle : v2.12.0
git checkout v2.12.0
./boot.sh
./configure --with-dpdk=$DPDK_BUILD
make install
# lancement
export PATH=$PATH:/usr/local/share/openvswitch/scripts
ovs-ctl --system-id=random start
Activation de DPDK
Activation de DPDK dans openvswitch :
ovs-vsctl --no-wait set Open_vSwitch . other_config:dpdk-init=true
ovs-ctl --system-id=random restart
Validation et vérification
ovs-vsctl get Open_vSwitch . dpdk_initialized
true
Configuration de DPDK
Les Huges Pages.
Binding de NIC Ajouter des interfaces physique DPDK. TODO
Création Bridge OVS en DPDK
La création d’un bridge utilisant le DataPath DPDK est effectué par la commande :
ovs-vsctl add-br ovs_dpdk_client -- set bridge ovs_dpdk_client datapath_type=netdev
Utilisation d’ovs-tcpdump
root@ucpe:/home/ucpe# export PYTHONPATH=/usr/local/share/openvswitch/python
root@ucpe:/home/ucpe# ovs-tcpdump -i eno3-dpdk -n
OVS utilisant DPDK donc tout en mode user.
Interface vhost-user
http://docs.openvswitch.org/en/latest/topics/dpdk/vhost-user/
OVS userspace switching supports supports vHost user ports as a primary way to interact with guests. For more information on vHost User, refer to the QEMU documentation on same.
Un Vhost-user est en gros constitué d’une mémoire partagée et d’une socket, cette dernière servant de commande et de gestion d’états sur les transfert mémoires.
Un Vhost-user est uniquement en User-land. Il existe également dans KVM/Qemu un Vhost-net qui lui a une partie en Userland et une partie en mode kernel.
Pour ajouter une interface vhost-user à OVS :
$ ovs-vsctl add-port br0 vhost-user-1 -- set Interface vhost-user-1 \
type=dpdkvhostuser
Pour ensuite exploiter cette interface vhost-user dans une VM KVM/Qemu :
-chardev socket,id=char1,path=/usr/local/var/run/openvswitch/vhost-user-1
-netdev type=vhost-user,id=mynet1,chardev=char1,vhostforce
-device virtio-net-pci,mac=00:00:00:00:00:01,netdev=mynet1
OVS-DPDK et OpenFlow
TODO .
Liens
- https://software.intel.com/en-us/articles/open-vswitch-with-dpdk-overview
- http://docs.openvswitch.org/en/latest/intro/install/dpdk/
- http://docs.openvswitch.org/en/latest/topics/dpdk/phy/
- http://docs.openvswitch.org/en/latest/topics/dpdk/
- https://git.qemu.org/?p=qemu.git;a=blob;f=docs/specs/vhost-user.txt;h=7890d7169;hb=HEAD
Laisser un commentaire