User Tools

Site Tools


prive:rpi-ovs

PiOVS : Raspberry Pi Open vSwitch

L'apprentissage du concept SDN d'introduction avec Mininet est généralement suffisant. Mais parfois, il est agréable d'avoir un laboratoire SDN mobile à petite échelle pour des sessions de démonstration et de démonstration.

OVS est un commutateur Openflow programmable qui peut être contrôlé via le contrôleur SDN de n'importe où dans le monde.

On trouvera ci-dessous un petit guide pour « convertir » un raspberry pi en un OpenFlow Open vSwitch à 4 ports. Pour cela, vous aurez besoin d'un adaptateur 4x USB vers RJ45.

Installer l'image du système

  • Étape 1: graver l'image du système sur la carte sd
flash -d /dev/mmcblk0 ubuntu-16.04.3-preinstalled-server-armhf+raspi2.img
  • Étape 2: Configurer certains paramètres
cd /media/em/cloudimg-rootfs/
sudo nano etc/hostname
sudo nano etc/hosts
sudo nano etc/network/interfaces
  • Étape 2: Démarrage et SSH
sudo apt update
sudo shutdown -r now
sudo apt upgrade
  • Étape 3: Corriger les locales

Ajouter les lignes suivantes dans le fichier ~/.profil

nano .profil
export LC_ALL="en_US.UTF-8"
export LC_CTYPE="en_US.UTF-8"
export LANG="en_US.UTF-8"
export LANGUAGE="en_US.UTF-8"
source .profile
sudo dpkg-reconfigure locales
  • Étape 3: Vérifier
lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 16.04.3 LTS
Release: 16.04
Codename: xenial
cat /proc/version
Linux version 4.4.0-1065-raspi2 (buildd@bos01-arm64-049) (gcc version 5.4.0 20160609 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.4) ) #73-Ubuntu SMP Thu Jul 20 22:09:48 UTC 2017

Installer OVS (Openvswitch) dans Raspberry-Pi

Construction depuis les sources

  • Étape 1: Télécharger le fichier TAR
wget http://openvswitch.org/releases/openvswitch-2.7.0.tar.gz
  • Étape 2: Décompresser et accéder au dossier openvswitch
tar -xvf openv
  • Étape 3: Prendre les privilèges de super utilisateur

sudo su

  • Étape 4: Installer les packages suivants qui sont nécessaires pour exécuter openvswitch dans le Raspberry Pi
apt-get install python-simplejson python-qt4 libssl-dev python-twisted-conch automake autoconf gcc uml-utilities libtool build-essential pkg-config
  • Étape 5: Vérifier la version du noyau du système d'exploitation (par exemple:-linux-headers-4.9.0.4-rpi ) la copier et exécuter les commandes suivantes
uname -r
apt-cache search linux-headers
apt-get install -y linux-headers-4.9.0.4-rpi

<

  • Étape 6: Configurer et compiler le module du noyau

./configure --with-linux=/lib/modules/4.9.0.4-rpi/build

  • Étape 7: Faire l'installation
make
make install
  • Étape 8: Naviguer dans datapath/linux situé dans le dossier openvswitch extrait et exécuter les commandes suivantes
cd datapath/linux
modprobe openvswitch
cat /etc/modules
echo "openvswitch" >> /etc/modules
cat /etc/modules
  • Étape 9: Revenir au dossier openvswitch et créer un fichier de base de données ovs en exécutant les commandes suivantes

cd ../.. touch /usr/local/etc/ovs-vswitchd.conf mkdir -p /usr/local/etc/openvswitch ovsdb-tool create /usr/local/etc/openvswitch/conf.db vswitchd/vswitch.ovsschema

  • Étape 10 : Créer et ouvrir un fichier nommé « script » à l'aide de nano ou de tout autre éditeur (il faut avoir les privilèges de superutilisateur lorsqu'on exécute la commande)
nano script
  • Étape 11: Copier-coller les codes suivants dans le fichier nommé « script »
ovsdb-server --remote=punix:/usr/local/var/run/openvswitch/db.sock \
                     --remote=db:Open_vSwitch,Open_vSwitch,manager_options \
                     --private-key=db:Open_vSwitch,SSL,private_key \
                     --certificate=db:Open_vSwitch,SSL,certificate \
                     --bootstrap-ca-cert=db:Open_vSwitch,SSL,ca_cert \
                     --pidfile --detach
ovs-vswitchd --pidfile --detach
ovs-vsctl --no-wait init
ovs-vsctl show
  • Étape 12: Enregistrer le fichier en appuyant sur Ctrl+o et quittez l'éditeur en appuyant sur Ctrl+x
  • Étape 13: Créer la version exécutable du fichier et exécutez-la
