3. La topologie virtualisée

Suite à la définition de topologie type donnée dans la section précédente, voici un schéma représentant la virtualisation de cette topologie. Il fait apparaître deux instances de machines virtuelles nommées Hub et Spoke ainsi que les commutateurs virtuels utilisés pour l'interconnexion entre réseaux.

Le routeur Hub joue le rôle de concentrateur des demandes d'accès émises par les routeurs distants : les Spokes. Dans la maquette présentée ci-dessus, on n'utilise qu'un seul routeur Spoke pour illustrer le dialogue PPP sur un seul lien WAN. En ajoutant, d'autres instances de machines virtuelles, il serait possible de multiplier les routeurs Spokes.

[Note] Note

Dans l'architecture des connexions xDSL le routeur Hub est aussi appelé Broadband Remote Access Server ou BRAS.

Paquets et droits d'accès

Avant de passer à la configuration de l'interconnexion, il faut préparer le système hôte : installer les paquets nécessaires à la virtualisation système et ouvrir les permissions d'accès.

  • On commence par l'installation des paquets utiles après avoir vérifié que le processeur du système hôte dispose bien des fonctions de virtualisation.

    # egrep '(vmx|svm)' /proc/cpuinfo
    # aptitude install qemu-system-x86 openvswitch-switch
  • On s'assure ensuite que l'utilisateur normal est bien membre des groupes système associés à la virtualisation. Dans notre cas, on se contente des groupes sudo et kvm. L'ajout d'un utilisateur à un groupe système se fait à l'aide de la commande suivante.

    # adduser etu kvm

Commutateurs et cordons de brassage

Sur le schéma ci-dessus, on compte 4 cordons de brassage. À chacun de ces cordons correspond une interface de type tap. Voici une copie du script de création de ces cordons de brassage virtuels.

#!/bin/bash

for intf in tap0 tap1 tap2 tap3
do
        if [ -z "$(ip addr ls | grep $intf)" ]; then
                echo setting $intf up
                sudo ip tuntap add mode tap dev $intf group kvm
                sudo ip link set dev $intf up
        else
                echo $intf is already there!
        fi
done

Voici la syntaxe de création du commutateur wan-sw. La création du commutateur dsw-host utiliserait la même syntaxe. Ce dernier commutateur fait partie de la configuration permanente du système hôte puisqu'il est utilisé pour raccorder celui-ci à l'Internet.

$ sudo ovs-vsctl add-br wan-sw

On passe maintenant au brassage des cordons sur les commutateurs.

  • Commutateur dsw-host

    $ sudo ovs-vsctl add-port dsw-host tap0 -- set port tap0 vlan_mode=access
    $ sudo ovs-vsctl add-port dsw-host tap2 -- set port tap2 vlan_mode=access
  • Commutateur wan-sw

    $ sudo ovs-vsctl add-port wan-sw tap1 -- set port tap1 vlan_mode=access
    $ sudo ovs-vsctl add-port wan-sw tap3 -- set port tap3 vlan_mode=access

Instances de systèmes virtuels

Le guide Virtualisation système et enseignement fournit le script de lancement d'une machine virtuelle raccordée à un commutateur Open vSwitch qui sert au lancement des instances de systèmes virtuels. Ce script ne décrit qu'une interface réseau pour une instance de système virtuel. Il est donc nécessaire de le compléter avec la description des interfaces supplémentaires.

#!/bin/bash

../scripts/ovs-startup.sh hub.qed 1024 0 \
        -device virtio-net,netdev=net2,mac=de:ad:be:ef:00:01 \
        -netdev tap,ifname=tap1,id=net2,script=no

../scripts/ovs-startup.sh spoke.qed 1024 2 \
        -device virtio-net,netdev=net2,mac=de:ad:be:ef:00:03 \
        -netdev tap,ifname=tap3,id=net2,script=no

Il faut noter que sur la schéma proposé ci-dessus, l'interface eth0 du routeur Spoke, raccordée via le cordon tap2 devient inutile dès que la configuration du lien WAN est en place. Cette interface est cependant nécessaire pour accéder à la console du routeur Spoke et installer les paquets manquants.