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.
flash -d /dev/mmcblk0 ubuntu-16.04.3-preinstalled-server-armhf+raspi2.img
cd /media/em/cloudimg-rootfs/ sudo nano etc/hostname sudo nano etc/hosts sudo nano etc/network/interfaces
sudo apt update sudo shutdown -r now sudo apt upgrade
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
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
wget http://openvswitch.org/releases/openvswitch-2.7.0.tar.gz
tar -xvf openv
sudo su
apt-get install python-simplejson python-qt4 libssl-dev python-twisted-conch automake autoconf gcc uml-utilities libtool build-essential pkg-config
uname -r apt-cache search linux-headers apt-get install -y linux-headers-4.9.0.4-rpi
<
./configure --with-linux=/lib/modules/4.9.0.4-rpi/build
make make install
cd datapath/linux modprobe openvswitch cat /etc/modules echo "openvswitch" >> /etc/modules cat /etc/modules
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
nano 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
chmod +x script ./script
Openvswitch fonctionnera à chaque fois qu'on exécute le fichier de script.
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
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
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
git clone https://github.com/noxrepo/pox.git cd pox ./pox.py forwarding.l2_learning & sudo ovs-vsctl set-controller ovsbr0 tcp:localhost:6633