chmod +x script
./script

Openvswitch fonctionnera à chaque fois qu'on exécute le fichier de script.

Installation depuis les dépôts

sudo apt install openvswitch-
openvswitch-common          openvswitch-pki             openvswitch-testcontroller
openvswitch-dbg             openvswitch-switch          openvswitch-vtep
openvswitch-ipsec           openvswitch-test            
sudo apt install openvswitch-switch openvswitch-common bridge-utils
sudo ovs-vsctl show
5f1756f0-f52f-48b9-af97-52d6c5ed2328
    ovs_version: "2.5.2"
sudo ovs-vsctl add-br ovsbr0
sudo ifconfig ovsbr0 up
ifconfig
sudo ovs-vsctl add-port ovsbr0 eth1
sudo ovs-vsctl add-port ovsbr0 eth2
sudo ovs-vsctl add-port ovsbr0 eth3
sudo ovs-vsctl add-port ovsbr0 eth4
sudo ovs-vsctl show

Configurer les interfaces

cat /etc/network/interfaces
# Ce fichier décrit les interfaces réseau disponibles sur votre système
# et comment les activer. Pour plus d'informations, voir interfaces(5).

# L'interface réseau de bouclage
auto lo
iface lo inet loopback

# Interfaces sources
# Veuillez vérifier /etc/network/interfaces.d avant de modifier ce fichier
# car les interfaces peuvent avoir été définies dans /etc/network/interfaces.d
# Voir LP : #1262951
# source /etc/network/interfaces.d/*.cfg

allow-hotplug eth0
iface eth0 inet static
  address 192.168.0.159
  netmask 255.255.255.0
  network 192.168.0.0
  broadcast 192.168.0.255
  gateway 192.168.0.1
  dns-nameservers 8.8.8.8 8.8.4.4

auto eth1
iface eth1 inet manual
        hwaddress ether 00:20:34:60:75:ba

auto eth2
iface eth2 inet manual
        hwaddress ether 00:15:a3:34:28:2c

auto eth3
iface eth3 inet manual
        hwaddress ether 58:65:e6:eb:f0:c5

auto eth4
iface eth4 inet manual
        hwaddress ether 00:0b:7b:cf:d4:3c

auto ovsbr0
allow-ovs ovsbr0
iface ovsbr0 inet manual
  ovs_type OVSBridge

Patch OVS Systemd Service

Canonical fournit un système d'exploitation qui ne prend pas en charge le démarrage automatique des interfaces OVS. Les scripts upstart ont été corrigés pour permettre le démarrage automatique des interfaces OVS, mais maintenant systemd est utilisé - et le démarrage automatique des interfaces OVS est à nouveau interrompu.

Un correctif est disponible, le fichier de démarrage systemd pour OVS doit être modifié pour ajouter des dépendances. OVS doit être démarré avant de configurer les interfaces réseau.

Remplacer /lib/systemd/system/openvswitch-nonetwork.service par le contenu du fichier ci-dessous.

sudo rm  /lib/systemd/system/openvswitch-nonetwork.service && sudo nano /lib/systemd/system/openvswitch-nonetwork.service

[Unit]
Description=Open vSwitch Internal Unit
PartOf=openvswitch-switch.service

#https://bugs.launchpad.net/ubuntu/+source/openvswitch/+bug/1448254

# Without this all sorts of looping dependencies occur doh!
DefaultDependencies=no

#precedants pulled from isup@ service requirements
After=apparmor.service local-fs.target systemd-tmpfiles-setup.service

#subsequent to this service we need the network to start
Wants=network-pre.target openvswitch-switch.service
Before=network-pre.target openvswitch-switch.service

[Service]
Type=oneshot
RemainAfterExit=yes
EnvironmentFile=-/etc/default/openvswitch-switch
ExecStart=/usr/share/openvswitch/scripts/ovs-ctl start \
          --system-id=random $OVS_CTL_OPTS
ExecStop=/usr/share/openvswitch/scripts/ovs-ctl stop

Une option pour supprimer tous les ponts existants doit être définie dans le fichier de configuration /etc/default/openvswitch-switch pour démarrer avec une configuration openvswitch vide.

OVS_CTL_OPTS='--delete-bridges'
sudo shutdown -r now

Installation du contrôleur POX

git clone https://github.com/noxrepo/pox.git

cd pox
./pox.py forwarding.l2_learning &
sudo ovs-vsctl set-controller ovsbr0 tcp:localhost:6633
prive/rpi-ovs.txt · Last modified: 2025/02/19 10:59 by 127.0.0.1